现场可编程逻辑系统的设计技巧_第1页
现场可编程逻辑系统的设计技巧_第2页
现场可编程逻辑系统的设计技巧_第3页
现场可编程逻辑系统的设计技巧_第4页
现场可编程逻辑系统的设计技巧_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5.1 同步电路设计技巧 FPGA具有丰富的触发器资源, 灵活、 低延时的多时钟资源和三态的总线结构资源, 有利于同步电路的设计实现。 同时, FPGA的也存在极大的弱点: 由内部逻辑实现中的布局布线的不确定性所带来的系统时延的不确定性。 因此, 特别是对于时延关系要求苛刻的异步电路, 用FPGA实现起来相对较困难。 5.1.1 同步电路与异步电路的基本概念 数字系统的电路通常由组合逻辑、 时序逻辑或者两者混合构成。 对于时序逻辑电路, 其基本结构如图 5 - 1所示。图 5 - 1 时序逻辑电路的结构框图 时序逻辑电路一般由组合逻辑、 存储器件和反馈网络3部分组成。 图5-1中, X1, ,

2、 Xn为时序逻辑电路的输入或称外部输入; Z1, , Zm 为时序电路的输出或称外部输出; y1, , yr为时序逻辑电路的状态或称内部输入; Y1, , Yr为时序逻辑电路的激励或称内部输出。 时序逻辑电路的组合逻辑只用来产生电路的输出和激励, 存储器部分是由其不同的状态(y1, , yr)来“记忆”电路过去的输入情况的。 其逻辑功能的函数一般表达为: Zi=gi(X1, , Xn, y1, , yr) i=1, , m (5.1) Yj=hj(X1, , Xn, y1, , yr) j=1, , r (5.2) 时序逻辑电路按其工作方式可分为同步时序逻辑和异步时序逻辑, 其结构如图 5 -

3、 2所示。 图 5 - 2 时序电路结构框图 (a) 同步时序逻辑电路; (b) 异步时序逻辑电路 其中, 同步时序逻辑电路中的存储元件为触发器, 而异步时序逻辑电路中的存储元件往往是延迟元件。 从图 5 - 2(a)中可见, 同步时序电路的存储元件由钟控触发器组成, 时钟脉冲信号加在每个触发器的时钟输入端。 只有当时钟信号到来时, 电路状态(y1, , yr)才能发生变化, 而且只改变1次。 如果时钟信号非有效, 即使输入发生变化, 电路的状态也不会改变。 通常将时钟到达之前的电路状态称为现态, 记作y(n); 将时钟到达之后的电路状态称为次态, 记为y(n+1)。 由于始终是时钟信号起着同

4、步作用, 故称此电路为同步时序逻辑电路。 从图 5 - 2(b)中可见, 异步时序电路的存储元件主要由延迟元件组成, 电路中不需要统一的时钟信号, 输入的变化有时将直接导致电路状态的变化。 时序逻辑电路的输入信号有脉冲形式和电平形式两种, 如图 5 - 3所示。 按照输入信号形式的不同, 时序逻辑电路又可分为脉冲型和电平型。 图 5 - 3 时序逻辑电路的输入信号波形 同步时序逻辑电路的行为虽然可以由式(5.1)和式(5.2)描述, 但从这些表达式中并不能清楚地了解其输入、 输出、 现态、 次态之间的转移关系。 在实际的电路设计和分析中, 我们通常采用所谓的状态表和状态图的方式。 最流行的两类

5、时序逻辑电路模型是Mealy模型和 Moore模型。 如第1章的图1-31和图1-32所示, 当电路的输出是输入和现态的函数, 即Zi=Fi(X1, , Xn, y1, , yr)(i=1, , m)时, 称作Mealy型电路; 同样, 当电路的输出信号是现态的函数, Zi=Fi(X , y1, , yr)(i=1, , m)时, 则称该电路为Moore型电路。 5.1.2 FPGA现场集成中常见的问题 对于时序逻辑的系统要求, 可以采用时序逻辑电路的形式去实现, 这可称作硬件解决方案; 也可以采用基本微控制器、 微处理中的内嵌微程序的时序操作形式来实现, 这常称作计算机型的解决方案。 两者在

