目录
一.进程语句
1.进程(PROCESS)语句
是最具VHDL语言特色的语句,因为它提供了一种用算法(顺序语句)描述硬件行为的方法。进程实际上是用顺序语句描述的一种进行过程,也就是说,进程用于描述顺序事件。
一个结构体中可以有多个并行运行的进程结构,而每一个进程的内部结构却是由一系列顺序语句来构成的。
PROCESS结构中既可以有时序逻辑的描述,也可以有组合逻辑的描述,它们都可以用顺序语句来表达。
2.process语句格式
当进程中定义的任一敏感信号发生更新时,由顺序语句定义的行为就要重复执行一次。但当遇到WAIT语句时,执行过程将被有条件地终止,即所谓的挂起。
3.process语句组成
4.进程语句设计要点
(1)同一结构体中的进程之间是并行运行的,但同一进程中的逻辑描述语句则是顺序运行的。
(2)进程的激活必须由敏感信号表中定义的敏感信号的变化来启动,否则必须由一个显式的WAIT语句来激活。
(3)结构体中多个进程之所以能并行运行,一个很重要的原因就是进程之间的通信是通过传递信号和共享变量值来实现的。
(4)综合后对应于进程的硬件结构,对进程中的所有可读入信号都是敏感的,而在VHDL行为仿真中并非如此,除非将所有的读入信号列为敏感信号。
二.并行信号赋值语句
三种信号赋值语句的共同点:
赋值目标必须都是信号,所有并行赋值语句在结构体内的执行是同时发生的。
1.简单信号赋值语句
2.条件信号赋值语句
与IF语句的比较:
在结构体中的条件信号赋值语句的功能与在进程中的IF语句相同。
在执行条件信号赋值语句时,每一赋值条件是按书写的先后关系逐项测定的,一旦发现赋值条件为TRUE,就立即将表达式的值赋给赋值目标。
3.选择信号赋值语句
选择信号赋值语句与CASE语句的比较:
(1)选择信号赋值语句本身不能在进程中应用,但其功能却与进程中的CASE语句的功能相似。
CASE语句的执行依赖于进程中敏感信号的改变,而且要求CASE语句中各子句的条件不能有重叠,必须包容所有的条件。
(2)与CASE语句相类似,选择赋值语句对于子句条件选择值的测试具有同期性。因此,选择赋值语句不允许有条件重叠的现象,也不允许存在条件涵盖不全情况。
三.元件例化语句
1.元件例化的作用
元件例化,就是将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而构成一个新的更大的设计实体或电路系统。
在这里,当前设计实体相当于一个较大的电路系统,所定义的例化元件相当于一个要插在这个电路系统板上的芯片,而当前设计实体中指定的端口则相当于这块电路板上准备接受此芯片的一个插座。
2.元件例化种类
1.已设计好的一个VHDL设计实体;
2.来自FPGA元件库中的元件;
3.别的硬件描述语言(如Verilog)设计实体;
4.软的lP核;
5.FPGA中的嵌入式硬lP核。
3.元件例化的语句格式
元件定义语句
端口映射语句
元件例化的端口映射
在名字关联方式下,例化元件的端口名和关联(连接)符号“=>”两者都是必须存在的,而例化元件端口名与连接实体端口名的对应式,在PORT MAP句中的位置可以是任意的。在位置关联方式下,PORT MAP子句中只要按例化元件的端口定义顺序列出当前系统中的连接实体端口名就行了。
四.生成语句
1.生成语句的作用
为简化有规则设计结构的逻辑描述,可根据某些条件设定好某一元件或设计单位,利用生成语句复制一组完全相同的并行元件或设计单元电路结构。
2.生成语句格式
格式1:
该语句的作用,就是根据循环变量的取值范围,复制并行语句所对应的硬件电路N次。
循环变量是自动产生的,根据取值范围自动递增或递减。
从软件运行的角度看,FOR语句格式中循环变量的递增方式具有顺序性,但最后生成的设计结构却是完全并行的,这就是为什么必须用并行语句来作为生成设计单元的缘故。
格式2:
该语句的作用,就是根据生成语句的条件是否成立,决定是否复制并行语句所对应的硬件电路。
3.生成语句的组成
1.生成方式:有FOR语句结构或IF语句结构,用于规定并行语句的复制方式。
2.说明部分:对元件数据类型、子程序和数据对象作一些局部说明。
3.并行语句:生成语句结构中的并行语句是用来“COPY”的基本单元,主要包括元件、进程语句、并行过程调用语句、并行信号赋值语句甚至生成语句等。
4.标号:生成语句中的标号并不是必须的,但如果在嵌套生成语句结构中就是很重要的。
4.生成语句的使用
1.对于已知内部由多个规则模块构成的电路,可以用FOR_GENERATE语句来描述。
2.对于内部结构不规则的电路,可根据电路的不规则部分形成的条件用IF_GENERATE语句来描述。
3.对于内部由多个规则模块构成而两端结构不规则的电路,可以用FOR_GENERATE语句来描述电路内部的规则部分,而根据电路两端的不规则部分形成的条件用IF_GENERATE语句来描述。