VHDL程序设计题.docx

上传人:b****2 文档编号:158999 上传时间:2023-04-28 格式:DOCX 页数:18 大小:27.57KB
下载 相关 举报
VHDL程序设计题.docx_第1页
第1页 / 共18页
VHDL程序设计题.docx_第2页
第2页 / 共18页
VHDL程序设计题.docx_第3页
第3页 / 共18页
VHDL程序设计题.docx_第4页
第4页 / 共18页
VHDL程序设计题.docx_第5页
第5页 / 共18页
VHDL程序设计题.docx_第6页
第6页 / 共18页
VHDL程序设计题.docx_第7页
第7页 / 共18页
VHDL程序设计题.docx_第8页
第8页 / 共18页
VHDL程序设计题.docx_第9页
第9页 / 共18页
VHDL程序设计题.docx_第10页
第10页 / 共18页
VHDL程序设计题.docx_第11页
第11页 / 共18页
VHDL程序设计题.docx_第12页
第12页 / 共18页
VHDL程序设计题.docx_第13页
第13页 / 共18页
VHDL程序设计题.docx_第14页
第14页 / 共18页
VHDL程序设计题.docx_第15页
第15页 / 共18页
VHDL程序设计题.docx_第16页
第16页 / 共18页
VHDL程序设计题.docx_第17页
第17页 / 共18页
VHDL程序设计题.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VHDL程序设计题.docx

《VHDL程序设计题.docx》由会员分享,可在线阅读,更多相关《VHDL程序设计题.docx(18页珍藏版)》请在冰点文库上搜索。

VHDL程序设计题.docx

VHDL程序设计题

 

 

四、编程题(共50分)

VHDL程序设计题

 

1、请补全以下二选一VHDL程序(本题10分)Entitymuxis

port(d0,d1,sel:

inbit;

q:

outBIT);

(2)

endmux;

architectureconnectofMUXis(4)signaltmp1,TMP2,tmp3:

bit;(6)

begin

cale:

block

begin

tmp1<=d0andsel;tmp2<=d1and(notsel)

tmp3<=tmp1andtmp2;

q<=tmp3;(8)

endblockcale;

endCONNECT;(10)

 

2、编写一个2输入与门的VHDL程序,请写出库、程序包、实体、构造体相关语句,将端口定义为标准逻辑型数据结构(本题10分)

 

a&yb

 

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

(2)

ENTITYnand2IS

PORT(a,b:

INSTD_LOGIC;(4)

 

y:

OUTSTD_LOGIC);(6)

ENDnand2;

ARCHITECTUREnand2_1OFnand2IS(8)BEGIN

y<=aNANDb;--与y<=NOT(aANDb);等价(10)ENDnand2_1;

 

3、根据下表填写完成一个3-8线译码器的VHDL程序(16分)。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYdecoder_3_to_8IS

