EDA期末考试题大全.docx

上传人:b****7 文档编号:10428520 上传时间:2023-02-11 格式:DOCX 页数:28 大小:367.64KB
下载 相关 举报
EDA期末考试题大全.docx_第1页
第1页 / 共28页
EDA期末考试题大全.docx_第2页
第2页 / 共28页
EDA期末考试题大全.docx_第3页
第3页 / 共28页
EDA期末考试题大全.docx_第4页
第4页 / 共28页
EDA期末考试题大全.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

EDA期末考试题大全.docx

《EDA期末考试题大全.docx》由会员分享,可在线阅读,更多相关《EDA期末考试题大全.docx(28页珍藏版)》请在冰豆网上搜索。

EDA期末考试题大全.docx

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语句缺“WHENOTHERS”语句。

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

SIGNALR16S:

STD_LOGIC_VECTOR(15DOWNTO0);

--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

SIGNALREG8B:

STD_LOGIC_VECTOR(7DOWNTO0);

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_2ofnand4si

begin

p1:

process(a,b,c,d)

variabletmp:

std_logic_vector(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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1