字符发生器Word文档格式.docx
- 文档编号:19793990
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:19
- 大小:1.26MB
字符发生器Word文档格式.docx
《字符发生器Word文档格式.docx》由会员分享,可在线阅读,更多相关《字符发生器Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
为了效果明显,这里选择256倍。
4.4.2864EEPROM存储器是一个电可擦除、编程的只读存储器,容量为8K×
8BIT,由13位并行地址线和8位并行数据线,而一个完整的字符所需的存储空间为32字节即32×
8BIT,也就是说2864最多可连续存256个16×
16点阵字形,存储方式可事先约定好。
在此电路中的作用是存储“天津城市建设学院”八个字.在AD[6..0]输入相应的地址时读取EEPROM中的相应的数据,然后在输出端L[15..0]输出。
在时钟脉冲的作用下,地址计数器计数,EEPROM相对应的地址单元中的代码输出,以驱动列选通线产生电路。
地址计数器同时又为行选通线产生电路,地址随着地址计数器计数值的变化,显示屏上显示出字符或图案。
由于我们所编的程序是包含八个汉字的字库,所以当全速运行时LED点阵模块上会显示对应的汉字。
第三章模块介绍
3.1八进制计数器
地址计数器是用来实现汉字翻页功能的,因为有八个要输出的汉字,因此用一个八进制的计数器进行计数,八个状态,采用三根地址线。
八进制计数器的输入一个是汉字选择时钟频率,另一个则是rst即置零端,输出为AD[2]、AD[1]、AD[0],输出的地址范围为000~111共八个地址以便进行汉字的翻页。
八进制计数器模块:
图2AND1
图2八进制计数器
图3八进制计数器仿真波形
仿真分析:
由仿真图分析可知,输出d[2],d[1],d[0]当遇到下降沿时触发,将从"
000"
一直变化到"
111"
即一个脉冲周期结束返回,由此可证明此模块正确为八进制计数器.
调试方法:
观察触发沿改变后d[2]~d[0]的输出是否从000加到111,若不是这样证明八进制计数器做的有错误。
表1八进制计数器真值表
clk
d2
d1
d3
rst
1
2
3
4
5
6
7
3.2十六进制计数器
每个汉字是由16行和16列组成,每次程序执行都是从左往右点亮一列LED点阵,一个汉字要执行16次这样的程序才能完整的显示出来,所以我们就需要一个16进制的计数器。
十六进制计数器的原理与八进制的相似,输入为扫描频率clk和rst,输出为到d3-d0,四位地址线可以选择16个地址输入到ROM中,并且这个十六进制计数器的输出还要与16×
16LED点阵的片选端相连,即SEL3~SEL0,实现对LED点阵的扫描。
十六进制计数模块:
图4十六进制计数器
表2十六进制计数器真值表
Clk
d0
8
9
10
11
12
13
14
15
图5十六进制计数器仿真波形
仿真分析:
由仿真图分析可知,输出d[3]~d[0]当遇到上升沿时触发,将从"
0000"
1111"
即一个脉冲周期结束返回,由此可证明此模块正确为十六进制计数器.
调试方法:
观察触发沿改变后d[3]~d[0]的输出是否从0000加到1111,若不是这样证明十六进制计数器做的有错误。
3.3分频器
分频器主要作用是使八进制计数器的时钟和十六进制的时钟相差一定倍出。
分频器模块:
图6分频器
波形分析:
clk输入十六个时钟,clk1输入一个时钟
图7分频器仿真波形
3.4存储器
存储器在本系统中有很重要的作用,字符发生器所显示的所有字符都是事先存在ROM中已建立的字符库中,并且它还是联接计数器与LED点阵模块的桥梁。
八进制计数器输出的高三位地址和十六进制计数器输出地低四位地址共同构成存储器ROM的输入地址,根据输入地址和ROM中字库代码的对应关系,最后输出一列16位的LED驱动代码,通过毎十六次输出就显示一个汉字。
在设计ROM时,根据ROM的大小,我们可以采用不同的设计方法进行设计,比如4x8,8x8或256x8的ROM可以采用数组描述或WHEN-ELSE.然而数组描述ROM在面积上是最有效的,在用数组描述时,常把数组常量的ROM放在一个程序包中,这种方法可以提供ROM的重用,在程序包中应当用常量定义ROM的大小.而用WHEN-ELSE描述一个ROM,它确实是最直观的,它是类似查表的方法来设计的,本次设计就是一个用WHEN-ELSE设计的256x8的ROM.
存储器模块:
图8ROM
第四章调试与仿真
3.1顶层文件原理图
顶层文件原理图:
图9顶层文件原理图
3.2仿真波形
为了确保便于观察,系统仿真时采用的总时长是500ms,时钟周期为2ms。
系统仿真波形:
图10系统仿真波形
1.由仿真图分析可知,输出d[3]~d[0]当遇到上升沿时触发,将从"
1.有图可观察出CR端给低电平时,输入地址d[6]~d[0]给的是“0010000”时对应输出的L15~L0为“1110000001000010”,这与ROM中程序完全一致,可以得出ROM模块也是正确的。
若输出L15~L0不是字库中对应的代码,则证明ROM设计有错误。
第五章心得体会
今年我们学习了EDA,每一次上课,每一次实验我都会学到很多知识。
通过实验也实际操作了EDA的Quartus软件,对于EDA有了更深的认识和自己的理解。
最后一周的这个EDA课程设计是对我们的知识的掌握和软件应用的一次检阅和练兵。
通过这次试验我充分的认识到我的EDA知识还没有储备的很充足,只掌握了最最基本的,而且对于软件的使用上还有很多不熟悉和不明白的地方。
在做课设期间,我和同学一起研究,最后在同学和老师的帮助下完成了我的课题——字符发生器。
我觉得这是一个很美妙的事情,看到点阵上出现一个接一个的字符,我心情无比激动。
世界上还有什么事情比看到这个景象还要让我开心的呢?
在做字符发生器的课设的时候,我遇到了很多困难。
程序的设计,设计思路还有具体的器件调用上都存在着很多问题,但是在同学的帮助下终于将这些问题一一克服掉了。
不论可设的最后结果如何,我是由衷的享受这个过程,因为我的确是学到了知识。
最后在这里要感谢老师,因为在你的课上我不仅学到了知识,也学习了做人的大道理。
同样要感谢那些帮助过我的同学,没有你们,我可能就做不出来我的字符发生器。
谢谢你们。
实际效果图
附录
生成八进制计数器件程序:
modulecounter8(clk8,d0,d1,d2,rst8);
inputclk8,rst8;
outputd0,d1,d2;
reg[2:
0]counter;
always@(posedgeclk8ornegedgerst8)
begin
if(!
rst8)
counter<
=0;
elsecounter<
=counter+1;
end
assignd2=counter[2];
assignd1=counter[1];
assignd0=counter[0];
endmodule
生成十六进制器件程序:
modulecounter16(clk8,d0,d1,d2,d3,rst8);
outputd0,d1,d2,d3;
reg[3:
always@(posedgeclk8ornegedgerst8)
assignd3=counter[3];
十六分频器设计程序:
modulecount1(clk,clk1);
inputclk;
outputclk1;
reg[4:
0]count;
always@(posedgeclk)
count<
=count+1;
assignclk1=count[4];
ROM程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityROMisport
(CR,A6,A5,A4,A3,A2,A1,A0:
instd_logic;
L15,L14,L13,L12,L11,L10,L9,L8,L7,L6,L5,L4,L3,L2,L1,L0:
outstd_logic);
end;
architecturearc_ROMofROMis
signaldin:
std_logic_vector(6downto0);
signaldout:
std_logic_vector(15downto0);
din<
=A6&
A5&
A4&
A3&
A2&
A1&
A0;
process(din)
begin
if(CR='
0'
)then
casedinis
when"
0000000"
=>
dout<
="
0000000000100001"
;
--1
0000001"
0110000000100010"
--2
0000010"
0001000000100010"
--3
0000011"
0000100000100010"
--4
0000100"
0000010000100010"
--5
0000101"
0000001000100010"
--6
0000110"
0000000100100010"
--7
0000111"
0000000010100010"
--8天
0001000"
0000000001111110"
--9
0001001"
--10
0001010"
0000000101100010"
--11
0001011"
--12
0001100"
--13
0001101"
0001100000100010"
--14
0001110"
0011000000100010"
--15
0001111"
0111000000100000"
--16
0010000"
1110000001000010"
0010001"
0110000110001100"
0010010"
0010000000000000"
0010011"
0010000000100000"
0010100"
0010010100100100"
0010101"
0010110"
0010111"
1111111111111111"
--8津
0011000"
0011001"
0011010"
0011011"
0011100"
0011101"
0011110"
0010010111111110"
0011111"
0100000"
0000000000000000"
0100001"
0100000001000000"
0100010"
0010000010000000"
0100011"
0011111111110000"
0100100"
0100101"
0001000000000000"
0100110"
0111111111110000"
0100111"
0010000010001000"
--8
0101000"
0000100010001000"
--9城
0101001"
0001111110011110"
0101010"
0000001001101000"
0101011"
0000000110001000"
0101100"
0000011000100100"
0101101"
0101110"
0000100000000000"
0101111"
0110000"
0110001"
0110010"
0110011"
0001111111110000"
0110100"
0000000000001000"
0110101"
0110110"
0000000000001001"
0110111"
1111111111111110"
0111000"
--9市
0111001"
0000100000001000"
0111010"
0111011"
0111100"
0111101"
0111110"
0111111"
1000000"
1000001"
0000010000001000"
1000010"
0100100100001111"
1000011"
0011111011111000"
1000100"
0010000000100010"
1000101"
0100010100100100"
1000110"
0101010100100100"
1000111"
1001000"
0111111111111111"
--9建
1001001"
1001010"
1001011"
0100000011111000"
1001100"
0100000000100000"
1001101"
1001110"
1000000000000000"
1001111"
1010000"
1010001"
0000000000010001"
1010010"
0000000000011110"
1010011"
1010100"
1010101"
0100000000010000"
1010110"
0100000111011111"
1010111"
0010110001000001"
1011000"
0001110001000001"
--9设
1011001"
0010000111011111"
1011010"
1011011"
0100000000000000"
1011100"
1011101"
=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符 发生器