EDA设计参考程序完整版合计31题Word格式文档下载.docx
《EDA设计参考程序完整版合计31题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA设计参考程序完整版合计31题Word格式文档下载.docx(55页珍藏版)》请在冰豆网上搜索。
endprocess;
hex<
=cnt(2downto0);
withhexselect
ledout<
0000111"
when"
"
1111101"
110"
1101101"
101"
1100110"
100"
1001111"
011"
1011011"
010"
0000110"
001"
0111111"
whenothers;
enda;
2、设计一个带计数使能、同步复位、带进位输出的增1十进制计数器,计数结果由共阴极七段数码管显示。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcounter3IS
PORT(clk,clr,en:
INSTD_LOGIC;
co:
OUTSTD_LOGIC;
ledout:
OUTSTD_LOGIC_VECTOR(6downto0));
ENDcounter3;
ARCHITECTUREaOFcounter3IS
SIGNALcnt:
STD_LOGIC_VECTOR(3downto0);
SIGNALled:
STD_LOGIC_VECTOR(6downto0);
BEGIN
PROCESS(clk)
BEGIN
IF(clk'
EVENTANDclk='
)THEN
IFclr='
THEN
cnt<
=(OTHERS=>
'
ELSIFEN='
IFcnt="
1001"
="
0000"
co<
='
ELSE
=cnt+'
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
ledout<
=NOTled;
WITHcntSELECT
led<
1111001"
WHEN"
0001"
--1
"
0100100"
0010"
--2
0110000"
0011"
--3
0011001"
0100"
--4
0010010"
0101"
--5
0000010"
0110"
--6
1111000"
0111"
--7
0000000"
1000"
--8
0010000"
--9
1000000"
WHENothers;
--0
ENDa;
3、设计一个带计数使能、异步复位、同步装载的可逆三位二进制计数器,计数结果由共阴极七段数码管显示。
port(clk,clr,en,stld,upon:
din:
instd_logic_vector(2downto0);
q:
outstd_logic_vector(6downto0));
endcounter;
signaly:
std_logic_vector(6downto0);
process(clk)
ifclr='
then
elsifclk'
ifstld='
=din;
elsifen='
ifupon='
else
=cnt+'
endif;
endprocess;
q<
=NOTy;
y<
enda;
4、设计一个带计数使能、同步复位、异步装载、可逆计数的通用计数器。
计数结果由共阴极七段数码管显示。
entityasdasdsadxvzzxis
Generic(count_value:
INTEGER:
=9);
Port(clk:
inSTD_LOGIC;
clr:
en:
load:
dir:
data_in:
inINTEGERRANGE0TOcount_value;
ledout:
outSTD_LOGIC_VECTOR(6downto0));
endasdasdsadxvzzx;
architectureBehavioralofasdasdsadxvzzxis
SIGNALcnt:
INTEGERRANGE0TOcount_value;
SIGNALled:
STD_LOGIC_VECTOR(6DOWNTO0);
PROCESS(load,clk)
IFload='
=data_in;
ELSIF(clk'
eventandclk='
)THEN
IFclr='
=0;
elsifen='
ifdir='
ifcnt=count_valuethen
=cnt+1;
ifcnt=0then
=count_value;
=cnt-1;
=NOTled;
withcntselect
led<
WHEN1,--1
WHEN2,--2
WHEN3,--3
WHEN4,--4
WHEN5,--5
WHEN6,--6
WHEN7,--7
WHEN8,--8
WHEN9,--9
"
WHEN0,--0
1111111"
endBehavioral;
5、设计一个具有16分频、8分频、4分频和2分频功能的分频器
useieee.std_logic_arith.all;
entityclkdivis
port(clk:
clk_div2:
outstd_logic;
clk_div4:
clk_div8:
clk_div16:
endclkdiv;
architecturertlofclkdivis
signalcount:
std_logic_vector(3downto0);
if(clk'
)then
if(count="
1111"
)then
count<
count<
=count+1;
clk_div2<
=count(0);
clk_div4<
=count
(1);
clk_div8<
=count
(2);
clk_div16<
=count(3);
endrtl;
法二
ENTITYdiv4IS
PORT(clk:
INSTD_LOGIC;
INSTD_LOGIC_VECTOR(3DOWNTO0);
reset:
fout:
OUTstd_LOGIC);
ENDdiv4;
ARCHITECTUREaOFdiv4IS
variablecnt:
std_logic_vector(3downto0):
begin
ifreset='
fout<
elsif(clk'
cnt:
else
ifdin="
=cnt(3);
elsifdin="
=cnt
(2);
1100"
=cnt
(1);
elsifdin<
1110"
=cnt(0);
6、设计一个正负脉宽相等的通用分频器
ENTITYcounterIS
GENERIC(count_value:
INTEGER:
=15);
PORT(clk,clr,en:
count:
OUTSTD_LOGIC);
ENDcounter;
ARCHITECTUREaOFcounterIS
INTEGERRANGE0TOcount_value;
SIGNALco:
STD_LOGIC;
SIGNALcount1:
STD_LOGIC;
PROCESS(clk,clr)
IFclr='
cnt<
ELSIF(clk'
IFen='
IFcnt=count_valueTHEN
ELSE
=cnt+1;
ENDIF;
PROCESS(co)
IF(co'
EVENTANDco='
count1<
=NOTcount1;
=count1;
ENDPROCESS;
法二:
ENTITYdivIS
GENERIC(num:
=2);
PORT
(clk:
reset:
co:
ENDdiv;
ARCHITECTURErtlOFdivIS
PROCESS(clk)
VARIABLEcnt:
STD_LOGIC_VECTOR(numdownto0):
IFreset='
thenco<
=cnt(num);
ENDrtl;
7、设计一个正负脉宽可控的4分频的分频器
LIBRARYIEEE;
PORT(clk,rst:
INSTD_LOGIC_VECTOR(1DOWNTO0);
COUNT:
SIGNALco:
STD_LOGIC_VECTOR(1DOWNTO0);
ifrst='
then
00"
if(cnt="
11"
=notco;
elsif(cnt=din)then
count<
=co;
8根据需要设计一个分频器:
可以控制实现四种分频形式:
第一种:
5分频、第二种:
8分频、
第三种:
15分频、第四种:
16分频
(其中8分频和16分频为正负脉宽相等的分频器)
entityfenpinis
en:
instd_logic_vector(1downto0);
cout:
endfenpin;
architecturedgnfenpinoffenpinis
if(clk'
eventANDclk='
if(en="
if(cnt>
--8分频
cout<
elsif(en="
01"
--5分频
10"
cout<
--15分频
--16分频
enddgnfenpin;
9、设计一个M序列发生器,M序列为“11110101”
USEIEEE.STD_logic_1164.all;
entityseqis
fout:
outSTD_LOGIC);
endseq;
architectureBehavioralofseqis
if(clk'
ifcnt="
=cnt+'
withcntselect
when"
'
whenothers;
10、设计一个彩灯控制器,彩灯共有6个,每次顺序点亮相邻的2个彩灯,
如此循环执行,循环的方向可以控制
entitycaidengis
rl:
outSTD_LOGIC_VECTOR(5downto0));
endcaideng;
architectureBehavioralofcaidengis
signalled:
STD_LOGIC_VECTOR(5downto0):
signalk:
STD_LOGIC:
if(k='
=(0=>
1=>
others=>
k<
elsif(rl='
=led(4downto0)&
led(5);
=led(0)&
led(5downto1);
ledout<
=led;
11、设计一个具有左移、右移控制,同步并行装载和串行装载的4位串行移位寄存器
ENTITYshifter1IS
PORT(clk,clr,ser,dir,stld:
din:
INSTD_LOGIC_VECTOR(0TO3);
qh:
OUTSTD_LOGIC_VECTOR(0TO3));
ENDshifter1;
ARCHITECTURErt1OFshifter1IS
SIGNALreg:
STD_LOGIC_VECTOR(0TO3):
process(clk,clr)
reg<
ifstld='
reg<
if(dir='
=reg(1to3)&
ser;
qh<
=reg(0);
=ser&
reg(0to2);
=reg(3);
endrt1;
12、设计一个4人表决电路,参加表决者为4人,同意为1,不同意为0,同意者过半则表决通过,
绿指示灯亮,表决不通过则红指示灯亮。
同意与不同意人数相等时,两灯同时亮起。
数码管显示赞