课程设计报告张浩张云虎.docx
- 文档编号:24338488
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:21
- 大小:89.44KB
课程设计报告张浩张云虎.docx
《课程设计报告张浩张云虎.docx》由会员分享,可在线阅读,更多相关《课程设计报告张浩张云虎.docx(21页珍藏版)》请在冰豆网上搜索。
课程设计报告张浩张云虎
西北工业大学
课程设计报告
题目:
电子拔河游戏机
学院:
航海学院
班级:
03081301班
学生(学号):
张浩(2013300922)
学生(学号):
张云虎(2013300925)
日期:
2015年12月31日
摘要
《模拟、数字电路课程设计》是继《模拟电子技术基础》、《数字电子技术基
础》、《电子技术基础实验》课程后,电气类、自控类和电子类等专业学生在电子
技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分,其目
的和任务是通过二周的时间,让学生掌握EDA的基本方法,熟悉一种EDA软件,
并能利用EDA软件设计一个电子技术综合问题,并在实验箱上成功下载,为以后
进行工程实际问题的研究打下设计基础。
1.通过课程设计使学生能熟练掌握一种EDA软件的使用方法,能熟练进行设
计输入、编译、管脚分配、下载等过程。
2.通过课程设计使学生能利用EDA软件进行至少一个电子技术综合问题的
设计,设计输入可采用图形输入法或硬件描述语言输入法。
3.通过课程设计使学生初步具有分析寻找和排除电子电路中常见故障的能
力。
4.通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、
文理通顺的字迹端正的课程设计报告。
关键词:
目录
一、课程设计目的3
二、设计任务与要求3
三、方案设计与论证3
四、单元电路设计与参数计算3
五、电路的安装与调试4
六、遇到问题的解决方法4
七、结论与心得4
八、参考文献4
题目电子拔河游戏机设计
一、课程设计目的
1.通过课程设计使学生能熟练掌握一种EDA软件的使用方法,能熟练进行设
计输入、编译、管脚分配、下载等过程。
2.通过课程设计使学生能利用EDA软件进行至少一个电子技术综合问题的
设计,设计输入可采用图形输入法或硬件描述语言输入法。
3.通过课程设计使学生初步具有分析寻找和排除电子电路中常见故障的能
力。
4.通过课程设计使学生能独立写出严谨的、有理论根据的、实事求是的、
文理通顺的字迹端正的课程设计报告。
二、设计任务与要求(大标题均为四号,黑体)
电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。
由一排发光二极管表
示拔河的“电子绳”。
由甲乙双方通过按纽开关使发光二极管向一方的终点延伸,
当延伸到某方的最后一个发光二极管时,则该方获胜,连续比赛多局以定胜负。
基本要求:
1.设计一个能进行拔河游戏的电路。
2.电路使用9个发光二极管,开机后只有中间一个发亮,此即拔河的中心点。
3.游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,
亮点就向谁的方向移动,每按一次,亮点移动一次。
4.亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,
输出保持,只有复位后才使亮点恢复到中心。
5.用数码管显示获胜者的盘数
三、方案设计与论证
根据实验的要求,分析实验的执行功能如下图:
\
由功能图可知:
可逆计数器原始状态输出4位二进制数0000,经译码器输出使中间的一只发光二极管点亮。
当按动A、B两个按键时,分别产生两个脉冲信号,经整形后分别加到可逆计数器上,可逆计数器输出的代码经译码器译码后驱动发光二极管点亮并产生位移,当亮点移到任何一方终端后,由于控制电路的作用,使这一状态被锁定,而对输入脉冲不起作用。
如按动复位键,亮点又回到中点位置,比赛又可重新开始。
将双方终端二极管的正端分别经两个与非门后接至二个十进制计数器CC4518的允许控制端EN,当任一方取胜,该方终端二极管点亮,产生一个下降沿使其对应的计数器计数。
这样,计数器的输出即显示了胜者取胜的盘数。
四、单元电路设计与参数计算
1.总模块电路如下:
单元电路如下”
2.控制器
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYkongzhiIS
PORT
(x,kz:
INSTD_LOGIC;
st:
OUTSTD_LOGIC
);
ENDkongzhi;
architecturezofkongzhiis
begin
process(x,kz)
begin
IF(kz='1')THEN
st<='1';
else
st<=x;
endif;
endprocess;
endz;
3.分频器
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYfenpinIS
PORT(clk:
INSTD_LOGIC;
clk_out:
OUTSTD_LOGIC;
clk_out0:
OUTSTD_LOGIC;
clk_out1:
OUTSTD_LOGIC);
ENDfenpin;
ARCHITECTUREfwmOFfenpinIS
CONSTANTm:
INTEGER:
=25000000;--50M分频到1Hz时=25000000。
CONSTANTn:
INTEGER:
=250000;--50M分频到100Hz时=2500000。
SIGNALtmp:
STD_LOGIC;
CONSTANTp:
INTEGER:
=49999900;
SIGNALtmp0:
STD_LOGIC;
SIGNALtmp1:
STD_LOGIC;
BEGIN
PROCESS(clk,tmp,tmp0,tmp1)
VARIABLEcout,cout0,cout1:
INTEGER:
=0;
BEGIN
IFclk'EVENTANDclk='1'THEN
cout:
=cout+1;--计数器+1
IFcout<=mTHENtmp<='0';--计数小于等于25000000,输出0
ELSIFcout ELSEcout: =0;--计数器清零 ENDIF; ENDIF; IFclk'EVENTANDclk='1'THEN cout0: =cout0+1;--计数器+1 IFcout0<=nTHENtmp0<='0';--计数小于等于250000,输出0 ELSIFcout0 ELSEcout0: =0;--计数器清零 ENDIF; ENDIF; IFclk'EVENTANDclk='1'THEN cout1: =cout1+1;--计数器+1 IFcout1<=pTHENtmp1<='0';--计数小于等于25000000,输出0 ELSIFcout1<50000000THENtmp1<='1';--计数小于50000000,输出1 ELSEcout1: =0;--计数器清零 ENDIF; ENDIF; ENDPROCESS; clk_out<=tmp; clk_out0<=tmp0; clk_out1<=tmp1;--分频器输出 ENDfwm; 4.倒计时模块 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYdaojishiIS PORT (clk,reset: INSTD_LOGIC; start: OUTSTD_LOGIC; wait_tm: OUTSTD_LOGIC_VECTOR(6DOWNTO0));------------译码输出,S0为个位 ENDdaojishi; ARCHITECTUREAOFdaojishiIS SIGNALSS: STD_LOGIC_VECTOR(9DOWNTO0);-------------SS表示个位 BEGIN PRO1: PROCESS(clk,reset) VARIABLETMPA: STD_LOGIC_VECTOR(9DOWNTO0); VARIABLETMPWARN: STD_LOGIC; BEGIN IFreset='1'THENTMPA: ="0000001001";TMPWARN: ='0'; ELSIFclk'EVENTANDclk='1'THEN TMPA: =TMPA-1; ifTMPA="0000000000"thenTMPWARN: ='1'; ENDIF; ENDIF; SS<=TMPA;start<=TMPWARN; ENDPROCESSPRO1; PROCESS(SS) BEGIN CASESSIS--------------------------个位显示部分 WHEN"0000000000"=>wait_tm<="1000000";--显示0 WHEN"0000000001"=>wait_tm<="1111001";--显示1 WHEN"0000000010"=>wait_tm<="0100100";--显示2 WHEN"0000000011"=>wait_tm<="0110000";--显示3 WHEN"0000000100"=>wait_tm<="0011001";--显示4 WHEN"0000000101"=>wait_tm<="0010010";--显示5 WHENOTHERS=>wait_tm<="0010010";--显示5 ENDCASE; ENDPROCESS; ENDA; 5计数器 useIEEE.std_logic_1164.all; useIEEE.std_logic_unsigned.all; libraryIEEE; entitycountis port(clk_1: instd_logic;--1HZ输入 sw: instd_logic;--状态判断输入 player1,player2: instd_logic;--选手输入 sum1,sum2: outstd_logic_vector(7downto0));--计数输出 endcount; architecturebody_countofcountis signalp1,p2: std_logic_vector(7downto0);--计数输出 begin process(player1,player2,sw,clk_1) begin if(sw='1')then--处于比赛状态 if(clk_1='0')then if(player1'eventandplayer1='1')then p1<=p1+'1'; endif; if(player2'eventandplayer2='1')then p2<=p2+'1'; endif; else p1<="00000000"; p2<="00000000"; endif;--比赛状态结束 else p1<="00000000"; p2<="00000000"; endif; sum1<=p1; sum2<=p2; endprocess; endbody_count; 6.比较器 libraryIEEE; useIEEE.std_logic_1164.all; useIEEE.std_logic_unsigned.all; entitycompis port(clk_100: instd_logic;--100HZ输入 clk_1: instd_logic;--1HZ输入 reset: instd_logic;--重置 start: instd_logic;--开始 zongshu: instd_logic_vector(3downto0); sum1,sum2: instd_logic_vector(7downto0);--计数输入 record1,record2: outstd_logic_vector(3downto0);--比分输出 jieshu: outstd_logic;--bisaijieshu sw: outstd_logic;--状态输出 lights: outstd_logic_vector(3downto0) );--绳子状态 endcomp; architecturebody_cmpofcompis signaltmp_record1: std_logic_vector(3downto0);--比分 signaltmp_record2: std_logic_vector(3downto0); signaltmp: std_logic_vector(3downto0);--绳子状态 signaltmp_sta: std_logic;--状态 signals1,s2: std_logic_vector(7downto0);--计数 begin process(clk_100)--判断比赛状态 begin if(start='1')then if(clk_100'eventandclk_100='1')then tmp_sta<='1'; endif; endif; if(clk_100'eventandclk_100='1')then--任意比分到HuoShengJuShu,比赛结束,Led0LiangQi; if(tmp_record1=zongshuortmp_record2=zongshu)then tmp_sta<='0'; jieshu<='1'; endif; if(tmp="0000"ortmp="1000")then--绳子到头,进入等待状态 tmp_sta<='0'; endif; if(reset='1')then--复位,状态归零 tmp_sta<='0'; jieshu<='0'; endif; endif; endprocess; s1<=sum1; s2<=sum2; process(clk_1,reset)--控制绳子移位 begin if(reset='1')then tmp<="0100";--绳子初始状态为100 tmp_record1<="0000"; tmp_record2<="0000"; else if(clk_1'eventandclk_1='1')then if(tmp_sta='1')then if(s1>s2)thentmp<=tmp-'1';--绳子左移 elsif(s1=s2)thentmp<=tmp;--绳子保持原状 elsif(s1 endif; else if(tmp="0000")then--绳子到左尽头,左计分器加1 tmp_record1<=tmp_record1+'1'; tmp<="0100"; elsif(tmp="1000")then--绳子到右尽头,右记分器加1, tmp_record2<=tmp_record2+'1'; tmp<="0100"; endif; endif; endif; endif; record1<=tmp_record1; record2<=tmp_record2; lights<=tmp; sw<=tmp_sta; endprocess; endbody_cmp; 7.译码显示器 libraryIEEE; useIEEE.std_logic_1164.all; useIEEE.std_logic_unsigned.all; entitycompis port(clk_100: instd_logic;--100HZ输入 clk_1: instd_logic;--1HZ输入 reset: instd_logic;--重置 start: instd_logic;--开始 zongshu: instd_logic_vector(3downto0); sum1,sum2: instd_logic_vector(7downto0);--计数输入 record1,record2: outstd_logic_vector(3downto0);--比分输出 jieshu: outstd_logic;--bisaijieshu sw: outstd_logic;--状态输出 lights: outstd_logic_vector(3downto0) );--绳子状态 endcomp; architecturebody_cmpofcompis signaltmp_record1: std_logic_vector(3downto0);--比分 signaltmp_record2: std_logic_vector(3downto0); signaltmp: std_logic_vector(3downto0);--绳子状态 signaltmp_sta: std_logic;--状态 signals1,s2: std_logic_vector(7downto0);--计数 begin process(clk_100)--判断比赛状态 begin if(start='1')then if(clk_100'eventandclk_100='1')then tmp_sta<='1'; endif; endif; if(clk_100'eventandclk_100='1')then--任意比分到HuoShengJuShu,比赛结束,Led0LiangQi; if(tmp_record1=zongshuortmp_record2=zongshu)then tmp_sta<='0'; jieshu<='1'; endif; if(tmp="0000"ortmp="1000")then--绳子到头,进入等待状态 tmp_sta<='0'; endif; if(reset='1')then--复位,状态归零 tmp_sta<='0'; jieshu<='0'; endif; endif; endprocess; s1<=sum1; s2<=sum2; process(clk_1,reset)--控制绳子移位 begin if(reset='1')then tmp<="0100";--绳子初始状态为100 tmp_record1<="0000"; tmp_record2<="0000"; else if(clk_1'eventandclk_1='1')then if(tmp_sta='1')then if(s1>s2)thentmp<=tmp-'1';--绳子左移 elsif(s1=s2)thentmp<=tmp;--绳子保持原状 elsif(s1 endif; else if(tmp="0000")then--绳子到左尽头,左计分器加1 tmp_record1<=tmp_record1+'1'; tmp<="0100"; elsif(tmp="1000")then--绳子到右尽头,右记分器加1, tmp_record2<=tmp_record2+'1'; tmp<="0100"; endif; endif; endif; endif; record1<=tmp_record1; record2<=tmp_record2; lights<=tmp; sw<=tmp_sta; endprocess; endbody_cmp; 7.译码显示器 libraryIEEE; useIEEE.std_logic_1164.all; useIEEE.std_logic_unsigned.all; entityxianshiis port(clk_in: instd_logic; record1,record2: instd_logic_vector(3downto0);--比分状态输入 lights: instd_logic_vector(3downto0);--绳子状态输入 led: outstd_logic_vector(8downto0);--绳子解码后输出 cats1: outstd_logic_vector(6downto0); cats2: outstd_logic_vector(6downto0)); endxianshi; architecturebody_decodeofxianshiis signaltmp_led: std_logic_vector(8downto0);--绳子输出 signaltmp_da1: std_logic_vector(6downto0);--比分1 signaltmp_da2: std_logic_vector(6downto0);--比分2 signaltmp: std_logic_vector(6downto0); signaltmp0: std_logic_vector(6downto0);--比分显示 begin process(clk_in,lights,record1,record2,tmp_da2,tmp_da1,tmp) begin caselightsis--绳子状态 when"0100"=>tmp_led<="000010000"; when"0011"=>tmp_led<="000001000"; when"0010"=>tmp_led<="000000100"; when"0001"=>tmp_led<="000000010"; when"0000"=>tmp_led<="000000001"; when"0101"=>tmp_led<="00010000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 张浩张云虎
![提示](https://static.bdocx.com/images/bang_tan.gif)