fpga 基本概念

fpga 基本概念,第1张

简单说就是一个系统中(或系统中的一部分)都采用同一个时钟触发。系统中的(D)触发器全部都连接到一个时钟,而且只控制触发器的同步端(输入,同步置位,同步复位)。这样的系统是相对于异步系统而言的,异步系统并不是不同的触发器时钟端连接到不同的时钟信号的系统(一般的这样叫做跨时钟系统,是相对几个较小的同步系统的组合),而是更本没有了时钟的概念,依靠和触发器构造一样的反馈电路组成。相对于异步系统,同步系统更好设计(异步设计则象一个魔术,类似于汇编和高级语言的关系),更容易进行时序分析(为什么要用D触发器而不用D锁存器)——在这里组合逻辑的竞争冒险毛刺问题都不存在了。应该说,同步系统最大的问题在于时钟的偏斜(skew)。同步时钟系统也存在一些涉及的技巧,这些技巧一般围绕着降低关键路径的延时和时间和空间的平衡。这些都是平衡的艺术(了解了基本的部件之后,剩下的工作就是一个字"平衡",这里边的方法就太具体,而且本人也知道得不多,不敢乱说了。不过,只要你用过一种方法,就可以体会到其中的精神了。

8 X! ~# L1 L6 k: T g L

FPGA亚稳态

这是跨时钟设计中最基础的一个问题(宏观的问题是FIFO),按照我的观察,上论坛问问题多的一般不明白这个,请一定要注意了。 什么是亚稳态?数字电路中的简单双稳态电路就是两个反相器首尾相连组成(加一些控制逻辑变成了锁存器,触发器),然而并不像名字显示的,这种电路其实还有第三种半稳定态——就是当两个反相器都处于中间值得情况——这称之为亚稳态。我们知道反相器在非逻辑值范围的反馈系数是相当大的,一旦因为干扰或者噪音离开了这个中心点,就会很快地进入逻辑值范围(稳态)。数学分析,从亚稳态进入稳态,正如放射元素的衰变,是一个指数的规律(为什么是指数的规律?你要是想不明白,说明你还没有搞明白亚稳态)。那么,亚稳态的危害到底是什么呢?消耗功率;),其实不是(虽然亚稳态消耗很大的功率),亚稳态的问题在于其电平并不处于有效逻辑电平范围内,而且在变化。这就导致与其相连其他数字部件将其作出不同的判断(注意,不同),有的作为1,有的作为0,有的也进入了亚稳态,数字部件就会逻辑混乱。那么究竟如何避免(或者减小)亚稳态的危险呢?注意到亚稳态的触发器继续停留在亚稳态的几率按照指数减少,那么办法就是等 ——等足够长的时间,直到这个几率变得小的实际上不会发生。到底需要有多长呢?有的厂商有一个数据,有的没有,按照普通的做法,至少等一个时钟周期——这也就是所谓的异步数据要用两个触发器打一下。这一段有点糊涂,不容易说明白,你看了要是觉得云里雾里,不知所云,那们你只有找一本书学习了;

技巧 1:当驱动触发器的同步 SR端口时,每个时钟域都需要全局复位的局部版本, 并与该时钟域同步。

技巧 2:复位桥接电路实现了一种安全的机制,可以同步地对异步复位取消断言。使用复位桥接电路,每个时钟域都需要全局复位的局部版本。

技巧3:在对 FPGA 的全局复位取消断言之前,确保由 MMCM 或PLL 生成的时钟是稳定且被锁定的

技巧 4:高电平有效复位能够实现更高的器件利用率,并可改善性能

技巧 5:依靠 GSR 提供的内置初始化功能,同时对设计中能够自动启动的部分进行显式复位,这种综合法能够带来更高的利用率和性能。

潘文明至简设计法,是以发明者名字命名的FPGA设计方法,综合采用多种科学、严谨的方法,将整个设计过程规范化,实现“至简”设计。其专著《手把手教你FPGA》2017年由北京航天航空出版社出版。该设计方法具备下列特征:

1、 至简化。包括三个至简:设计过程至简、设计结果至简和学习方法至简。设计过程至简是指:按规范化流程,建立了一套通用设计模板,学员只需按步骤做好填空,即可完成设计;设计结果至简是指:设计出的代码结构最清晰、无任何冗余、出错风险最低;学习方法至简是指:运用科学的方法将学习难度降到最低,即使没有基础的学员也能在短时间内掌握;

