北邮数电实验点阵赛车_第1页
北邮数电实验点阵赛车_第2页
北邮数电实验点阵赛车_第3页
北邮数电实验点阵赛车_第4页
北邮数电实验点阵赛车_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字电路综合实验报告点阵赛车游戏学院:信息与通信工程学院班级:2010211117班 姓名: 学号: 班内序号: 辅导老师:袁东明时间:2012年11月目录一、 设计任务要求二、 系统设计三、 仿真波形及分析四、 源程序五、 功能说明六、 元器件清单及资源利用情况七、故障及问题分析八、总结和结论一、设计任务要求1、基本要求:1.用8×8点阵进行5秒倒计时显示,如下图所示。2.当5秒倒计时结束后,点阵显示下图所示的赛道和赛车的初始位置,赛车游戏开始,并开始计时,用两个数码管显示时间。图中的红色表示赛道,黄色表示赛车的初始位置,箭头表示赛车行进的方向。3.用BTN1BTN3三个按键分别控

2、制赛车的左移、前进、右移,最终使赛车在不碰撞赛道的情况下走完全程(即图2中的绿色位置),游戏结束,点阵显示“V”图案,数码管显示走完全程所耗费的时间。4.当游戏时间超过59秒,或者赛车在行进过程中碰撞赛道,游戏失败,点阵显示“X”图案。5.通过按键BTN0进行复位,控制点阵返回到初始状态。2、提高要求:1.有多种游戏赛道可选,5秒倒计时显示后赛道随机出现。2.赛车的初始位置随机出现。3.在赛车行进过程中,赛道中随机出现障碍物(用8×8点阵中的一个LED表示),通过BTN1BTN3三个按键的控制躲避障碍物,走完全程。若赛车碰到障碍物和赛道,则游戏失败。二、系统设计1、设计框图1、 系统

3、结构框图本系统主要由四个模块组成,其中控制器用于控制程序运行、储存当前状态并控制输出显示,点阵用于显示游戏界面,数码管用于显示当前分数。按钮输入用于输入控制信息。2、 逻辑划分方框图3、 系统流程图开始点阵5秒倒计时游戏开始,数码管显示时间,点阵显示小车与赛道赛道下移,小车不动小车位置移动否赛道与车是否相撞,是否超时按键输入否是是是否到达终点否是点阵显示“V”图案,数码管显示走完全程所耗费的时间点阵显示“X”游戏结束4、MDS图Te to end到达终点Cr crash 撞车Ot over timeCD count downKI keyboard input运行状态游戏成功游戏失败等待状态Re

4、setResetResetOt or CrTeCD 游戏运行状态的具体状态转移图键盘输入状态车移动赛道移动是否撞车,超时KIKIKI到达状态三、仿真波形及波形分析说明:为了得到仿真结果,仿真实验先将分频比降低再进行。说明:cat的波形说明,硬件运行过程中只选择5号和4号数码管,这两个数码管交替启动,分别显示时间秒数的个位和十位说明:游戏刚开始时,数码管显示00.对应的time_car序列为0111111说明:游戏运行一段时间后(5秒倒计时)计时模块开始计时。上图中,数码管显示01秒,0对应序列为0111111,1对应于0000110。下图是02秒的仿真图说明:点阵输出,列的输出为0111111

5、1,10111111,11111110说明:列的输出为00000100,00000100,00111100对应于点阵图形5的输出。从第二行开始输出。四、源程序及注释(由于代码过长,此处只显示top-level entity,其余代码详见附件)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CAR ISPORT( CLK_CAR,CLEAR_CAR:IN STD_LOGIC; ROW_CAR,COL_CAR:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); KEY_C

6、AR:IN STD_LOGIC_VECTOR(2 DOWNTO 0); TIME_CAR:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); CAT_CAR:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );END CAR;-ARCHITECTURE GAME OF CAR ISCOMPONENT DIV_N IS-分频模块PORT( CLK_IN:IN STD_LOGIC;-时钟输入 CLEAR:IN STD_LOGIC;-扫描,清零CLK:OUT STD_LOGIC:='0'-1000HZ游戏控制及点阵扫描频率CLK1:OUT STD_L

7、OGIC:='0'-100HZ数码管扫描频率CLK2:OUT STD_LOGIC:='0'-10HZ计时频率 ); END COMPONENT;COMPONENT ANTI_SHAKING IS -防抖模块PORT(CLK,KEY,CLK1:IN STD_LOGIC; - clk为游戏控制频率 clk1 为防抖频率 100hzK_OUT:OUT STD_LOGIC);END COMPONENT;COMPONENT DISPLAY IS -显示模块PORT(CLK1,CLK,CLEAR:IN STD_LOGIC;COL,ROW:OUT STD_LOGIC_VECT

8、OR(7 DOWNTO 0); -点阵的输出 行与列COL0_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); - 游戏控制模块传给显示模块的 点阵的列的数据COL1_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -COL2_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -COL3_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -COL4_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); COL5_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CO

