VHDL复习内容总结PPT资料.ppt
《VHDL复习内容总结PPT资料.ppt》由会员分享,可在线阅读,更多相关《VHDL复习内容总结PPT资料.ppt(79页珍藏版)》请在冰点文库上搜索。
![VHDL复习内容总结PPT资料.ppt](https://file1.bingdoc.com/fileroot1/2023-5/7/2a0543cf-bfee-4098-85d0-8cbbf4dc0853/2a0543cf-bfee-4098-85d0-8cbbf4dc08531.gif)
,1.可编程输入输出单元(IOB),IOB单元是芯片与外界电路的接口部分,可完成不同电气特性下对输入/输出信号的驱动与匹配要求.,FPGA的IOB被划分为若干个组(Bank),每个Bank的接口标准由其接口电压VCCO决定,一个Bank只能有一种VCCO,但不同Bank的VCCO可以不同。
只有相同电气标准的端口才能连接在一起,要求VCCO电压相同是接口标准的基本条件。
2.可配置逻辑块(CLB),CLB是FPGA内的基本逻辑单元.,CLB的实际数量和特性会依据器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由选型电路(多路复用器等)、触发器和4或6个输入组成。
典型的CLB结构示意图,3.数字时钟管理模块(DCM),Xilinx推出的FPGA可提供数字时钟管理和相位环路锁定。
DCM的主要优点在于:
可实现零时钟偏移(Skew),消除时钟分配延迟,并实现时钟闭环控制。
时钟可以映射到PCB上用于同步外部芯片,这样就减少了对外部芯片的要求,而将芯片内外的时钟控制一体化,以利于系统设计。
DCM模块的关键参数:
输入时钟频率范围、输出时钟频率范围和输入/输出时钟允许抖动范围等。
IP(IntelligentProperty)核,1.3IP核简介,是具有知识产权的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。
IP核的提供方式上看,通常将其分为软核、硬核和固核这三类。
从完成IP核所花费的成本来讲,硬核代价最大;
从使用灵活性来讲,软核的可复用性最高。
1.数字时钟管理DCM,1.4FPGA常见技术,数字时钟管理模块(DCM,DigitalClockManager)是基于Xilinx的其他系列器件所采用的数字延迟锁相环(DLL,DelayLockedLoop)模块。
DCM由四部分组成:
1.DLL模块;
2.数字频率合成器DFS3.数字移相器DPS4.数字频谱扩展器DSS,第三设计输入,对几种主要的输入方法,比如原理图输入、VHDL/Veirlog语言描述,要知道其原理,特别是VHDL,知道这几种方法的含义和区别,第四功能仿真,关于功能仿真的特点、含义及其与时序仿真的区别Quartus软件中,从建立一个project到最终仿真成功的操作步骤,重点是其中的几大步骤要理解,第五FPGA的下载配置电路设计,常用的FPGA下载配置模式JTAG要知道,VHDL语言部分,VHDL的特点VHDL基本结构对于一些简单实例要能够进行框架划分,对一些重要组成部分要知道其含义及功能对一些常用的客体及赋值方式要掌握对VHDL的描述方式要掌握其特点,尽量能进行区分对VHDL中的一些重要语句要知道其含义,第一章VHDL基本结构,1.1实体1.2结构体1.3块、子程序和进程1.4库和程序包1.5配置,实体语句结构如下:
ENTITY实体名ISGENERIC(类属表);
PORT(端口表);
ENDENTITY实体名;
例:
ENTITYor2ISPORT(a,b:
INSTD_LOGIC;
C:
OUTSTD_LOGIC);
ENDENTITYor2;
1.2结构体,结构体也叫构造体,结构体描述了基本设计单元(实体)的结构、行为、元件及内部连接关系,也就是说它定义了设计实体的功能,规定了设计实体的数据流程,制定了实体内部元件的连接关系。
结构体对其基本设计单元的输入和输出关系可用以下三种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。
结构体是对实体功能的具体描述,因此它一定要跟在实体的后面。
结构体一般由两大部分组成:
1对数据类型、常数、信号、子程序和元件等因素进行说明的部分;
2描述实体的逻辑行为、以各种不同的描述风格表达的功能描述语句,包括各种顺序语句和并行语句。
结构体的语句格式为:
ARCHITECTURE结构体名OF实体名IS定义语句BEGIN功能描述语句END结构体名;
1.2.1结构体名结构体名由设计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。
有些设计实体有多个结构体,这些结构体的结构体名不可相同,通常用dataflow(数据流)、behavior(行为)、structural(结构)命名。
这3个名称体现了3种不同结构体的描述方式,使得阅读VHDL语言程序时,能直接了解设计者采用的描述方式。
结构体的信号定义实例。
ARCHITECTURErtlOFmujISSIGNALs1:
BITSIGNALs2,s3:
STD_LOGIC_VECTOR(0TO3);
BEGINENDrtl;
实体名,结构体名,功能描述语句,结构体信号定义语句,结构体构造图:
1.5.2结构体的配置,结构体的配置主要是用来对结构体中引用的元件进行配置。
结构体的配置的书写格式:
FOR:
USEENTITY.;
以1位全加器的构成为例说明结构体的配置的用法:
将两输入与门、或门、异或门设置成通用例化元件由结构体引用。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYand2_vISPORT(a:
b:
y:
ENDand2_v;
ARCHITECTUREand2_arcOFand2_vISBEGINy=aANDb;
ENDand2_arc;
CONFIGURATIONand2_cfgOFand2_vISFORand2_arcENDfor;
ENDand2_cfg;
二输入与门源代码:
ENTITYor2_vISPORT(a:
ENDor2_v;
ARCHITECTUREor2_arcOFor2_vISBEGINy=aORb;
ENDor2_arc;
CONFIGURATIONor2_cfgOFor2_vISFORor2_arcENDfor;
ENDor2_cfg;
二输入或门源代码:
或门or2_v仿真波形,LIBRARYIEEE;
ENTITYxor2_vISPORT(a:
ENDxor2_v;
ARCHITECTURExor2_arcOFxor2_vISBEGINy=aXORb;
ENDxor2_arc;
CONFIGURATIONxor2_cfgOFxor2_vISFORxor2_arcENDfor;
ENDxor2_cfg;
异或门源代码:
ENTITYadd1_vISPORT(A:
B:
Cin:
Co:
OUTSTD_LOGIC;
S:
ENDadd1_v;
ARCHITECTUREstructureOFadd1_vISCOMPONENTand2_vPORT(a:
ENDCOMPONENT;
全加器源代码:
COMPONENTor2_vPORT(a:
COMPONENTxor2_vPORT(a:
SIGNALtmp1,tmp2,tmp3:
STD_LOGIC;
FORU1,U2:
xor2_vUSEENTITYwork.xor2_v(xor2_arc);
FORU3,U4:
and2_vUSEENTITYwork.and2_v(and2_arc);
FORU5:
or2_vUSEENTITYwork.or2_v(or2_arc);
BEGINU1:
xor2_vPORTMAP(A,B,tmp1);
U2:
xor2_vPORTMAP(tmp1,Cin,S);
U3:
and2_vPORTMAP(tmp1,Cin,tmp2);
U4:
and2_vPORTMAP(A,B,tmp3);
U5:
or2_vPORTMAP(tmp2,tmp3,Co);
ENDstructure;
实际上如果仅仅要构成1位全加器,采用行为描述方式只需几条逻辑语句即可。
ARCHITECTUREstructureOFadd1_vISBEGINS=AXORBXORCin;
Co=(AXORB)ANDCinOR(AANDB);
全加器add1_v仿真波形,第二章VHDL语言元素,2.1VHDL语言的客体2.2VHDL语言的数据类型2.3VHDL数据类型转换2.4VHDL词法规则与标识符,2.1.2变量(VARIABLE)变量只能在进程和子程序中用,是一个局部量,不能将信息带出对它做出定义的当前设计单元。
与信号不同,变量的赋值是理想化数据传输,其赋值是立即生效的,不存在任何的延时行为。
变量定义语句的格式为:
VARIABLE变量名:
数据类型:
约束条件:
=初始值;
例如:
VARIABLEn:
INTEGERRANGE0TO15:
=2;
VARIABLEa:
INTEGER;
变量赋值语句的格式为:
目标变量名:
=表达式;
赋值语句“:
=”右边的表达式必须与目标变量具有相同的数据类型,这个表达式可以是一个运算表达式也可以是一个数值。
变量赋值语句左边的目标变量可以是单值变量,也可以是变量的集合。
例如定义变量:
VARIABLEa,b:
=REAL;
VARIABLEx,y:
=BIT_VECTOR(0TO7);
2.1.3信号(SIGNAL)信号是电子电路内部硬件连接的抽象。
它可以作为设计实体中的并行语句模块间交流信息的通道。
信号及其相关的延时语句明显地体现了硬件系统的特征。
信号定义语句的格式为:
SIGNAL信号名:
数据类型:
SIGNALgnd:
BIT:
=0;
SIGNALdata:
STD_LOGIC_VECTOR(7DOWNTO0);
信号赋值语句表达式为:
目标信号名=表达式;
符号“=”表示赋值操作,即将数据信息传入。
数据信息传入时可以设置延时过程,这与器件的实际传播延时十分接近。
因此信号值的代入采用“=”代入符,而不是像变量赋值时那样用“:
”。
但信号定义时初始赋值符号“:
”,即仿真的时间坐标是从赋初始值开始的。
信号赋值语句举例:
x=y;
a=1;
s1=s2AFTER10ns;
注意:
变量和信号都必须先定义,后赋值。
注意赋值符“=”和“:
”的差别。
2.4VHDL操作符,与其他程序设计语言相似,VHDL中的表达式也是由运算符将基本元素连接起来形成。
这里的基本元素包括对象名、文字、函数调用及用括号括起来的表达式。
在VHDL语言中共有4类操作符,可以分别进行逻辑运算(LOGICAL)、关系运算(RELATIONAL)、算术运算(ARITHMETIC)和并置运算(CONCATENATION)。
需要指出的是操作符操作的对象是操作数,且操作数的类型应该和操作符所要求的类型相一致。
另外,运算操作符是有优先级的,例如,逻辑运算符not,在所有操作符中优先级最高。
1.逻辑运算符在VHDL语言中,共有6种逻辑运算符,他们分别是:
NOT取反;
AND与;
OR或;
NAND与非;
NOR或非;
XOR异或。
这6种逻辑运算符可以对“STD_LOGIC”和“BIT”等逻辑型数据、“STD_LOGIC_VECTOR”逻辑型数组及布尔数据进行逻辑运算。
必须注意,运算符的左边和右边,以及代入的信号的数据类型必须是相同的。
2.算术运算符VHDL语言中有5类算术运算符,他们分别是:
求和操作符:
(加)、(减)求积操作符:
*(乘)、/(除)、MOD(求模)、REM(取余)符号操作符:
(正)、(负)混合操作符:
*(指数)、ABS(取绝对值)移位操作符:
SLL(逻辑左移)、SRL(逻辑右移)、SLA(算术左移)、SRA(算术右移)、ROL(逻辑循环左移)、ROR逻辑循环右移),3.关系运算符VHDL语言中有6种关系运算符,他们分别是:
=等于;
/=不等于;
大于;
=大于等于;
4.并置运算符&
连接,SIGNALg,h,i:
STD_LOGIC;
SIGNALc,d,e:
STD_LOGIC_VECTOR(1TO0);
d=i&
NOTh;
-元素与元素并置,形成长度为2的数组a=c&
d;
-数组与数组并置,形成长度为4的数组,5.VHDL操作符的优先顺序,运算符优先级NOT,ABS,*最高优先级*,/,MOD,REM+(正号),(负号)+,&
SLL,SLA,SRL,SRA,ROL,ROR=,/=,=AND,OR,NAND,NOR,XOR,XNOR最低优先级,第三章VHDL的描述风格,3.1行为描述方式3.2数据流描述方式(RTL描述方式)3.3结构化描述方式3.4混合描述风格,第四章VHDL的主要描述语句,4.1VHDL顺序语句4.2VHDL并行语句,VHDL顺序语句主要包括:
变量赋值语句(VariableEvaluate)信号赋值语句(SignalEvaluate)WAIT语句IF语句CASE语句LOOP语句NEXT语句EXIT语句RETURN语句NULL语句过程调用语句(ProcedureCall)断言语句(Assert)REPORT语句,4.1.4IF语句在VHDL语言中,IF语句的作用是根据指定的条件来确定语句的执行顺序。
IF语句可用于选择器、比较器、编码器、译码器、状态机等的设计,是VHDL语言中最常用的语句之一。
IF语句按其书写格式可分为以下3种。
1.门闩控制语句这类语句书写格式为:
IF条件THEN顺序语句ENDIF;
当程序执行到这种门闩控制型IF语句时,首先判断语句中所指定的条件是否成立。
如果条件成立,则程序继续执行IF语句中所含的顺序处理语句;
如果条件不成立,程序将跳过IF语句所包含的顺序处理语句,而向下执行IF的后继语句。
2.二选一控制语句这种语句的书写格式为:
IF条件THEN顺序语句ELSE顺序语句ENDIF;
当IF条件成立时,程序执行THEN和ELSE之间的顺序语句部分;
当IF语句的条件得不到满足时,程序执行ELSE和ENDIF之间的顺序处理语句。
即依据IF所指定的条件是否满足,程序可以进行两条不同的执行路径。
3.多选择控制语句这种语句的书写格式为:
IF条件THEN顺序语句ELSEIF顺序语句ELSEIF顺序语句ELSE顺序语句ENDIF;
4.1.5CASE语句CASE语句根据满足的条件直接选择多项顺序语句中的一项执行,它常用来描述总线行为、编码器、译码器等的结构。
CASE语句的结构为:
CASE表达式ISWHEN条件选择值=顺序语句,WHEN条件选择值=顺序语句,ENDCASE;
其中WHEN条件选择值可以有四种表达方式;
(1)单个普通数值,形如WHEN选择值=顺序语句;
(2)并列数值,形如WHEN值/值/值=顺序语句;
(3)数值选择范围,形如WHEN值TO值=顺序语句;
(4)WHENOTHERS=顺序语句;
在VHDL中,并行语句在结构体中的执行是同时并发执行的,其书写次序与其执行顺序并无关联,并行语句的执行顺序是由他们的触发事件来决定的。
我们知道,实际的硬件系统中很多操作都是并发的,因此在对系统进行模拟时就要把这些并发性体现出来,并行语句正是用来表示这种并发行为的。
在结构体语句中,并行语句的位置是:
ARCHITECTURE结构体名OF实体名IS说明语句BEGIN并行语句END结构体名;
4.2VHDL并行语句,其中并行语句主要有以下几种:
PROCESS-进程语句BLOCK-块语句CONCURRENTSIGNALASSIGNMENT-并行信号代入语句CONDITIONALSIGNALASSIGNMENT-条件信号代入语句SELECTIVESIGNALASSIGNMENT-选择信号代入语句CONCURRENTPROCEDURECALL-并行过程调用语句ASSERT-并行断言语句GENERIC-参数传递语句COMPONENT_INSTANT-元件例化语句GENERATE-生成语句并行描述语句语句可以是结构性的,也可以是行为性的。
下面对这些语句的应用加以介绍。
4.2.3并行信号代入语句信号代入语句有两种:
一种是在结构体中的进程内使用,此时它作为一种顺序语句出现;
另一种是在结构体的进程之外使用,此时它是一种并行语句,因此称之为并行信号代入语句。
并行信号代入语句的语法格式为:
信号量=敏感信号量表达式;
需要注意的是,一条信号代入语句与一个信号代入的进程语句是等价的,我们可以把一条信号代入语句改写成一个信号代入的进程语句。
从并行信号代入语句描述来看,当代入符号“=”右边的值发生任何变化时,信号代入语句的操作立即执行,将信号代入符号“=”右边的表达式代入给左边的信号量;
从进程语句的描述来看,当进程敏感信号表中的敏感信号量发生变化时,进程将被启动,顺序信号代入语句将被执行以完成信号的代入操作。
在VHDL中提供了三种并行信号代入语句:
并发信号代入语句条件信号代入语句选择信号代入语句,
(2)条件信号代入语句条件信号代入语句也是一种并发描述语句,它是一种根据不同条件将不同的表达式代入目的信号的语句。
条件信号代入语句的书写格式为:
目的信号=表达式1WHEN条件1ELSE表达式2WHEN条件2ELSE表达式2WHEN条件3ELSE表达式n-1WHEN条件ELSE表达式;
条件信号代入语句执行时要先进行条件判断,如果条件满足,就将条件前面的那个表达式的值代入目的信号;
如果不满足条件,就去判断下一个条件;
最后一个表达式没有条件,也就是说在前面的条件都不满足时,就将该表达式的值代入目的信号。
(3)选择信号代入语句选择信号代入语句的书写格式为:
WITH表达式SELECT目的信号=表达式1WHEN条件1;
表达式2WHEN条件2;
表达式3WHEN条件3;
表达式nWHEN条件n;
VHDL在执行选择信号代入语句时,目的信号是根据表达式的当前值来进行表达式代入的。
当表达式的值符合某个条件时,就把该条件前的表达式代入目的信号;
当表达式的值不符合条件时,语句就继续向下判断,直到找到满足的条件为止。
选择信号代入语句与case语句相类似,都是对表达式进行测试,当表达式的值不同时,将把不同的表达式代入目的信号。
需要注意的是,选择