有关FPGA的毕业论文(7)

2019-02-20 20:43

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

图4-6字符RAM示意图

4.2.2中文字符部分的数据模块

中文部分的实现原理与英文部分大体相同,但是由于VHDL中无法识别中文,因此在使用上不可能做到和英文一样方便。使用时需要参照中文字符表,将需要的字符所对应的数据输入RAM,然后通过和英文模块不重复的符号来实现对其的调用。如 “测”这个中文字符,所对应的数据为16#B2E2,因此在函数部分应为:

when '@' => result := 16#B2#; when '#' => result := 16#E2#;

调用时的只需将@和#这两个符号来代替中文字符即可

when \when \

4.2.3图片部分的数据模块

图片部分的数据模块采用ROM的形式对其进行存放和读取。ROM为QUARTUS II的自带模块,大小为8*1024位,含一个使能端。ROM中的图像数据需要通过图像取模软件对图像进行取模,然后把取模得到的数据以MIF文件的形式赋给ROM。然后通过显示控制模块对ROM进行读取操作。

4.3 显示控制模块设计 4.3.1字符显示模块设计

文本显示RAM(DDRAM)提供8X4行的汉字空间。每个单元所对应的DDRAM值如表4-1所示:

天津工业大学本科毕业论文

表4-1 DDRAM相应值对应屏幕位置

第四章 [XXXX...]

在设定完起始的DDRAM值后,使用了一个计数器COUNTER,每经过一个写RAM状态,COUNTER自动加1。这个COUNTER经过转换后作为写入数据模块的RAM的输入地址,同时将这个COUNTER映射到DDRAM上。随着COUNTER的不断加1操作,写入数据模块的RAM中的内容被一个个输出到DDRAM所对应的屏幕的相应位置,而屏幕中的位置也在不断移动。这样一组数据就可以完整地显示在LCD现实屏上了。

如果需要显示多组数据在屏幕的不同位置,则需要提前计算好每组字符的字数,然后设定当字符数达到要求后,跳转至设定DDRAM值的,也就是屏幕上所对应位置的状态,然后如此反复就可以讲所需内容完整地显示出来。

对应的程序设计示意图如图4-7所示:

图4-7 显示控制模块设计流程图(字符)

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

假定要在屏幕上显示1组4个汉字组成的字符以及2组8个英文字符组成的字符,则程序如下 …

when SETDDRAM1=> state<=WRITERAM; when WRITERAM=>

if counter = 7 or counter = 15 then --这里假定要在屏幕上显示3组

state<=SETDDRAM1; --长度均为8位的数据 position<=position+1; --因此需2次改变显示位置 counter<=counter+1;

elsif counter < 24 then --总共共计24个16进制数据

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

counter<=0; state<=IDLE; end if; …

如此久可以再屏幕上的第一行的居中位置和第二、第三行的最左边分别显示写入数据模块RAM中的第1到8,9到16,17到24个字符。

4.3.2动态数据显示控制设计

动态数据的现实则是根据输入的变化,将其反应到写入数据模块的RAM中,使其反馈对应的数据。同时每进行一个写RAM状态后,便跳入设置DDRAM状态,将DDRAM值始终设为同一个,即屏幕上的同一位置,之后再次进入写RAM状态,如此循环,就可以看到数据的不断变化。由于显示的基本原理相同,但是显示的内容却有千万种,因此在程序的编写上也会有无数种方式。基于这种原因,这里只用一个简单的0到15的计数器来做说明。

动态数据部分设计流程如图4-8所示:

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

图4-8动态数据部分设计流程图

在显示控制模块中,每过1个时钟信号,模块就会读取一次外部的数据,并把数据输入模块处理。主要工作室把外部数据数据分解为每一位上的十进制数据。同时输出信号到输入显示RAM,并调用返回的数据在屏幕上显示。同时,每次显示的时候,屏幕上显示的位置会自动重置,确保每次显示都能覆盖上次的显示,也就实现了动态数据的更新显示。 部分核心程序如下: …

when WRITERAM1=>

if counter_a='0' then --counter_a为2值变量,确保每次在屏幕上显示2 state<=WRITERAM1; --个16*8的数据 counter_a<='1';

if stream>\ --判断输入数据是否大于9 addr<=\ --对应数据RAM中的字符“1” else

addr<=\ --对应数据RAM中的字符“0” end if; --以上是十位数字的显示 else

if stream>\ --判断数据是否大于9 stream1<=\ --个位显示X-10的数据 else

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

stream1<=\ --个位数据直接显示 end if; --以上是个位数字的显示 state<=SETDDRAM2; --下一个状态为重置显示位置 counter_a<='0'; end if;

when SETDDRAM2=> state<=WRITERAM1; …

4.3.3图像数据显示控制设计

绘图显示RAM提供128X8个字节的记忆空间,在更改绘图RAM时,先连续写入水平与垂直的坐标值,再写入两个字节的数据到绘图RAM,而地址计数器(AC)会自动加一;在写入绘图RAM的期间,绘图显示必须关闭,整个写入绘图RAM的步骤如下:

1) 关闭绘图显示功能

2) 先将水平坐标(X)写入绘图RAM地址; 3) 再将垂直坐标(Y)写入绘图RAM地址; 4) 将D15-D8写入到RAM中; 5) 将D7-D0写入到RAM中; 6) 打开绘图显示功能; 绘图显示的缓冲区如图4-9所示:

图4-9 图像显示缓冲区坐标对应屏幕位置


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

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

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

马上注册会员

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