При отладке проектов для FPGA, часто возникает необходимость вывести отладочную информацию на внешний индикатор. Электронный индикатор помогает человеку быстро и наглядно оценить необходимые параметры, особенно те, которые человек непосредственно не может определить с помощью своих органов чувств Не всегда есть возможно использовать физическими индикаторами, или встроенными средствами отладки, такими как SignalTap® от Altera и ChipScope™ от Xilinx. Наши коллеги создали удобный инструмент для отображения виртуальных индикаторов. Мы с удовольствием портируем этот проект на все наши платы с FPGA!
Top-модуль проекта выглядит вот так:
Verilog Code:
module vga_leds( input wire CLK50MHZ, input wire KEY0, input wire KEY1, output wire [7:0]LED, // outputs: output wire hsync, output wire vsync, //high-color test video signal output wire [3:0]r, output wire [3:0]g, output wire [3:0]b ); wire w_clk_video; wire w_clk_hdmi; wire w_locked; mypll mypll_inst( .inclk0( CLK50MHZ ), .c0( w_clk_video ), //74MHz .locked( w_locked ) ); reg [47:0]counter; always @( posedge w_clk_video or negedge KEY0 ) begin if( ~KEY0 ) counter <= 0; else if( KEY1 ) counter <= counter+1; end display display_inst( .reset( ~w_locked ), .clk_video( w_clk_video ), .red_leds( counter[31:16] ), .green_leds( counter[30:15] ), .segments( counter[47:16] ), .hsync (hsync), .vsync (vsync), .r (r), .g (g), .b (b) ); endmodule
Здесь ничего особенного:
- PLL выдает одну частоту, 74 МГц тактовая частота пикселей для видеорежима 1280х720.
- Модуль display получает 16 бит для виртуальных красных светодиодов и 16 бит для виртуальных зеленых светодиодов. Так же он принимает 24-х битное число для шести семисегментных индикаторов. Есть у модуля выходы RGB и синхронизации для VGA.
Сам display внутри имеет модуль генерации синхросигналов hsync, vsync и RGB сигналов. Так же display имеет логику отображения виртуальных светодиодов и семисегментных индикаторов на экране. Эта логика жестко привязана к координатной сетке экрана через сигналы w_pixel_count и w_line_count из hvsync.
Ниже на видео показано, как идет отображение двоичного счетчика на экране подключенного монитора.
Файлы проектов:
Проект виртуальных индикаторов для платы VE-XC6SLX9: vga_leds_seg7_XC6SLX9.zip
Проект виртуальных индикаторов для платы VE-EP4CE10: vga_leds_seg7_EP4CE10.zip
Проект виртуальных индикаторов для платы VE-LCMXO27000HC: vga_leds_seg7_LCMXO27000HC.zip