欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载
     

    课程设计(论文)-电子拔河游戏机.doc

    • 资源ID:7026345       资源大小:365.03KB        全文页数:27页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    课程设计(论文)-电子拔河游戏机.doc

    课 程 设 计 报 告题 目: 电子拔河游戏机学 院: 班 级: 学生(学号): 学生(学号): 日期: 年 月 日 摘 要模拟、数字电路课程设计是继模拟电子技术基础 、 数字电子技术基础 、 电子技术基础实验课程后,电气类、自控类和电子类等专业学生在电子技术实验技能方面综合性质的实验训练课程,是电子技术基础的一个部分,其目的和任务是通过二周的时间,让学生掌握 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.控制器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY kongzhi ISPORT( x,kz: IN STD_LOGIC; st:OUT STD_LOGIC );END kongzhi;architecture z of kongzhi isbeginprocess(x,kz)beginIF(kz='1')THEN st<='1'else st<=x;end if;end process;end z;3.分频器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY fenpin IS PORT(clk:IN STD_LOGIC; clk_out:OUT STD_LOGIC;clk_out0:OUT STD_LOGIC; clk_out1:OUT STD_LOGIC); END fenpin; ARCHITECTURE fwm OF fenpin IS CONSTANT m : INTEGER:= 25000000; -50M 分频到 1Hz 时=25000000。 CONSTANT n : INTEGER:= 250000; -50M 分频到 100Hz 时=2500000。 SIGNAL tmp :STD_LOGIC; CONSTANT p : INTEGER:= 49999900;SIGNAL tmp0 :STD_LOGIC; SIGNAL tmp1 :STD_LOGIC; BEGIN PROCESS(clk, tmp,tmp0,tmp1) VARIABLE cout,cout0,cout1 : INTEGER:=0; BEGIN IF clk'EVENT AND clk='1' THEN cout:=cout+1; -计数器+1 IF cout<=m THEN tmp<='0' -计数小于等于 25000000,输出 0 ELSIF cout<m*2 THEN tmp<='1' -计数小于 50000000,输出 1 ELSE cout:=0; -计数器清零END IF; END IF; IF clk'EVENT AND clk='1' THEN cout0:=cout0+1; -计数器+1 IF cout0<=n THEN tmp0<='0' -计数小于等于 250000,输出 0 ELSIF cout0<n*2 THEN tmp0<='1' -计数小于 500000,输出 1 ELSE cout0:=0; -计数器清零END IF; END IF;IF clk'EVENT AND clk='1' THEN cout1:=cout1+1; -计数器+1 IF cout1<=p THEN tmp1<='0' -计数小于等于 25000000,输出 0 ELSIF cout1<50000000 THEN tmp1<='1' -计数小于 50000000,输出 1 ELSE cout1:=0; -计数器清零END IF; END IF; END PROCESS; clk_out<=tmp; clk_out0<=tmp0; clk_out1<=tmp1; -分频器输出 END fwm;4.倒计时模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY daojishi ISPORT( clk,reset: IN STD_LOGIC; start:OUT STD_LOGIC; wait_tm : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-译码输出,S0为个位END daojishi;ARCHITECTURE A OF daojishi ISSIGNAL SS : STD_LOGIC_VECTOR (9 DOWNTO 0) ;-SS表示个位BEGINPRO1: PROCESS (clk,reset) VARIABLE TMPA: STD_LOGIC_VECTOR (9 DOWNTO 0); VARIABLE TMPWARN: STD_LOGIC;BEGIN IF reset='1' THEN TMPA:="0000001001"TMPWARN:='0' ELSIF clk'EVENT AND clk='1' THEN TMPA:=TMPA-1; if TMPA="0000000000" then TMPWARN:='1' END IF; END IF; SS<=TMPA;start<=TMPWARN; END PROCESS PRO1;PROCESS(SS)BEGIN CASE SS IS -个位显示部分WHEN "0000000000" => wait_tm <="1000000"-显示0WHEN "0000000001" => wait_tm <="1111001"-显示1WHEN "0000000010" => wait_tm <="0100100"-显示2WHEN "0000000011" => wait_tm <="0110000"-显示3WHEN "0000000100" => wait_tm <="0011001"-显示4WHEN "0000000101" => wait_tm <="0010010"-显示5WHEN OTHERS =>wait_tm <="0010010" -显示5 END CASE ;END PROCESS;END A;5计数器use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all; library IEEE;entity count isport(clk_1:in std_logic; -1HZ 输入sw:in std_logic; -状态判断输入player1,player2:in std_logic; -选手输入sum1,sum2:out std_logic_vector(7 downto 0); -计数输出 end count;architecture body_count of count issignal p1,p2:std_logic_vector(7 downto 0); -计数输出beginprocess(player1,player2,sw,clk_1)beginif(sw='1') then -处于比赛状态 if(clk_1='0') then if(player1'event and player1='1') then p1<=p1+'1' end if; if(player2'event and player2='1') then p2<=p2+'1' end if; else p1<="00000000" p2<="00000000" end if; -比赛状态结束else p1<="00000000" p2<="00000000"end if;sum1<=p1;sum2<=p2;end process;end body_count;6.比较器library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity comp isport(clk_100:in std_logic; -100HZ 输入clk_1:in std_logic; -1HZ 输入reset:in std_logic; -重置start:in std_logic; -开始zongshu:in std_logic_vector(3 downto 0);sum1,sum2:in std_logic_vector(7 downto 0); - 计数输入record1,record2:out std_logic_vector(3 downto 0); - 比分输出jieshu:out std_logic; -bisaijieshusw:out std_logic; -状态输出lights:out std_logic_vector(3 downto 0); - 绳子状态end comp;architecture body_cmp of comp issignal tmp_record1:std_logic_vector(3 downto 0); -比分signal tmp_record2:std_logic_vector(3 downto 0);signal tmp:std_logic_vector(3 downto 0); -绳子状态signal tmp_sta:std_logic; -状态signal s1,s2:std_logic_vector(7 downto 0); -计数 begin process(clk_100) -判断比赛状态begin if(start='1') then if(clk_100'event and clk_100='1') then tmp_sta<='1' end if;end if;if(clk_100'event and clk_100='1') then - 任意比分到HuoShengJuShu,比赛结束,Led0 LiangQi; if(tmp_record1=zongshu or tmp_record2= zongshu) then tmp_sta<='0' jieshu<='1' end if; if(tmp="0000" or tmp="1000") then -绳子到头,进入等待状态 tmp_sta<='0' end if; if(reset='1') then -复位,状态归零 tmp_sta<='0' jieshu<='0' end if;end if;end process;s1<=sum1;s2<=sum2;process(clk_1,reset) -控制绳子移位 begin if(reset='1') then tmp<="0100" - 绳子初始状态为 100tmp_record1<="0000"tmp_record2<="0000" else if(clk_1'event and clk_1='1') then if(tmp_sta='1') then if(s1>s2) then tmp<=tmp-'1' -绳子左移 elsif(s1=s2) then tmp<=tmp; - 绳子保持原状 elsif(s1<s2) then tmp<=tmp+'1' -绳子右移 end if; 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" end if; end if; end if;end if;record1<=tmp_record1;record2<=tmp_record2;lights<=tmp;sw<=tmp_sta;end process;end body_cmp;7.译码显示器library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity comp isport(clk_100:in std_logic; -100HZ 输入clk_1:in std_logic; -1HZ 输入reset:in std_logic; -重置start:in std_logic; -开始zongshu:in std_logic_vector(3 downto 0);sum1,sum2:in std_logic_vector(7 downto 0); - 计数输入record1,record2:out std_logic_vector(3 downto 0); - 比分输出jieshu:out std_logic; -bisaijieshusw:out std_logic; -状态输出lights:out std_logic_vector(3 downto 0); - 绳子状态end comp;architecture body_cmp of comp issignal tmp_record1:std_logic_vector(3 downto 0); -比分signal tmp_record2:std_logic_vector(3 downto 0);signal tmp:std_logic_vector(3 downto 0); -绳子状态signal tmp_sta:std_logic; -状态signal s1,s2:std_logic_vector(7 downto 0); -计数 begin process(clk_100) -判断比赛状态begin if(start='1') then if(clk_100'event and clk_100='1') then tmp_sta<='1' end if;end if;if(clk_100'event and clk_100='1') then - 任意比分到HuoShengJuShu,比赛结束,Led0 LiangQi; if(tmp_record1=zongshu or tmp_record2= zongshu) then tmp_sta<='0' jieshu<='1' end if; if(tmp="0000" or tmp="1000") then -绳子到头,进入等待状态 tmp_sta<='0' end if; if(reset='1') then -复位,状态归零 tmp_sta<='0' jieshu<='0' end if;end if;end process;s1<=sum1;s2<=sum2;process(clk_1,reset) -控制绳子移位 begin if(reset='1') then tmp<="0100" - 绳子初始状态为 100tmp_record1<="0000"tmp_record2<="0000" else if(clk_1'event and clk_1='1') then if(tmp_sta='1') then if(s1>s2) then tmp<=tmp-'1' -绳子左移 elsif(s1=s2) then tmp<=tmp; - 绳子保持原状 elsif(s1<s2) then tmp<=tmp+'1' -绳子右移 end if; 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" end if; end if; end if;end if;record1<=tmp_record1;record2<=tmp_record2;lights<=tmp;sw<=tmp_sta;end process;end body_cmp;7.译码显示器library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity xianshi isport(clk_in:in std_logic; record1,record2:in std_logic_vector(3 downto 0); - 比分状态输入lights:in std_logic_vector(3 downto 0); - 绳子状态输入led:out std_logic_vector(8 downto 0); - 绳子解码后输出cats1:out std_logic_vector(6 downto 0) ; cats2:out std_logic_vector(6 downto 0); end xianshi;architecture body_decode of xianshi issignal tmp_led:std_logic_vector(8 downto 0); -绳子输出signal tmp_da1:std_logic_vector(6 downto 0); -比分 1signal tmp_da2:std_logic_vector(6 downto 0); -比分 2signal tmp:std_logic_vector(6 downto 0); signal tmp0:std_logic_vector(6 downto 0); -比分显示beginprocess(clk_in,lights,record1,record2,tmp_da2,tmp_da1,tmp)begincase lights is -绳子状态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<="000100000"when "0110"=> tmp_led<="001000000" when "0111"=> tmp_led<="010000000"when "1000"=> tmp_led<="100000000"when others =>tmp_led<="000000000"end case;case record1 is -比分状态when "0000"=> tmp_da1<="1000000"when "0001"=> tmp_da1<="1111001"when "0010"=> tmp_da1<="0100100"when "0011"=> tmp_da1<="0110000"when "0100"=> tmp_da1<="0011001"when "0101"=> tmp_da1<="0010010"when "0110"=> tmp_da1<="0000010"when "0111"=> tmp_da1<="1111000"when "1000"=> tmp_da1<="0000000"when "1001"=> tmp_da1<="0010000"when "1010"=> tmp_da1<="1000000"when "1011"=> tmp_da1<="1000000"when "1100"=> tmp_da1<="1000000"when "1101"=> tmp_da1<="1000000"when "1110"=> tmp_da1<="1000000"when "1111"=> tmp_da1<="1000000"end case;case record2 is -比分状态when "0000"=> tmp_da2<="1000000"when "0001"=> tmp_da2<="1111001"when "0010"=> tmp_da2<="0100100"when "0011"=> tmp_da2<="0110000"when "0100"=> tmp_da2<="0011001"when "0101"=> tmp_da2<="0010010"when "0110"=> tmp_da2<="0000010"when "0111"=> tmp_da2<="1111000"when "1000"=> tmp_da2<="0000000"when "1001"=> tmp_da2<="0010000"when "1010"=> tmp_da2<="1000000"when "1011"=> tmp_da2<="1000000"when "1100"=> tmp_da2<="1000000"when "1101"=> tmp_da2<="1000000"when "1110"=> tmp_da2<="1000000"when "1111"=> tmp_da2<="1000000"end case;tmp<=tmp_da1;tmp0<=tmp_da2;led<=tmp_led;cats1<=tmp;cats2<=tmp0;end process;end body_decode;8.总体电路及引脚设置五、电路的安装与调试拔河电子游戏设计是在quartusII上完成的,用的vhdl语言实现,电路模块经过vhdl语言编译以后生成模块,再用简单的逻辑门电路连接,定义引脚再下载到实验开发板DE0板上就能实现电路功能。DE0板的下载与安装在数电实验课上已经完成。课程设计的过程中,我们只是把设计好的电路下载到实验开发板上就能实现了。六、遇到问题的解决方法在设计的过程中遇到的问题很多,比如说程序编译的错误以及对程序的不熟悉;在实验板上的部分功能认识不全面;部分电路实现起来无从下手等情况。我们学习的编程只有C语言和汇编语言,vhdl是在数电实验课上接触的,数电课上老师讲的是Verilogvhdl。所以要在很短时间内掌握vhdl还是很有难度的。遇到了问题,解决办法通常是自习反复查找错误,就是自力更生的方式解决问题;再一个是通过问同学,同学之间相互帮助解决问题;另外就是上网查阅资料。七、结论与心得心得与感悟不只一点,是很多。课程设计是我们学习必不可少的一部分,而且很重要,很有趣。真真的做到了学以致用,但是还是有很多问题困扰着我们,比如说课程设计安排在期末是有些不合适,考试和课程设计都很重要,同等重要。这个时候就难以抉择,并不是每一个同学都能在考试和课程设计之间游刃有余,所以,导致课程设计的质量不是很理想。要是给更多时间应该是会做的更好的。课程设计也教会了我们很多,学到了很多东西,和实验课一样,总是给我们很多惊喜。我们在课堂上学习的知识也在课程设计的时候得到了巩固和提升。和同学合作的过程中也有很多收获,看到了同学的长处和优点,学习到了很多优秀的品质。在课程设计的过程中,老师也教会了我们很多东西,老师也很辛苦,每天和我们一起从早到晚在实验室里面,遇到问题总是细心给我们指导。课程设计的过程中同学们表现出来的吃苦耐劳、不怕累的精神和西工大三实一新的精神还是很接近的。另外我们在遇到问题、解决问题的能力也得到了锻炼,在课程设计的过程中我们付出了很多,也收获了很多。八、参考文献1 阎石,数字电子技术基础M.北京:高等教育出版社,1998.348-352.2 阎石,数字电路 中央电大出版社,1993出版3 阎石,帮你学数字电子技术基础,高等教育出版社,2004年出版4焦素敏,数字电子技术基础,人民邮电出版社,2012年出版5李庆常,数字电子技术基础,机械工业出版社,2008年出版26

    注意事项

    本文(课程设计(论文)-电子拔河游戏机.doc)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开