EDA技术期末复习题文档格式.docx
《EDA技术期末复习题文档格式.docx》由会员分享,可在线阅读,更多相关《EDA技术期末复习题文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
A、ConstantWidth:
Integer=8;
B、ConstantWidth:
Integer:
=8;
C、VariableWidth:
Integer=8;
D、VariableWidth:
10.下列哪个库需要在VHDL程序中明确打开并指定________
A、STDB、IEEEC、WORK D、自定义库
11.VHDL中最为常用的是库。
该库中最常用和最重要的程序包是_________________________________。
(P316)
12.在状态机的具体实现时,往往需要针对具体的器件类型来选择合适的状态机编码,对于FPGA和CPLD这两类器件:
一位热码状态机编码方式适合于_________器件。
13.VHDL综合器可以综合的数据类型是______。
(P326)
A、实数类型B、字符串类型
C、时间类型D、文件类型
14.在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是_______。
A、PROCESS为一无限循环语句;
敏感信号发生更新时启动进程,执行
完成后,等待下一次进程启动。
B、敏感信号参数表中,不一定要列出进程中使用的所有输入信号;
C、进程由说明部分、结构体部分、和敏感信号三部分组成;
D、当前进程中声明的变量不可用于其他进程。
15.写出四种VHDL语言中时钟上升沿检测的描述。
clk’eventandclk=‘1’
rising_edge(clk)
clk=‘1’andclk’last_value=‘0’
Notclk’stableandclk=‘1’
16.WAIT语句有几种书写格式?
哪些格式可以进行逻辑综合?
WAIT;
--第一种语句格式
WAITON信号表;
--第二种语句格式
WAITUNTIL条件表达式;
--第三种语句格式
WAITFOR时间表达式;
--第四种语句格式,超时等待语句
只有第三种WAITUNTIL语句可以进行逻辑综合。
17.什么是元件例化语句?
它包括哪几部分?
元件例化:
就是将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。
元件例化语句由两部分组成:
前一部分是将一个现成的设计实体定义为一个元件的语句,即元件定义语句;
第二部分则是此元件与当前设计实体中的连接说明,即元件例化语句.
18.分别写出条件信号赋值语句与选择信号赋值语句的表达方式。
条件信号赋值语句:
赋值目标<
=表达式WHEN赋值条件ELSE
表达式WHEN赋值条件ELSE
...
表达式;
选择信号赋值语句:
WITH选择表达式SELECT
赋值目标信号<
=表达式WHEN选择值
表达式WHEN选择值
...
表达式WHEN选择值;
19.顺序语句和并行语句有什么区别?
顺序语句:
每一条顺序语句的执行(指仿真执行)顺序是与它们书写顺序基本一致的,顺序语句只能出现在进程和子程序中。
并行语句:
在执行顺序的地位上是平等的,其执行顺序与书写的顺序无关。
20.请写出进程语句的特点。
(1)PROCESS为一无限循环语句。
(2)PROCESS中的顺序语句具有明显的顺序/并行运行双重性。
(3)进程必须由敏感信号的变化来启动。
(4)进程语句本身是并行语句。
(5)一个进程中只允许描述对应于一个时钟信号的同步时序逻辑。
VHDL程序改错题
1.ARCHITECTUREoneOFexternIS
BEGIN
VARIABLEQ1:
STD_LOGIC;
PROCESS(CLK)
BEGIN
IFrising_edge(CLK)THENQ1<
=D
;
ENDIF;
ENDPROCESS;
Q:
=Q1;
END;
试指出程序中所存在的错误并进行改正。
2.ENTITYmux21IS
PORT(a,b,sel:
INBIT;
c:
OUTBIT);
ARCHITECTUREoneOFmux21IS
IFsel=’0’THENc<
=a;
ELSEc<
=b;
ENDIF;
VHDL程序填空
1.LIBRARYIEEE;
--8位分频器程序设计
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYPULSEIS
PORT(
CLK:
INSTD_LOGIC;
D
:
INSTD_LOGIC_VECTOR(7DOWNTO0);
FOUT
OUTSTD_LOGIC
);
ARCHITECTUREoneOFPULSEIS
SIGNAL
FULL:
STD_LOGIC;
P_REG:
PROCESS(CLK)
VARIABLECNT8:
STD_LOGIC_VECTOR(7DOWNTO0);
IFCLK‘EVENTANDCLK=‘1’THEN
IFCNT8="
11111111"
THEN
CNT8:
=D;
--当CNT8计数计满时,输入数据D被同步预置给计数器CNT8
FULL<
='
1'
--同时使溢出标志信号FULL输出为高电平
ELSE
=CNT8+1;
--否则继续作加1计数
0'
--且输出溢出标志信号FULL为低电平
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL)
VARIABLECNT2:
IFFULL'
EVENTANDFULL='
CNT2<
=NOTCNT2;
--如果溢出标志信号FULL为上升沿,D触发器
输出取反
IFCNT2='
THENFOUT<
ELSE
FOUT<
ENDPROCESSP_DIV;
2.下面程序是一个带有异步复位和同步时钟使能的十进制加法计数器的VHDL描述,试补充完整。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT10IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
CQ
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
COUT:
OUTSTD_LOGIC);
ENDCNT10;
ARCHITECTUREbehaveOFCNT10IS
PROCESS(CLK,RST,EN)
VARIABLECQI:
STD_LOGIC_VECTOR(3DOWNTO0)
IFRST=’1’THENCQI:
=(OTHERS=>
’0’);
--计数器异步复位
ELSIFCLK‘EVENTANDCLK=’1’THEN--检测时钟上升沿
IFEN=’1’THEN--检测是否允许计数(同步使能)
IFCQI<
9THENCQI:
=CQI+1;
--允许计数,检测是否小于9
ELSECQI:
=OTHERS=>
’0’;
--大于9,计数值清零
IFCQI=9THENCOUT<
=’1’;
--计数大于9,输出进位信号
ELSECOUT<
=’0’;
CQ<
=CQI;
--将计数值向端口输出
ENDbehave;
3.下面程序是带异步复位、同步置数和移位使能的8位右移移位寄存器的VHDL描述,试补充完整。
libraryieee;
useieee.std_logic_1164.all;
entitysreg8bis
port(clk,rst:
instd_logic;
load,en:
din:
in__std_logic_vector__(7downto0);
qb:
outstd_logic);
endsreg8b;
architecturebehavofsreg8bis
signalreg8:
std_logic_vector(7downto0);
begin
process(clk,rst,load,en)
begin
ifrst='
then――异步清零
reg8<
=“00000000”;
elsifclk'
eventandclk='
then――边沿检测
ifload='
then――同步置数
reg8<
=din;
elsifen='
then――移位使能
reg8(6downto0)<
=reg8(7downto1);
endif;
_endif_____;
endprocess;
qb<
=_reg8(0)______;
――输出最低位
endbehav;
4.下面程序是一个8位加减计数器,带有异步复位、可预置功能,计数范围为0~255。
试将程序补充完整。
Clk:
时钟信号
Reset:
异步复位信号,reset=‘1’时,复位
Load:
预置使能信号,load=‘1’时,装入数据
Dir:
加减控制信号dir=‘1’时,加;
dir=‘0’时,减
Ce:
同步使能信号,ce=‘1’时,同步使能,允许计数
Din:
输入,整型,范围是0~255
Count:
输出,整型,范围是0~255
ENTITYcounter8IS
PORT(clk,reset:
INSTD_LOGIC;
ce,load,dir:
din:
ININTEGERRANGE0TO255;
count:
OUTINTEGERRANGE0TO255);
ARCHITECTUREoneOFcounter8IS
PROCESS(clk,reset)
VARIABLEcounter:
INTEGERRANGE0TO255;
IFreset='
THENcounter:
=0;
ELSIFclk'
EVENTANDclk='
THEN
IFload='
counter:
=din;
ELSE
IFce='
THEN
IFdir='
IFcounter=255THEN
ELSEcounter:
=counter+1;
ELSEIFcounter=0THEN
=255;
=counter-1;
count<
=counter;
5.下面程序是一个D触发器。
数据宽度为8位,G是控制端,当G为高电平时,数据进入;
而当G为低电平时,保持已输入的数据。
ENTITYLATCH8IS
PORT(G:
DIN:
INSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDLATCH8;
ARCHITECTUREbehavOFLATCH8IS
PROCESS(G,DIN)
IFG='
THENDOUT<
=DIN;
ENDPROCESS;
ENDbehav;
6.下面程序是N输入与门的VHDL描述,试补充完整。
_library___ieee;
useieee.std_logic_1164.all;
entityandnis
_GENERIC____(n:
integer);
--类属参数声明
port(a:
instd_logic_vector(_n-1_____downto0);
c:
outstd_logic);
end;
___architecture_______behavofandnis--结构体声明
process(a)
__variable________int:
std_logic;
--变量声明
int:
--变量赋初值
forIina'
length–1downto0loop--循环判断
ifa(i)='
then
int:
endif;
endloop;
c<
=_int_______;
--输出判断结果
7.下面程序是一个8位三态控制门电路的VHDL描述,当使能控制信号为‘1’时,8位数据输出;
为‘0’时输出呈高阻态,语句中将高阻态数据“ZZZZZZZZ”向输出端口赋值。
ENTITYtri_sIS
PORT(enable:
datain:
dataout:
ENDtri_s;
ARCHITECTUREbhvOFtri_sIS
PROCESS(enable,datain)
IFenable='
THENdataout<
=datain;
ELSEdataout<
="
ZZZZZZZZ"
;
ENDIF;
ENDbhv;
.