1、第11章 PLD及VHDL语言 随着电子技术的发展,日趋完善的ASIC(专用集成电路)技术使数字系统的设计可以直接面向用户需求,根据系统行为和功能要求,自上而下地完成描述、综合、优化和仿真,直接生成器件。由于任意一个组合逻辑都可以用“与-或”表达式来描述,因此出现了可编程逻辑器件(Programmabel Logic Device,简称PLD)。典型的PLD由一个“与”门阵列和一个“或”门阵列组成,能以乘积的形式完成大量的组合逻辑功能,但由于其结构过于简单,只能实现规模较小的电路。由于PLD只能实现规模较小的电路,为了弥补它的不足,Altera 和Xilinx分别推出了CPLD(Complex
2、 Programmabel Logic Device)和FPGA(Field Programmabel Gate Array)。它们都具有体系结构和逻辑单元灵活、集成度高及适用范围广等特点,兼容了PLD和通用门阵列的优点,可实现较大规模的电路设计以及实时在线检查和灵活编程。第11章 PLD及VHDL语言 常见的可编程逻辑器件有FPGA、CPLD、EPLD、GAL、PAL、PLA、和PROM等。从结构上可将其分为两大类:PLD:通过改变内部电路的逻辑功能来编程。FPGA:通过改变内部连线的布线来编程。从集成密度上又可以分成低密度可编程逻辑器件(LDPLD)和高密度可编程逻辑器件(HDPLD)。1
3、1.2 PLD11.2 PLD的设计步骤的设计步骤 通常情况下,PLD的设计包括以下步骤:(1)选择合适的语法类型;(2)创建源文件;(3)陈述方程式;(4)选择目标器件;(5)定义管脚;(6)编辑源文件。第11章 PLD及VHDL语言 11.3 VHDL11.3 VHDL语言简介语言简介 VHDL(VHSIC Hardware Decription Language)中VHSIC(Very High Speed Integrated Circuit)是电子设计自动化的关键技术之一,是要求用形式化方法来描述硬件系统。VHDL适应了这种要求。电子系统VHDL的设计描述等级分为以下四个等级:(1)
4、行为级(2)RTL级(Register transfer level)(3)逻辑门级(4)版图级第11章 PLD及VHDL语言VHDL描述硬件实体的结构如下图11-1所示。Entity(实体)Architecture 1(结构体)Architecture Nprocess(进程结构)block(块结 构)subprograms(子程序)procedure(过程)function(函数)图图11-1 VHDL11-1 VHDL描述硬件实体的结构描述硬件实体的结构第11章 PLD及VHDL语言 VHDL程序包括实体(Entity)、结构体(Architecture)、配置(Configuratio
5、n)、包集合(Package)和库(Library)五个部分。其中前4个部分是可分别编译的源设计单元。一个完整的VHDL设计项目至少包括一个实体和结构体的定义。实体用于描述设计系统的外部接口信号,结构体用于描述系统的行为、系统数据的流程或系统组织结构形式。设计实体是VHDL程序的基本单元,是电子系统的抽象。简单的实体可以是一个与门电路,复杂的实体可以是一个微处理器或一个数字系统。下面我们以半全加器的VHDL描述为例,介绍VHDL语言中的要素。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNE.ALL;第11章
6、PLD及VHDL语言ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder IS SIGNAL abc:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN abcso=0;coso=1;coso=1;coso=0;coNULL;END CASS;END PROCESS;END ARCHITECTURE fh1;第11章 PLD及VHDL语言 设计实体用ENTITY来标识,结构体由ARCHITECTURE来标识。系统设计中
7、的实体提供该设计系统的公共信息,结构体定义了各个模块的操作特性。一个设计实例必须包括一个结构体,也可以是多个结构体。1.实体实体作为一个设计实体的组成部分,其功能是对这个设计实体与外部电路进行接口描述,实体是设计体的表层设计单元,说明部分规定了设计单元的输入输出接口信号或引脚,它是设计实体对外的一个通信界面。实体的一般格式为:ENTITY 实体名 IS GENERIC(类型表);PORT(端口表);BEGIN实体语句部分;END ENTITY 实体名;第11章 PLD及VHDL语言2.端口说明端口说明是对设计实体与外部接口的描述,是设计实体和外部环境动态通信的通道,其功能对应于电路符号的引脚,
8、其中包括对每一接口的输入输出模式和数据类型的定义。端口说明的一般格式为:PORT(端口名:端口方向 数据类型;.端口名:端口方向 数据类型;)其中方向有:IN、OUT、INOUT、BUFFER和LINKAGE。IN 信号只能被引用,不能被赋值;OUT 信号只能被赋值,不能被引用;BUFFER 信号可以被引用;也可以被赋值。也就是说IN 不可以出现在=或 :=的左边;OUT不可以出现在=或 :=的右边;BUFFER可以出现在=或 :=的两边。第11章 PLD及VHDL语言例如:端口说明只是定义了实体的接口的输入输出模式和数据类型,其内部结构将由Architecture(结构体)来描述第11章 P
9、LD及VHDL语言3.结构体结构体是实体所定义的设计实体的一部分。结构体描述设计实体的内部结构和外部设计实体端口间的逻辑关系。结构体由以下部分组成:(1)对数据类型、常数、信号、子程序和元器件等元素的说明部分。(2)描述实体逻辑行为的、以各种不同的描述风格表达的功能描述语句。(3)以元器件例化语句为特征的外部元件端口间的连接。结构体的一般格式为:ARCHITECTURE 结构体名 OF 实体名 IS 定义语句,内部信号,常数,数据类型,函数定义 BEGIN 并行处理语句和block、process、function、procedureEND 结构体名;第11章 PLD及VHDL语言例如:4.4
10、.库 库是数据的集合。内含各类包定义、实体、构造体等。当您的VHDL文件被编译后,编译的结果储存在特定的目录下,这个目录的逻辑名称即Library,此目录下的内容亦即是这个Library的内容。STD库是VHDL的标准库。IEEE库是VHDL的标准库的扩展第11章 PLD及VHDL语言5.5.Package(包集合)Package属于库结构的一个层次,存放信号定义、常数定义、数据类型、元件语句、函数定义和过程定义。Package Body 具有独立对端口(port)的package。configuration(配置)描述层与层之间的连接关系以及实体与构造体之间关系。对于VHDL对象、操作符、数据类型以及顺序语句等,这里就不多介绍了。读者可以参考相关书籍进行学习。第11章 PLD及VHDL语言11.4 11.4 基于原理图的基于原理图的FPGAFPGA设计设计 CPLD和FPGA的原理图设计是常用的一种设计方法。原理图的输入可控性好,效率高,设计方法也有很多,例如基于VHDL语言的设计、基于C语言的设计等。下面我们以图11-1所示的7位汉明码纠错电路原理图为例介绍如何创建一个基于原理图的FPGA设计。具体操作步骤如下:第11章 PLD及VHDL语言