-
Alucard
-
Автор темы
-
Не в сети
-
Завсегдатай
-
-
Сообщений: 208
-
Спасибо получено: 20
-
-
-
-
|
Терминал, даже скорее табло с символами, сделан на ПЛИС Altera Cyclone I. Имеет следующие возможности:
- VGA вывод 640x400@70.
- Три цвета: черный, белый, красный.
- Текст 80x25 символов.
- Вся таблица ASCII.
- Ввод данных с COM (115200), но можно что-угодно другое.
Похвастаться ему нечем, скроллинга нет, курсора нет. :side:
Подключил его к программатору марсохода и через Putty тестирую.
Такой специфичный формат VGA был выбран из-за нехватки внутренней памяти ПЛИС.
Понимает несколько спец команд:
- 0x0D (ENTER) - перевод строки
- 0x7F (BACKSPACE) - удаление символа
- 0x04 - очистка экрана
- 0x1A (PAUSE/BREAK) - смена чернил (на красные/белые)
Мне пригодился для отладки контроллеров и других процессорных систем.
Устройство вывода самих символов на экран я полностью описал на комбинаторике. Частоты там низкие, не вижу пользы в регистрах. ///////////////////////////////////////////////////////////////
//module which generates bitmaps
///////////////////////////////////////////////////////////////
module chars (
input wire [11:0] char_count, //Номер пикселя в линии
input wire [11:0] line_count, //Номер линии
input wire [8:0] char, //Код символа + цвет (1бит)
output wire [14:0] font_addr, //Адрес пикселя в знакогенераторе
output wire [10:0] addr, //Адрес символа в памяти
output wire redink //Красные/белые чернила
);
assign addr = ((char_count)>>3) + ((line_count>>4)*80);
assign font_addr = ((char_count - (char_count>>3)*8) + (line_count - (line_count>>4)*16)*8) + ((char[7:0])<<7);
assign redink = ~char[8]; //Red/White ink
endmodule Timing Analyzer не жалуется.
Проект/
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от Alucard.
|
Время создания страницы: 0.157 секунд