1、河北科技大学EDA课程设计 河北科技大学课程设计报告 学生姓名: 高志明 专业班级: 电子信息工程L121班 课程名称: EDA课程设计 学年学期:20142015学年第二学期 指导教师: 安国晨 负责部分: hit部分模块 2 01 5 年 7月 课程设计成绩评定表学生姓名 高志明成绩专业班级电信L121起止时间2015年6月26日7月2日设计题目打地鼠游戏设计指导教师评语指导教师: 年 月 日目录一、 设计题目及要求3二、 系统结构框图3三、 状态流程图4四、 程序清单6五、 调试及仿真波形8六、 设计分工 10七、 心得与体会 10参考文献 12一、设计题目及要求1、功能:由8只LED代
2、表虫洞,8个按键代表打虫棒,虫子随机在8虫洞随机出现(LED亮)1s,1s内按相应的虫棒即算打中地虫,得一分,按错或1S内按过其他键或未按键即丢1分。间隔2S出现下一只虫子。10只虫算一关,打对十只算本关通过,重新从0积分,否则游戏结束。2、要求:上电时数码管显示“STAr-00”并闪烁,按“开始”键,进入第一局; 打关时数码管显示 关数和分数; 过关时数码管显示“STAr-XX”并闪烁(XX为下一关数),按“开始”键,进入下一关;每过一关,虫子出现的时间为上一关的3/4,共设计8关。 8关全过时显示“-end -”3、发挥:声效、过关音乐等。二、系统结构框图1.总系统框图2. 各个模块的功能
3、描述1) 分数判断模块判断选手得分或失分主要是由一个比较器完成的,将系统传给LED灯的信号与选手输入的信号作比较,相同则加分,否则扣分,这两个信号分别传给计分模块,从而完成系统判定得分的工作。 2)系统时钟模块将内部2MHz的时钟分频为1Hz、及游戏时钟,供以后程序适使用。3)键盘电路主要通过产生行扫描,来识别用户的按键,其提供给控制器按键的编码。4)等级判断模块判断等级,若游戏未开始时,将等级设为初始值,游戏开始后则判断每一等级是否按对次数是否大于按错次数,是责加分,否则相应减分。并通过分数的正负进行等级的判断及变化。5)随机数产生模块为使得测试结果的公平性,需要L9-L16等灯亮灭具有随机
4、性,因而需要随机数产生过程,在本课设中,采用伪随机数产生方法,即在ROM中存入随机表中的数据,游戏开始后采用一个计数器不断计数,并通过计数寻址,读出存储的随机数据,传送至灯进行显示。6)显示模块用来显示地虫的出现位置及各关、分数等三、状态流程图四、程序清单library ieee; -蜂鸣器部分use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity bell isport( clk1:in std_logic; -时钟信号输入 right,wrong:in s
5、td_logic; -正确、错误脉冲输入 bellout:out std_logic -时钟驱动输出 );end bell;architecture func of bell is signal countr:integer range 0 to 7; -RIGHT时用于声音频率分频的计数器signal countw:integer range 0 to 3; -WRONG时用于声音频率分频的计数器signal counttime1,counttime2:integer range 0 to 399; -控制声音长短signal outr,outw,rf,wf:std_logic:=0; -正
6、确输出、错误输出,时间标志beginprocess(right,clk1) begin if(right=0 and rf=0) then outr=0; -由right或rf启动驱动蜂鸣器 elsif(clk1event and clk1=1) then if(countr=countrhigh) then countr=0;outr=1; else countr=countr+1;outr=0; end if; if(counttime1=counttime1high) then counttime1=0;rf=0; -达到发声时长,时间标志清零 else counttime1=count
7、time1+1;rf=1; end if; end if;end process;process(wrong,clk1) begin if(wrong=0and wf=0) then outw=0; -由wrong或wf启动驱动蜂鸣器 elsif(clk1event and clk1=1) then if(countw=countwhigh) then countw=0;outw=1; else countw=countw+1;outw=0; end if; if(counttime2=counttime2high) then counttime2=0;wf=0; -达到发声时长,时间标志清零
8、 else counttime2=counttime2+1;wf=1; end if; end if; end process;bellout=(outr or outw); -由于right和wrong脉冲不会同时到来,可将outr和outw或后输出end func;五、调试及仿真波形1.仿真波形2.程序硬件调试把实验箱串口插头与串口线(已经与pc机串口相连)联接1) 将程序正确下载到FPGA上,引脚绑定情况如下表:信号名对应器件名管脚名Clk1石英晶振79Clk2石英晶振183Sp蜂鸣器63Start按键K1588Reset按键K1689a(7 downto 0)按键K1,K2,K3,K4
9、,K5,K6,K7,K864,65,67,68,69,70,71,73deng(7 downto 0)Led灯 L16、l15、 L14、l13、L12、l11、 L10、l9、205、203、202、200、199、198、197、196y1(7 downto 0)段码 M4D、M4C、M4B、M4A、M3D、M3C、M3B、M3A195、193、192、191190、189、187、179wei(7 downto 0)位码M2D、M2C、M2B、M2A、M1D、M1C、M1B、M1A177、176、175、174173、172、170、1692)点击start按钮K15灯亮,表示游戏开始,
10、开始计分。3)点击reset按钮K16灯亮,无论游戏从何处开始,都从第一关开始计分。4)打地虫时蜂鸣器是否响起,过关时蜂鸣器是否响起。 观察是否能打地虫,打时是否有音效,打中或未打中是,看实验箱数码管的变化是否正确,过关后是否有音效。六、设计分工小组成员主要负责模块韩伟Hit部分高志明Bell部分焦睿雄Counter部分吕晓丁Kaishi部分陈冠桥Jihe部分敦致远总程序检验和连接试验箱验证七、收获与体会这次EDA课程设计历时一个星期,在这一个星期里可以说是苦多于甜,但是可以学到很多东西。期间不仅巩固了以前学习的知识,而且还学到了很多书本上没有学过的知识。而且通过这次课设,进一步加深了我们对E
11、DA的了解,让我们对它有了更加浓厚的兴趣。特别是当子模块调试成功时,心里特别的开心。通过这次课设是我懂得了理论与实际相结合的重要性,只用理论知识是远远不够的。只有把学到的理论知识和实践结合起来,从实践中得出结论才能真正体会到知识的妙用,从而提高自己的动手能力和独立思考问题解决问题的能力。在实践中我们看到了自己的不足,同时通过学习我们掌握了很多新的知识。总的来说这次课设设计的相当成功,我们不仅把基本部分做好,还把发挥全部做好了。通过这几天的设计,终于完成了打地鼠设计,该设计让我们懂得了许多的东西,包括专业方面和学习方面的。在系统设计上,我知道了要设计一个电子系统是要经过许多步骤,包括硬件和软件方面的知识;在学习方面,让我懂得了学习要扎实。一开始我们很简单的认为,只要把VHDL语言弄懂了就能轻松完成一个电子系统的设计,到了后来我才发现我们是错的,这里面包括要对整个系统做到完全的把握,包括每一个步骤,除此之外还要自学很多课上没有讲过的知识。总之让我们明白了很多的东西,在该设计的过程中,感谢老师的细心帮助和指导。参考文献1 巴里.威尔金森.数字设计基础.机械工业出版社.2008.12 黄继业.EDA技术实用教程(第三版).科学出版社.2010.73 陈美金.VHDL程序设计.清华大学出版社.2011.34 江思敏.VHDL 数字电路及系统设计.机械工业出版社.2006.8
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1