6、设计方式以及逻辑实现的形式上, 都有着不同之处和相异的性能特点。 在采用FPGA这样已规范的可编程逻辑阵列和可编程连线的有限资源, 去实现不同功能的时序逻辑电路系统时, 如何把握随机的布局、 布线带来的时延对系统逻辑的影响, 如何避免局部逻辑资源时延特征和不同的时序电路形式的制约, 如何有效利用FPGA的特征逻辑结构去优化电路设计, 都是一个设计工程师在设计中必须考虑的问题。 在采用FPGA的数字时序逻辑的现场集成, 特别是对于同步电路的设计实现中, 我们常遇到的主要问题有以下几种。建立时间:在时钟跳变前数据必须保持稳定(无跳变)的时间。保持时间:在时钟跳变后数据必须保持稳定的时间。 如图5-

7、1所示。 每一种具有时钟和数据输入的同步数字电路都会在技术指标表中规定这两种时间。 图5-1 建立时间和保持时间 数据稳定传输必须满足建立和保持时间的要求, 否则输出数据就可能有错误, 或变得不稳定。 在FPGA设计中, 应对信号的建立和保持时间做充分考虑, 尽量避免在数据建立时间内或其附近读取数据。 对于级联的功能模块或者数字逻辑器件, 后一模块或器件的工作时钟一般取前一模块或器件工作时钟的反相信号, 这样就可以保证时钟的边沿位于数据的保持时间内。 当数据刚好在时钟边缘前后发生变化时,此时的时钟不知道时输入边沿前的数据还是边沿后的数据,完全取决于触发器内部的,这样会导致亚稳定性。如图5-2图

8、5-2 违反建立和保持时间原则解决办法:将非同源时钟同步化 图5-3 非同源时钟同步化时序波形图冒险现象 1)定义:数字电路设计中,当多路信号的电平值发生变化时, 在信号变化的瞬间, 组合逻辑的输出状态不确定, 往往会出现一些不正确的尖峰信号, 这些尖峰信号称为“毛刺”。 如果一个组合逻辑电路中有“毛刺”出现, 就说明该电路存在“冒险”。2 )原因:(1)由于延时所产生。 延时的大小与连线的长短和逻辑单元的数目有关, 同时还受器件的制造工艺、 工作电压、 温度等条件的影响。(2)信号的高低电平转换也需要一定的过渡时间。 3冒险的缺点: 影响到逻辑电路的稳定性。时钟端口,清零和置位端口对毛刺都十

9、分敏感,任何一个毛刺都可能会使系统出错。4 避免毛刺的方法:(1)增加冗余项。(2)采用格雷码计数器(3)采用同步电路(4)采用D触发器输出(5)采用脉冲在数据的保持时间内采样采用脉冲在数据的保持时间内采样消除毛刺方法:利用采样信号及其波形利用触发器消除毛刺方法二:利用触发器及其波形消除毛刺方法三:利用RC滤波器滤除毛刺 1. 在同步电路设计中, 如何使用时钟(clock)使能信号的问题 所谓同步电路, 就是指电路在时钟信号有效时, 来捕捉电路的输入信号和输出信号, 规范电路的状态变化。 因此, 在同步电路设计中, 时钟信号是至关重要的。 但是, 直接用门控时钟来控制电路的状态变化, 由于各种

10、原因造成的时钟信号的毛刺将直接影响电路的正常工作, 特别对于高速FPGA的结构, 会影响电路逻辑的正常响应。 因此, 在电路结构中, 增加时钟使能信号,无论对于防止时钟信号随机毛刺的影响, 还是严格规范电路逻辑的时序对应, 都是非常重要的。 图 5 - 4 所示为时钟使能信号CE的电路实现。 图 5 - 4 时钟使能信号电路 有的电路采用图 5 - 5(a)所示的对触发器增添CE脚的形式, 而有的设计则采用图5 - 5(b)所示的附加逻辑控制端CE的方式来实现CE的控制功能。 不管采用何种形式, 如果在电路中不使用CE信号时, 则要将CE端接至高电平。 同样, 当在设计中需要多重时钟时, 时钟

11、使能也可用来维护电路状态变化的同步性。 有时, 时钟使能信号可由图 5 - 4 的电路来实现。 图 5-5 在电路中加入CE信号的形式 (a) 增添具有CE脚的触发器; (b) 附加逻辑控制端CE 2. 在同步电路设计中, 如何合理布置时钟分配的问题 同步电路中的多时钟产生, 往往采用时钟分配电路来实现。 这时, 首先要关注的是如何降低分配时钟之间的时钟偏移问题。 对于如图 5 - 6所示的时钟分配电路, 为了减少时钟CLK1和CLK2之间的时钟偏移,可采用额外的缓冲器BUFG来降低CLK2的时钟偏移。 但是, 这样的电路并不能完全抑制时钟波形的变形。 若需完全抑制CLK1和CLK2-CE之间

