0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >设计应用 > 嵌入式工程师用FPGA的原因及需要注意的方面

嵌入式工程师用FPGA的原因及需要注意的方面

2017-08-29
类别:设计应用
eye 213
文章创建人 拍明

  在一个领域中,如果唯一不变的是变化,那么不需要对电子技术和设计方法的发展变化做多少回顾,就能见证到变化是如何使设计工程师能够创建出下一代创新产品。微处理器得到大规模应用后,价廉物美的新技术为基于软件的革新性电子产品设计打开了大门,这就是一个很好的例子。简言之,把设计的主要元素——在这儿是控制“智能”——转入到软领域后,设计工程师就可以在更短时间内创建出更好、更智能、更廉价的产品。

  这个变化意味着嵌入式软件开发人员是当今定义电子产品功能和特性的主要推动者,并且最终将把硬件生产出来。该方法的成功因素在于减少硬件复杂度和把设计的控制元素转变到可编程领域带来的开放灵活性。

  今天,大容量、低成本可编程器件的到来给电子产品设计的发展带来了同样的希望,因为在软领域定义系统硬件本身已经成为可能。诸如大容量FPGA这样的大规模器件对满足这一需求十分理想。这些期间一般可用于构建系统外设逻辑功能块的大件部分,包括总线接口、I/O块、甚至内存。把大量逻辑引入FPGA领域对硬件开发具有深远影响,并为‘软’设计的新时代打开了一扇大门,这为设计提供了前所未有的灵活性,同时具有减少板级尺寸和复杂性的无穷潜力。

  虽然它具有对电子产品开发过程起到革命性作用的潜力,但多数嵌入式软件开发人员仍像以前一样工作——在设计流程的开始阶段选择分立的硬件处理器、创建物理平台,然后写软件使用该平台。人们在嵌入式系统开发的“软”硬件领域缺乏探索,主要原因在于缺少让C程序员在可编程硬件级发挥技巧的工具。确实,当前多数FPGA设计流主要都来自芯片设计领域,需要非常专业的技巧。


  把软设计提升一个水平


  要超越FPGA胶合逻辑应用需要更广阔的视野,包括充分利用可编程器件,把尽可能多的硬件引入到软领域中。这包括引入处理器功能本身,今天,FPGA内的软处理器正越来越多地转变成嵌入式平台。从根本上说,改用带FPGA的软处理器会带来结构灵活性、板卡尺寸更小、更简单的优点。但深层次的应用会带来更吸引人的优点。

  当利用了FPGA的可编程特性获得处理器顶层的抽象层时,就为嵌入式开发人员打开了无限可能,——不仅在软件中实现抽象级设计,而且在硬件中也实现了。试想这样一个系统:处理器通过可配置硬件(本质上是一个硬件包裹)与其内存和外设连接——这就抽象了处理器的接口。简单地对FPGA重新编程就改变了硬件包裹,系统设计师可以轻易地改变处理器内核,甚至在硬的或软的处理器之间转换,无需修改其他系统硬件。从系统的角度来看,所有处理器都是相似的,这就简化了硬件设计流程。当然,把这延伸到应用软件领域也需要可以在处理器之间提供C级别兼容性的编译器。

处理器.jpg

  这种系统的优点是不需要“事先”对处理器做出选择。系统可能是使用某种处理器开发的,但是开发阶段发现需要更高的性能,又采用了更快的器件。由于包裹层的原因,处理器可以是软的、硬的、甚至是FPGA内部的硬件处理器内核,而不会影响周围的硬件,因为转换层仅仅创建出连接外设的标准接口。实际上外设器件本身的连接可以相同方式抽象。在这个方案中,FPGA为嵌入式系统的所有部件提供通用的连接性,而有效地成为系统互连结构。换言之,它有效地成为标准接口“骨干”,硬件和软件都可以轻松与处理器和外设交流。

  最后,在处理器之上引入透明的包裹层会创建出基于FPGA的开发环境,提供真正的处理器独立性。软件和硬件开发速度都提高了,处理器选择可以放到设计流程的后期进行,有效的软件/硬件协同设计成为可能。


  软件和硬件间进行转换


  在可配置硬件中创建处理器和外设包裹层的想法的扩展就是自动生成应用专用的系统硬件,在硬件中执行软件算法——一种‘自己的’硬件协处理器。

  从C代码中直接生成硬件的想法并不新鲜,有几个系统已经实现,到现在为止的想法是希望通过C类语言创建完整的系统硬件。在本质上,这与使用HDL(如VHDL 或Verilog)设计FPGA没有什么不同,需要软件开发人员学习和采用新的设计方法。真正对嵌入式开发人员有用的是使流程透明。设计工具必须要能够处理标准 ANSI C代码的输入,把程序员选择的功能转换为硬件。不仅如此,系统必须要能够生成使用生成硬件所需的所有代码。嵌入式程序员以这种方式把专用算法从处理器卸载到专用硬件上,无需了解底层硬件的任何设计细节。


  利用FPGA的全部潜力


  很明显,从工具角度来说充分利用可编程器件(如FPGA)带来的机会需要一个提高开发流程抽象级别的系统,这样设计的核心元素可通过类似的设计技术和流程轻松改变。这样的系统必须能够统一整个电子产品开发过程,在单一、一致的环境中将硬件、软件和可编程硬件开发综合在一起。

  Altium Designer 引入简单、高层次的处理器实现这一目标,满足软件、FPGA和 PCB要求,一体化的产品开发环境在单一应用中把所有需要的流程综合在一起(图1)。硬件和软件开发统一在平台级 ,使快速软件/硬件协同设计成为可能。通过基于 FPGA的处理器和处理器包裹内核,设计师可以定位于Altium Designer 或任意受支持的第三方处理器,同时保留设计的全部功能,包括与 FPGA外设的方便连接。Altium Designer基于 Viper的编译器保证在系统支持的所有处理器结构间C级别代码的兼容性。


  FPGA设计需注意的方方面面


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

  I/O信号分配

  可提供最多的多功能引脚、I/O标准、端接方案和差分对的FPGA在信号分配方面也具有最复杂的设计指导原则。尽管Altera的FPGA器件没有设计指导原则(因为它实现起来比较容易),但赛灵思的FPGA设计指导原则却很复杂。但不管是哪一种情况,在为I/O引脚分配信号时,都有一些需要牢记的共同步骤:

  1. 使用一个电子数据表列出所有计划的信号分配,以及它们的重要属性,例如I/O标准、电压、需要的端接方法和相关的时钟。

  2. 检查制造商的块/区域兼容性准则。

  3. 考虑使用第二个电子数据表制订FPGA的布局,以确定哪些管脚是通用的、哪些是专用的、哪些支持差分信号对和全局及局部时钟、哪些需要参考电压。

