数电实验报告Word格式.docx
- 文档编号:17704290
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:19
- 大小:716.54KB
数电实验报告Word格式.docx
《数电实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《数电实验报告Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
IA:
INSTD_LOGIC;
--甲输入
IB:
--乙输入
clk:
INSTD_LOGIC;
--时钟输入
reset:
score:
OUTSTD_LOGIC_VECTOR(0TO6);
--控制数码管显示比分
light:
BUFFERSTD_LOGIC_VECTOR(0TO7);
--灯输出
control:
BUFFERSTD_LOGIC_VECTOR(0TO5)--选择当前显示数码管
);
ENDpingpong;
ARCHITECTUREppOFpingpongIS
TYPEstate_typeIS(waiting,s1,moveB,permitB,s2,moveA,permitA,ends);
SIGNALstate:
state_type;
--状态变量
SIGNALczq,cqt,c:
STD_LOGIC;
--时钟分频
SIGNALcount1:
INTEGERRANGE0to149999;
SIGNALcount2:
INTEGERRANGE0to9;
SIGNALcountc:
INTEGERRANGE0to19999;
SIGNALcnt1,cnt2:
--得分方控制信号
SIGNALscore11,score12:
STD_LOGIC_VECTOR(0TO3);
--甲计分信号
SIGNALscore21,score22:
--乙计分信号
SIGNALround1,round2:
SIGNALclears,cleart:
--分数清零,球台清零控制
SIGNALdirect:
--方向控制0右移1左移
SIGNALwac:
INTEGERRANGE0to24;
--等待发球计数
BEGIN
-------------------------
--P1:
控制器时钟分频--
P1:
PROCESS(clk)
begin
if(clk'
eventandclk='
1'
)then
if(count1=149999)then
count1<
=0;
czq<
=notczq;
else
=count1+1;
endif;
endif;
ENDPROCESS;
--P2:
球台时钟分频--
P2:
PROCESS(czq)
if(czq'
eventandczq='
if(count2=9)then
count2<
cqt<
=notcqt;
=count2+1;
--P3:
球台控制--
P3:
PROCESS(cqt)
VARIABLElightvar:
INTEGERRANGE0to8;
--球位控制变量
if(cqt'
eventandcqt='
if((score11="
0001"
andscore12="
)or(score21="
andscore22="
))
then--一方到11分,发清零信号
if(score11="
)then
round1<
=round1+1;
round2<
=round2+1;
clears<
='
;
if((round1="
0011"
)or(round2="
))then
="
0000"
endif;
clears<
0'
if(cleart='
)then--球台无球
lightvar:
light<
00000000"
else
if(direct='
)then--球右移
if(lightvar<
8)then
=lightvar+1;
else
endif;
else--球左移
if(lightvar=0)then
=8;
=lightvar-1;
caselightvaris--球位
when1=>
light<
10000000"
when2=>
01000000"
when3=>
00100000"
when4=>
00010000"
when5=>
00001000"
when6=>
00000100"
when7=>
00000010"
when8=>
00000001"
whenothers=>
endcase;
endif;
------------------------
--P4:
状态转移--
P4:
casestateis
----------------------
--等待发球状态
whenwaiting=>
cleart<
if(clears='
)then--局后清零
score11<
score12<
score21<
score22<
if(wac=24)then--得分后等待时间已到
if(reset='
)then
state<
=waiting;
wac<
=24;
if(IA='
andIB='
--甲发球
=s1;
elsif(IA='
--乙发球
=s2;
--继续等待
else--得分后尚未可以发球
=wac+1;
--甲发球状态
whens1=>
--球上球台
direct<
--球向右移
if(light
(1)='
=moveB;
--球向乙移动状态
whenmoveB=>
if(light(6)='
--不允许乙击球且乙未击球
elsif(light(6)='
--允许乙击球且乙未击球
=permitB;
--不允许乙击球而乙击球
cnt1<
cleart<
=ends;
--允许乙击球状态
whenpermitB=>
andlight(7)='
--乙未及时击球
elsif(IB='
--乙击球
=moveA;
--乙尚未击球
--乙发球状态
whens2=>
--球向左移
--球向甲移动状态
whenmoveA=>
andIA='
--不允许甲击球且甲未击球
elsif(light
(1)='
--允许甲击球且甲未击球
=permitA;
cnt2<
--允许甲击球状态
whenpermitA=>
andlight(0)='
--甲未及时击球
--得分状态
whenends=>
if(cnt1='
--甲得分
1001"
--个位已到9
score12<
=score12+1;
score11<
=score11+1;
elsif(cnt2='
--乙得分
if(score21="
score22<
=score22+1;
score21<
=score21+1;
--得分信号复零
endcase;
-----------------------
--P5:
数码管扫描分频--
P5:
if(countc=19999)then
countc<
c<
=notc;
=countc+1;
--P6:
数码管显示控制--
P6:
PROCESS(c)
VARIABLEcount:
integerrange0to5;
if(c'
eventandc='
count:
=count+1;
casecountis
when0=>
control<
011111"
when1=>
101111"
when2=>
110111"
when3=>
111011"
when4=>
111101"
when5=>
111110"
--P7:
译码显示控制--
P7:
PROCESS(control)
variablesc:
std_logic_vector(0to3);
if(control="
--显示甲得分个位
sc:
=score11;
elsif(control="
--显示甲得分十位
=score12;
--显示乙得分个位
=score21;
--显示乙得分十位
=score22;
=round1;
=round2;
casescis
when"
=>
score<
1111110"
--0
0110000"
--1
0010"
1101101"
--2
1111001"
--3
0100"
0110011"
--4
0101"
1011011"
--5
0110"
1011111"
--6
0111"
1110000"
--7
1000"
1111111"
--8
1111011"
--9
whenothers=>
0000000"
-------------------------------------------------
ENDpp;
五、功能说明
选用两个按键作为甲、乙控制器,一个按键作为reset清零键。
甲或乙任意一个按下按键作为击球动作,乒乓球游戏开始。
发光管按一定的方向依次闪亮来表示球的运动。
一方开球后球向另一方移动,球未达到边界两个灯位置时对方击球判为输,球达到边界后仍未击球也判为输。
两方依次在合适的时机按下按键进行往返击球直至一方得分。
单局11分制,7局4胜。
六、元器件清单及资源利用情况
一、实验器材
1.计算机(装有quartus2软件及相应驱动程序);
3.直流稳压电源;
5.MAX7000s系列实验板,型号EPM7128SLC84-15。
二、资源利用情况
七、故障及问题分析
1.程序编写编译过程中,出现了一些小问题,主要是某些地方忘写分号,以及if和endif数量不匹配的问题,发现后立即进行了修正。
2.第一次下载时计分数码管显示的位置不正确。
发现是管脚编辑时选择错误。
3.程序中没有编写防抖模块,有时会发生按一下键进行了多次状态转移的情况。
后将时间分频稍作了下修改,把扫描频率降低后情况有所改善。
4.最初的程序中数码管扫描与球台控制使用了同一分频,下载后发现数码管扫描速度太慢,发生闪烁现象,于是在程序中多加入一段数码管自己的分频程序进行扫描调节。
5.实验室中很多板子的电源接口接触不良,导致下载后无法正常显示结果甚至无法正常下载,更换了多个实验板。
6.不同的实验板主频不同,致使下载后仍需根据需要修改时间分频数值。
八、总结及结论
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告