您的当前位置:首页正文

实验17VGA动态时钟显示电路

来源:个人技术集锦
实验十七 VGA动态数字时钟显示设计

一.

1. 2.

实验目的

掌握VGA动态数字时钟显示设计 学会灵活运用ROM方法

二. 实验原理

在VGA静态图像显示设计中,我们使用ROM存储图像数据,根据查表所得到的数据,平铺显示一个图片。本实验是把数字时钟的显示在VGA显示器上,显示格式为00:00:00,分别为hr:min:sec,待显示的数据是动态变化的,如何能正确显示?需要有正确的设计思路。

在显示器上显示数字,其实仍然是显示图片,每个数字对应“一个”图片,共有11个图片(0~9和冒号),为了方便起见,这些图片都是黑白的,且我们对显示器仍然采用640*480的分辨率,我们把图像显示在显示器的正中间位置;故每个数字图片的最大的宽度为80像素。对于数字来说,一般采用高度是宽度的2倍,显示效果比较美观;同时为了方便处理,我们把每个数字的图片选为2N个像素;综合所使用的FPGA的ROM空间大小一起考虑,我们采用每个数字图片的分辨率为32*64。显示器上一共显示“8个”数字图片,故显示区域为HCNT为192~447,VCNT为208~271,其余区域一直为黑色。ROM的数据宽度为1位。

同样采用类似平铺的思路,我们把HCNT-192(记作HROMOUT)和VCNT-208(记作VROMOUT)的值作为待显示图片ROM的地址的低5位和高6位。这样我们可以在显示区域平铺显示8个相同的一个数字图片。

如何分别在8个32*64的区域(从左到右记作A0~A7)显示不同的8个图片呢?这和数码管扫描显示电路一样,以小时的十位数为例(设待显示数据为1),数码管扫描显示电路是在把1译码后通过片选显示在A0数码管上;而本设计需要把1对应的图片显示在HROMOUT为0~31、VROMOUT为0~63的区域上,而8个32*64的区域也也就对应8个数码管;扫描显示是有一个8进制的计数器CNT8驱动扫描显示的状态,CNT8为0~7,分别对应输出8个待显示数据和相应的片选信号,在本设计中,这个CNT8就是HROMOUT[7..5]。当HROMOUT[7..5]=0时,即需要显示A0区域,要选择小时的十位的数字所对应的图片;当HROMOUT[7..5]=1时,即需要显示A1区域,要选择小时的个位的数字所对应的图片……需要11个数字或字符图片,这样需要11个ROM,比较麻烦,我们把ROM合成在一个ROM中,其顺序为0的逐行的数据,然后是1的逐行数据,最后是冒号的逐行数据,其地址ADDR宽度为15位。那么根据HROMOUT[7..5]所代表的显示区域编号,选择出待显示的数字,这就对应这就是ADDR的高4位。这样根据行计数器和场计数器就可以把待显示的数字所对应的图片数据显示在屏幕上了。

制作MIF文件比较麻烦,首先要逐行取模,且高位在前。即保证输出的第一个点是左上方处的那个像素点;一般的字模软件都是8个点取模的,结果是16进制的数据,需要转换为2进制的数据,根据MIF文件的格式,编写需要的C程序或其他程序进行转换。

如果需要对某一个区域闪烁显示(假设为1Hz),就是亮灭的显示,灭可以当做一个“全黑”的图片,在这里就是使用一个二选一模块,使用占空比为1:1的时钟信号作为选择信号,对待显示数据和“全黑”数据的地址代码进行片选即可实现。

三. 实验步骤

1、 新建工程

新建文件夹,在该文件夹下新建工程VGA_CLK。

38

2、 编写底层HDL文件,并生成相应的symbol

3、 使用宏功能元器件生成PLL锁相环模块,产生25MHz的频率。 4、 生成ROM模块,制作mif文件。 5、 完成顶层文件,并进行编译 6、 锁定管脚,重新编译 PLL1PIN_17VGA640480OUTPUTHSCLK48MINPUTVCCinclk0inclk0 frequency: 48.000 MHzOperation Mode: NormalClk RatioPh (dg)DC (%)c025/480.0050.00c0CLKRGBINHSVSRGBOUT[7..0]HCNTOUT[9..0]VCNTOUT[9..0]HROM[9..0]HROMOUT[9..0]VROMOUT[9..0]VROM[9..0]OUTPUTOUTPUTPIN_15VSRGB[7..0]PIN_28instCycloneinst1P[3..0],VROM[5..0],HROM[4..0]DATAROM1address[14..0]1 bit32768 wordsq[0]SCANLEDHROM[7..5]PIN_14PIN_16PIN_18PIN_20PIN_23PIN_41PIN_43PIN_45SEL[2..0]DIN[31..0]D[31..0]DIG[7..0]DSEL[3..0]P[3..0]CLK48Mclockinst6Block type: AUTOinst22ParameterValueF_DIV120000F_DIV_WIDTH17int_divCLK48MClockinCnt[f_div_width-1..0]ClockOut400HZinst7inst10CNT8400HZCLKQ[2..0]D[31..0]inst11inst12SEL[2..0]DIN[31..0]SCANLEDint_divParameterValueF_DIV400F_DIV_WIDTH9PIN_160PIN_159PIN_162PIN_161PIN_215PIN_216PIN_213PIN_214ClockinCnt[f_div_width-1..0]ClockOut1HZDIG[7..0]DSEL[3..0]OUTPUTDIG[7..0]DECODE72DIN[3..0]DOUT[7..0]OUTPUTSEG[7..0]cnt10inst13D[3..0]cnt6D[7..4]clkenrstinst17cnt[3..0]coPIN_122ENRSTINPUTVCCINPUTVCC1HZclkenrstinst15cnt[3..0]coPIN_169PIN_170PIN_167PIN_168PIN_165PIN_166PIN_163PIN_164PIN_121cnt10D[15..12]clkenrstinst16cnt[3..0]coclkenrstinst18cnt24D[31..24]clkenrstinst19cnt[7..0]coinst20cnt[3..0]cocnt6D[19..16]lpm_constant0104D[23..20]MUX2_1data1x[3..0]data0x[3..0]inst3result[3..0]D[11..8]sel1hZlpm_constant211inst24 39

7、 连接显示器,进行下载,观察效果

实验箱上的VGA接口的连线没有连通,需要使用导线把锁定的管脚(核心板PACK模块的插针)按顺序连接到VGA_COM的相应插针上。 进行下载,观察显示效果。

四. 实验参考程序

程序清单 VHDL程序

Verilog HDL 程序:

40

因篇幅问题不能全部显示,请点此查看更多更全内容