5VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
2.4VHDL电路设计
2.4.1设计电路优点
1.系统可大量采用芯片 2.采用系统前期仿真
3.降低了硬件电路设计难度.
2.4.2 设计电路方法
VHDL语言是一种可以描述硬件电路的功能,信号连接关系和定时关系的语言。利用硬件描述语言编程来表示逻辑器件与系统硬件的功能和行为,是该设计方法的一个重要特征。
采用自上而下(Top Down)的设计方法,就是从系统的总体要求出发,自上而下地逐步将设计内容细化,最后完成系统硬件的总体设计。
2.4.3 设计电路层次
第一层次是行为描述。实质上就是对整个系统的数学模型的描述(抽象程度高)。
第二层次是RTL方式描述,又称寄存器传输描述(数据流描述),以实现逻辑综合。
第三层次是逻辑综合,就是利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。在门电路级上再进行仿真,并检查定时关系。
2.4.4 完成硬件设计后的选择
1.由自动布线程序将网络表转换成相应的ASIC芯片制造工艺,作出ASIC芯片。
2.将网络表转换成FPGA编程代码,利用FPGA器件完成硬件电路设计。
2.4.5设计电路流程
规格设计 行为级描述 行为级仿真 RTL级描述
RTL级仿真 逻辑综合优化 门级仿真 定时检查 输出门级网表
2.5 VHDL与C语言的区别
VHDL,是硬件描述性语言。C语言,是软件编程语言。
从语言的基本语法方面来看,两种语言,有很多共同点。什么变量、
顺序、循环等语法方面都很多相同的地方。但是,如果你用C语言开发的思想来考虑VHDL语言的开发,就会报很多错。
VHDL的开发,不单单是软件的开发,它其实是硬件电路图的开发。
只不过它的实现方式是用软件,而不是硬件实物。在用VHDL语言开发的时候,脑子里要有一张电路图。而在一个process里面,只能有一个rising_edge。在多个process的通信中,同一个signal,不能同时做多个process里面的输出信号输入信号。(如果把process的处理想像成电路接线,你就会发现为什么会这样了。)
第三章 VHDL结构分析
3.1 VHDL语言设计的基本单元及其构成
一个完整的VHDL语言程序通常包含实体、构造体、配置、包集合和库。 实体 用于描述所设计的系统的外部接口信号;
构造体 用于描述系统内部的结构和行为;
包集合 存放各设计模块都能共享的数据类型、常数和子程序库; 配置 用于从库中选取所需单元来组成系统设计的不同版本; 库 存放已经编译的实体、构造体、包集合和配置。
3.1.1 实体
规定此实体输入与输出的数目与类型。 1.结构:
entity 实体名 is
[generic(类属参数说明)]; [port(端口说明)];
end 实体名; 2.类属参数说明:
generic (
常数名:数据类型 :=数值); 在端口说明前,用于指定参数。 3.端口说明:
在entity语句的实体说明部分,常用port语句描述实体对外界连接的端口(数目、方向和数据类型)。
port (
端口名:端口方向 端口数据类型; .
. .
端口名:端口方向 端口数据类型; );
4.端口方向:
in (输入),只能读,用于:时钟输入、控制输入(装入、复位、使能)、单向数据输入;
out (输出),只能被赋值,用于不能反馈的输出;
inout(输入输出) ,既可读又可被赋值,被读的值是端口输入值而不是被赋值,作为双向端口。 buffer(缓冲),类似于输出,但可以读,读的值是被赋值,用做内部反馈用,不能作为双向端口使用。
3.1.2 构造体
构造体定义实体功能的一种实现。 1.构造体的结构:
architecture 构造体名 of 实体名 is {块说明项} begin
{并发语句} end 构造体名;
块说明项(或定义语句),位于architecture 和begin之间,对构造体内部的使用信号、常数、数据类型和函数进行说明,包括:
1.使用语句 2.子程序说明 3.子程序体 4.类型说明 5.子类型说明 6.常数说明 7.信号说明 8.元件说明
并行语句处于begin 与end之间,描述构造体的行为与连接关系。 2.构造体的描述方法:
行为描述(按算法的路径来描述);
数据流描述或RTL描述(采用寄存器传输描述); 结构化描述(采用例化元件) 例化(instantiation ):在高层次的设计中调用低层次的实体作为元
件的过程。
3.1.3 包集合
包集合用于封装属于多个设计单元分享的公共信息。
包集合由包说明(说明数据类型、子程序和常量等)和包体(它
含有子程序体与现有的延时常数)所组成。子程序由执行公共操作的过程和函数组成。包集合是分享属于实体数据的一种机制,把子程序、数据类型和元件说明看成建立设计的工具,则包集合可看成工具箱。 包集合的结构:
package 包集合名 is [包集合说明语句]; end 包集合名;
package body 包集合名 is [包集合体说明语句]; end 包集合名;
注:包集合体为可选项。
3.1.4 配置
描述层与层之间的连接关系以及实体与构造体之间的连接关系。在仿真时利用配置选择不同的构造体。
格式:
CONFIGURATION 配置名 OF 实体名 IS
FOR 构造体名 END FOR;
END 配置名;
3.1.5 库
库(Library)是经编译后的数据的集合,库说明总是放在设计单元的最前面。 1.库的种类: 1.IEEE 库
包含:STD_LOGIC_1164 STD_LOGIC_ARITH STD_LOGIC_UNSIGNED 2.STD库
包含:STANDARD包集合 TEXTIO 包集合 TEXTIO 包集合使用例:
LIBRARY STD;
USE STD.TEXTIO. ALL; 3.ASIC矢量库
各公司提供的ASIC称逻辑门库 4.WORK 库
为现行作业库,存放设计者的VHDL语言程序 5.用户定义的库
用户为自身设计需要所开发的共用包集合和实体。 2.库的使用
除WORK、STD库外,首先要说明。格式: library [库名];
use [库名.包名.项目名]; 例:
library ieee;
use ieee.std_logic_1164.all; 3.库说明的作用范围:
从实体开始到其所属构造体、配置为止
3.2 VHDL语言的数据类型与运算操作符 3.2.1 VHDL语言的对象
VHDL语言中可以赋值的对象有3种:信号(Signal)、变量(Variable)、常数(Constant)。在数字电路设计中,这3种对象通常都具有一定的物理意义。例如,信号对应地代表电路设计中的某一条硬件连线;常数对应地代表数字电路中的电源和地等。当然,变量对应关系不太直接,通常只代表暂存某些值的载体。3类对象的含义和说明场合如表2-1所示。
表2-1 VHDL语言3种对象的含义和说明场合
对象类别 信 号 变 量 常 数
含 义 信号说明全局量 变量说明局部量 常数说明全局量 说 明 场 合 Architecture, package, entity Process, function, procedure 上面两种场合下,均可存在 3.2.2VHDL语言的数据类型
1.数据类型的种类
在VHDL语言中,信号、变量、常数都是需要指定数据类型的,VHDL提供的数据类型可归纳如下:
整数 实数 标量类型 枚举 物理 复合类型 数组 数据类型 记录 子类型 文件类型 在上述数据类型中,有标准的,也有用户自己定义的。当用户自己定义时,其具体的格寻址类型 式如下:
TYPE 数据类型名 数据类型的定义; 下面对常用的几种数据类型作一些说明。