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

EDA期末考试题大全

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

附带:

一.问答题

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

信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。信号赋值语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。

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

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

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

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

库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、调用。子程序由过程和函数组成。在子程序调用过程中,过程能返回多个变量,函数只能返回一个变量。若子程序调用的是一个过程,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。过程调用、函数调用都是子程序调用。

二.改错题

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

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

CASEselIS

WHEN“00”=>q<=a;

WHEN“01”=>q<=b;

WHEN“10”=>q<=c;

WHEN“11”=>q<=d;

ENDCASE;

答案:CASE语句缺“WHENOTH ERS”语句。

2.已知data_in1,data_in2为STD_LOGIC_VECTOR(15DOWNTO0)类型的输入端口,data_out为STD_LOGIC_VECTOR(15DOWNTO0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面

给出的程序片段:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYaddIS

PORT(data_in1,data_in2:ININTEGER;

data_out:OUTINTEGER);

ENDadd;

ARCHTECTUREadd_archOFaddIS

CONSTANTa:INTEGER<=2;

BEGIN

data_out<=(data_in1+data_in2)*a;

ENDaddsub_arch;

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

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

ARCHITECTUREtest_archOFtestIS

BEGIN

SIGNALB:STD_LOGIC;

Q<=B;

ENDtest_arch

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

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

ARCHITECTUREarchtestOFtestIS

BEGIN

CASEAIS

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

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

ENDCASE;

ENDarchtest;

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

三.程序设计

1@4位二进制并行加法器的源程序ADDER4B.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYADDER4BIS--4位二进制并行加法器

PORT(CIN:INSTD_LOGIC;--低位进位

A:INSTD_LOGIC_VECTOR(3DOWNTO0);--4位加数

B:INSTD_LOGIC_VECTOR(3DOWNTO0);--4位被加数

S:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--4位和

CONT:OUTSTD_LOGIC);

ENDADDER4B;

ARCHITECTUREARTOFADDER4BIS

SIGNALSINT:STD_LOGIC_VECTOR(4DOWNTO0);

SIGNALAA,BB:STD_LOGIC_VECTOR(4DOWNTO0);

BEGIN

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

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

SINT<=AA+BB+CIN;

S<=SINT(3DOWNTO0);

CONT<=SINT(4);

ENDART;

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

LIBRARYIEEE;

USEIEEE_STD.LOGIC_1164.ALL;

USEIEEE_STD.LOGIC_UNSIGNED.ALL:

ENTITYADDER8BIS

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

PORT(CIN:INSTD_LOGIC;

A:INSTD_LOGIC_VECTOR(7DOWNTO0);

B:INSTD_LOGIC_VECTOR(7DOWNTO0);

S:OUTSTD_LOGIC_VECTOR(7DOWNTO0);

COUT:OUTSTD_LOGIC);

ENDADDER8B;

ARCHICTUREARTOFADDER8BIS

COMPONENETADDER4B

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

PORT(CIN:INSTD_LOGIC;

A:INSTD_LOGIC_VECTOR(3DOWNTO0);

B:INSTD_LOGIC_VECTOR(3DOWNTO0);

S:OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CONT:OUTSTD_LOGIC);

ENDCOMPONENT;

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

BEGIN

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

PORTMAP(CIN=>CIN,A=>A(3DOWNTO0),B=>B(3DOWNTO0),

S=>S(3DOWNTO0),COUT=>CARRY_OUT);

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

PORTMAP(CIN=>CARRY_OUT,A=>A(7DOWNTO4),B=>B(7DOWNTO4),S=>S(7DOWNTO4);CONT=>CONT);

ENDART;

3.@触发器和缓冲器

D触发器:Process(clk)

begin

if(clk’eventandclk=‘1’) then

q<=d;

endif;

endprocess;

缓冲器:Process(clk)

begin

if(clk=‘1’)then

q<=d;

endif;

endprocess;

T触发器:Process(clk)

begin

if(clk’eventandclk=‘1’) then

if(t=‘1’)then

q<=not(q);

else

q<=q;

endif;

endif;

endprocess;

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

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYREG16BIS --16位锁存器

PORT(CLK:INSTD_LOGIC;--锁存信号

CLR:INSTD_LOGIC;--清零信号

D:INSTD_LOGIC_VECTOR(8DOWNTO0) --8位数据输入

Q:OUTSTD_LOGIC_VECTOR(15DOWNTO0));--16位数据输出

ENDREG16B;

ARCHITECTUREARTOFREG16BIS

--16位寄存器设置

BEGIN

PROCESS(CLK,CLR)

BEGIN

IFCLR='1'THENR16S<="0000000000000000";

--异步复位信号

ELSIFCLK'EVENTANDCLK='1'THEN

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

R16S(6DOWNTO0)<=R16S(7DOWNTO1);

--右移低8位

R16S(15DOWNTO7)<=D;

--将输入锁到高能位

ENDIF;

ENDPROCESS;

Q<=R16S;

ENDART;

5@8位右移寄存器的源程序SREG8B.VHD

LIBRARYIEEE;

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

ENTITYSREG8BIS

PORT(CLK:INSTD_LOGIC;LOAD:INSTD_LOGIC;

BIN:INSTD_LOGIC_VECTOR(7DOWNTO0);

QB:OUTSTD_LOGIC);

ENDSREG8B;

ARCHITECTUREARTOFSREG8BIS

BEGIN

PROCESS(CLK,LOAD)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFLOAD='1'THENREG8<=DIN;--装载新数据

ELSEREG8(6DOWNTO0)<=REG8(7DOWNTO1);--数据右移

ENDIF;

ENDIF;

ENDPROCESS;

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

ENDART;

6@8位乘法器的源程序

LIBRARYIEEE;

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

ENTITYMULTI8X8IS

PORT(CLK:INSTD_LOGIC;

START:INSTD_LOGIC;

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

A:INSTD_LOGIC_VECTOR(7DOWNTO0);--8位被乘数

B:INSTD_LOGIC_VECTOR(7DOWNTO0);--8位乘数

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

DOUT:OUTSTD_LOGIC_VECTOR(15DOWNTO0));--16位乘积输出

ENDMULTI8X8;

ARCHITECTUREARTOFMULTI8X8IS

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

PORT(CLK:INSTD_LOGIC;START:INSTD_LOGIC;

CLKOUT:OUTSTD_LOGIC;RSTALL:OUTSTD_LOGIC;

ARIEND:OUTSTD_LOGIC);

ENDCOMPONENT;

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

PORT(ABIN:INSTD_LOGIC;

DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);

DOUT:OUT_STD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENT;

COMPONENTADDER8B --待调用的8位加法器端口定义

COMPONENTSREG8B --待调用的8位右移寄存器端口定义

...

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

...

SIGNALGNDINT:STD_LOGIC;

SIGNALINTCLK:STD_LOGIC;

SIGNALRSTALL:STD_LOGIC;

SIGNALQB:STD_LOGIC;

SIGNALANDSD:STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALDTBIN:STD_LOGIC_VECTOR(8DOWNTO0);

SIGNALDTBOUT:STD_LOGIC_VECTOR(15DOWNTO0);

BEGIN

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

U1:ARICTLPORTMAP(CLK=>CLK,START=>START,

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

U2:SREG8BPORTMAP(CLK=>INTCLK,LOAD=>RSTALL.

DIN=>B,QB=>QB);

U3:ANDARITHPORTMAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD);

U4:ADDER8BPORT

MAP(CIN=>GNDINT,A=>DTBOUT(15DOWNTO8),

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

U5:REG16BPORTMAP(CLK=>INTCLK,CLR=>RSTALL,

D=>DTBIN,Q=>DTBOUT);

ENDART;

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

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL; --有时钟使能的十进制计数器ENTITYCNT10IS

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

CLR:INSTD_LOGIC;--清零信号

END:INSTD_LOGIC;--计数使能信号

CQ:OUTINTEGERRANGE0TO15;--4位计数结果输出

CARRY_OUT:OUTSTD_LOGIC);--计数进位

ENDCNT10;

ARCHITECTUREARTOFCNT10IS

SIGNALCQI:INTEGERRANGE0TO15;

BEGIN

PROCESS(CLK,CLR,ENA)

BEGIN

IFCLR='1'THENCQI<=0;--计数器异步清零ELSIFCLK'EVENTANDCLK='1'THEN

IFENA='1'THEN

IFCQI<9THENCQI<=CQI+1;

ELSECQI<=0;ENDIF;--等于9,则计数器清零

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CQI)

