VHDL程序练习题含答案Word文档格式.docx
《VHDL程序练习题含答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《VHDL程序练习题含答案Word文档格式.docx(47页珍藏版)》请在冰豆网上搜索。
0100"
1100110"
0101"
1101101"
0110"
1111101"
0111"
0000111"
1000"
1111111"
1001"
1101111"
ELSELEDSEG<
=5;
ENDIF;
ENDPROCESS;
ENDBEHAVIOR;
(三)在下面横线上填上合适的语句,完成数据选择器的设计。
ENTITYMUX16IS
PORT(D0,D1,D2,D3:
INSTD_LOGIC_VECTOR(15DOWNTO0);
SEL:
INSTD_LOGIC_VECTOR(6DOWNTO0);
Y:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
END;
ARCHITECTUREONEOFMUX16IS
WITH7SELECT
Y<
=D0WHEN"
00"
D1WHEN"
01"
D2WHEN"
10"
D3WHEN8;
(四)在下面横线上填上合适的语句,完成JK触发器的设计。
说明:
设计一个异步复位/置位JK触发器,其真值表如下:
INPUT
OUTPUT
PSET
CLR
CLK
J
K
Q
1
X
不定
上升沿
翻转
保持
ENTITYJKFF1IS
PORT(PSET,CLR,CLK,J,K:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC);
ENDJKFF1;
ARCHITECTUREMAXPLDOFJKFF1IS
SIGNALTEMP:
STD_LOGIC;
PROCESS(PSET,CLR,CLK)
IF(PSET='
0'
ANDCLR='
1'
)THENTEMP<
='
ELSIF(PSET='
)THENNULL;
9(CLK'
EVENTANDCLK='
)THEN
10(J='
ANDK='
)THENTEMP<
=TEMP;
ELSIF(J='
=11;
END;
(五)在下面横线上填上合适的语句,完成计数器的设计。
设电路的控制端均为高电平有效,时钟端CLK,电路的预置数据输入端为4位D,计数输出端也为4位Q,带同步始能EN、异步复位CLR和预置控制LD的六进制减法计数器。
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT6IS
PORT(EN,CLR,LD,CLK:
D:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCNT6;
ARCHITECTUREBEHAOFCNT6IS
SIGNALQTEMP:
STD_LOGIC_VECTOR(3DOWNTO0);
PROCESS(CLK,CLR,LD)
BEGIN
IFCLR='
THENQTEMP<
--CLR=1清零
ELSIF(CLK'
)THEN--判断是否上升沿
IFLD='
=12;
--判断是否置位
ELSIFEN='
THEN--判断是否允许计数
IFQTEMP="
THENQTEMP<
=13;
--等于0,计数值置5
ELSEQTEMP<
=14;
--否则,计数值减1
ENDIF;
=QTEMP;
ENDBEHA;
(六)在下面横线上填上合适的语句,完成状态机的设计。
设计一个双进程状态机,状态0时如果输入”10”则转为下一状态,否则输出”1001”;
状态1时如果输入”11”则转为下一状态,否则输出”0101”;
状态2时如果输入”01”则转为下一状态,否则输出”1100”;
状态3时如果输入”00”则转为状态0,否则输出”0010”。
复位时为状态0。
ENTITYMOORE1IS
PORT(DATAIN:
INSTD_LOGIC_VECTOR(1DOWNTO0);
CLK,RST:
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ARCHITECTUREONEOFMOORE1IS
TYPEST_TYPEIS(ST0,ST1,ST2,ST3);
--定义4个状态
SIGNALCST,NST:
ST_TYPE;
--定义两个信号(现态和次态)
SIGNALQ1:
REG:
PROCESS(CLK,RST)--主控时序进程
IFRST='
THENCST<
=15;
--异步复位为状态0
ELSIFCLK'
THEN
CST<
=16;
--现态=次态
ENDIF;
COM:
PROCESS(CST,DATAIN)
CASECSTIS
WHENST0=>
IFDATAIN="
THENNST<
=ST1;
ELSENST<
=ST0;
Q1<
WHENST1=>
11"
=ST2;
WHENST2=>
=ST3;
1100"
WHENST3=>
17;
=Q1;
(七)在下面横线上填上合适的语句,完成减法器的设计。
由两个1位的半减器组成一个1位的全减器
--1位半减器的描述
ENTITYHALF_SUBIS
PORT(A,B:
DIFF,COUT:
ENDHALF_SUB;
ARCHITECTUREARTOFHALF_SUBIS
COUT<
=18;
--借位
DIFF<
=19;
--差
--1位全减器描述
ENTITYFALF_SUBIS
PORT(A,B,CIN:
ENDFALF_SUB;
ARCHITECTUREARTOFFALF_SUBIS
COMPONENTHALF_SUB
ENDCOMPONENT;
20T0,T1,T2:
BEGIN
U1:
HALF_SUBPORTMAP(A,B,21,T1);
U2:
HALF_SUBPORTMAP(T0,22,23,T2);
=24;
(八)在下面横线上填上合适的语句,完成分频器的设计。
占空比为1:
2的8分频器
ENTITYCLKDIV8_1TO2IS
PORT(CLK:
CLKOUT:
OUTSTD_LOGIC);
ENDCLKDIV8_1TO2;
ARCHITECTURETWOOFCLKDIV8_1TO2IS
SIGNALCNT:
STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALCK:
PROCESS(CLK)
IFRISING_EDGE(25)THEN
IFCNT="
THEN
CNT<
CK<
=26;
ELSECNT<
=27;
CLKOUT<
=CK;
(九)在下面横线上填上合适的语句,完成60进制减计数器的设计。
ENTITYCOUNTIS
PORT(CLK:
H,L:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDCOUNT;
ARCHITECTUREBHVOFCOUNTIS
VARIABLEHH,LL:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFCLK'
IFLL=0ANDHH=0THEN
HH:
LL:
ELSIFLL=0THEN
=28;
=29;
ELSE
=30;
H<
=HH;
L<
=LL;
(十)在下面横线上填上合适的语句,完成4-2优先编码器的设计。
ENTITYCODE4IS
PORT(A,B,C,D:
Y0,Y1:
ENDCODE4;
ARCHITECTURECODE4OFCODE4IS
SIGNALDDD:
SIGNALQ:
STD_LOGIC_VECTOR(31DOWNTO0);
DDD<
=32;
PROCESS(DDD)
IF(DDD(0)='
)THENQ<
="
ELSIF(DDD
(1)='
ELSIF(DDD
(2)='
)THENQ<
ELSEQ<
33;
Y1<
=Q(0);
Y0<
=Q
(1);
(十一)在下面横线上填上合适的语句,完成10位二进制加法器电路的设计。
USEIEEE.STD_LOGIC_34.ALL;
ENTITYADDER1IS
PORT(A,B:
INSTD_LOGIC_VECTOR(9DOWNTO0);
COUT:
OUTSTD_LOGIC;
SUM:
OUTSTD_LOGIC_VECTOR(9DOWNTO0));
ARCHITECTUREJGOFADDER1IS
SIGNALATEMP:
STD_LOGIC_VECTOR(10DOWNTO0);
SIGNALBTEMP:
SIGNALSUMTEMP:
STD_LOGIC_VECTOR(35DOWNTO0);
ATEMP<
=’0’&
A;
BTEMP<
B;
SUMTEMP<
=36;
SUM<
=SUMTEMP(9DOWNTO0);
=37;
ENDJG;
(十二)在下面横线上填上合适的语句,完成移位寄存器的设计。
8位的移位寄存器,具有左移一位或右移一位、并行输入和同步复位的功能。
ENTITYSHIFTERIS
PORT(DATA:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:
SHIFTLEFT,SHIFTRIGHT:
RESET:
MODE:
INSTD_LOGIC_VECTOR(1DOWNTO0);
QOUT:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
ENDSHIFTER;
ARCHITECTUREARTOFSHIFTERIS
PROCESS
38(RISING_EDGE(CLK));
--等待上升沿
IFRESET='
THENQOUT<
00000000"
--同步复位
ELSE
CASEMODEIS
WHEN"
=>
QOUT<
=SHIFTRIGHT&
39;
--右移一位
=QOUT(6DOWNTO0)&
40;
--左移一位
=41;
--不移,并行输入
WHENOTHERS=>
NULL;
42;
ENDART;
(十三)在下面横线上填上合适的语句,完成计数器的设计。
设计一个带有异步复位和时钟使能的一位八进制加法计数器(带进位输出端)。
ENTITYCNT8IS
PORT(CLK,RST,EN:
CQ:
OUTSTD_LOGIC_VECTOR(43DOWNTO0);
COUT:
ENDCNT8;
ARCHITECTUREBEHAVOFCNT8IS
PROCESS(CLK,RST,EN)
44CQI:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
IFRST='
THENCQI:
=“000”;
45CLK'
THEN
IFEN='
IFCQI<
"
111"
=46;
ELSECQI:
=47;
ENDIF;
IFCQI="
THENCOUT<
='
ELSECOUT<
CQ<
=CQI;
ENDPROCESS;
ENDBEHAV;
(十四)在下面横线上填上合适的语句,完成序列信号发生器的设计。
已知发送信号为””,要求以由高到低的序列形式一位一位的发送,发送开始前及发送完为低电平。
ENTITYXULIEIS
PORT(RES,CLK:
ARCHITECTUREARCHOFXULIEIS
SIGNALREG:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(CLK,RES)
IF(CLK’EVENTANDCLK=’1’)THEN
IFRES=’1’THEN
Y<
=’0’;
REG<
=48;
--同步复位,并加载输入
ELSEY<
=49;
--高位输出
REG<
=50;
--左移,低位补0
(十五)在下面横线上填上合适的语句,完成数据选择器的设计。
采用元件例化的设计方法,先设计一个2选1多路选择器,再使用3个2选1多路选择器构成一个4选1多路选择器。
--2选1多路选择器的描述
ENTITYMUX21IS
PORT(A,B,SEL:
Y:
ARCHITECTUREARTOFMUX21IS
=AWHENSEL='
ELSEB;
--4选1多路选择器的描述
ENTITYMUX41IS
S1,S2:
Y:
OUTSTD_LOGIC);
ARCHITECTUREARTOFMUX41IS
COMPONENTMUX41
PORT(A,B,SEL:
51Y1,Y2:
MUX21PORTMAP(A,B,S1,52);
MUX21PORTMAP(C,D,52,Y2);
MUX21PORTMAP(Y1,Y2,54,Y);
(十六)在下面横线上填上合适的语句,完成8位奇偶校验电路的设计。
ENTITYPCIS
PORT(A:
INSTD_LOGIC_VECTOR(7DOWNTO0);
Y:
OUTSTD_LOGIC