PORT(a,b,c,g1,g2a,g2b:

INSTD_LOGIC;

y:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

(2)

ENDdecoder_3_to_8;

ARCHITECTURErtlOFdecoder_3_to_8IS

SIGNALindata:

STD_LOGIC_VECTOR(2DOWNTO0);(4)BEGIN

indata<=c&b&a;(6)

PROCESS(indata,g1,g2a,g2b)BEGIN

IF(g1='1'ANDg2a='0'ANDg2b='0')THEN(8)

CASEindataIS

WHEN"000"=>y<="11111110";

WHEN"001"=>y<="11111101";

WHEN"010"=>y<="11111011";(10)WHEN"011"=>y<="11110111";

WHEN"100"=>y<="11101111";

WHEN"101"=>y<="11011111";

WHEN"110"=>y<="10111111";(12)WHEN"111"=>y<="01111111";

WHENOTHERS=>y<="XXXXXXXX";ENDCASE;

ELSE

 

y<="11111111";(14)

ENDIF;

ENDPROCESS;(16)

ENDrtl;

 

4、三态门电原理图如右图所示,真值表如左图所示,请完成其VHDL程序构造体部分。

(本题14分)

 

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYtri_gateISPORT(din,en:

INSTD_LOGIC;

 

s:

instd_logic_vector(1downto0);

(4)

d:

instd_logic_vector(3downto0);

(6)

y:

);

outstd_logic

(8)

endMUX4;

architecturebehaveofMUX4isbegin

process(s)

begin

if(s="00")then

y<=d(0);

elsif(s="01")theny<=d

(1);

elsif(s="10")theny<=d

(2);

elsif(s="11")then

y<=d(3);

else

 

null;endif;

endprocess;endbehave;

 

2、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p=q,输出equ为‘0’,否则为‘1’。

(本题10分)

process(p,q)

(2)

begin

ifg='0'then(4)

ifp=qthen

equ<='0';(6)

else

equ<='1';(8)

else

endif;

equ<='1';(10)

endif;endprocess;

 

3、填写完成一个8-3线编码器的VHDL程序(16分)。

Libraryieee;

useieee.std_logic_1164.all;useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityeight_triisport(

 

);

endeight_tri;

b:

instd_logic_vector(7downto0);

(2)

en:

instd_logic;

y:

outstd_logic_vector(2downto0)(4)

 

architectureaofeight_triis(6)

signalsel:

std_logic_vector(8downto0);begin

sel<=en&b;(8)

y<=“000”when(sel=”100000001”)else

“001”when(sel=”100000010”)else(10)“010”when(sel=”100000100”)else

“011”when(sel=”100001000”)else

“100”when(se1l=0001”0000”)else(12)“101”wh(esnel=”100100000”)else

“110”when(sel=”101000000”)else(14)

“111”when(se1l=1000”0000”)else(16)“zzz”;

enda;

 

4、图中给出了4位逐位进位全加器,请完成其VHDL程序。

(本题16分)

 

libraryIEEE;

useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;

useIEEE.std_logic_unsigned.all;

entityfull_addisport(

a,b:

in

std_logic_vector(3downto0);

(2)

carr:

sum:

inout

out

std_logic_vector(4downto0);

std_logic_vector(3downto0)

 

);

endfull_add;

architecturefull_add_archoffull_addis

componentadder(4)

port(

a,b,c:

instd_logic;carr:

inoutstd_logic;

sum:

outstd_logic(6)

);

endcomponent;

begin

carr(0)<='0';

u0:

adderportmap(a(0),b(0),carr(0),carr

(1),sum(0));

u1:

adderportmap(a

(1),b

(1),carr

(1),carr

(2),sum

(1));(8)(10)

u2:

adderportmap(a

(2),b

(2),carr

(2),carr(3),sum

(2));(12)

u3:

adderportmap(a(3),b(3),carr(3),carr(4),sum(3));(14)(16)endfull_add_arch;

 

四、编程(共50分)

1、完成下图所示的触发器。

(本题10分)

CLRQ

CLK

DQN

 

libraryIEEE;

useIEEE.std_logic_1164.all;

entityVposDffis

port(CLK,CLR,D:

inSTD_LOGIC;----------2分

 

Q,QN:

outSTD_LOGIC);----------4分

endVposDff;

 

architectureVposDff_archofVposDffisbegin

process(CLK,CLR)----------6分

begin

ifCLR='1'thenQ<='0';QN<='1';

elsifCLK'eventandCLK='1'then

Q<=D;QN<=notD;----------8分

endif;

endprocess;----------10分

endVposDff_arch;

 

2、完成以下4位全加器代码(本题10分)

libraryIEEE;

useIEEE.std_logic_1164.all;

entityfull_addisport(

a,b:

in

std_logic_vector(3downto0);

cin:

in

std_logic;

cout:

sum:

out

outstd_logic;

std_logic_vector(3downto0)

);

endfull_add;

architecturefull_add_archoffull_addiscomponentadder

port(a,b,c:

instd_logic;carr:

outstd_logic;

sum:

outstd_logic);

endcomponent;

signalc1,c2,c3:

std_logic;2分

 

3、补充完整如下代码,使之完成

4状态不断循环。

(本题

10分)

ARCHITECTUREarcOFssIS

typestatesis(st0,st1,st2,st3

signaloutc:

states;

);

2分

4分

BEGIN

 

 

endif;ENDPROCESS;

ENDarc;

WHENOTHERS=>outc<=st0;ENDCASE;

 

4、设计异或门逻辑:

(本题20分)

如下异或门,填写右边的真值表。

(此项5分)

 

A

B

Y

0

0

0

0

1

1

1

0

1

1

1

0

 

其表达式可以表示为:

(此项5分)a

这一关系图示如下:

a

b&

y

b+

&

 

试编写完整的VHDL代码实现以上逻辑。

可以采用任何描述法。

(此项10分)libraryieee;

useieee.std_logic_1164.all;1分

entityyihuo1is

port(a,b:

instd_logic;

y:

outstd_logic);

endyihuo1;4分

architectureyihuo1_behaviorofyihuo1is

begin7分

process(a,b)y<=axorb;

begin(第2种写法)

ifa=bthen

y<='0';

else

y<='1';

 

;.'

 

endif;endprocess;

endyihuo1_behavior;10分

 

四、编程(共50分,除特殊声明,实体可只写出PORT语句,结构体要写完整)

1、用IF语句编写一个二选一电路,要求输入a、b,sel为选择端,输出q。

(本题10分)

Entitysel2isPort(

a,b:

instd_logic;sel:

instd_logic;q:

outstd_logic

);

Endsel2;(3)

Architectureaofsel2isbegin

ifsel=‘0’then

q<=a;(6)

else

q<=b;(9)

endif;

enda;(10)

 

2、编写一个4位加法计数器VHDL程序的进程(不必写整个结构框架),要求复位信号

reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为q。

(本题10分)

Process(reset,clk)

(2)

begin

 

en

b

y0y1y2

1

00000000

000

1

00000010

001

1

00000100

010

1

00001000

011

1

00010000

100

1

00100000

101

1

01000000

110

1

10000000

111

0

xxxxxxxx

高阻态

 

entityeight_triisport(

b:

instd_logic_vector(7downto0);en:

instd_logic;

y:

outstd_logic_vector(2downto0)

);

endeight_tri;(3)

architectureaofeight_triis

signalsel:

std_logic_vector(8downto0);(4)begin

sel<=en&b;

y<=“000”when(sel=”100000001”)else“001”when(sel=”100000010”)else“010”when(sel=”100000100”)else“011”when(sel=”100001000”)else

 

“100”

when(sel=

”100010000

”)else

“101”

when(sel=

”100100000

”)else

“110”

when(sel=

”101000000

”)else

“111”

when(sel=

”110000000

”)else

(9)

“zzz”;

(10)

enda;

 

4、根据已给出的全加器的VHDL程序,试写出一个4位逐位进位全加器的VHDL程序。

(本题15分)libraryIEEE;

useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;

useIEEE.std_logic_unsigned.all;entityadderis

port(

 

);

endadder;

a,b,c:

instd_logic;carr:

inoutstd_logic;

sum:

outstd_logic

architectureadder_archofadderisbegin

sum<=axorbxorc;

carr<=(aandb)or(bandc)or(aandc);endadder_arch;

entityfull_addis

port(

a,b:

instd_logic_vector(3downto0);

carr:

inoutstd_logic_vector(4downto0);

sum:

outstd_logic_vector(3downto0)

);

endfull_add;(5)

architecturefull_add_archoffull_addiscomponentadder

port(

 

a,b,c:

instd_logic;carr:

inoutstd_logic;sum:

outstd_logic

);

endcomponent;(10)

begin

carr(0)<='0';

u0:

adderportmap(a(0),b(0),carr(0),carr

(1),sum(0));

u1:

adderportmap(a

(1),b

(1),carr

(1),carr

(2),sum

(1));

u2:

adderportmap(a

(2),b

(2),carr

(2),carr(3),sum

(2));

u3:

adderportmap(a(3),b(3),carr(3),carr(4),sum(3));

endfull_add_arch;(15)

 

四、编程(共50分,除特殊声明,实体可只写出PORT语句,结构体要写完整)

1、用IF语句编写一个四选一电路,要求输入d0~d3,s为选择端,输出y。

(本题10分)

entityMUX4isport(

s:

instd_logic_vector(1downto0);

d:

instd_logic_vector(3downto0);y:

outstd_logic

);

endMUX4;(3)

architecturebehaveofMUX4isbegin

process(s)

begin

if(s="00")then

y<=d(0);(4)

elsif(s="01")then

y<=d

(1);(5)

elsif(s="10")then

y<=d

(2);(6)

elsif(s="11")then

y<=d(3);(7)

 

else

null;(9)

endif;endprocess;

endbehave;(10)

 

2、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p=q,输出equ为‘0’,否则为‘1’。

(本题10分)

process(p,q)

(2)

begin

ifg='0'then(4)

ifp=qthen

equ_tmp<='0';(6)

else

equ_tmp<='1';(8)

else

endif;

equ_tmp<='1';(10)

endif;endprocess;

 

3、填写完成一个3-8线译码器的真值表(5分),并写出其VHDL程序(10分)。

 

3-8译码器的真值表

en

a2a1a0

y

1

000

00000001

1

001

00000010

1

010

00000100

1

011

00001000

1

100

00010000

1

101

00100000

1

110

01000000

1

111

10000000

 

entitytri_eightisport(

a:

instd_logic_vector(2downto0);

en:

instd_logic;

y:

outstd_logic_vector(7downto0)

);

endtri_eight;

(2)

architectureaoftri_eightis

signalsel:

std_logic_vector(3downto0);(4)begin

sel(0)<=a(0);sel

(1)<=a

(1);sel

(2)<=a

(2);sel(3)<=en;(5)withselselect

y<="00000001"when"1000",

"00000010"when"1001",

"00000100"when"1010",

"00001000"when"1011",

"00010000"when"1100",

"00100000"when"1101",

"01000000"when"1110",

"10000000"when"1111",

"00000000"whenothers;(9)

enda;(10)

 

4、根据已给出的二-十(BCD)进制优先权编码器功能表,试写出其VHDL程序。

(本题

15分)

 

输入

输出

I1

I2

I3

I4

I5

I6

I7

I8

I9

Y3

Y2

Y1

Y0

1

1

1

1

1

1

1

1

1

1

1

1

1

X

X

X

X

X

X

X

X

0

0

1

1

0

X

X

X

X

X

X

X

0

1

0

1

1

1

X

X

X

X

X

X

0

1

1

1

0

0

0

X

X

X

X

X

0

1

1

1

1

0

0

1

X

X

X

X

0

1

1

1

1

1

0

1

0

X

X

X

0

1

1

1

1

1

1

0

1

1

X

X

0

1

1

1

1

1

1

1

1

0

0

X

0

1

1

1

1

1

1

1

1

1

0

1

0

1

1

1

1

1

1

1

1

1

1

1

0

entityprioris

port(

 

);

 

d:

instd_logic

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

当前位置:首页 > 人文社科

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2