EDA课程设计报告.docx
- 文档编号:6295040
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:13
- 大小:161.13KB
EDA课程设计报告.docx
《EDA课程设计报告.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
EDA课程设计报告
河北科技大学
课程设计报告
学生姓名:
李宏哲
专业班级:
电信L132
课程名称:
EDA课程设计
学年学期2015——2016学年第二学期
指导教师:
安国臣
2016年6月
目录
一、设计目的……………………………………………………………2
二、设计要求……………………………………………………………2
2.1基础部分………………………………………………………2
2.2发挥部分………………………………………………………3
三、设计环境……………………………………………………………3
四、设计内容……………………………………………………………3
4.1设计原理和方案………………………………………………3
4.2程序设计及仿真………………………………………………4
4.2.1数码管显示模块……………………………………………4
4.2.2计数模块……………………………………………………8
4.2.3LED指示灯模块……………………………………………10
4.2.4拔河主程序…………………………………………………11
4.2.5仿真波形…………………………………………………15
4.3适配…………………………………………………………15
4.4硬件调试与结果分析………………………………………16
五、心得体会……………………………………………………………16
六、参考文献……………………………………………………………18
拔河比赛
一、设计目的
1.掌握数字系统的设计方法;
2.掌握硬件描述语言——VHDL;
3.掌握模块化设计方法;
4.掌握开发软件的使用方法。
二、设计要求
2.1基础部分
(1)设计拔河游戏电路,用按键与LED表示输入与输出。
(2)发光二极管表示拔河的“电子绳”,初始时,只有9个LED中间一个点亮,此即拔河的中心点;
(3)游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,LED移动一次,同时数码管显示两边按的次数。
(4)亮点移到任一方终端二极管时,这一方就获胜,蜂鸣器发出“嘟嘟”的警报声,此时双方按钮均无作用,LED灯只在赢得一方最边上亮,只有复位后才使亮点恢复到中心。
(5)当报警信号发出时,从胜利的一方显示A,反之另外一方显示B。
(6)由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,输入信号无效。
(7)用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。
完成全部流程:
设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、时序仿真、下载验证等。
2.2发挥部分
当拔河比赛不进行时,数码管处于休眠状态,使数码管关闭,更加省电。
三、设计环境
计算机、MAX+plusII10.1开发软件
四、设计内容(设计原理和方案、程序设计、仿真分析和适配)
4.1设计原理和方案
电子拔河游戏机是一种能容纳甲乙双方参赛或甲乙双方加裁判的三人游戏电路。
由一排9个LED发光二极管表示拔河的“电子绳”。
由甲乙双方通过按钮开关使发光的LED管向自己一方的终点延伸,当延伸到某方的最后一LED管时,则该方获胜,并对获胜次数进行计数,连续比赛多局以定胜负。
比赛开始,由裁判下达比赛命令后,甲乙双方才能输入信号,否则,输入信号无效。
裁判信号由复位键来控制。
“电子绳”由9个LED管构成,裁判下达“开始比赛”的命令后,关闭复位键,位于“电子绳”中点的LED发亮。
甲乙双方通过按键输入信号,使发亮的LED管向自己一方移动,并阻止其向对方延伸,谁摁得快就向这一方移动。
当从中点至自己一方的最后一个LED管发亮时,蜂鸣器报警,表示比赛结束,这时,电路自锁,保持当前状态不变,除非由裁判使电路复位,并对获胜的一方计数器自动加一。
记分电路用两位七段数码管分别对双方得分进行累计,在每次比赛结束时电路自动加分。
当比赛结束时,计分器清零,为下一次比赛做好准备。
4.2程序设计及仿真
4.2.1数码管显示模块
LIBRARYIEEE;--数码管显示模块
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSCANIS
PORT(
CLK,RST:
INSTD_LOGIC;
A1,A2,A3,A4,B1,B2,B3,B4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
SG:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
END;
ARCHITECTUREONEOFSCANIS
SIGNALCNT4:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALA:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALCLK1:
STD_LOGIC;
BEGIN
P1:
PROCESS(CNT4)
BEGIN
IF(RST='0')THEN
CASECNT4IS
WHEN"000"=>BT<="10000000";A<=A3;
WHEN"001"=>BT<="01000000";A<=A2;
WHEN"010"=>BT<="00100000";A<=A1;
WHEN"011"=>BT<="00000100";A<=B3;
WHEN"100"=>BT<="00000010";A<=B2;
WHEN"101"=>BT<="00000001";A<=B1;
WHEN"110"=>BT<="00010000";A<=A4;IF(A2="0100")THENA<="1010";ENDIF;
WHEN"111"=>BT<="00001000";A<=B4;IF(B2="0100")THENA<="1011";ENDIF;
WHENOTHERS=>BT<="00000000";A<=NULL;
ENDCASE;
ELSEBT<="00000000";
ENDIF;
ENDPROCESSP1;
P2:
PROCESS(CLK)
VARIABLECT:
INTEGERRANGE0TO5000;
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCT<4999THEN
CT:
=CT+1;
CLK1<='0';
ELSE
CT:
=0;
CLK1<='1';
ENDIF;
ENDIF;
ENDPROCESSP2;
PROCESS(CLK1)
BEGIN
IFCLK1'EVENTANDCLK1='1'THEN
IFCNT4<12THEN
CNT4<=CNT4+1;
ELSE
CNT4<="000";
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(A)
BEGIN
IF(RST='0')THEN
CASEAIS
WHEN"0000"=>SG<=X"3F";
WHEN"0001"=>SG<=X"06";
WHEN"0010"=>SG<=X"5B";
WHEN"0011"=>SG<=X"4F";
WHEN"0100"=>SG<=X"66";
WHEN"0101"=>SG<=X"6D";
WHEN"0110"=>SG<=X"7D";
WHEN"0111"=>SG<=X"07";
WHEN"1000"=>SG<=X"7F";
WHEN"1001"=>SG<=X"6F";
WHEN"1010"=>SG<=X"77";
WHEN"1011"=>SG<=X"7C";
WHEN"1100"=>SG<=X"39";
WHEN"1101"=>SG<=X"5E";
WHEN"1110"=>SG<=X"79";
WHEN"1111"=>SG<=X"71";
WHENOTHERS=>NULL;
ENDCASE;ENDIF;
ENDPROCESS;
END;
4.2.2计数模块
LIBRARYIEEE;--频率计数模块
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT10IS
PORT(
CLK,RST,EN:
STD_LOGIC;
COUT:
OUTSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
END;
ARCHITECTUREONEOFCNT10IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLECQI:
STD_LOGIC_VECTOR(3DOWNTO0);BEGIN
IFRST='1'THEN
CQI:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFCQI<4THENCQI:
=CQI+1;
ELSECQI:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFCQI=4THENCOUT<='0';
ELSECOUT<='1';
ENDIF;
CQ<=CQI;
ENDPROCESS;
END;
4.2.3LED指示灯模块
LIBRARYIEEE;--LED指示模块
USEIEEE.STD_LOGIC_1164.ALL;
useieee.std_logic_arith.all;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYLMOVIS
PORT(KL,KR:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED:
OUTSTD_LOGIC_VECTOR(8DOWNTO0);
EN:
OUTSTD_LOGIC;
BAOJING:
OUTSTD_LOGIC;
RST:
INSTD_LOGIC);
END;
ARCHITECTUREONEOFLMOVIS
signala:
std_logic_vector(3downto0);
signalb:
std_logic_vector(3downto0);
BEGIN
a<=kl-kr;
b<=kr-kl;
PROCESS(RST,KL,KR)
BEGIN
IFRST='1'THENLED<="000010000";EN<='1';BAOJING<='0';
ELSIFa="0000"THENLED<="000010000";EN<='1';
ELSIFa="0001"THENLED<="000100000";EN<='1';
ELSIFa="0010"THENLED<="001000000";EN<='1';
ELSIFa="0011"THENLED<="010000000";EN<='1';
ELSIFa="0100"THENLED<="100000000";EN<='0';BAOJING<='1';--停住不动
ELSIFb="0000"THENLED<="000010000";EN<='1';
ELSIFb="0001"THENLED<="000001000";EN<='1';
ELSIFb="0010"THENLED<="000000100";EN<='1';
ELSIFb="0011"THENLED<="000000010";EN<='1';
ELSIFb="0100"THENLED<="000000001";EN<='0';BAOJING<='1';--停住不动
ELSENULL;
ENDIF;
ENDPROCESS;
END;
4.2.4拔河主程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYBAHEIS
PORT(A,B,RST,CLK:
INSTD_LOGIC;
CLK2:
INSTD_LOGIC;
LED:
OUTSTD_LOGIC_VECTOR(8DOWNTO0);--led
SG:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);--段码
BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);--位码
SP:
OUTSTD_LOGIC);
ENDBAHE;
ARCHITECTUREONEOFBAHEIS
SIGNALBAOJING:
STD_LOGIC;
COMPONENTfangdou_player1
port(clk_100:
instd_logic;
player1_b:
instd_logic;
player1:
outstd_logic);
ENDCOMPONENT;
COMPONENTfangdou_player2
port(clk_100:
instd_logic;
player2_b:
instd_logic;
player2:
outstd_logic);
ENDCOMPONENT;
COMPONENTCNT10
PORT(CLK,RST,EN:
STD_LOGIC;
COUT:
OUTSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENT;
COMPONENTSCAN
PORT(CLK,RST:
INSTD_LOGIC;
A1,A2,A3,A4,B1,B2,B3,B4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
SG:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDCOMPONENT;
COMPONENTLMOV
PORT(KL,KR:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED:
OUTSTD_LOGIC_VECTOR(8DOWNTO0);
EN:
OUTSTD_LOGIC;
BAOJING:
OUTSTD_LOGIC;
RST:
INSTD_LOGIC);
ENDCOMPONENT;
SIGNALE,F,CA1,CA2,CA3,CB1,CB2,CB3:
STD_LOGIC;
SIGNALCQA1,CQA2,CQA3,CQA4,CQB1,CQB2,CQB3,CQB4:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALAA:
STD_LOGIC;
SIGNALBB:
STD_LOGIC;
BEGIN
SP<=BAOJINGANDCLK;
U1:
CNT10PORTMAP(EN=>E,RST=>RST,CLK=>AA,COUT=>CA1,CQ=>CQA1);
U2:
CNT10PORTMAP(EN=>E,RST=>RST,CLK=>CA1,COUT=>CA2,CQ=>CQA2);
U3:
CNT10PORTMAP(EN=>E,RST=>RST,CLK=>CA2,COUT=>CA3,CQ=>CQA3);
U4:
CNT10PORTMAP(EN=>E,RST=>RST,CLK=>BB,COUT=>CB1,CQ=>CQB1);
U5:
CNT10PORTMAP(EN=>E,RST=>RST,CLK=>CB1,COUT=>CB2,CQ=>CQB2);
U6:
CNT10PORTMAP(EN=>E,RST=>RST,CLK=>CB2,COUT=>CB3,CQ=>CQB3);
U7:
SCANPORTMAP(A4=>CQA4,A1=>CQA1,A2=>CQA2,A3=>CQA3,B1=>CQB1,
B2=>CQB2,B3=>CQB3,B4=>CQB4,CLK=>CLK2,SG=>SG,BT=>BT,RST=>RST);
U8:
LMOVPORTMAP(EN=>EN,KL=>CQA2,KR=>CQB2,RST=>RST,LED=>LED,BAOJING=>BAOJING)
U9:
fangdou_player2PORTMAP(clk_100=>CLK,player2_b=>B,player2=>BB);
U10:
fangdou_player1PORTMAP(clk_100=>CLK,player1_b=>A,player1=>AA);
U11:
CNT10PORTMAP(EN=>E,RST=>RST,CLK=>CA3,CQ=>CQA4);
U12:
CNT10PORTMAP(EN=>E,RST=>RST,CLK=>CB3,CQ=>CQB4);
ENDARCHITECTUREONE;
4.2.5仿真波形
4.3适配
1.选择的器件为:
ACEX1KEP1K100QC208-1
2.引脚锁定
4.4硬件调试与结果分析
编程下载及配置,选择programmer如下图,进行编程下载到试验箱进行功能验证。
验证,按key2和key10,观察LED灯和数码管的显示变化是否符合设计要求,如果和设计不符合对程序进行更改。
实验结果符合要求,设计得到证明。
五、心得体会
本次EDA课程设计是在指导老师安老师的亲切关怀和细心指导下顺利完成的。
编写EDA系统程序时遇到很多困难,先是包括如何实现在拔河胜利后通过蜂鸣器的报警信号,提示拔河结束,然后又遇到了数码管显示不了、不能正常计数的问题,最后又遇到了LED灯在拔河过程中显示位置不对,出现乱码等问题。
在老师的细心帮助下,我对EDA相关知识有了更深入的了解,是自己对本专业相关知识学习充满了热爱。
本次课程设计,我最大的收获就是从被动学习转向主动学习,大学则更加注重对学习能力、分析能力、独立思考能力的培养。
在本次课程设计中我并不是一次成功的,而是遇到很多困难,通过老师的帮助和自己的学习研究,对知识的更加深入的了解,使自己能够找到问题、解决问题。
通过本次课程设计自己的思想变得成熟了许多,并学会了自学的重要性,因为我很清楚将来社会就需要思想成熟,善于探索、自学的人才。
六、参考文献
【1】黄正瑾.在系统编程技术及其应用.南京:
东南大学出版社,1997【2】彭介华.电子技术课程设计指导.北京:
高等教育出版社,1997【3】李国丽,朱维勇.电子技术实验指导书.合肥:
中国科技大学出版社,2000
【4】潘松,黄继业.EDA技术实用教程.北京:
科学出版社,2002
【5】郑家龙,王小海,章安元.集成电子技术基础教程.北京:
高等教育出版社,2002
【6】宋万杰,罗丰,吴顺君.CPLD技术及其应用.西安:
西安电子科技大学出版社,1999
【7】张昌凡,龙永红,彭涛.可编程逻辑器件及VHDL设计技术.广州:
华南工学院出版社,2001
【8】卢杰,赖毅.VHDL与数字电路设计.北京:
科学出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 报告