《EDA》期末试卷
一、选择题(每小题3分,共30分) 1、在下图中,F0的逻辑关系为:
A.A0⊕A1 B.A0⊙A1 C.A0·A1 D.A0·A1
2、在VHDL中,用语句()表示clock的下降沿。
A.clock='1' B.clock'EVENT AND clock='1' C.clock='0' D.clock'EVENT AND clock='0'
3、如果p1=’1’,p2=’1’,则执行z <= a WHEN p1 = '1' ELSE b WHEN p2 = '1' ELSE c ;之后z 的值为:
A.a B.b C.c D.不确定
4、进程中的信号赋值语句,其信号更新是:
A.按顺序完成 B.比变量更快完成 C.在进程最后完成 D.都不对 5、不完整的IF语句,其综合结果可实现:
A.时序逻辑电路 B.组合逻辑电路 C.双向电路 D.三态控制电路
6、reg的数据类型为std_logic_vector(7 downto 0),初值为FF,执行reg(0)<=’0’;reg(7 downto 1)<=reg(6 downto 0);之后,reg的值为: A.FF B.FE C.FC D.FD
7、在VHDL中()不能将信息带出对它定义的当前进程。 A. 信号 B. 常量 C. 数据 D. 变量 8、执行下列语句后Q的值等于: ??
SIGNAL E: STD_LOGIC_VECTOR (2 TO 5); SIGNAL Q: STD_LOGIC_VECTOR (9 DOWNTO 2); ??
E<=(2=>’1’, 4=>’1’, OTHERS=>’0’);
Q<=(2=>E (2), 4=>E (3), 5=>’1’, 7=>E (5), OTHERS=>E (4)); ??
A.”11011011” B.”00110100” C.”11011001” D.”00101100”
9、在一个VHDL设计中Idata是一个信号,数据类型为std_logic_vector,试指出下面那个赋值语句是错误的。
A.idata <= “00001111”; B.idata <= b”0000_1111”; C.idata <= X”AB”; D.idata <= B”21”; 10、在一个VHDL设计中idata是一个信号,数据类型为integer,数据范围0 to 127,下面哪个赋值语句是正确的。
第 1 页 共 4 页
A.idata := 32; B.idata <= 16#A0#; C.idata <= 16#7#E1; D.idata := B#1010#;
二、分析题(每题8分,共40分)
1、下图为1位全减器的电路图,其中h_suber为半减器。减法运算为x-y-sub_in=diffr,sub_in为低位借位,sub_out为结果借位。给出半减器和全减器的真值表。
2、利用一位全减器设计出四位全减器的电路图,简要说明工作原理。 3、分析下图,用VHDL语言实现该电路图的功能。
4、分析下面的分频器程序,回答下面的问题:
FOUT与CLK的频率之比、FULL与CLK的频率之比、FULL与CNT2的频率之比和CNT2与FOUT的频率之比,说明原因。 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DVF IS
PORT ( CLK : IN STD_LOGIC;
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC ); END;
ARCHITECTURE one OF DVF IS
SIGNAL FULL : STD_LOGIC; BEGIN
P_REG: PROCESS(CLK)
VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN
IF CLK'EVENT AND CLK = '1' THEN IF CNT8 = \ CNT8 := D;
FULL <= '1'; ELSE CNT8 := CNT8 + 1; FULL <= '0';
第 2 页 共 4 页
END IF;
END IF;
END PROCESS P_REG ; P_DIV: PROCESS(FULL)
VARIABLE CNT2 : STD_LOGIC; BEGIN
IF FULL'EVENT AND FULL = '1' THEN CNT2 := NOT CNT2;
IF CNT2 = '1' THEN FOUT <= '1'; ELSE FOUT <= '0'; END IF; END IF;
END PROCESS P_DIV ; END;
5、分析下段程序,说明代码表达的是什么类型的状态机,详述其功能和逻辑过程,并画出它的状态图。 LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY xulie IS
PORT(DIN,CLK,CLR : IN STD_LOGIC;
AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END xulie;
ARCHITECTURE behav OF xulie IS
TYPE states IS (S0,S1,S2,S3,S4,S5,S6,S7,S8); SIGNAL Q : states ;
SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN
D <= \ PROCESS( CLK, CLR ) BEGIN
IF CLR = '1' THEN Q <= S0 ;
ELSIF CLK'EVENT AND CLK='1' THEN CASE Q IS
WHEN S0=> IF DIN = D(7) THEN Q <= S1 ; ELSE Q <= S0 ; END IF ; WHEN S1=> IF DIN = D(6) THEN Q <= S2 ; ELSE Q <= S0 ; END IF ; WHEN S2=> IF DIN = D(5) THEN Q <= S3 ; ELSE Q <= S0 ; END IF ; WHEN S3=> IF DIN = D(4) THEN Q <= S4 ; ELSE Q <= S0 ; END IF ; WHEN S4=> IF DIN = D(3) THEN Q <= S5 ; ELSE Q <= S0 ; END IF ; WHEN S5=> IF DIN = D(2) THEN Q <= S6 ; ELSE Q <= S0 ; END IF ; WHEN S6=> IF DIN = D(1) THEN Q <= S7 ; ELSE Q <= S0 ; END IF ; WHEN S7=> IF DIN = D(0) THEN Q <= S8 ; ELSE Q <= S0 ; END IF ; WHEN OTHERS => Q <= S0 ; END CASE ; END IF ;
第 3 页 共 4 页
END PROCESS ;
PROCESS( Q ) BEGIN
IF Q = S8 THEN AB <= \ ELSE AB <= \ END IF ; END PROCESS ; END behav ;
三、设计题(每题10分,共30分)
1、用VHDL语言设计一个带有异步复位和同步时钟使能的25进制加法计数器(从0计数到24)。
2、用VHDL语言设计一个10分频电路,要求高低电平时间宽度之比为2:3。 3、用VHDL语言实现下图的逻辑关系,其中CLK为输入信号,LOCK、CLR为输出信号。 (提示:实现一个4位二进制加法计数器:从0计数到15,当计数器计数到某一个值时,LOCK变为高电平,其余时刻都为低电平,同理CLR)
第 4 页 共 4 页