数电实验报告Word文档下载推荐.docx
《数电实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数电实验报告Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。
begin
process(clk,clear)
begin
ifclear='
1'
thencounter<
=0;
elsifclk'
eventandclk='
then
ifcounter=5thencounter<
elsecounter<
=counter+1;
endif;
casecounteris
when1=>
light<
="
1111110"
;
cat<
011111"
when2=>
0110000"
101111"
when3=>
1101101"
110111"
when4=>
1111001"
111011"
when5=>
0110011"
111101"
when6=>
1011011"
111110"
whenothers=>
0000000"
000000"
endcase;
endprocess;
end;
实验2.1
entitygundongis
clk_temp:
light:
cat:
architecturefunofgundongis
componentclkdiv
port(clk:
clk_div2k:
outstd_logic);
endcomponent;
signalclk1:
std_logic;
u1:
clkdivportmap(clk=>
clk_temp,clk_div2k=>
clk1);
process(clk1)
variablecounter:
integerrange0to6:
variablecontrol:
bit_vector(0to5):
ifclk1'
eventandclk1='
ifcounter=6then
counter:
=1;
else
control:
=controlror1;
when1=>
when2=>
when3=>
when4=>
when5=>
when6=>
whenothers=>
cat<
=control;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
useieee.std_logic_unsigned.all;
ENTITYclkdivIS
PORT(clk:
INSTD_LOGIC;
clk_div2k:
OUTSTD_LOGIC);
ENDclkdiv;
ARCHITECTURErtlOFclkdivIS
signalcount:
integerrange0to999;
SIGNALclk_temp:
STD_LOGIC;
BEGIN
PROCESS(clk,count)
BEGIN
IF(clk'
eventANDclk='
)THEN
IF(count=999)THEN
count<
=0;
clk_temp<
=NOT(clk_temp);
ELSE
=count+1;
ENDIF;
ENDPROCESS;
clk_div2k<
=clk_temp;
ENDrtl;
实验2.2
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYgundong2IS
PORT(
s:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
ENDgundong2;
ARCHITECTUREMooreOFgundong2IS
TYPEstate_typeIS(s1,s2,s3,s4,s5,s6);
SIGNALstate:
state_type;
SIGNALx:
INTEGERRANGE-1TO5:
SIGNALy:
INTEGERRANGE-1TO12:
SIGNALtmp:
INTEGERRANGE0TO599;
SIGNALclk_out:
STD_LOGIC;
p1:
PROCESS(clk)
BEGIN
)THEN
IFtmp=599THEN
tmp<
ELSE
=tmp+1;
ENDIF;
ENDIF;
ENDPROCESSp1;
p2:
PROCESS(tmp)
IFtmp=599THEN
clk_out<
='
0'
ENDPROCESSp2;
--FrequencySegmentation
p3:
IF(clk'
EVENTANDclk='
IFx=5Then
y<
=y+1;
x<
ELSE
=x+1;
IF(y=12)THEN
IF(y=0)THEN
CASEstateIS
WHENs1=>
s<
state<
=s2;
--0
WHENs2=>
=s3;
WHENs3=>
=s4;
WHENs4=>
=s5;
WHENs5=>
=s6;
WHENs6=>
=s1;
ENDCASE;
ELSIF(y=1)THEN
--1
111111"
ELSIF(y=2)THEN
--2
ELSIF(y=3)THEN
--3
ELSIF(y=4)THEN
--4
ELSIF(y=5)THEN
--5
ELSIF(y=6)THEN
ELSIF(y=7)THEN
ELSIF(y=8)THEN
ELSIF(y=9)THEN
ELSIF(y=10)THEN
ELSIF(y=11)THEN
ENDPROCESS;
ENDMoore;