2、 实用性。至简设计法非常强调“来自实践,用于实践”。其方法来源于企业大型项目,如中国电子科技集团第七研究所、华为海思等一流企业的跳频-OFDM系统、超高速网络芯片、工业以太网相机等,是众多业内一流工程师的经验、技巧、方法的结晶。其效果在实际中得到充分验证。如刘晶、奚亮、李遂涛等学员毕业后,分别参与了2D至3D视频转换、网络1588时钟戳协议和WIFI芯片研发等大型项目。部分具有四、五年FPGA工作经验的工程师,初步了解到至简设计法的优越性后,也学习和使用,并运用到实际工作中;

3、 规范性。设计过程采用至简设计法独具特色的“八步法”,把FPGA设计步骤标准化,思路清晰,布局简洁,逻辑严谨,顺序流畅。所有项目只需要依据规范,按照标准化步骤进行,即可轻松完成;

4、 通用性。至简设计法不仅能完成一般设计项目,也能完成大型复杂项目,是一种通用的设计方法。该方法应用领域非常广泛,如通信、信号、图像、自动化领域等均适用;

5、 完整性。至简设计法不仅包括RTL级代码设计,还包括了功能文档规范、模块划分规范、架构设计规范、信号定义规范、验证规范等,是一个完整的设计体系;

6、 稳定性。至简设计法过程高效、质量可靠,规范化的设计可避免人为、突发性错误,极大地减少了中间仿真、调试步骤,熟练使用至简设计法,很容易得到0仿真0调试的设计;

7、 高效性。根据“二八法则”,即实际工作中,20%的知识完成了80%以上的设计,至简设计法强调和专注于核心知识的掌握,其他知识边实践边学习。抓住了核心要点,节省不必要的学习时间,因此学习效率非常高;

8、 实践性。练练练是至简设计法的学习理念,抛弃枯燥繁琐的泛理论部分,将实际案例以练习题形式来讲解、练习、验证,进而理解和消化理论知识,从一开始就开始进行项目设计,完全满足企业要求,实现零障碍上岗;

9、 自主性。至简设计法的学习过程采用导师一对一辅导模式,导师根据每位学员单独辅导、对结果严格把关,保证所有学员能完全掌握全部流程和知识,独立自主完成项目设计,绝不抛弃任何一个学员。

综上所述,“潘文明至简设计法”是完全从实践中高度提炼出来的完整设计体系,将FPGA设计规范和标准化,形成一整套通用、高效、实用、易学的设计方法。该方法把实际设计和学习方法全面“至简”化,因此不仅适用于FPGA从业人员,更是初学者不二选择。

ASIC全称: Application Specific Integrated Circuit

