资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
EDA 技术及应用考试设计论文题 目 (中 文 ): 拔 河 游 戏 机 设 计姓 名 贺 鹤学 号 201308002118院 ( 系 ) 电 子 与 信 息 工 程 学 院班 级 通 信 1301班任 课 老 师 蒋 恩 松 、 杨 振 南开 课 学 期 2015年 下 期项 目 实 施 日 期 2015年 6 月 1 日 至 2015年 6月 12 日设 计 题 目 要 求设 计 基 本 要 求A.设计一个能进行拔河游戏的电路;B. 电路使用 7 个发光二极管,开机后只有中间一个发亮,此即拔河的中心点;C. 游戏双方各持一个按钮,迅速的、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点就移动一次;D.亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,有复位后才使亮点恢复到中心;E.用数码管显示获胜者的盘数;扩 展 要 求 :3、 设 计 最 终 提 交 形 式( 1) 仿 真 。( 2) 实 验 箱 验 证 。( 3) 设 计 论 文 。设 计 方 案设计功能:1. 按钮信号即输入的脉冲信号,每按一次按钮都应进行有效的计数;2. 用可逆计数器的加减输入端分别接受两路脉冲信号,可逆计数器原始输出状态为 0000,经译码器输出,使中间一只二极管发亮;3. 当计数器进行加法计数时,亮点向右移;进行减法计数时,亮点向左移;4. 由一个控制电路指示谁胜谁负,当亮点移到任一方终端时,由控制电路产生一个信号,使计数器停止计数;5. 将双方二极管“点亮”信号分别接两个计数器的“使能”端,当一方取胜时,相应的计数器进行一次计数,这样得到双方取胜次数的显示;6. 设置一个“复位”按钮,使亮点回到中心,取胜计数器也要设置一个“复位”按钮,使之能清零;系 统 内 部 功 能 模 块系统内部模块图如下:4 个选手得分显示,使用数码管 14抢答好选手编号指 导 老 师 意 见 :设 计 论 文第 一 章 设 计 目 标1. 拔河游戏机的基本原理电子拔河游戏机是一种能容纳甲乙双方参赛或甲乙双方加裁判的三人游戏电路。由一排 7 个 LED 发光二极管表示拔河的“电子绳”。由甲乙双方通过按钮开关使发光的 LED 管向自己一方的终点延伸,当延伸到某方的最后一 LED 管时,则该方失败,对方获胜,并对获胜次数进行计数,连续比赛多局以定胜负。比赛开始,由裁判下达比赛命令后,甲乙双方才能输入信号,否则,输入信号无效。裁判信号由键盘空格键来控制。“电子绳”由 7 个 LED 管构成,裁判下达“开始比赛”的命令后,摁一下空格键,位于“电子绳”中点的LED 发亮。甲乙双方通过按键输入信号,使发亮的 LED 管向自己一方移动,并阻止其向对方延伸,谁摁得快就向这一方移动。当从中点至自己一方的最后一个 LED 管发亮时,表示比赛结束,这时,电路自锁,保持当前状态不变,除非由裁判使电路复位,并对获胜的一方计数器自动加一。记分电路用两位七段数码管分别对双方得分进行累计,在每次比赛结束时电路自动加分。当比赛结束时,计分器清零,为下一次比赛做好准备。2.拔河游戏机功能本设计中实现的拔河游戏机功能如图 11.按钮信号即输入的脉冲信号,每按一次按钮都应进行有效的计数;2.用可逆计数器的加减输入端分别接受两路脉冲信号,可逆计数器原始输出状态为 0000,经译码器输出,使中间一只二极管发亮;3.当计数器进行加法计数时,亮点向右移;进行减法计数时,亮点向左移;4.由一个控制电路指示谁胜谁负,当亮点移到任一方终端时,由控制电路产生一个信号,使计数器停止计数;5.将双方二极管“点亮”信号分别接两个计数器的“使能”端,当一方取胜时,相应的计数器进行一次计数,这样得到双方取胜次数的显示;6.设置一个“复位”按钮,使亮点回到中心,取胜计数器也要设置一个“复位”按钮,使之能清零;第 二 章 详 细 设 计 方 案根据需求,本设计的内部结构如图 2 所示。主要包括按键消抖模块,分频模块,主控制电路,LED 显示模块,数码管显示模块五个部分。消抖模块用来按键时消除抖动。主控制电路控制玩家按键移位,LED 灯随着按键频率不同而移动,将移动结果用拔河 LED 显示模块显示出来。数码管显示模块将计分输赢结果显示输出。图 2 系统内部模块图1.分频器模块程序设计及仿真module fpq(_10000HzOut,_25HzOut,_50MHzIn);input _50MHzIn;output _10000HzOut,_25HzOut;parameter width1=16,value1=2499;parameter width2=10,value2=499;reg _10000HzOut,_25HzOut;reg width1-1:0 Count;reg width2-1:0 Cnt;always (posedge _50MHzIn) /2500*2*10000Hz=50MHz if (Count=value1) /Binary Counter(02499)begin Count = 15d0; _10000HzOut = _10000HzOut; endelse Count = Count + 1b1;always (posedge _50MHzIn) /100 000*2*25Hz=50MHzif (Cnt=value2) /Binary Counter(099999)begin Cnt = 15d0; _25HzOut = _25HzOut; endelse Cnt = Cnt + 1b1;endmodule 图 3 分频器仿真波形图2.按键模块程序设计及仿真按键模块采用 3 个或门消抖,由于有两个玩家,所以设置有两个按键,采用 25hz 脉冲。module xiaodou(key1, key2, _25H,k1, k2);input key1; / 按键 1input key2; / 按键 2input _25H; /脉冲 25Hzoutput k1;output k2;assign k1=(a1|a2|a3); /assign k2=(b1|b2|b3); / 采用 3 个或门消抖reg a1,a2,a3,b1,b2,b3;always (posedge _25H)begina1=key1;a2=a1;a3=a2;b1=key2;b2=b1;b3=b2;endendmodule图 4 仿真波形图3.主程序模块程序设计及仿真拔河主程序开始时设有复位按键,通过左右数码管显示玩家分数,有两个 led 小灯代表拔河绳子的中点。拔河结束也可清零。module kongzhi(k1, k2, rst, nrst, _25H, q, left, right);input k1; /input k2; /input rst; /拔河开始复位按键input nrst; /计分清零按键input _25H; /output 2:0 q; /拔河 led 显示输出output 2:0 left; /左边分数数码管输出output 2:0 right; /右边分数数码管输出reg 2:0q; reg n;reg 2:0left,right; /reg 寄存器always (negedge rst or posedge _25H or negedge nrst) beginif(rst) begin q=7;n=1;end /q,led 回中点 n 使能开 else if(nrst) begin left=0;right=0;end /计分清零else if(n) /判断使能是否开!begin case(k1,k2) / 按键组2b01: q=q+1; / led 向右移一位2b10: q=q-1; / led 向左移一位default: q=q; / 保持endcase /case(q)3b000:begin n=0;left=left+1;end /左+1 分,n 使能关 3b110:begin n=0;right=right+1;end /右+1 分,n 使能关default:n=n; /保持 endcaseendendendmodule图 5 仿真波形图4.LED 模块程序设计及仿真Led 设有 7 个灯。module led(q, _50M, led);input 2:0 q;input _50M;output 6:0 led;reg 6:0 led;always(posedge _50M)case(q)3d0:led=7b1111000; 3d1:led=7b0111000; 3d2:led=7b0011000; 3d3:led=7b0001000; 3d4:led=7b0001100; 3d5:led=7b0001110;3d6:led=7b0001111; default:led=led;endcaseendmodule图 6 仿真波形图5.数码管模块程序设计及仿真module shumaguan(left, right, _10000H, segout, wx);input 2:0 left;input 2:0 right;input _10000H;output 6:0 segout; /数码管输出output 2:0 wx;reg 2:0 wx;reg 6:0 segout;reg 1:0 count;reg 3:0 seg_in;always(posedge _10000H)case(count)2d0:begin wx=3b011;seg_in=left;count=count+1;end /left wx +,计数输入=left,count 进一位继续判断2d1:begin wx=3b101;seg_in=4d8;count=count+1;end /- wx +,计数输入=8,同上2d2:begin wx=3b110;seg_in=right;count=0;end /rihht wx +,计数输入=right,conunt 归零,重新判断endcasealways(seg_in)case(seg_in) /g f e d c b a/ 4
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号