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.


Поздравляем с Новым Годом! Новый Год 2019 стучится в двери и мы к нему уже готовы: FPGA проект "цветомузыка" готов и можно звать гостей на дискотеку. На этих видео смотрите, как оно работает:

Вот еще такое видео записал:

Проект довольно сложный, но я рад, что он заработал. Далее, читайте немного описания и комментариев..

Поскольку я делаю новогодний проект "Цветомузыка", то мне нужны для нее цветные управляемые огни / лампы / светодиоды. Тут я вспомнил, что у нас есть светодиодная лента. Сперва нужно научиться управлять ею и я это сделал! На этом видео выше показано, как плата Марсоход3bis управляет светодиодами на ленте.
Описание этого маленького отдельного проекта читайте далее.

color leds

В предыдущей статье я писал об изготовлении самодельного микрофонного шилда к плате Марсоход3bis.
Для чего мне понадобилась такая плата? Мне захотелось сделать "новогодний проект" - "Цветомузыка". Я хочу сделать автономное устройство, которое будет слушать микрофоном окружающий звук, оцифровывать его с помощью АЦП в ПЛИС платы MAX10, далее фильтровать на низкие, средние и высокие частоты и светить соответственно тремя цветами: красным, зеленым и синим в такт музыки.

Конечно, я понимаю, что оцифровывать звук таким маленьким электретным микрофоном типа CZN-15E - это не очень здоровое занятие.. но хотелось получить именно автономное устройство, которое бы не зависило от проигрывателя, компьютера или еще чего..

Пожалуй самый сложный вопрос в этом проекте будет цифровой фильтр. Далее я расскажу, как собираюсь делать фильтр в FPGA MAX10 платы Марсоход3bis.

microphone czn-15e

Задумал я подключить микрофон к плате Марсоход3bis. Микрофон электретный CZN-15E. Первая мысль была очень простая: нужно приобрести микрофонный модуль для Ардуино и использовать его. Я нашел и купил вот такой модуль:

microphone module arduino

Казалось, что осталось только подсоединить этот "усилитель" и дальше заниматься программированием, но не тут-то было. Этот микрофонный модуль, как оказалось, был абсолютно не предназначен для усиления аудио сигнала. По сути дела это просто пороговый детектор, который выдает импульс по хлопку или громкому звуку. Я же собирался усиленный сигнал подавать на АЦП моей платы, на FPGA MAX10, и оцифровывать этот аудио сигнал и обрабатывать его цифровыми методами, цифровыми фильтрами там и все такое. Теперь стало понятно, что все придется делать самому. Возможно придется паять какую-то платку расширения для платы Маросход3bis..

Ну раз такое дело и нужно делать свою плату - значит буду делать плату. Здесь я решил применить широко известную всем Лазерно-Утюжную Технологию. Далее расскажу, что у меня получилось.

yosys

Понадобилось мне средство создания схемы из Verilog файла. Самый понятный способ для меня - это использования самого Intel Quartus. В среде квартуса после компиляции проекта, а именно, после анализа и синтеза проекта, можно посмотреть результирующую схему устройства.

Делается так:
1) Меню Processing => Start => Start Analysis & Synthesis
2) Меню Tools => Netlist Viewers => RTL Viewers

Например, рассмотрю вот такой топ модуль Verilog (десятичный счетчик с синхронным сбросом и и сигналом разрешения счета):


module cnt(
  input wire clk,
  input wire rst,
  input wire ena,
  output reg [3:0]q
);

always @(posedge clk)
  if(rst)
    q <= 0;
  else
    if( ena )
  begin
    if( q==9 )
      q <= 0;
    else
      q <= q+1;
  end

endmodule


 

Квартус после синтеза покажет его в RTL Viewer вот так:

quartus rtl viewer


Все это очень хорошо, но мне хотелось найти средство попроще, желательно opensource и чтобы можно было бы запускать из скрипта. Самый подходящий вариант, который я нашел - это Yosis - Yosys Open SYnthesis Suite. Далее расскажу, что я знаю про него.