简介,定制,设计,成本评述, 简介 目前,在集成电路界ASIC被认为是一种为专门目的而设计的积体电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。 ASIC晶片 定制 ASIC分为全定制和半定制。全定制设计需要设计者完成所有电路的设计,因此需要大量人力物力,灵活性好但开发效率低下。如果设计较为理想,全定制能够比半定制的ASIC晶片运行速度更快。半定制使用库里的标准逻辑单元(Standard Cell),设计时可以从标准逻辑单元库中选择SSI(门电路)、MSI(如加法器、比较器等)、数据通路(如ALU、存储器、汇流排等)、存储器甚至系统级模组(如乘法器、微控制器等)和IP核,这些逻辑单元已经布局完毕,而且设计得较为可靠,设计者可以较方便地完成系统设计。 现代ASIC常包含整个32-bit处理器,类似ROM、RAM、EEPROM、Flash的存储单元和其他模组 这样的ASIC常被称为SoC(片上系统)。 FPGA是ASIC的近亲,一般通过原理图、VHDL对数字系统建模,运用EDA软体仿真、综合,生成基于一些标准库的网路表,配置到晶片即可使用。它与ASIC的区别是用户不需要介入晶片的布局布线和工艺问题,而且可以随时改变其逻辑功能,使用灵活。 设计 ASIC的设计方法和手段经历了几十年的发展演变,从最初的全手工设计发展到现在先进的可以全自动实现的过程。这也是近几十年来科学技术,尤其是电子信息技术发展的结果。从设计手段演变的过程划分,设计手段经历了手工设计、计算机辅助设计(ICCAD)、电子设计自动化EDA、电子系统设计自动化ESDA以及用户现场可程式器阶段。集成电路制作在只有几百微米厚的原形矽片上,每个矽片可以容纳数百甚至成千上万个管芯。集成电路中的电晶体和连线视其复杂程度可以由许多层构成,目前最复杂的工艺大约由6层位于矽片内部的扩散层或离子注入层,以及6层位于矽片表面的连线层组成。就设计方法而言,设计集成电路的方法可以分为全定制、半定制和可程式IC设计三种方式。 ASIC完备指南 全定制设计 全定制ASIC是利用集成电路的最基本设计方法(不使用现有库单元),对积体电路中所有的元器件进行精工细作的设计方法。全定制设计可以实现最小面积,最佳布线布局、最优功耗速度积,得到最好的电特性。该方法尤其适宜于模拟电路,数模混合电路以及对速度、功耗、管芯面积、其它器件特性(如线性度、对称性、电流容量、耐压等)有特殊要求的场合;或者在没有现成元件库的场合。特点:精工细作,设计要求高、周期长,设计成本昂贵。 由于单元库和功能模组电路越加成熟,全定制设计的方法渐渐被半定制方法所取代。在现在的IC设计中,整个电路均采用全定制设计的现象越来越少。全定制设计要求:全定制设计要考虑工艺条件,根据电路的复杂和难度决定器件工艺类型、布线层数、材料参数、工艺方法、极限参数、成品率等因素。需要经验和技巧,掌握各种设计规则和方法,一般由专业微电子IC设计人员完成;常规设计可以借鉴以往的设计,部分器件需要根据电特性单独设计;布局、布线、排版组合等均需要反复斟酌调整,按最佳尺寸、最合理布局、最短连线、最便捷引脚等设计原则设计版图。版图设计与工艺相关,要充分了解工艺规范,根据工艺参数和工艺要求合理设计版图和工艺。 半定制设计方法 半定制设计方法又分成基于标准单元的设计方法和基于门阵列的设计方法。 基于标准单元的设计方法是:将预先设计好的称为标准单元的逻辑单元,如与门,或门,多路开关,触发器等,按照某种特定的规则排列,与预先设计好的大型单元一起组成ASIC。基于标准单元的ASIC又称为CBIC(CellbasedIC)。 基于门阵列的设计方法是在预先制定的具有电晶体阵列的基片或母片上通过掩膜互连的方法完成专用积体电路设计。半定制相比于全定制,可以缩短开发周期,降低开发成本和风险。 1基于标准单元的设计方法 该方法采用预先设计好的称为标准单元的逻辑单元,如门电路、多路开关、触发器、时钟发生器等,将它们按照某种特定的规则排列成阵列,做成半导体门阵列母片或基片,然后根据电路功能和要求用掩膜版将所需的逻辑单元连线成所需的专用积体电路。 单元库中所有的标准单元均采用定制方法预先设计,如同搭积木或砌墙一样拼接起来,通常按照等高不等宽的原则排列,留出宽度可调的布线通道。CBIC的主要优、缺点:※用预先设计、预先测试、预定特性的标准单元库,省时、省钱、少风险地完成ASIC设计任务。※设计人员只需确定标准单元的布局以及CBIC中的互连。※标准单元可以置放于晶片的任何位置。※所有掩膜层是定制的;※可内嵌定制的功能单元;※制造周期较短,开发成本不是太高。※需要花钱购买或自己设计标准单元库;※要花较多的时间进行掩膜层的互连设计。 2基于门阵列的ASIC门阵列 是将电晶体作为最小单元重复排列组成基本阵列,做成半导体门阵列母片或基片,然后根据电路功能和要求用掩膜版将所需的逻辑单元连线成所需的专用积体电路。用门阵列设计的ASIC中,只有上面几层用作电晶体互连的金属层由设计人员用全定制掩膜方法确定,这类门阵列称为掩膜式门阵列MGA(maskedgatearray)。门阵列中的逻辑单元称为宏单元,其中每个逻辑单元的基本单元版图相同,只有单元内以及单元之间的互连是定制的。客户设计人员可以从门阵列单元库中选择预先设计和预定特性逻辑单元或宏单元,进行定制的互连设计。门阵列主要适合于开发周期短,低开发成本的小批量数字电路设计。 可程式器件的ASIC设计 可程式ASIC是专用集成电路发展的另一个有特色的分支,它主要利用可程式的积体电路如PROM,GAL,PLD,CPLD,FPGA等可程式电路或逻辑阵列编程,得到ASIC。其主要特点是直接提供软体设计编程,完成ASIC电路功能,不需要再通过积体电路工艺线加工。 可程式器件的ASIC设计种类较多,可以适应不同的需求。其中的PLD和FPGA是用得比较普遍得可程式器件。适合于短开发周期,有一定复杂性和电路规模的数字电路设计。尤其适合于从事电子系统设计的工程人员利用EDA工具进行ASIC设计。 成本评述 ASIC设计需要根据电路功能和性能要求,选择电路形式、器件结构、工艺方案和设计规则,尽量减小晶片面积、降低设计成本、缩短设计周期,最终设计出正确、合理的掩膜版图,通过制版和工艺流片得到所需的积体电路。 从经济学的角度看,ASIC的设计要求是在尽可能短的设计周期内,以最低的设计成本获得成功的ASIC产品。但是,由于ASIC的设计方法不同,其设计成本也不同。 全定制设计周期最长,设计成本贵,设计费用最高,适合于批量很大或者对产品成本不计较的场合。 半定制的设计成本低于全定制,但高于可程式ASIC,适合于有较大批量的ASIC设计。 用FPGA设计ASIC的设计成本最低,但晶片价格最高,适合于小批量ASIC产品。 现在的大部分ASIC设计都是以半定制和FPGA形式完成的。半定制和FPGA可程式ASIC设计的元件成本比较:CBIC元件成本IC价格的2-5倍。但是半定制ASIC必须以数量取胜,否者,其设计成本要远远大于FPGA的设计成本。ASIC设计生产不单单要考虑元件成本,ASIC元件的批量大小、生产周期的长短,产品利润、产品寿命等等因素,也是决定采取哪种设计方法、生产工艺和成本限制的重要因素。

