EDA实验报告.docx
- 文档编号:14800548
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:22
- 大小:105.13KB
EDA实验报告.docx
《EDA实验报告.docx》由会员分享,可在线阅读,更多相关《EDA实验报告.docx(22页珍藏版)》请在冰点文库上搜索。
EDA实验报告
课程设计报告
课程名称数字系统与逻辑设计
课题名称16*16点阵显示
专业通信工程
班级
学号
姓名
指导教师乔汇东吴德建
2013年7月2日
湖南工程学院
课程设计任务书
课程名称数字系统与逻辑设计
课题16*16点阵显示
专业班级
学生姓名
学号
指导老师乔汇东吴德建
任务书下达日期2013年6月23日
任务完成日期2013年7月2日
《数字系统与逻辑设计》课程设计任务书
一、设计目的
全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
二、设计要求
1、设计正确,方案合理。
2、程序精炼,结构清晰。
3、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
4、上机演示。
5、有详细的文档。
文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。
三、进度安排
第十八周星期一:
课题讲解,查阅资料
星期二:
总体设计,详细设计
星期三:
编程,上机调试、修改程序
星期四:
上机调试、完善程序
星期五:
答辩
星期六-星期天:
撰写课程设计报告
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现;四、系统调试与仿真;五、总结与体会;六、附件(所有程序的原代码,要求对程序写出必要的注释);七、评分表。
目录
1、16*16点阵显示系统的总体设计1
1.1、问题描述1
1.2、功能描述2
1.3、引角分配2
2、16*16点阵显示的功能实现3
2.1、系统的总体框图3
2.2、程序流程图4
3、系统各功能模块的实现4
3.1、功能键模块的设计4
3.2、控制器模块的设计4
3.3、计数器模块的设计5
3.4、点阵LED显示屏模块的设计6
4、系统调试与仿真6
4.1、系统调试6
4.2、仿真图6
5、总结与体会7
6、附件8
7、评分表18
116*16点阵显示设计
1.1问题描述
本实验主要完成汉字字符在LED上的显示,16*16扫描LED点阵的工作原理与8位扫描数码管类似,只是显示的方式与结果不一样而已。
下面就本实验系统的16*16点阵的工件原理做一些简单的说明。
16*16点阵由此256个LED通过排列组合而形成16行*16列的一个矩阵式的LED阵列,俗称16*16点阵。
单个的LED的电路如下图11-1所示:
图1单个LED电路图
由上图可知,对于单个LED的电路图当Rn输入一个高电平,同时Cn输入一个低电平时,电路形成一个回路,LED发光。
也就是LED点阵对应的这个点被点亮。
16*16点阵也就是由16行和16列的LED组成,其中每一行的所有16个LED的Rn端并联在一起,每一列的所有16个LED的Cn端并联在一起。
通过给Rn输入一个高电平,也就相当于给这一列所有LED输入了一个高电平,这时只要某个LED的Cn端输入一个低电平时,对应的LED就会被点亮。
具体的电路如下图11-2所示:
图216*16点阵电路原理图
在点阵上显示一字符是根据其字符在点阵上的显示的点的亮灭来表示的,如下图11-3所示:
图3字符在点阵上的显示
在上图中,显示的是一个“汉”字,只要将被“汉”字所覆盖的区域的点点亮,则在点阵中就会显示一个“汉”字。
根据前面我们所介绍的点阵显示的原理,当我们选中第一列后,根据要显示汉字的第一列中所需要被点亮的点对应的Rn置为高电平,则在第一列中需要被点亮的点就会被点亮。
依此类推,显示第二列、第三列……第N列中需要被点亮的点。
然后根据人眼的视觉原理,将每一列显示的点的间隔时间设为一定的值,那么我们就会感觉显示一个完整的不闪烁的汉字。
同时也可以按照这个原理来显示其它的汉字。
下图11-4是一个汉字显示所需要的时序图:
图4显示时序图
1.2功能描述
本实验的示例程序依次显示的是“湖南工程学院”,要求每隔一秒换下一个字显示。
1.3引角分配
16×16点阵LED模块
16×16点阵信号名称
FPGA引脚
说明
DOT-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
216*16的点阵显示的功能实现
2.1系统的总体框图
列驱动
图516*16的点阵显示系统总体框图
2.2程序流程图
图616*16的点阵显示流程图
3系统各功能模块的实现
3.1功能键模块的设计
本模块用一个拨码开关来控制,闭合就代表扫描点阵并显示汉字,断开
就表示停止扫描,不显示汉字。
3.2控制器模块的设计
点阵LED显示的原理就是用高低电平来控制16×16个二极管的点亮或者熄灭,达到显示字的目的,所以先要把要显示的字的十六进制代码编写出来,可用字模提取软件提取。
3.3计数器模块的设计
设计要求每屏汉字要显示一秒,而实验室硬件的频率f=250kHz,所以要求我们对时钟脉冲信号进行计数,当计数器计数达到250000时,控制器模块换下一个汉字。
计数器模块源程序如下所示:
architectureledofVhdl1is
signalq1:
integer:
=0;
signalq2:
integer:
=0;
signalq3:
integer:
=0;
signalq4:
integer:
=0;
signalq5:
integer:
=0;
signalq6:
integer:
=0;
signalq:
integer:
=0;
signalcount:
integer:
=0;
begin
process(clk)
begin
ifclk'eventandclk='1'then
ifcount<255then
count<=count+1;
else
count<=0;
ifq<2thenq<=q+1;
elsecount<=0;
endif;
endif;
endif;
endprocess;
3.4点阵LED显示屏模块的设计
该模块由实验室提供,它以发光二极管为像素。
它通过对16×16个发光二极管设置状态(点亮或者熄灭)来达到显示汉字或数字的目的。
4系统调试与仿真
4.1系统调试
程序仿真完全正确后,线封锁引脚,然后连接硬件,再次编译,没有错误后下载程序到硬件之中,当拨码开关闭合时,得到点阵LED显示结果,其中每个汉字显示时间为一秒,一秒过后自动换下一个汉字,直到显示完“湖南工程学院”,再循环显示以上内容;当拨码开关断开时,点阵LED不显示任何内容。
4.2仿真图
系统仿真中排列的顺序为CLK,L,R:
图716*16的点阵显示仿真图
5总结与体会
6附录
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYVhdl1IS
port(CLK:
INSTD_LOGIC;
ln:
outstd_logic_vector(15downto0);
rn:
outstd_logic_vector(15downto0));
ENDVhdl1;
architectureledofVhdl1is
signalq1:
integer:
=0;
signalq2:
integer:
=0;
signalq3:
integer:
=0;
signalq4:
integer:
=0;
signalq5:
integer:
=0;
signalq6:
integer:
=0;
signalq:
integer:
=0;
signalcount:
integer:
=0;
begin
process(clk)
begin
ifclk'eventandclk='1'then
ifcount<255then
count<=count+1;
else
count<=0;
ifq<2thenq<=q+1;
elsecount<=0;
endif;
endif;
endif;
endprocess;
process(q,q1,q2,q3,q4,q5,q6,clk)
variablec,r:
std_logic_vector(15downto0);
begin
caseqis
when0=>
ifclk'eventandclk='1'then
ifq1<15thenq1<=q1+1;
elseq1<=0;
endif;
endif;
caseq1is
when0=>l:
="0111111111111111";
r:
="0111111111111111";
when1=>l:
="1011111111111111";
r:
="0100000000001000";
when2=>l:
="1101111111111111";
r:
="0010000000001111";
when3=>l:
="1110111111111111";
r:
="0001000010001001";
when4=>l:
="1111011111111111";
r:
="0000000010001001";
when5=>l:
="1111101111111111";
r:
="0100000010001111";
when6=>l:
="1111110111111111";
r:
="0010011111111001";
when7=>l:
="1111111011111111";
r:
="0001000010001001";
when8=>l:
="1111111101111111";
r:
="0000000010001111";
when9=>l:
="1111111110111111";
r:
="0000001111101001";
when10=>l:
="1111111111011111";
r:
="0000101000101001";
when11=>l:
="1111111111101111";
r:
="0001001000101001";
when12=>l:
="1111111111110111";
r:
="0010001111101001";
when13=>l:
="1111111111111011";
r:
="0100000000010011";
when14=>l:
="1111111111111101";
r:
="0100000000100001";
when15=>l:
="1111111111111110";
r:
="0000000000000000";
WHENOTHERS=>l:
="0111111111111111";
r:
="0000000000000000";
endcase;
when1=>
ifclk'eventandclk='1'then
ifq2<15thenq2<=q2+1;
elseq2<=0;
endif;
endif;
caseq2is
when0=>l:
="0111111111111111";
r:
="0000000000000000";
when1=>l:
="1011111111111111";
r:
="0000000001000000";
when2=>l:
="1101111111111111";
r:
="0000000010000000";
when3=>l:
="1110111111111111";
r:
="0001111111111000";
when4=>l:
="1111011111111111";
r:
="0000001000000000";
when5=>l:
="1111101111111111";
r:
="0000010000000000";
when6=>l:
="1111110111111111";
r:
="0000111111111000";
when7=>l:
="1111111011111111";
r:
="0000101000101000";
when8=>l:
="1111111101111111";
r:
="0000100101001000";
when9=>l:
="1111111110111111";
r:
="0000101111101000";
when10=>l:
="1111111111011111";
r:
="0000100010001000";
when11=>l:
="1111111111101111";
r:
="0000101111101000";
when12=>l:
="1111111111110111";
r:
="0000100010001000";
when13=>l:
="1111111111111011";
r:
="0000100010001000";
when14=>l:
="1111111111111101";
r:
="0000000000000000";
when15=>l:
="1111111111111110";
r:
="0000000000000000";
WHENOTHERS=>l:
="0111111111111111";
r:
="0000000000000000";
endcase;
when2=>
ifclk'eventandclk='1'then
ifq3<15thenq3<=q3+1;
elseq3<=0;
endif;
endif;
caseq3is
when0=>l:
="0111111111111111";
r:
="0000000000000000";
when1=>l:
="1011111111111111";
r:
="0000000000001000";
when2=>l:
="1101111111111111";
r:
="0111111111111100";
when3=>l:
="1110111111111111";
r:
="0000000100000000";
when4=>l:
="1111011111111111";
r:
="0000000100000000";
when5=>l:
="1111101111111111";
r:
="0000000100000000";
when6=>l:
="1111110111111111";
r:
="0000000100000000";
when7=>l:
="1111111011111111";
r:
="0000000100000000";
when8=>l:
="1111111101111111";
r:
="0000000100000000";
when9=>l:
="1111111110111111";
r:
="0000000100000000";
when10=>l:
="1111111111011111";
r:
="0000000100000000";
when11=>l:
="1111111111101111";
r:
="0000000100000000";
when12=>l:
="1111111111110111";
r:
="0000000100000100";
when13=>l:
="1111111111111011";
r:
="1111111111111110";
when14=>l:
="1111111111111101";
r:
="0000000000000000";
when15=>l:
="1111111111111110";
r:
="0000000000000000";
WHENOTHERS=>l:
="0111111111111111";
r:
="0000000000000000";
endcase;
when3=>
ifclk'eventandclk='1'then
ifq4<15thenq4<=q4+1;
elseq4<=0;
endif;
endif;
caseq4is
when0=>l:
="0111111111111111";
r:
="0000000000000000";
when1=>l:
="1011111111111111";
r:
="0000010000000000";
when2=>l:
="1101111111111111";
r:
="0000100000000000";
when3=>l:
="1110111111111111";
r:
="0001000011111000";
when4=>l:
="1111011111111111";
r:
="0111000010001000";
when5=>l:
="1111101111111111";
r:
="0001000010001000";
when6=>l:
="1111110111111111";
r:
="0001000011111000";
when7=>l:
="1111111011111111";
r:
="0111111000000000";
when8=>l:
="1111111101111111";
r:
="0001000111111100";
when9=>l:
="1111111110111111";
r:
="0011100000100000";
when10=>l:
="1111111111011111";
r:
="0101010111111100";
when11=>l:
="1111111111101111";
r:
="1001010000100000";
when12=>l:
="1111111111110111";
r:
="1001001000100000";
when13=>l:
="1111111111111011";
r:
="0001000111111100";
when14=>l:
="1111111111111101";
r:
="0001000000000000";
when15=>l:
="1111111111111110";
r:
="0000000000000000";
WHENOTHERS=>l:
="0111111111111111";
r:
="0000000000000000";
endcase;
when4=>
ifclk'eventandclk='1'then
ifq5<15thenq5<=q5+1;
elseq5<=0;
endif;
endif;
caseq5is
when0=>l:
="0111111111111111";
r:
="0010001000001000";
when1=>l:
="1011111111111111";
r:
="0001000100001000";
when2=>l:
="1101111111111111";
r:
="0000000000000000";
when3=>l:
="1110111111111111";
r:
="0000000000100000";
when4=>l:
="1111011111111111";
r:
="0111111111111110";
when5=>l:
="1111101111111111";
r:
="0100000000000010";
when6=>l:
="1111110111111111";
r:
="1000000000000100";
when7=>l:
="1111111011111111";
r:
="0001111111100000";
when8=>l:
="1111111101111111";
r:
="0000000001000000";
when9=>l:
="1111111110111111";
r:
="0000000110000100";
when10=>l:
="1111111111011111";
r:
="1111111111111110";
when11=>l:
="1111111111101111";
r:
="0000000100000000";
when12=>l:
="1111111111110111";
r:
="0000000100000000";
when13=>l:
="1111111111111011";
r:
="0000000100000000";
when14=>l:
="1111111111111101";
r:
="0000010100000000";
when15=>l:
="1111111111111110";
r:
="0000001000000000";
W
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验 报告