文档库 最新最全的文档下载
当前位置:文档库 › EDA期末考试题大全

EDA期末考试题大全

EDA期末考试题大全
EDA期末考试题大全

附带:

一.问答题

1信号赋值语句在什么情况下作为并行语句?在什么情况下作顺序语句?信号赋值和变量赋值符号分别是什么?两种赋值符号有什么区别?

●信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。信号赋值语句在进程内

或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。

●信号赋值符号为“<=”变量赋值用“:=”。信号赋值符号用于信号赋值动作,不立即生效。

变量,赋值符号用于变量赋值动作,立即生效。

2进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?

●进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号

间以“,”号分隔。当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。

3什么是库、程序包、子程序、过程调用和函数调用?

●库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、

调用。子程序由过程和函数组成。在子程序调用过程中,过程能返回多个变量,函数只能返回一个变量。若子程序调用的是一个过程,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。过程调用、函数调用都是子程序调用。

二.改错题

1.已知sel为STD_LOGIC_VECTOR(1 DOWNTO 0)类型的信号,而a、b、c、d、q均为STD_LOGIC类型的

信号,请判断下面给出的CASE语句程序片段:

●CASE sel IS

●WHEN“00”=>q<=a;

●WHEN“01”=>q<=b;

●WHEN“10”=>q<=c;

●WHEN“11”=>q<=d;

●END CASE;

●答案:CASE语句缺“WHEN OTHERS”语句。

2.已知data_in1, data_in2为STD_LOGIC_VECTOR(15 DOWNTO 0) 类型的输入端口,data_out为STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段:

●LIBRARY IEEE;

●USE IEEE.STD_LOGIC_1164.ALL;

●ENTITY add IS

● PORT(data_in1, data_in2:IN INTEGER;

● data_out:OUT INTEGER);

●END add;

●ARCHTECTURE add_arch OF add IS

●CONSTANT a:INTEGER<=2;

●BEGIN

●data_out<=( data_in1+ data_in2) * a;

●END addsub_arch;

答案:常量声明时赋初值的“<=”符号应改用“:=”符号。

3.已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段:

●ARCHITECTURE test_arch OF test IS

●BEGIN

●SIGNAL B:STD_LOGIC;

●Q<= B;

END test_arch

答案:信号SIGNAL的声明语句应该放在BEGIN语句之前。

4.已知A和Q均为BIT类型的信号,请判断下面的程序片段:

●ARCHITECTURE archtest OF test IS

●BEGIN

●CASE A IS

●WHEN ‘0’=>Q<=‘1’;

●WHEN ‘1’=>Q<=‘0’;

●END CASE;

●END archtest;

答案:CASE语句应该存在于进程PROCESS内。

三.程序设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ADDER4B IS --4位二进制并行加法器

PORT(CIN:IN STD_LOGIC; --低位进位

A: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位加数

B: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位被加数

S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --4位和

CONT: OUT STD_LOGIC);

END ADDER4B;

ARCHITECTURE ART OF ADDER4B IS

SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0);

SIGNAL AA,BB: STD_LOGIC_VECTOR(4 DOWNTO 0);

BEGIN

AA<='0'& A; --将4位加数矢量扩为5位,为进位提供空间 BB<='0'& B; --将4位被加数矢量扩为5位,为进位提供空间 SINT<=AA+BB+CIN ;

S<=SINT(3 DOWNTO 0);

CONT<=SINT(4);

END ART;

2@ 8位二进制加法器的源程序ADDER8B.VHD LIBRARY IEEE;

USE IEEE_STD.LOGIC_1164.ALL;

USE IEEE_STD.LOGIC_UNSIGNED.ALL:

ENTITY ADDER8B IS

--由4位二进制并行加法器级联而成的8位二进制加法器

PORT(CIN:IN STD_LOGIC;

A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

S:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

COUT:OUT STD_LOGIC);

END ADDER8B;

ARCHICTURE ART OF ADDER8B IS

COMPONENET ADDER4B

--对要调用的元件ADDER4B的界面端口进行定义

PORT(CIN:IN STD_LOGIC;

A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

CONT:OUT STD_LOGIC);

END COMPONENT ;

SIGNAL CARRY_OUT:STD_LOGIC; --4位加法器的进位标志

BEGIN

U1:ADDER4B --例化(安装)一个4位二进制加法器U1

PORT MAP(CIN=>CIN,A=>A(3 DOWNTO 0),B=>B(3 DOWNTO0),

S=>S(3 DOWNTO 0),COUT=>CARRY_OUT);

U2:ADDER4B --例化(安装)一个4位二进制加法器U2

PORT MAP(CIN=>CARRY_OUT,A=>A(7 DOWNTO 4),B=>B(7 DOWNTO 4), S=>S (7 DOWNTO 4);CONT=>CONT);

END ART;

3.@触发器和缓冲器

D触发器:Process(clk) begin

if(clk’event and clk=‘1’) then