目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简

单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。 FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。

CPLD与FPGA的关系

早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可以编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。 CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。 CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。一个因此有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。

编辑本段FPGA工作原理

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。

编辑本段FPGA的基本特点

1)采用FPGA设计ASIC电路(特定用途集成电路),用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和I/O引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

编辑本段FPGA配置模式

FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。 如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。 例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。 幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度地帮助系统设计工程师以更快、更高效的方式应用65nm FPGA器件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛。 最近FPGA的配置方式已经多元化!

编辑本段FPGA主要生产厂商

1、Altera 2、Xilinx 3、Actel 4、Lattice 其中Altera和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。

编辑本段FPGA设计的注意事项

不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。

编辑本段I/O信号分配

可提供最多的多功能引脚、I/O标准、端接方案和差分对的FPGA在信号分配方面也具有最复杂的设计指导原则。尽管Altera的FPGA器件没有设计指导原则(因为它实现起来比较容易),但赛灵思的FPGA设计指导原则却很复杂。但不管是哪一种情况,在为I/O引脚分配信号时,都有一些需要牢记的共同步骤: 1 使用一个电子数据表列出所有计划的信号分配,以及它们的重要属性,例如I/O标准、电压、需要的端接方法和相关的时钟。 2 检查制造商的块/区域兼容性准则。 3 考虑使用第二个电子数据表制订FPGA的布局,以确定哪些管脚是通用的、哪些是专用的、哪些支持差分信号对和全局及局部时钟、哪些需要参考电压。 4 利用以上两个电子数据表的信息和区域兼容性准则,先分配受限制程度最大的信号到引脚上,最后分配受限制最小的。例如,你可能需要先分配串行总线和时钟信号,因为它们通常只分配到一些特定引脚。 5 按照受限制程度重新分配信号总线。在这个阶段,可能需要仔细权衡同时开关输出(SSO)和不兼容I/O标准等设计问题,尤其是当你具有很多个高速输出或使用了好几个不同的I/O标准时。如果你的设计需要局部/区域时钟,你将可能需要使用高速总线附近的管脚,最好提前记住这个要求,以免最后无法为其安排最合适的引脚。如果某个特定块所选择的I/O标准需要参考电压信号,记住先不要分配这些引脚。差分信号的分配始终要先于单端信号。如果某个FPGA提供了片内端接,那么它也可能适用于其他兼容性规则。 6 在合适的地方分配剩余的信号。 在这个阶段,考虑写一个只包含端口分配的HDL文件。然后通过使用供应商提供的工具或使用一个文本编辑器手动创建一个限制文件,为I/O标准和SSO等增加必要的支持信息。准备好这些基本文件后,你可以运行布局布线工具来确认是否忽视了一些准则或者做了一个错误的分配。 这将使你在设计的初始阶段就和布局工程师一起工作,共同规划PCB的走线、冗余规划、散热问题和信号完整性。FPGA工具可能可以在这些方面提供帮助,并协助你解决这些问题,因此你必须确保了解你的工具包的功能。 你咨询一位布局专家的时间越晚,你就越有可能需要去处理一些复杂的问题和设计反复,而这些可能可以通过一些前期分析加以避免。一旦你实现了满意的信号分配,你就要用限制文件锁定它们。 ------------------- 基于CMOS的设计主要消耗三类功率:内部的(短路)、漏电的(静态的)以及开关的(电容)。当门电路瞬变时,VDD与地之间短路连接消耗内部功率。漏电功耗是CMOS工艺普遍存在的寄生效应引起的。而开关功耗则是自负载电容,放电造成的。开关功耗与短路功耗合在一起称为动态功耗。下面介绍降低静态功耗和动态功耗的设计技巧。

