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.


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.

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

TFBGA

Интерфейс HyperBus был разработан компанией Cypress в 2014 году. В настоящее время уже многие компании выпускают микросхемы использующие HyperBUS. Это и микросхемы памяти и флэш память и микроконтроллеры с поддержной этого интерфейса.

Основное преимущество микросхем памяти с интерфейсом HyperBUS это маленький размер корпуса (24 Balls TFBGA, 5x5-1 Ball Footprint), небольшое количество сигналов для управления и передачи данных. Всё это упрощает разработку миниатюрных устройств использующих HyperRAM память.

Поизучаем HyperRAM.