Arquitecturas Reconfigurables Tutorial 1 Profesores: Sergio Cuenca y Antonio Martínez [email protected] 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