1 / 35
文档名称:

VHDL程序练习题(含答案).pdf

格式:pdf   大小:995KB   页数:35页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

VHDL程序练习题(含答案).pdf

上传人:小布 2023/1/18 文件大小:995 KB

下载得到文件列表

VHDL程序练习题(含答案).pdf

文档介绍

文档介绍:该【VHDL程序练习题(含答案) 】是由【小布】上传分享,文档一共【35】页,该文档可以免费在线阅读,需要了解更多关于【VHDL程序练习题(含答案) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
.....
VHDL程序填空题
(一)在下面横线上填上合适的VHDL关键词,完成2选1多路选择器的设计。
LIBRARYIEEE;
;
1MUX21IS
PORT(SEL:INSTD_LOGIC;
A,B:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
ENDMUX21;
2BHVOFMUX21IS
BEGIN
Q<=AWHENSEL=’1’ELSEB;
ENDBHV;
(二)在下面横线上填上合适的语句,完成BCD-7段LED显示译码器的设计。
LIBRARYIEEE;
;
ENTITYBCD_7SEGIS
PORT(BCD_LED:INSTD_LOGIC_VECTOR(3DOWNTO0);
LEDSEG:OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDBCD_7SEG;
ARCHITECTUREBEHAVIOROFBCD_7SEGIS
BEGIN
PROCESS(BCD_LED)
3
IFBCD_LED="0000"THENLEDSEG<="0111111";
ELSIFBCD_LED="0001"THENLEDSEG<="0000110";
ELSIFBCD_LED="0010"THENLEDSEG<=4;
ELSIFBCD_LED="0011"THENLEDSEG<="1001111";
ELSIFBCD_LED="0100"THENLEDSEG<="1100110";
ELSIFBCD_LED="0101"THENLEDSEG<="1101101";
ELSIFBCD_LED="0110"THENLEDSEG<="1111101";
ELSIFBCD_LED="0111"THENLEDSEG<="0000111";
ELSIFBCD_LED="1000"THENLEDSEG<="1111111";
ELSIFBCD_LED="1001"THENLEDSEG<="1101111";
ELSELEDSEG<=5;
ENDIF;
ENDPROCESS;
ENDBEHAVIOR;
(三)在下面横线上填上合适的语句,完成数据选择器的设计。
LIBRARYIEEE;
...w:.
.....
;
ENTITYMUX16IS
PORT(D0,D1,D2,D3:INSTD_LOGIC_VECTOR(15DOWNTO0);
SEL:INSTD_LOGIC_VECTOR(6DOWNTO0);
Y:OUTSTD_LOGIC_VECTOR(15DOWNTO0));
END;
ARCHITECTUREONEOFMUX16IS
BEGIN
WITH7SELECT
Y<=D0WHEN"00",
D1WHEN"01",
D2WHEN"10",
D3WHEN8;
END;
(四)在下面横线上填上合适的语句,完成JK触发器的设计。
说明:设计一个异步复位/置位JK触发器,其真值表如下:
INPUTOUTPUT
PSETCLRCLKJKQ
01XXX1
10XXX0
00XXX不定
11上升沿010
11上升沿101
11上升沿11翻转
11上升沿00保持
LIBRARYIEEE;
;
ENTITYJKFF1IS
PORT(PSET,CLR,CLK,J,K:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
ENDJKFF1;
ARCHITECTUREMAXPLDOFJKFF1IS
SIGNALTEMP:STD_LOGIC;
BEGIN
PROCESS(PSET,CLR,CLK)
BEGIN
IF(PSET='0'ANDCLR='1')THENTEMP<='1';
ELSIF(PSET='1'ANDCLR='0')THENTEMP<='0';
ELSIF(PSET='0'ANDCLR='0')THENNULL;
9(CLK'EVENTANDCLK='1')THEN
10(J='0'ANDK='0')THENTEMP<=TEMP;
...w:.
.....
ELSIF(J='0'ANDK='1')THENTEMP<='0';
ELSIF(J='1'ANDK='0')THENTEMP<='1';
ELSIF(J='1'ANDK='1')THENTEMP<=11;
ENDIF;
ENDIF;
ENDPROCESS;
Q<=TEMP;
END;
(五)在下面横线上填上合适的语句,完成计数器的设计。
说明:设电路的控制端均为高电平有效,时钟端CLK,电路的预置数据输入端为4位D,计
数输出端也为4位Q,带同步始能EN、异步复位CLR和预置控制LD的六进制减法计数器。
LIBRARYIEEE;
;
;
;
ENTITYCNT6IS
PORT(EN,CLR,LD,CLK:INSTD_LOGIC;
D:INSTD_LOGIC_VECTOR(3DOWNTO0);
Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCNT6;
ARCHITECTUREBEHAOFCNT6IS
SIGNALQTEMP:STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK,CLR,LD)
BEGIN
IFCLR='1'THENQTEMP<="0000";--CLR=1清零
ELSIF(CLK'EVENTANDCLK='1')THEN--判断是否上升沿
IFLD='1'THENQTEMP<=12;--判断是否置位
ELSIFEN='1'THEN--判断是否允许计数
IFQTEMP="0000"THENQTEMP<=13;--等于0,计数值置5
ELSEQTEMP<=14;--否则,计数值减1
ENDIF;
ENDIF;
ENDIF;
Q<=QTEMP;
ENDPROCESS;
ENDBEHA;
(六)在下面横线上填上合适的语句,完成状态机的设计。
说明:设计一个双进程状态机,状态0时如果输入”10”则转为下一状态,否则输出”1001”;
状态1时如果输入”11”则转为下一状态,否则输出”0101”;状态2时如果输入”01”则转为
下一状态,否则输出”1100”;状态3时如果输入”00”则转为状态0,否则输出”0010”。复
...w:.
.....
位时为状态0。
LIBRARYIEEE;
;
;
ENTITYMOORE1IS
PORT(DATAIN:INSTD_LOGIC_VECTOR(1DOWNTO0);
CLK,RST:INSTD_LOGIC;
Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));
END;
ARCHITECTUREONEOFMOORE1IS
TYPEST_TYPEIS(ST0,ST1,ST2,ST3);--定义4个状态
SIGNALCST,NST:ST_TYPE;--定义两个信号(现态和次态)
SIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
REG:PROCESS(CLK,RST)--主控时序进程
BEGIN
IFRST='1'THENCST<=15;--异步复位为状态0
ELSIFCLK'EVENTANDCLK='1'THEN
CST<=16;--现态=次态
ENDIF;
ENDPROCESS;
COM:PROCESS(CST,DATAIN)
BEGIN
CASECSTIS
WHENST0=>IFDATAIN="10"THENNST<=ST1;
ELSENST<=ST0;Q1<="1001";ENDIF;
WHENST1=>IFDATAIN="11"THENNST<=ST2;
ELSENST<=ST1;Q1<="0101";ENDIF;
WHENST2=>IFDATAIN="01"THENNST<=ST3;
ELSENST<=ST2;Q1<="1100";ENDIF;
WHENST3=>IFDATAIN="00"THENNST<=ST0;
ELSENST<=ST3;Q1<="0010";ENDIF;
17;
ENDPROCESS;
Q<=Q1;
END;
(七)在下面横线上填上合适的语句,完成减法器的设计。
由两个1位的半减器组成一个1位的全减器
--1位半减器的描述
LIBRARYIEEE;
;
ENTITYHALF_SUBIS
...w:.
.....
PORT(A,B:INSTD_LOGIC;
DIFF,COUT:OUTSTD_LOGIC);
ENDHALF_SUB;
ARCHITECTUREARTOFHALF_SUBIS
BEGIN
COUT<=18;--借位
DIFF<=19;--差
END;
--1位全减器描述
LIBRARYIEEE;
;
ENTITYFALF_SUBIS
PORT(A,B,CIN:INSTD_LOGIC;
DIFF,COUT:OUTSTD_LOGIC);
ENDFALF_SUB;
ARCHITECTUREARTOFFALF_SUBIS
COMPONENTHALF_SUB
PORT(A,B:INSTD_LOGIC;
DIFF,COUT:OUTSTD_LOGIC);
ENDCOMPONENT;
20T0,T1,T2:STD_LOGIC;
BEGIN
U1:HALF_SUBPORTMAP(A,B,21,T1);
U2:HALF_SUBPORTMAP(T0,22,23,T2);
COUT<=24;
END;
(八)在下面横线上填上合适的语句,完成分频器的设计。
说明:占空比为1:2的8分频器
LIBRARYIEEE;
;
;
ENTITYCLKDIV8_1TO2IS
PORT(CLK:INSTD_LOGIC;
CLKOUT:OUTSTD_LOGIC);
ENDCLKDIV8_1TO2;
ARCHITECTURETWOOFCLKDIV8_1TO2IS
SIGNALCNT:STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALCK:STD_LOGIC;
BEGIN
PROCESS(CLK)
BEGIN
IFRISING_EDGE(25)THEN
IFCNT="11"THEN
...w:.
.....
CNT<="00";
CK<=26;
ELSECNT<=27;
ENDIF;
ENDIF;
CLKOUT<=CK;
ENDPROCESS;
END;
(九)在下面横线上填上合适的语句,完成60进制减计数器的设计。
LIBRARYIEEE;
;
;
ENTITYCOUNTIS
PORT(CLK:INSTD_LOGIC;
H,L:OUTSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDCOUNT;
ARCHITECTUREBHVOFCOUNTIS
BEGIN
PROCESS(CLK)
VARIABLEHH,LL:STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFLL=0ANDHH=0THEN
HH:="0101";LL:="1001";
ELSIFLL=0THEN
LL:=28;
HH:=29;
ELSE
LL:=30;
ENDIF;
ENDIF;
H<=HH;
L<=LL;
ENDPROCESS;
ENDBHV;
(十)在下面横线上填上合适的语句,完成4-2优先编码器的设计。
...w:.
.....
LIBRARYIEEE;
;
ENTITYCODE4IS
PORT(A,B,C,D:INSTD_LOGIC;
Y0,Y1:OUTSTD_LOGIC);
ENDCODE4;
ARCHITECTURECODE4OFCODE4IS
SIGNALDDD:STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALQ:STD_LOGIC_VECTOR(31DOWNTO0);
BEGIN
DDD<=32;
PROCESS(DDD)
BEGIN
IF(DDD(0)='0')THENQ<="11";
ELSIF(DDD(1)='0')THENQ<="10";
ELSIF(DDD(2)='0')THENQ<="01";
ELSEQ<="00";
ENDIF;
33;
Y1<=Q(0);Y0<=Q(1);
ENDCODE4;
(十一)在下面横线上填上合适的语句,完成10位二进制加法器电路的设计。
LIBRARYIEEE;
;
;
ENTITYADDER1IS
PORT(A,B:INSTD_LOGIC_VECTOR(9DOWNTO0);
COUT:OUTSTD_LOGIC;
SUM:OUTSTD_LOGIC_VECTOR(9DOWNTO0));
END;
ARCHITECTUREJGOFADDER1IS
SIGNALATEMP:STD_LOGIC_VECTOR(10DOWNTO0);
SIGNALBTEMP:STD_LOGIC_VECTOR(10DOWNTO0);
SIGNALSUMTEMP:STD_LOGIC_VECTOR(35DOWNTO0);
BEGIN
ATEMP<=’0’&A;BTEMP<=’0’&B;
SUMTEMP<=36;
SUM<=SUMTEMP(9DOWNTO0);
COUT<=37;
ENDJG;
...w:.
.....
(十二)在下面横线上填上合适的语句,完成移位寄存器的设计。
说明:8位的移位寄存器,具有左移一位或右移一位、并行输入和同步复位的功能。
LIBRARYIEEE;
;
;
;
ENTITYSHIFTERIS
PORT(DATA:INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:INSTD_LOGIC;
SHIFTLEFT,SHIFTRIGHT:INSTD_LOGIC;
RESET:INSTD_LOGIC;
MODE:INSTD_LOGIC_VECTOR(1DOWNTO0);
QOUT:BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
ENDSHIFTER;
ARCHITECTUREARTOFSHIFTERIS
BEGIN
PROCESS
BEGIN
38(RISING_EDGE(CLK));--等待上升沿
IFRESET='1'THENQOUT<="00000000";--同步复位
ELSE
CASEMODEIS
WHEN"01"=>QOUT<=SHIFTRIGHT&39;--右移一位
WHEN"10"=>QOUT<=QOUT(6DOWNTO0)&40;--左移一位
WHEN"11"=>QOUT<=41;--不移,并行输入
WHENOTHERS=>NULL;
42;
ENDIF;
ENDPROCESS;
ENDART;
(十三)在下面横线上填上合适的语句,完成计数器的设计。
说明:设计一个带有异步复位和时钟使能的一位八进制加法计数器(带进位输出端)。
LIBRARYIEEE;
;
;
ENTITYCNT8IS
PORT(CLK,RST,EN:INSTD_LOGIC;
CQ:OUTSTD_LOGIC_VECTOR(43DOWNTO0);
...w:.
.....
COUT:OUTSTD_LOGIC);
ENDCNT8;
ARCHITECTUREBEHAVOFCNT8IS
BEGIN
PROCESS(CLK,RST,EN)
44CQI:STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
IFRST='1'THENCQI:=“000”;
45CLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFCQI<"111"THENCQI:=46;
ELSECQI:=47;
ENDIF;
ENDIF;
ENDIF;
IFCQI="111"THENCOUT<='1';
ELSECOUT<='0';
ENDIF;
CQ<=CQI;
ENDPROCESS;
ENDBEHAV;
(十四)在下面横线上填上合适的语句,完成序列信号发生器的设计。
说明:已知发送信号为”10011010”,要求以由高到低的序列形式一位一位的发送,发送开
始前及发送完为低电平。
LIBRARYIEEE;
;
ENTITYXULIEIS
PORT(RES,CLK:INSTD_LOGIC;
Y:OUTSTD_LOGIC);
END;
ARCHITECTUREARCHOFXULIEIS
SIGNALREG:STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(CLK,RES)
BEGIN
IF(CLK’EVENTANDCLK=’1’)THEN
IFRES=’1’THEN
Y<=’0’;REG<=48;--同步复位,并加载输入
ELSEY<=49;--高位输出
REG<=50;--左移,低位补0
ENDIF;
...w:.
.....
ENDIF;
ENDPROCESS;
END;
(十五)在下面横线上填上合适的语句,完成数据选择器的设计。
说明:采用元件例化的设计方法,先设计一个2选1多路选择器,再使用3个2选1多路
选择器构成一个4选1多路选择器。
LIBRARYIEEE;--2选1多路选择器的描述
;
ENTITYMUX21IS
PORT(A,B,SEL:INSTD_LOGIC;
Y:OUTSTD_LOGIC);
ENDMUX21;
ARCHITECTUREARTOFMUX21IS
BEGIN
Y<=AWHENSEL='0'ELSEB;
END;
LIBRARYIEEE;--4选1多路选择器的描述
;
ENTITYMUX41IS
PORT(A,B,C,D:INSTD_LOGIC;
S1,S2:INSTD_LOGIC;
Y:OUTSTD_LOGIC);
END;
ARCHITECTUREARTOFMUX41IS
COMPONENTMUX41
PORT(A,B,SEL:INSTD_LOGIC;
Y:OUTSTD_LOGIC);
ENDCOMPONENT;
51Y1,Y2:STD_LOGIC;
BEGIN
U1:MUX21PORTMAP(A,B,S1,52);
U2:MUX21PORTMAP(C,D,52,Y2);
U2:MUX21PORTMAP(Y1,Y2,54,Y);
END;
(十六)在下面横线上填上合适的语句,完成8位奇偶校验电路的设计。
LIBRARYIEEE;
;
ENTITYPCIS
PORT(A:INSTD_LOGIC_VECTOR(7DOWNTO0);
...w:.
.....
Y:OUTSTD_LOGIC);
ENDPC;
ARCHITECTUREAOFPCIS
BEGIN
PROCESS(A).
VARIABLETMP:STD_LOGIC;
BEGIN
TMP55'0';
FORIIN0TO7LOOP
TMP:=56;
ENDLOOP;
Y<=57;
ENDPROCESS;
END;
(十七)在下面横线上填上合适的语句,完成一个逻辑电路的设计,
其布尔方程为Y=(A+B)(C⊙D)+(B⊕F).
LIBRARYIEEE;
;
ENTITYCOMBIS
PORT(A,B,C,D,E,F,:INSTD_LOGIC;
Y:OUTSTD_LOGIC);
ENDCOMB;
ARCHITECTUREONEOFCOMBIS
BEGIN
Y<=(AORB)AND(C58D)OR(B59F);
ENDARCHITECTUREONE;
(十八)在下面横线上填上合适的语句,完成一个带使能功能的二-十进制译码器的设计。
LIBRARYIEEE;
;
ENTITYMY2TO10IS
PORT(EN:INSTD_LOGIC;
DIN:INSTD_LOGIC_VECTOR(60DOWNTO0);
POUT:OUTSTD_LOGIC_VECTOR(9DOWNTO0));
END;
ARCHITECTUREARCHOFMY2TO10IS
BEGIN
PROCESS(EN,DIN)
BEGIN
IFEN=’1’THEN
CASEDINIS
...w:.
.....
WHEN"0000"=>POUT<="0000000001";
WHEN"0001"=>POUT<="0000000010";
WHEN"0010"=>POUT<="0000000100";
WHEN"0011"=>POUT<="0000001000";
WHEN"0100"=>POUT<="0000010000";
WHEN"0101"=>POUT<="0000100000";
WHEN"0110"=>POUT<="0001000000";
WHEN"0111"=>POUT<="0010000000";
WHEN"1000"=>POUT<="0100000000";
WHEN"1001"=>POUT<="1000000000";
WHENOTHERS=>POUT<="0000000000";
ENDCASE;
ENDIF;
ENDPROCESS;
END;
(十九)在下面横线上填上合适的语句,完成下降沿触发的D触发器的设计。
LIBRARYIEEE;
;
ENTITYDFFIS
PORT(D,CLK:INSTD_LOGIC;
Q,QB:OUTSTD_LOGIC);
ENDDFF;
ARCHITECTUREBEHAVEOFDFFIS
BEGIN
PROCESS(CLK)
BEGIN
IF61ANDCLK'EVENTTHEN
Q<=62;
QB<=NOTD;
ENDIF;
ENDPROCESS;
ENDBEHAVE;
(二十)在下面横线上填上合适的语句,完成移位寄存器的设计。
说明:4位串入-串出移位寄存器有有1个串行数据输入端(DI)、1个串行数据输出输出端
(DO)和1个时钟输入端(CLK)
LIBRARYIEEE;
;
ENTITYSISOIS
PORT(DI:INSTD_LOGIC;
CLK:INSTD_LOGIC;
DO:OUTSTD_LOGIC);
...w:.
.....
ENDSISO;
ARCHITECTUREAOFSISOIS
SIGNALQ:STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK,DI)
BEGIN
IFCLK’EVENTANDCLK=’1’THEN
Q(0)<=63;
FOR64LOOP
Q(I)<=65;
ENDIF;
ENDPROCESS;
DO<=Q(3);
ENDA;
(二十一)在下面横线上填上合适的语句,完成同步22进制计数器的设计。
LIBRARYIEEE;
;
;
ENTITYCOUNTER22IS
PORT(CLK:INSTD_LOGIC;
CH,C:OUTSTD_LOGIC;
QB1,QA1:OUTSTD_LOGIC_VECTOR(3DOWNTO0));
END;
ARCHITECTUREBEHAVOFCOUNTER22IS
SIGNALQB,QA:STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALCIN:STD_LOGIC;
BEGIN
QB1<=QB;
QA1<=QA;
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IF(QA=66)OR(QB=2ANDQA=1)THENQA<="0000";CIN<='0';
ELSIFQA=67THENCIN<='1';QA<=QA+1;
ELSEQA<=68;
CIN<='0';
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CIN,CLK)
BEGIN
...w: