eda拔河游戏机课程设计报告.docx
- 文档编号:3582845
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:11
- 大小:138.36KB
eda拔河游戏机课程设计报告.docx
《eda拔河游戏机课程设计报告.docx》由会员分享,可在线阅读,更多相关《eda拔河游戏机课程设计报告.docx(11页珍藏版)》请在冰豆网上搜索。
eda拔河游戏机课程设计报告
报告书写要求
1、报告的撰写要求条理清晰、语言准确、表述简明。
报告中段首空两个字符,中文字体为宋体五号,数字、字符、字母为TimesNewRoman五号,且单倍行距。
2、报告中插图应与文字紧密配合,文图相符,技术容正确。
每个图都应配有图题(由图号和图名组成)。
图题(宋体小五号)置于图下居中,其中图号按顺序编排,图名在图号之后空一格排写。
图中若有分图时,分图号用(a)、(b)等置于分图之下。
注:
框图、流程图(矢量图)用专业画图软件。
3、报告中插表应与文字紧密配合,文表相符,技术容正确。
表格不加左、右边线,上、下线需加粗(1.5磅),每个表应配有表题(由表号和表名组成)。
表题(宋体小五号)置于表上居中,其中表号按顺序编排,表名在表号之后空一格排写。
4、报告中公式原则上居中书写。
注:
公式编辑器编写。
5、设计报告应按如下容和顺序A4纸打印、左侧装订成册。
一、设计目的
1.掌握数字系统的设计方法;
2.掌握硬件描述语言——VerilogHDL;
3.掌握模块化设计方法;
4.掌握开发软件的使用方法。
二、设计要求
(1)设计拔河游戏电路,用按键与LED表示输入与输出。
(2)初始时,16个LED中间的两个点亮,然后游戏双方不停按动按键,点亮的两个LED向按动按键慢的一方移动;
(3)每按动一下按键,LED向对方移动一格;
(4)只要LED移动到头,游戏结束;
(5)由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,输入信号无效。
用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。
(6)完成全部流程:
设计规文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、时序仿真、下载验证等。
(7)三、设计环境
计算机、QuatusII开发软件
四、设计容(设计原理和方案、程序设计、仿真分析和适配)
4.1设计原理和方案
电子拔河游戏机是一种能容纳甲乙双方参赛或甲乙双方加裁判的三人游戏电路。
由一排16个LED发光二极管表示拔河的“电子绳”。
由甲乙双方通过按钮开关使发光的LED管向自己一方的终点延伸,当延伸到某方的最后一LED管时,则该方失败,对方获胜,并对获胜次数进行计数,连续比赛多局以定胜负。
比赛开始,由裁判下达比赛命令后,甲乙双方才能输入信号,否则,输入信号无效。
裁判信号由键盘空格键来控制。
“电子绳”由16个LED管构成,裁判下达“开始比赛”的命令后,摁一下空格键,位于“电子绳”中点的LED发亮。
甲乙双方通过按键输入信号,使发亮的LED管向自己一方移动,并阻止其向对方延伸,谁摁得快就向这一方移动。
当从中点至自己一方的最后一个LED管发亮时,表示比赛结束,这时,电路自锁,保持当前状态不变,除非由裁判使电路复位,并对获胜的一方计数器自动加一。
记分电路用两位七段数码管分别对双方得分进行累计,在每次比赛结束时电路自动加分。
当比赛结束时,计分器清零,为下一次比赛做好准备。
4.2程序设计及仿真
4.2.1分频器模块程序设计及仿真
modulefpq(_10000HzOut,_25HzOut,_50MHzIn);
input_50MHzIn;
output_10000HzOut,_25HzOut;
parameterwidth1=16,value1=2499;
parameterwidth2=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)//BinaryCounter(0~2499)
begin
Count<=15'd0;_10000HzOut<=~_10000HzOut;
end
elseCount<=Count+1'b1;
always(posedge_50MHzIn)//100000*2*25Hz=50MHz
if(Cnt==value2)//BinaryCounter(0~99999)
begin
Cnt<=15'd0;_25HzOut<=~_25HzOut;
end
elseCnt<=Cnt+1'b1;
endmodule
图1,分频器仿真波形图
4.2.2按键模块程序设计及仿真
按键模块采用3个或门消抖,由于有两个玩家,
所以设置有两个按键,采用25hz脉冲。
modulexiaodou(key1,key2,_25H,k1,k2);
inputkey1;////按键1
inputkey2;////按键2
input_25H;//脉冲25Hz
outputk1;
outputk2;
assignk1=(a1|a2|a3);////
assignk2=(b1|b2|b3);////采用3个或门消抖
rega1,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小灯代表拔河绳子的中点。
拔河结束也可清零。
modulexin(k1,k2,rst,nrst,_25H,q,left,right);
inputk1;//
inputk2;//
inputrst;//拔河开始复位按键
inputnrst;//计分清零按键
input_25H;//
output[2:
0]q;//拔河led显示输出
output[2:
0]left;//左边分数数码管输出
output[2:
0]right;//右边分数数码管输出
reg[2:
0]q;
regn;
reg[2:
0]left,right;//reg寄存器
always(negedgerstorposedge_25Hornegedgenrst)
begin
if(~rst)beginq=7;n=1;end//q,led回中点n使能开
elseif(~nrst)beginleft=0;right=0;end//计分清零
elseif(n)//判断使能是否开!
begincase({k1,k2})//按键组
2'b01:
q=q+1;///led向右移一位
2'b10:
q=q-1;////led向左移一位
default:
q=q;///保持
endcase//
case(q)
3'b000:
beginn=0;left=left+1;end//左+1分,n使能关
3'b110:
beginn=0;right=right+1;end//右+1分,n使能关
default:
n<=n;//保持
endcase
end
end
endmodule
图3,仿真波形图
4.2.4LED模块程序设计及仿真
Led设有16个灯。
moduleled(q,_50M,led);
input[2:
0]q;
input_50M;
output[7:
0]led;
reg[7:
0]led;
always(posedge_50M)
case(q)
3'd0:
led=16'b11111;
3'd1:
led=16'b11111;
3'd2:
led=16'b11111;
3'd3:
led=16'b11111;
3'd4:
led=16'b11111;
3'd5:
led=16'b11111;
3'd6:
led=16'b11111;
3'd7:
led=16'b11111;//中点
3'd8:
led=16'b11111;
3'd9:
led=16'b11111;
3'd10:
led=16'b01111;
3'd11:
led=16'b00111;
3'd12:
led=16'b10011;
3'd13:
led=16'b11001;
3'd14:
led=16'b11100;
default:
led<=led;
endcase
endmodule
图4,仿真波形图
4.2.5数码管模块程序设计及仿真
moduleshumaguan1(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)
2'd0:
beginwx<=3'b011;seg_in<=left;count<=count+1;end//leftwx+,计数输入=left,count进一位继续判断
2'd1:
beginwx<=3'b101;seg_in<=4'd8;count<=count+1;end//-wx+,计数输入=8,同上
2'd2:
beginwx<=3'b110;seg_in<=right;count<=0;end//rihhtwx+,计数输入=right,conunt归零,重新判断
endcase
always(seg_in)
case(seg_in)//gfedcba//
4'd0:
segout<=7'b1000000;//0
4'd1:
segout<=7'b1111001;//1
4'd2:
segout<=7'b0100100;//2
4'd3:
segout<=7'b0110000;//3
4'd4:
segout<=7'b0011001;//4
4'd5:
segout<=7'b0010010;//5
4'd6:
segout<=7'b0000010;//6
4'd7:
segout<=7'b1111000;//7
4'd8:
segout<=7'b0111111;//8
4'd9:
segout<=7'b0111011;//9
default:
segout<=7'b1000000;
endcase
endmodule
图5,仿真波形图
4.2.6顶层设计及仿真
图6,顶层设计
图7,顶层设计仿真波形图
4.3适配
1.选择的器件为:
CycloneIIEP2C5AT144A7
2.引脚分配:
NodeName
Direction
Location
_50MHzIn
Input
IOBANK_1
key1
Input
IOBANK_2
key2
Input
IOBANK_3
led[0]
Output
PIN_24
led[1]
Output
PIN_25
led[2]
Output
PIN_26
led[3]
Output
PIN_30
led[4]
Output
PIN_31
led[5]
Output
PIN_32
led[6]
Output
PIN_27
led[7]
Output
PIN_28
led[8]
Output
PIN_64
led[9]
Output
PIN_63
led[10]
Output
PIN_60
led[11]
Output
PIN_59
led[12]
Output
PIN_58
led[13]
Output
PIN_57
led[14]
Output
PIN_55
led[15]
Output
PIN_53
nrst
Input
IOBANK_4
rst
Input
EDGE_BOTTOM
segout[0]
Output
PIN_40
segout[1]
Output
PIN_41
segout[2]
Output
PIN_42
segout[3]
Output
PIN_43
segout[4]
Output
PIN_44
segout[5]
Output
PIN_45
segout[6]
Output
PIN_47
wx[0]
Output
PIN_48
wx[1]
Output
PIN_51
wx[2]
Output
PIN_52
5、小结
一开始接触这个课题的时候,不知道怎么下手,通过老师的讲解以及查找资料基本了解了拔河游戏机的设计原理。
通过这次课程设计,我更加感到理论和实际之间的差异很大。
我也越来越强烈地感到要掌握一项技术,唯一的办法也是最好的办法就是实践。
只有通过实践才能将书本上的知识应用,也只有实践才能发现很多问题,真正掌握知识,学以致用。
虽然遇到的问题很多,但是同时得到很多有用的经验。
这些对于以后的学习和工作都有很大的帮助。
6、参考文献
[1]松著.EDA技术实用教程(第二版).:
科学,2005.
[2]睿强主编.VerilogHDL数字系统设计及实践.:
电子工业,2011.
[3]福奇主编.VerilogHDL应用程序设计实例精讲.:
电子工业,2009.
[4]王秀琴主编.数字系统设计入门与应用实例.:
电子工业,2012.
[5]侯建军主编.spoc技术基础教程.:
清华大学,2008.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 拔河 游戏机 课程设计 报告