EDA课后问题详解适用于朱正伟《EDA技术及应用》Word文档下载推荐.docx
《EDA课后问题详解适用于朱正伟《EDA技术及应用》Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA课后问题详解适用于朱正伟《EDA技术及应用》Word文档下载推荐.docx(37页珍藏版)》请在冰豆网上搜索。
);
end;
architectureaofcnt4is
signaldata_in:
std_logic_vector(3downto0);
begin
data_in<
=d&
c&
b&
a;
process(data_in,clk,ldn,clrn)
variablecnt:
std_logic_vector(3downto0);
begin
ifclrn='
0'
then
cnt:
=(others=>
'
);
elsifclk'
eventandclk='
1'
ifldn='
=data_in;
else
=cnt+1;
endif;
casecntis
when"
1111"
=>
carry<
='
;
whenothers=>
endcase;
qa<
=cnt(0);
qb<
=cnt
(1);
qc<
=cnt
(2);
qd<
=cnt(3);
endprocess;
enda;
1.2、设计一个通用双向数据缓冲器,要求缓冲器的输入和输出端口的位数可以由参数决定。
设计要求:
nbit数据输入端口a,b。
工作使能端口en=0时双向总线缓冲器选通,
Dir=1,则a=b;
反之b=a。
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYbidirIS
generic(n:
integer:
=8);
PORT(a,b:
INOUTSTD_LOGIC_VECTOR(n-1DOWNTO0);
en,dir:
INSTD_LOGIC);
END;
ARCHITECTUREaOFbidirIS
BEGIN
PROCESS(en,dir)
BEGIN
ifen='
a<
=(OTHERS=>
Z'
b<
else
ifdir='
=a;
=b;
ENDPROCESS;
ENDa;
2.1、用VHDL语言编程实现十进制计数器,要求该计数器具有异步复位、同步预置功能。
libraryieee;
entitycnt_10_2is
clk,clr:
count:
architectureaofcnt_10_2is
signalcnt_10:
integerrange0to10;
process(clk,clr)
ifclr='
cnt_10<
=0;
=cnt_10+1;
ifcnt_10=9then
count<
enda;
2.2、设计实现一位全减器。
行为描述:
f_sub4
entityf_sub4is
a,b,cin:
INstd_logic;
diff,Cout:
OUTstd_logic
architectureaoff_sub4is
diff<
=axorbxorcin;
cout<
=(notaandb)or(notaandcin)or(bandcin);
数据流描述f_sub1
entityf_sub1is
a,b:
INstd_logic;
cin:
architectureaoff_sub1is
signals:
std_logic_vector(2downto0);
s<
=Cin&
a&
b;
process(a,b,cin)
casesis
000"
=>
cout<
001"
010"
011"
100"
101"
110"
111"
X'
数据流描述f_sub2
entityf_sub2is
architectureaoff_sub2is
signalc:
std_logic_vector(1downto0);
=c
(1);
=c(0);
c<
="
00"
whens="
"
11"
10"
01"
;
数据流描述f_sub3
entityf_sub3is
architectureaoff_sub3is
withsselect
whenothers;
3.1、阅读教材P181页,例[5-55]并回答下列问题:
(1)、该程序的功能是什么?
(2)、请写出该程序所有端口的功能描述。
3.2、试描述一个十进制——BCD码编码器,输出使能为低电平有效。
entitybin_bcdis
bin:
inintegerrange0to20;
--ena:
BCD_out:
outstd_logic_vector(7downto0)
architectureaofbin_bcdis
Binary_BCD:
Block
BCD_out<
="
00000000"
WHENBIN=0ELSE
"
00000001"
WHENBIN=1ELSE
00000010"
WHENBIN=2ELSE
00000011"
WHENBIN=3ELSE
00000100"
WHENBIN=4ELSE
00000101"
WHENBIN=5ELSE
00000110"
WHENBIN=6ELSE
00000111"
WHENBIN=7ELSE
00001000"
WHENBIN=8ELSE
00001001"
WHENBIN=9ELSE
00010000"
WHENBIN=10ELSE
00010001"
WHENBIN=11ELSE
00010010"
WHENBIN=12ELSE
00010011"
WHENBIN=13ELSE
00010100"
WHENBIN=14ELSE
00010101"
WHENBIN=15ELSE
00010110"
WHENBIN=16ELSE
00010111"
WHENBIN=17ELSE
00011000"
WHENBIN=18ELSE
00011001