FPGA chips

Изучаем САПР Altera Quartus II / Intel Quartus Prime, язык описания аппаратуры Verilog HDL и кое-что про VHDL. Программируем FPGA Altera / Intel Cyclone III, Cyclone IV, MAX II, MAX10. Экспериментируем с платами разработчика  FPGA серии Марсоход, Марсоход2, Марсоход3. А еще разбираемся с FPGA Gowin.


VGA на ПЛИСе

Для отображения какой-нибудь информации, или просто для отладки проекта, имеющихся на марсоходе восьми cветодиодов часто бывает недостаточно. В качестве дополнительного "средства отображения" можно использовать видеомонитор (часто остаются "не у дел" морально устаревшие CRT мониторы ) или даже телевизор, только для этого нужно реализовать соответствующий видеоадаптер.

В прошлой статье я писал, что такое JTAG и TAP контроллер. Эти знания нам помогут сделать свой простой программатор для ПЛИС компании Альтера.

Я хочу сделать очень простой программатор, который будет работать через последовательный порт. Последовательный порт хорош тем, что он весьма распространен, прост в программировании и, к тому же, существуют недорогие устройства USB-to-COM. Есть надежда, что мой программатор будет работать и через такой переходник. На компьютере я буду запускать мою специальную программу, управляющую программатором. Нам ее предстоит написать (в смысле я ее уже написал и расскажу как она работает).

JTAG - это аппаратный интерфейс для программирования, тестирования и отладки печатных плат. Об этом интерфейсе, уже много написано. Например, можно почитать здесь: http://ru.wikipedia.org/wiki/JTAG

Еще очень хорошее описание на английском языке можно найти на сайте http://www.fpga4fun.com/JTAG.html

Ну и конечно, компания Altera предоставляет исчерпывающую документацию по использованию JTAG и BST (Boundary Scan Test) в своих микросхемах FPGA и CPLD:

На нашей плате Марсоход тоже есть разъем JTAG для подключения программатора UsbBlaster или ByteBlaster. Через этот разъем мы программируем нашу ПЛИС.

Попробую рассказать, что же такое JTAG своими словами.

Еще в 1980 году группа разработчиков Joint Test Action Group (JTAG) разработала спецификацию для тестирования межсоединений на плате: "boundary-scan testing". Позже эта спецификация была стандартизована как IEEE Std. 1149.1.

Печатная плата и много проводников

Представьте себе, что Вы разрабатываете плату скажем с 5 микросхемами и у каждой микросхемы 100-1000 контактов. Микросхемы соединены между собой тысячами соединений на плате. На заводе плата будет выпускаться партиями десятками тысяч экземпляров. Понятно, что часть плат после монтажа компонентов будет браком. Где-то не пропаяются контакты, где-то трещина в PCB или не получилось переходное отверстие между слоями платы и так далее. Как же все таки тестировать устройства?

quartus11

Вот наконец дошли руки выкачать и посмотреть новую версию Quartus II. Официальный анонс на сайте Альтеры обещает следующие улучшения:

  1. Расширенная поддержка для Stratix V FPGA, а именно:
     - поддержка режимов GigE и SDI для встроенных приемопередатчиков;
     - теперь у приемопередатчиков поддерживается настройка доп. параметров (боюсь соврать, поэтому пишу как на сайте Альтеры "receiver offset calibration, linear equalizer, and dynamic reconfiguration of PMA analog settings").
  2. Добавлены средства отладки интерфейса к микросхемам внешней памяти (Memory Interface Toolkit). Новое средство якобы позволяет в реальном времени отследить эффективность подсистемы памяти. Можно подобрать наиболее эффективный режим работы контроллера памяти, меняя его настройки.
  3. Добавлено средство отладки для приемопередатчиков (Transceiver Toolkit). Улучшенный интерфейс менеджера каналов позволяет в реальном времени наблюдать линк статус приемников и передатчиков. Улучшенная панель управления каналами позволяет на лету менять параметры приемопередатчиков и смотреть как это влияет на систему. Все это позволяет разработчикам быстрее создавать и отлаживать платы. 
  4. Появилось улучшенное средство ускоренного создания проекта QSys вместо SOPS Builder. Позволяет быстро соединять QSys-совместимые IP-Cores блоки в единую систему. 
  5. Дополнительные улучшения:
     - улучшенный Chip Planner (касается настроек приемопередатчиков Stratix V FPGA);
     - добавлена поддержка 64-битных ОС Windows и Linux для DSP Builder
     - добавлено еще одно IP Core - Deinterlacer II IP core
     - улучшена поддержка Cyclone IV GX FPGAs и MAX V CPLDs (доступна final timing model и возможна генерация POF).

Официальная страница Альтеры, рассказывающая о новых возможностях Quartus II v11 вот здесь: http://www.altera.com/products/software/quartus-ii/whats-new/swf-qts-whats-new.html?f=hp&k=pb1-0

Честно говоря, все выше перечисленное меня сейчас не очень заинтересовало.
Меня больше интересует были ли исправлены хотя бы некоторые из многочисленных багов 10-й версии. Вот поэтому я и поставил себе 11-ю версию.

Первое, что я сделал, взял свой старый проект 

 - и откомпилировал его новым, одиннадцатым квартусом - зашил в плату Марсоход - проект работает. Ура.

Проверил, в текстовом редакторе теперь можно писать комментарии на русском (эта возможность в 10й версии странным образом пропала).

Исправлен еще один баг 10ки, который меня сильно раздражал - иногда после открытия текстового или графического файла и его скроллировании часть изображения была скрыта как бы нависающим, но невидимым окном. Теперь этого нет - и хорошо.

Ну остальное проверим в процессе работы. Будем надеяться, что новая версия действительно стала лучше!
Посмотрим...

 

регулятор напряжения

Ультразвуковой датчик расстояния HC-SR04, оказался очень требовательным к стабильности напряжения питания. Поскольку у нас все устройства питаются,  как правило, от аккумулятора, который со временем "садится" и,  кроме того, напряжение на нем может менятся с изменением нагрузки (включение моторов или даже светодиодов), появилась необходимость в стабильном источнике питания.