I/O信号分配.jpg

  4. 利用以上两个电子数据表的信息和区域兼容性准则,先分配受限制程度最大的信号到引脚上,最后分配受限制最小的。例如,你可能需要先分配串行总线和时钟信号,因为它们通常只分配到一些特定引脚。

  5. 按照受限制程度重新分配信号总线。在这个阶段,可能需要仔细权衡同时开关输出(SSO)和不兼容I/O标准等设计问题,尤其是当你具有很多个高速输出或使用了好几个不同的I/O标准时。如果你的设计需要局部/区域时钟,你将可能需要使用高速总线附近的管脚,最好提前记住这个要求,以免最后无法为其安排最合适的引脚。如果某个特定块所选择的I/O标准需要参考电压信号,记住先不要分配这些引脚。差分信号的分配始终要先于单端信号。如果某个FPGA提供了片内端接,那么它也可能适用于其他兼容性规则。

  6. 在合适的地方分配剩余的信号。

  在这个阶段,考虑写一个只包含端口分配的HDL文件。然后通过使用供应商提供的工具或使用一个文本编辑器手动创建一个限制文件,为I/O标准和SSO等增加必要的支持信息。准备好这些基本文件后,你可以运行布局布线工具来确认是否忽视了一些准则或者做了一个错误的分配。

  这将使你在设计的初始阶段就和布局工程师一起工作,共同规划PCB的走线、冗余规划、散热问题和信号完整性。FPGA工具可能可以在这些方面提供帮助,并协助你解决这些问题,因此你必须确保了解你的工具包的功能。

  你咨询一位布局专家的时间越晚,你就越有可能需要去处理一些复杂的问题和设计反复,而这些可能可以通过一些前期分析加以避免。一旦你实现了满意的信号分配,你就要用限制文件锁定它们。


  信号完整性


  大多数先进FPGA能够处理速度为数百兆赫兹的并行总线和具有工作在千兆赫兹范围的串行接口。以这么快的速度工作时,你需要了解信号完整性的原理,因为高频信号的处理会给我们精确简单的数字世界带来一连串模拟设计问题。

  安排一些时间阅读FPGA供应商提供的文献。即使你对某个器件或者供应商的信息已经烂熟于心,也有必要参考其他供应商提供的文档,因为不同公司的文档往往有不同的见解。你将会发现在很多问题上不同的供应商拥有不同的观点,如什么会产生高速信号、切换信号之间可以存在多少时延而仍然可以认为它们是同时的等等。FPGA供应商的工具通常可以很好地执行一些基本的信号完整性分析,因此你必须完全了解你所获得的工具包的所有潜能。

  此外,目前市场上有几百种关于信号完整性和降噪的书。如果你是个新手或者需要一个进修课程,你可以考虑阅读Douglas Brooks编写的“信号完整性问题和PCB设计”。如果需要进行更深入的探讨,可以阅读Howard Johnson编写的“高速数字设计”。

  FPGA可能会由于太多的高速SSO而对系统中的信号(或其它FPGA信号)带来严重破坏,因为这会导致称为同时切换噪声(SSN)的噪声。SSN也叫做地反弹或VCC反弹,对于单端标准,SSN是在输出由低到高时提供瞬态电流和由高到低时吸收瞬态电流的过程中,由多个输出驱动器同时切换和导致器件电压与系统电压之间的变化而引起的。

  在高到低的转换引起地反弹时,由低到高转换也会导致VCC下降。由于电容通常安放在VCC和接地层之间,因此SSN典型地存在于这两个地方。由低到高转变时地反弹也有可能出现。 于是,SSO变成了干扰信号,它会产生可能耦合到邻近信号的噪声。对于某个区域而言太多SSO可能会导致电源的扰动。由于以下2个原因,SSO已经变成一个必须认真对待的问题:1. 切换时间大幅下降;2. 过孔尺寸和走线宽度的减小加上更大的板厚度已经推高了板极电感,这将大幅增加出现地反弹的可能性。更大的负载电容也可能导致SSN,虽然程度上会轻一点。当有效VCC低于期望值,从而导致I/O缓存的转换速度低于期望速度时,SSN也可能导致时序问题变得突出起来。

  有几个方法可以减小SSN。有些器件只需通过限制I/O标准的选择就可简化这个问题,但不是所有器件都能这么做。一些供应商建议将高速总线输出分布到整个裸片上,如果SSN是你唯一关注的问题,那么这绝对是一个很好的建议。不过,如果按照这个建议去做,有2个基本问题将会冒出来。