12、的时钟偏移, 可尝试如图 5 - 7所示的电路。 该电路中的BUFG为可选缓冲器。 当CLK2-CE信号是高扇出时, 可省略BUFG缓冲器。 图 5 - 6 不好的时钟分配电路 图 5 - 7 好的时钟分配电路 3. 在同步电路设计中应严格避免时钟信号(CLK)、置位(Set)/复位(Reset)信号的毛刺 由于亚微米技术的成熟, 目前的FPGA中的触发器的响应速度越来越快, 其可以响应非常窄的时钟脉冲。 因此, 往往触发器会响应时钟信号中的毛刺, 导致逻辑发生误动作。 图 5 - 8 门控时钟的毛刺产生原理 为了避免时钟等信号的毛刺, 在设计中应严格注意不能采用所谓的“门控时钟”, 即由组合

13、逻辑输出直接作为时钟的现象发生。 如图 5 - 8所示, 如果与门的MSB输入连线较短, 则在计数器输出信号“01111000”的瞬变, 在与门输入端就可以瞬间出现 “011111111000”的过程。 这个 “1111”的出现, 将在触发器FF的时钟输入端形成毛刺。 为了防止这类情况的发生, 建议采用如图 5 - 9所示的电路, 这样便可以实现相同的逻辑功能, 却不会导致时钟产生毛刺。 也可以有意识地对与门输入端引入一个CLB时延, 如图 5 - 10所示, 同样可以将门控时钟毛刺形成的可能性降低。 图 5 - 9 避免时钟毛刺的电路 图 5 - 10 对与门引入CLB的时延 在同步电路中,

14、 异步清除或预置输入信号的毛刺, 同样会导致电路逻辑出错。 如图 5 - 11 所示中的“Reset”信号, 虽然是可执行一个异步的清除, 但由于其信号源于一个组合逻辑与门, 其中可能的毛刺会使电路出错。 图 5 - 11 异步“清除”电路 解决该问题的原则和上述克服时钟信号毛刺的原则一样, 如图5 -12 所示。 可以采用方法A, 即采用同步化的Reset控制的触发器FF; 也可采用方法B, 即在电路中将Reset信号改为时钟使能信号来控制电路逻辑, 从而避免Reset信号中的毛刺。 图 5 - 12 “清除”信号的同步化解决方案 (a) 方法A; (b) 方法B 图 5 - 12 “清除”

15、信号的同步化解决方案 (a) 方法A; (b) 方法B 图 5 - 13所示是对于具有异步复位的计数器, 如何避免复位信号中的毛刺影响的不同设计。 其中图5 - 13(a)的设计不能克服异步复位信号中毛刺的影响, 而图5 -13(b)的设计则可有效地克服异步复位信号中毛刺的影响。 图 5 - 13 避免Set/Reset信号中毛刺的影响的分析 (a) 不好的设计; (b) 好的设计 4. 在同步电路设计中, 时钟偏移及不确定信号电平的影响 时序电路在FPGA中实现时, 由于各部分连线长短不一致, 导致其虽然多个触发器共用一个时钟信号, 但触发器时钟端的信号延时并不相同, 信号会发生不同的畸变,

16、 构成时钟信号偏移。 如图 5 - 14所示, 图5 -14(a)中标出时钟信号的不同时延, 对照图5-14(c)的信号波形, 可以分析, 由于时钟信号到达触发器的端口处的信号发生畸变和不同的时延, 该移位寄存器将不能正常工作。 在同步电路的设计实现中, 我们还应注意信号建立和保持时间的需要, 特别是触发器输入信号的变化不能距离时钟信号边缘太近, 如图 5 - 15所示。图 5 - 14 同步电路中时钟偏移的影响 图 5 - 15 时钟信号建立与保持时间的影响如果两者太接近的话, 触发器输出将会形成如下3种情况: (1) 维护输入D的原值; (2) 改变成输入D的新值; (3) 输出是不确定的

