河北科技大学EDA课程设计报告Word文档格式.docx
《河北科技大学EDA课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《河北科技大学EDA课程设计报告Word文档格式.docx(9页珍藏版)》请在冰点文库上搜索。
![河北科技大学EDA课程设计报告Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/8ab329f0-8686-461a-8116-717dd19d9696/8ab329f0-8686-461a-8116-717dd19d96961.gif)
起止时间
2015年6月26日—7月2日
设计题目
打地鼠游戏设计
指
导
教
师
评
语
年月日
一、设计题目及要求……………………………3
二、系统结构框图………………………………3
三、状态流程图…………………………………4
四、程序清单……………………………………6
五、调试及仿真波形……………………………8
六、设计分工………………………………10
七、心得与体会………………………………10
八、参考文献………………………………12
一、设计题目及要求
1、功能:
由8只LED代表虫洞,8个按键代表打虫棒,虫子随机在8虫洞随机出现(LED亮)1s,1s按相应的虫棒即算打中地虫,得一分,按错或1S按过其他键或未按键即丢1分。
间隔2S出现下一只虫子。
10只虫算一关,打对十只算本关通过,重新从0积分,否则游戏结束。
2、要求:
上电时数码管显示“STAr--00”并闪烁,按“开始”键,进入第一局;
打关时数码管显示关数和分数;
过关时数码管显示“STAr--XX”并闪烁(XX为下一关数),按“开始”键,进入下一关;
每过一关,虫子出现的时间为上一关的3/4,共设计8关。
8关全过时显示“--end--”
3、发挥:
声效、过关音乐等。
二、系统结构框图
1.总系统框图
2.各个模块的功能描述
1)分数判断模块
判断选手得分或失分主要是由一个比较器完成的,将系统传给LED灯的信号与选手输入的信号作比较,相同则加分,否则扣分,这两个信号分别传给计分模块,从而完成系统判定得分的工作。
2)系统时钟模块
将部2MHz的时钟分频为1Hz、及游戏时钟,供以后程序适使用。
3)键盘电路
主要通过产生行扫描,来识别用户的按键,其提供给控制器按键的编码。
4)等级判断模块
判断等级,若游戏未开始时,将等级设为初始值,游戏开始后则判断每一等级是否按对次数是否大于按错次数,是责加分,否则相应减分。
并通过分数的正负进行等级的判断及变化。
5)随机数产生模块
为使得测试结果的公平性,需要L9-L16等灯亮灭具有随机性,因而需要随机数产生过程,在本课设中,采用伪随机数产生方法,即在ROM中存入随机表中的数据,游戏开始后采用一个计数器不断计数,并通过计数寻址,读出存储的随机数据,传送至灯进行显示。
6)显示模块
用来显示地虫的出现位置及各关、分数等
三、状态流程图
四、程序清单
libraryieee;
--蜂鸣器部分
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitybellis
port(
clk1:
instd_logic;
--时钟信号输入
right,wrong:
--正确、错误脉冲输入
bellout:
outstd_logic--时钟驱动输出
);
endbell;
architecturefuncofbellis
signalcountr:
integerrange0to7;
--RIGHT时用于声音频率分频的计数器
signalcountw:
integerrange0to3;
--WRONG时用于声音频率分频的计数器
signalcounttime1,counttime2:
integerrange0to399;
--控制声音长短
signaloutr,outw,rf,wf:
std_logic:
='
0'
;
--正确输出、错误输出,时间标志
begin
process(right,clk1)
begin
if(right='
andrf='
)thenoutr<
--由right或rf启动驱动蜂鸣器
elsif(clk1'
eventandclk1='
1'
)then
if(countr=countr'
high)then
countr<
=0;
outr<
else
=countr+1;
endif;
if(counttime1=counttime1'
counttime1<
rf<
--达到发声时长,时间标志清零
elsecounttime1<
=counttime1+1;
endif;
endprocess;
process(wrong,clk1)
if(wrong='
andwf='
)thenoutw<
--由wrong或wf启动驱动蜂鸣器
if(countw=countw'
countw<
outw<
else
=countw+1;
endif;
if(counttime2=counttime2'
counttime2<
wf<
elsecounttime2<
=counttime2+1;
endprocess;
bellout<
=(outroroutw);
--由于right和wrong脉冲不会同时到来,可将outr和outw或后输出
endfunc;
五、调试及仿真波形
1.仿真波形
2.程序硬件调试
把实验箱串口插头与串口线(已经与pc机串口相连)联接
1)将程序正确下载到FPGA上,引脚绑定情况如下表:
信号名
对应器件名
管脚名
Clk1
石英晶振
79
Clk2
183
Sp
蜂鸣器
63
Start
按键K15
88
Reset
按键K16
89
a(7downto0)
按键K1,K2,K3,K4,K5,K6,K7,K8
64,65,67,68,69,70,
71,73
deng(7downto0)
Led灯L16、l15、L14、l13、L12、l11、L10、l9、
205、203、202、200、
199、198、197、196
y1(7downto0)
段码M4D、M4C、M4B、M4A、M3D、M3C、M3B、M3A
195、193、192、191
190、189、187、179
wei(7downto0)
位码M2D、M2C、M2B、M2A、M1D、M1C、M1B、M1A
177、176、175、174
173、172、170、169
2)点击start按钮K15灯亮,表示游戏开始,开始计分。
3)点击reset按钮K16灯亮,无论游戏从何处开始,都从第一关开始计分。
4)打地虫时蜂鸣器是否响起,过关时蜂鸣器是否响起。
观察是否能打地虫,打时是否有音效,打中或未打中是,看实验箱数码管的变化是否正确,过关后是否有音效。
六、设计分工
小组成员
主要负责模块
伟
Hit部分
Bell部分
焦睿雄
Counter部分
吕晓丁
Kaishi部分
冠桥
Jihe部分
敦致远
总程序检验和连接试验箱验证
七、收获与体会
这次EDA课程设计历时一个星期,在这一个星期里可以说是苦多于甜,但是可以学到很多东西。
期间不仅巩固了以前学习的知识,而且还学到了很多书本上没有学过的知识。
而且通过这次课设,进一步加深了我们对EDA的了解,让我们对它有了更加浓厚的兴趣。
特别是当子模块调试成功时,心里特别的开心。
通过这次课设是我懂得了理论与实际相结合的重要性,只用理论知识是远远不够的。
只有把学到的理论知识和实践结合起来,从实践中得出结论才能真正体会到知识的妙用,从而提高自己的动手能力和独立思考问题解决问题的能力。
在实践中我们看到了自己的不足,同时通过学习我们掌握了很多新的知识。
总的来说这次课设设计的相当成功,我们不仅把基本部分做好,还把发挥全部做好了。
通过这几天的设计,终于完成了打地鼠设计,该设计让我们懂得了许多的东西,包括专业方面和学习方面的。
在系统设计上,我知道了要设计一个电子系统是要经过许多步骤,包括硬件和软件方面的知识;
在学习方面,让我懂得了学习要扎实。
一开始我们很简单的认为,只要把VHDL语言弄懂了就能轻松完成一个电子系统的设计,到了后来我才发现我们是错的,这里面包括要对整个系统做到完全的把握,包括每一个步骤,除此之外还要自学很多课上没有讲过的知识。
总之让我们明白了很多的东西,在该设计的过程中,感老师的细心帮助和指导。
参考文献
1巴里.威尔金森.《数字设计基础》.机械工业.2008.1
2黄继业.EDA技术实用教程(第三版).科学.2010.7
3美金.VHDL程序设计.清华大学.2011.3
4江思敏.VHDL数字电路及系统设计.机械工业.2006.8