目录
2.2 寄存器配平 (Register Balancing)
系统设计优化主要有两方面:
-
资源优化
-
速度优化
无论是在ASIC还是FPGA中,硬件设计资源即面积(Area)是一个重要的技术指标。
资源优化意义:
Ø可使用规模更小的可编程器件,降低系统成本,提高性价比。
Ø当耗用资源过多时会严重影响优化的实现。
Ø为后续技术升级留下更多的可编程资源。
Ø资源耗用太多会使器件功耗显著上升。
1.资源优化
1.1 资源共享
通过一个例子进行说明。现需要实现功能:通过选择信号s来选择执行A0*B还是A1*B的。
描述方式1:对两个乘法电路进行选择
RTL结构:
描述方式2: 对乘项进行选择
RTL结构:
两种方式一比较,后者在逻辑结果上没有任何改变,但却节省了一个代价高昂的乘法器,使得整个设计占用的面积几乎减少了一半。
总结:
资源共享主要针对数据通路中耗费逻辑资源较多的模块,通过选择、复用的方式共享使用该模块,达到减少资源使用、优化面积的目的。
并不是在任何情况下都能以此法实现资源优化,如图3中输入与门之类的模块使用资源共享是无意义的,有时甚至会增加资源的使用(多路选择器的面积显然要大于与门)。高级的HDL综合器,如QuartusII和Synplify Pro等,通过设置能自动识别设计中需要资源共享的逻辑结构,自动地进行资源共享。
1.2 逻辑优化
使用优化后的逻辑进行设计,可以明显减少资源的占用。
例:要实现一个变量*常数。
描述方式1:构建有一个两输入的乘法器:m<=a*b,然后对其中一个端口赋予常数。
描述方式2:采用一个常数乘法器实现
经过对比,后者占用的资源要明显少于前者。
1.3 串行化
将原来耗用资源巨大、单时钟周期内完成的并行执行的逻辑块分割开,提取出相同的逻辑模块(一般为组合逻辑块),在时间上利用该逻辑模块,用多个时钟周期完成相同的功能,其代价是工作速度被大为降低。
例 :实现
描述方式1: 采用并行逻辑设计
RTL结构:
描述方式2:采用串行化设计,只需要勇1个8位的乘法器和1个16位的加法器。但是速度明显会降低,将需要耗时5个clk才能完成一次运算,并且还需要一个附加信号start。
2. 速度优化
一般来说,速度优化比资源优化更重要,需要优先考虑。速度优化包括:FPGA的结构特性、HDL综合器性能、系统电路特性、PCB制版情况等,也包括Verilog的编程风格。下面主要讨论电路结构方面的速度优化方法。
2.1 流水线设计
流水线(Pipe lining)是一种在成组的逻辑之间添加寄存器的方法,是最常用的速度优化技术之一。它能显著地提高设计电路的运行速度上限。
未使用流水线设计,存在一个延时较大的组合逻辑块,该设计从输入到输出需经过的时间至少为Ta(还有其他延迟,如Tco),所以Tclk>Ta.,那么 fmax≈1/Ta。
使用了两级流水线后,两个组合逻辑块的延时分别为T1、T2,设置T1≈T2,且Ta=T1+T2,Tclk可接近T1,其最高工作频率为:
fmax ≈ fmax1 ≈ fmax2 ≈ 1/T1 ≈ 1/T2,最高工作频率比未使用流水线,速度提高了近一倍。
例1:
例2:
例3: 普通的8位加法器
例4:采用流水线加法器实现8位加法器:用3个4bit加法器以及多个锁存器实现
描述:
例3和例4同是8位加法器设计描述,前者是普通加法器的描述方式,后者是二级流水线描述方式。将8位加法分成两个4位加法操作,其中用锁存器隔离。
2.2 寄存器配平 (Register Balancing)
寄存器配平是使较长路径缩短,较短路径加长,使其达到平衡从而提高工作频率的一种技术。
下图所示的设计中,若两个组合逻辑块的延时差别过大,若T1>T2,则总体的工作频率 fmax取决于T1, 即最大的延时模块。
对上图的不合理设计进行改进,改进后为如下所示的结构,即将原本设计中的组合逻辑1的部分逻辑转移到组合逻辑2中,使t1≈t2,且T1+T2=t1+t2, T1>t1则总体的工作频率 fmax提高。
2.3 关键路径法
关键路径:指设计中从输入到输出经过的延时最长的逻辑路径。优化关键路径是提高设计工作速度的有效方法。
EDA工具中的综合器及设计分析器都提供关键路径的信息以便设计者改进设计。Quartus II中的时序分析器可以帮助找到延时最长的关键路径。
2.4乒乓操作法
乒乓操作法是FPGA开发中的一种数据缓冲优化设计技术,可视作另一种形式的流水线技术。通过“输入数据流选择单元”和“输出数据流选择单元”按节拍、相互配合的切换,将经过缓冲的数据流“无缝”地送到“数据流运算处理模块
2.5 加法树法
若要实现A+B+C。首先实现A+B,将其和锁存一个时钟周期再与C相加。