VGA的输出应用
时间:10-02
整理:3721RD
点击:
今天,我们来进行锆石A4 FPGA开发板的VGA输出应用

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

.

然后是代码方面:
实现最基本功能的参考范例:
- module Main(
- CLK,
- VGA_HS,
- VGA_VS,
- VGA_R,
- VGA_G,
- VGA_B
- );
- input CLK;
- output VGA_HS,VGA_VS, VGA_R, VGA_G, VGA_B;
- reg[10:0] x_counter;
- reg[10:0] y_counter;
- reg [3:1] GRBX;
- initial begin
- x_counter = 0;
- y_counter = 0;
- end
- // Always block to drive drawing, {front|back}-doors, and syncs.
- always @(posedge CLK) begin
- if(x_counter == 1055)
- begin
- x_counter = 0;
- if(y_counter == 627)
- y_counter = 0;
- else
- y_counter = y_counter + 1;
- end
- else
- x_counter = x_counter + 1;
- end
- always @(x_counter or y_counter)
- begin
- 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));
- //RGB像素点的赋值
- assign vga_r= valid?e_rdy:1'b0;
- assign vga_g= valid? (a_dis|b_dis|c_dis|d_dis):1'b0;
- assign vga_b= valid? ~(a_dis|b_dis|c_dis|d_dis):1'b0;
- endmodule
然后,我们将代码编译,并烧写到锆石A4 FPGA开发板上,
找一根合适的VGA线材接入到锆石A4 FPGA开发板的VGA接口中,
重新上电锆石A4 FPGA开发板,以开始运行VGA刷写显示代码,

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

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

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

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

下一篇:实时互动检测电路的实现
资料很不错,值得收藏
感谢您的支持
