- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录
一、 课设题目及目的
二、 课设任务
三、 设计分析及系统方案设计
四、 系统VHDL设计
五、 各模块的VHDL程序设计
六 、小组分工
七、 课程设计总结及体会
一、 课设题目及目的
课设题目:打地虫游戏设计
课设目的:通过课设,使我们进一步弄懂所学到的课本知识,巩固和深化对VHDL语言的运用,提高其应用于技术的实践操作技能,掌握VHDL语言应用于系统设计、研制的方法,充分掌握MAXPLUS2的使用方法,培养利用科技革新、开发和创新的基本能力,为毕业后从事与其相关的工作打下一定的基础。
二、课设任务
本课题为利用VHDL语言设置打地虫游戏设的程序,其显示效果为:
1、功能:由8只LED代表虫洞,8个按键代表打虫棒,虫子随机在8虫洞随机出现(LED亮)1s,1s内按相应的虫棒即算打中地虫,得一分,按错或1S内按过其他键或未按键即丢1分。间隔2S出现下一只虫子。10只虫算一关,得分0即进入下一关,重新从0积分,否则游戏结束。
2、要求:上电时数码管显示“STAr--00”,按“开始”
打关时数码管显示 关数和分数;
过关时数码管显示“STAr--XX”(XX为下一关数),按“开始”键,进入下一关;
每过一关,虫子出现的时间为上一关的3/4,共设计8关。
8关全过时显示“--end --”
3、发挥:声效、过关音乐等。
三、设计分析及系统方案设计
随机信号模块设计
为满足每关亮一个灯的设计要求,方案采用初始值八位移位寄存器。移位寄存器输出一个高电平,能满足设计要求。
为满足每回合灯亮随机,采用伪随机数发生器,产生一个高低电平随机的信号作为上述移位寄存器的时钟。由于时钟是随机的,故移位寄存器的输出也是随机的。
开始显示以及过关显示模块
开始模块,在上电开始时,先显示一段字幕,当按开始键后才会显示,第一关并开始击打。第一关结束后数码管上会显示关数当按开始键后才会进入下一关。
击打计分过关模块
击打模块的原理,用一个变量 jian作为寄存器,来存储键值。然后和随机给出的灯值比较。利用关数来实现对每关灯亮的时间计时,在灯亮的期间击打才会有效,灯灭的时候击打无效。
蜂鸣器模块设计
蜂鸣器时钟与随机信号时钟保持一致,当有击打信号时,或者关数加一时,蜂鸣器发出声音,以实现附加功能。
元件例化模块
最后对四个模块进行元件例化,利用端口映射,整合到一个实体里面,实现对各个模块的调用。
系统VHDL设计
引脚绑定
接口
名称
类型
(输入/输出)
结构图上
的信号名
引脚号
Hitout[7··0]
输入
Hitout[7··0]
73,71,70,69,68,67,65,64,
Start
输入
Start
89
Clk
输入
Clk
79
Clk1
输入
Clk1
183
Bellout
输出
Bellout
63
Ledout[7··0]
输出
Ledout[7··0]
196,197,198,199,200,202,203,205
Wei[7··0]
输出
Wei[7··0]
170,172,173,174,175,176,177,179,169
Duan[7··0]
输出
Duan[7··0]
179,187,189,190,
191,192,193,195
各模块的VHDL程序设计
Clk1 output
Clk1 output
[7··0]
Counter
VHDL语言描述:
LIBRARY IEEE; --随机信号产生部分
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY COUNTER IS
PORT(CLK1:IN STD_LOGIC; --时钟信号输入
OUTPUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --随机数输出
END COUNTER;
ARCHITECTURE BEHAV OF COUNTER IS
SIGNAL Q1:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS(CLK1)
BEGIN
IF CLK1EVENT AND CLK1 =1THEN --clk1的周期为随机的,故高电平的位是随机的
CASE Q1 IS
WHENQ1 --输出高电平表示对应的灯亮
WHENQ1
WHENQ1=0000
文档评论(0)