目录
面积结构设计
本篇讨论数字设计的三个主要物理特性的第二个:面积。并分析在FPGA中结构的面积优化方法。
针对面积的优化是尽可能复用逻辑资源,以速度为代价。为此经常要求一个递归的数据流,其中一级的输出反馈到输人端进行类似的处理,这可以是简单的环路,随着算法自然地流动,或者逻辑复用可能是复杂的,并要求专门的控制。这节描述这两种技术,也根据性能损失描述必要的结论。
介绍以下内容:
- 在计算的不同级中为复用逻辑资源折叠流水线
- 当不存在自然的流程时控制对逻辑复用的管理
- 在不同的功能操作中共享逻辑资源
- 复位对面积优化的影响:
- 缺少复位能力对FPGA资源的影响。
- 缺少置位能力对FPGA资源的影响。
- 缺少异步复位能力对FPGA资源的影响。
- RAM复位的影响。
- 为逻辑实现优化利用置位/复位引脚。
折叠流水线
折叠流水线的设计方法和流水线设计恰好相反,流水线的设计思想是以面积换速度,而折叠流水线的思想是以速度换面积。
折叠流水线可以优化在流水线级复制逻辑的流水线设计的面积。
举个例子:
两个8位宽的数相乘,如果直接用*进行相乘运算,这样可以在一个时钟周期得到结果,但是在这一个时钟周期逻辑链拉的特别场,在之前可以用流水线设计的思想对其进行流水设计,但是需要花费大量的中间寄存器资源,这里考虑折叠流水线,假设乘数分别为A和B,在计算时,每个时钟周期根据B的每一位对A进行移位相加,这样计算两个8位宽的乘法需要8个时钟周期,但是却减小了资源的使用,在这个设计中,只需要少量的寄存器和一个加法器即可。
优点:
- 减少逻辑资源的使用,减小面积
- 减小两寄存器之间的逻辑延时,优化了时序
缺点:
- 减低了计算速度,计算单个结果需要花费多个时钟周期
基于控制的逻辑复用
共享逻辑资源有时要求专门的控制电路来决定哪些元件是到特定结构的输入。前一节描述了简单地对每个寄存器的位移位的乘法器,其中每个寄存器总是专用于运行加法器的特定输人。它有一个天然的数据流,使其本身适合逻辑复用。在其他应用中,常常对资源的输人有更复杂的变化,为了复用逻辑,某些控制可能是必须的。
当共享逻辑比控制逻辑更大时,控制可以直接用来逻辑复用。
为了确定这个变化,可以要求一个状态机作为附加的输人加到逻辑。
上面的说法理解起来很费解,说人话就是当连续做某种运算时,每次完成后会有标志信号产生,这个标志信号作为控制下次运算的起始控制信号就可以逻辑复用。
举个例子:
在进行三个乘法运算并相加,X=A*B+C*D+E*F,可以定义一个乘法IP进行调用,每次乘法运算完成后会有 done 信号指示运算完成,这是下一个乘法运算可以以这个done信号作为起始信号开始进行下一个乘法运算,以此类推,下一个乘法运算也可以这么操作,这样在控制信号上就使用了同一个 done 信号,也就是上面所谓的控制的逻辑复用。
资源共享
当利用术语资源共享时,不是指由FPGA的布局和布线工具执行的低层次优化,而是指高层次的结构资源共享,其中不同的资源在横跨不同的功能范围内共享。只要有功能块可以在设计的其他部分或者甚至在不同的模块利用,就可以利用这类资源共享。
举个例子:
比如在不同模块都需要使用计数器,A模块需要计数器为8位宽的,B模块需要计数器为16位宽的,这时可以只定义一个位宽为16的计数器,其中计数器的[7:0]作为模块A的计数器,整个计数器可以作为模块B的计数器。这样可以减小定义计数器的资源消耗,达到资源共享的目的。
复位对面积的影响
不正确的复位策略会导致浪费过多资源。
下面的几节描述许多不同的情况,其中复位在速度/面积特性中可以起重要的作用以及如何进行相应的优化。
无复位的资源
使用了同步复位和没有使用复位的设计综合出的资源消耗结果差别很大,含有复位会消耗更多资源,但是在一般的设计当中,复位设计是必不可少的。
无置位的资源
下面是使用置位的代码得到的资源消耗和复位设计相比较。
可以看出置位所消耗的逻辑资源远远大于复位消耗的资源,因此在设计中非必要不设计置位。
无同步复位的资源
下面是使用了异步复位的设计方法和同步复位作比较。
可以看出异步复位所消耗的逻辑资源远远大于同步复位消耗的资源,异步复位和同步复位有各自的优缺点,但是一般建议使用异步复位。
复位 RAM
在许多FPGA内置的RAM资源中有复位的资源,但是类似于上一节中描述的DSP资源,常常只有同步复位是有效的。企图对RAM模块实现异步复位可能是面积优化的大变动,因为除了较小的RAM资源之外,没有更小的元件可以最佳地构造RAM, 综合工具也不能轻易地添加几个门到输出端来仿真这个功能。
复位RAM通常是欠佳的设计实践,特别当复位还是异步的。
在上面的代码中,再一次只考虑的变化是复位的类型,同步与异步。例如,在Xilinx的Virtex-4器件中块RAM元件只有同步复位,所以采用同步复位,综合工具能够用单个块RAM实现这个代码,如图2-9所示。
但是,当用异步复位实现上面代码例子表示的相同RAM,综合工具将被迫使用较小的DRAM模块来产生相应尺寸的RAM模块,附加译码逻辑来产生合适尺寸的RAM,附加逻辑来实现异步复位,如图所示。最后实现的差别是惊人的,见表2-4。
利用置位/复位触发器引脚
大多数FPGA厂商有各种触发器元件在任何给定的器件中可用,并给定特定的逻辑功能,综合工具常常可以利用置位和复位引脚来实现逻辑形式,减少查找表的负荷。例如,考虑图2-11,在这个案例中,综合工具可能选择利用触发器的置位引脚实现逻辑,如图1-12所示。这样去除了门,增加了数据通道的速度。另外,考虑图2-13中所示形式的逻辑功能,把输入信号加到触发器的复位引脚,就可以将与门去除,如图2-14所示。
利用置位/复位可能阻止一些组合逻辑的优化。
这里iDat3输人获得类似于有关触发器上复位引脚的特权。因此,逻辑功能可以如图2-17所示被实现。
在这个电路中有3个逻辑操作(取反、与和或),全部用单个触发器和无查找表实现。
因为这些优化不总是在设计被构造的时候所认识,当面积是考虑的关键时,只要有可能应避免利用置位和复位。
当面积是考虑的关键时,尽可能避免利用置位和复位。
总结
- 折叠流水线可以优化在流水线级复制逻辑的流水线设计的面积。
- 当共享逻辑比控制逻辑更大时,控制可以直接用来逻辑复用。
- 对于面积是主要要求的紧凑设计,搜索在其他模块中有类似计数部件的资源,可以把他们放到层次上的全局位置,在多个功能范围之间共享。
- 不正确的复位策略可以产生不必要的面积大的设计和抑制一些面积优化。
- 优化的FPGA资源在不相容的复位分配到它时将不被利用,但利用一般的元件实现其功能,将占用更多的面积。
- DSPs和其他多功能资源一般对复位策略的变化是不灵活的。
- 不正确地复位一个RAM可能对面积有惊人的影响。
- 利用置位/复位可能阻止一些组合逻辑的优化。
- 当面积是考虑的关键时,尽可能避免利用置位和复位。
在数字设计中,速度和面积是相斥的,既快面积又小的设计是不可能的,因此需要根据实际情况,进行相应的取舍。
转载:https://blog.csdn.net/m0_61298445/article/details/128460401