河北科技大学EDA课程设计

  • 格式:doc
  • 大小:125.00 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

科技大学

课程设计报告

学生:高志明

专业班级:电子信息工程L121班课程名称: EDA课程设计

学年学期:2014—2015学年第二学期指导教师:安国晨

负责部分: hit部分模块

2 01 5 年 7月

课程设计成绩评定表

目录

一、设计题目及要求 (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)显示模块

用来显示地虫的出现位置及各关、分数等

三、状态流程图

四、程序清单

library ieee; --蜂鸣器部分

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity bell is

port(

clk1:in std_logic;

--时钟信号输入

right,wrong:in std_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'; --正确输出、错误输出,时间标志

begin

process(right,clk1)

begin

if(right='0' and rf='0') then outr<='0';

--由right或rf启动驱动蜂鸣器

elsif(clk1'event and clk1='1') then

if(countr=countr'high) then

countr<=0;outr<='1';

else

countr<=countr+1;outr<='0';

end if;

if(counttime1=counttime1'high) then

counttime1<=0;rf<='0'; --

达到发声时长,时间标志清零

else

counttime1<=counttime1+1;rf<='1';

end if;

end if;

end process;

process(wrong,clk1)

begin

if(wrong='0'and wf='0') then outw<='0'; --由wrong或wf启动驱动蜂鸣器

elsif(clk1'event and clk1='1') then

if(countw=countw'high) then

countw<=0;outw<='1';

else

countw<=countw+1;outw<='0';

end if;

if(counttime2=counttime2'high) then

counttime2<=0;wf<='0';

--达到发声时长,时间标志清零

else counttime2<=counttime2+1;wf<='1';

end if;

end if;

end process;

bellout<=(outr or outw); --由于right和

wrong脉冲不会同时到来,可将outr和outw或后输

end func;

五、调试及仿真波形