eda课程设计报告16x16点阵显示大学论文Word格式文档下载.docx
《eda课程设计报告16x16点阵显示大学论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《eda课程设计报告16x16点阵显示大学论文Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
![eda课程设计报告16x16点阵显示大学论文Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/27/d7a4f2c6-c877-4bb1-bfe2-0f26d851b8bb/d7a4f2c6-c877-4bb1-bfe2-0f26d851b8bb1.gif)
Q1
W1
CLK
图2-2电路连接简图
三、功能模块的划分
3.1系统的总体框图
图
3-1模块图
四、主要功能的实现
4.118进制加法器设计
CNT8.vhd是8进制的计数器,其每计一次数,输出一个字。
例如当计数为“000B”时显示“湖”,当计数为“001B”时显示“南”。
给其脉冲周期为1S。
4.2216进制计数器设计
CNT16.vhd是16进制的计数器,其输出端控制行和列驱动控制器的输出数据;
4.3列驱动设计
HANG.vhd为列驱动控制器,该模块控制所亮的行,当输出为0001H时,给点阵的第一行高电平,输出为0010H时,给点阵的第二行高电平,依次类推,逐次给每行高电平。
4.4字体显示控制器
XIANSHI.vhd为字体显示控制器,SHI控制的是所显示的字。
例如当SHI为00H时,表示显示第一个字;
当SHI为01H时,表示显示第二个字,依次类推。
WEI控制所显示的为字的第几行,例如当WEI为0000B时,表示输出字的第一行文字信息;
WEI为0001B时,表示输出字的第二行文字信息,依次类推。
4.5顶层文件设计
JUZHEN16.vhd是顶层文件设计,文件在实体中首先定义了顶层设计元件的端口信号,然后在architecture和begin之间利用component语句对准备调用的元件做了声明,并定义了c,d两个信号作为器件内部的连接线。
最后利用端口映射语句PORTMAP()将两个计数器和列驱动,字体显示驱动连接起来构成一个完整的器件。
五、系统调试与仿真
5.1程序仿真图
图5-1CNT16.vhd仿真波形图
图5-2HANG.vhd仿真波形图
图5.3顶层仿真图
5.216*16LED点阵显示引脚分配
16×
16点阵信号名称
FPGA引脚
说明
DOC-C0
F7
列
DOT-C1
E8
DOT-C2
J8
DOT-C3
G9
DOT-C4
G10
DOT-C5
F11
DOT-C6
F9
DOT-C7
F10
DOT-C8
G2
DOT-C9
F1
DOT-C10
E1
DOT-C11
E2
DOT-C12
D1
DOT-C13
D2
DOT-C14
C2
DOT-C15
B2
DOT-R0
B3
行选择
DOT-R1
C3
DOT-R2
H1
DOT-R3
J2
DOT-R4
L2
DOT-R5
J13
DOT-R6
H15
DOT-R7
V11
DOT-R8
E10
DOT-R9
F12
DOT-R10
E12
DOT-R11
F13
DOT-R12
F14
DOT-R13
E15
DOT-R14
F15
DOT-R015
F16
时钟:
Clk
N1
图5.4引脚分配
5.3程序运行结果
程序仿真完全正确后,线封锁引脚,然后连接硬件,再次编译,没有错误后下载程序到硬件之中,当拨码开关闭合时,得到点阵LED显示结果,其中每个汉字显示时间为一秒,一秒过后自动换下一个汉字,直到显示完“考试必过”,再循环显示以上内容;
当拨码开关断开时,点阵LED不显示任何内容
六、附件
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT8IS
PORT(CLK1:
INSTD_LOGIC;
QOUT:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDENTITYCNT8;
ARCHITECTUREBEHVOFCNT8IS
SIGNALCQI:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
PROCESS(CLK1)
IF(CLK1'
EVENTANDCLK1='
1'
)THEN
CQI<
=CQI+1;
ENDIF;
QOUT<
=CQI;
ENDPROCESS;
ENDARCHITECTUREBEHV;
ENTITYCNT16IS
PORT(CLK:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYCNT16;
ARCHITECTUREBEHVOFCNT16IS
STD_LOGIC_VECTOR(3DOWNTO0);
PROCESS(CLK)
IF(CLK'
EVENTANDCLK='
ENTITYHANGIS
PORT(DATAIN:
INSTD_LOGIC_VECTOR(3DOWNTO0);
ROW:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
ENDENTITYHANG;
ARCHITECTUREBEHVOFHANGIS
SIGNALHANG:
STD_LOGIC_VECTOR(15DOWNTO0);
BEGIN
PROCESS(DATAIN)
CASEDATAINIS
WHEN"
0000"
=>
ROW<
="
1000000000000000"
;
0001"
0100000000000000"
0010"
0010000000000000"
0011"
0001000000000000"
0100"
0000100000000000"
0101"
0000010000000000"
0110"
0000001000000000"
0111"
0000000100000000"
1000"
0000000010000000"
1001"
0000000001000000"
1010"
0000000000100000"
1011"
0000000000010000"
1100"
0000000000001000"
1101"
0000000000000100"
1110"
0000000000000010"
1111"
0000000000000001"
WHENOTHERS=>
0000000000000000"
ENDCASE;
LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYXIANSHIIS
PORT(WEI:
INSTD_LOGIC_VECTOR(3downto0);
SHI:
INSTD_LOGIC_VECTOR(2downto0);
Q:
OUTSTD_LOGIC_VECTOR(15downto0));
ENDXIANSHI;
ARCHITECTUREXIANSHI_architectureOFXIANSHIIS
process(shi,wei)
variableb:
std_logic_vector(15downto0);
begin
caseshiis
When"
000"
caseweiis
when"
=>
b:
1111111111111111"
1011111111110111"
1101111111110000"
1110111011101110"
1111111101110110"
1000000001110000"
0010011111111001"
1110111101110110"
1111111101110000"
1111110000010110"
1111010111010110"
1110110111010110"
1101110000010110"
1011111111011110"
whenothers=>
null;
endcase;
When"
001"
1111111110111111"
1111111101111111"
1110000000000111"
1111110111111111"
1111101111111111"
1111000000000111"
1111011011010111"
1111011010110111"
1111010000010111"
1111011101110111"
010"
1111111111110111"
1000000000000011"
1111111011111111"
1111111011111011"
011"
1111011111111111"
1110111100000111"
1000111101110111"
1110111101110111"
1000000111111111"
1110111000000011"
1100011111011111"
1010101000000011"
0110101111011111"
0110110111011111"
1110111111111111"
100"
1101110111110111"
1110111011110111"
1111111111011111"
1000000000000001"
1011111111111101"
0111111111111011"
1110000000011111"
1111111001111011"
1111101011111111"
101"
1111011110011111"
1110101111101111"
1101110100000001"
1101110011111110"
1100001011000110"
1101001111111111"
1100010111010111"
1101101111010111"
1101111111010111"
1101111110010111"
1101111110110101"
1101111101110000"
whenothers=>
endcase;
q<
=b;
endprocess;
ENDXIANSHI_architecture;
ENTITYJUZHEN16IS
PORT(a,b:
INSTD_LOGIC;
Q1,W1:
ENDENTITYJUZHEN16;
ARCHITECTUREJZ16OFJUZHEN16IS
COMPONENTCNT8
ENDCOMPONENT;
COMPONENTCNT16
COMPONENTHANG
COMPONENTXIANSHI
PORT(WEI:
ENDCOMPONENT;
SIGNALc:
STD_LOGIC_VECTOR(3downto0);
SIGNALd:
STD_LOGIC_VECTOR(2downto0);
BEGIN
U1:
CNT8PORTMAP(CLK1=>
b,QOUT=>
d);
U2:
CNT16PORTM