微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > VGA的输出应用

VGA的输出应用

时间:10-02 整理:3721RD 点击:


今天,我们来进行锆石A4 FPGA开发板的VGA输出应用


FPGA能通过硬件描述语言的编程编程您想要的芯片,当然,也能把它变成带有简单显卡功能的芯片,通过编程,至少能进行显示信号的输出,当然,如果您有更高能力的编程,还能将它变成更功能强大的芯片。
有人说德语是个工具,其实Verilog也能算是工具,就像一把锤子,其本身并不包含您的设计思想,您需要在大脑或草稿中构思好您的电路框架,再用硬件描述语言把这一设计理念实现化,让FPGA读懂您想要的需求,让它变成您需要的样子。
如此一来,我们需要先了解VGA信号的构成,以及VGA显示成像的原理。
经过查阅资料,我们可以了解到:VGA信号]驱动显示器一般用的是扫描的方式,而且一般是逐行扫描。
逐行扫描这个词可能过于术语,顾名思义是一行一行扫下来的,而具体上,它其实是从屏幕左上的第一个像素点向右改变像素的色彩,每行结束会同步一下。
硬件引脚方面:
随便找根不用了的VGA线剥开,发现里面一堆线,其中五根比较重要:
三根粗的RGB:
红色信号 r
绿色信号 g
蓝色信号 b
俩像素信号起始同步:
行同步信号 hs
场同步信号 vs
然后还有根地线也比较重要,屏蔽线初期弄的话可以随便搞搞,等弄的差不多了要追求显示质量了,再去研究它们,这儿先满足最基本的显示需求。


.


然后是代码方面:
实现最基本功能的参考范例:

  1. module Main(
  2.     CLK,
  3.     VGA_HS,
  4.     VGA_VS,
  5.     VGA_R,
  6.     VGA_G,
  7.     VGA_B
  8.     );

  9.     input CLK;
  10.     output VGA_HS,VGA_VS, VGA_R, VGA_G, VGA_B;

  11.     reg[10:0] x_counter;
  12.     reg[10:0] y_counter;

  13.     reg [3:1] GRBX;

  14.     initial begin
  15.         x_counter = 0;
  16.         y_counter = 0;
  17.     end

  18. // Always block to drive drawing, {front|back}-doors, and syncs.
  19.     always @(posedge CLK) begin
  20.         if(x_counter == 1055)
  21.         begin
  22.             x_counter = 0;

  23.             if(y_counter == 627)
  24.                 y_counter = 0;
  25.             else
  26.                 y_counter = y_counter + 1;
  27.         end
  28.         else
  29.             x_counter = x_counter + 1;

  30.     end

  31.     always @(x_counter or y_counter)
  32.     begin
  33.         if (x_counter 839 && x_counter 600 && y_counter =11'd144)&&(x_cnt =10'd35)&&(y_cnt =200)&&(xpos =140)&&(ypos =580)&&(xpos =140)&&(ypos =220)&&(xpos =140)&&(ypos =220)&&(xpos =440)&&(ypos =385)&&(xpos =285)&&(ypos<=315));  
  34. //RGB像素点的赋值
  35. assign vga_r= valid?e_rdy:1'b0;
  36. assign vga_g= valid?  (a_dis|b_dis|c_dis|d_dis):1'b0;
  37. assign vga_b= valid?  ~(a_dis|b_dis|c_dis|d_dis):1'b0;
  38. endmodule

复制代码


然后,我们将代码编译,并烧写到锆石A4 FPGA开发板上,
找一根合适的VGA线材接入到锆石A4 FPGA开发板的VGA接口中,
重新上电锆石A4 FPGA开发板,以开始运行VGA刷写显示代码,


我们可以看到上电后先是完全的黑屏,然后从左上角顶部开始向下刷写白色,
由于锆石A4 FPGA开发板的运算速度极快,
即使反应很快的人类也只能看到白色从上到下被载入,
试着放慢过速率,还是快到转瞬刷白,
每行的从左到右如果想观察的话,可以借助高速相机,
或者按照开发者什么都自己做的行事风格,
再买块锆石A4 FPGA开发板,写个高速相机的软件,
用FPGA的速度捕捉FPGA的速度,
大概上电后零点几秒就全白了,效果如下


然后按右侧实体按键的第二个键,全红


然后第三个键,左上角有小字,字库已经用了双点像素,普通屏幕轻松看到,如果是视网膜屏贴近了即可看清



然后是第四个键,从白刷黑的感觉很舒服,感觉整个屏幕的像素都被抚平


下一篇:实时互动检测电路的实现


资料很不错,值得收藏

感谢您的支持                                             

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top