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.


free bad advice

Навеяно комментариями в блоге.

Вообще-то, в языке Verilog, который я всячески пропагандирую, действительно есть странные места, от которых у начинающих программистов происходит «вынос мозга». Часто путанница связана с wire и reg – где и когда их можно или нужно писать.

Все было бы более или менее понятно, если бы reg всегда обозначал одно и то же. Например, если бы reg в программе Verilog однозначно соответсвовал бы триггеру в схеме, то изучить язык было бы легче. Это имхо.

Увы, язык Verilog HDL «очень гибкий» и из-за этого не все так просто. Иногда (и часто), присвоение значения регистру reg не порождает тригер в схеме.

 Сейчас в моде всякие системы типа «умный дом». Предполагается, что дом или квартира или другое помещение напичканы разными датчиками и сенсорами. Информация от датчиков должна поступать в центр принятия решения – это может быть компьютер или какой-то специальный контроллер. Ну а он уже на основании показаний датчиков подает команды на исполнительные устройства: свет зажигает или температуру в помещении регулирует или еще что-то.

Я хочу сделать совсем простой, такой мини-проект: использовать плату Марсоход2 как плату сбора данных. Она же, плата Марсоход2, будет эти данные передавать на компьютер. На компьютере нужно будет как-то отображать на экране полученные результаты.

Плата Марсоход2 с подключенным к АЦП переменным делителем напряжения и датчиком температуры

На плате Марсоход2 есть 2 кнопочки – это будут первые два датчика с бинарным состоянием «включено»-«выключено». Еще на плате Марсоход2 есть восьмибитный АЦП (Аналогово-Цифровой Преобразователь). Это будет второй датчик. Значения от него будут передаваться в компьютер в диапазоне от 0 до 255. Ко входу АЦП подключу переменный резистор, как делитель напряжения. Четвертый будет датчик температуры ds18b20 – такой же как использовался в другом нашем проекте.

Плата Марсоход2 подключается к ПК через микросхему FTDI, которая имеет два канала приемопередачи и реализует управление ПЛИС через JTAG и еще последовательный порт. Вот показания датчиков и буду посылать через последовательный порт.

жучек, bug

Некоторые устройства, которые мы разрабатываем, требуют написания драйвера устройства для ОС Windows или Linux. Написание драйвера устройства – это не совсем формат нашего сайта, но возможно эта статья будет кому-то полезна. Речь пойдет даже не о написании драйвера, а об отладке драйвера в ОС Windows. Я вот уже две недели как погрузился в отладку драйвера одного устройства.. Не очень простое дело..

Итак, предположим, нам захотелось заглянуть внутрь ядра Windows, посмотреть, как оно работает. Ну или допустим мы написали драйвер нашего устройства, а он не работает или работает неправильно. Нужно посмотреть отладчиком ядра, что происходит.

Есть такие устройства – USB Трекеры (USB Analyzer). Они позволяют перехватить трафик между USB устройством и компьютером, записать его и проанализировать. Трекеры обычно используются разработчиками USB устройств и программистами для отладки оборудования и драйверов. Очень полезная штука, если нужно заниматься проектами связанными с шиной USB.

USB анализаторы протокола

У нас в офисе сейчас есть два таких USB трекера. Первый трекер (беленький), компании Ellisys позволяет работать только с устройствами USB1.1. Когда-то давным давно мы приобретали его за большие деньги, кажется около 600 евро. Уже потом цены на них сильно упали.

Второй трекер Beagle (синенький), компании Total Phase, попал к нам почти случайно. Он уже посовременней, можно прослушивать трафик устройств USB2.0. Понятно, сейчас мы больше пользуемся им.

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

Я предлагаю сделать свой USB анализатор на базе платы Марсоход2. Врядли получится сделать анализатор USB2.0, но уж трекер для USB1.1 сделать точно можно. Это, конечно, серьезное ограничение, но, тем не менее, наш анализатор будет обладать и своими собственными полезными и уникальными свойствами.

Я был абсолютно уверен, что встроенный симулятор в Quartus II уже не вернется. Последняя версия, про которую я знаю, что встроенный симулятор был - это версия 9.1. И вот сейчас я иду по ссылке, которую дает наш читатель "wowa" (спасибо ему) в комментарии к одной из недавних статей и не верю своим глазам.

На видео в Yutube Professor Kleitz показывает как создать vector waveform file и симулировать проект, выполненный в схеме. Все действие происходит в среде свеженького Quartus II v13.

Интересненько...

В принципе, посмотрите это видео - там все понятно, хоть и по английски, говорит, профессор медленно и внятно. Я проверил все этапы симуляции сам - сделал точно такой же проект и симулировал примерно так же. Ниже - скриншоты и пояснения.