有关FPGA的毕业论文(8)

2019-02-20 20:43

天津工业大学本科毕业论文 第四章 [XXXX...]

因此,图像显示的程序设计示意图大体如图4-10所示:

图4-10 图片显示流程图

在实际操作时,发现GDRAM的显示方式与DATASHEET上不同。 首先,直接将数据给GDRAM并将其显示后发现屏幕上有非常多的杂点,因此在对其进行写入正式数据前,必须将其清0。

其次当将32个8位数据写入GDRAM后,Y地址不变,需要人为将其设定为下一行,X地址自动加1。但是之后X地址并不是从0开始到15,而是从1开始到15,在跳到0。第三行的情况则是X从2到15,然后是0-1。因此发现X的地址不断在往前移位。

同时,由于GDRAM缓冲区特殊的分行显示方式,和普通取模软件从图片最上开始直接到最底部的取模方式不同。

若初始的数据如图4-11所示:

天津工业大学本科毕业论文 第四章 [XXXX...]

0 10 20 30 …. 1 1 1 1 12 22 32 2 13 23 33 3 14 24 34 4 15 25 35

5 16 26 36 6 17 27 37 7 18 28 38 8 19 29 39 9 123 图4-11 欲显示数据

则直接按普通寻址方式输入数据后,显示的结果如图4-12所示:

0 39 … 10 29 … 0 1 31 0 12 32 1 21 13 33 2 22 14 34 3 23 15 35 4 24 16 36 5 25 17 37 6 26 18 38 7 27 19 38 28 19 2图4-12 实际显示数据

这显然不是我们要的结果,因此,如果想让图片在LCD上正常显示,有两种方式。

第一种是在图片进行取模后,通过电脑中编写的特殊程序对其进行处理。但是这种方法有可能使之后的开发过于依赖上位机,因此这里采用第二种方法。

第二种方法是将图片取模后的数据直接放入ROM中,但是在对ROM进行读取数据时,按照特定的算法进行读取,最后使图片正常显示。

天津工业大学本科毕业论文 第四章 [XXXX...]

具体操作方式如下 A)换行的算法:

设定一个计数器counter,使其每次进行写RAM操作时加1。当counter等于31+j的时候则进入设置GDRAM的换行状态,同时j加32。如此久完成了换行的过程。

B)上下半屏的合并算法:

再设置另一个0到31的计数器r_counter,每次进行写RAM操作时加1。J1为另一个计数器。寻址的地址为r_counter与j1的和。当r_counter在0到15时,则正常寻址,每换一行j1需要加16。如果r_counter大于15,那么寻址时C需要在原来的基础上加上512-16。同理,在换行后,寻址时j1也要再加上16。

C)X地址向前移位的处理:

同样的计数器r_counter,每次换行后在原来的基础上加上2,如此即可解决所有问题。

程序设计示意图如图4-13所示,其中,r_counter为5位的2进制数,范围为0到31

图4-13 改进后的图片显示控制流程图

特殊寻址的核心程序如下:

char_address<= conv_std_logic_vector(j1,10)+r_counter when state = WRITERAM and r_counter<\

天津工业大学本科毕业论文 第四章 [XXXX...]

conv_std_logic_vector(j1+496,10)+r_counter when state = WRITERAM and r_counter>\…

进程部分:

首先要对DDRAM进行清0,这个步骤只需要考虑换行,不需要对X的地址的移位做考虑: …

when CLEARRAM=>

if counter1=j+31 then --由于X地址范围0到16每一位地址包含2个8位

state<=SETGDRAMY; --2进制数据,因此每32个数据Y地址加1 counter1<=counter1+1; --清0计数器,共计1024次 j<=j+32; --换行指示器 gd_addr<=gd_addr+1; --Y地址加1 flag_r<='0'; elsif counter1<1024 then

state<=CLEARRAM; counter1<=counter1+1; else

counter1<=0; r_counter<=\j<=0; gd_addr<=0; flag_r<='1';

state<=SETGDRAM1; end if;

以上为清0程序。

以下为正式的图像写入程序: when WRITERAM=>

if counter=j+31 then --同清0程序一样原理,当J为32的倍数时换行

state<=SETGDRAMY; j<=j+32;

j1<=j1+16; --J1用作寻址时的累加器

counter<=counter+1; --COUNTER共1024次,共需写入1024个数

天津工业大学本科毕业论文 第四章 [XXXX...]

gd_addr<=gd_addr+1; --Y地址加1 flag_r<='1'; i<=\

r_counter<=r_counter+1; --5位的R_COUNTER解决了X地址移位的问

elsif counter<1024 then

state<=WRITERAM; r_counter<=r_counter+1; counter<=counter+1; else

counter<=0; flag_p<='1';

state<=SETFUNCTION1; end if;

when SETGDRAM2=> state<=SETGDRAMY;

when SETGDRAMY=> --换行状态 if flag_r='1' then

state<=WRITERAM;

r_counter<=r_counter+”10”; --R_COUNTER每当Y地址加1也跟随往 else --前移2位,使得ROM的数据与屏幕

state<=CLEARRAM; --同步 end if; …

通过这系列算法的调整,可以使任意128*64像素的图片在取模后正常在LCD上显示。

4.4字符显示及图片显示整体模块设计

字符显示的整体模块的功能包括任意中文字符及英文字符在12864-12屏幕上的任意位置的显示,同时还要显示动态数据的变动。这里的动态数据为一个0到15的计数器。字符显示整体模块的BLOCK DIAGRAM如图4-14所示:


有关FPGA的毕业论文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:单因变量方差分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: