《eda拔河游戏机课程设计报告.docx》由会员分享,可在线阅读,更多相关《eda拔河游戏机课程设计报告.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、eda拔河游戏机课程设计报告 报告书写要求 1、 报告的撰写要求条理清楚、语言精确、表述简明。报告中段首空两个字符,中文字体为宋体五号,数字、字符、字母为Times New Roman五号,且单倍行距。 2、 报告中插图应与文字紧密协作,文图相符,技术内容正确。每个图都应配有图题(由图号和图名组成)。图题(宋体小五号)置于图下居中,其中图号按依次编排,图名在图号之后空一格排写。图中若有分图时,分图号用(a)、(b)等置于分图之下。注:框图、流程图(矢量图)用专业画图软件。3、 报告中插表应与文字紧密协作,文表相符,技术内容正确。表格不加左、右边线,上、下线需加粗(1.5磅),每个表应配有表题(
2、由表号和表名组成)。表题(宋体小五号)置于表上居中,其中表号按依次编排,表名在表号之后空一格排写。4、 报告中公式原则上居中书写。注:公式编辑器编写。5、 设计报告应按如下内容和依次A4纸打印、左侧装订成册。 一、设计目的 1驾驭数字系统的设计方法; 2驾驭硬件描述语言Verilog HDL; 3驾驭模块化设计方法; 4驾驭开发软件的运用方法。 二、设计要求 (1)设计拔河嬉戏电路,用按键与LED表示输入与输出。 (2)初始时,16个LED中间的两个点亮,然后嬉戏双方不停按动按键,点亮的两个LED向按动按键慢的一方移动; (3)每按动一下按键,LED向对方移动一格; (4)只要LED移动到头,
3、嬉戏结束; (5)由裁判下达竞赛起先吩咐后,甲乙双方才能输入信号,否则,输入信号无效。 用数码管显示获胜者的盘数,每次竞赛结束自动给获胜方加分。 (6) 完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、时序仿真、下载验证等。(7) 三、设计环境 计算机、QuatusII开发软件 四、设计内容(设计原理和方案、程序设计、仿真分析和适配) 4.1设计原理和方案 电子拔河嬉戏机是一种能容纳甲乙双方参赛或甲乙双方加裁判的三人嬉戏电路。由一排16个LED发光二极管表示拔河的“电子绳”。由甲乙双方通过按钮开关使发光的LED管向自己一方的终点延长,当延长到某方的最终一LED管
4、时,则该方失败,对方获胜,并对获胜次数进行计数,连续竞赛多局以定输赢。竞赛起先,由裁判下达竞赛吩咐后,甲乙双方才能输入信号,否则,输入信号无效。裁判信号由键盘空格键来限制。“电子绳”由16个LED管构成,裁判下达“起先竞赛”的吩咐后,摁一下空格键,位于“电子绳”中点的LED发亮。甲乙双方通过按键输入信号,使发亮的LED管向自己一方移动,并阻挡其向对方延长,谁摁得快就向这一方移动。当从中点至自己一方的最终一个LED管发亮时,表示竞赛结束,这时,电路自锁,保持当前状态不变,除非由裁判使电路复位,并对获胜的一方计数器自动加一。记分电路用两位七段数码管分别对双方得分进行累计,在每次竞赛结束时电路自动加
5、分。当竞赛结束时,计分器清零,为下一次竞赛做好打算。 拔河LED显示模块 主限制电路模块 按键模块 计分数码管显示模块 4.2程序设计及仿真 4.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
6、-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 if (Cnt=value2) /Binary Counter(099999) begin Cnt <= 15d0; _2
7、5HzOut <= _25HzOut; end else Cnt <= Cnt + 1b1; endmodule 图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); / assign k2=(b1|b2|b3); /
8、 采纳3个或门消抖 reg a1,a2,a3,b1,b2,b3; always (posedge _25H) begin a1<=key1;a2<=a1;a3<=a2; b1<=key2;b2<=b1;b3<=b2; end endmodule 图2,仿真波形图 4.2.3主程序模块程序设计及仿真 拔河主程序起先时设有复位按键,通过左右数码管显示玩家分数,有两个led小灯代表拔河绳子的中点。拔河结束也可清零。 module xin(k1, k2, rst, nrst, _25H, q, left, right); input k1; / input k2;
9、/ 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) begin if(rst) begin q=7;n=1;end /q,led回中点 n使能开 else if(nrst) beg
10、in 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; /保持 endcase end end endmodule 图3,仿真波形
11、图 4.2.4LED模块程序设计及仿真 Led设有16个灯。module led(q, _50M, led); input 2:0 q; input _50M; output 7:0 led; reg 7:0 led; always(posedge _50M) case(q) 3d0:led=16b0011111111111111; 3d1:led=16b1001111111111111; 3d2:led=16b1100111111111111; 3d3:led=16b1110011111111111; 3d4:led=16b1111001111111111; 3d5:led=16b11111
12、00111111111; 3d6:led=16b1111110011111111; 3d7:led=16b1111111001111111; / 中点 3d8:led=16b1111111100111111; 3d9:led=16b1111111110011111; 3d10:led=16b1111111111001111; 3d11:led=16b1111111111100111; 3d12:led=16b1111111111110011; 3d13:led=16b1111111111111001; 3d14:led=16b1111111111111100; default:led<=
13、led; endcase endmodule 图4,仿真波形图 4.2.5数码管模块程序设计及仿真 module shumaguan1(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&
14、lt;=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归零,重新推断 endcase always(seg_in) case(seg_in) /g f e d c
15、b a/ 4d0:segout<=7b1000000; /0 4d1:segout<=7b1111001; /1 4d2:segout<=7b0100100; /2 4d3:segout<=7b0110000; /3 4d4:segout<=7b0011001; /4 4d5:segout<=7b0010010; /5 4d6:segout<=7b0000010; /6 4d7:segout<=7b1111000; /7 4d8:segout<=7b0111111; /8 4d9:segout<=7b0111011; /9 defau
16、lt:segout<=7b1000000; endcase endmodule 图5,仿真波形图 4.2.6顶层设计及仿真 图6,顶层设计 图7,顶层设计仿真波形图 4.3适配 1.选择的器件为:Cyclone II EP2C5AT144A7 2.引脚安排: Node Name Direction Location _50MHzIn Input IOBANK_1 key1 Input IOBANK_2 key2 Input IOBANK_3 led0 Output PIN_24 led1 Output PIN_25 led2 Output PIN_26 led3 Output PIN_3
17、0 led4 Output PIN_31 led5 Output PIN_32 led6 Output PIN_27 led7 Output PIN_28 led8 Output PIN_64 led9 Output PIN_63 led10 Output PIN_60 led11 Output PIN_59 led12 Output PIN_58 led13 Output PIN_57 led14 Output PIN_55 led15 Output PIN_53 nrst Input IOBANK_4 rst Input EDGE_BOTTOM segout0 Output PIN_40
18、segout1 Output PIN_41 segout2 Output PIN_42 segout3 Output PIN_43 segout4 Output PIN_44 segout5 Output PIN_45 segout6 Output PIN_47 wx0 Output PIN_48 wx1 Output PIN_51 wx2 Output PIN_52 五、 小结 一起先接触这个课题的时候,不知道怎么下手,通过老师的讲解以及查找资料基本了解了拔河嬉戏机的设计原理。通过这次课程设计,我更加感到理论和实际之间的差异很大。我也越来越剧烈地感到要驾驭一项技术,唯一的方法也是最好的方法就
19、是实践。只有通过实践才能将书本上的学问应用,也只有实践才能发觉许多问题,真正驾驭学问,学以致用。虽然遇到的问题许多,但是同时得到许多有用的阅历。这些对于以后的学习和工作都有很大的帮助。 六、 参考文献 1 潘松著.EDA技术好用教程(其次版). 北京:科学出版社,2005. 2 刘睿强主编.Verilog HDL数字系统设计及实践. 北京:电子工业出版社,2011. 3 刘福奇主编.Verilog HDL应用程序设计实例精讲. 北京:电子工业出版社,2009. 4王秀琴主编.数字系统设计入门与应用实例.北京:电子工业出版社,2012. 5侯建军主编.spoc技术基础教程.北京:清华高校出版社,2008.