1、4.1设计原理和方案电子拔河游戏机是一种能容纳甲乙双方参赛或甲乙双方加裁判的三人游戏电路。由一排16个LED发光二极管表示拔河的“电子绳”。由甲乙双方通过按钮开关使发光的LED管向自己一方的终点延伸,当延伸到某方的最后一LED管时,则该方失败,对方获胜,并对获胜次数进行计数,连续比赛多局以定胜负。比赛开始,由裁判下达比赛命令后,甲乙双方才能输入信号,否则,输入信号无效。裁判信号由键盘空格键来控制。“电子绳”由16个LED管构成,裁判下达“开始比赛”的命令后,摁一下空格键,位于“电子绳”中点的LED发亮。甲乙双方通过按键输入信号,使发亮的LED管向自己一方移动,并阻止其向对方延伸,谁摁得快就向这
2、一方移动。当从中点至自己一方的最后一个LED管发亮时,表示比赛结束,这时,电路自锁,保持当前状态不变,除非由裁判使电路复位,并对获胜的一方计数器自动加一。记分电路用两位七段数码管分别对双方得分进行累计,在每次比赛结束时电路自动加分。当比赛结束时,计分器清零,为下一次比赛做好准备。4.2程序设计及仿真4.2.1分频器模块程序设计及仿真module fpq(_10000HzOut,_25HzOut,_50MHzIn); input _50MHzIn; output _10000HzOut,_25HzOut; parameter width1=16,value1=2499; parameter wi
3、dth2=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; end else Count = Count + 1b1;always (posedge _50MHzIn) /100 000*2*25Hz=50MHz
4、if (Cnt=value2) /Binary Counter(099999) Cnt _25HzOut = _25HzOut; else Cnt = Cnt + 1endmodule 图1,分频器仿真波形图4.2.2按键模块程序设计及仿真按键模块采用3个或门消抖,由于有两个玩家,所以设置有两个按键,采用25hz脉冲。 module xiaodou(key1, key2, _25H,k1, k2); input key1; / 按键1 input key2; / 按键2 input _25H; /脉冲25Hz output k1; output k2; assign k1=(a1|a2|a3)
5、; / assign k2=(b1|b2|b3); / 采用3个或门消抖 reg a1,a2,a3,b1,b2,b3;always (posedge _25H)begin a1=key1;a2=a1;a3=a2; b1=key2;b2=b1;b3=b2;endendmodule图2,仿真波形图4.2.3主程序模块程序设计及仿真拔河主程序开始时设有复位按键,通过左右数码管显示玩家分数,有两个led小灯代表拔河绳子的中点。拔河结束也可清零。module xin(k1, k2, rst, nrst, _25H, q, left, right); input k1; / input k2; input
6、 rst; /拔河开始复位按键 input nrst; /计分清零按键 output 2:0 q; /拔河led显示输出0 left; /左边分数数码管输出0 right; /右边分数数码管输出 reg 2:0q; reg n;0left,right; /reg寄存器always (negedge rst or posedge _25H or negedge nrst) begin if(rst) begin q=7;n=1;end /q,led回中点 n使能开 else if(nrst) begin left=0;right=0;end /计分清零 else if(n) /判断使能是否开!
7、begin case(k1,k2) / 按键组 2b01: q=q+1; / led向右移一位b10: q=q-1; / led向左移一位 default: q=q; / 保持 endcase / case(q) 3b000:begin n=0;left=left+1;end /左+1分,n使能关 b110:right=right+1;end /右+1分,n使能关n=n; /保持 endcase end图3,仿真波形图4.2.4LED模块程序设计及仿真Led设有16个灯。module led(q, _50M, led); input 2: input _50M; output 7:0 led;
8、 reg 7: always(posedge _50M)d0:led=16b11111;d1:d2:d3:d4:d5:d6:d7: / 中点d8:d9:d10:b01111;d11:b00111;d12:b10011;d13:b11001;d14:b11100;led=led;图4,仿真波形图4.2.5数码管模块程序设计及仿真module shumaguan1(left, right, _10000H, segout, wx); input _10000H; output 6:0 segout; /数码管输出0 wx; reg 6: reg 1:0 count; reg 3:0 seg_in;
9、 always(posedge _10000H) case(count)begin wx=3b011;seg_in=left;count=count+1;end /left wx +,计数输入=left,count进一位继续判断b101;=4d8;end /- wx +,计数输入=8,同上b110;=right;=0;end /rihht wx +,计数输入=right,conunt归零,重新判断always(seg_in) case(seg_in) /g f e d c b a/ 4segout=7b1000000; /0b1111001; /1b0100100; /2b0110000; /
10、3b0011001; /4b0010010; /5b0000010; /6b1111000; /7b0111111; /8b0111011; /9 endcase 图5,仿真波形图4.2.6顶层设计及仿真图6,顶层设计图7,顶层设计仿真波形图4.3适配1.选择的器件为:Cyclone II EP2C5AT144A72.引脚分配:Node NameDirectionLocation_50MHzInInputIOBANK_1key1IOBANK_2key2IOBANK_3led0OutputPIN_24led1PIN_25led2PIN_26led3PIN_30led4PIN_31led5PIN_
11、32led6PIN_27led7PIN_28led8PIN_64led9PIN_63led10PIN_60led11PIN_59led12PIN_58led13PIN_57led14PIN_55led15PIN_53nrstIOBANK_4rstEDGE_BOTTOMsegout0PIN_40segout1PIN_41segout2PIN_42segout3PIN_43segout4PIN_44segout5PIN_45segout6PIN_47wx0PIN_48wx1PIN_51wx2PIN_525、小结一开始接触这个课题的时候,不知道怎么下手,通过老师的讲解以及查找资料基本了解了拔河游戏机
12、的设计原理。通过这次课程设计,我更加感到理论和实际之间的差异很大。我也越来越强烈地感到要掌握一项技术,唯一的办法也是最好的办法就是实践。只有通过实践才能将书本上的知识应用,也只有实践才能发现很多问题,真正掌握知识,学以致用。虽然遇到的问题很多,但是同时得到很多有用的经验。这些对于以后的学习和工作都有很大的帮助。6、参考文献1 松著.EDA技术实用教程(第二版). :科学,2005.2 睿强主编.Verilog HDL数字系统设计及实践. :电子工业,2011.3 福奇主编.Verilog HDL应用程序设计实例精讲. :电子工业,2009.4王秀琴主编.数字系统设计入门与应用实例.:电子工业,2012.5侯建军主编.spoc技术基础教程.:清华大学,2008.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1