EDA课程设计报告.docx
《EDA课程设计报告.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
EDA课程设计报告
课程设计报告
课程名称数字系统与逻辑设计
课题名称智能竞赛抢答器设计
专业通信工程
班级0702
学号200703040211
姓名尹波
指导教师胡瑛彭祯
2009年6月30日
湖南工程学院
课程设计任务书
课程名称数字系统与逻辑设计
课题智能竞赛抢答器设计
专业班级通信工程0702
学生姓名尹波
学号200703040211
指导老师胡瑛彭祯
审批
任务书下达日期2009年6月21日
任务完成日期2009年6月30日
《数字系统与逻辑设计》课程设计任务书
一、设计目的
全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
二、设计要求
1、设计正确,方案合理。
2、界面友好,使用方便。
3、程序精炼,结构清晰。
4、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5、上机演示。
6、有详细的文档。
文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。
三、进度安排
第十九周星期一:
课题讲解,查阅资料
星期二:
总体设计,详细设计
星期三:
编程,上机调试、修改程序
星期四:
上机调试、完善程序
星期五:
答辩
星期六-星期天:
撰写课程设计报告
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现;四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释);
目录
1、课题的主要功能1
2、功能模块的划分1
3、主要功能的实现1
3.1、鉴别功能1
3.2、锁存功能1
3.3、转换功能2
3.4、三选一功能2
3.5、倒计时功能2
3.6、片选功能2
3.7、显示功能2
4、程序调试3
4.1、调试方法3
4.2、各模块程序的调试3
5、总结6
6、附件7
6.1、鉴别模块代码7
6.2、锁存器模块源代码7
6.3、模块源代码8
6.4、三选一模块源代码9
6.5、倒计时模块源代码9
6.6、片选模块源代码11
6.7、显示模块源代码11
6.8、顶层文件源代码12
7、评分表15
1、课题的主要功能
设计一个4人参加的智力竞赛抢答计时器。
该系统具有回答问题时间控制的功能,要求回答问题时间小于等于100秒(显示为0~99),时间显示采用倒计时方式。
当达到限定时间时,发出声响以示警告;当有某一参赛者首先按下抢答开关时,相应显示灯亮并伴有声响,此时抢答器不再接受其他输入信号。
2、功能模块的划分
图1智能抢答器功能模块划分图
该智能抢答器分为七个模块,分别为:
鉴别模块、锁存器模块、转换模块、三选一模块、倒计时模块、偏心模块和显示模块。
3、主要功能的实现
3.1、鉴别功能
鉴别模块jianbie如图2所示,输入信号CLK和CLR,若CLR=“0”,表示无人按键,输出信号Q为0;若CLR=“1”,表示有人按键,输出信号Q为1。
3.2、锁存功能
锁存器模块suocunqi如图3所示,锁存器对四位答题者的结果进行锁存,并将其赋给输出信号Q1,Q2,Q3,Q4。
3.3、转换功能
转换模块zhuanhuan如图4所示,把抢答结果转化为二进制数。
3.4、三选一功能
三选一模块sanxuanyi如图5所示,用三位二进制数分别表示抢答者的号数及其倒计时,输出信号Q。
3.5、倒计时功能
倒计时模块daojishi如图6所示,用两个四位二进制数表示倒计时,定义变量HH,LL,由时钟CLK和使能信号EN控制。
当HH==0,LL==0时,发出声音停止计时,输出H(XXX),L(XXX)。
3.6、片选功能
片选模块pianxuan如图7所示,对三个七段数码管进行选择。
3.7、显示功能
显示模块xianshi如图8所示,将所有进程中的数值转换成七位二进制数。
图2jianbie模块图3suocunqi模块图4zhuanhuan模块图5sanxuanyi模块
图6daojishi模块图7pianxuan模块图8xiandhi模块
4、程序调试
4.1、调试方法
(1)人工调试。
写好一个程序后不能急于上机调试,而是先进行纸面上的检查,改正错误的地方。
(2)上机调试。
机器提示有多处错误,应先改第一条,后面的错误大多是因第一天错误引起的。
4.2、各模块程序的调试
(1)鉴别模块:
图9鉴别模块仿真波形图
给CLK一个时钟信号,在某一时刻开始赋给CLR一个高电平,则从下一个时钟下降沿开始Q输出高电平。
(2)锁存器模块:
图10锁存器模块仿真波形图
给CLK一个时钟信号,在某一时刻开始赋给CLR一个高电平,则从下一个时钟上升沿开始:
将D1赋给Q1、将D2赋给Q2、将D3赋给Q3、将D4赋给Q4,并输出ALM;在CLR为低电平时无输出。
(3)转换模块:
图11转换模块仿真波形图
通过此模块将D1D2D3D4的输入结果转换成Q1Q2Q3Q4这种四位二进制数。
(4)三选一模块:
图12三选一模块仿真波形图
由SEL控制Q的输出,当SEL为“000”时将D1赋给Q;当SEL为“001”时将D2赋给Q;当SEL为“111”时将D3赋给Q;其他情况将“1111赋给Q。
(5)倒计时模块:
图13倒计时模块仿真波形图
给CLK一个时钟信号,当EN为“1”且H、L都为“0000”时从这个时钟上升沿开始有声音输出;当H、L不为“0000”时,即使有EN为“1”也没有声音输出。
当EN为“0”进行倒计时。
(6)片选模块:
图14片选模块仿真波形图
给CLK一个时钟信号,当处于时钟上升沿时输出信号a。
(7)显示模块:
图15显示模块仿真波形图
将输入信号D转变成能在七段数码管上显示的七位二进制数。
(8)顶层文件:
图16顶层文件仿真波形图
(9)各模块连结后的电路图:
图17各模块连结后的电路图
5、总结
一周的《数值系统与逻辑设计》的课程设计终于做完了,在这一周的课设中我感觉我学到了蛮多东西。
首先,我学会了如何对一个大的课题进行分析——将大的整体划分为许多下的部分,直到各个部分容易设计出来。
刚开始接到抢答器这个课设题目时我感到一头雾水,根本不知道从哪下手,然后通过认真阅读课设题目下的算法提示终于有了的眉目,原来要不这个抢答器分成:
鉴别模块、锁存器模块、倒计时模块、转换模块、片选模块、三选一模块和显示模块这七大模块,有了思路剩下的事情就容易多了。
其次,这次课程设计让我感受到了我对所学习的内容是多么的不熟练,在编程的时候还要老是去翻书。
我记忆在深刻的是在编顶层文件时,看了一遍又一遍书但在编写的过程中还是出错了,最后只好对着书编写。
但我觉的出现问题并不是很要紧,这些问题能提醒我那些地方没有学好,只要我重视这些地方将其巩固我想我将能学到许多的知识。
最后,我感觉我对QuartusII软件的使用熟练了许多。
我虽然以前在试验的时候使用过QuartusII这个软件,但用的时间毕竟不长,对其不太熟练,经过这次做课设我对这个软件运用熟练了很多,这对以后的学习一定有很大的帮助。
我想在面对一个问题时不能存在侥幸心理,只要我们认真对待它,我们就能学到东西。
6、附件
6.1、鉴别模块代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYjianbieIS
PORT(CLK,CLR:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC);
ENDjianbie;
ARCHITECTUREjianbie_mkOFjianbieIS
BEGIN
PROCESS(CLK,CLR)
BEGIN
IFCLR='0'THEN--利用IF_THEN_ELSE语句
Q<='0';
ELSIFCLK'EVENTANDCLK='0'THEN--边缘检测信号为低电平
Q<='1';
ENDIF;
ENDPROCESS;
ENDjianbie_mk;
6.2、锁存器模块源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYsuocunqiIS
PORT(D1,D2,D3,D4:
INSTD_LOGIC;--输入端口定义4个变量
CLK,CLR:
INSTD_LOGIC;
Q1,Q2,Q3,Q4,ALM:
OUTSTD_LOGIC);
ENDsuocunqi;
ARCHITECTUREsuocunqi_mkOFsuocunqiIS
BEGIN
PROCESS(CLK)
BEGIN
IFCLR='0'THEN
Q1<='0';
Q2<='0';
Q3<='0';
Q4<='0';
ALM<='0';
ELSIFCLK'EVENTANDCLK='1'THEN--检测为高电平,则有人抢答
Q1<=D1;
Q2<=D2;
Q3<=D3;
Q4<=D4;
ALM<='1';
ENDIF;
ENDPROCESS;
ENDsuocunqi_mk;
6.3、模块源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYzhuanhuanIS
PORT(D1,D2,D3,D4:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDzhuanhuan;
ARCHITECTUREzhuanhuan_mkOFzhuanhuanIS
BEGIN
PROCESS(D1,D2,D3,D4)
VARIABLETMP:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
TMP:
=D1&D2&D3&D4;
CASETMPIS--类似于真值表的CASE语句
WHEN"0111"=>Q<="0001";
WHEN"1011"=>Q<="0010";
WHEN"1101"=>Q<="0011";
WHEN"1110"=>Q<="0100";
WHENOTHERS=>Q<="1111";
ENDCASE;
ENDPROCESS;
ENDzhuanhuan_mk;
6.4、三选一模块源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYsanxuanyiIS
PORT(SEL:
INSTD_LOGIC_VECTOR(2DOWNTO0);
D1,D2,D3:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDsanxuanyi;
ARCHITECTUREsanxuanyi_mkOFsanxuanyiIS
BEGIN
PROCESS(SEL,D1,D2,D3)
BEGIN
CASESELIS
WHEN"000"=>Q<=D1;
WHEN"001"=>Q<=D2;
WHEN"111"=>Q<=D3;
WHENOTHERS=>Q<="1111";
ENDCASE;
ENDPROCESS;
ENDsanxuanyi_mk;
6.5、倒计时模块源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdaojishiIS
PORT(CLK,EN:
INSTD_LOGIC;
H,L:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
SOUND:
OUTSTD_LOGIC);
ENDdaojishi;
ARCHITECTUREdaojishi_mkOFdaojishiIS
BEGIN
PROCESS(CLK,EN)
VARIABLEHH,LL:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFLL=0ANDHH=0THEN
SOUND<='1';
ELSIFLL=0THEN
LL:
="1001";
HH:
=HH-1;
ELSE
LL:
=LL-1;
ENDIF;
ELSE
SOUND<='0';
HH:
="1001";
LL:
="1001";
ENDIF;
ENDIF;
H<=HH;
L<=LL;
ENDPROCESS;
ENDdaojishi_mk;
6.6、片选模块源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYpianxuanIS
PORT(CLK:
INSTD_LOGIC;
a:
OUTINTEGERRANGE0TO7);
ENDpianxuan;
ARCHITECTUREpianxuan_mkOFpianxuanIS
BEGIN
PROCESS(CLK)
VARIABLEAA:
INTEGERRANGE0TO7;--定义标准逻辑位矢量类型
BEGIN
IFCLK'EVENTANDCLK='1'THEN--利用IF_THEN语句
AA:
=AA+1;
ENDIF;
A<=AA;
ENDPROCESS;
ENDpianxuan_mk;
6.7、显示模块源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYxianshiIS
PORT(D:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDxianshi;
ARCHITECTURExianshi_mkOFxianshiIS
BEGIN
PROCESS(D)
BEGIN
CASEDIS
WHEN"0000"=>Q<="0111111";
WHEN"0001"=>Q<="0000110";
WHEN"0010"=>Q<="1011011";
WHEN"0011"=>Q<="1001111";
WHEN"0100"=>Q<="1100110";
WHEN"0101"=>Q<="1101101";
WHEN"0110"=>Q<="1111101";
WHEN"0111"=>Q<="0100111";
WHEN"1000"=>Q<="1111111";
WHEN"1001"=>Q<="1101111";
WHENOTHERS=>Q<="0000000";
ENDCASE;
ENDPROCESS;
ENDxianshi_mk;
6.8、顶层文件源代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYQDQIS
PORT(CLK,CLR:
INSTD_LOGIC;
D1,D2,D3,D4:
INSTD_LOGIC;
SEL:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDQDQ;
ARCHITECTUREDCWJOFQDQIS
COMPONENTjianbie
PORT(CLK,CLR:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTpianxuan
PORT(CLK:
INSTD_LOGIC;
A:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDCOMPONENT;
COMPONENTsuocunqi
PORT(D1,D2,D3,D4:
INSTD_LOGIC;
CLK,CLR:
INSTD_LOGIC;
Q1,Q2,Q3,Q4,ALM:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTzhuanhuan
PORT(D1,D2,D3,D4:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENT;
COMPONENTsanxuanyi
PORT(SEL:
INSTD_LOGIC_VECTOR(2DOWNTO0);
D1,D2,D3:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENT;
COMPONENTdaojishi
PORT(CLK,EN:
INSTD_LOGIC;
H,L:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
SOUND:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTxianshi
PORT(D:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDCOMPONENT;
SIGNALC,D,A1,A2,A3,A4,SOUND:
STD_LOGIC;
SIGNALB1,B2,E,F:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALM:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
U1:
suocunqiPORTMAP(D1=>D1,D2=>D2,D3=>D3,D4=>D4,CLK=>C,CLR=>CLR,
Q1=>A1,Q2=>A2,Q3=>A3,Q4=>A4,AlM=>D);
U2:
pianxuanPORTMAP(CLK=>CLK,A=>SEL);
U3:
jianbiePORTMAP(CLK=>CLK,CLR=>CLR,Q=>C);
U4:
daojishiPORTMAP(CLK=>CLK,L=>B1,H=>B2,SOUND=>SOUND,EN=>D);
U5:
zhuanhuanPORTMAP(D1=>A1,D2=>A2,D3=>A3,D4=>A4,Q=>E);
U6:
sanxuanyiPORTMAP(SEL=>M,D1=>B1,D2=>B2,D3=>E,Q=>F);
U7:
xianshiPORTMAP(D=>F,Q=>Q);
ENDDCWJ;
7、评分表
计算机科学与技术系课程设计评分表
课题名称:
智力竞赛抢答器设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期: