Разработка встроенной процессорной системы на ядре NIOS II фирмы Altera и перенос в неё части программного кода с уровня IBM PC

Заказчик получил новую версию установки тестового контроля, подключаемую через интерфейс, имеющийся как у стационарных, так и у мобильных устройств.

Заказчик

BVG Group

Российская компания, занимающаяся созданием оборудования и программного обеспечения для ремонта жестких дисков и восстановления данных, а также  разработкой и производством диагностического и ремонтного оборудования для цифровых носителей информации и материнских плат.



Ситуация

В 80-е годы в СССР существовала установка тестового контроля УТК-6, управляемая от ЭВМ СМ1420. Эта установка имела универсальный разъём, каждый контакт которого мог программироваться на вход или выход. При помощи программы на специализированном языке ЯСТЕК можно было формировать тестовые воздействия на испытуемую плату (подключённую к разъёму), либо считывать отклики с неё. Язык предоставлял широкие возможности по группировке каналов в шины и выдаче воздействий, но практически не имел интерактивности. Не было возможности трассировки и вывода оперативной информации для пользователя.

image2.jpg

В конце 90-х для спасения тестов, размещённых на уже осыпающихся дисковых носителях ИЗОТ, и из-за постоянных отказов физически устаревшего оборудования был разработан аналог этой установки, подключавшийся к PC. Для прогона имеющейся библиотеки тестов был разработан компилятор языка ЯСТЕК, полностью соответствующий оригинальному синтаксису, но в него были добавлены операторы для повышения интерактивности (управление курсором, расширенный вывод, расширенный ввод). Также для него была разработана исполняющая среда, позволяющая устанавливать точки останова, выполнять пошаговую отладку. Данная система успешно эксплуатировалась в производстве, пока не столкнулась с новыми проблемами физического устаревания – исчезли ЭВМ IBM PC с шиной ISA, к которой подключалась установка.

Потребовалось подключение установки к какой-либо современной шине.



Решение

При выборе шины рассматривались как внутренние, так и внешние варианты. Внешние шины хороши тем, что они имеются как на настольных ЭВМ, так и на мобильных (ноутбуки, планшеты). Поэтому выбор пал на шину USB. На момент разработки не было контроллеров, поддерживающих USB 3.0, поэтому работа велась на уже освоенном контроллере EX-USB FX2LP фирмы Cypress, позволяющем использовать всю ширину канала USB2.0.

Однако при реальной работе выяснилось противоречие основополагающих принципов тестового контроля и шины USB2.0. Дело в том, что данная шина обеспечивает большой поток данных, если они идут большими блоками. В целом блоки упаковываются в микрокадры. 8 микрокадров составляют 1 кадр. В секунду может быть передано 1000 кадров, то есть 8000 микрокадров. Если весь микрокадр заполнен данными, то он может передать до 11 блоков по 512 байт. Итого 512 * 11 * 8 * 1000 = 45056000 байт в секунду (44 мегабайта в секунду). Если же программа работает с короткими блоками данных, посылая их периодически, то картина меняется. Целевая установка должна изменять значение сигнала с последующим контрольным считыванием. Это возможно не чаще, чем раз в микрокадр. В результате пропускная способность падает или до 8 килогерц или даже до 4 килогерц (1 микрокадр для записи, 1 микрокадр для чтения). Это является неприемлемым для завершения теста за разумное время, а иногда - для проверки изделия на устойчивость к высокой частоте.
Было решено вынести исполняющую среду с уровня PC на уровень установки, возложив на канал USB только интерактивный обмен с пользователем, который не требует высокого быстродействия. Производительность целевого процессора должна быть достаточно высока для обеспечения мегагерцовых тестовых воздействий. По этой причине варианты с 8 битными контроллерами были сразу отвергнуты. Рассматривалось использование контроллера с архитектурой ARM, но это повысило бы стоимость аппаратуры.

Так как новая версия проектировалась установки на базе ПЛИС фирмы Altera, было решено реализовать контроллер внутри её «прошивки». Таким образом было выбрано использование синтезируемого процессора NIOS II. Для связи этого процессора с остальными устройствами было разработано ядро, имитирующее ISA-подобную шину (в целом шина AVALON фирмы Altera и так достаточно схожа с шиной ISA, если не считать разрядности шины данных и тактовой частоты).

После этого, было произведено перераспределение в программном коде. Компилятор и IDE (среда разработки и отладки) были оставлены на уровне IBM PC, а весь код, обеспечивающий исполнение программы на языке ЯСТЕК, был вынесен на уровень новой процессорной системы. Как следствие, на шине USB остались только вспомогательные функции (передача программы при старте, передача сведений о точках останова, о введённых оператором данных и т.п., передача текстов выводимых программой и сведений о событиях системы исполнения). Таким образом, удалось достичь максимальной производительности тестовой системы.



Результат

Заказчик получил новую версию установки тестового контроля, подключаемую через интерфейс, имеющийся как у стационарных, так и у мобильных устройств.

ustanovka.jpg

Особенностью разработки является то, что вместо использования внешней микросхемы контроллера (и возможных периферийных микросхем) использована полностью синтезируемая версия процессора NIOS II (все периферийные блоки также синтезированы). Как процессор, так и периферийные блоки внедрены в ПЛИС, которая уже была размещена в установке. Стоит подчеркнуть, что в результате изменений стоимость изделия не возросла.



Используемые технологии

«Прошивка» новой установки разработана частично на языке VHDL, частично – в схемном виде. Разработка велась в среде Quartus II 9.0 фирмы Altera (впоследствии перенесено на версию 12.0). Ядро процессора синтезировано при помощи механизма SOPC (впоследствии перенесено на QSys в связи с предупреждением о том, что SOPC будет исключён из среды разработки).

Программа для процессора NIOSII разработана на языке Си в среде Exlipse.

Интерфейс USB2.0 реализован на контроллере EZ-USB FX2LP фирмы Cypress при помощи программирования GPIF.

Компилятор языка ЯСТЕК оставлен в варианте 90-х годов на языке Pascal.

Для связи ДОС-подобной исполняющей среды пользователя (оставлена для сокращения времени разработки) и нового USB оборудования разработан VDD-драйвер, который виден ДОС-программе как виртуальные порты и память.