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

下载本文档

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

文档简介

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

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

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

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

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

6、GIC_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 ISPORT(-分频模块CLK_IN:IN STD_LOGIC;-时钟输入CLEAR:IN STD_LOGIC;扫-描,清零CLK:OUT STD_LOGIC:='0'-1000HZ游戏控制及点阵扫描频率CLK1:OUT STD_LOGIC:='0'-

7、100HZ数码管扫描频率CLK2:OUT STD_LOGIC:='0'-10HZ计时频率);END COMPONENT;COMPONENT ANTI_SHAKING ISPORT(-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_VECTOR(7 DOWNTO 0); -点阵的输出行与列COL0_

8、IN:IN STD_LOGIC_VECTOR(7DOWNTO 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);COL6_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0

9、);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;COMPONENTGAME_CONTROL IS 游-戏控制模块PORT(COL0: OUT STD_LOGIC_VECTOR(7 DOWNTO 传0);给-显示模块的数据COL1:

10、 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_VECTOR(7 DOWNTO 0);CLK:IN STD_LOGIC;STARTCOUNT:

11、 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;给-显示模块的 STARTCOUNT :IN STD_LOGIC;用-来控制是否计时TIMEO

12、UT :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 COL2_TMP:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL COL

13、3_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;SIGNAL STARTCOUNT_TMP : STD_LOGIC;SIGNAL LED1_TMP,LED2

14、_TMP: INTEGER RANGE 0 TO 9;-LEDSIGNAL 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_CAR(0),K_OUT=>KEY_TMP(0);-A2:ANTI_SHAKING PORT MAP(CL

15、K=>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_CAR,SHUMA=>TIME_CAR,CAT=>CAT _CAR,COL=>COL_CA

16、R,ROW=>ROW_CAR,LED1_IN=>LED1_TMP,LED2_IN=>LED2,_TMPCOL0_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 PORT MAP(CLK2=>CLK2_TMP,CLEAR=>CLEAR_CAR,LED1_OU

17、T=>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=>TI MEOUT_TMP,KEYUP=>KEY_TMP(1),KEYRIGHT=>KEY_TMP(0),KEYLEFT=>KEY_TMP(2),COL0=>COL0_TMP,COL1

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

提交评论