编辑本段降低静态功耗

简介

虽然静态电流与动态电流相比可以忽略不计,然而对电池供电的手持设备就显得十分重要,在设备通电而不工作时更是如此。静态电流的因素众多,包括处于没有完全关断或接通的状态下的I/O以及内部晶体管的工作电流、内部连线的电阻、输入与三态电驱动器上的拉或下拉电阻。在易失性技术中,保持编程信息也需一定的静态功率。抗熔断是一种非易失性技术,因此信息存储不消耗静态电流。

几种降低静态功耗的设计方法

•驱动输入应有充分的电压电平,因而所有晶体管都是完全通导或关闭的。 •由于I/O线上的上拉或下拉电阻要消耗一定的电流,因此尽量避免使用这些电阻。 •少用驱动电阻或双极晶体管,这些器件需维持一个恒定电流,从而增加了静态电流。 •将时钟引脚按参数表推荐条件连接至低电平。悬空的时钟输入会大大增加静态电流。 •在将设计划分为多个器件时,减少器件间I/O的使用。 eX器件LP方式引脚的使用 Actel eX系列设计了特殊的低功率“休眠”模式。在该引脚驱动至高电平800ns后,器件进入极低功率待机模式,待机电流小于100μA。在低功率模式下,所有I/O(除时钟输入外)都处于三态,而内核全部断电。由于内核被断电,触发器中存储的信息会丢失,在进入工作模式(在引脚驱动至低平200ms后)时,用户需再次对器件初始化。同样,用户也应关闭所有通过CLKA、CLKB以及HCLK输入的时钟。然而这些时钟并不处于三态,时钟就可进入器件,从而增加功耗,因此在低功率模式下,时钟输入必须处于逻辑0或逻辑1。 有时用户很难阻止时钟进入器件。在此场合,用户可使用与CLKA或CLKA相邻的正常输入引脚并在设计中加进CLKINT。这样,时钟将通过靠近时钟引脚的正常输入进入器件,再通过CLKINT向器件提供时钟资源。 采用这种输入电路后,由于常规I/O是三态的,因此用户不必担心时钟进入器件。当然,增加一级门电路会产生06ns的较大时钟延时,幸好这在多数低功率设计中是可以接受的。注意应将与CLKINT缓冲器相关的CLKA或CLKB引脚接地。 此外还要注意,CLKINT只可用作连线时钟,HCLK并不具备将内部走线网连接到HCLK的能力,因而HCLK资源不能被常规输入驱动。换句话说,如果使用LP引脚就不能使用HCLK;使用HCLK时就应在外部截断时钟信号。

编辑本段降低动态功耗

动态功耗是在时钟工作且输入正在开关时的功耗。对CMOS电路,动态功耗基本上确定了总功耗。动态功耗包括几个成分,主要是电容负载充电与放电(内部与I/O)以及短路电流。多数动态功率是内部或外部电容向器件充、放电消耗的。如果器件驱动多个I/O负载,大量的动态电流构成总功耗的主要部分。 对设计中给定的驱动器,动态功耗由下式计算 p=CL×V 2 DD×f 式中,CL是电容负载,VDD是电源电压,f则是开关频率。总功耗是每个驱动器功耗之总和。 由于VDD是固定的,降低内部功耗就要降低平均逻辑开关频率,减少每个时钟沿处的逻辑开关总数、减少连线网络,特别是高频信号连线网络中的电容值。对低功率设计,需要从系统至工艺的每个设计级别中采取相应预防措施,级别越高,效果越好。

编辑本段FPGA与CPLD的辨别和分类

FPGA与CPLD的辨别和分类主要是根据其结构特点和工作原理。通常的分类方法是: 将以乘积项结构方式构成逻辑行为的器件称为CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。 将以查表法结构方式构成逻辑行为的器件称为FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等。 尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点: ①CPLD更适合完成各种算法和组合逻辑,FP GA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。 ②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。 ③在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FP GA可在逻辑门下编程,而CPLD是在逻辑块下编程。 ④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。 ⑤CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。 ⑥CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。 ⑦在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。 ⑧CPLD保密性好,FPGA保密性差。 ⑨一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。

编辑本段FPGA的应用

1.电路设计中FPGA的应用

连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石.事实上在电路设计中应用FPGA的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术,新产品的开发成功的产品将变成市场主流基础产品供产品设计者应用在不远的将来,通用和专用IP的设计将成为一个热门行业!搞电路设计的前提是必须要具备一定的硬件知识.在这个层面,干重于学,当然,快速入门是很重要的,越好的位子越不等人电路开发是黄金饭碗.