BEGIN

IFCQI=9THENCARRY_OUT<='1';--进位输出

ELSECARRY_OUT<='0';ENDIF;

ENDPROCESS;

CQ<=CQI;

ENDART;

8@)六进制计数器的源程序CNT6.VHD(十进制计数器的源程序

CNT10.VHD与此类似)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT6IS

PORT(CLK:INSTD_LOGIC;

CLR:INSTD_LOGIC;

ENA:INSTD_LOGIC;

CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CARRY_OUT:OUTSTD_LOGIC);

ENDCNT6;

ARCHITECTUREARTOFCNT6IS

SIGNALCQI:STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(CLK,CLR,ENA)

BEGIN

IFCLR='1'THENCQI<="0000";

ELSIFCLK'EVENTANDCLK='1'THEN

IFENA='1'THEN

IFCQI=“0101”THENCQI<=“0000”;

ELSECQI<=CQI+'1';ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CQI)

BEGIN

IFCQI=“0000”THENCARRY_OUT<='1';ELSECARRY_OUT<='0';ENDIF;

ENDPROCESS;

CQ<=CQI;

ENDART;

9@十进制计数器

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITYcount10IS

PORT(clk:INSTD_LOGIC;

seg:OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDcount10;

ARCHITECTUREa1OFcount10IS

signalsec:STD_LOGIC;

signalq:STD_LOGIC_VECTOR(21DOWNTO0);

signalnum:STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

process(clk)----get1hzclockpulse

begin

ifclk'eventandclk='1'thenq<=q+1;endif;

sec<=q(21);--get1hzclockpulse

endprocess;

timing:process(sec)begin

ifsec'eventandsec='1'then

ifnum<9thennum<=num+1;elsenum<="0000";endif;

endif;

endprocess;

B1:block--bcd-7segs

Begin--gfedcba

seg<="0111111"whennum=0else

"0000110"whennum=1else

"1011011"whennum=2else

"1001111"whennum=3else

"1100110"whennum=4else

"1101101"whennum=5else

"1111101"whennum=6else

"0000111"whennum=7else

"1111111"whennum=8else

"1101111"whennum=9else

"0000000";

endblock;

ENDa1;

10@4MHz到1Hz的分频器

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL; ENTITYcountIS

PORT(clk:inSTD_LOGIC;

q:outSTD_LOGIC;

ENDcount;

ARCHITECTUREaOFcountIS

signaltmp:STD_LOGIC_vector(21downto0); Begin

process(clk)begin

ifclk'eventandclk='1'thentmp<=tmp+1;endif; endprocess;

q<=tmp(21);

ENDa;

11@与门

ENTITYshili2is

port(

input1:instd_logic; inptu2:instd_logic; output1:outstd_logic

);

endentity; architectureoneofshili2is begin

output1<=input1andinput2;

endentity;

12@.四输入与门电路

libraryieee;

useieee.std_logic_1164.all ;

entityand4is

port(a,b,c,d:instd_logic;

y:outstd_logic;

endand4;

architectureand4_1ofand4is

begin

y<=aandbandcandd;

endnand4_1;

法二(与非门):

libraryieee;

useieee.std_logic_1164.all

entitynand4is

port(a.b,c,d:instd_logic;

y:outstd_logic);

endnand4;

architecturenand4_2ofnand4 si

begin

p1:process(a,b,c,d)

variabletmp:std_logic_vect or(3downto0);

begin

tmp:=a&b&c&d; casetmpis when"0000"=>y<='1'; when"0001"=>y<='1'; when"0010"=>y<='1'; when"0011"=>y<='1'; when"0100"=>y<='1'; when"0101"=>y<='1'; when"0110"=>y<='1'; when"0111"=>y<='1'; when"1000"=>y<='1'; when"1001"=>y<='1'; when"1010"=>y<='1'; when"1011"=>y<='1'; when"1100"=>y<='1'; when"1101"=>y<='1'; when"1110"=>y<='1'; when"1111"=>y<='1'; whenothers=>y<='x'; endcase; endprocess; endnand4_2;

13@四位全加器

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityaddis

port(a,b:instd_logic_vector(3downto0);

cin:instd_logic;

s:outstd_logic_vector(3downto0);

cout:outstd_logic);

endadd;

architecturebehofaddis

begin

process(a,b,cin)

ariablex:std_logic_vector(3downto0);

variablem,n,l:integer;

begin

m:=conv_integer(a);

n:=conv_integer(b);

l:=m+n+conv_integer(cin);

x:=conv_std_logic_vector(l,4);

s<=x(3downto0);

cout<=x(3);

endprocess;

endbeh;

14@N位移位寄存器:page70

15@8位通用寄存器:page137

16@串入串出移位寄存器:page138

17@10位计数器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT10IS

PORT(CLK,clr:INSTD_LOGIC;

CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDENTITYCNT10;

ARCHITECTUREONEOFCNT10IS

BEGIN

PROCESS(CLK,clr)

VARIABLELCQ:STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFRST=‘1’THENLCQ:=“0000”;

ELSIFCLK’EVENTANDCLK=‘1’THEN

IFLCQ<9THENLCQ:=LCQ+1;

ELSELCQ:=“0000”;

ENDIF;ENDIF;

CQ<=LCQ;

ENDPROCESS;

ENDARCHITECTUREONE;

18@八位串行二进制全加器

useieee.std_logic_1164.all;

entityproduct_adder_subtracteris

port(

a,b:instd_logic_vector(7downto0);

s:outstd_logic_vector(8downto0));

end;

architecturebehavioralofproduct_adder_subtracteris begin

behavior:process(a,b)is

variablecarry_in:std_logic;

variablecarry_out:std_logic;

variableop2:std_logic_vector(b'range);

begin

op2:=b;

endif;

forindexin0to7loop

carry_in:=carry_out;

s(index)<=a(index)xorop2(index)xorcarry_in;

carry_out:=(a(index)andop2(index))

or(carry_inand(a(index)xorop2(index)));

endloop;

s(8)<=a(7)xorop2(7)xorcarry_out;

endprocess;

end;

EDA知识要点:

1、目前流行的HDL语言有那些?;

2、什么是ASIC。

3、VHDL是由什么机构制定并公布的。

4、VHDL的两大类基本描述语句是什么。

5、MAX+PLUSⅡ平台上,原理图、仿真波形文件、VHDL文件的扩展

名是什么?

6、结构体常见的功能语句有那些?

7、子程序分为那两类,其结构为什么。

8、信号与变量的赋值有何区别?。

9、可编程器件分为哪些类?

10、VHDL中常见的库有那些?。

11、不完整的条件语句与完整的条件语句生成的电路有何区别

12、VHDL的标识符由什么构成。

13、VHDL中预定义数据类型有那些?。

14、CASE语句使用当中的注意事项。

15、目前国际上较大的PLD器件制造公司有那几家公司。

16、VHDL数据对象有什么

17、赋值语句分哪些类,分别写出一句赋值语句。

18、实现时序电路和逻辑组合电路分别用什么语句实现,分别写出他们的一般表式。

19、简述元件例化语句组成及语句格式。

20、数据对象有哪些种,分别写出定义这些数据对象的一般表述格式。

21、简述进程语句的使用要点?

22、写出VHDL常用的顺序语句的名称。

23、简述VHDL逻辑操作符的种类及所允许的操作数的数据类型。

24、EDA技术的含义。

25、VHDL语言中的逻辑操作符有那些?

26、目前较流行的集成EDA开发环境(软件)有那些?

27、简述EDA技术的CPLD/FPGA的设计流程。

28、写出实体中的PORT语句结构并说明其作用。

29、简述EDA技术经历了那几个发展阶段。

30、写出元件例化语句语句格式,并说明其作用。

31、试比较图形输入法和文本输入法有何优缺点?

32、结构体的语言格式与作用。

33、写出PROCESS语句结构的一般表达格式?

34、EDA技术常用的输入方法有?

35、什么是实体和结构体,其功能是什么?,

36、MAX+pulsⅡ的编辑窗口有那几种,分别是什么?

37、MAX+pulsⅡ的原理图输入法、文本输入法、波形输入法生成

的文件扩展名为?

38、VHDL的操作符有那几大类?每一类的操作符分别是什么?

每一类操作符可以对那些数据进行操作(运算)?

39、VHDL中如没有特别的说明算术操作符‘+’号对应的操作数

为什么类型

40、可编程器件(PLD)分为哪两类

41、标准逻辑位数据类型常用的数值有哪几种?

42、在VHDL语言中常见的的数据类型有那些?

43、完整的条件语句将产生什么电路,不完整的条件语句将产生

什么电路。

44、信号和变量有什么区别?

45、VHDL作为工业标准,是由那个机构制定并公布的。

相关文档