第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx

上传人:b****3 文档编号:8016965 上传时间:2023-05-09 格式:DOCX 页数:18 大小:52.54KB
下载 相关 举报
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第1页
第1页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第2页
第2页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第3页
第3页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第4页
第4页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第5页
第5页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第6页
第6页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第7页
第7页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第8页
第8页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第9页
第9页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第10页
第10页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第11页
第11页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第12页
第12页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第13页
第13页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第14页
第14页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第15页
第15页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第16页
第16页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第17页
第17页 / 共18页
第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx

《第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。

第五章 可编程逻辑 习题答案白中英主编第五版Word文档下载推荐.docx

8.用VHDL写出布尔表达式

ENTITYbooleanIS

PORT(a,b,c:

f:

ENDboolean;

ARCHITECTUREboolean_arcOFbooleanIS

f<=(aOR(NOTb)ORc)AND(aORbOR(NOTc))AND((NOTa)OR(NOTb)OR(NOTc));

ENDboolean_arc;

9.用VHDL结构法写出SOP表达式

――三输入与非门的逻辑描述

ENTITYnand3IS

PORT(a,b,c:

ENDnand3;

ARCHITECTUREnand3_arcOFnand3IS

x<=NOT(aANDbANDc);

ENDnand3_arc;

――顶层结构描述文件

LIBRARYIEEE;

PORT(in1,in2,in3,in4,in5,in6,in7,in8,in9:

out4:

COMPONENTnand3

ENDCOMPONENT;

SIGNALout1,out2,out3:

STD_LOGIC;

u1:

nand3PORTMAP(in1,in2,in3,out1);

u2:

nand3PORTMAP(in4,in5,in6,out2);

u3:

nand3PORTMAP(in7,in8,in9,out3);

u4:

nand3PORTMAP(out1,out2,out3,out4);

10.用VHDL数据流法写出SOP表达式

PORT(in1,in2,in3,in4,in5,in6,in7,in8,in9:

out4<=(in1ANDin2ANDin3)OR(in4ANDin5ANDin6)OR(in7ANDin8ANDin9);

ENDsop_arc;

13.用VHDL设计3-8译码器

ENTITYdecoder_3_to_8IS

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

y:

OUTSTD_LOGIC_VECTOR(7downto0));

ENDdecoder_3_to_8;

ARCHITECTURErt1OFdecoder_3_to_8IS

SIGNALindata:

STD_LOGIC_VECTOR(2downto0);

indata<=c&

b&

a;

PROCESS(indata,g1,g2a,g2b)

IF(g1=′1′ANDg2a=′0′ANDg2b=′0′)THEN

CASEindataIS

WHEN"

000"

=>y<="

11111110"

001"

11111101"

010"

11111011"

011"

11110111"

100"

11101111"

101"

11011111"

110"

10111111"

WHENothers=>y<="

01111111"

ENDCASE;

ELSE

y<="

11111111"

ENDIF;

ENDPROCESS;

ENDrt1;

14.用VHDL设计七段显示译码器

ENTITYsegment7IS

PORT(xin:

INSTD_LOGIC_VECTOR(3downto0);

lt,rbi:

yout:

OUTSTD_LOGIC_VECTOR(6downto0);

birbo:

INOUTSTD_LOGIC);

ENDsegment7;

ARCHITECTUREseg7448OFsegment7IS

SIGNALsig_xin:

STD_LOGIC_VECTOR(3downto0);

sig_xin<=xin;

PROCESS(sig_xin,lt,rbi,birbo)

IF(birbo=′0′)THEN

yout<="

0000000"

ELSIF(lt=′0′)THEN

1111111"

birbo<=′1′;

ELSIF(rbi=′0′ANDsig_xin="

0000"

)THEN

birbo<=′0′;

ELSIF(rbi=′1′ANDsig_xin="

1111110"

CASEsig_xinIS

0001"

=>yout<="

0110000"

0010"

1101101"

0011"

1111001"

0100"

0110011"

0101"

1011011"

0110"

0011111"

0111"

1110000"

1000"

1001"

1110011"

WHENothers=>yout<="

0100011"

ENDseg7448;

15.用VHDL设计8/3优先编码器

ENTITYpriorityencoderIS

PORT(din:

INSTD_LOGIC_VECTOR(7downto0);

ei:

OUTSTD_LOGIC_VECTOR(2downto0);

eo,gs:

ENDpriorityencoder;

ARCHITECTUREcod74148OFpriorityencoderIS

PROCESS(ei,din)

IF(ei=′1′)THEN

111"

eo<=′1′;

gs<=′1′;

ELSE

IF(din(7)=′0′)THEN

gs<=′0′;

ELSIF(din(6)=′0′)THEN

yout<="

ELSIF(din(5)=′0′)THEN

ELSIF(din(4)=′0′)THEN

ELSIF(din(3)=′0′)THEN

ELSIF(din

(2)=′0′)THEN

ELSIF(din

(1)=′0′)THEN

ELSIF(din(0)=′0′)THEN

ELSIF(din="

)THEN

eo<=′0′;

ENDcod74148;

16.用VHDL设计BCD码至二进制码转换器。

libraryieee;

useieee.std_logic_1164.all;

entitybcdtobiis

port(

bcdcode:

INSTD_LOGIC_VECTOR(7DOWNTO0);

start:

instd_logic;

qbit:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)

);

end;

architecturebehavioralofbcdtobiis

begin

process(start)

begin

ifstart='

0'

then

casebcdcode(7downto0)is

when"

00000000"

=>

qbit(3downto0)<

="

;

00000001"

00000010"

00000011"

00000100"

00000101"

00000110"

00000111"

00001000"

00001001"

00010000"

1010"

00010001"

1011"

00010010"

1100"

when"

00010011"

1101"

00010100"

1110"

00010101"

1111"

whenothers=>

endcase;

else

qbit(3downto0)<

endif;

endprocess;

endbehavioral;

 

17.用VHDL设计4位寄存器

异步复位

源代码:

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYregister_4IS

PORT(clk,r:

din:

qout:

OUTSTD_LOGIC_VECTOR(3downto0));

ENDregister_4;

ARCHITECTURErge_arcOFregister_4IS

SIGNALq_temp:

STD_LOGIC_VECTOR(3downto0);

PROCESS(clk,r)

IF(r=′1′)THEN

q_temp<="

ELSIF(clk′eventANDclk=′1′)THEN

q_temp<=din;

qout<=q_temp;

ENDrge_arc;

18.用VHDL设计4位双向移位寄存器

s1、s0控制工作方式,dsl为左移数据输入,dsr为右移数据输入。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYshiftregIS

PORT(clk,r,dsr,dsl:

s1,s0:

--functionselect

--datain

--dataout

ENDshiftreg;

ARCHITECTUREls74194OFshiftregIS

SIGNALiq:

SIGNALs:

STD_LOGIC_VECTOR(1downto0);

BEGIN

s<=s1&

s0;

IF(r=′0′)THEN

iq<="

CASEsIS

00"

=>null;

01"

=>iq<=dsr&

din(3downto1);

--right

10"

=>iq<=din(2downto0)&

dsl;

--left

11"

=>iq<=din;

--load

WHENothers=>null;

ENDCASE;

qout<=iq;

ENDls74194;

19.用VHDL设计8421码十进制加法计数器

异步清零,同步置数

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcount10IS

PORT(clk,clr,load:

din:

co:

OUTSTD_LOGIC;

ENDcount10;

ARCHITECTUREcount10_archOFcount10IS

PROCESS(clr,clk,load)

IF(clr=′0′)THEN

IF(load=′0′)THEN

iq<=din;

ELSIF(iq=9)THEN

iq<=iq+1;

co<=′1′WHENiq="

′0′;

ENDcount10_arch;

20.用VHDL设计可逆格雷码计数器

ENTITYgray_countIS

PORT(clk,y:

OUTSTD_LOGIC_VECTOR(2downto0));

ENDgray_count;

ARCHITECTUREarch_grayOFgray_countIS

STD_LOGIC_VECTOR(2downto0);

PROCESS(clk)

IF(clk′eventANDclk=′1′)THEN

IF(y=′1′)THEN

CASEiqIS

WHEN"

=>iq<="

WHENothers=>iq<="

IF(y=′0′)THEN

qout<=iq;

ENDarch_gray;

21.用VHDL设计有限状态机

ENTITYasmIS

PORT(clk,k,reset:

OUTSTD_LOGIC_VECTOR(1downto0));

ENDasm;

ARCHITECTUREasm_archOFasmIS

TYPEasm_stIS(s0,s1,s2,s3);

SIGNALcurrent_state,next_state:

asm_st;

reg:

PROCESS(clk,reset)

IF(reset=′1′)THEN

current_state<=s0;

current_state<=next_state;

com:

PROCESS(current_state,k)

CASEcurrent_stateIS

WHENs0=>qout<="

IF(k=′0′)THEN

next_state<=s1;

next_state<=s0;

ENDIF;

WHENs1=>qout<="

next_state<=s2;

E

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

当前位置:首页 > 工程科技 > 能源化工

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

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