2.产品设计

把相对成熟的技术应用到某些特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户接受的产品这方面主要是FPGA技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能,后者对价格敏感产品设计以实现产品功能为主要目的,FPGA技术是一个实现手段在这个领域,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计将是FPGA技术应用最广大的市场,具有极大的爆发性的需求空间产品设计对技术人员的要求比较高,路途也比较漫长不过现在整个行业正处在组建”首发团队”的状态,只要加入,前途光明产品设计是一种职业发展方向定位,不是简单的爱好就能做到的!产品设计领域会造就大量的企业和企业家,是一个近期的发展热点和机遇

3.系统级应用

系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用Xilinx V-4, V-5系列的FPGA,实现内嵌POWER PC CPU, 然后再配合各种外围功能,实现一个基本环境,在这个平台上跑LINUX等系统这个系统也就支持各种标准外设和功能接口(如图象接口)了这对于快速构成FPGA大型系统来讲是很有帮助的。这种”山寨”味很浓的系统早期优势不一定很明显,类似ARM系统的境况但若能慢慢发挥出FPGA的优势,逐渐实现一些特色系统也是一种发展方向。若在系统级应用中,开发人员不具备系统的扩充开发能力,只是搞搞编程是没什么意义的,当然设备驱动程序的开发是另一种情况,搞系统级应用看似起点高,但不具备深层开发能力,很可能会变成爱好者,就如很多人会做网页但不能称做会编程类似以上是几点个人开发,希望能帮助想学FPGA但很茫然无措的人理一理思路。这是一个不错的行业,有很好的个人成功机会。但也肯定是一个竞争很激烈的行业,关键看的就是速度和深度当然还有市场适应能力。看看吧,不知道合不合适!

任何一个硬件工程师对FPGA都不会陌生,就好比C语言对于软件工程师来说是必修课程一样,只要是电子相关专业的学生,都要学习可编程逻辑这门课程。 FPGA的英文全称是Field Programmable Gate Array,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。

从表象看,Programmable这个单词确实能够很好的描述FPGA的特点,但这也使得很多初学者走了不少弯路。一说到编程,大家不免联想到 coding,因为软件编程的思想对工程师来说已经是根深蒂固了。因此,很多初学者都会问一个相同的问题,两种硬件编程语言VHDL和Verilog,应该学哪个?即使明确了要学习哪种设计语言,也会一头扎进浩瀚的语法中,走向歧途。有些初学者写了大量的代码,在Demo板上跑了n个试验,可还是觉得不懂 FPGA,甚至搞不清楚它和单片机的区别。这是为什么?其实,这都归结一个原因,就是被“可编程”这3个字给迷惑了,也就是说,没有弄清楚FPGA的本质是什么。因此,对于FPGA的学习也就不着法门,事倍功半,浪费了不少时间,却仍然达不到效果。

FPGA是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。因此,从底层来看,FPGA还是属于集成电路的范畴。就当前的技术而言,使用FPGA开发项目还是全部基于数字电路设计的,所以,FPGA的“可编程”也就是实现不同的数字电路逻辑。这与所谓的软件编程有着本质的区别!归根结底,FPGA设计就是电路设计,因此,对于每个FPGA工程师来说,在做设计时必须在脑中有电路的模样,这很重要!那么,到底该如何有效地学习FPGA呢?其实,很简单,只要从以下7点着手,循序渐进,日积月累,就完全能够对FPGA设计游刃有余。

1 首先,必须了解FPGA的结构和性能。不同厂家,不同系列的FPGA芯片都有不同的结构和性能,但是万变不离其中。刚开始,从掌握几款典型的高端芯片开始,例如Altera公司的Stratix III和Xilinx公司的Virtex 5。之后,再去了解其它系列的芯片就很容易了。至于Lattice和Actel公司的芯片,当使用时再了解也不迟,因为学习主流的东西才会更加有效!许多有关FPGA的教科书都会以几款常用的芯片为例,讲述FPGA的基本结构和原理。初学者看了后,总觉得过于抽象,有点不知所云的感觉。因此,为了深刻理解 FPGA,必须要有扎实的数字电路基础!在数字电路里,最基本的就是逻辑和时序。工程师必须明白FPGA内部逻辑结构和数字电路基本电路结构的关系。例如,任何4个输入信号的组合逻辑都可以通过FPGA提供的4输入LUT来实现。如果使用Xilinx的芯片,移位寄存器既可以通过多个触发器级联实现,也可以通过LUT来实现。通常,初学者可以设计出正确的逻辑,但却很容易忽略时序。在I/O口的设计中,与时序相关的缺陷对于产品是致命的,会影响产品的可靠性。因此,在掌握了结构后,还必须关注芯片的一些重要时序参数,例如I/O口时钟的建立时间、保持时间和从触发器到输出的延迟时间,以及芯片内部工作时钟的最高频率等等。只有充分掌握了所使用芯片的结构和性能,才能设计出一个合理的系统,才能保证FPGA的设计可靠稳定。FPGA厂商提供的大量文档是一个不错的学习资料。

