




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北邮数电综合实验报告作者:日期:2点阵赛车游戏学院:信息与通信工程学院专业:通信工程班级:姓名:学号:班内序号:8 / 20一、设计课题的任务要求用8X8点阵进行5秒倒计时显示,当5秒倒计时结束后,点阵显示 赛道和赛车的初始位置,赛车游戏开始,并开始计时,用两个数码管 显示时间。用红色表示赛道,黄色表示赛车的初始位置,箭头表示赛 车行进的方向。用BTN1BTN3三个按键分别控制赛车的左移、前进、 右移,最终使赛车在不碰撞赛道的情况下走完全程,游戏结束,点阵 显示V”图案,数码管显示走完全程所耗费的时间。当游戏时间超过 59秒,或者赛车在行进过程中碰撞赛道,游戏失败,点阵显示X”图案。通过按键B
2、TN0进行复位,控制点阵返回到初始状态。二、系统设计1、设计思路这个过程乍一看蛮复杂的,但是当我经过仔细分析后发现,我的 代码可以按照这个游戏的运行过程来写。 这个游戏分为4个状态, 即倒计时,运行,成功和失败。倒计时部分根据不同数字在点阵 上的位置很容易设计出来,运行部分便是初始化赛道,赛车的位 置,然后用按键来控制赛车运动,在这个过程中要不断判断赛车 是否撞墙和到达终点,如果到达终点便进入第三个状态,成功, 即显示“ V”;若果撞墙便进入第四个状态,失败,即显示“ X”。 在游戏运行的同时数码管还要计时。2、总体框图(1系统结构图(2)ASM 图启动是否复位,计时*f移动/ ,NY是否碰到
3、边界是否到达终点NAir、显示“X”LJj/显示“ VJ是否复位倒计时ES移动撞显示(3)状态转移图(4)功能模块图显示“ X”V分频器控制器方向控制模块显示存储器点阵显示计时器数码管RES3、模块设计(1) 分频模块分频器:因为原有低频时钟为 50MHZ如果直接用这个时钟信号 同时实现计时和显示部分,故需两个分频器,分别将时钟频率分 为1Hz和1kHz, 1Hz用来控制倒计时和游戏运行过程中的计时, 1kHz用来控制点阵和数码管的显示。(2) 游戏模块刚开始的代码有一个判断是否复位的代码,如果RESET=,1将代码中定义的一些信号初始化,之后整个过程分为四个状态,即 STATE可取 0,1,
4、2,3四个值。0处于倒计时状态,1处于用按键控 制赛车运动的状态,2处于到达终点的状态,并且显示“ V 3处 于失败的状态,并且显示“ X”。当STATE=C时,游戏处于倒计时状态,倒计时五秒,利用五个数 字在点阵上的不同位置初始化点阵,分别对应五个数字,在时钟 1Hz下做倒计时五秒的工作。当STATE=1时,处于用按键控制赛车运动的状态,此期间分别用 BTN1 BTN2 BTN3来控制赛车的右,前,左的运动方向,运动期 间还要不断判断赛车是否撞到墙或者障碍物,以及判断赛车是否 到达终点,一次来确定游戏是否进入 STATE=2或 STATE=3犬态。当STATE=2寸,要在点阵上显示“ V
5、39;,即给点阵矩阵初始化显示 此图形的数据。当STATE=3寸,要在点阵上显示“ X”,即给点阵矩阵初始化显示此图形的数据。(3) 显示模块因为所有状态不能同时显示,故循环显示电路分别扫描。当时钟 频率足够大时,根据视觉暂留则可看到较为稳定的画面。点阵显示是在时钟频率1kHz下一行一行扫描,这样在不同时候就 可以显示不同的图形,比如倒计时的5,4,3,2,1 和赛道,赛车的位置;其次是数码管的显示,数码管首先有个控制计数的代码, 此计数是在时钟频率1Hz下工作的,然后在时钟频率1kHz的控制下分别让两个数码管显示,此即为计时器的显示三、仿真波形及波形分析倒计时波形点阵显示数码管显示及波形8
6、/ 20数码管显示四、源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CAR ISPORT(CLK:IN STD_LOGIC; -时钟信号RESET:IN STD_LOGIC;-复位输入CONTROL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);赛车控制ROW:OUT STD_LOGIC_VECTOR(7 DOWNTO-0)行控制输出COLR,COLG:OUT STD_LOGIC_VECTOR(7 D
7、OWNTO0)列控制输出CAT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0-;数码管选通DISPLAY:OUT STD_L0GIC_VECT0R(6 DOWNTC数码管显示);END CAR;ARCHITECTURE behave OF CAR ISSIGNAL TEMP1:INTEGER RANGE 0 TO 49999;-分频信号SIGNAL TEMP2:INTEGER RANGE 0 TO 49999999;SIGNAL CLK1K:STD_LOGIG-频率 1kHz 时钟SIGNAL CLK1HZ:STD_LOGIC;-频率 1Hz 时钟SIGNAL TIMEH:I
8、NTEGER RANGE 0 TO 5;-十位计数SIGNAL TIMEL:INTEGER RANGE 0 TO 9;-个位计数SIGNAL LIGHTH:STD_LOGIC_VECTOR(6 DOWNTO 0);-十位数码管控制信号SIGNAL l_l GHTL:STD_LOGIC_VECTOR(6 DOWNTO 0) 个 位数码管控制信号TYPE PRESENT_STATE IS (H,L);-自定义变量SIGNAL P_STATE:PRESENT_STATE;SIGNAL STATE:INTEGER RANGE 0 TO 3;-四个状态控制信号SIGNAL COUNT : INTEGER
9、 RANGE 0 TO 6;-倒计时控制信号SIGNAL CX,CY:INTEGER RANGE 0 TO 7;-赛车坐标控制信号SIGNAL ROWS:STD_LOGIC_VECTOR(7 DOWNTO 0-;行控制信号SIGNAL COLR7,COLR6,COLR5,COLR4,COLR3,COLR2,COLR1,COLR0,列控制信号COLG7,COLG6,COLG5,COLG4,COLG3,COLG2,COLG1,COLGO:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINDIV1K:PROCESS(CLK)BEGINIF CLK'EVENT AND CLK
10、 = '1' THENIF TEMPI = 49999 THENTEMPI <= 0;ELSETEMPI <= TEMPI + 1;END IF;IF TEMP1 < 25000 THENCLK1K <= '0'ELSECLK1K <= '1'END IF;END IF;END PROCESS;DIV1HZ:PROCESS(CLK)-分频1kHz-分频1HzBEGIN14 / 20IF CLK'EVENT AND CLK = '1' THENIF TEMP2 = 49999999 THENTE
11、MP2 <= 0;ELSETEMP2 <= TEMP2 + 1;END IF;IF TEMP2 < 25000000 THENCLK1HZ <= 'O'ELSECLK1HZ <= '1'END IF;END IF;END PROCESS;GAMERUN:PROCESS(CLK1HZ,RESET)BEGINIF RESET = '1' THENSTATE <= 0;COUNT <= 6;CX <= 2;CY <= 0;TIMEH <= 0;TIMEL <= 0;COLG7 <=
12、 "00000000"COLG6 <= "00000000"COLG5 <= "00000000"COLG4 <= "00000000"COLG3 <= "00000000"COLG2 <= "00000000"COLG1 <= "00000000"COLG0 <= "00000000"ELSIF CLK1HZ'EVENT AND CLK1HZ = '1' THENCAS
13、E STATE ISWHEN 0 =>CASE COUNT ISWHEN 6 => COUNT <= 5;COLR7 <= "00000000"COLR6 <= "00000000"COLR5 <= "00000000"COLR4 <= "00000000"COLR3 <= "00000000"-游戏运行进程复位和初始化-点阵倒计时COLR2 <= "00000000"COLRO <= "00000000&
14、quot;WHEN 5 => COUNT <= 4;COLR7 <= "00111100"COLR6 <= "00100000"COLR5 <= "00100000"COLR4 <= "00111100"COLR3 <= "00000100"COLR2 <= "00000100"COLR1 <= "00000100"COLR0 <= "00111100"WHEN 4 =>
15、 COUNT <=3;COLR7 <= "00100100"COLR6 <= "00100100"COLR5 <= "00100100"COLR4 <= "00111100"COLR3 <= "00000100"COLR2 <= "00000100"COLR1 <= "00000100"COLR0 <= "00000100"WHEN 3 => COUNT <= 2;COL
16、R7 <= "00111100"COLR6 <= "00000100"COLR5 <= "00000100"COLR4 <= "00111100"COLR3 <= "00000100"COLR2 <= "00000100"COLR1 <= "00000100"COLR0 <= "00111100"WHEN 2 => COUNT <= 1;COLR7 <= "00
17、111100"COLR6 <= "00000100"COLR5 <= "00000100"COLR4 <= "00111100"COLR3 <= "00100000"COLR2 <= "00100000"COLR1 <= "00100000"COLR0 <= "00111100"WHEN 1 => COUNT <= 0;COLR7 <= "00001000"COLR6
18、 <= "00001000"COLR5 <= "00001000"COLR4 <= "00001000"COLR3 <= "00001000"COLR2 <= "00001000"18 / 20C0LR1 <= "00001000"COLRO <= "00001000"WHEN 0 => COUNT <= 6;STATE <= 1;END CASE;WHEN 1 =>IF TIMEL = 9
19、 THENTIMEL <= 0;IF TIMEH = 5 THENTIMEH <= 0;IF CY /= 7 THENSTATE <= 3;ELSESTATE <= 2;END IF;ELSETIMEH <= TIMEH + 1;END IF;ELSETIMEL <= TIMEL + 1;END IF;COLG7 <= "00001110"COLG6 <= "00000000"COLG5 <= "00000000"COLG4 <= "00000000"CO
20、LG3 <= "00000000"COLG2 <= "00000000"COLG1 <= "00000000"COLG0 <= "00000000"COLR7 <= "00011111"COLR6 <= "00010001"COLR5 <= "00010001"COLR4 <= "00100010"COLR3 <= "01000100"COLR2 <= &q
21、uot;10001000"COLR1 <= "10001000"COLR0 <= "10001000"CASE CY ISWHEN 0 => COLG0(7-CX) <= '1'WHEN 1 => COLG1(7-CX) <= '1'WHEN 2 => COLG2(7-CX) <= '1'WHEN 3 => COLG3(7-CX) <= '1'WHEN 4 => COLG4(7-CX) <= '1
22、9;-数码管计时-初始化赛道-赛车坐标WHEN 5 => COLG5(7-CX) <= '1'20 / 20WHEN 6 => COLG6(7-CX) <= '1'WHEN 7 => COLG7(7-CX) <= '1'END CASE;CASE CONTROL IS-按键控制赛车WHEN "100" => CX <= CX - 1;WHEN "010" => CY <= CY + 1;WHEN "001" => CX &
23、lt;= CX + 1;WHEN OTHERS => NULL;END CASE;CASE CY IS-判断移动后是否撞墙WHEN 0 => IF COLR0(7-CX) = '1' THEN STATE <= 3; ELSE COLG0(7-CX) <= '1'END IF;WHEN 1 => IF COLR1(7-CX) = '1' THEN STATE <= 3; ELSE COLG1(7-CX) <= '1'END IF;WHEN 2 => IF COLR2(7-CX) =
24、'1' THEN STATE <= 3; ELSE COLG2(7-CX) <= '1'END IF;WHEN 3 => IF COLR3(7-CX) = '1' THEN STATE <= 3; ELSE COLG3(7-CX) <= '1'END IF;WHEN 4 => IF COLR4(7-CX) = '1' THEN STATE <= 3; ELSE COLG4(7-CX) <= '1'END IF;WHEN 5 => IF COLR5
25、(7-CX) = '1' THEN STATE <= 3; ELSE COLG5(7-CX) <= '1'END IF;WHEN 6 => IF COLR6(7-CX) = '1' THEN STATE <= 3; ELSE COLG6(7-CX) <= '1'END IF;WHEN 7 => STATE <= 2;END CASE;IF CY = 7 THEN STATE <= 2; END IF;-判断移动后是否到达终点WHEN 2 =>COLR7 <= "
26、00000000"-到达终点后显示“ V'COLR6 <= "00000000"COLR5 <= "00000000"COLR4 <= "00000000"COLR3 <= "00000000"COLR2 <= "00000000"COLR1 <= "00000000"COLR0 <= "00000000"COLG7 <= "00000000"COLG6 <= &q
27、uot;00000001"COLG5 <= "10000010"COLG4 <= "01000100"COLG3 <= "00101000"COLG2 <= "00010000"COLG1 <= "00000000"COLG0 <= "00000000"WHEN 3 =>COLG7 <= "00000000"-撞墙后显示“ X”C0LG6 <= "00000000"COLG
28、5 <= "00000000"COLG4 <= "00000000"COLG3 <= "00000000"COLG2 <= "00000000"COLG1 <= "00000000"COLG0 <= "00000000"COLR7 <= "00000000"COLR6 <= "01000010"COLR5 <= "00100100"COLR4 <= &quo
29、t;00011000"COLR3 <= "00011000"COLR2 <= "00100100"COLR1 <= "01000010"COLR0 <= "00000000"END CASE;END IF;END PROCESS;LSTSHOW:PROCESS(CLK1K)-在点阵上显示倒计时、赛道、和赛车BEGINIF CLK1K'EVENT AND CLK1K = '1' THENCASE ROWS ISWHEN "11111110"
30、 => COLR <= COLR0; COLG <= COLG0; ROW <= ROWS; ROWS <= "11111101"WHEN "11111101" => COLR <= COLR1; COLG <= COLG1; ROW <= ROWS; ROWS <= "11111011"WHEN "11111011" => COLR <= COLR2; COLG <= COLG2; ROW <= ROWS; ROWS <=
31、"11110111"WHEN "11110111" => COLR <= COLR3; COLG <= COLG3; ROW <= ROWS; ROWS <= "11101111"WHEN "11101111" => COLR <= COLR4; COLG <= COLG4; ROW <= ROWS; ROWS <= "11011111"WHEN "11011111" => COLR <= COLR5;
32、COLG <= COLG5; ROW <= ROWS; ROWS <= "10111111"WHEN "10111111" => COLR <= COLR6; COLG <= COLG6; ROW <= ROWS; ROWS <= "01111111"WHEN "01111111" => COLR <= COLR7; COLG <= COLG7; ROW <= ROWS; ROWS <= "11111110"WHEN
33、OTHERS => ROWS <= "11111110"END CASE;END IF;END PROCESS;-将计时译码至数码管上SHOWT:PROCESS(CLK1K,TIMEH,TIMEL)BEGINCASE TIMEH ISWHEN 5=>LIGHTH<="1011011"WHEN 4=>LIGHTH<="0110011"WHEN 3=>LIGHTH<="1111001"WHEN 2=>LIGHTH<="1101101"WHE
34、N 1=>LIGHTH<="0110000"WHEN 0=>LIGHTH<="1111110"WHEN OTHERS=>LIGHTH<="0000000"END CASE;CASE TIMEL ISWHEN 9=>LIGHTL<="1111011"WHEN 8=>LIGHTL<="1111111"WHEN 7=>LIGHTL<="1110000"WHEN 6=>LIGHTL<="10
35、11111"WHEN 5=>LIGHTL<="1011011"WHEN 4=>LIGHTL<="0110011"WHEN 3=>LIGHTL<="1111001"WHEN 2=>LIGHTL<="1101101"WHEN 1=>LIGHTL<="0110000"WHEN 0=>LIGHTL<="1111110"WHEN OTHERS=>LIGHTL<="0000000&qu
36、ot; END CASE;-利用视觉暂留显示计时IF CLK1K'EVENT AND CLK1K='1' THEN CASE P_STATE ISWHEN L => P_STATE <= H; CAT <= "111110"DISPLAY <= l_l GHTL;WHEN H => P_STATE <= L;CAT <= "111101" DISPLAY <= l_l GHTH;END CASE;END IF;END PROCESS;END behave;五、功能说明:1、复位:当按
37、下BTN0时,赛道,计时等控制模块初始化,游戏重启2、方向控制:BTN1BTN2 BTN3分别控制赛车向右,上,左运动3、当赛车撞墙或障 碍物时,游戏失败,显示“ X”4、当赛车到达终点24 / 20时,游戏成功,显示“ V”六、元器件清单及资源利用情况:1、元器件系统时钟CLK点阵行显示ROW0R0W7红点阵列显示COLR0 COLR7,绿点阵列显示 COLG0 COLG7 数码管控制选通CAT CAT6数码管显示 DISPLAY0卜DISPLAY6拨码开关 BTN1,BTN2,BTN3,BTN44 F te d*j|pqwffl.rin血;亦庶*曲 cah |乔昭*Tar ._wrSW*R
38、b Edb Miw "DEHMia Toda VriHcwQwi<=帀乜ai萬初点|0硒h 卩 hit° Hmt列 p Eidi 誕 JFrkilET 屮 M FT MHpmIJIIOJl1lall5ll*lIIl2lly Hlsyzi老nfcfcS-FF-工一fctaABHMDfCHr5E»冲I严唐T« 31JSjiBH" Jhb .*-» ."J* FTISALJfTUjdalmJ-;- SUniMrtuit- AMk/HL Iriff hjkmE HdJl3-/TTLgL/HLg冬* 皿_3.3-4 JTTLx&
39、#187;ri>m._HJM ufTH piW 134 kfttL*:' H士-巴L津t . H勒.EV他H* ii i.jTn. >i弧七 3» 4 E "s-a-viuni 声*3 卩 L*m_ wrtJt-mrmjtofaiii *1.34 TTLJI+nTTlWelwC-Mila jiifsunliil MW口巾 oj心叫Hah 4乩丄丄丄丄丄-«心.TT.v'T.L-f-?T.-?- S囂彎.【3 !.feJlllAfl*: <7 丸.4kMJQIrtujr“昴一11”JWWWQW.1W 性,_11ItaaMvWli.p
40、m*咻.耳jil-iLVJMr. j 'zULAV;il.斗I AuMen13 申 713 MrtsJH3 MeTILfia hj|T kkWJIIFrMelpmfrtl* W*4 " U.SM C2、资源利用情况17 / 20Flow S t AtUE.缸鶴“応ful M Thu bfev CB 15 魁更Di空Shjirtni IT5.013?ST Foil 賞餾知3EtkVb " 9 04*T<ip-1.av£1 Zril l tya沁l lyWAI Hlv¥-k>E-irining tciisla"nJHk 1 k j piiir ui r a*! Ant xTaxiai / i.aiDae % T«Tiil jins.短 / 1IB C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市场销售总监合作协议6篇
- 12 做个小温室 教学设计-2023-2024学年科学二年级下册苏教版
- 2024-2025学年高中物理 第三章 相互作用 2 弹力教学设计 教科版必修第一册
- 课程汇报:汇报人
- 财务经理晋升述职报告
- 腹部增强CT的护理
- 薛建改生产运营管理
- 《减法》(教学设计)-2024-2025学年三年级上册数学人教版
- 七年级美术(浙美版)上册教学设计7.鸟语花香
- 4梅花魂 教学设计-2024-2025学年语文五年级下册统编版
- 痛风中医护理常规
- 三年级下册乘除法竖式计算题100道
- 2024年4月全国自考概率论与数理统计(一)02024真题及答案
- 《岩土工程勘察安全》课件
- 《宫颈癌防治》课件
- 小学数学:时间教材
- 220V直流容量计算书
- 脑卒中康复临床路径(PT)
- 铁路客运段QC小组运用PDCA循环减少旅客列车乘降问题发生次数现场型成果汇报
- 红外测温培训课件
- 四百字作文格子稿纸(可打印编辑)
评论
0/150
提交评论