北邮数电综合实验报告文档格式.docx
- 文档编号:17357311
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:19
- 大小:534.71KB
北邮数电综合实验报告文档格式.docx
《北邮数电综合实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《北邮数电综合实验报告文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
当STATE=1时,处于用按键控制赛车运动的状态,此期间分别用BTN1,BTN2,BTN3来控制赛车的右,前,左的运动方向,运动期间还要不断判断赛车是否撞到墙或者障碍物,以及判断赛车是否到达终点,一次来确定游戏是否进入STATE=2或STATE=3状态。
当STATE=2时,要在点阵上显示“V”,即给点阵矩阵初始化显示此图形的数据。
当STATE=3时,要在点阵上显示“X”,即给点阵矩阵初始化显示此图形的数据。
(3)显示模块
因为所有状态不能同时显示,故循环显示电路分别扫描。
当时钟频率足够大时,根据视觉暂留则可看到较为稳定的画面。
点阵显示是在时钟频率1kHz下一行一行扫描,这样在不同时候就可以显示不同的图形,比如倒计时的5,4,3,2,1和赛道,赛车的位置;
其次是数码管的显示,数码管首先有个控制计数的代码,此计数是在时钟频率1Hz下工作的,然后在时钟频率1kHz的控制下分别让两个数码管显示,此即为计时器的显示。
三、仿真波形及波形分析
倒计时波形
数码管显示及波形
点阵显示波形
四、源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCARIS
PORT(
CLK:
INSTD_LOGIC;
--时钟信号
RESET:
--复位输入
CONTROL:
INSTD_LOGIC_VECTOR(2DOWNTO0);
--赛车控制
ROW:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
--行控制输出
COLR,COLG:
--列控制输出
CAT:
OUTSTD_LOGIC_VECTOR(5DOWNTO0);
--数码管选通
DISPLAY:
OUTSTD_LOGIC_VECTOR(6DOWNTO0)—数码管显示
);
ENDCAR;
ARCHITECTUREbehaveOFCARIS
SIGNALTEMP1:
INTEGERRANGE0TO49999;
--分频信号
SIGNALTEMP2:
INTEGERRANGE0TO49999999;
SIGNALCLK1K:
STD_LOGIC;
--频率1kHz时钟
SIGNALCLK1HZ:
--频率1Hz时钟
SIGNALTIMEH:
INTEGERRANGE0TO5;
--十位计数
SIGNALTIMEL:
INTEGERRANGE0TO9;
--个位计数
SIGNALLIGHTH:
STD_LOGIC_VECTOR(6DOWNTO0);
--十位数码管控制信号
SIGNALLIGHTL:
--个位数码管控制信号
TYPEPRESENT_STATEIS(H,L);
--自定义变量
SIGNALP_STATE:
PRESENT_STATE;
SIGNALSTATE:
INTEGERRANGE0TO3;
--四个状态控制信号
SIGNALCOUNT:
INTEGERRANGE0TO6;
--倒计时控制信号
SIGNALCX,CY:
INTEGERRANGE0TO7;
--赛车坐标控制信号
SIGNALROWS:
STD_LOGIC_VECTOR(7DOWNTO0);
--行控制信号
SIGNALCOLR7,COLR6,COLR5,COLR4,COLR3,COLR2,COLR1,COLR0,--列控制信号
COLG7,COLG6,COLG5,COLG4,COLG3,COLG2,COLG1,COLG0:
BEGIN
DIV1K:
PROCESS(CLK)--分频1kHz
IFCLK'
EVENTANDCLK='
1'
THEN
IFTEMP1=49999THEN
TEMP1<
=0;
ELSE
=TEMP1+1;
ENDIF;
IFTEMP1<
25000THEN
CLK1K<
='
0'
;
ELSE
ENDIF;
ENDPROCESS;
DIV1HZ:
PROCESS(CLK)--分频1Hz
IFTEMP2=49999999THEN
TEMP2<
=TEMP2+1;
IFTEMP2<
25000000THEN
CLK1HZ<
GAMERUN:
PROCESS(CLK1HZ,RESET)--游戏运行进程
IFRESET='
THEN--复位和初始化
STATE<
COUNT<
=6;
CX<
=2;
CY<
TIMEH<
TIMEL<
COLG7<
="
00000000"
COLG6<
COLG5<
COLG4<
COLG3<
COLG2<
COLG1<
COLG0<
ELSIFCLK1HZ'
EVENTANDCLK1HZ='
CASESTATEIS
WHEN0=>
CASECOUNTIS--点阵倒计时
WHEN6=>
COUNT<
=5;
COLR7<
COLR6<
COLR5<
COLR4<
COLR3<
COLR2<
COLR1<
COLR0<
WHEN5=>
=4;
00111100"
00100000"
00000100"
WHEN4=>
=3;
00100100"
WHEN3=>
WHEN2=>
=1;
WHEN1=>
00001000"
WHEN0=>
STATE<
ENDCASE;
WHEN1=>
IFTIMEL=9THEN--数码管计时
TIMEL<
IFTIMEH=5THEN
TIMEH<
IFCY/=7THEN
STATE<
=3;
ELSE
ENDIF;
ELSE
=TIMEH+1;
ENDIF;
ELSE
=TIMEL+1;
ENDIF;
COLG7<
00001110"
--初始化赛道
COLG6<
COLG5<
COLG4<
COLG3<
COLG2<
COLG1<
COLG0<
COLR7<
00011111"
COLR6<
00010001"
COLR5<
COLR4<
00100010"
COLR3<
01000100"
COLR2<
10001000"
COLR1<
COLR0<
CASECYIS--赛车坐标
COLG0(7-CX)<
COLG1(7-CX)<
COLG2(7-CX)<
COLG3(7-CX)<
COLG4(7-CX)<
COLG5(7-CX)<
COLG6(7-CX)<
WHEN7=>
COLG7(7-CX)<
CASECONTROLIS--按键控制赛车
WHEN"
100"
=>
CX<
=CX-1;
010"
CY<
=CY+1;
001"
=CX+1;
WHENOTHERS=>
NULL;
CASECYIS--判断移动后是否撞墙
IFCOLR0(7-CX)='
THENSTATE<
ELSECOLG0(7-CX)<
IFCOLR1(7-CX)='
ELSECOLG1(7-CX)<
IFCOLR2(7-CX)='
ELSECOLG2(7-CX)<
IFCOLR3(7-CX)='
ELSECOLG3(7-CX)<
IFCOLR4(7-CX)='
ELSECOLG4(7-CX)<
IFCOLR5(7-CX)='
ELSECOLG5(7-CX)<
IFCOLR6(7-CX)='
ELSECOLG6(7-CX)<
STATE<
IFCY=7THENSTATE<
--判断移动后是否到达终点
WHEN2=>
COLR7<
--到达终点后显示“V”
COLR6<
COLR5<
COLR4<
COLR3<
COLR2<
COLR1<
COLR0<
COLG7<
COLG6<
00000001"
COLG5<
10000010"
COLG4<
COLG3<
00101000"
COLG2<
00010000"
COLG1<
COLG0<
WHEN3=>
COLG7<
--撞墙后显示“X”
COLR7<
01000010"
00011000"
ENDCASE;
LSTSHOW:
PROCESS(CLK1K)--在点阵上显示倒计时、赛道、和赛车
IFCLK1K'
EVENTANDCLK1K='
CASEROWSIS
WHEN"
11111110"
COLR<
=COLR0;
COLG<
=COLG0;
ROW<
=ROWS;
ROWS<
11111101"
=COLR1;
=COLG1;
11111011"
=COLR2;
=COLG2;
11110111"
=COLR3;
=COLG3;
11101111"
=COLR4;
=COLG4;
11011111"
=COLR5;
=COLG5;
10111111"
=COLR6;
=COLG6;
01111111"
=COLR7;
=COLG7;
WHENOTHERS=>
ENDCASE;
SHOWT:
PROCESS(CLK1K,TIMEH,TIMEL)--将计时译码至数码管上
CASETIMEHIS
WHEN5=>
LIGHTH<
="
1011011"
WHEN4=>
0110011"
WHEN3=>
1111001"
WHEN2=>
1101101"
WHEN1=>
0110000"
WHEN0=>
1111110"
WHENOTHERS=>
0000000"
ENDCASE;
CASETIMELIS
WHEN9=>
LIGHTL<
1111011"
WHEN8=>
1111111"
WHEN7=>
1110000"
WHEN6=>
1011111"
EVENTANDCLK1K='
THEN--利用视觉暂留显示计时
CASEP_STATEIS
WHENL=>
P_STATE<
=H;
CAT<
111110"
DISPLAY<
=LIGHTL;
WHENH=>
=L;
111101"
=LIGHTH;
ENDbehave;
五、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮数电 综合 实验 报告