NyaiCEProg F3. Программатор для FPGA серии iCE5 (iCE40 Ultra)

На время отладки конфигурации FPGA неудобно постоянно изменять прошивку и перепрошивать мастер-контроллер, потому сделал себе простенький программатор, благо, на отладочной плате разведён USB.
В архиве stm32f3lattice.zip лежит два hex, для STM32F3Discovery и для отладочной платы «STM32F303 + ice5 Development Board». Отличаются, впрочем, они только расположением светодиода.

Загрузка выполняется в энергозависимую память, потому при отключении питания конфигурация пропадёт!

Интерфейс ПО незамысловат: выбираем bin-файл конфигурации и нажимаем «Program».
Интерфейс


Читать дальше

Подключение встроенного модуля токового драйвера FPGA серии iCE5 (iCE40 Ultra)

В микросхеме iCE5LP2K есть встроенные токовые драйвера для светодиодов. Три канала слаботочных, с ограничением тока от 4 до 24 мА с шагом в 4 мА (настраивается статически) и один канал посильнее, от 50 до 500 мА с шагом в 50 мА.

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


Читать дальше

"Идеальный" триггер

Хочу поделиться с решением, которое я назвал «идеальный триггер». Всем известен RS-триггер. И его запрещенное состояние, когда на оба входа одновременно подается активный уровень. На выходе в этом случае также будут активные уровни. Если со входов также одновременно снять активный уровень, то на выходах будет неопределенный результат. Это запрещенное состояние инженеры того времени так и не смогли решить. И обошли эту проблему созданием новых видов триггеров. D-триггер и JK-триггер.


Читать дальше

Настройка PLL FPGA серии iCE5 (iCE40 Ultra) в среде iCEcube2

Как и в любом уважающем себя FPGA, рассчитанном на достаточно высокое быстродействие, в iCE5LP2K есть один модуль PLL, и, скорее всего, он понадобится. Продолжим же с него. На самом деле, микросхема эта не настолько уж и шустрая, не дотягивает даже до уровня первого циклона (Altera Cyclone I).

Я провёл мини-тест, запускал моргалку светодиода на разных частотах.
  • 96 МГц: предупреждений нет, моргает нормально;
  • 120 МГц: есть предупреждения о превышениях временных порогов на каких-то путях, но ещё работает, сбоев в моргании нет;
  • 130 МГц: есть предупреждения, моргает со сбоями и зависаниями, всё плохо.
  • 150 МГц: есть предупреждения, не работает ничего, светодиод просто не включается.
Синтезатор не требует файла с временными ограничениями на сигналы и позволяет собрать даже нерабочий вариант. Файл ограничений, кстати, добавить можно.
То есть даже собранный правильный код не означает, что он будет работать. Думаю, более простая схема, без такого километрового счётчика, работала бы и на более высокой частоте, чем эта моргалка.

Читать дальше

Создание проекта для iCE5 (iCE40 Ultra) в среде iCEcube2

Есть такая фирма Lattice, которая производит микросхемы FPGA (некоторые из них тут продаются, некоторые — фиг). Самое интересное их отличительное качество — размер. Например, серия iCE5 (iCE40 Ultra), имеет вариант корпуса QFN48 7х7мм:
STM32F303 + ice5 Development Board
Вторая микросхема — это stm32f303. Сама плата: STM32F303 + ice5 Development Board. iCE5LP4K не удалось найти, потому поставили iCE5LP2K, да и слот под sd-карты решили не паять.


Читать дальше

SpriteMods.com топик-ссылка

Тут коллега Sprite выкладывает свои наработки. Некоторые весьма интересны и даже полезны. Ну и видео в конце каждой статейки.

Ковыряясь в старой литературе.

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

Книга называется. Номограммы для радиолюбителей.

Конечно многое уже ненужно, так как устарело. Но все же, может кому пригодится. Кому надо, ниже ZIP архив.

Оболочка для прошивки серийных устройств

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



Читать дальше

RTT с помощью OpenOCD (без J-Link и без софта от Segger)

Фирменный софт от Segger, разработчика программаторов J-Link, имеет одну очень удобную функцию, а именно терминал реального времени — Real Time Terminal (RTT) (есть информация на русском и пример использования). Вещь удобная, позволяет получить терминал до МК прямо во время отладки по SWD. По скорости и функционалу превосходит Semihosting и вывод информации через пин SWO. И хотя идея не оригинальна (например, до недавнего времени что-то подобное было в в составе набора утилит stlink utils от Texane), реализация оказалась удачной и удобной для использования. Поддерживаются все МК ARM Cortex-M. Жирный минус — привязка к недешёвым программаторам J-Link и к их фирменному софту. И если первая проблема уже давно решается покупкой клона или превращением ST-Link в J-Link OB, то вторая до недавнего времени не имела решений — или используй фирменный софт и бойся, что он залочит клон, или забудь об RTT. Но решение появилось: проект открытого отладчика для чипов OpenOCD (Open On-Chip Debugger) уже несколько лет поддерживает программаторы J-Link (без проблем работает прошивка и отладка), а в марте в репозитории проекта OpenOCD появился патч от Marc Schink, добавляющий поддержку RTT. Более того — вещь получилась универсальная, работает даже с другими SWD программаторами (я тестировал с ST-Link). И хотя патч ещё не включён основную ветку OpenOCD, ничто не мешает нам его попробовать.

Тестирование будем проводить на Linux (но можно повторить и на других ОС), программаторы J-Link-OB-072 и ST-Link-v1.

Читать дальше

CMSIS-DAP на STM32F4Discovery

Тут уже лет 5 назад упоминали о таком, но мало ли. CMSIS-DAP какой-то канонный опенсорсный интерфейс отладки от ARM для кортексов на базе протокола USB HID. Т.е. не привязанный к конкретному производителю контроллеров и не требующий драйвера.
Более мощная версия этой штуки (со всякими балалайками, типа популярной нынче прошивки через MSD, или USB-UART) развивается mbedом и называется DAPLink.





Читать дальше