您当前的位置:首页 >  党建材料 >  入党介绍人意见 > 内容

eda拔河游戏机课程设计报告

无忧文档网    时间: 2021-01-11 18:19:39     阅读:

报告书写要求 1、 报告的撰写要求条理清晰、语言准确、表述简明。报告中段首空两个字符,中文字体为宋体五号,数字、字符、字母为Times New Roman五号,且单倍行距。

2、 报告中插图应与文字紧密配合,文图相符,技术内容正确。每个图都应配有图题(由图号和图名组成)。图题(宋体小五号)置于图下居中,其中图号按顺序编排,图名在图号之后空一格排写。图中若有分图时,分图号用(a)、(b)等置于分图之下。注:框图、流程图(矢量图)用专业画图软件。

3、 报告中插表应与文字紧密配合,文表相符,技术内容正确。表格不加左、右边线,上、下线需加粗(1.5磅),每个表应配有表题(由表号和表名组成)。表题(宋体小五号)置于表上居中,其中表号按顺序编排,表名在表号之后空一格排写。

4、 报告中公式原则上居中书写。注:公式编辑器编写。

5、 设计报告应按如下内容和顺序A4纸打印、左侧装订成册。

一、设计目的 1.掌握数字系统的设计方法;

2.掌握硬件描述语言——Verilog HDL;

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管发亮时,表示比赛结束,这时,电路自锁,保持当前状态不变,除非由裁判使电路复位,并对获胜的一方计数器自动加一。记分电路用两位七段数码管分别对双方得分进行累计,在每次比赛结束时电路自动加分。当比赛结束时,计分器清零,为下一次比赛做好准备。

拔河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*10000Hz=50MHz if (Count==value1) //Binary Counter(0~2499) begin Count <= 15'd0; _10000HzOut <= ~_10000HzOut; end else Count <= Count + 1'b1; always @(posedge _50MHzIn) //100 000*2*25Hz=50MHz if (Cnt==value2) //Binary Counter(0~99999) begin Cnt <= 15'd0; _25HzOut <= ~_25HzOut; end else Cnt <= Cnt + 1'b1; 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); //// 采用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; // input rst; //拔河开始复位按键 input nrst; //计分清零按键 input _25H; // output [2:0] q; //拔河led显示输出 output [2:0] left; //左边分数数码管输出 output [2:0] right; //右边分数数码管输出 reg [2:0]q; reg n; reg [2:0]left,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}) // 按键组 2'b01: q=q+1; /// led向右移一位 2'b10: q=q-1; //// led向左移一位 default: q=q; /// 保持 endcase // case(q) 3'b000:begin n=0;left=left+1;end //左+1分,n使能关 3'b110:begin n=0;right=right+1;end //右+1分,n使能关 default:n<=n; //保持 endcase end end endmodule 图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(q) 3'd0:led=16'b0011111111111111; 3'd1:led=16'b1001111111111111; 3'd2:led=16'b1100111111111111; 3'd3:led=16'b1110011111111111; 3'd4:led=16'b1111001111111111; 3'd5:led=16'b1111100111111111; 3'd6:led=16'b1111110011111111; 3'd7:led=16'b1111111001111111; // 中点 3'd8:led=16'b1111111100111111; 3'd9:led=16'b1111111110011111; 3'd10:led=16'b1111111111001111; 3'd11:led=16'b1111111111100111; 3'd12:led=16'b1111111111110011; 3'd13:led=16'b1111111111111001; 3'd14:led=16'b1111111111111100; default:led<=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) 2'd0:begin wx<=3'b011;seg_in<=left;count<=count+1;end //left wx +,计数输入=left,count进一位继续判断 2'd1:begin wx<=3'b101;seg_in<=4'd8;count<=count+1;end //- wx +,计数输入=8,同上 2'd2:begin wx<=3'b110;seg_in<=right;count<=0;end //rihht wx +,计数输入=right,conunt归零,重新判断 endcase always@(seg_in) case(seg_in) //g f e d c b a// 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.选择的器件为:Cyclone II EP2C5AT144A7 2.引脚分配:
Node Name 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 五、 小结 一开始接触这个课题的时候,不知道怎么下手,通过老师的讲解以及查找资料基本了解了拔河游戏机的设计原理。通过这次课程设计,我更加感到理论和实际之间的差异很大。我也越来越强烈地感到要掌握一项技术,唯一的办法也是最好的办法就是实践。只有通过实践才能将书本上的知识应用,也只有实践才能发现很多问题,真正掌握知识,学以致用。虽然遇到的问题很多,但是同时得到很多有用的经验。这些对于以后的学习和工作都有很大的帮助。

六、 参考文献 [1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005. [2] 刘睿强主编.Verilog HDL数字系统设计及实践. 北京:电子工业出版社,2011. [3] 刘福奇主编.Verilog HDL应用程序设计实例精讲. 北京:电子工业出版社,2009. [4]王秀琴主编.数字系统设计入门与应用实例.北京:电子工业出版社,2012. [5]侯建军主编.spoc技术基础教程.北京:清华大学出版社,2008.

《eda拔河游戏机课程设计报告.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:

文档为doc格式

相关热搜

《eda拔河游戏机课程设计报告.doc》

VIP请直接点击按钮下载本文的Word文档下载到电脑,请使用最新版的WORD和WPS软件打开,如发现文档不全可以联系客服申请处理。

文档下载
VIP免费下载文档

浏览记录