17、。图 5 - 16 异步输入信号同步化电路 5.1.3 同步逻辑电路设计中的基本技巧 1. 对于输入信号是异步的情况 在同步逻辑电路设计中, 对于异步的输入信号, 首先要做的工作是同步异步信号。 图 5 - 16所示为异步输入信号同步化的电路举例。 2. 两个独立时钟的情况 在同步逻辑电路的系统中, 如果存在两个时钟信号, 且对于包容于CLK1和CLK2之间的信号, 需要和CLK2信号同步。 图 5 - 17 双CLK的电路 对于如图 5 - 17所示电路, 前后两个触发器之间为某一逻辑功能, CLK1和CLK2分别是前后两个触发器的时钟信号。 这时需要分两种情况考虑: CLK1慢于CLK2(

18、CLK1的脉宽大于CLK2); CLK1快于CLK2(CLK1的脉宽小于CLK2)。 对于CLK1的脉宽大于CLK2的情况, 一般要求输入信号脉冲至少为1个CLK2的周期以上(慢于CLK2); 同时, 在电路中需要附加一个触发器, 以防止出现不确定态, 如图 5 - 18(a)所示, FF1是一个用于防止不确定态出现的触发器, FF2输出被同步于CLK2。 图5 -18(b)为该电路各信号的波形示意。 图 5 - 18 附加触发器以防止出现不确定态 (a) 电路图; (b) 电路波形示意图 5 - 19 电路原理和波形示意 对于CLK1的脉宽小于CLK2时, 输入脉冲宽度也许会小于1个时钟周期

19、宽度。 同样, 如图 5 - 19 所示, 需要再增加一个触发器, 以防止出现不确定状态, 且输出信号仍需同步于CLK2。 双时钟电路可用于异步输入信号的同步化实现中。 当输入脉冲宽于1个时钟周期时, 可使用CLK1慢于CLK2的信号同步化电路(如图 5 - 19所示)。 同样, 当输入脉冲宽度小于1个时钟周期时, 需要使用CLK1快于CLK2的信号同步化电路。 5.2 多级逻辑的设计技巧 FPGA主要由可编程逻辑单元模块(CLB)、 可编程输入/输出模块(IOB)和可编程内连线(PI) 3 种基本资源构成。 因此, 在采用FPGA来实现电路逻辑时, 其基本的时延来源于这3种基本资源。 其中,

20、 CLB和IOB内的逻辑资源虽会随不同的逻辑需求而实现不同的重构, 但其单元时延的离散性不大。 而PI则根据不同的逻辑需求及不同的连线要求, 使各处连线的延时差异会非常大。 因此, 对FPGA实现中的延时分析, 需要根据具体情况, 具体地由这些基本时延的叠加来加以分析。 5.2.1 FPGA实现中的基本时延信号的延时 1定义: 由于信号传输路径必须通过电晶体开关, 因此产生连线延时。另外,信号每通过一个逻辑单元, 就会产生一定的延时。2 影响因素:延时的大小除了受路径长短的影响外, 还受器件内部结构特点、 制造工艺、 工作温度、 工作电压等条件的影响。信号的延时 实际上, 在采用FPGA来实现

21、同步逻辑电路时, 我们可以利用器件内部资源的某些特征参数来预测电路设计的性能指标或评估电路性能是否优化。 例如: 可以采用内部单元模块的时延作为评估网络时延的基本依据; 也可以反过来, 采用预期的时钟频率来决定电路设计中允许使用的CLB的串级数。 通过功能需求比较和设计修正, 来使设计达到所需求的指标。 例如: 如果需要在XC4000XL-3的芯片中实现50 MHz时钟频率, 由于系统时钟周期为20 ns, 如图 5 - 20所示, 1级CLB的延时约8 ns(包括tCO+tNET+tSU), 还有时延冗余量12 ns。 图 5 - 20 多级CLB的时延模型 考虑中间每个附加CLB的组合逻辑

22、延时为6 ns(tPD+tNET), 则该系统中可串联两级内嵌附加CLB组合逻辑。 那么, 如图 5 - 21所示的的三级串联逻辑, 其中总的时延为多少? 最高能实现多高的系统频率呢?图 5-21 内嵌三级串联逻辑的时延模型 稍作分析, 其总的延时是由串联于其中的布线延时tNET和单级CLB组合延时tCLB1、 tCLB2、 tCLB3, 以及前后两个触发器的延时tCK0和tSU相叠加而成, 即 tTOTA1=tCK0+tNET+tCLB1+tNET1+tCLB2 +tNET2+tCLB3+tNET3+tSU 考虑目标器件采用XC4000XL-09, 根据器件数据手册查寻, 可知 tTOTA1