2 FPGA既然是“可编程”,自然离不开编程语言。其实,早期的工程师大多使用原理图输入方式进行逻辑设计,这是一种更接近于电路设计的设计方式。这种设计方式对设计者要求较高,而且也不利于移植和维护,因此VHDL和Verilog才渐渐流行起来。这两种语言,无所谓孰优孰劣,只不过Verilog发展的比VHDL好,而且和将来可能一统天下的SystemVerilog比较接轨。它们都是硬件描述语言。既然叫硬件描述语言,自然是和软件世界里的编程不一样,所以,初学者不能把它当作软件编程语言来学习,否则就会舍本逐末。如果仅仅只是从事FPGA逻辑设计和做简单的功能仿真,只需学习最简单的语法就够了。那些用于写验证脚本的语法,完全不用学,基本用不上。语言仅仅只是一个工具,尤其在硬件设计里,代码写得漂不漂亮,并不重要,最关键的是设计思想。记住,FPGA工程师是在设计电路,而不是在“编程”!

3 很多工程师会谈到算法的重要性,认为必须懂得很多算法。没错,好的算法对于设计来说犹如利器一般。可是,研究算法和如何实现算法是两个不同的概念,研究算法是在做数学题,实现算法才是工程师的职责。这里并不是说FPGA工程师不用去研究算法,而是强调职责所在。不同的算法,我们对其原理的研究和理解的要求也是不同的。例如8B/10B编码,只要你懂得在哪里需要使用它就够了,现成的IP Core可以直接调用。但是,诸如FEC编解码这样的算法,则只有了解了基本原理后才可能懂得如何实现。对于算法,FPGA工程师的重点就是在于“如何实现”!。另外,算法之外,逻辑设计里常用的设计方法必须懂得,例如,乒乓操作、流水线设计和分时复用等等。还有常用的逻辑模块,如异步FIFO、状态机,这些其实都是数字电路里最基础的东西,但是对于初学者来说,在做FPGA设计时未必会正确的使用。

4 FPGA设计必须有一个好的设计流程来支撑。代码写完后,花大量时间做完善的功能仿真和验证是很有必要的。可是一些工程师并不重视仿真和验证,而是迫不及待的上板调试。碰到BUG后就在代码上修修补补,运气好的话,BUG表面上是解决了,可真正深层次的原因却未必发现,给产品留下了隐患。一个好的设计流程要求大多数BUG在前期工作中必须解决掉,功能仿真和验证则是一个很有效也很重要的步骤。除了仿真验证,综合和布线也必须重视,这要求我们必须仔细浏览编译报告和时序报告,因为,许多时序问题都能通过报告反映出来。有时候,一些工程师碰到时序问题,仅仅做时钟反相来调整数据和时钟的相位关系,或者修改综合和布线的参数,仍无法解决问题。尤其是在用了高速时钟的设计里,大多数情况,我们只有修改代码里的逻辑才能满足设计的时序要求。这些也只有仔细分析了报告后,才能对症下药。另外,对于大多数同步逻辑设计来说,时序仿真是没有必要的,这一步完全可以省略。

5 现阶段,FPGA发展的三大方向就是SOC,高速I/O和DSP。在有限的时间里,选择一个领域进行主攻是有必要的,只有明确了目标,才会更加投入。 SOC设计要求设计者对软件编程、CPU原理甚至是操作系统比较了解才行,因为SOC就是一个软硬件结合的系统。高速I/O设计则要求设计者掌握许多模拟电路的基本知识以及一些常用的通信协议,例如,SDH、GbE、PCI-E等等。FPGA在DSP领域的使用是近几年兴起的一个发展方向。FPGA由于其内在的并行特性,能以很高的效率实现DSP算法中计算量较大的模块,非常适合视频和图像处理等对DSP性能要求越来越高的新兴应用,设计者需要掌握数字信号处理常用算法。这3个方向完全不同,切勿囫囵吞枣,一切通吃!“术业有专功”,资深的高级工程师也很难在多个方向都取得成就。当然,若能在一个领域有较深的研究,同时,对另外两个领域也有一定的了解,那就更好了。

