本文主要介绍fpga和cpld的原理和应用(cpld和fpga的中文意思),下面一起看看fpga和cpld的原理和应用(cpld和fpga的中文意思)相关资讯。
可编程逻辑器件(pld)起源于20世纪70年代,是在专用集成电路(asic)基础上发展起来的一种新型逻辑器件。它是当今数字系统设计的主要硬件平台,其主要特点是完全由用户通过软件进行配置和编程,从而完成一个特定的功能,并且可以反复擦除。在修改升级pld时,不需要更换pcb电路板,只需要在电脑上修改更新程序,使硬件设计工作变成了软件开发工作,缩短了系统设计周期,提高了实现的灵活性,降低了成本,因此赢得了广大硬件工程师的青睐,形成了巨大的pld产业规模。目前常见的pld产品有:可编程只读存储器(prom)、现场可编程逻辑阵列(fpla)、可编程阵列逻辑(pal)、通用阵列逻辑(gal)、可擦除可编程逻辑阵列(epla)、复杂可编程逻辑器件(cpld)和现场可编程门阵列(fpga)。pld器件可以细分为简单pld(spld)、复杂pld(cpld)和fpga。它们的内部结构以不同的实现。根据基本单元粒度,可编程逻辑器件可分为三类:
①粒度小(如 盖茨之海 建筑),
②中等粒度(如fpga),
③粒度大(如cpld)。
根据编程过程可分为四类:
(1)熔丝和反熔丝编程器件,
②可擦可编程只读存储器(ueprom)编程装置,
③可擦除电信号的可编程只读存储器(eeprom)编程器件(如cpld),④sram编程器件(如fpga)。
在工艺分类中,前三类是非易失性设备,编程后配置数据保留在设备上;第四类是易失性设备,掉电后配置数据会丢失,所以每次上电后都需要重新配置数据。
可编程逻辑器件的发展历史
可编程逻辑器件的发展可以分为四个阶段。第一阶段是70年代初至70年代中期,第二阶段是70年代中期至80年代中期,第三阶段是80年代至90年代末,第四阶段是90年代末至今。第一阶段的可编程器件只有三种:简单可编程只读存储器(prom)、紫外可擦除只读存储器(eprom)和电可擦除只读存储器(eeprom)。由于结构限制,它们只能执行简单的数字逻辑功能。第二阶段出现了结构稍复杂的可编程阵列逻辑(pal)和通用阵列逻辑(gal)器件,官方称为pld,可以进行各种逻辑运算。一个典型的pld由and和not数组组成,任意组合逻辑由and或or表达式实现,所以pld可以以积和的形式完成大量的逻辑组合。第三阶段,xilinx和altera分别推出了类似于标准门阵列的fpga和类似于pal结构的扩展cpld,提高了逻辑运算的速度,具有架构和逻辑单元灵活、集成度高、应用范围广的特点,兼容pld和通用门阵列的优势,能够实现超大规模电路和灵活的编程,成为产品原型设计和中小规模(一般小于10000)产品生产的首选。现阶段,cpld和fpga器件在制造工艺和产品性能上都有了很大的进步,达到了0.18工艺和百万系数门的规模。在第四阶段,出现了sopc和soc技术,它们是pld和asic技术融合的结果,涵盖了实时数字信号处理技术、高速数据收发器、复杂计算和嵌入式系统设计技术的所有内容。xilinx和altera也推出了相应的socfpga产品,制造工艺达到65道,系统门数超过百万。而且这一阶段的逻辑器件嵌入了硬核高速乘法器、gbits差分串行接口、时钟频率高达500mhz的powerpc微处理器、软核microblaze、picoblaze、nios和niosii,不仅实现了软件需求和硬件设计的完美结合,而且实现了高速性和灵活性的完美结合,已经超越了asic器件的性能和规模以及fpga的传统概念,使pld的应用范围从单芯片。目前,基于pld的片上可编程概念仍在进一步发展。
开发工具
高复杂度pld器件的开发很大程度上依赖于电子设计自动化(eda)。pld的eda工具主要是计算机软件,将典型的单元电路封装成固定的模块,形成标准的硬件开发语言(如hdl语言)供设计人员使用。设计者考虑如何构建可组装的软件库和软件包来满足需求。模块甚至完整的系统。pld开发软件需要自动完成特定目标芯片的逻辑编译、化简、分割、综合优化、布局布线、仿真、适配编译和程序下载。典型的eda工具必须包含两个特殊的软件包,即合成器和适配器。合成器的功能是针对给定的硬件系统组件,对设计者在eda平台上完成的系统项目的hdl、原理图或状态图进行编译、优化、变换和合成。随着开发规模的逐步增长,需要缩短pld开发软件的编译时间,提高其编译性能,并提供丰富的知识产权(ip)核心资源供设计人员调用。此外,pld开发界面的友好性和操作的复杂程度也是评价其性能的重要因素。目前在pld行业领域,各芯片供应商的pld开发工具已经成为影响其成败的核心部件。只有芯片技术领先,文档齐全,pld开发软件优秀,芯片提供商才能得到客户的认可。一个完美的pld开发软件应该具备以下五点:
将用户设计准确转化为电路模块,可以高效利用器件资源,快速完成编译综合,提供丰富的ip资源。cpld工作原理及介绍,用户界面友好,操作简单。
基于产品术语的pld结构
这种结构的pld芯片有:altera的max7000和max3000系列(eeprom技术),xilinx的xc9500系列(flash技术)以及lattice的大部分产品,cypress (eeprom技术)。
让 让我们来看看这个pld的整体结构(以max7000为例,其他型号的结构与此非常相似):
图1基于产品术语的pld内部结构
该pld可分为三种结构:宏单元(marocell)、可编程布线(pia)和i/o控制块。宏单元是pld的基本结构,实现基本的逻辑功能。图1中蓝色的部分是多个宏单元的集合(因为有很多宏单元,所以没有一一画出)。可编程连接负责信号传输和连接所有宏单元。i/o控制模块负责控制输入和输出的电气特性,例如设置集电极开路输出、转换速率控制和三态输出。图1左上角的输入/gclk1、输入/gclrn、输入/oe1和输入/oe2是全局时钟,用于清除和输出使能信号。这些信号通过专用线路与pld中的每个宏单元相连,信号到每个宏单元的延迟是相同的,并且延迟是最短的。
宏单元的具体结构见下图:
图2宏单元结构
左边是产品术语数组,实际上是and或数组。每一个交点都是一个可编程的保险丝,如果接通,就会实现and逻辑。。产品术语选择矩阵是一个or数组。它们共同完成了组合逻辑。图的右侧是一个可编程d触发器。其时钟和清零输入可通过编程选择。它可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(产品术语数组)产生的时钟和清零。如果你不 t不需要触发器,可以绕过这个触发器,信号直接输入到pia或者输出到i/o引脚。
产品术语结构的逻辑实现原理
让 下面以一个简单的电路为例,说明pld是如何利用上述结构实现逻辑的。电路如下:
图3
假设组合逻辑(and3)的输出是f,那么f=(a b)*c*!d)=a*c*!d b*c*!d(我们用!d代表 不 d)的
pld将以如下实现组合逻辑f:。
图4
a、b、c、d从pld芯片的管脚输入后进入pia,pia内部会产生8路输出:a、a、b、b、c、c、d、d,图中每个十字表示连接(可编程熔丝on),所以我们得到:f= f1 f2 = (a*c*!d) (b*c*!d)进行测试.这样就实现了组合逻辑。图3电路中d触发器的实现比较简单,直接用宏单元中的可编程d触发器实现。时钟信号clk从i/o引脚输入,然后进入芯片内部的全局时钟专用通道,该通道直接连接到可编程触发器的时钟端。可编程触发器的输出与i/o引脚相连,结果输出到芯片引脚。这样,pld就完成了图3所示电路的功能。(以上所有步骤均由软件自动完成,无需人工干预。)
图3的电路是一个非常简单的例子,只需一个宏单元即可完成。但是对于一个复杂的电路,一个宏单元可以 无法实现。此时需要通过并行扩展和共享扩展连接多个宏单元,宏单元的输出也可以连接到可编程布线阵列,然后作为另一个宏单元的输入。这样,pld可以实现更复杂的逻辑。
这种基于产品术语的pld基本都是用eeprom和flash技术制作的,一上电就能工作,不需要其他芯片的配合。
fpga的工作原理及介绍
如上所述,fpga是在pal、gal、epld、cpld等可编程器件基础上进一步发展的产物。它作为asic领域的半定制电路出现,既解决了定制电路的缺点,又克服了原可编程器件门电路有限的缺点。因为fpga需要反复烧,所以可以 不能像asic那样通过固定的与非门实现组合逻辑的基本结构,而只能采用易于重复配置的结构。查找表可以很好地满足这一要求。目前主流fpga采用基于sr的技术。am技术的查找表结构,一些军用和航天级fpga采用flash或fuse和反熔丝技术的查找表结构。通过烧写文件改变查找表的内容来实现fpga的重复配置。根据数字电路的基础知识,我们可以知道,一个n输入的逻辑运算,无论是与非运算还是异或运算,都只有2n种结果。因此,如果预先将相应的结果存储在一个存储单元中,就相当于实现了与非门电路的功能。fpga的原理也是如此,通过烧文件来配置查找表的内容,从而在相同的电路情况下实现不同的逻辑功能。查找表简称为lut,lut实质上是一个随机存取存储器。目前fpga中多采用4输入lut,所以每个lut都可以看作是一个有4位地址线的ram。当用户通过原理图或hdl语言描述一个逻辑电路时,pld/fpga开发软件会自动计算出该逻辑电路的所有可能结果,并事先将真值表(即结果)写入ram,这样每输入一个信号进行逻辑运算,就相当于输入一个地址查表,找出该地址对应的内容,然后输出。下面以4and门电路为例,说明lut实现逻辑功能的原理。
举例:给出用lut实现四输入与门电路的真值表。
表11 4输入与门的真值表
可以看出,lut具有与逻辑电路相同的功能。事实上,lut的执行速度更快,规模更大。由于基于lut的fpga集成度高,器件密度从几万到几千万门不等,可以完成极其复杂的时序和逻辑组合逻辑电路功能,因此适用于高速、高密度的高端数字逻辑电路设计。其主要部件有可编程输入/输出单元、基本可编程逻辑单元、嵌入式sram、丰富的布线资源、底层嵌入式功能单元、嵌入式专用单元等。主要设计和厂商有xilinx,altera,lattice,actel,atmel,quicklogic,其中xilinx,altera,lattice最大。如上所述,fpga的工作状态是由存储在芯片中的ram设定的,所以工作时需要对片内ram进行编程。用户可以根据不同的配置模式采用不同的编程方法。fpga有以下配置模式:
并行模式:配置fpga与prom和flash并行;主从模式:一个prom配置多个fpga;串行模式:串行prom配置fpga;外设模式:fpga作为微处理器的外设,由微处理器编程。目前fpga市场份额最高的两家公司xilinx和altera生产的fpg是fpg。a基于sram技术,使用时需要外部片外存储器保存程序。上电时,fpga将外部存储器中的数据读入片内ram,经过配置后进入工作状态。电源故障后,fpga恢复空白,内部逻辑消失。这样一来,fpga不仅可以重复使用,还需要一个专门的fpga编程器,只需要一个通用的eprom和prom编程器即可。actel、quicklogic等公司也提供反熔丝技术fpga,只能下载一次。具有抗辐射、耐高低温、低功耗、高速等优点,广泛应用于军工产品和航空航天领域。但是这种fpga不能重复擦除,初期开发麻烦且昂贵。lattice是isp技术的发明者,在小规模pld应用上有一定的特色。早期的xilinx产品一般不涉及军事和航天市场,但目前q pror等很多产品都进入了这个领域。
fpga芯片结构
目前主流的fpga还是基于查表技术,已经远远超过上一版本的基本性能,集成了具有常用功能(如ram、时钟管理、dsp)的硬核(asic型)模块。如图11所示(注:图11只是示意图,实际上每个系列的fpga都有其对应的内部结构),fpga芯片主要由六部分组成,分别是:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入式块ram、丰富的布线资源、嵌入式底层功能单元和嵌入式专用硬件模块。
图11 fpga芯片的内部结构
每个模块的功能如下:1 .可编程输入/输出单元(iob)可编程输入/输出单元(简称i/o单元)是芯片与外部电路的接口,满足不同电气特性下驱动和匹配输入/输出信号的要求,其示意结构如图12所示。fpga中的i/o被分成组,每组可以独立支持不同的i/o标准。通过软件的灵活配置,可以适应不同的电气标准和i/o物理特性,调整驱动电流,改变上拉和下拉电阻。目前i/o口的频率越来越高,部分高端fpga通过ddr寄存器技术可以支持高达2gbps的数据速率。
图12典型iob内部结构示意图
外部输入信号可以通过iob模块的存储单元输入fpga,也可以直接输入fpga。当外部输入信号通过iob模块的存储单元输入fpga时,可以降低对其保持时间的要求,通常默认为0。为了管理和适应多种电气标准,fpga的iob被分成若干组,每组的接口标准由其接口电压vcco决定。银行只能有一种vcco,但是不同银行的vcco会不同。只有电气标准相同的端口才能连接在一起,相同的vcco电压是接口标准的基本条件。2.可配置逻辑块(clb)clb是fpga中的基本逻辑单元。clb的实际数量和特性因器件而异,但每个clb包含一个可配置的开关矩阵,它由4或6个输入、一些选择电路(多路复用器等)组成。)和人字拖。开关矩阵非常灵活,可以配置为处理组合逻辑、移位寄存器或ram。在xilinx公司的fpga器件中,clb由多个(通常是4或2个)相同的片和附加逻辑组成,如图13所示。每个clb模块不仅可以用来实现组合逻辑和时序逻辑,还可以配置成分布式ram和分布式rom。
图13典型clb结构示意图
切片是xilinx公司定义的基本逻辑单元,其内部结构如图14所示。一个切片由两个4输入函数组成,进位逻辑、算术逻辑、存储逻辑和函数多路复用器。算术逻辑包括一个异或门(xorg)和一个特殊的与门(multand)。一个异或门可以使一个片实现22位全加法运算,特殊的与门用来提高乘法器的效率。进位逻辑由专用进位信号和函数多路复用器(muxc)组成,用于实现快速算术加减法。4输入函数发生器用于实现4输入lut、分布式ram或16位移位寄存器(virtex5系列芯片片内两个输入函数为6输入,可实现6输入lut或64位移位寄存器);进位逻辑包括两个快速进位链,以提高clb模块的处理速度。
图14典型4输入切片结构示意图
3.数字时钟管理模块(dcm)业界大多数fpga都提供数字时钟管理(xilinx的所有fpga都有这个功能)。xilinx推出了最先进的fpga来提供数字时钟管理和锁相环锁定。锁相环锁定可以提供精确的时钟合成,减少抖动,实现滤波功能。4.嵌入式块ram(bram)大多数fpga都有嵌入式块ram,大大扩展了fpga的应用范围和灵活性。块ram可以配置为常见的存储结构,如单端口ram、双端口ram、内容地址存储器(cam)和fifo。ram和fifo是相对流行的概念,所以我赢了 这里就不赘述了。cam存储器在每个存储单元中都有一个比较逻辑,写入cam的数据会与存储单元中的每一个数据进行比较,所有与端口数据相同的数据的地址都会被返回,因此广泛应用于路由地址开关中。除了块ram,fpga中的lut还可以灵活配置成ram、rom、fifo等结构。在实际应用中,芯片内部块ram的数量也是选择芯片的重要因素。单片ram的容量为18k位,即位宽18位,深度1024。比特宽度和深度可以根据需要改变,但必须满足两个原则:一是修改后的容量(比特宽度和深度)不能大于18k比特;其次,最大位宽度不能超过36位。当然,多块ram可以级联形成更大的ram,只受芯片中ram的块数限制,不再受上述两个原则的束缚。5.丰富的布线资源连接着fpga中的所有单元,布线的长度和工艺决定了信号在布线上的驱动能力和传输速度。fpga芯片中有丰富的布线资源,根据工艺、长度、宽度、分布位置的不同分为四类。第一类是全局布线资源,用于芯片内部全局时钟和全局reset/set的布线;第二种是长线资源,用于完成芯片库之间高速信号和秒级全局时钟信号的布线;第三类是短期资源,用于完成基本逻辑单元之间的逻辑互联和布线;第四类是分布式布线资源,用于专有时钟、复位等控制信号线。在实践中,设计师不 t不需要直接选择布线资源,布局布线器可以根据输入逻辑网表的拓扑结构和约束自动选择布线资源来连接各个模块单元。本质上,布线资源的使用与设计结果之间有着密切而直接的关系。6.底层嵌入式功能单元的嵌入式功能模块主要指dll(延迟锁定环)、pll(锁相环)、dsp、cpu等软核。如今,随着嵌入式功能单元越来越多,单片fpga已经成为系统级设计工具,具备软硬件联合设计的能力,并逐渐过渡到soc平台。dll和pll的功能类似,可以高精度低抖动地完成倍频和分频,还可以完成占空比调整和相移。xilinx公司生产的芯片中集成了dll,altera公司的芯片中集成了pll,lattice公司的新芯片中集成了pll和dll。ip核生成的工具可以轻松管理和配置pll和dll。dll的结构如图15所示。
图15典型dll模块示意图
7.嵌入式专用硬核嵌入式专用硬核是指fpga具有强大处理能力的硬核,相当于asic电路。为了提高fpga的性能,芯片厂商在芯片内部集成了一些特殊的硬核。比如为了提高fpga的乘法速度。主流fpga中集成了专门的乘法器;为了适应通信总线和接口标准,许多高端fpga都集成了串行并行收发器(serdes),可以实现数十gbps的发送和接收速度。赛灵思 s的高端产品不仅集成了power pc系列cpu,还嵌入了dsp核心模块。相应的系统级设计工具有edk和platform studio,并据此提出了片上系统的概念。通过powerpc、miroblaze、picoblaze等平台,可以开发标准的dsp处理器和相关应用,达到soc开发的目的。
软核、硬核和实核的概念
ip(intelligent property)核是具有知识产权的集成电路核的总称。它是经过反复验证的具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺上。在soc阶段,ip核设计已经成为asic电路设计公司和fpga供应商的重要任务,也是他们实力的体现。对于fpga开发软件来说,它提供的ip核越多,就越方便用户设计,市场占有率就越高。目前,ip核已经成为系统设计的基本单位,并作为独立的设计成果进行交换、转让和出售。从ip核的提供来看,通常分为软核、硬核、实核三类。从完成ip核的成本来看,硬核成本最高;就灵活性而言,软核具有最高的可重用性。1.软核软核是指eda设计领域中综合前的寄存器传输级(rtl)模型;具体来说,fpga设计是指电路的硬件语言描述,包括逻辑描述、网表和帮助文档。软核只有在功能仿真、综合和布局之后才能使用。其优点是灵活性和可移植性高,允许用户自行配置;缺点是模块的可预测性低,后续设计有出错的可能,有一定的设计风险。软核是应用最广泛的ip核形式。2.实芯实芯是指eda设计领域中带有平面规划信息的网表;在fpga设计中,可以将其视为一个具有版图规划的软核,通常以rtl代码和相应的具体工艺网表的形式提供。rtl描述与用于综合优化设计的特定标准单元库相结合,形成门级网表,可被布局和布线工具使用。与软芯相比,实芯的设计灵活性略小,但其可靠性大大提高。目前实芯也是ip核的主流形式之一。3.硬核硬核是指eda设计领域中经过验证的设计版图;具体来说,在fpga设计中,是指布局和工艺固定的设计,已经过前端和后端验证,设计人员无法修改。这有两个原因。;不可修改:首先,每个模块的系统设计是不同的。时序要求非常严格,不允许打乱现有的物理布局;其次,保护知识产权的要求,设计师不允许对其进行任何修改。ip硬核can 不可修改,难以复用,只能用于一些特定的应用,应用范围较窄。
了解更多fpga和cpld的原理和应用(cpld和fpga的中文意思)相关内容请关注本站点。