Tutorial 1 - RUA - Universidad de Alicante

Anuncio
Arquitecturas Reconfigurables
Tutorial 1
Profesores: Sergio Cuenca y Antonio Martínez
sergio@dtic.ua.es
Dept. Tecnología Informática y Computación
Universidad de Alicante
1
Interfaz VGA
R
G
B
• Hsync=> indica línea válida
• Vsync=> indica frame válido
• Blanking interval => se
visualiza negro mientras el
cañón de electrones recupera la
posición inicial
Amplificadores
de video
Hsync
Generador
barrido horiz.
horiz
Vsync
Generador
barrido vert.
vert
• f barrido vertical fscanh=60Hz => Tframe=16,784ms
• f barrido horizontal fscanv=31,5KHz => Tlinea=31,77us
• Resolución VGA 640x480
2
Conversor D/A de la placa RC10
Señal
Digital
7 bits por canal (R,G,B)=> 27
128 valores de luminosidad para
cada color.
Conversores
D/A
Señal
Analógica
0v => luminosidad mínima
0,7v => luminosidad
máxima
Total=128x128x128=
2 097 152 colores
2.097.152
3
Temporización de las señales
Ejemplo (Clock=12,5MHz)
6 6us
6,6us
Ciclos/linea=31,77us*12,5MHz=397 c = TotalCols
lin/frame= 16,784ms/31,77us≈ 528lin =
TotalLines
Pixels negros (Hblank)= 6,6us*12,5MHz=82c
eas negras
eg as (Vblank)=
( b a ) 1.534us/
53 us/ 3
31,77us=48
, us 8
Lineas
lin
VisibleCols = TotalCols- Pixels negros
VisibleLines= TotalLines- Lines negras
HSyncStartCol= 26,11us*12,5MHz=326
26 11us*12 5MHz=326 c
Etc....
1,534ms
4
Video Game
FrameUpdate
BallX
BallY
Di l
Display
scanX
scanY
R
G
B
D/A
blank
SyncGen
H
Hsync
Vsync
5
Main process
6
Sync Generator
macro expr EndScan(y) = (y==(TotalLines-1));
macro expr EndLine(x) = (x==(Totalcols-1));
macro expr HBlank(x) = (x>=VisibleCols);
macro expr VBlank(y) = (y>=VisibleLines);
macro expr HSync(x) = ((Hblank(x) & (x>=HSyncStartCol &&
x<HSyncEndCol)));
macro expr VSync(y) = (y>VSyncStartLine&& y<VSyncEndLine);
macro expr Visible(x,y) = (!Hblank(x) & !Vblank(y));
7
Sync Generator
Cnt Columnas
Cnt Filas
8
Display process
9
Generador Señal Color
10
Movimiento Bola (i)
11
Movimiento Bola (ii)
12
Modos de video soportados por RC10
13
Utilizando PAL API
void main (void)
{
macro expr VideoOut = PalVideoOutOptimalCT (ClockRate);
unsigned 10 BallX; unsigned 10 BallY;
PalVersionRequire (1, 0);
PalVideoOutRequire (1);
par
{
PalVideoOutRun (VideoOut, ClockRate);
seq{
PalVideoOutEnable (VideoOut);
p
par{
Display(VideoOut,BallX,BallY);
PerFrameUpdate(VideoOut,BallX,BallY);
}
}
}
}
14
Ejercicio 1
La bola cambia de color al chocar contra los bordes
FrameUpdate
BallX
BallY
Rebote
Display
scanX
scanY
R
G
B
D/A
blank
SyncGen
Hsync
Vsync
15
Ejercicio 2
FrameUpdate: genera la señal Bounce (1
cuando se produzca un rebote)
BounceCount: detecta el rebote e
incrementa el contador (0-9)
B
BounceCount
C
t
Bounce
FrameUpdate
BallX
BallY
Display
p y
scanX
scanY
R
G
B
D/A
blank
SyncGen
Hsync
y
Vsync
16
Ejercicio 3
Frameupdate debe controlar el movimiento de dos
bolas y detectar cuando estas chocan entre sí.
FrameUpdate
Ball1_X
Bal2_X
Ball1_Y
Ball2_Y
Display
p y
scanX
scanY
R
G
B
D/A
blank
SyncGen
Hsync
y
Vsync
17
Descargar