VHDL程序练习题含答案.docx

上传人:b****2 文档编号:19070173 上传时间:2023-04-24 格式:DOCX 页数:56 大小:130.74KB
下载 相关 举报
VHDL程序练习题含答案.docx_第1页
第1页 / 共56页
VHDL程序练习题含答案.docx_第2页
第2页 / 共56页
VHDL程序练习题含答案.docx_第3页
第3页 / 共56页
VHDL程序练习题含答案.docx_第4页
第4页 / 共56页
VHDL程序练习题含答案.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

VHDL程序练习题含答案.docx

《VHDL程序练习题含答案.docx》由会员分享,可在线阅读,更多相关《VHDL程序练习题含答案.docx(56页珍藏版)》请在冰豆网上搜索。

VHDL程序练习题含答案.docx

VHDL程序练习题含答案

VHDL程序填空题

(1)在下面横线上填上合适的VHDL关键词,完成2选1多路选择器的设计。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

1MUX21IS

PORT(SEL:

INSTD_LOGIC;

A,B:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

ENDMUX21;

2BHVOFMUX21IS

BEGIN

Q<=AWHENSEL=1'ELSEB;

ENDBHV;

(2)在下面横线上填上合适的语句,完成BCD-7段LED显示译码器的设计。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

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<=;

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;

(3)在下面横线上填上合适的语句,完成数据选择器的设计。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMUX16IS

PORT(D0,D1,D2,D3:

INSTD_L0GIC_VECT0R(15DOWNTO0);

SEL:

INSTD_LOGIC_VECTOR(DOWNTO0);

Y:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));END;

ARCHITECTUREONEOFMUX16IS

BEGIN

WITH7SELECT

Y<=D0WHEN"00",

D1WHEN"01",

D2WHEN"10",

D3WHEN8;

END;

(四)在下面横线上填上合适的语句,完成JK触发器的设计。

说明:

设计一个异步复位/置位JK触发器,其真值表如下:

INPUT

OUTPUT

PSET

CLR

CLK

J

K

Q

0

1

X

X

X

1

1

0

X

X

X

0

0

0

X

X

X

不定「

1

1

上升沿

0

1

0

1

1

上升沿

1

0

1

1

1

上升沿

1

1

翻转

1

1

上升沿

0

0

保持

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

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

(J='0'ANDK='0')THENTEMP<=TEMP;

ELSIF(J='O'ANDK='1')THENTEMP<='0:

ELSIF(J='1'ANDK='O')THENTEMP<='1:

ELSIF(J='1'ANDK='1')THENTEMP<=11

ENDIF;

ENDIF;

ENDPROCESS;

Q<=TEMP;

END;

(五)在下面横线上填上合适的语句,完成计数器的设计。

说明:

设电路的控制端均为高电平有效,时钟端CLK,电路的预置数据输入端为4位D,计

数输出端也为4位Q,带同步始能EN、异步复位CLR和预置控制LD的六进制减法计数器。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

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)

--CLR=1清零

--判断是否上升沿

:

--判断是否置位

--判断是否允许计数

13:

--等于0,计数值置5

--否则,计数值减1

BEGIN

IFCLR='1'THENQTEMP<="0000";

