《eda拔河游戏机课程教学设计报告.doc》由会员分享,可在线阅读,更多相关《eda拔河游戏机课程教学设计报告.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-/报告书写要求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移动到头,游戏结束;(5)由裁判下达比赛开始命令后,甲乙
3、双方才能输入信号,否则,输入信号无效。 用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。(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-1:0 Cnt;always (posedge _50MHzIn) /2500*2
6、*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; _25HzOut = _25HzOut; end else Cnt = Cnt + 1b1;endmodule 图1,分频器仿真
7、波形图4.2.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)begin a1=key1;a2=a1;a3=a2; b1
8、=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 rst; /拔河开始复位按键input nrst; /计分清零按键input _25H; /output 2:0 q; /拔河led显示输出output 2:0 left; /左边分数数码管输出output 2:0 r
9、ight; /右边分数数码管输出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) begin left=0;right=0;end /计分清零 else if(n) /判断使能是否开! begin case(k1,k2) / 按键组 2b01: q=q+1; / led向右移一位 2b10: q=q-1; / led向左移一位 defa
10、ult: 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 endendmodule图3,仿真波形图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(
11、q) 3d0:led=16b0011111111111111; 3d1:led=16b1001111111111111; 3d2:led=16b1100111111111111; 3d3:led=16b1110011111111111; 3d4:led=16b1111001111111111; 3d5:led=16b1111100111111111; 3d6:led=16b1111110011111111; 3d7:led=16b1111111001111111; / 中点 3d8:led=16b1111111100111111; 3d9:led=16b1111111110011111; 3d
12、10:led=16b1111111111001111; 3d11:led=16b1111111111100111; 3d12:led=16b1111111111110011; 3d13:led=16b1111111111111001; 3d14:led=16b1111111111111100; default:led=led; endcaseendmodule图4,仿真波形图4.2.5数码管模块程序设计及仿真module shumaguan1(left, right, _10000H, segout, wx);input 2:0 left;input 2:0 right;input _1000
13、0H;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=
14、3b110;seg_in=right;count=0;end /rihht wx +,计数输入=right,conunt归零,重新判断 endcasealways(seg_in) case(seg_in) /g f e d c 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:se
15、gout=7b1111000; /7 4d8:segout=7b0111111; /8 4d9:segout=7b0111011; /9 default:segout=7b1000000; endcase endmodule图5,仿真波形图4.2.6顶层设计及仿真图6,顶层设计图7,顶层设计仿真波形图4.3适配1.选择的器件为:Cyclone II EP2C5AT144A72.引脚分配:Node NameDirectionLocation_50MHzInInputIOBANK_1key1InputIOBANK_2key2InputIOBANK_3led0OutputPIN_24led1Outp
16、utPIN_25led2OutputPIN_26led3OutputPIN_30led4OutputPIN_31led5OutputPIN_32led6OutputPIN_27led7OutputPIN_28led8OutputPIN_64led9OutputPIN_63led10OutputPIN_60led11OutputPIN_59led12OutputPIN_58led13OutputPIN_57led14OutputPIN_55led15OutputPIN_53nrstInputIOBANK_4rstInputEDGE_BOTTOMsegout0OutputPIN_40segout1
17、OutputPIN_41segout2OutputPIN_42segout3OutputPIN_43segout4OutputPIN_44segout5OutputPIN_45segout6OutputPIN_47wx0OutputPIN_48wx1OutputPIN_51wx2OutputPIN_525、 小结一开始接触这个课题的时候,不知道怎么下手,通过老师的讲解以及查找资料基本了解了拔河游戏机的设计原理。通过这次课程设计,我更加感到理论和实际之间的差异很大。我也越来越强烈地感到要掌握一项技术,唯一的办法也是最好的办法就是实践。只有通过实践才能将书本上的知识应用,也只有实践才能发现很多问题,真正掌握知识,学以致用。虽然遇到的问题很多,但是同时得到很多有用的经验。这些对于以后的学习和工作都有很大的帮助。 6、 参考文献1 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.2 刘睿强主编.Verilog HDL数字系统设计及实践. 北京:电子工业出版社,2011.3 刘福奇主编.Verilog HDL应用程序设计实例精讲. 北京:电子工业出版社,2009.4王秀琴主编.数字系统设计入门与应用实例.北京:电子工业出版社,2012.5侯建军主编.spoc技术基础教程.北京:清华大学出版社,2008.
限制150内