23、=1.5 ns+1.2 ns+1.2 ns+1.2 ns+1.2 ns +1.2 ns+1.2 ns+1.2 ns +0.8 ns=10.7 ns 所以, 总的串联延时为10.7 ns, 换算成系统频率约为93 MHz。 5.2.2 流水线的基本概念 为了提高多级逻辑的系统速度, 在FPGA的逻辑实现中, 同样可引入“流水线”的概念。 流水线设计的概念是把在一个时钟周期内执行的逻辑操作分成几步较小的操作, 并在多个较高速的时钟内完成。 图 5 - 22 的数据通路中的逻辑被分为3小部分。 如果它的tPD 为x, 则该电路的最高时钟频率为1/x。 而在图5 -22(b)中, 假设在理想情况下每部

24、分的tPD为x/3, 则它的时钟频率可提高到原来的3倍。 当然, 我们在计算中并没有包括电路中寄存器的时钟输出时延和信号建立时间, 因此实际的延迟应比x/3稍大。 在忽略它们的情况下, 我们可以看到, 流水线技术可以用来提高系统的数据流量, 也就是在单位时间内所处理的数据量。 但是, 采用这种方法的代价是输出信号将相对于输入滞后3个时钟周期。 因此必须根据这种情况对设计进行修改。 图 5 - 22 流水线技术的概念 总之, 流水线技术在提高系统处理速度的同时也造成了输出滞后, 并且还需要额外的寄存器资源。 由于大多数FPGA器件的每个元胞中都有寄存器, 因此便于采用流水线设计; 相比之下, 在

25、CPLD中每个寄存器对应的组合逻辑资源较多, 因此其一级逻辑的规模要比FPGA大得多, 而这意味着在相同的时钟周期内, 相对FPGA的元胞, 它可以实现更复杂的逻辑。 所以实际上往往没有必要在CPLD中应用流水线技术。 5.2.3 应用流水线的设计 采用流水线技术, 是实现多级逻辑的系统时钟提升的有效途径。 其实际的状态是, 采用了流水线结构, 该逻辑的第1个输出有效将被延时, 这样延时的时间取决于流水线的级数。 因为流水线的每一级都将附加一个时钟的延时。 图 5 - 23所示是一个原型电路实例, 在触发器Source-FFS和Dest-FF之间存在两个组合逻辑级, 实际的系统工作频率为30

26、MHz。 图 5 - 23 串联两级组合逻辑的原型电路 将图 5 - 23所示电路改为流水线的结构, 如图 5 - 24 所示, 即在两级串行组合逻辑之间嵌入触发器PIPE-FFS。 由此, 系统的最大工作频率可增至60 MHz。图 5 - 24 采用流水线技术的改进电路 利用流水线技术, 可以进一步提高大型比较器的速度。 例如在加入了前面讲的中间与门之后, 再将其输出到一个寄存器, 然后利用该寄存器的输出进行低位信号的比较。 为了保持逻辑的一致性, 在电路的其余部分也需要加入流水线寄存器, 如图 5 - 25 所示。 流水线技术也经常用于计数器的设计之中。 例如, 二进制计数器有着直观的计数

27、次序, 但由于二进制译码需要宽位门来处理, 因此大容量二进制计数器速度较慢。 这就需要采用流水线的结构来改进。 图 5 - 25 流水线式的数值比较器 5.3 数字系统设计中的可编程器件的选择方案 在实际的数字系统设计中, 可编程器件的选择方案对系统实现的性能具有重要的影响。因为不同厂商的可编程器件结构不尽相同、 延时特性不同、 开发软件不同, 同时, 这些可编程器件也没有像通用逻辑器件那样采用相同的引脚标准, 所以, 不同厂商的可编程器件不能完全兼容, 不能相互替换。 因此, 设计者在可编程器件的选择上需要谨慎。 归纳起来, 基本的选择原则有如下几种。 5.3.1 从系统设计角度的目标器件选

28、择原则 (1) 电磁兼容设计的原则, 即对于中低速电路的系统设计, 尽量不要采用高速器件。 因为高速器件不仅价格高, 而且由于其速度高, 反会引发或增加电磁干扰, 使系统工作难以稳定。 (2) 主流芯片原则。 公开推出各种型号的芯片, 但由于生产或推广策略的原因, 器件的价格往往并不是完全和器件的容量、 速度成比例关系, 而是和该器件是否是目前的主流推广器件有关。 (3) 多片系统原则。 对于有的应用设计, 不要一味追求单片化。 如果系统的局部适用于CPLD, 另一局部适用于FPGA, 则完全可采用多器件的复合系统结构, 既有利于降低成本, 又能加快设计进程, 提供系统的稳定性。 器件的选择标

