EDA程序设计试题及答案讲解.docx
- 文档编号:27970788
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:41
- 大小:81.31KB
EDA程序设计试题及答案讲解.docx
《EDA程序设计试题及答案讲解.docx》由会员分享,可在线阅读,更多相关《EDA程序设计试题及答案讲解.docx(41页珍藏版)》请在冰豆网上搜索。
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’;
ELSIFa ELSEahb<=’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,b,s: inbit; y: outbit); endmux21;(4’) architectureoneofmux21is singled,e: bit; begin d<=aand(not)s; e<=bands; y<=dore; endone; 2.设计一个带有异步清零功能的十进制计数器。 计数器时钟clk上升沿有效、清零端CLRN、进位输出co。 答: libraryieee; useieee.std_logic_1164.all; entitycounter10is port(clk,CLRN: instd_logic; dout: outintegerrange0to9); endcounter10;(5’) architecturebehavofcounter10IS begin process(clk) variablecnt: integerrange0to9;(3’) begin IFCLRN='0'THEN CNT: =0; ELSIF clk='1'andclk'eventthen ifcnt=9then cnt: =0; else cnt: =cnt+1; endif; endif; dout<=cnt; endprocess; endbehav; (7’) 3.1)用VHDL语言编写半加器和或门器件的程序,如图所示: 答: 半加器程序: libraryieee; useieee.std_logic_1164.all; entityh_adderis port(a,b: instd_logic; co,so: outstd_logic); endh_adder;(2’) architectureoneofh_adderis begin so<=not(axor(notb)); co<=aandb; endone;(3’) 或门程序: libraryieee; useieee.std_logic_1164.all; entityor2ais port(a,b: instd_logic; c: outstd_logic); endor2a;(2’) architectureoneofor2ais begin c<=aorb; endone; 2)在上道题目的基础上用元件例化语句设计1位全加器。 主程序: libraryieee; useieee.std_logic_1164.all; entityf_adderis port(ain,bin,cin: instd_logic; cout,sum: outstd_logic); endentityf_adder; architecturefd1off_adderis componenth_adder port(a,b: instd_logic; co,so: outstd_logic); endcomponent;(5’) componentor2a port(a,b: instd_logic; c: outstd_logic); endcomponent; signald,e,f: std_logic; begin u1: h_adderportmap(a=>ain,b=>bin,co=>d,so=>e); u2: h_adderportmap(a=>e,b=>cin,co=>f,so=>sum); u3: or2aportmap(d,f,cout); endfd1;(5’) 1.试用VHDL语言编程实现一个总线开关,其真值表如下: 输入 输出 en select A0~A6 B0~B6 Y0~Y6 ‘0’ ‘x’ “ZZZZZZZ” ‘1’ ‘0’ A ‘1’ ‘1’ B 1.总线开关的参考程序如下: LIBRARYieee; USEieee.std_logic_1164.all;(1’) ENTITYaaaIS PORT(en,select: INSTD_LOGIC; A,B: INSTD_LOGIC_VECTOR(6DOWNTO0); Y: OUTSTD_LOGIC_VECTOR(6DOWNTO0) ENDaaa;(4’) ARCHITECTUREarOFaaaIS BEGIN PROCESS(en,select) BEGIN IFen=’0’THENY<=”ZZZZZZZ”; ELSIFen=’1’THEN IFselect=’0’THENY<=A; ELSIFselect=’1’THENY<=B; ENDIF; ENDIF; ENDPROCESS; ENDar;(5’) 2.试用VHDL语言编程实现一个M10计数器,要求该计数器有一个时钟输入端clk,一个复位端rst(低电平复位),一个使能端en(高电平时允许计数),一个“计数到”输出端cout,一个4位二进制当前计数值输出口q;cout端仅当计数满的一个时钟周期输出高电平,其余时刻全保持低电平。 2.M10计数器参考程序: LIBRARYieee; USEieee.std_logic_1164.all; USEieee.std_logic_arith.all; USEieee.std_logic_unsigned.all;(1’) ENTITYaaaIS PORT(clk,rst,en: INSTD_LOGIC; cout: OUTSTD_LOGIC; q: BUFFERSTD_LOGIC_VECTOR(3DOWNTO0) ); ENDaaa;(4’) ARCHITECTUREbdOFaaaIS BEGIN PROCESS(clk,reset,en) BEGIN IF(rst='0')THENq<="0000"; ELSIF(clk'eventANDclk='1')THEN IFen=’1’THEN IF(q=9)THENq<="0000"; ELSEq<=q+1; ENDIF; ENDIF; ENDIF; ENDPROCESS; ENDbd;(10’) 3.请用VHDL语言编程,用一个状态机模型实现一个七段码LED字符发生器。 该电路有一个复位输入端RST,一个时钟输入端CP,一组七段码输出端a~g。 在LED上七个段的排列位置如图所示。 该电路的功能为,当复位输入端RST为低电平时,输出端口输出全零,无显示;当RST为高电平时,在时钟信号CP的每个上升沿,输出端依次轮流输出5个字符“HAPPY”的七段码(共阴极接法),周而复始。 3.用VHDL语言编程实现一个LED字符发生器参考程序: LIBRARYieee; USEieee.std_logic_1164.ALL; ENTITYgencIS(1’) PORT(rst,cp: INSTD_LOGIC; a,b,c,d,e,f,g: OUTSTD_LOGIC );(1’) ENDgenc; ARCHITECTUREaaOFgencIS TYPEstateIS(s0,s1,s2,s3,s4,s5); SIGNALpstate: state; SIGNALdout: STD_LOGIC_VECTOR(6DOWNTO0);(2’) BEGIN pr1: PROCESS(cp,rst,) BEGIN IFrst='0'THENpstate<=s0; ELSIF(cp'eventANDcp='0')THEN CASEpstateIS WHENs0=>pstate<=s1; WHENs1=>pstate<=s2; WHENs2=>pstate<=s3; WHENs3=>pstate<=s4; WHENs4=>pstate<=s5; WHENs5=>pstate<=s1; WHENOTHERS=>pstate<=s0; ENDCASE; ENDIF; ENDPROCESS;(5’) pr2: PROCESS(pstate) BEGIN CASEstateIS WHENs0=>dout<="0000000";--无显示 WHENs1=>dout<="0110111";--“H” WHENs2=>dout<="1110111";--“A” WHENs3=>dout<="1100111";--“P” WHENs4=>dout<="1100111";--“P” WHENs5=>dout<="0111011";--“Y” WHENOTHERS=>dout<="0000000";--无显示 ENDCASE; ENDPROCESS;(5’) a<=dout(6);b<=dout(5);c<=dout(4);d<=dout(3);e<=dout (2);f<=dout (1);g<=dout(0); ENDaa;(1’) 2.试用VHDL语言和进程语句,编程实现一个3-8译码器。 该译码器的功能为,当使能信号EN为低电平时,输出端Y7~Y0全为高电平(没有输出端被选中);当EN为高电平时,每一种ABC的输入状态组合能惟一地选中一路输出(被选中的端输出低电平)。 真值表如下: 输入 输出 A B C EN Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 × × × 0 1 1 1 1 1 1 1 1 LIBRARYieee; USEieee.std_logic_1164.ALL;2’ ENTITYym38IS1’ PORT( a,b,c,en: INstd_logic; y: OUTstd_logi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 程序设计 试题 答案 讲解