EDA程序设计试题及答案.docx
《EDA程序设计试题及答案.docx》由会员分享,可在线阅读,更多相关《EDA程序设计试题及答案.docx(35页珍藏版)》请在冰豆网上搜索。
EDA程序设计试题及答案
1.请画出下段程序的真值表,并说明该电路的功能。
LIBRARYieee;
USEieee.std_logic_1164.all;
ENTITYaaaIS
PORT(oe,dir:
INSTD_LOGIC;
a,b:
INOUTSTD_LOGIC_VECTOR(7DOWNTO0);
ENDaaa;
ARCHITECTUREarOFaaaIS
BEGIN
PROCESS(oe,dir)输入输出
BEGINa1a0x3x2x1x0
IFoe=’0’THENa<=”zzzzzzzz”;b<=”zzzzzzzz”;000001
ELSIFoe=’1’THEN010010
IFdir=’0’THENb<=a;100100
ELSIFdir=’1’THENa<=b;111000
ENDIF;
ENDIF;
ENDPROCESS;
ENDar;
功能为:
2-4译码器…………………………………………..4分
2.请说明下段程序的功能,写出真值表,并画出输入输出波形。
LIBRARYieee;
USEieee.std_logic_1164.all;
USEieee.std_logic_arith.all;
USEieee.std_logic_unsigned.all;
ENTITYaaaIS
PORT(reset,clk:
INSTD_LOGIC;
q:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0)
);
ENDaaa;
ARCHITECTUREbdOFaaaIS
BEGIN
PROCESS(clk,reset)
BEGIN
IF(reset='0')THENq<="000";
ELSIF(clk'eventANDclk='1')THEN
IF(q=5)THENq<="000";
ELSEq<=q+1;
ENDIF;
ENDIF;
ENDPROCESS;
ENDbd;
功能为:
带进位借位的4位加/减法器。
…………………………………..3分
输入输出波形图如下:
………………………………………………………7分
m
a[3..0]
b[3..0]
c[3..0]
d
1.试用VHDL语言编程实现74LS273芯片的功能。
LIBRARYieee;
USEieee.std_logic_1164.ALL;2’
ENTITYls273IS1’
PORT(
clr,clk:
INstd_logic;
d:
INstd_logic_vector(7DOWNTO0);
q:
OUTstd_logic_vector(7DOWNTO0);4’
);
ENDls273;
ARCHITECTURElock8OFls273IS1’
BEGIN
PROCESS(clk)1’
BEGIN
IF(CLR=’0’)THENq<=”00000000”;2’
ELSEIF(clk’eventANDclk=’1’)THENq<=d;3’
ELSEIF(clk=’0’)THENq<=q;1’
ENDIF;
ENDPROCESS;
ENDlock8;
3.请用VHDL语言编程实现一个状态向量发生器。
LIBRARYieee;
USEieee.std_logic_1164.ALL;2’
ENTITYstasIS1’
PORT(
cp,rst:
INstd_logic;
p:
BUFFERstd_logic_vector(7DOWNTO0);2’
);
ENDstas;
ARCHITECTUREarstasOFstasIS1’
BEGIN
PROCESS(cp)1’
BEGIN
IF(rst=”0”)THENp<=”00000000”;1’
ELSEIF(cp’eventANDcp=’1’)1’
WITHpSELECT
p<=”10101010”WHEN“00000000”;
”01010101”WHEN“10101010”;
”00001111”WHEN“01010101”;
”11110000”WHEN“00001111”;
”11111111”WHEN“11110000”;
”00000000”WHEN“11111111”;
”00000000”WHENOTHERS;6’
ENDIF
ENDPROCESS;
ENDarstas;
1.阅读下段程序,画出该电路的真值表,并详细说明该电路的功能。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYab_8IS
PORT(a,b:
INSTD_LOGIC_VECTOR(7DOWNTO0);
ahb,alb,aeb:
OUTSTD_LOGIC);
ENDab_8;
ARCHITECTUREbdOFab_8IS
BEGIN
PROCESS(a,b)
BEGIN
IFa>bTHENahb<=’1’;alb<=’0’;aeb<=’0’;
ELSIFaELSEahb<=’0’;alb<=’0’;aeb<=’1’;
ENDIF;
ENDPROCESS;
ENDbd;
1.
(1)真值表如下:
(5’)
输入
输出
a、b
ahb
alb
aeb
a>b
1
0
0
a
0
1
0
a=b
0
0
1
(2)该电路是一个8位两输入比较器,(2’)
a、b是两个8位输入端;(1’)
ahb、alb和aeb为比较结果输出端,某种比较结果为真时,相应的输出端为“1”,其余端输出为“0”。
(2’)
1.试用VHDL语言编程实现一个2-4译码器,其真表如下:
输入端
输出端
en
select
y
0
XX
“1111”
1
00
“1110”
1
01
“1101”
1
10
“1011”
1
11
“0111”
2-4译码器码参考程序如下:
(答案不唯一,用case语句、with…select语句都可以。
)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;(1’)
ENTITYym24IS
PORT(en:
INSTD_LOGIC;
select:
OUTSTD_LOGIC_VECTOR(1DOWNTO0);
y:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)(3’)
);
ENDym24;
ARCHITECTUREbdOFym24IS
BEGIN
PROCESS(en)(1’)
IF(en=’1’)THEN
y<=”1110”WHENselect=”00”ELSE
”1101”WHENselect=”01”ELSE
”1011”WHENselect=”10”ELSE
”0111”WHENselect=”11”ELSE(4’)
”1111”;
ELSEy<=”1111”;
ENDPROCESS;
ENDbd;
2.试用VHDL语言设计一个六路8位总线复用器,其中A、B、C、D、E、F都是8位输入总线,Q为8位输出总线,S为3位选择端,其功能如下:
输入端
输出端
S2
S1
S0
Q7~Q0
0
0
0
Q=A
0
0
1
Q=B
0
1
0
Q=C
0
1
1
Q=D
1
0
0
Q=E
1
0
1
Q=F
其它
B=“00000000”
六路8位总线复用器参考程序:
(答案不唯一)
LIBRARYieee;
USEieee.std_logic_1164.ALL;
ENTITYmux6IS(1’)
PORT(S:
INstd_logic_vector(2DOWNTO0);
A,B,C,D,E,F:
INstd_logic_vector(7DOWNTO0);
Q:
OUTstd_logic_vector(7DOWNTO0)
);(3’)
ENDmux6;
ARCHITECTUREbdOFmux6IS
BEGIN
PROCESS(S)
BEGIN(1’)
CASESIS
WHEN"000"=>Q<=A;
WHEN"001"=>Q<=B;
WHEN"010"=>Q<=C;
WHEN"011"=>Q<=D;
WHEN"100"=>Q<=E;
WHEN"101"=>Q<=F;
WHENOTHERS=>Q<="00000000";(4’)
ENDCASE;
ENDPROCESS;
ENDbd;
2、已知三选一电路如图,判断下列程序是否有错误,如有则指出错误所在,并给出完整程序。
(10分)
libraryieee;
useieee.std_logic_1164.all;
ENTITYMAXis
port(a1,a2,a3,s0,s1:
inbit;
outy:
outbit);
endmax;(2’)
architectureoneofmaxis
componentmux21a
port(a,b,s:
instd_logic;
y:
outstd_logic);
endcomponent;(2’)
signaltempstd_logic;(2’)
begin
u1:
mux21aportmap(a2,a3,s0,temp);(2’)
u2:
mux21aportmap(a1,temp,s1,outy);(2’)
endone;
1.已知电路原理图如下,请用VHDL语言编写其程序
答:
libraryieee;
useieee.std_logic_1164.all;
entitymux21is
port(a,