ELSIF(CLK'EVENTANDCLK='1')THEN

IFLD='1'THENQTEMP<=12

ELSIFEN='1'THEN

IFQTEMP="OOOO"THENQTEMP<=

ELSEQTEMP<=14:

ENDIF;

ENDIF;

ENDIF;

Q<=QTEMP;

ENDPROCESS;

ENDBEHA;

(六)在下面横线上填上合适的语句,完成状态机的设计。

说明:

设计一个双进程状态机,状态0时如果输入”10则转为下一状态,否则输出”1001”状态1时如果输入”11则转为下一状态,否则输出”0101”;状态2时如果输入”01则转为下一状态,否则输出”1100”状态3时如果输入”00则转为状态0,否则输出”0010”复位时

为状态0。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYMOORE1IS

PORT(DATAIN:

INSTD_LOGIC_VECTOR(1DOWNTO0);

CLK,RST:

INSTD_LOGIC;

Q:

OUTSTD_L0GIC_VECT0R(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<=;--异步复位为状态0

ELSIFCLK'EVENTANDCLK='1'THEN

CST<=;--现态=次态

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;

(7)在下面横线上填上合适的语句,完成减法器的设计。

由两个1位的半减器组成一个1位的全减器

--1位半减器的描述

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYHALF_SUBIS

PORT(A,B:

INSTD_LOGIC;

DIFF,COUT:

OUTSTD_LOGIC);

ENDHALF_SUB;

ARCHITECTUREARTOFHALF_SUBIS

BEGIN

COUT<=;--借位

DIFF<=;--差

END;

--1位全减器描述

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

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,,T1);

U2:

HALF_SUBPORTMAP(T0,22,,T2);

COUT<=24;

END;

(8)在下面横线上填上合适的语句,完成分频器的设计。

说明:

占空比为1:

2的8分频器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

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

CNT<="00";

CK<=;

ELSECNT<=;

ENDIF;

ENDIF;

CLKOUT<=CK;

ENDPROCESS;

END;

(9)在下面横线上填上合适的语句,完成60进制减计数器的设计。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

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=OTHEN

HH:

="0101";LL:

="1001";

ELSIFLL=0THEN

LL:

=;

HH:

=;

ELSE

LL:

=;

ENDIF;

ENDIF;

H<=HH;

L<=LL;

ENDPROCESS;

ENDBHV;

(十)在下面横线上填上合适的语句,完成4-2优先编码器的设计。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYCODE4IS

P0RT(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(O)='O')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;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_34.ALL;

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;

(十二)在下面横线上填上合适的语句,完成移位寄存器的设计。

说明:

8位的移位寄存器,具有左移一位或右移一位、并行输入和同步复位的功能。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYSHIFTERIS

PORT(DATA:

INSTD_L0GIC_VECT0R(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

--等待上升沿

--同步复位

--右移一位

--左移一位

--不移,并行输入

(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;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT8IS

PORT(CLK,RST,EN:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(43DOWNTO0);

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;

(十四)在下面横线上填上合适的语句,完成序列信号发生器的设计。

说明:

已知发送信号为””,要求以由高到低的序列形式一位一位的发送,发送开始前及发送

完为低电平。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

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;

ENDIF;

ENDPROCESS;

END;

(十五)在下面横线上填上合适的语句,完成数据选择器的设计。

说明:

采用元件例化的设计方法,先设计一个2选1多路选择器,再使用3个2选1多路选

择器构成一个4选1多路选择器。

LIBRARYIEEE;--2选1多路选择器的描述

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMUX21IS

PORT(A,B,SEL:

INSTD_LOGIC;

Y:

OUTSTD_LOGIC);

ENDMUX21;

ARCHITECTUREARTOFMUX21IS

BEGIN

Y<=AWHENSEL='0'ELSEB;

END;

LIBRARYIEEE;--4选1多路选择器的描述

USEIEEE.STD_LOGIC_1164.ALL;

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;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYPCIS

PORT(A:

INSTD_LOGIC_VECTOR(7DOWNTO0);

Y:

OUTSTDLOGIC

);

ENDPC;

ARCHITECTUREAOFPCIS

BEGIN

PROCESS(A).

VARIABLETMP:

STD_LOGIC;

BEGIN

TMP55'0';

FORIIN0TO7LOOP

TMP:

=56

ENDLOOP;

Y<=57;

ENDPROCESS;

END;

(十七)在下面横线上填上合适的语句,完成一个逻辑电路的设计,其布尔方程为Y=(A+B)(COD)+(B®F).

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYCOMBIS

PORT(A,B,C,D,E,F,:

INSTD_LOGIC;

Y:

OUTSTD_LOGIC);

ENDCOMB;

ARCHITECTUREONEOFCOMBIS

BEGIN

Y<=(AORB)AND(C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1