摘要:根据VGA(Video Graphic Array)的原理[1],采用VHDL硬件描述语言,设计了一种基于Zedboard FPGA板卡的图像显示方案。实验结果表明,在FPGA实现图片显示,达到了预期的效果,依据该原理,可以实现图像的采集及在VGA显示屏上显示的实现。
引言
利用FPGA产生VGA时序信号和发送图像信息,并将其作为图像信号采集系统,将大大减小图像开发的难度和投入[2]。显示器的显示有许多标准,常见的有VGA、 SVGA等。在本设计中,设计了一种基于Xilinx公司7系列FPGA的VGA图像显示控制器,并在Zedboard板卡上进行了测试,并成功地在显示器上显示了企鹅的头像。利用该原理,可以脱离PC机实现图像显示的功能,减少成本投入。
VGA的原理
VGA作为一种标准的显示接口得到了广泛的应用。常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由R、G、B (红: Red、绿: Green、蓝:B1ue)三色组成。显示是采用逐行扫描的方式,阴极射线q发出的电子束打在涂有荧光粉的荧光屏上,产生RGB三基色,最后合成一个彩色图像[3]。在VGA接口协议中,不同的显示模式因为有不同的分辨率或不同的刷新频率,所以其时序也不相同[4]。对于每种显示模式的时序,VGA都有严格的工业标准。图1、图2为VGA行扫描、场扫描的时序图。
图片显示原理
首先利用Image2lcd软件,将我们所需要的图片转换为二进制的文件,需要注意的是对于不同的VGA接口设计方式,需要转换的文件格式也是不一样的,在这里,设置生成256色的图片文件。
图片显示需要将图片的信息发送到VGA接口,该设计采用的方案是在对像素进行计数、场计数的时候,就把图片信息直接赋值给颜色信号R、G、B,需要对图片的显示像素一一判断对应的位置。
FPGA系统的实现
在这里我们采用Zedboard板卡作为控制核心,其板卡的VGA接口原理图如图3所示。
时序信号
Zedboard提供了50MHz的时钟信号,VGA 显示需要的是 25.175 MHz的时钟, 所以在设计时首先要对时钟信号进行二分频,得到 25 MHz 的时钟频率。我们采用分频后的信号作为HS和VS的时序信号。其VHDL程序设计如下:
process(clk_25M) --此处实现的在分频信号下,产生场扫描和行扫描的信号
begin
if clk_25M'event and clk_25M='1'
then
if(hclk=800) then hclk<=0;
else hclk<=hclk+1;
end if;
if hclk>=656 and hclk<752 then
hs1<='0';
else hs1<='1';
end if;
end if;
end process;
process(hs1)
variable cnt :integer range 0 to 1000
:=0;
begin
if hs1'event and hs1='0' then
if vclk=524 then vclk<=0;
else vclk<=vclk+1;
end if;
if vclk >= 491 and vclk<492 then
vs1<='0';
else vs1<='1';
end if;
end if;
end process;
图像显示
首先需要定义一个寄存器数组来存储图像。
type data_buffer is array(0to 22499) of std_logic_vector(7downto 0);
constant buf:data_buer:=(⋯⋯--在此定义一个150×150的图片信息);
在产生的场、行扫描信号的基础上进行图像的输出控制,显示位置在矩形(100,100, 250,250)的矩形内。其控制程序如下所示。
process(clk,vclk,hclk)
begin
if clk'event and clk='1' then—控制信号在矩形内输出
if( vclk>=100 and vclk<250 and
hclk>=100 and hclk<250 ) then
d a t 1 < = b u f ( ( v c l k -
100)*150+(hclk-100));
else dat1<="00000000";
end if;
end if;
图像输出
利用Zedboard的VGA接口进行数据和时序信号的输出。
hs<=hs1;
vs<=vs1;--行、场信号输出
dat<=data1;--数据输出
结束语
利用FPGA控制VGA进行图像的输出,克服了以往必须使用PC机作为控制的弊端,减少了成本的投入。依据本设计的原理,可以采用FPGA的FIFO的IP核作为数据的存储单元,实现动态图像的显示,对于实现小型控制系统具有重要的意义。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)