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