29、准可以分如下几条: 第一, 尽可能选择同一家厂商的可编程器件, 以便对同一个研发团队的设计者进行开发软件操作的培训, 在开发过程中吸取教训, 交流经验, 提高设计水平。 第二, 对于经验不足的设计者, 先尽可能减小大规模可编程器件的选择, 采用多片中小规模的FPGA和CPLD结合使用的方案, 即多片FPGA(或CPLD)方案, 实现各个子系统的功能验证。 待功能验证完成后, 再提高集成度, 采用大规模的FPGA芯片, 即单片FPGA方案。 第三, 利用FPGA芯片资源丰富的特点, 完成各种算法、 运算、 控制、 时序逻辑等功能, 提高集成度; 利用CPLD芯片速度快、 保密性好的特点, 完成快

30、速译码、 控制、 加密等逻辑功能。 在一个复杂系统确定总体方案时, 总体设计者就应该根据系统复杂度、 参研人员的研发能力、 对系统电路要求理解的准确程度、 对FPGA(或CPLD)开发工具掌握程度、 FPGA(或CPLD)器件的性能价格比、 产品研制进度以及经费等诸多因素, 确定采用单片FPGA(或CPLD)方案, 还是多片FPGA(或CPLD)方案。 5.3.2 从器件资源角度的目标器件选择原则 当你进行任一个数字系统的FPGA设计与实现中, 也可以根据系统的要求, 从器件资源角度来考虑, 进行器件的选择。 往往可从如下3方面来考虑。 1. 器件的逻辑资源和目标系统的逻辑需求相匹配 所谓器件

31、的逻辑资源, 是指器件内陈列排布的触发器资源、 组合逻辑资源、 内嵌存储单元资源、 三态缓冲器资源等, 当然也包括各种布线资源。 但是, 由于器件内布线资源的限制和逻辑单元内可编程选择开关的限制, 很难使器件内的逻辑资源实现100%的利用。 因此, 根据系统的逻辑资源需求评估器件的选择, 是衡量设计者设计经验的重要指标, 是降低成本的主要条件。 通常, 在目标器件的选择上采用特征单元评估法。 所谓特征单元评估法, 其要点在于要消化和理解所设计的数字系统, 整理出特征逻辑单元的数目要求。 而特征逻辑单元, 根据数字系统的功能特征, 可以是触发器, 也可以是组合门、 RAM存储单元或三态缓冲器。

32、总之, 根据设计要求来分析: 在必须集成入芯片的逻辑单元之中, 哪一种逻辑单元是受到芯片资源限制的主要因素。 如果该电路所使用的触发器数目较多, 则可将触发器作为特征单元来选择相应的器件; 如果三态缓冲器的总线结构是电路的主要特征, 则要以三态缓冲器作为特征单元来分析选择目标器件。 选定特征单元, 并分析特征单元的总数后, 再查找相应的FPGA器件数据手册, 选择能满足其特征单元的数量要求、 速度性能要求的适应的器件作为数字系统的目标载体。 由于数字系统还会受到布线资源和系统速度要求的限制, 故选择器件时, 要留有逻辑资源冗余量。 一般根据其他附属逻辑资源和要求的苛求程度, 选择能提供特性逻辑

33、单元数为系统所需的该逻辑单元数的1.11.3倍的器件为宜。 2. 器件的I/O脚的数目需满足目标系统的要求 所选择的目标器件, 仅在逻辑单元的资源上符合系统要求还是不够的。 器件的I/O脚的数目能否满足系统的输入/输出器的数目要求, 是器件选择上的另一个基本要求。 对于一个FPGA器件, 其管脚的组成主要分为三类。 其一是专用功能脚, 主要用于电源(VCC)、 接地(VSS)、 编程模式定义(M0、 M1、 M2)等非用户功能。 这些管脚是提供器件正常工作的基本配置, 不能用于器件的用户功能的定义。 其二是用户功能脚, 专门用于目标数字系统的输入/输出接口定义。 对于不同的器件, 其接脚特征的

