FPGA & Verilog БлогFPGA chips

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


Я продолжаю работать над проектом SDR-Radio на FPGA плате Марсоход3GW2. Напомню, что здесь на плате у нас стоит микросхема ПЛИС от компании Gowin. Это значит, что если придется использовать IP Core, то это будут коры от говин.

В проекте SDR-Radio мне нужны следующие базовые компоненты:

  • NCO - Numerically Controlled Oscilator, перестраиваемый генератор синусоидальных колебаний:
  • модуль приема команд от ПК и данных к ПК, например, можно использовать последовательный порт;
  • умножители для переноса спектра сигнала;
  • цифровые фильтры нижних частот CIC и FIR.

Первые два пункта у меня практически уже есть реализованные в предыдущем проекте. Теперь мне нужно сделать цифровые фильтры.

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

waves

Возникла идея повторить один из наших давних FPGA проектов: SDR радиоприёмник. Когда-то он был выполнен на плате Марсоход2 с Cyclone III, но сейчас у нас уже другая плата Марсоход3GW совсем другая FPGA от Gowin. Но, по прежнему, на плате есть АЦП 8 бит и даже на последних платах этот АЦП работает на частоте 50МГц.

Для реализации проекта SDR приёмника нужны будут несколько компонентов: NCO, CIC фильтр и FIR фильтр.

К сожалению, в библиотеке компонентов среды проектирования Gowin FPGA Designer нет компонента NCO. NCO - это Numerically Controlled Oscilator. Управляемый генератор синусоидального сигнала. Его придется сделать самим. Эта статья как раз про "промежуточный проект" - NCO в FPGA.

Хоть готового компонента NCO в среде проектирования я не нашёл, за то тут есть другие компоненты, которые мне могут помочь. Это Gowin компоненты CORDIC и DDS.

DDS - Direct Digital Frequency Synthesizer. Этот компонент позволяет синтезировать синусоиды или сигналы другой формы. Как я понял компонент использует таблицы отсчётов сигнала в BSRAM. Его вполне можно использовать для создания NCO. Это в принципе почти и есть NCO. Я не стал идти этим путём, так как мне не понравилось, что конфигурация компонента DDS должна происходить путём записи в его управляющие регистры. Кроме этого, мне нужен NCO с двумя выходами: синус и косинус одновременно. И тогда возникает вопрос: либо ставить два экземпляра DDS либо разбираться, как работают каналы DDS. Возможно применение двух каналов в одном экземпляре модуля DDS это подходящий вариант. Однако, как я уже сказал, я пошёл другим путём.

Второй кандидат это компонент Gowin CORDIC. Далее я расскажу подробнее про использование CORDIC  в составе модуля NCO.

mcy316 rpi5

Что-то похожее я уже когда-то делал с нашей платой Марсоход2RPI и Распбери Пи3. Но теперь у нас другая FPGA плата на Cyclone III и другой микрокомпьютер Raspberry Pi5. И даже современная ОС теперь уже будет 64-bit Bookworm.

Смогу ли я загружать FPGA из микрокомпьютера и сделать взаимодействие между CPU микрокомпьютера и платой FPGA?

(Для лиги лени сразу напишу ответ: да, смогу).

Подробнее можно прочитать далее в этой статье.

school synt digital

Вероятно вы слышали о "Школе синтеза цифровых схем". Это образовательная инициатива, созданная для быстрого освоения современных подходов к проектированию цифровых микросхем. Каждый желающий может записаться на курсы школы и пройти обучение.

Школа готовит программу лабораторных работ для изучения FPGA. Они опубликованы на Github: https://github.com/yuri-panchul/basics-graphics-music

Особенность этих лабораторных работ в том, что они адаптированы для совершенно разных FPGA плат, у них разные производители, используется разная ёмкость FPGA чипов, разные вендоры FPGA.

Мы сделали форк этих лаб https://github.com/marsohod4you/basics-graphics-music и адаптировали лабораторные работы и на нашу плату Марсоход3GW2.

Здесь я немного расскажу о некоторых учебных работах.