课程设计(论文)-电子拔河游戏机.doc_第1页
课程设计(论文)-电子拔河游戏机.doc_第2页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西北工业大学课 程 设 计 报 告题 目: 电子拔河游戏机学 院: 航海学院 班 级: 03081301班 学生(学号): 学生(学号): 日期: 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.控制器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 clkevent and clk=1 then cout:=cout+1; -计数器+1 if cout=m then tmp=0; -计数小于等于 25000000,输出 0 elsif coutm*2 then tmp=1; -计数小于 50000000,输出 1 else cout:=0; -计数器清零end if; end if; if clkevent and clk=1 then cout0:=cout0+1; -计数器+1 if cout0=n then tmp0=0; -计数小于等于 250000,输出 0 elsif cout0n*2 then tmp0=1; -计数小于 500000,输出 1 else cout0:=0; -计数器清零end if; end if;if clkevent and clk=1 then cout1:=cout1+1; -计数器+1 if cout1=p then tmp1=0; -计数小于等于 25000000,输出 0 elsif cout150000000 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 clkevent and clk=1 then tmpa:=tmpa-1; if tmpa=0000000000 then tmpwarn:=1; end if; end if; ss=tmpa;start wait_tm wait_tm wait_tm wait_tm wait_tm wait_tm 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(player1event and player1=1) then p1=p1+1; end if; if(player2event 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_100event and clk_100=1) then tmp_sta=1; end if;end if;if(clk_100event 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_record2s2) then tmp=tmp-1; -绳子左移 elsif(s1=s2) then tmp=tmp; - 绳子保持原状 elsif(s1s2) 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_100event and clk_100=1) then tmp_sta=1; end if;end if;if(clk_100event 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_record2s2) then tmp=tmp-1; -绳子左移 elsif(s1=s2) then tmp=tmp; - 绳子保持原状 elsif(s1s2) 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_led tmp_led tmp_led tmp_led tmp_led tmp_led tmp_led tmp_led tmp_ledtmp_led tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da1 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 tmp_da2 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板的下载与安装在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论