6 一个优秀的FPGA工程师,必须做到“一专多能”。所谓的“一专”当然是指在FPGA设计领域的专业深度,而“多能”则是要求工程师对其它专业领域也要有所了解和掌握。例如,对于设计一个SOC系统来说,C语言就必须学习,否则对于片上系统的架构就可能不合理。另外,对于设计高速I/O口的工程师来说,电路板原理设计和PCB设计则需要有所了解。只有掌握了预加重、均衡以及阻抗匹配等这些与模拟电路相关的概念,才可能在设计和调试中得心应手。

7 最后一点,也是最难的一点,这也是迈向高级工程师的关键,就是FPGA的设计需要一个好的系统架构方案和合理的模块化分。这有助于FPGA的调试和维护,也便于多人共同开发,尤其是在使用大规模FPGA时,这也就是常说的Top-Down设计方式。把一个庞大的、复杂的设计化分成若干个小模块,而且层次要分明,不能扁平化,这需要设计者对设计必须有全面深刻的理解。一个杂乱无序的设计对于后期的维护是灾难性的,尤其是对于接手者来说,若要修改某个逻辑,可以说是苦不堪言。从这一点看,初学者的问题都可以在这里找到答案。FPGA学什么?就是学习系统级的电路设计。所以,FPGA工程师的发展方向就是系统工程师。

以上7点若能有深刻理解,则就能看清FPGA的本质了。市场的瞬息变化,要求电子产品必须对市场具有高敏感性,产品从方案设计到市场投放的时间越来越短,FPGA在其中功不可没。另外,在面对Cost Down时,FPGA也起着不可或缺的作用。在当今时代,FPGA已经在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域得到了广泛应用。随着功耗和成本的进一步降低,FPGA还将进入更多的应用领域,相信FPGA工程师也必将会有一个更加广阔的施展空间。

推荐一本书《基于VHDL的FPGA开发快速入门·技巧·实例》

加油吧!

学习 FPGA 和电路板设计是一个很好的挑战,您可以遵循以下步骤来学习:

提高英语阅读水平:在阅读芯片数据手册方面,提高英语阅读能力是非常重要的。您可以尝试通过阅读简单的英文文章,参加英语学习课程等方式来提高自己的阅读能力。

了解 FPGA 和电路板设计的基础知识:首先了解 FPGA 的工作原理,电路板设计的方法和技巧。可以通过阅读有关 FPGA 和电路板设计的入门书籍或在线课程来学习。

实践:实际操作是学习 FPGA 和电路板设计的最佳方法。可以通过实验室实验,自己动手制作电路板等方式来实践。

书籍推荐:

"Digital Design and Computer Architecture" by Harris and Harris

"FPGA Prototyping by VHDL Examples" by Pong P Chu

"Circuit Design and Simulation with VHDL" by Volnei A Pedroni

希望这些建议对您有所帮助。努力学习!

《零基础学FPGA》电子书网盘下载免费在线阅读

链接:https://panbaiducom/s/1qSMQgfQw2UGgxRXGx3Ltrg

提取码:89z5

书名:零基础学FPGA

出版社:机械工业出版社

出版年份:2010-9

页数:346

内容简介:

《零基础学FPGA:基于Altera FPGA器件&Verilog HDL语言》以Altera公司的FPGA为样本,系统地介绍了FPGA的基本知识和相关软件的使用方法,重点讲述了VerilogHDL语言的编程特性、QuartusⅡ软件的使用技巧和Altera公司的高级软件工具,并给出了SDRAM综合设计实例。主要内容包括:FPGA的开发流程和开发工具,AlteraFPGA的硬件结构,VerilogHDL的基本知识,设计综合、优化和验证,基于AlteraFPGA的开发流程,基于QuartusII的时序约束与分析,基于ModelSim的仿真,VerilogHDL设计进阶,基于QuartusⅡ的设计优化,QuartusII的常用辅助设计工具,Altera其他高级工具和SRAM控制器设计等。

全书重点突出,层次分明,注重知识的系统性、针对性和先进性;注重理论与实践联系,培养工程应用能力。另外,《零基础学FPGA:基于Altera FPGA器件&Verilog HDL语言》配套光盘给出了书中的实例文件、开发过程的操作录像文件、常用元器件及芯片等丰富的拓展资源,极大地方便了读者自学,动手实践。

《零基础学FPGA:基于Altera FPGA器件&Verilog HDL语言》既可作为高等院校电子科学与技术、微电子学、集成电路设计与集成系统、电气工程及其自动化、自动化等专业的教材,也可作为相关领域工程技术人员、IC设计及嵌入式系统开发人员的参考书。

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/3995279.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-08
下一篇2024-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存