ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] >## 1、面积与速度基本概念 这里的**面积**指一个设计消耗FPGA/CPLD的逻辑资源的数量,**对于FPGA可以用消耗的FF(触发器)和LUT(查找表)来衡量**,更一般的衡量方式可以用设计所占的**等价逻辑门数**。</br> **速度**指设计在芯片上稳定运行所能达到的最高频率,这个频率由设计的**时序状况**来决定,以及设计满足的时钟要求:PAD to PAD time 、Clock Setup Time、Clock Hold Time、Clock-to-Output Delay等众多时序特征量密切相关。</br> **面积**和**速度**这两个指标贯穿FPGA/CPLD设计的时钟,是设计质量的评价的终极标准 —— 面积和速度是一对对立统一的矛盾体。</br> 要求一个同时具备设计面积最小、运行频率最高是不现实的。更科学的设计目标应该是在**满足设计时序要求(包括对设计频率的要求)的前提下,占用最小的芯片面积**。或者**在所规定的面积下,是设计的时序余量更大、频率跑的更高**。这两种目标充分体现了面积和速度的**平衡**的思想。 >## 2、面积优化的方式 >### 2.1 、资源共享 通过一个例子进行说明。现需要实现功能:通过选择信号s来选择执行A0 \* B还是A1 \* B的。 **描述方式1:对两个乘法电路进行选择** ![](https://img.kancloud.cn/9c/7d/9c7d951517100ea1ee1fd8370e338763_907x324.png) **描述方式2: 对乘项进行选择** ![](https://img.kancloud.cn/74/2c/742cf3af2055aa3b830bc041b79a4609_958x305.png) 两种方式一比较,后者在逻辑结果上没有任何改变,但却节省了一个代价高昂的乘法器,使得整个设计占用的面积几乎减少了一半。 >**总结** >* 资源共享主要针对数据通路中耗费逻辑资源较多的模块,通过选择、复用的方式共享使用该模块,达到减少资源使用、优化面积的目的。 >* 并不是在任何情况下都能以此法实现资源优化,输入与门之类的模块使用资源共享是无意义的,有时甚至会增加资源的使用(多路选择器的面积显然要大于与门)。高级的HDL综合器,如QuartusII和Synplify Pro等,通过设置能自动识别设计中需要资源共享的逻辑结构,自动地进行资源共享。 >### 2.2、逻辑优化 使用优化后的逻辑进行设计,可以明显减少资源的占用。 >**总结** >* 状态机的设计要尽可能简洁,不要搞出不必要的,多个状态对同一个数据做处理。 >* if语句中用单bit的标志位代替多bit的数据来进行条件判断。 >* 设计尽可能简洁,不要弄出冗余赋值。 >### 2.3、串行化 将原来耗用**资源巨大**、单时钟周期内完成的并行执行的逻辑块分割开,提取出相同的逻辑模块(一般为组合逻辑块),在时间上利用该逻辑模块,用多个时钟周期完成相同的功能,其代价是工作速度被大为降低。 ![](https://img.kancloud.cn/7b/be/7bbe01643120758fa22e95a1a02ad24e_943x148.png) **描述方式1: 采用并行逻辑设计:分别相乘再相加** ![](https://img.kancloud.cn/78/45/784577fd1fb41961ef1c08912fa048d0_828x291.png) **描述方式2:采用串行化设计,逐个相乘逐个相加:只需要勇1个8位的乘法器和1个16位的加法器。但是速度明显会降低,将需要耗时5个clk才能完成一次运算,并且还需要一个附加信号start** >## 3、速度优化的方式 一般来说,**速度优化比资源优化更重要**,需要优先考虑。速度优化包括:FPGA的结构特性、HDL综合器性能、系统电路特性、PCB制版情况等,也包括Verilog的编程风格。下面主要讨论电路结构方面的速度优化方法。 >### 3.1、流水线设计 **流水线**(Pipelining)是一种在复杂组合逻辑之间添加寄存器的方法,是最常用的速度优化技术之一。它能显著地提高设计电路的运行速度上限。 >### 3.2 、寄存器配平 (Register Balancing) 寄存器配平是使**较长路径缩短,较短路径加长**,使其达到平衡从而提高工作频率的一种技术。 </br> 若设计中,若两个组合逻辑块的延时差别过大,若T1>T2,则总体的工作频率 fmax取决于T1, 即最大的延时模块。对不合理设计进行改进,即将原本设计中的组合逻辑1的部分逻辑转移到组合逻辑2中,使t1≈t2,且T1+T2=t1+t2, T1>t1则总体的工作频率 fmax提高。 >### 3.3、关键路径法 关键路径:指设计中**从输入到输出经过的延时最长的逻辑路径**。优化关键路径是提高设计工作速度的有效方法。 </br> EDA工具中的综合器及设计分析器都提供关键路径的信息以便设计者改进设计。Quartus中的**静态时序分析**工具可以帮助找到延时最长的关键路径。 >### 3.4、乒乓操作法 **乒乓操作**法是FPGA开发中的一种数据缓冲优化设计技术,可视作另一种形式的流水线技术。**乒乓操作本质是使用2倍的硬件资源,通过将数据产生时间和数据使用时间重叠,解决一个数据生产效率低于数据使用效率的问题。**是一种拿**面积换性能**的方法。通过“输入数据流选择单元”和“输出数据流选择单元”按节拍、相互配合的切换,将经过缓冲的数据流“无缝”地送到“数据流运算处理模块。 >### 3.5、树形结构法 若要实现A+B+C+D。首先实现AB=A+B,CD=C+D,将AB/CD锁存一个时钟周期再相加。**树形结构法和上面面积优化提到的串行化是相反的**。