34、参数可编程定义的范围也不一样。 一般可提供CMOS电平或TTL电平接口; 有的可定义为直接输入/输出或寄存输入/输出; 有的有上拉电阻、 下拉电阻定义等。 其三是用户功能/专用功能双功能脚。 这类接脚可定义为用户接口。 主要注意两点: 第一, 在器件加电时的短时间内, 器件处于内部功能的下载定义、 重构状态时, 该脚属专用功能脚, 处于专用功能所需的逻辑状态;第二, 用户系统数据下载完成后, 该脚才转为用户功能。 因此, 为了使两种不同的逻辑功能状态需求互不干扰, 需要加一上接电阻或下拉电阻于该接脚。 3. 系统的时钟频率要满足器件元胞、 布线的时延限制要求 当系统的时钟频率决定以后, 考虑到

35、采用FPGA来实现系统逻辑时, 如果其内部逻辑单元级联深度和布线时延(见5.2.1节举例)接近或等于或大于系统时钟的周期, 则采用该FPGA来实现的系统就很难保证有效地实现原系统规定的逻辑功能。 所以解决的方法有: (1) 选择具有更高速度的器件替代原器件, 以满足器件内部逻辑单元级联深度和布线所产生的时延小于系统的时钟周期时间的要求。 (2) 采用流水线等技术措施, 以满足系统的时序和时延要求。 5.3.3 从器件管脚来确定方案 在FPGA的设计实现中, 是否需要限定系统的I/O接脚, 是设计中值得探究的问题。 原则上来讲, 如果设计者对用户系统的各输入/输出端的FPGA接脚均给予限定, 那

36、么, 在系统进行FPGA实现的布局布线时, 无形中就受到了较多的约束, 就有可能对系统的时延特性和系统的芯片面积的有效利用构成负面影响。 所以, 在用户系统的FPGA设计实现中, 一般的规则是: (1) 尽量避免人为固定I/O接脚, 除非是多次实现过程中可能重复存在的不固定I/O接脚。 设计实现的工具在布局布线时, 可根据系统需求和器件逻辑资源来实现最大自由度的规划。 (2) 应尽量避免将相关的I/O接脚集中固定于相互靠近的位置。 因为这不利于FPGA内部布线资源的均衡使用。 所以, 实际中应该尝试适当调整I/O脚, 以利于资源利用。 (3) 根据需要, 适当考虑使用或禁止双功能配置脚。 如果

37、系统要求较多的I/O接口, 则应采用双功能配置脚, 并注意对接脚加接上拉或下拉电阻。 例如: 在Xilinx的SRAM FPGA器件中, 其M2脚是一个双功能脚。 在编程时, M2脚是器件配置模式定义脚, 和M0、 M1配合使用, 定义器件编程时的配置模式。 当器件配置数据下载完成后, M2 是一个用户脚。 因此, 该脚为了在硬件连接上同时满足配置模式和用户I/O功能的逻辑需求, 必须加接一上拉或下拉电阻(如图5-26所示)。 当器件为串行主动模式时, M2 处需加一上拉电阻RUP。 同样, 当器件为串行主动模式时, M2 处需加一下拉电阻RDOWN。 试想, 如果不加上拉或下拉电阻, 为了满

38、足配置模式的电平需求, 则必须将M2 脚上接+5V电源或接地, 这样会将该脚锁定在高电平或低电平, 于是, 该脚的用户I/O功能将无法实现。 图 5 - 26 FPGA为串行主动模式时, M2的连接方式 (4) 在FPGA设计实现中, 应该注意到I/O接脚的固定一般有先从左到右, 再从上到下的设定习惯; 并且, 应根据逻辑容量的限制, 来决定输入和输出接脚相互分隔的距离。 5.4 数字系统设计中的低功耗设计原则 低功耗设计就像低的芯片操作温度、 低的芯片封装价格一样, 能给芯片带来很多额外的益处。 为了使可编程逻辑的现场集成设计的产品更具竞争力, 设计者往往需要对产品的性能、 功耗等进行综合考

39、虑。 可编程芯片的功耗包括静态功耗和动态功耗两部分。 静态功耗主要是可编程芯片在非激活状态下由漏电流引起的。 动态功耗主要是由于可编程芯片在激活状态下由芯片内部节点或输入、 输出引脚上的电平转换引起的。 可编程器件的功耗主要由以下因素决定: 芯片的供电电压、 器件的结构、 资源的利用率(互连线、 逻辑单元和I/O单元使用的数量)、 时钟频率、 信号翻转速率、 输出引脚的数量以及输出驱动负载的大小等。 现场集成设计中功耗优化的方法和技巧多种多样, 基本可以概括为两种思路。 一种是降低电源电压。 由于功耗与电压的二次方成正比, 因此, 这样做能够显著降低功耗。 该方法虽然直观, 实现却很复杂, 尤

