Я работаю над цифровой схемой, использующей дискретные компоненты для управления VGA-дисплеем 640x480 в текстовом режиме 80x30.
Для дисплея 640x480 тактовая частота пикселя составляет 25,175 МГц с периодом около 40 нс. Я не понимаю, как я должен быть в состоянии предоставить новый пиксель для дисплея так часто.
Основная архитектура для моей схемы выглядит следующим образом:
Двоичный счетчик для горизонтальных пикселей считает до 25,175 МГц до 800 (640 видимых пикселей + 160 для передней панели, синхронизации, задней части). На 800 увеличить счетчик вертикальной линии (и сбросить на 525 строк)
Используя горизонтальное и вертикальное положение, выведите координаты x, y текущего символа.
Используя координаты x, y символа, внесите индекс в видеопамять для получения символа ASCII.
Используйте символ ASCII для индексации в символьном ПЗУ, чтобы получить битовый шаблон для символа
Используйте регистр параллельного к последовательному сдвигу, чтобы преобразовать 8-символьную строку символов в отдельные биты с тактовой частотой пикселей
Если вы следуете по цепочке, она выглядит так: Счетчик -> ОЗУ -> ПЗУ -> Параллельно регистру последовательного сдвига
Используя самые быстрые компоненты, которые я могу найти, задержки распространения и время доступа составляют около 15 нс + 20 нс + 70 нс + 15 нс = 120 нс, что намного больше, чем период 40 нс для 25 МГц.
При еще более высоком разрешении и частоте обновления у вас могут быть тактовые импульсы, значительно превышающие 100 МГц, что составит 10 нс.
Как можно предоставлять новые пиксели на дисплей каждые 10 нс, когда время доступа к ОЗУ / ПЗУ уже значительно превышает его, даже не учитывая все остальные сигналы в вашей системе?