




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
点阵赛车游戏实验报告 姓名 班级 学号一、要求和任务1.用88点阵进行5秒倒计时显示,如下图所示。 2. 当5秒倒计时结束后,点阵显示下图所示的赛道和赛车的初始位置,赛车游戏开始,并开始计时,用两个数码管显示时间。图中的红色表示赛道,黄色表示赛车的初始位置,箭头表示赛车行进的方向。要求:用BTN1BTN3三个按键分别控制赛车的左移、前进、右移,最终使赛车在不碰撞赛道的情况下走完全程(即图2中的绿色位置),游戏结束,点阵显示“V”图案,数码管显示走完全程所耗费的时间。当游戏时间超过59秒,或者赛车在行进过程中碰撞赛道,游戏失败,点阵显示“X”图案。通过按键BTN0进行复位,控制点阵返回到初始状态。提高要求:有多种游戏赛道可选,5秒倒计时显示后赛道随机出现。赛车的初始位置随机出现。在赛车行进过程中,赛道中随机出现障碍物(用88点阵中的一个LED表示),通过BTN1BTN3三个按键的控制躲避障碍物,走完全程。若赛车碰到障碍物和赛道,则游戏失败。2、 系统设计(包括设计思路、总体框图、分块设计) 总体框图:3、 仿真波形及波形分析 Button0按下,点阵显示5 1秒后,点阵显示42后,点阵显示33秒后,显示24秒后,显示15秒后,数码管显示5 9两个向左按键,赛车碰壁,显示失败x又复位之后,又54321减下来又开始重复。4、 源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY saiche IS PORT( CLOCK:IN STD_LOGIC; button0,button1,button2,button3:IN STD_LOGIC; -四个按键:复位键、右、上、左 ROW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -控制车道的横向量 COL_RED:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-控制车道的红色列向量 COL_GREEN:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-控制车道的绿色列向量 LIGHT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -段选输出 LIGHT_EN:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)-位选输出 );END saiche;ARCHITECTURE MLD OF saiche IS SIGNAL CLK1hz,CLK_5K,CLK_1K,CLK_2K,CLK_100hz,CLK_200hz:STD_LOGIC; -1hz,5khz,1Khz,2Khz,100hz,200hz时钟信号 SIGNAL N:INTEGER RANGE 0 TO 6; -产生随机赛道时的判断数 SIGNAL NUM:INTEGER RANGE 0 TO 20; -0号赛道逐点扫描时点的序列 SIGNAL NUM1:INTEGER RANGE 0 TO 19; -1号赛道逐点扫描时点的序列 SIGNAL NUM2:INTEGER RANGE 0 TO 18; -2号赛道逐点扫描时点的序列 SIGNAL NUM3:INTEGER RANGE 0 TO 22; -3号赛道逐点扫描时点的序列 SIGNAL T_HIGH:INTEGER RANGE 0 TO 5; -倒计时高位 SIGNAL T_LOW:INTEGER RANGE 0 TO 9; -倒计时低位 SIGNAL COUNT200:INTEGER RANGE 0 TO 250000; -各分频用的计数 SIGNAL COUNT2:INTEGER RANGE 0 TO 50000; SIGNAL COUNT3:INTEGER RANGE 0 TO 50000; SIGNAL COUNT:INTEGER RANGE 0 TO 50000000; SIGNAL COUNT1:INTEGER RANGE 0 TO 10000; SIGNAL COUNT_100hz:INTEGER RANGE 0 TO 500000; SIGNAL tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7,tmp8:std_logic;-消抖时用的临时信号 SIGNAL CNT,CNT1:INTEGER RANGE 0 TO 1000; SIGNAL FAIL,SUCCESS,TIME_UP:STD_LOGIC; -FAILS赛车碰到车道的失败信号,SUCCESS赛车到终点的成功信号 -TIME_UP 60s时间到的失败信号 SIGNAL START :INTEGER RANGE 0 TO 6; -START=1 54321计时到的开启信号 SIGNAL TIMES :INTEGER RANGE 0 TO 7; -点阵显示状态判别信号 SIGNAL SEL:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL RST,DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP: STD_LOGIC; - 由四个按键经过消抖处理后,产生的四个控制信号 TYPE DIAN IS ARRAY(INTEGER RANGE ) OF INTEGER RANGE 0 TO 7; SIGNAL SX,SY ,SX1,SY1:INTEGER RANGE 0 TO 7; -SX,SY赛车坐标,SX1,SY1障碍坐标 CONSTANT WY:DIAN(0 TO 18):=(0,0,0,1,2,3,3,3,4,4,4,5,6,7,7,7,4,5,6); -0号赛道红绿色车道纵坐标,后三个是绿色车道纵坐标 CONSTANT WX:DIAN(0 TO 18):=(0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7,7,7); -0号赛道红绿色车道的横坐标,后三个是绿色车道横坐标 CONSTANT WY1:DIAN(0 TO 17):=(1,0,1,0,1,2,1,2,4,5,6,7,7,6,5,5,3,4); -1号赛道红绿色车道纵坐标,后两个是绿色车道纵坐标 CONSTANT WX1:DIAN(0 TO 17):=(0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7,7); -1号赛道红绿色车道的横坐标,后两个是绿色车道横坐标 CONSTANT WY2:DIAN(0 TO 16):=(1,2,1,1,2,3,4,5,4,5,6,6,5,6,7,7,6); -2号赛道红绿色车道纵坐标,后一个是绿色车道纵坐标 CONSTANT WX2:DIAN(0 TO 16):=(0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7); -2号赛道红绿色车道的横坐标,后一个是绿色车道横坐标 CONSTANT WY3:DIAN(0 TO 20):=(1,1,1,1,0,0,0,0,6,6,6,6,6,6,6,6,1,2,3,4,5); -3号赛道红绿色车道的横坐标,后五个是绿色车道横坐标 CONSTANT WX3:DIAN(0 TO 20):=(0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7,7,7,7,7); -0号赛道红绿色车道的横坐标,后五个是绿色车道横坐标 SIGNAL STATE:INTEGER RANGE 0 TO 1; TYPE FIGURE IS ARRAY(INTEGER RANGE ) OF INTEGER RANGE 0 TO 9; SIGNAL SHOW:FIGURE(9 DOWNTO 0); -数码显示 BEGIN p1:PROCESS(CLOCK) -分频部分 BEGIN IF CLOCKEVENT AND CLOCK=1 THEN COUNT=COUNT+1; COUNT1=COUNT1+1; COUNT_100hz=COUNT_100hz+1; COUNT200=COUNT200+1; COUNT2=COUNT2+1; COUNT3=COUNT3+1; IF COUNT=24999999 THEN -1HZ分频 CLK1hz24999999 AND COUNT=49999999 THEN CLK1hz=0; ELSIF COUNT=50000000 THEN COUNT=0; END IF; IF COUNT2=9998 THEN CLK_1K9998 AND COUNT2=19997 THEN CLK_1K=0; ELSIF COUNT2=19998 THEN COUNT2=0; END IF; IF COUNT3=24999 THEN -1KHZ分频 CLK_2K24999 AND COUNT3=49999 THEN CLK_2K=0; ELSIF COUNT3=50000 THEN COUNT3=0; END IF; IF COUNT1=4999 THEN -5KHZ分频 CLK_5K4999 AND COUNT1=9999 THEN CLK_5K=0; ELSIF COUNT1=10000 THEN COUNT1=0; END IF; IF COUNT_100hz=249999 THEN -100HZ分频 CLK_100hz249999 AND COUNT_100hz=499999 THEN CLK_100hz=0; ELSIF COUNT_100hz=500000 THEN COUNT_100hz=0; END IF; IF COUNT200=124999 THEN -200HZ分频 CLK_200hz124999 AND COUNT200=249999 THEN CLK_200hz=0; ELSIF COUNT200=250000 THEN COUNT200=0; END IF; END IF;END PROCESS;P2: PROCESS(CLK_100hz,button0,button1,button2,button3,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7,tmp8) -消抖部分 BEGIN IF(CLK_100hzevent AND CLK_100hz=0)THEN tmp2=tmp1; tmp1=button0; tmp4=tmp3; tmp3=button1; tmp6=tmp5; tmp5=button2; tmp8=tmp7; tmp7=button3; END IF; RST = CLK_100hz AND tmp1 AND (NOT tmp2); DIRECTION_RIGHT =CLK_100hz AND tmp3 AND (NOT tmp4); DIRECTION_UP =CLK_100hz AND tmp5 AND (NOT tmp6); DIRECTION_LEFT =CLK_100hz AND tmp7 AND (NOT tmp8); END PROCESS;p0:PROCESS(CLK_1K) -产生随机数BEGIN IF CLK_1KEVENT AND CLK_1K=1 THEN if TIMES=0 THEN N=N; ELSE IF N=6 THEN N=0; ELSE N=N+1; END IF; END IF; END IF;END PROCESS;p3: PROCESS(CLK_2K)BEGINIF CLK_2Kevent AND CLK_2K=1 THEN IF NUM=20 THEN NUM=0; ELSE NUM=NUM+1; END IF; IF NUM1=19 THEN NUM1=0; ELSE NUM1=NUM1+1; END IF; IF NUM2=18 THEN NUM2=0; ELSE NUM2=NUM2+1; END IF; IF NUM3=22 THEN NUM3=0; ELSE NUM3=NUM3+1; END IF; END IF ; END PROCESS; p4:PROCESS(CLK_5K) BEGINif CLK_5KEVENT AND CLK_5K=1 then IF SEL=111 THEN SEL=000; ELSE SEL=SEL+1; END IF; END IF;END PROCESS; p5: PROCESS(CLK1hz,START,T_HIGH,T_LOW,SUCCESS,FAIL)-数码管显示判断部分 BEGIN IF START=5 THEN -54321游戏开始,START为瞬时值 T_HIGH=5;T_LOW=9; TIME_UP=0; CNT1=0; ELSIF CLK1hzEVENT AND CLK1hz=1 THEN IF SUCCESS=1THEN -成功的话则显示成功所用时间 if CNT1=0 then T_LOW=9-T_LOW; T_HIGH=5-T_HIGH ; CNT1=CNT1+1; ELSE T_LOW=T_LOW; T_HIGH=T_HIGH ; T_LOW=T_LOW; END IF; ELSIF FAIL=1 THEN - 失败则显示失败时刻值 T_LOW=T_LOW; T_HIGH=T_HIGH ; ELSIF SUCCESS=0 AND FAIL=0 THEN - 正常则倒计时 If T_LOW=0 AND T_HIGH=0 THEN TIME_UP=1; -时间到60S返回TIME_UP信号 ELSIF T_LOW=0 AND T_HIGH/=0 THEN T_LOW=9; T_HIGH=T_HIGH-1; ELSE T_LOW=T_LOW-1; END IF; END IF; END IF; END PROCESS; P6:PROCESS(CLK_5K,T_HIGH,T_LOW,START) - 数码管显示部分 BEGIN IF START/=5 AND START/=6 THEN LIGHT=0000000; ELSIF CLK_5KEVENT AND CLK_5K=1 THEN IF(STATE=1)THEN STATE=0; ELSE STATELIGHT_ENLIGHT_ENLIGHT_EN=111111; END CASE; SHOW(0)=T_LOW;SHOW(1)LIGHTLIGHTLIGHTLIGHTLIGHTLIGHTLIGHTLIGHTLIGHTLIGHTLIGHT=0000000; END CASE; END IF; END PROCESS;p7:PROCESS(RST,CLK_200hz,START,DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP,SX,SY ) -控制赛车部分 BEGIN IF RST=1 THEN SX=0;SY=2; ELSIF CLK_200hzevent AND CLK_200hz=1 THEN -DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP脉宽5ms -所以用CLK_200hz时钟检测,避免过多检测到信号或没有检测到方向信号 SX1=2;SY1=3; IF TIMES=0 THEN IF DIRECTION_LEFT=1 then -赛车向左移一格 SY=SY-1; ELSIF (DIRECTION_RIGHT=1) then -赛车向右移一格 SY=SY+1; ELSIF (DIRECTION_UP=1) then -赛车向上移一格 SX -0号赛道判断部分 IF( (SY=0 and SX=0)or (SY=0 and SX=1)or (SY=0 and SX=2)or (SY=1 and SX=3)or (SY=3 and SX=3)or (SY=2 and SX=4)or (SY=3 and SX=5)or (SY=3 and SX=6)or (SY=3 and SX=7)or (SY=4 and SX=0)or (SY=4 and SX=1)or (SY=4 and SX=2)or (SY=5 and SX=3)or (SY=6 and SX=4)or (SY=7 and SX=5)or (SY=7 and SX=6)or (SY=7 and SX=7) then FAIL=1; ELSIF (SY=4 and SX=7)or (SY=5 and SX=7)or (SY=6 and SX=7) then SUCCESS=1; ELSE SUCCESS=0;FAIL -1号赛道判断部分 IF( (SY=1 and SX=0)or (SY=0 and SX=1)or (SY=1 and SX=2)or (SY=0 and SX=3)or (SY=1 and SX=4)or (SY=2 and SX=5)or (SY=1 and SX=6)or (SY=3 and SX=3)or (SY=2 and SX=7)or (SY=4 and SX=0)or (SY=5 and SX=1)or (SY=6 and SX=2)or (SY=7 and SX=3)or (SY=7 and SX=4)or (SY=6 and SX=5)or (SY=5 and SX=6)or (SY=5 and SX=7) then FAIL=1; ELSIF (SY=3 and SX=7)or (SY=4 and SX=7) then SUCCESS=1; ELSE SUCCESS=0;FAIL -2号赛道判断部分 IF( (SY=1 and SX=0)or (SY=2 and SX=1)or (SY=1 and SX=2)or (SY=1 and SX=3)or (SY=2 and SX=4)or (SY=3 and SX=5)or (SY=4 and SX=6)or (SY=3 and SX=3)or (SY=5 and SX=7)or (SY=4 and SX=0)or (SY=5 and SX=1)or (SY=6 and SX=2)or (SY=6 and SX=3)or (SY=5 and SX=4)or (SY=6 and SX=5)or (SY=7 and SX=6)or (SY=7 and SX=7) then FAIL=1; ELSIF (SY=6 and SX=7) then SUCCESS=1; ELSE SUCCESS=0;FAIL -3号赛道判断部分 IF( (SY=1 and SX=0)or (SY=1 and SX=1)or (SY=1 and SX=2)or (SY=1 and SX=3)or (SY=0 and SX=4)or (SY=0 and SX=5)or (SY=0 and SX=6)or (SY=0 and SX=7)or (SY=6 and SX=0)or (SY=6 and SX=1)or (SY=6 and SX=2)or (SY=6 and SX=3)or (SY=3 and SX=3)or (SY=6 and SX=4)or (SY=6 and SX=5)or (SY=6 and SX=6)or (SY=6 and SX=7) then FAIL=1; ELSIF (SY=4 and SX=7)or (SY=5 and SX=7)or (SY=1 and SX=7)or (SY=2 and SX=7)or(SY=3 and SX=7)then SUCCESS=1; ELSE SUCCESS=0;FAIL SUCCESS=0;FAIL=0; END CASE; END IF ; END IF; end process; PROCESS(SEL,RST,SUCCESS,FAIL,N,NUM,NUM1,NUM2,NUM3,SX,SY,SX1,SY1,CLK1hz,START,TIMES,TIME_UP)BEGIN IF RST=1 THEN TIMES=5; START=0; ELSIF START=6 THEN IF SUCCESS=1 THEN TIMES=7; ELSIF TIME_UP=1 OR FAIL=1 THEN TIMES=6; END IF; ELSIF CLK1hzEVENT AND CLK1hz=1 then IF TIMES=0 THEN TIMES=0; ELSE TIMES=TIMES-1; END IF; if START=6 then START=6; else START case SEL is -显示成功字符“V” When 000= ROW=01111111;COL_RED=00000000;COL_GREEN ROW=10111111;COL_RED=01000100;COL_GREEN ROW=11011111;COL_RED=01000100;COL_GREEN ROW=11101111;COL_RED=01000100;COL_GREEN ROW=11110111;COL_RED=00101000;COL_GREEN ROW=11111011;COL_RED=00010000;COL_GREEN ROW=11111101;COL_RED=00000000;COL_GREEN ROW=11111110;COL_RED=00000000;COL_GREEN ROW=11111111;COL_RED=00000000;COL_GREEN case SEL is -显示失败字符“X” When 000= ROW=01111111;COL_RED=10000001;COL_GREEN ROW=10111111;COL_RED=01000010;COL_GREEN ROW=11011111;COL_RED=00100100;COL_GREEN ROW=11101111;COL_RED=00011000;COL_GREEN ROW=11110111;COL_RED=00011000;COL_GREEN ROW=11111011;COL_RED=00100100;COL_GREEN ROW=11111101;COL_RED=01000010;COL_GREEN ROW=11111110;COL_RED=10000001;COL_GREEN ROW=11111111;COL_RED=00000000;COL_GREEN CASE S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郴州无尘室装修施工方案
- 安全教育校园围墙彩绘
- 购销供货合同协议
- 2025土地使用权转让合同模板
- 2025私营企业劳动合同书范本
- 2025【合同范本】中外合作经营合同
- 2025电商平台合作合同模板
- 2025年公开选拔科级领导干部考试笔试试题及答案
- 中职电工考试题及答案
- 药剂考试题目及答案
- 交通标志牌工程施工组织设计(标准版)
- 全区建设工程质量检测人员岗位考试考核实施细则
- 【课件】《红烛》课件24张统编版高中语文必修上册
- 交通事故认定书复核申请书模板
- 电气一次设备吊装搬运施工方案
- “一机一档”范本(共12页)
- 长输管道施工工序
- 德龙自卸车合格证扫描件(原图)
- 公司法实施条例
- 印刷包装专业英语汇总
- 点线面构成ppt课件
评论
0/150
提交评论