40、其是对于需要兼容老机型的升级产品, 采用新的电压标准, 同时必须兼容现有电子系统的电压标准是一件很困难的事情。 但是, 对于一个全新的产品研制, 应该尽可能根据系统性能指标要求, 选择较低的电压标准, 实现低功耗设计。 另一种是利用数字集成电路常用的低功耗设计原理, 在电路设计过程中, 通过减小节点的电平转换次数和节点的负载电容之积, 即减少节点的有效转换电容来达到减小功耗的目的。 这种思路在具体运用中可以通过各种方法来实现。 例如, 在行为级设计上选择合适的算法, 在结构级上选择合适的结构和划分, 在门级上选择合适的逻辑结构。 以下是几种常用的方法。 (1) 优化操作。 对于一个给定的功能,

41、 通过选择合适的算法以减小操作的次数, 可以有效地降低节点的电平转换次数。 例如, 对于和常数相乘的操作, 采用变换操作的方法, 将乘法操作变换为加法操作和移位操作。 同时, 尽量减少常数中1的个数, 这样可以减少加法操作和移位操作的次数。 公因式提取法也可以减少操作次数, 在这里, 具有相同公因式的那部分操作将被共享。 还可以利用数据之间的相关性, 采用重新安排操作顺序的方法减少数据通道的电平转换次数。 当总线上的数据与寄存器相关时,经常使用片选或时钟使能逻辑来控制寄存器的使能。进一步来说,尽早对该逻辑进行“数据使能”,以阻止数据总线与时钟使能寄存器组合逻辑之间不必要的转换,如图所示。红色波

42、形表示原设计;绿色波形表示修改后的设计。 另一种选择是在电路板上而不是在芯片上进行这种“数据使能”。以尽可能减小处理器时钟周期。此概念是使用CPLD从处理器卸载简单任务,以便使其更长时间地处于待机模式。 (2) 优化控制。 从状态转换图STG向逻辑结构综合的过程 中, 常采用变换的手段优化出一个结构。 这里的变换包括重新安排控制信号, 将一个大的STG结构分解成若干个小的STG, 减少STG中的状态数以及对STG状态的重新分配。 例如, 根据STG中状态转移概率的描述, 对于那些相互之间转移概率大的状态, 编码时尽量减小它们之间的布尔距离。 这样, 就可以减少状态转移时状态线上的电平转换, 从

43、而减少有效转换电容。 (3) 优化编码。 选择恰当的编码也是一种行之有效的方法。根据预测的下一状态条件列举状态机,并选择常态之间转换位较少的状态值。这样,您就能够尽可能减少状态机网络的转换量(频率)。确定常态转换和选择适当的状态值,是降低功耗且对设计影响较小的一种简单方法。编码形式越简单(一位有效编码或格雷码),使用的解码逻辑也会越少。 例如, 对于数据通道, 可以采用符号编码代替补码。 符号编码采用一位代表变量的符号, 其余各位代表变量的大小。 补码对于0到-1的变化是所有位都翻转, 而符号编码只有符号位翻转。 对于地址线的编码方法, 可以采用格雷码等做地址编码。 这里所要注意的一个问题是,

44、 译码电路的功耗不能超过这些方法节省的功耗。 让我们来看一个在状态7和状态8之间频繁进行状态转换的状态机。如果您为该状态机选择二进制编码,将意味着对于每次状态7和状态8之间的状态转换,将有四位需要改变状态,如表所示。如果状态机采用格雷码而不是二进制码来设计,则这两个状态之间的转移所需的逻辑转换的数量将降至仅一位。另外,如果将状态7和8分别编码为0010和0011,也可以达到同样的效果。 (4) 优化结构。 采用平行结构和流水线结构降低电路延时。 由于电路存在延时, 将使某些节点出现毛刺, 从而使这些节点增加了额外的电平转换, 这就是所谓的毛刺功耗。 为了减少毛刺功耗, 必须平衡各通路。 树型结构的电路比链型结构的电路毛刺功耗小。 但是, 树型结构的电路所需寄存器的数目多, 寄存器的功耗增加。 因此, 在实际运用中, 必须对双方权衡考虑, 采用一种最优结构, 使总功耗最小。 为了优化面积和减少资源, 常用的一种方法是复用某些模块, 但这样会使有效转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论