Проекты Altera Quartus II для платы Марсоход2. Приводим в чувство каноничный DEC VT100

SecureCRT is one of the industry"s leading VT100 terminal emulators. SecureCRT supports VT100 capabilities and character attributes as well as open standard Secure Shell to ensure data security during terminal emulation sessions.

Extensive VT100 Support

Although VT100 terminals may have had limited capabilities compared to subsequent versions (VT102 , VT220), most character attributes and functions of the VT100 are supported by this terminal emulator. Such attributes include:

  • ASCII character set
  • "Graphic renditions" (bold, underline, reverse, blinking)
  • 80 or 132 column display

VanDyke Software works with VTTEST to ensure that SecureCRT correctly emulates VT100 terminals.

Cross-Platform VT100 Terminal Emulator

VanDyke Software"s VT100 terminal emulator is available for most major platforms-Windows , Mac , and Linux . No matter which operating system your local machine is running, SecureCRT supports remote access , terminal emulation, and the host of session management features to make work more efficient.

Secure VT100 Terminal Emulator

SecureCRT supports SSH1 and SSH2 (and Telnet/SSL for Windows applications) as well as allows establishing a secure connection via data tunneling. However, if the system to which the VT100 terminal emulator remotely accesses does not support secure protocols, SecureCRT supports Telnet and Rlogin (Windows only).

Get Started

SecureCRT supports character attributes and control sequences of VT100 terminals. This terminal emulator is available for most major platforms, and supports secure operations when remote systems support SSH or Telnet/SSL. Download SecureCRT for a free 30-day evaluation.

На этом видео - демонстрация возможностей терминала VT100 созданного на базе платы Марсоход2 и ее шилда разъемов. Плата Марсоход2 подключена к ноутбуку через USB кабель. Из среды Altera Quartus II я загружаю скомпилированный образ проекта VT100 в ПЛИС Cyclone III платы и после этого подключенный к плате монитор обнаруживает видеосигнал и синхронизируется.

Проект для ПЛИС Cyclone III представляет из себя SoC (System-on-Chip) на базе Amber ARMv2a . Тут я немного поленился и не стал менять загрузчик из ПЗУ проекта - там сейчас простейший монитор, который позволяет загрузить через последовательный порт протоколом XMODEM в ОЗУ платы собственно программу vt100.elf. После загрузки этой программы в память платы и после запуска vt100.elf на экране монитора появляется надпись "Hello VT100 World!" и еще мигает курсор.

Теперь самое интересное. У меня на ноуте стоит виртуальная машина с Ubuntu. Я ее дополнительно сконфигурировал так, что ttyUSB1 будет использоваться как консоль.

В свойствах виртуальной машины есть возможность подсоединенные USB устройства подключить к виртуальной машине.

Виртуальная машина видит плату Марсоход2 как устройство Future Devices Dual RS232-HS. Подключаю плату к машине Ubuntu и вот чудо: через несколько секунд появляется консоль терминала.

На демонстрационном видео видно:

  • появляется запрос на ввод логина и пароля Linux - ввожу;
  • выполняю простые команды типа "ls" и "ls -l";
  • запускаю MidnightCommander, mc и могу выбирать файлы, перемещаться по панелям файлового менеджера;
  • аппаратный курсор работает;
  • клавиши клавиатуры работают почти все, левый Shift и левый Ctrl. Вот с F клавишами не разобрался. Похоже в стандарте VT100 их просто нет? Но тут могу ошибаться.

Конечно, такой проект, в этом виде, еще очень далек от совершенства, но оно мне в общем и не к чему. Совершенствовать, конечно, можно до бесконечности, там есть что улучшать. Самое главное - нужно совершенствовать ПО терминала VT100 - я использую исходники из https://github.com/JulienPalard/vt100-emulator и пытался их адаптировать к моему проекту.

Многое там мне не очень понятно и кое-что кажется можно сделать лучше. Приятно, что все, что было написано мною на Си и скомпилировано для Amber ARM - работает без проблем в моей системе..

Весь проект можно взять вот здесь:

Еще лучше склонировать проект из GitHub и перейти в бранч vt100:

> git clone https://github.com/marsohod4you/Amber-Marsohod2.git
> cd Amber-Marsohod2
> git checkout amber-soc-vt100-term

Исходники программы терминала в папке sw/vt100. Там же есть и скомпилированный vt100.elf файл.
Исходники SoC в папке hw.

В моей SoC теперь дополнительно еще есть модуль текстового экрана txtscreen, который интегрирует в себя:

  • статическую память экрана;
  • память шрифта VGA;
  • VGA контроллер с разрешением 1440x900 (но отображающий текстовый экран);
  • регистры управления аппаратным курсором;
  • PS/2 контроллер и его регистры.

Весь модуль txtscreen установлен на системную шину Wishbone BUS в системе на кристалле Amber SoC. Доступ к регистрам модуля осуществляется процессором по адресу 0x17000000 и выше.

Курсивом мои комментарии

DEC VT100