9、L6_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); COL7_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LED1_IN,LED2_IN:IN INTEGER RANGE 0 TO 9;-LED计时模块传给显示模块的数据 :时间的秒数 CAT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); SHUMA: OUT STD_LOGIC_VECTOR(6 DOWNTO 0) -即AA-AF);-数码管END COMPONENT;COMPONENT GAME_CONTROL IS -游戏控制模块PORT(COL0: OUT ST

10、D_LOGIC_VECTOR(7 DOWNTO 0);-传给显示模块的数据 点阵的列COL1: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL2: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL3: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL4: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL5: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL6: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COL7: OUT STD_LOGIC_VECT

11、OR(7 DOWNTO 0);CLK:IN STD_LOGIC; STARTCOUNT : OUT STD_LOGIC; -传给计时模块的一个标志 用来控制是否计时TIMEOUT :IN STD_LOGIC;-计时模块传给游戏控制模块的一个标志,说明是否超时CLEAR:IN STD_LOGIC;KEYUP,KEYRIGHT,KEYLEFT: IN STD_LOGIC); END COMPONENT;COMPONENT TIMECOUNT ISPORT(CLK2,CLEAR:IN STD_LOGIC;-10HZLED1_OUT,LED2_OUT:OUT INTEGER RANGE 0 TO 9;

12、-传给显示模块的 STARTCOUNT :IN STD_LOGIC;-用来控制是否计时TIMEOUT :OUT STD_LOGIC-传给游戏控制模块的一个标志,说明是否超时);END COMPONENT;-SIGNAL KEY_TMP:STD_LOGIC_VECTOR(2 DOWNTO 0);-以下皆为连接的中间信号SIGNAL CLK_TMP,CLK1_TMP,CLK2_TMP:STD_LOGIC;SIGNAL COL0_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL1_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL

13、 COL2_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL3_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL4_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL5_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL6_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL7_TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL TIMEOUT_TMP : STD_LOGIC

14、;SIGNAL STARTCOUNT_TMP : STD_LOGIC; SIGNALLED1_TMP,LED2_TMP: INTEGER RANGE 0 TO 9;-LED SIGNAL CLEAR: STD_LOGIC;-BEGIND1:DIV_N PORT MAP(CLK=>CLK_TMP,CLK1=>CLK1_TMP,CLK2=>CLK2_TMP,CLK_IN=>CLK_CAR,CLEAR=>CLEAR_CAR);-A1:ANTI_SHAKING PORT MAP(CLK=>CLK_TMP,CLK1=>CLK1_TMP,KEY=>KEY_C

15、AR(0),K_OUT=>KEY_TMP(0); - A2:ANTI_SHAKING PORT MAP(CLK=>CLK_TMP,CLK1=>CLK1_TMP,KEY=>KEY_CAR(1),K_OUT=>KEY_TMP(1);-A3:ANTI_SHAKING PORT MAP(CLK=>CLK_TMP,CLK1=>CLK1_TMP,KEY=>KEY_CAR(2),K_OUT=>KEY_TMP(2);-DP1:DISPLAY PORT MAP(CLK=>CLK_TMP,CLK1=>CLK1_TMP,CLEAR=>CLEAR

16、_CAR,SHUMA=>TIME_CAR,CAT=>CAT_CAR,COL=>COL_CAR,ROW=>ROW_CAR,LED1_IN=>LED1_TMP,LED2_IN=>LED2_TMP,COL0_IN=>COL0_TMP,COL1_IN=>COL1_TMP,COL2_IN=>COL2_TMP,COL3_IN=>COL3_TMP,COL4_IN=>COL4_TMP,COL5_IN=>COL5_TMP,COL6_IN=>COL6_TMP,COL7_IN=>COL7_TMP);-OK-T1:TIMECOUNT

17、PORT MAP(CLK2=>CLK2_TMP,CLEAR=>CLEAR_CAR,LED1_OUT=>LED1_TMP,LED2_OUT=>LED2_TMP,STARTCOUNT=>STARTCOUNT_TMP,TIMEOUT=>TIMEOUT_TMP);-G1:GAME_CONTROL PORT MAP(CLK=>CLK_TMP,CLEAR=>CLEAR_CAR,STARTCOUNT=>STARTCOUNT_TMP,TIMEOUT=>TIMEOUT_TMP,KEYUP=>KEY_TMP(1),KEYRIGHT=>KEY_

18、TMP(0),KEYLEFT=>KEY_TMP(2),COL0=>COL0_TMP,COL1=>COL1_TMP,COL2=>COL2_TMP,COL3=>COL3_TMP,COL4=>COL4_TMP,COL5=>COL5_TMP,COL6=>COL6_TMP,COL7=>COL7_TMP); -END GAME;五、实现功能说明倒计时阶段,数码管不计时60秒超时 ,游戏结束碰赛道或障碍,游戏结束跑到终点,游戏成功,显示完成时间随机赛道,随机障碍,小车随机初始位置 按下复位键之后,游戏重新开始六、元器件清单及资源利用情况1、使用的元器件芯

19、片EPM1270T144C5按键3个Led点阵8*8个单元Led数码管1个2、资源利用七、 故障及问题分析1, 故障:加了防抖模块后,按键变得非常不灵敏,怎么按都没有反应。问题分析:之前只考虑防抖的设计,在排除故障时,没有找出任何有价值的信息,防抖频率也是100hz,分频模块也没有出错,试着将防抖电路的频率改了一下,依旧没有用。后来听课之后才明白,加了防抖模块外,还需要加上时钟同步,才能做成同步时序电路,才能有效地控制电路的运行。修改了防抖模块代码后(由防抖频率进行防抖,游戏控制频率进行同步),游戏终于能够有效运行。2, 故障:在不同的实验室进行实验,有时点阵显示正常,有时点阵全亮。问题分析:这是由于实验板的点阵设计不同导致的。在将点阵管脚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论