FPGA.jpg

  首先,这可能会带来下游布通性问题,因为将信号散布到整个裸片上经常会引起更多的走线交叉。而这就导致需要更多的信号布线层。其次,大多数设计在散布信号前也要求进行仔细研究,因为当一个总线散布到特定的块或区外时会引起块/区间的兼容性问题。因此,如果你能在考虑布通性的同时,小心地将一个较小的总线分布到一个或两个块/区域内,那么系统将会工作得很好。

  如果你被一个具有相邻高速切换输出的设计所困扰,有好几种技术能帮助你解决潜在的SSN问题。首先对你的设计进行合适的布局和去耦合。对于去耦合,使用距离尽可能近的电源和地平面对,中间用一个SMT电容隔开。使用SMT电容进行去耦合也有助于减小电感,而电感是产生系统噪声的一个主要因素。

  如果你仍然觉得需要使用去耦电容(为了减小SSN),应该使得这些电容的位置尽可能靠近高速输出引脚。Altera的一项研究发现,如果这些电容到引脚的距离大于1英寸,在使用适当的SMT电容去退耦时,这些电容变得效率极低。其他减小SSN或者其可能产生影响的建议包括:避免将敏感信号(复位、时钟和使能等)位于SSO附近;可能时,使用较小偏移的输出和使用最低电感的过孔;通过在合适位置插入延时使得输出信号交替出现。即使已经完成了PCB的生产,这个建议仍然可以应用。

  参考将被连接到FPGA上的器件的相关资料。对于每个器件,确定最大输入低电压门限(单位毫伏)。这是FPGA驱动该器件需要的最大电压,所以该设备仍然可以检测到一个有效逻辑低状态(最大VIL值)。同样,还要确定器件可以容忍且能继续工作的最大输入负脉冲信号(单位毫伏)。

  在某些情况下,最大容许的地反弹可能不是或者不仅是以上给出的值。而是要通过获得最大输入低电压门限的最小值、最大输入负脉冲信号、或者所有器件的最大地反弹来确定最大的系统地反弹。

  然后,根据具有相似负载特点的网络连接的数目和种类对类似的FPGA总线进行分组。接着研究每个部分、区域或者块的电源和接地引脚数目,还有对于所使用的每个I/O标准,每个电源和接地管脚对所允许的SSO数目。这些数目可以用于计算每个组的总电容负载和每个输出驱动的电容,以确定可以容忍的SSO最大值。

  你也应该咨询供应商以确定基于每个块和每一对块你是否超过了推荐的SSO数目,前提是供应商已经研究了这些问题。同时,因为有多个因素会导致SSN,所以最好建立一个具有内置抗噪声性能的鲁棒系统。否则,就使用针对每个引脚限制I/O标准的器件,这样就可以减少可能的SSN问题。

  差分信号

  在FPGA设计中,你可能会发现对差分信号的处理存在最多的争议。类似于SSN,最好从供应商、书籍和用户群获得尽可能多的信息。同时,在确定某个方案前咨询你的布局部门以了解他们推荐的建议和信息。

  主要争论开始于差分信号对是否应该采用宽边耦合还是边缘耦合,以及每对之间到底应该存在多少耦合。答案通常是“根据具体情况确定”,所以需要进行具体研究。

  如果你不能确定对于一个单端信号为什么需要选择差分I/O标准,答案很简单。使用差分信号,你几乎可以完全控制信号的回路。因为这是信号对的一部分,而且理论上在任何一个接地(或者电源)平面上不应该出现来自信号对的电流。

  这里假设走线对具有相等长度,布设在相邻区域且间距不变,走线阻抗恒定且匹配。此外,利用单端信号,你很难控制信号回程,而且测试一个信号的返回也可能徒劳无益。

  差分信号的主要缺点是他们需要两根走线彼此临近。当在一个PCB上分配几百个差分信号时这可能是个难点。但这是布线工程师的问题,不是吗?



责任编辑:Davia

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: FPGA 嵌入式

相关资讯