Estou trabalhando em um circuito digital usando componentes discretos para conduzir um monitor VGA de 640x480 no modo de texto 80x30.
Para uma tela de 640x480, o clock do pixel é 25.175MHz, com um período em torno de 40ns. Eu não entendo como devo fornecer um novo pixel para a tela com tanta frequência.
A arquitetura básica para o meu circuito é a seguinte:
O contador binário para pixels horizontais conta de 25,175 MHz a 800 (640 pixels visíveis + 160 para varanda frontal, sincronização, varanda traseira). Em 800, aumente o contador de linhas verticais (e redefina em 525 linhas)
Usando a posição horizontal e vertical, derive as coordenadas x, y do caractere atual.
Usando a coordenada x, y do caractere, indexe na memória de vídeo para recuperar o caractere ASCII.
Use o caractere ASCII para indexar na ROM de caracteres para obter um padrão de bits para o caractere
Use o registro de deslocamento paralelo ao serial para converter a linha de caracteres de 8 pixels em bits individuais na frequência do clock de pixels
Se você seguir a cadeia, ele será: Contador -> RAM -> ROM -> Paralelo ao registro de troca serial
Usando os componentes mais rápidos que posso encontrar, os atrasos de propagação e o tempo de acesso somam cerca de 15ns + 20ns + 70ns + 15ns = 120ns, muito maior que o período de 40ns para 25MHz.
Em resoluções e taxas de atualização ainda mais altas, você pode ter relógios de pixel bem acima de 100MHz, que serão um período de 10ns.
Como é possível fornecer novos pixels para a tela a cada 10ns, quando o tempo de acesso à RAM / ROM já está bem acima, nem mesmo considerando todos os outros sinais em seu sistema?