- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.. . .
. 学习.资料.
报告书写要求
报告的撰写要求条理清晰、语言准确、表述简明。报告中段首空两个字符,中文字体为宋体五号,数字、字符、字母为Times New Roman五号,且单倍行距。
报告中插图应与文字紧密配合,文图相符,技术容正确。每个图都应配有图题(由图号和图名组成)。图题(宋体小五号)置于图下居中,其中图号按顺序编排,图名在图号之后空一格排写。图中若有分图时,分图号用(a)、(b)等置于分图之下。注:框图、流程图(矢量图)用专业画图软件。
报告中插表应与文字紧密配合,文表相符,技术容正确。表格不加左、右边线,上、下线需加粗(1.5磅),每个表应配有表题(由表号和表名组成)。表题(宋体小五号)置于表上居中,其中表号按顺序编排,表名在表号之后空一格排写。
报告中公式原则上居中书写。注:公式编辑器编写。
设计报告应按如下容和顺序A4纸打印、左侧装订成册。
一、设计目的
1.掌握数字系统的设计方法;
2.掌握硬件描述语言——Verilog HDL;
3.掌握模块化设计方法;
4.掌握开发软件的使用方法。
二、设计要求
(1)设计拔河游戏电路,用按键与LED表示输入与输出。
(2)初始时,16个LED中间的两个点亮,然后游戏双方不停按动按键,点亮的两个LED向按动按键慢的一方移动;
(3)每按动一下按键,LED向对方移动一格;
(4)只要LED移动到头,游戏结束;
(5)由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,输入信号无效。
用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。
完成全部流程:设计规文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、时序仿真、下载验证等。
三、设计环境
计算机、QuatusII开发软件
四、设计容(设计原理和方案、程序设计、仿真分析和适配)
4.1设计原理和方案
电子拔河游戏机是一种能容纳甲乙双方参赛或甲乙双方加裁判的三人游戏电路。由一排16个LED发光二极管表示拔河的“电子绳”。由甲乙双方通过按钮开关使发光的LED管向自己一方的终点延伸,当延伸到某方的最后一LED管时,则该方失败,对方获胜,并对获胜次数进行计数,连续比赛多局以定胜负。比赛开始,由裁判下达比赛命令后,甲乙双方才能输入信号,否则,输入信号无效。裁判信号由键盘空格键来控制。“电子绳”由16个LED管构成,裁判下达“开始比赛”的命令后,摁一下空格键,位于“电子绳”中点的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
文档评论(0)