Проект плати Марсоход2 для середовища Altera Quartus II можна взяти тут:
Топ модуль проекту виконаний в графічному вигляді і ось так він виглядає (можна клікнути, щоб збільшити):
Розглянемо як відбувається запис символів в екран. Я вмонтував модуль SignalTap в проект, щоб подивитися як поводяться різні сигнали модуля sterm. Я запустив на комп'ютері програму терміналу Teraterm, відкрив послідовний порт належить платі Марсоход2 і все, що набираю в терміналі з'являється на екрані монітора, підключеного до плати.
Тепер думаю треба трохи розповісти, що таке текстовий екран.
Текстовий екран - це здається щось від первісних комп'ютерів. У минулі «ДОСовскіх» часи на екрані комп'ютера відображалося 80x25 символів. Один символ займав на екрані 16 рядків, ширина символу була 8 точок.
Але ось ще. Потрібен знакогенератор, простіше кажучи, шрифт. Я використовую стандартний кириличного VGA шрифт.
Шрифт для текстового дисплея - це бітовий образ всіх символів. Якщо символів 256, то для їх зберігання в пам'яті в форматі 8x16 потрібно 256 * 16 = 4096 байт. Ця пам'ять так само легко поміститься прямо в ПЛІС Cyclone III.
Ось найголовніші параметри режиму 1440x900, 60Гц:
Pixel Clock = 106.500;
Hor Total Time = 14.157; // (usec) = 242 chars = тисячі дев'ятсот тридцять шість Pixels
Hor Addr Time = 10.530; // (usec) = 180 chars = 1440 Pixels
H Front Porch = 0.702; // (usec) = 12 chars = 96 Pixels
Hor Sync Time = 1.112; // (usec) = 19 chars = 152 Pixels
/ H Back Porch = 1.814; // (usec) = 31 chars = 248Pixels
Ver Total Time = 13.336; // (msec) = 942 lines
Ver Addr Time = 12.741; // (msec) = 900 lines
V Front Porch = 0.042; // (msec) = 3 lines
Ver Sync Time = 0.085; // (msec) = 6 lines
V Back Porch = 0.467; // (msec) = 33 lines
Подивимося, як формується зображення на екрані за допомогою інструменту SignalTap.
В принципі, далі я сподіваюся розвинути цю ідею. Можна спробувати прямо в платі Марсоход2 реалізувати протокол стандартного терміналу типу VT100. Тоді вийде цілком корисний пристрій - друга консоль для лінукс комп'ютера.