q <= d;

end if;

end process;

缓冲器:Process(clk)

begin

if(clk=‘1’) then

q <= d;

end if; end process;

T触发器:Process(clk)

begin

if(clk’event and clk=‘1’) then

if(t = ‘1’) then

q <= not(q);

else

q <= q;

end if;

end if;

end process;

4.@16位锁存器的源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY REG16B IS --16位锁存器

PORT (CLK:IN STD_LOGIC;--锁存信号

CLR:IN STD_LOGIC;--清零信号

D:IN STD_LOGIC_VECTOR (8 DOWNTO 0) --8位数据输入 Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--16位数据输出END REG16B;

ARCHITECTURE ART OF REG16B IS

SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);

--16位寄存器设置

BEGIN

PROCESS (CLK,CLR)

BEGIN

IF CLR = '1' THEN R16S<= "00000";

--异步复位信号

ELSIF CLK'EVENT AND CLK = '1' THEN

--时钟到来时,锁存输入值

R16S(6 DOWNTO 0)<=R16S(7 DOWNTO 1);

--右移低8位

R16S(15 DOWNTO 7)<=D;

--将输入锁到高能位

END IF;

END PROCESS;

Q<=R16S;

END ART;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;--8位右移寄存器

ENTITY SREG8B IS

PORT (CLK:IN STD_LOGIC; LOAD :IN STD _LOGIC;

BIN:IN STD_LOGIC_VECTOR(7DOWNTO 0);

QB:OUT STD_LOGIC );

END SREG8B;

ARCHITECTURE ART OF SREG8B IS

SIGNAL REG8B:STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

PROCESS (CLK,LOAD)

BEGIN

IF CLK'EVENT AND CLK= '1' THEN

IF LOAD = '1' THEN REG8<=DIN;--装载新数据 ELSE REG8(6 DOWNTO0)<=REG8(7 DOWNTO 1);--数据右移

END IF;

END IF;

END PROCESS;

QB<= REG8 (0);--输出最低位

END ART;

6@8位乘法器的源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; --8位乘法器顶层设计

ENTITY MULTI8X8 IS

PORT(CLK:IN STD_LOGIC;

START:IN STD_LOGIC;

--乘法启动信号,高电平复位与加载,低电平运算

A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); --8位被乘数

B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); --8位乘数

ARIEND:OUT STD_LOGIC; --乘法运算结束标志位

DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--16位乘积输出END MULTI8X8;

ARCHITECTURE ART OF MULTI8X8 IS

COMPONENT ARICTL --待调用的乘法控制器端口定义

PORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC;

CLKOUT:OUT STD_LOGIC;RSTALL:OUT STD_LOGIC;

ARIEND:OUT STD_LOGIC);

END COMPONENT;

COMPONENT ANDARITH --待调用的控制与门端口定义

PORT(ABIN:IN STD_LOGIC;

DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

DOUT:OUT_STD_LOGIC_VECTOR( 7 DOWNTO 0) );

END COMPONENT;

COMPONENT ADDER8B --待调用的8位加法器端口定义COMPONENT SREG8B --待调用的8位右移寄存器端口定义...

COMPONENT REG16B --待调用的16右移寄存器端口定义

...

SIGNAL GNDINT:STD_LOGIC;

SIGNAL INTCLK:STD_LOGIC;

SIGNAL RSTALL:STD_LOGIC;

SIGNAL QB:STD_LOGIC;

SIGNAL ANDSD:STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL DTBIN:STD_LOGIC_VECTOR(8 DOWNTO 0);

SIGNAL DTBOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);

BEGIN

DOUT<=DTBOUT;GNDINT<= '0';

U1:ARICTL PORT MAP(CLK=>CLK, START=>START,

CLKOUT=>INTCLK, RSTALL=>RSTALL, ARIEND=>ARIEND);

U2:SREG8B PORT MAP(CLK=>INTCLK, LOAD=>RSTALL.

DIN=>B, QB=>QB);

U3:ANDARITH PORT MAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD);

U4:ADDER8B PORT

MAP(CIN=>GNDINT,A=>DTBOUT(15 DOWNTO 8),

B=>ANDSD, S=>DTBIN(7 DOWNTO 0),COUT =>DTBIN(8));

U5:REG16B PORT MAP(CLK =>INTCLK,CLR=>RSTALL,

D=>DTBIN, Q=>DTBOUT);

END ART;

7@有时钟使能的十进制计数器的源程序LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;--有时钟使能的十进制计数器ENTITY CNT10 IS

PORT (CLK:IN STD_LOGIC;--计数时钟信号

CLR:IN STD_LOGIC;--清零信号

END:IN STD_LOGIC;--计数使能信号

CQ:OUT INTEGER RANGE 0 TO 15; --4位计数结果输出

CARRY_OUT:OUT STD_LOGIC); --计数进位

END CNT10;

ARCHITECTURE ART OF CNT10 IS

相关文档