VT100, в каком-то смысле, является индустриальным стандартом среди терминалов. Набор команд, поддерживаемых этим терминалом, заимствовался кем только ни попадя. В линейке терминалов от DEC, VT100 первым был выпущен с отдельностоящей клавиатурой. Сердцем аппарата выступает микропроцессор Intel 8080. Похожий корпус был и у терминала VT103, в который были добавлены два ленточных накопителя TU58 и небольшая объединительная плата с QBUS шиной. Кроме того, еще выпускался VT125, который, по сути, отличается от VT100 только наличием дополнительной платы для поддержки инструкций ReGIS, реализующих простую компьютерную графику.

Запуск

Мы решили сначала провести проверку блока питания, потому что терминал последний раз включался много лет назад, Подключил плавно регулируемый трансформатор (variac / вариак ) к входу на 110В переменного тока (не уверен, зачем это было сделано ), а также шунтировал небольшой трансформатор первичной цепи, через который обеспечивается напряжение смещения в +12В для управляющей цепи. Затем я подал напряжение смещения небольшим лабораторным блоком питания. После подключения тестовой нагрузки на выход +5В, входящий переменный ток начал медленно расти. Ключевой элемент спокойно переключался, и БП выдавал номинальное напряжение согласно спецификации. Силовой резистор демпферной цепи (R27) издавал слабый запах, но, так как всё остальное было в порядке, я решил подключить БП обратно к терминалу. Резистор R27 в БП был номиналом в 1кОм, хотя, судя по схеме ниже, он должен был бы быть в 500 Ом.

Установив БП в терминал, я запустил систему. Спустя какое-то время на экране появился тусклый и несфокусированный курсор, а запах от резистора только усилился. Так как фокуса не было, то я промазал все потенциометры на плате монитора очистителем контактов Deoxit D5

Однако следующая попытка запуска была не такой успешной как первая. Практически сразу пошёл дымок из строчного трансформатора. Нехороший знак… В наши дни трудно достать строчные трансформаторы, но мне повезло - приятель-коллекционер из США хранил несколько штук и выслал мне один из своих запасов. Сверху слева на фото - мой сломанный оригинальный, справа - новый на замену.

Прозвонка трансформатора

Как же нам проверить работоспособность строчного трансформатора и не сжечь транзистор горизонтального выходного каскада? Давайте «прозвоним» его! Прогоняем сигнал в форме меандра через маленькую ёмкость (3.3нФ, например), подключенную параллельно к первичной обмотке трансформатора. Сигнал можно взять, к примеру, с калибровочного вывода осциллографа. Исправный строчный трансформатор должен затухать как на положительном, так и на отрицательном фронтах меандра. Если в катушке есть хотя бы один закороченный виток, то прозвонка это покажет. Закороченный виток можно просимулировать просто обмотав проволокой ферритовый сердечник трансформатора.

Сверху осциллограмма рабочего строчного трансформатора, а снизу трансформатора с закороченным витком. Такой элемент нужно менять!

Плата экрана

Плата соединена со строчным трансформатором и с горловиной ЭЛТ. К сожалению, старый сгоревший трансформатор спровоцировал повреждение транзистора горизонтального выходного каскада - произошло короткое замыкание между базой и эмиттером. Транзистор BU407D (Q414 на схеме) был заменен на BU406D с немного большим максимально допустимым напряжением. Короткое замыкание транзистора повлекло выбивание небольшого двухамперного предохранителя.

В качестве меры предосторожности, я проверил все конденсаторы с помощью измерителя иммитанса. Один из замеров показал легкое занижение характеристик, но, всё равно, значение укладывалось в 20-процентный допуск.

Заменив транзистор горизонтального выходного каскада, предохранитель и строчный трансформатор, я решил аккуратно проверить работу монитора без риска сломать какой-либо компонент. Поэтому я подключил лабораторный блок питания к горизонтальной секции платы. Я смог это сделать, отпаяв 1-омный силовой резистор R478. Запустил терминал и плавно увеличивал напряжение, подаваемое лабораторным блоком питания. Примерно на отметке в 5В экран показал слабую и узкую картинку. При подаче 10В и подстройке высоты, строчной линейности и яркости через соответствующие потенциометры, я получил достаточно хорошее изображение. Сила тока лабораторного блока питания оставалась на приемлемом уровне и я не чувствовал никаких странных запахов (ну кроме того силового резистора в блоке питания).

Управляющая плата терминала

Терминал управляется процессорной платой, на которой расположены: intel 8080 (сам процессор находится под платой AVO, Advanced Video Option, на фото ниже), несколько микросхем памяти, прошивка на четырех ПЗУ, ПЗУ знакогенератора и две логических матрицы на TTL, разработанных для обработки видео-выхода. Кроме этих компонентов, само собой, присутствует множество стандартных TTL-микросхем.

На нашей плате также присутствует опциональная плата AVO (Advanced Video Option) с 4мя сокетами для микросхем ПЗУ, которые могли перекрывать данные ПЗУ с основной платы. Штырьковый разъем сверху был предназначен для терминала VT125, и позволял специальному модулю перехватывать сигналы RS-232 до того, как они будут обработаны главной платой VT100. Этот модуль распознавал специальные команды ReGIS, которые использовались для отрисовки графики.