FPGA — это тип полупроводниковых микросхем, которые можно перепроектировать после того, как они были разработаны и отправлены заказчику. Разработчики могут создавать программы для изменения структуры FPGA, чтобы помочь своей организации выполнить конкретный вариант использования, который они имели в виду. Я описываю шаги на основе руководства, разработанного Intel.

Требования:

  • Аппаратное обеспечение: плата DE-10 Nano Kit, построенная на основе системы на кристалле FPGA от устройства Intel Cyclone V.
  • Программное обеспечение: Intel Quartus Prime можно использовать в качестве среды разработки для разработки, компиляции и программирования кода для FPGA. Языком программирования будет VHDL (Verilog Hardware Definition Language), аналогичный языку C.

Этапы программирования ПЛИС:

  1. Дизайн: создайте проект Quartus и выберите семейство FPGA и другие детали. Создайте файл Verilog в проекте Quartus и запишите в него следующий код Verilog. Выберите контакты, которые будут действовать как часы, вход и выход. Создайте файл SDC (ограничения дизайна синопсиса), чтобы указать временные ограничения для дизайна, включая целевую частоту и т. д.
  2. Компиляция: Fitter размещает и направляет логику синтезированного дизайна в ресурсы целевого устройства. Ассемблер генерирует программный образ, который можно загрузить в устройство FPGA. Выполняется временной анализ, чтобы обеспечить закрытие по времени — все временные ограничения соблюдены.
  3. Simulate/Program: подключите плату к компьютеру, а также подключите компонент питания.
  4. Проверка оборудования. Убедитесь, что оборудование работает в соответствии с проектом.
// create module for a sample HELLO WORLD program with a blinking LED
 module blink (
 input wire clk, // 50MHz input clock
 output wire LED // LED ouput
 );

// create a binary counter
 reg [31:0] cnt; // 32-bit counter

initial begin

cnt <= 32'h00000000; // start at zero

end

always @(posedge clk) begin

cnt <= cnt + 1; // count up

end

//assign LED to 25th bit of the counter to blink the LED at a few Hz
assign LED = cnt[24];

endmodule