I`m currently working on an interface of the VGA board to the system bus of the computer. The goal I would like to achieve in this matter is to have a very simple and intuitive interface form the programmers point of view: a possibility to do a complete video write operation of X , Y coordinates and ASCII character data in a single assembler instruction: OUT (C),A (X and Y in BC register, ASCII in A register). On the video board, 3x 74LS165 registers are latching the parallell data. After this, Atmega is shifting in x,y and ASCII data from the 74LS165 registers. This operation is only performed during horizontal blanking (2 lines are needed for this). Because of earlier project assumptions, especially the XC9536XL code I cannot use the vertical blanking time in a simple way. However, even without it, I hope to achieve troughput of about 200×70=1400 characters per second, which should be just enough for the system`s requirements. The sync between Z80 write cycle, AVR`s shifting of data and VGA`s horizontal timming is managed by 7474 flip-flop. It works as a 1-bit flag register which informs each side whenever it is a good time to write or read data. This circuit generates a /WAIT signal for the CPU to sync with it.

Advertisements