Визуальная электроника

При отладке проектов для FPGA, часто возникает необходимость вывести отладочную информацию на внешний индикатор. Электронный индикатор помогает человеку быстро и наглядно оценить необходимые параметры, особенно те, которые человек непосредственно не может определить с помощью своих органов чувств Не всегда есть возможно использовать физическими индикаторами, или встроенными средствами отладки, такими как SignalTap® от Altera и ChipScope™ от Xilinx. Наши коллеги создали удобный инструмент для отображения виртуальных индикаторов. Мы с удовольствием портируем этот проект на все наши платы с FPGA!

Top-модуль проекта выглядит вот так:

Verilog Code:
  1. module vga_leds(
  2. input wire CLK50MHZ,
  3. input wire KEY0,
  4. input wire KEY1,
  5. output wire [7:0]LED,
  6. // outputs:
  7. output wire hsync,
  8. output wire vsync,
  9.  
  10. //high-color test video signal
  11. output wire [3:0]r,
  12. output wire [3:0]g,
  13. output wire [3:0]b
  14. );
  15.  
  16. wire w_clk_video;
  17. wire w_clk_hdmi;
  18. wire w_locked;
  19.  
  20. mypll mypll_inst(
  21. .inclk0( CLK50MHZ ),
  22. .c0( w_clk_video ), //74MHz
  23. .locked( w_locked )
  24. );
  25.  
  26. reg [47:0]counter;
  27. always @( posedge w_clk_video or negedge KEY0 )
  28. begin
  29. if( ~KEY0 )
  30. counter <= 0;
  31. else
  32. if( KEY1 )
  33. counter <= counter+1;
  34. end
  35.  
  36. display display_inst(
  37. .reset( ~w_locked ),
  38. .clk_video( w_clk_video ),
  39. .red_leds( counter[31:16] ),
  40. .green_leds( counter[30:15] ),
  41. .segments( counter[47:16] ),
  42. .hsync (hsync),
  43. .vsync (vsync),
  44. .r (r),
  45. .g (g),
  46. .b (b)
  47. );
  48.  
  49. 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

Добавить комментарий