1、第第1111章章 可编程逻辑器件及其开发工具可编程逻辑器件及其开发工具本章主要内容本章主要内容(1)可编程逻辑器件概述可编程逻辑器件概述(2)FPGA的工作原理与基本结构的工作原理与基本结构(3)FPGA的设计与开发的设计与开发11.1 可编程逻辑器件(可编程逻辑器件(PLD)概述)概述11.1.1 PLD的产生的产生n传统的硬件电路设计方法一般是先选用标准通用集成电路传统的硬件电路设计方法一般是先选用标准通用集成电路芯片,再由这些芯片芯片,再由这些芯片“自下而上自下而上”地构成电路、子系统和地构成电路、子系统和系统。系统。n采用这种设计方法,对系统进行设计并调试完毕后,所形采用这种设计方法,
2、对系统进行设计并调试完毕后,所形成的设计文件主要是由若干张电原理图构成的文件。设计成的设计文件主要是由若干张电原理图构成的文件。设计者在电原理图中详细标注各逻辑单元、器件名称及互相间者在电原理图中详细标注各逻辑单元、器件名称及互相间的连接关系。的连接关系。n这种设计文件是用户使用和维护系统的依据。对于大系统,这种设计文件是用户使用和维护系统的依据。对于大系统,由于电路系统十分复杂,所以其电原理图可能需要成千上由于电路系统十分复杂,所以其电原理图可能需要成千上万张,这给阅读、归档、修改和使用均带来极大的麻烦。万张,这给阅读、归档、修改和使用均带来极大的麻烦。n近年来发展起来的电子设计自动化近年来
3、发展起来的电子设计自动化EDA技术,采用技术,采用“自上自上而下而下”的设计方法来进行逻辑电路的设计。的设计方法来进行逻辑电路的设计。n在这种崭新的设计方法中,可以由用户对整个电路系统进在这种崭新的设计方法中,可以由用户对整个电路系统进行方案设计和功能划分,系统地关键电路由一片或几片专行方案设计和功能划分,系统地关键电路由一片或几片专用集成电路用集成电路ASIC构成。构成。nASIC的设计与制造,已不再完全由半导体厂家独立承担,的设计与制造,已不再完全由半导体厂家独立承担,用户本身就可以在自己的实验室里设计出合适的用户本身就可以在自己的实验室里设计出合适的ASIC器器件,并且可以立即投入实际使
4、用之中。件,并且可以立即投入实际使用之中。n这种电子技术设计领域中的重大变革,主要得益于可编程这种电子技术设计领域中的重大变革,主要得益于可编程逻辑器件逻辑器件PLD的产生与应用。的产生与应用。n采用采用PLD技术,用户利用专门的硬件描述语言,根据自己技术,用户利用专门的硬件描述语言,根据自己的应用需求来定义和构造逻辑电路,描述其逻辑功能,利的应用需求来定义和构造逻辑电路,描述其逻辑功能,利用用EDA工具软件,经过特定的编译或转换程序,生成相应工具软件,经过特定的编译或转换程序,生成相应的目标文件,再由编程器和下载电缆将设计文件配置到的目标文件,再由编程器和下载电缆将设计文件配置到PLD器件中
5、,即可得到满足用户要求的专用集成电路了。器件中,即可得到满足用户要求的专用集成电路了。nPLD的产生与应用,不仅简化了电路设计,降低了成本,的产生与应用,不仅简化了电路设计,降低了成本,提高了系统的可靠性,而且还有力地推动了数字电路设计提高了系统的可靠性,而且还有力地推动了数字电路设计方法的革新。方法的革新。11.1.2 PLD的发展的发展1.可编程只读存储器可编程只读存储器(PROM)2.可编程逻辑阵列可编程逻辑阵列(PLA)3可编程阵列逻辑可编程阵列逻辑(PAL)4通用阵列逻辑通用阵列逻辑(GAL)n上述上述PROM、PLA、PAL和和GAL器件结构简单,对开发软器件结构简单,对开发软件的
6、要求低,但它们的电路规模小,难以实现复杂的逻辑件的要求低,但它们的电路规模小,难以实现复杂的逻辑功能,所以均属简单可编程器件功能,所以均属简单可编程器件(SPLD)。n随着技术的发展,包括随着技术的发展,包括CPLD(Complex Programmable Logic Device)和和FPGA在内的复杂在内的复杂PLD器件迅速发展起来。器件迅速发展起来。5.现场可编程门阵列现场可编程门阵列(FPGA)n1985年,年,XiLinx公司推出世界上第一片现场可编程门阵列公司推出世界上第一片现场可编程门阵列FPGA。它是一种新型高密度的。它是一种新型高密度的PLD器件,采用器件,采用COMS-S
7、RAM工艺制作,其内部有许多独立的可编程逻辑模块工艺制作,其内部有许多独立的可编程逻辑模块(CLB)组成,逻辑模块之间可以灵活地至连起来。)组成,逻辑模块之间可以灵活地至连起来。nFPGA结构通常包括三种逻辑模块:结构通常包括三种逻辑模块:可编程逻辑模块可编程逻辑模块(CLB)、)、可编程输入可编程输入/输出模块输出模块(I/OB)和)和可编程连线可编程连线资源资源(PI)。)。n较复杂的较复杂的FPGA结构中还有其他一些功能模块。结构中还有其他一些功能模块。n CLB的功能很强,不仅能实现逻辑函数,还可以配置成移的功能很强,不仅能实现逻辑函数,还可以配置成移位寄存器或位寄存器或RAM等复杂形
8、式。等复杂形式。n 配置数据存放在片内的配置数据存放在片内的SRAM或者熔丝图上,基于或者熔丝图上,基于SRAM的的FPGA器件工作前需要从芯片外部加载配置数据。器件工作前需要从芯片外部加载配置数据。n加载的配置数据可以存储在片外的加载的配置数据可以存储在片外的E2PROM或者计算机上,或者计算机上,设计人员可以控制加载过程,在现场修改器件的逻辑功能,设计人员可以控制加载过程,在现场修改器件的逻辑功能,即所谓现场可编程。即所谓现场可编程。11.1.3 PLD的主要特点的主要特点1.高密度高密度 2.低功耗低功耗 3.高速度高速度4.高开发效率高开发效率n各种各种PLD均有相应开发工具软件给予支
9、持,电路设计人员均有相应开发工具软件给予支持,电路设计人员在很短的时间内就可以完成电路输入、编译、仿真、综合在很短的时间内就可以完成电路输入、编译、仿真、综合和配置(编程),直至最后芯片的制作,从根本上改变了和配置(编程),直至最后芯片的制作,从根本上改变了传统的电子电路设计方法。传统的电子电路设计方法。n另外,另外,PLD本身可以反复编程、擦除、从而使开发、设计本身可以反复编程、擦除、从而使开发、设计效率得到极大的提高。效率得到极大的提高。11.1.4 PLD的基本结构的基本结构n PLD的基本结构是由的基本结构是由“与阵列与阵列”、“或阵列或阵列”、输出缓、输出缓冲电路和输出电路冲电路和输
10、出电路构成,反馈信号通过内部反馈通道馈送构成,反馈信号通过内部反馈通道馈送到输入端,如图到输入端,如图11.1 所示。所示。n“与阵列与阵列”和和“或阵列或阵列”是是PLD电路的主体,电路的主体,“与阵列与阵列”用来产生乘积项,用来产生乘积项,“或阵列或阵列”用来产生乘积项之和。用来产生乘积项之和。n输入缓冲电路可以使输入信号具有足够的驱动能力,并产输入缓冲电路可以使输入信号具有足够的驱动能力,并产生输入变量的原变量和反变量。生输入变量的原变量和反变量。n根据电路功能的不同,根据电路功能的不同,PLD可以由可以由“或阵列或阵列”直接输出直接输出(组合电路方式),也可以通过触发器或寄存器输出(时
11、(组合电路方式),也可以通过触发器或寄存器输出(时序电路方式)。输出可以是高电平有效,也可以是低电平序电路方式)。输出可以是高电平有效,也可以是低电平有效,输出端通常都采用三态门结构。有效,输出端通常都采用三态门结构。11.1 PLD的结构框图的结构框图11.2 PGA的工作原理与基本结构的工作原理与基本结构11.2.1 FPGA的工作原理的工作原理n由于由于FPGA可以被反复擦写,因此它所实现的逻辑电路不可以被反复擦写,因此它所实现的逻辑电路不是通过固定门电路的连接来完成,而是采用一种易于反复是通过固定门电路的连接来完成,而是采用一种易于反复配置的结构,查找表可以很好地满足这一要求。配置的结
12、构,查找表可以很好地满足这一要求。n目前,主流目前,主流FPGA都采用了基于都采用了基于SRAM的查找表结构,也的查找表结构,也有一些高可靠性要求的有一些高可靠性要求的FPGA产品采用产品采用Flash或者熔丝工艺或者熔丝工艺的查找表结构。可通过擦写文件改变查找表内容的方法来的查找表结构。可通过擦写文件改变查找表内容的方法来实现对实现对FPGA的重复配置。的重复配置。n根据数字电路的基本原理,对于一个具有根据数字电路的基本原理,对于一个具有n个输入的逻辑个输入的逻辑运算,不管是与、或、非运算还是运算,不管是与、或、非运算还是“异或异或”运算,最多有运算,最多有2n中输出结果。所以,如果事先将输
13、入变量的所有取值可中输出结果。所以,如果事先将输入变量的所有取值可能及对应输出结果(即真值表)存放于一个能及对应输出结果(即真值表)存放于一个RAM存储器存储器中,然后通过查表来由输入找到对应的输出值,就相当于中,然后通过查表来由输入找到对应的输出值,就相当于实现了与真值表的内容相对应的逻辑电路的功能。实现了与真值表的内容相对应的逻辑电路的功能。nFPGA的基本原理就是如此,它通过擦写文件去配置查找的基本原理就是如此,它通过擦写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功表的内容,从而在相同的电路情况下实现了不同的逻辑功能。能。n查找表(查找表(Look-Up-Table)
14、简称简称LUT,LUT实际上就是一实际上就是一个个RAM。目前,。目前,FPGA中多数使用中多数使用4输入的输入的LUT,每一个,每一个LUT可以看成一个有可以看成一个有4位地址线的位地址线的161的的RAM。n当用户通过原理图或硬件描述语言当用户通过原理图或硬件描述语言HDL描述了一个逻辑电描述了一个逻辑电路以后,路以后,FPGA开发软件就会自动计算逻辑电路的所有可开发软件就会自动计算逻辑电路的所有可能结果,并把这些计算结果(即逻辑电路的真值表)事先能结果,并把这些计算结果(即逻辑电路的真值表)事先写入写入RAM中,这样,每输入一组逻辑值进行逻辑运算时,中,这样,每输入一组逻辑值进行逻辑运算
15、时,就等于输入一个地址进行查表,找到地址对应的内容后进就等于输入一个地址进行查表,找到地址对应的内容后进行输出即可。行输出即可。n基于基于SRAM结构的结构的FPGA在使用时需要外接一个片外存储在使用时需要外接一个片外存储器(常用器(常用E2PROM)来保存设计文件所生成的配置数据。)来保存设计文件所生成的配置数据。n上电时,上电时,FPGA将片外存储器中的数据读入片内将片外存储器中的数据读入片内RAM中,中,完成配置后进入工作状态;完成配置后进入工作状态;n掉电后,掉电后,FPGA恢复为白片,内部逻辑消失。这样,恢复为白片,内部逻辑消失。这样,FPGA可以反复擦写。这种特性非常易于实现设备功
16、能的可以反复擦写。这种特性非常易于实现设备功能的更新和升级。更新和升级。11.2.2 FPGA的基本结构的基本结构nFPGA的基本组成结构包括可编程输入的基本组成结构包括可编程输入/输出模块、可编程输出模块、可编程逻辑模块、可编程布线资源、内嵌块逻辑模块、可编程布线资源、内嵌块RAM、底层内嵌功、底层内嵌功能单元和内嵌专用硬件模块等,能单元和内嵌专用硬件模块等,如图如图11.2所示所示。图图11.2 FPGA的结构框图的结构框图1.可编程输入可编程输入/输出模块(输出模块(IOB)nIOB使使FPGA芯片与外界电路的接口部分,用于完成不同芯片与外界电路的接口部分,用于完成不同电路特性下对输入电
17、路特性下对输入/输出信号的驱动与配置要求。一种结输出信号的驱动与配置要求。一种结构比较简单的构比较简单的FPGA芯片(芯片(Xilinx 公司的公司的XC2064)的)的IOB结构如图结构如图11.3所示。所示。n由图可见,它由一个输出缓冲器、一个输入缓冲器、一个由图可见,它由一个输出缓冲器、一个输入缓冲器、一个D触发器和两个多路选择器(触发器和两个多路选择器(MUX1和和MUX2)组成。一)组成。一个个IOB与一个外部引脚相连,在与一个外部引脚相连,在IOB的控制下,外部引脚的控制下,外部引脚可以为输入、输出或者双向信号使用。可以为输入、输出或者双向信号使用。图图11.3 可编程输入可编程输
18、入/输出模块输出模块n每个每个IOB中含有一条可编程输入通道和一条可编程输出通中含有一条可编程输入通道和一条可编程输出通道。道。当多路选择器当多路选择器MUX1输出为高电平时输出为高电平时,输出缓冲器的,输出缓冲器的输出端处于高阻态,外部输出端处于高阻态,外部I/O引脚用作输入端,输入信号引脚用作输入端,输入信号经输入缓冲器转换为适合芯片内部工作的信号,同时,缓经输入缓冲器转换为适合芯片内部工作的信号,同时,缓冲后的输入信号被送到冲后的输入信号被送到D触发器的触发器的D输入端和多路选择器输入端和多路选择器MUX2的一个输入端。的一个输入端。n 用户可编程选择直接输入方式(即不经用户可编程选择直
19、接输入方式(即不经D触发器而直接触发器而直接送入送入MUX2)或者寄存器输入方式(即经)或者寄存器输入方式(即经D触发器寄存后触发器寄存后再送入再送入MUX2)。)。n当多路选择器当多路选择器MUX1输出为低电平时输出为低电平时,外部,外部I/O引脚作输引脚作输出端使用。出端使用。2.可编辑逻辑模块(可编辑逻辑模块(CLB)nCLB是可编辑逻辑的主体,以矩阵形式安排在器件中心,是可编辑逻辑的主体,以矩阵形式安排在器件中心,其实际数量和特性依器件不同而不同。其实际数量和特性依器件不同而不同。n每个每个CLB中包含组合逻辑电路、存储电路和由一些多路选中包含组合逻辑电路、存储电路和由一些多路选择器组
20、成的内部控制电路,外有择器组成的内部控制电路,外有4个通用输入端个通用输入端A、B、C、D,2个输出端个输出端X、Y和一个专用的时钟输入端和一个专用的时钟输入端K,如图如图11.4所示。所示。n组合逻辑电路部分可以根据需要将其编程为组合逻辑电路部分可以根据需要将其编程为3种不同的组种不同的组合逻辑形式,分别产生一个合逻辑形式,分别产生一个4输入变量的函数、两个输入变量的函数、两个3输入输入变量的函数和一个变量的函数和一个5输入变量的函数,输入变量可以来自输入变量的函数,输入变量可以来自CLB的的4个输入端,也可以来自个输入端,也可以来自CLB内部触发器的内部触发器的Q端输端输出,使整个控制逻辑
21、具有较强的灵活性。出,使整个控制逻辑具有较强的灵活性。图图11.4 FPGA(XC2064)的的CLB结构结构3.可编程布线资源(可编程布线资源(PI)nFPGA芯片内部有着丰富的布线资源。根据工艺、连线长芯片内部有着丰富的布线资源。根据工艺、连线长度、宽度和布线位置的不同而划分为度、宽度和布线位置的不同而划分为4种类型种类型。n第一类是全局布线资源第一类是全局布线资源,用于芯片内部全局时钟和全局复,用于芯片内部全局时钟和全局复位位/置位信号的布线;置位信号的布线;n第二类是长线资源第二类是长线资源,用于完成芯片中各模块间信号的长距,用于完成芯片中各模块间信号的长距离传输,或用于以最短路径将信
22、号传送到多个目的地的情离传输,或用于以最短路径将信号传送到多个目的地的情况;况;n第三类是短线资源第三类是短线资源,它具有连线短、延迟小的特点,例如,它具有连线短、延迟小的特点,例如CLB的输出的输出X与它上下相邻的与它上下相邻的CLB输入的连接;输入的连接;n第四类是分布式的布线资源第四类是分布式的布线资源,用于专有时钟、复位等控制,用于专有时钟、复位等控制信号线。信号线。n需要说明的是,在实际设计中,设计者并不需要直接选择需要说明的是,在实际设计中,设计者并不需要直接选择布线资源,布局布线器(软件)可自动地根据输入逻辑网布线资源,布局布线器(软件)可自动地根据输入逻辑网表的拓扑结构和约束条
23、件选择布线资源来连通各个模块单表的拓扑结构和约束条件选择布线资源来连通各个模块单元。元。4.内嵌块内嵌块RAM(BRAM)n目前大多数目前大多数FPGA都具有内嵌块都具有内嵌块RAM(BLOCK RAM),),这大大拓展了这大大拓展了FPGA的应用范围和灵活性。的应用范围和灵活性。FPGA内嵌的内嵌的块块RAM一般可以灵活地配置为单端口一般可以灵活地配置为单端口RAM、双端口、双端口RAM、内容地址存储器内容地址存储器CAM(Content Addressable Memory)和和FIFO等常用存储结构。等常用存储结构。n在在CAM存储器存储器内部的每个存储单元中都有一个比较逻辑,内部的每个
24、存储单元中都有一个比较逻辑,写入写入CAM中的数据会和其内部存储的每一个数据进行比中的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。这种较,并返回与端口数据相同的所有内部数据的地址。这种功能特性在路由的地址交换器中有广泛的应用。功能特性在路由的地址交换器中有广泛的应用。5.底层内嵌功能单元底层内嵌功能单元n底层内嵌功能单元指的是那些通用程度较高的嵌入式功能底层内嵌功能单元指的是那些通用程度较高的嵌入式功能模块,如模块,如DLL(Delay Locked Loop)、)、PLL(Phase Locked Loop)、DSP和和CPU等。等。n正是由于集成了丰富
25、的内嵌功能单元,才使正是由于集成了丰富的内嵌功能单元,才使FPGA能够满能够满足各种不同场合的需求。足各种不同场合的需求。nDLL和和PLL具有类似的功能,可以完成时钟高精度,低抖具有类似的功能,可以完成时钟高精度,低抖动的倍频和分频,以及占空比调整和移相等功能。动的倍频和分频,以及占空比调整和移相等功能。6.内嵌专用硬核内嵌专用硬核n内嵌专用硬核(内嵌专用硬核(Hard Core)是相对底层嵌入的软核而言)是相对底层嵌入的软核而言的。的。FPGA中处理能力强大的硬核,等效于中处理能力强大的硬核,等效于ASIC电路。电路。n为了提高为了提高FPGA的乘法速度,主流的的乘法速度,主流的FPGA都
26、集成了专用都集成了专用乘法器;乘法器;n为了适用通信总线与接口标准,很多高端的为了适用通信总线与接口标准,很多高端的FPGA内部都内部都集成了串并收发器(集成了串并收发器(SERDES),可以达到几十吉比特可以达到几十吉比特/秒秒(G bps)的收发速度。)的收发速度。11.2.3 IP核简介核简介nIP(Intelligent Property)核核是具有知识产权的集成电路芯是具有知识产权的集成电路芯核的总称,是经过反复验证的、具有特定功能的宏模块,核的总称,是经过反复验证的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。与芯片制造工艺无关,可以移植到不同的半导体工
27、艺中。n目前,目前,IP核已经变成系统设计的基本单元,并作为独立设核已经变成系统设计的基本单元,并作为独立设计成果被交换,转让和销售。计成果被交换,转让和销售。n从从IP核的提供方式上,通常将其分为核的提供方式上,通常将其分为软核、硬核和固核软核、硬核和固核三三种类型。从完成种类型。从完成IP核所花费的成本来讲,硬核代价最大;核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用性最高。从使用灵活性来讲,软核的可复用性最高。1.软核软核n在在EDA设计领域中,软核指的是综合(设计领域中,软核指的是综合(Synthesis)之前的)之前的寄存器传输级(寄存器传输级(RTL)模型。)模型
28、。n具体在具体在FPGA设计中,指的是对电路的硬件语言描述,包设计中,指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线后才能使用。其优点是灵活性需要经过综合以及布局布线后才能使用。其优点是灵活性高,可移植性强,允许用户自己配置。高,可移植性强,允许用户自己配置。n其缺点是对模块的可预测性较低,在后续设计中存在发生其缺点是对模块的可预测性较低,在后续设计中存在发生错误的可能性,存在一定的设计风险。软核是错误的可能性,存在一定的设计风险。软核是IP较应用最较应用最广泛的形式。广泛的形式。2.固
29、核固核n在在EDA设计领域中,固核指的是带有平面规划信息的网表。设计领域中,固核指的是带有平面规划信息的网表。具体在具体在FPGA设计中,可以看作带有布局规划的软核,通设计中,可以看作带有布局规划的软核,通常以常以RTL代码和对应具体工艺网表的混合形式提供。代码和对应具体工艺网表的混合形式提供。n将将RTL描述结合具体标准单元库进行综合优化设计,形成描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。门级网表,再通过布局布线工具即可使用。n与软核相比,固核的设计灵活性稍差,但在可预测性上有与软核相比,固核的设计灵活性稍差,但在可预测性上有较大提高。目前,固核也是较
30、大提高。目前,固核也是IP核的主流形成之一。核的主流形成之一。3.硬核硬核n在在EDA设计领域中,硬核指的是经过验证的设计版图。具设计领域中,硬核指的是经过验证的设计版图。具体在体在FPGA设计中,指布局和工艺固定、经过前端和后端设计中,指布局和工艺固定、经过前端和后端的设计,设计人员不能对其修改。的设计,设计人员不能对其修改。n硬核的这种不允许修改特点使其复用有一定困难,所以通硬核的这种不允许修改特点使其复用有一定困难,所以通常用于某些特定应用中,使用范围较窄。常用于某些特定应用中,使用范围较窄。11.3 FPGA的设计与开发11.3.1 FPGA的基本开发流程的基本开发流程nFPGA的基本
31、开发流程主要包括的基本开发流程主要包括设计输入设计输入(Design Entry)、)、仿真仿真(Simulation)、)、综合综合(Synthesize)、布)、布局布线(局布线(Place and Route)和)和下载编程下载编程等步骤。等步骤。nFPGA的一般开发流程如图的一般开发流程如图11.5所示。所示。图图11.5 FPGA的一般开发流程的一般开发流程1.1.设计输入设计输入n设计输入是将所设计的电路或系统以开发软件所要求的某设计输入是将所设计的电路或系统以开发软件所要求的某种形式表示出来,并输入给种形式表示出来,并输入给EDA工具的过程。工具的过程。n常用的方法有常用的方法有
32、硬件描述语言(硬件描述语言(HDL)输入方式和原理图输)输入方式和原理图输入方式入方式等。等。n原理图输入方式原理图输入方式在可编程器件发展的早期应用比较广泛,在可编程器件发展的早期应用比较广泛,它将所需要的器件从元件库中调出来,画出电路原理图,它将所需要的器件从元件库中调出来,画出电路原理图,完成输入过程。完成输入过程。n这种方法的优点是直观、便于理解、元器件资源丰富。但这种方法的优点是直观、便于理解、元器件资源丰富。但在大型设计中,这种方法的效率较低,且不易维护,不利在大型设计中,这种方法的效率较低,且不易维护,不利于模块构造和重用,更主要的缺点是可移植性差,当芯片于模块构造和重用,更主要
33、的缺点是可移植性差,当芯片升级后,所有的原理图都需要作一定的改动。升级后,所有的原理图都需要作一定的改动。n目前,在实际开发中应用最广的是目前,在实际开发中应用最广的是HDL语言输入法语言输入法,利用,利用文本(程序代码)描述设计,可以分为普通文本(程序代码)描述设计,可以分为普通HDL和行为和行为HDL。普通。普通HDL(如(如ABEL-HDL),支持逻辑方程、真),支持逻辑方程、真值表和状态图等表达方式,主要用于简单的小型设计;值表和状态图等表达方式,主要用于简单的小型设计;n在中、大型设计中,主要使用在中、大型设计中,主要使用行为行为HDL,如,如Verilog HDL和和VHDL,这两
34、种语言(普通,这两种语言(普通HDL和行为和行为HDL)的共同)的共同特点是语言与芯片工艺无关,利于自顶向下设计,便于模特点是语言与芯片工艺无关,利于自顶向下设计,便于模块的划分与移植,具有很强的逻辑描述功能,而且输入效块的划分与移植,具有很强的逻辑描述功能,而且输入效率很高。率很高。2.功能仿真功能仿真n功能仿真也称前仿真或行为仿真,是在综合之前对用户所功能仿真也称前仿真或行为仿真,是在综合之前对用户所设计的电路进行逻辑功能验证。这时的仿真没有时延信息,设计的电路进行逻辑功能验证。这时的仿真没有时延信息,仅对初步的功能进行检测。仅对初步的功能进行检测。n仿真前,需先利用波形编辑器建立波形文件
35、和测试向量仿真前,需先利用波形编辑器建立波形文件和测试向量(输入信号序列)。(输入信号序列)。n仿真结果将会生成报告文件和输出信号波形,从中可以观仿真结果将会生成报告文件和输出信号波形,从中可以观察各个节点信号的变化情况是否符合功能要求。如果发现察各个节点信号的变化情况是否符合功能要求。如果发现错误,则返回设计输入进行修改。错误,则返回设计输入进行修改。3.综合综合n综合就是将较高级抽象层次的描述转化成较低层次的描述。综合就是将较高级抽象层次的描述转化成较低层次的描述。它根据设计目标与要求(约束条件)优化所生成的逻辑连它根据设计目标与要求(约束条件)优化所生成的逻辑连接,使层次设计平面化,供接
36、,使层次设计平面化,供FPGA布局布线软件来实现。布局布线软件来实现。n具体而言,综合就是将具体而言,综合就是将HDL语言、原理图等设计输入翻译语言、原理图等设计输入翻译成由与门、或门、非门、成由与门、或门、非门、RAM、触发器等基本逻辑单元、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。组成的逻辑连接网表,而并非真实的门级电路。n真实、具体的门级电路需要利用真实、具体的门级电路需要利用FPGA制造商的布局布线制造商的布局布线功能,根据综合后生成的标准门级网表来产生。为了能够功能,根据综合后生成的标准门级网表来产生。为了能够转换成标准的门级网表,转换成标准的门级网表,HDL程序
37、的编写必须符合特定综程序的编写必须符合特定综合器所要求的风格。合器所要求的风格。4.实现与布局布线实现与布局布线n实现是将综合生成的逻辑连接网表适配到具体的实现是将综合生成的逻辑连接网表适配到具体的FPGA芯芯片上,布局布线是其中最重要过程。片上,布局布线是其中最重要过程。n布局将逻辑连接网表中的底层单元确定到芯片内部的合理布局将逻辑连接网表中的底层单元确定到芯片内部的合理位置上,并且要在速度最优和面积最优之间作出权衡和选位置上,并且要在速度最优和面积最优之间作出权衡和选择。择。n布线根据布局的拓扑结构、利用芯片内部的各种连线资源,布线根据布局的拓扑结构、利用芯片内部的各种连线资源,正确地连接
38、各个元件。由于正确地连接各个元件。由于FPGA的结构非常复杂,只有的结构非常复杂,只有FPGA芯片生产厂商才对芯片的结构最为了解,所以布局芯片生产厂商才对芯片的结构最为了解,所以布局布线必须选择开发商提供工具。布线必须选择开发商提供工具。5.时序仿真时序仿真n时序仿真也称时序仿真也称后仿真后仿真,是指将布局布线的时延信息反标注,是指将布局布线的时延信息反标注到设计网表中来检测有无时序违规现象。到设计网表中来检测有无时序违规现象。n由于时序仿真含有较为全面、精确的时延信息,所以能较由于时序仿真含有较为全面、精确的时延信息,所以能较好地反映芯片的实际工作情况。好地反映芯片的实际工作情况。n另外,通
39、过时序仿真,检查和清除电路中实际存在的冒险另外,通过时序仿真,检查和清除电路中实际存在的冒险现象是十分必要的。现象是十分必要的。6.下载编程与调试下载编程与调试n下载编程是将设计阶段所生成的位流文件装入到可编程器下载编程是将设计阶段所生成的位流文件装入到可编程器件中。通常,器件编程需要满足一定的条件,如编程电压、件中。通常,器件编程需要满足一定的条件,如编程电压、编程时序和编程算法等。编程时序和编程算法等。n 逻辑分析仪(逻辑分析仪(Logic Analyzer)是)是FPGA设计的常用调试设计的常用调试工具,但需引出大量的测试管脚,且设备的价格较贵。工具,但需引出大量的测试管脚,且设备的价格
40、较贵。n主流的主流的FPGA芯片厂商都提供了内嵌的在线逻辑分析仪来芯片厂商都提供了内嵌的在线逻辑分析仪来解决上述矛盾,它们只占用芯片的少量逻辑资源,具有很解决上述矛盾,它们只占用芯片的少量逻辑资源,具有很高的使用价值。高的使用价值。11.3.2 FPGA/CPLD 开发工具开发工具MAX+Plus II简介简介n MAX+Plus 集设计输入、编译、仿真、综合、编程(配集设计输入、编译、仿真、综合、编程(配置)于一体,带有丰富的设计库,并有较详细的联机帮助置)于一体,带有丰富的设计库,并有较详细的联机帮助功能的可编程器件开发环境。功能的可编程器件开发环境。n下面分别以下面分别以原理图输入方式原
41、理图输入方式和和VHDL语言输入方式语言输入方式设计为设计为例,具体介绍利用例,具体介绍利用MAX+Plus II进行可编程逻辑器件设计进行可编程逻辑器件设计的详细过程。的详细过程。1.原理图文方式原理图文方式n首先需启动首先需启动MAX+Plus II,启动后先出现的是,启动后先出现的是MAX+Plus II管理器窗口,如图管理器窗口,如图11.6所示。所示。n一个新项目(一个新项目(Project)设计的第一步是为项目)设计的第一步是为项目指定一个名指定一个名称称,以便管理属于该项目的数据和文件。,以便管理属于该项目的数据和文件。图图11.6 MAX+Pluss II 管理器窗口管理器窗口
42、n指 定 项 目 名 称 的 方 法 是:在 管 理 器 窗 口 点 击指 定 项 目 名 称 的 方 法 是:在 管 理 器 窗 口 点 击FileProjectName,弹出,弹出Project Name对话框,在对话框,在Project Name对话框中选择适当的驱动器和目录,键入项对话框中选择适当的驱动器和目录,键入项目名称(例如目名称(例如add1),单击),单击OK按钮,按钮,如图如图11.7所示所示。11.7 项目命名窗口项目命名窗口n在在MAX+Plus II中,用户的每个独立设计都对应一个项目,中,用户的每个独立设计都对应一个项目,每个项目可包含一个或多个设计文件。每个项目可
43、包含一个或多个设计文件。n这些文件中必须包含一个顶层文件,而且顶层文件名必须这些文件中必须包含一个顶层文件,而且顶层文件名必须和项目名相同。和项目名相同。n项目的文件中还包括编译过程中产生的各种中间文件,这项目的文件中还包括编译过程中产生的各种中间文件,这些文件的后缀有所不同,如些文件的后缀有所不同,如hif、cnf、mmf等。等。(1)建立原理图输入文件)建立原理图输入文件打开原理图编辑器。打开原理图编辑器。在管理器窗口中点击在管理器窗口中点击FileNew或在工具栏上直接点击相或在工具栏上直接点击相应按钮,将出现应按钮,将出现如图如图11.8所示所示的新建文件夹对话框。的新建文件夹对话框。
44、在该对话框中选择在该对话框中选择Graphic Editor File(后缀为(后缀为.gdf)项,)项,然后点击然后点击OK按钮,便会出现一个原理图编辑窗口,此时按钮,便会出现一个原理图编辑窗口,此时即可输入原理图文件。即可输入原理图文件。输入完后点击输入完后点击FileSave as,则会出现,则会出现如图如图11.9所示所示的对的对话窗口。话窗口。图图11.8 新建文件对话框新建文件对话框 图图11.9 保存图形输入文件保存图形输入文件注意,这里将文件名保存为注意,这里将文件名保存为add1,与项目名字相同,点击,与项目名字相同,点击OK按钮结束。按钮结束。输入元器件和模块。输入元器件和
45、模块。在原理图编辑窗口空白处双击鼠标左键或在在原理图编辑窗口空白处双击鼠标左键或在Symbol菜单菜单中选择中选择Enter Symbol,便弹出,便弹出Enter Symbol对话框,对话框,如图如图11.10所示。所示。在在Symbol Libraries框中双击所需的库名,接着框中双击所需的库名,接着在在Symbol Files框中点击所选器件名(例如框中点击所选器件名(例如Prim库中的库中的and2、mf库中的库中的74138等)等),然后点击然后点击OK按钮。按钮。重复这一步,直至选中所需的全部器件。相同的模块也可重复这一步,直至选中所需的全部器件。相同的模块也可用复制的方法产生。
46、还可用鼠标左键选中器件并按住左键用复制的方法产生。还可用鼠标左键选中器件并按住左键拖动,将元器件拖动到适当的位置。拖动,将元器件拖动到适当的位置。图图11.10 元器件选择对话框元器件选择对话框nEnter Symbol对话框中的符号库位于对话框中的符号库位于Maxplus2目录下的目录下的Max2lib子目录中,子目录中,4种不同的符号库分别为基本逻辑器件种不同的符号库分别为基本逻辑器件库库Prim、74系列器件库系列器件库mf、基于网表、基于网表SNF的基本逻辑器的基本逻辑器件库件库edif和参数化的宏模块库和参数化的宏模块库mega_Lpm。n其中其中Prim库、库、mf库和库和edif
47、库中的元器件是固定不变的,选库中的元器件是固定不变的,选中后可直接使用。中后可直接使用。nmega_Lmp库中的模块称为参数化的宏模块,其信号及其库中的模块称为参数化的宏模块,其信号及其极性和位数需由用户根据需要设定后才能使用。极性和位数需由用户根据需要设定后才能使用。放置输入、输出引脚。放置输入、输出引脚。首先打开首先打开Enter Symbol对话框,然后在其中的对话框,然后在其中的Symbol Name框中键入框中键入input、output或或bidir,分别,分别代表输入、输代表输入、输出和双向出和双向I/O引脚引脚,点击,点击OK按钮,相应的输入或输出引脚按钮,相应的输入或输出引脚
48、就会出现在编辑窗口中。就会出现在编辑窗口中。重复这一步即可产生所有的输入和输出引脚,也可用复重复这一步即可产生所有的输入和输出引脚,也可用复制的方法得到所有引脚。制的方法得到所有引脚。n电源(电源(VCC)和地()和地(GND)与输入、输出引脚类似,也)与输入、输出引脚类似,也作为较特殊元件,采用上述方法在作为较特殊元件,采用上述方法在Symbol Name框中键入框中键入VCC或或GND,即可使它们出现在编辑窗口所选位置上。,即可使它们出现在编辑窗口所选位置上。连线。连线。将电路中两个端口(即连线端点)连接起来的方法为:将电路中两个端口(即连线端点)连接起来的方法为:将鼠标指向一个端口,鼠标
49、箭头会自动成将鼠标指向一个端口,鼠标箭头会自动成“”形状。形状。按住鼠标左键拖至另一端口,放开左键,则会在两个端口按住鼠标左键拖至另一端口,放开左键,则会在两个端口间产生一根连线。连线时若需转折,则在转折处松一下左间产生一根连线。连线时若需转折,则在转折处松一下左键,再按住继续移动至终点处。键,再按住继续移动至终点处。连线的粗细可通过单击右键菜单中的连线的粗细可通过单击右键菜单中的Line Style来选择,来选择,总线通常选用粗线来表示。总线通常选用粗线来表示。输入、输出引脚命名。输入、输出引脚命名。对输入、输出引脚命名的方法是在引脚对输入、输出引脚命名的方法是在引脚“PIN-NAME”位位
50、置双击,然后键入信号名。置双击,然后键入信号名。保存文件。保存文件。点击点击FileSave as或或Save,或在工具栏中单击相应按钮,或在工具栏中单击相应按钮,若是第一次保存,需输入文件名。若是第一次保存,需输入文件名。建立一个默认的符号文件。建立一个默认的符号文件。在层次化设计中,如果当前编辑的文件不是顶层文件,在层次化设计中,如果当前编辑的文件不是顶层文件,则往往需要为其产生一个符号,将其打包成一个模块,以则往往需要为其产生一个符号,将其打包成一个模块,以便在上层电路设计时加以引用。便在上层电路设计时加以引用。建立符号文件的方法是,在建立符号文件的方法是,在File菜单中选择菜单中选择
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。