先进的 FPGA 设计外文翻译资料

 2022-07-29 15:47:57

英语原文共 355 页,剩余内容已隐藏,支付完成后下载完整资料


ADVANCED FPGA DESIGN

第一章

如果使用任意编码风格的约束,那么复杂的工具优化通常不足以满足大多数设计。 本章讨论了第一个数字设计的三个主要物理特性:速度。 本章也讨论FPGA中架构优化的方法。

影响速度的因素主要有以下三个:吞吐量,延迟和时间。吞吐量是指每个时钟周期处理的数据量。吞吐量的常用度量是每秒位数。延迟是指时间数据输入和处理后的数据输出。延迟的典型度量将会是时间或时钟周期。时序是指顺序之间的逻辑延迟元素。当我们说一个设计不“满足时间”,我们的意思是延迟的关键路径,也就是拖鞋之间的最大延迟(由组合延迟,clk到out延迟,路由延迟,建立时序,时钟偏移,等等组成)大于目标时钟周期。时间的标准指标是时钟周期和频率。

在本章的过程中,我们将详细讨论以下主题:

高吞吐量架构,最大化每位的位数,可以通过设计来处理。

低延迟架构,用于最小化从a的输入延迟模块到输出定时优化以减少关键路径的组合延迟。添加寄存器层来划分组合逻辑结构。用于将顺序执行的操作分离成为并行结构并行操作。

1.1高通量

高吞吐量设计是关于稳态数据速率的设计,不太关心某一特定的数据传播所需要的时间。 高通量设计的想法与福特想出了大量制造汽车的方案是一致的:一个装配线。 在处理数据的数字设计世界中,我们参考这一点在更抽象的术语下:管道。

流水线设计在概念上非常类似于原料装配线或数据输入进入前端各种操作和处理的阶段,然后以成品或数据输出。流水线设计的优点是开始处理新数据的时刻可以在前一数据处理完成之前,很像汽车在装配时处理的方法。 管道几乎用于所有非常高性能的设备,而且各种具体的架构是无限的。 示例包括CPU指令集,网络协议栈,加密引擎等。

XPower = 1;

for (i=0;i lt; 3; i )

XPower = X * XPower;

注意上面的代码是一个迭代算法。 相同的变量和访问地址直到计算完成。 并行性没有用处,因为微处理器一次只执行一条指令(只考虑一个核心处理器的情况)。 类似的实现可以在硬件中创建。 考虑以下Verilog实现的相同算法(不考虑输出缩放):

module power3(

output [7:0] XPower,

output finished,

input [7:0] X,

input clk, start); // the duration of start is a

single clock

reg [7:0] ncount;

reg [7:0] XPower;

assign finished = (ncount == 0);

always@(posedge clk)

if(start) begin

XPower lt;= X;

ncount lt;= 2;

end

else if(!finished) begin

ncount lt;= ncount - 1;

XPower lt;= XPower * X;

end

endmodule

在上述示例中,相同的寄存器和计算资源被重用直到计算完成,如图1.1所示。

使用这种类型的迭代实现,直到之前的计算完成之前不会开始新的计算。 这个迭代方案非常类似于软件实现。 还要注意一些握手信号需要指示计算的开始和结束。 一个外部模块还必须使用握手将新数据传递给模块并收到完成的计算。

在上述的实现过程中,X的值被传递到两个流水线阶段独立资源计算相应的乘法运算。 注意虽然X被用于计算第二条管道中的最终功率3阶段,X的下一个值可以发送到第一个流水线阶段,如图1.2所示。

最终计算X3(XPower3资源)和第一次计算的X(XPower2资源)的下一个值同时进行。

吞吐量性能比迭代方法增加了3倍。 一般来说,如果需要n 个迭代循环的算法“展开”,流水线实施将呈现吞吐量性能增加一个因子n。 流水线方面的延迟没有任何增加,实现仍然需要3个时钟来传播最终的计算。 同样地,没有定时延时,因为关键路径仍然只包含一个乘数。

展开迭代循环会增加吞吐量。

设计这样的展开循环缺点是面积增加。迭代实现需要单个寄存器和乘数(以及一些控制逻辑未在图中显示),而流水线实现在每个流水线阶段需要X和XPower的单独寄存器和单独的乘法器。 第2章讨论了区域优化。

展开迭代循环的不足是区域的比例增加。

1.2

低延迟设计是将数据从输入传递到输出设计得尽可能短,通过最小化中间处理延迟来提高速度。 通常,低延迟设计需要采用并行,删除流水线和逻辑可能会缩短设计中的吞吐量或最大时钟速度。

回顾我们的3权力示例,没有明显的延迟优化

在每个连续乘法时进行迭代实现

操作必须注册下一个操作。 流水线实施,

然而,减少延迟具有明确的途径。请注意,在每个管道阶段,每次乘法的乘积必须等到下一个时钟沿才会传播到下一阶段。 通过删除流水线寄存器,我们可以最小化输入时间输出:

module power3(

output [7:0] XPower,

input [7:0] X

);

reg [7:0] XPower1, XPower2;

reg [7:0] X1, X2;

assign XPower = XPower2 * X2;

always @* begin

X1 = X;

XPower1 = X;

end

always @* begin

X2 = X1;

XPower2 = XPower1*X1;

end

endmodule

在上面的例子中,这些寄存器被从管道中删除。 每个阶段是前面的组合表达式,如图1.3所示。这个设计的表现是吞吐量frac14;8位/时钟(假设每个时钟有一个新的输入)延迟frac14;在一个和两个乘法器延迟之间,0个时钟时间frac14;关键路径上有两个乘法器延迟,通过删除流水线寄存器,我们减少了此设计的延迟低于单个时钟周期。

通过删除管道寄存器可以减少延迟。

缺点显然是体现在时间上。 理论上以前的实现运行系统时钟周期接近单个乘法器的延迟,但在低延迟实现中,时钟周期必须至少为两个乘法器延迟(取决于实现)加上关键路径中的任何外部逻辑。

删除流水线寄存器的不足是在寄存器之间组合延迟会增加。

1.3定时

时间是指设计的时钟速度。 设计中的两个顺序元素的最大延迟将决定最大时钟速度。 这个想法时钟速度存在于比速度/区域权衡更低的抽象层次上,在本章其他地方讨论的时钟速度,一般与这些拓扑结构无直接关系,尽管在这些架构中的权衡一定会对时间有影响。例如,不知道是否流水线拓扑将运行速度比迭代速度快,从而不了解详细信息实施。可以定义最大速度或最大频率根据直接和众所周知的最大频率方程(忽略时钟到时钟抖动):

公式1.1 最大频率

其中Fmax是时钟的最大允许频率; Tclk-q是时钟到达数据到达Q; Tlogic是通过逻辑之间的传播延迟触发器; Trouting是路由触发器之间的延迟; Tsetup是最小时间数据必须在时钟的下一个上升沿(建立时间)之前到达D; Tskew 是发射触发器和捕捉触发器之间的时钟传播延迟。

接下来的部分描述了改进定时性能所需的各种方法和权衡。

1.3.1添加寄存器层

架构时序改进的第一个策略是添加中间件层的寄存器到关键路径。 这种技术应该高度使用流水线设计,其中额外的时钟周期延迟不会违反设计规范,进一步添加寄存器对整体功能不会产生影响。例如,假设以下FIR(有限冲动)的架构响应)实现不符合时间:

在上述示例中,加法器与具有管道的乘法器分离如图1.5所示。

乘数是流水线的好选择,因为计算可以很容易地分解成tage。 通过将乘法器和加法器分成几个可以单独注册的阶段,可以进行额外的流水线化。

通过将关键路径划分成两个较小延迟的路径来增加寄存器层来提高定时。

这些功能的各种实现在其他章节中有所介绍,但是一旦将架构分解成阶段,额外的流水线与上述示例一样简单。

1.3.2并行结构

架构时序改进的第二个策略是重组关键路径,使逻辑结构并行实现。只要当前通过串行串的逻辑进行评估的功能可以并行分解和评估,就应该使用这种技术。例如,假设以前各节讨论的标准流水线功率3设计不符合时间。为了创建并行结构,我们可以将乘数分解为独立运算,然后重组。 例如,8位二进制乘法器可以由半字节A和B表示:

X ? {A, B};

其中A是最重要的半字节,B是最不重要的:因为被乘数等于我们的权力-3示例中的乘数,所以乘法运算可以重组如下:

X X frac14; {A, B} {A, B} frac14; {(A A), (2 A B), (B B)};

这将我们的问题减少到一系列4位乘法,然后重新组合产品。 这可以通过以下模块来实现:

(程序略)

通过将乘法运算分解为可以并行执行的较小的运算,最大延迟通过任何子结构减少到最长的延迟。

将逻辑功能分成若干可以并行评估的较小功能,可将延迟延迟到最长的子结构。

1.3.3平整逻辑结构

架构时序改进的第三个策略是平坦化逻辑结构。这与上一节中定义的并行结构的思想密切相关,但是特别适用于由于优先级编码而链接的逻辑。通常,综合和布局工具足够巧妙地复制逻辑以减少扇出,但是它们不够智能,不能破坏以串行方式编码的逻辑结构,也不具有足够的与优先级要求相关的信息。 例如,考虑以下来自用于写入四个寄存器的地址解码的控制信号:

(代码略)

在上述示例中,每个控制信号相对于其他控制信号以优先级编码。 这种类型的优先级编码实现如图1.7所示。

如果控制线是来自另一个模块中的地址解码器的选通,则每个选通与其他选通相互排斥,因为它们都表示唯一的地址。 但是,在这里我们将其编码为优先级决定。 由于控制信号的性质,上述代码将完全像并行编码一样运行,但综合工具不太可能足够认识到这点,特别是如果地址解码发生在另一层之后 的寄存器。

为了消除优先级,从而平滑逻辑,我们可以对此模块进行编码,如下所示:

(图略)

从门级实现可以看出,不使用优先级逻辑,如图1.8所示。 每个控制信号独立地起作用并独立地控制其对应的通路位。

通过删除不需要的优先级编码,逻辑结构变平且路径延迟减少。

1.3.4注册平衡

第四种策略称为寄存器平衡。从概念上讲,这个想法是寄存器之间均匀地重新分配逻辑,用于任何两个寄存器之间的最坏情况下的延迟最小化。当逻辑在关键路径和相邻路径之间高度不平衡时,应该使用这种技术。 因为时钟速度是仅限于最坏情况的路径,只能采取一个小的改变来成功地重新平衡关键逻辑。许多综合工具也有一个称为寄存器平衡的优化。该特征基本上将以预定的方式识别特定的结构并以逻辑重新定位寄存器。这对于普通结构有用,如大型乘法器,优化效果时有限的,不会改变你的逻辑,也没有认识到自定义的功能。根据技术,可能需要更昂贵的综合工具来实现。因此,理解这个概念并具有在自定义逻辑结构中重新分配逻辑的能力是非常重要的。

(图略)

第一个注册阶段由rA,rB和rC组成,第二阶段由Sum组成。 第1和第2阶段之间的逻辑是所有输入的加法器,而输入和第一个寄存器级之间的逻辑不包含逻辑(假定为该模块提供的输出被注册),如图1.9所示。

如果通过加法器定义了关键路径,那么关键路径中的一些逻辑可以移回到一个阶段,从而平衡两个寄存器阶段之间的逻辑负载。 考虑以下修改,其中一个添加操作被移回到一个阶段:

(程序略)

现在我们已经将添加操作的一回输入和第一暂存器级之间的一个阶段。 这平衡了流水线阶段之间的逻辑,并减少了关键路径,如图1.10所示。

寄存器平衡通过将组合逻辑从关键路径移动到相邻路径来提高定时。

1.3.5重新排序路径

第五个策略是重新排序数据流中的路径以最小化关键路径。每当多个路径与关键路径相结合时,应该使用这种技术,并且组合路径可以被重新排序,使得关键路径可以更靠近目的地寄存器移动。有了这个策略,我们只会关注任何给定的寄存器组之间的逻辑路径。 介绍以下模块:

(图和程序略)

在这种情况下,假设关键路径在C和Out之间,并且在到达决策多路复用器之前由一个与两个门串联的比较器组成。 如图1.11所示。 假设条件不是互斥的,我们可以修改代码来重新排序比较器的长延迟:

通过重组代码,我们已经将一个门从比较器的关键路径中移出,如图1.12所示。 因此,通过仔细注意特定功能如何编码,我们可以直接影响时序性能。

可以通过重新排序与关键路径相结合的路径,使某些关键路径逻辑更接近目标寄存器,从而可以改善时序。

1.4要点摘要

1-高吞吐量架构是使设计可以处理的每秒位数最大化的架构。

2-展开迭代循环会增加吞吐量

3-展开迭代循环的惩罚是面积成比例增加。

4-低延迟架构是将模块输入到输出的延迟最小化的架构。

5-通过删除管道寄存器可以减少延迟。

6-删除流水线寄存器的惩罚是寄存器之间组合延迟的增加。

7-时间是指设计的时钟速度。当任何两个顺序元件之间的最大延迟小于最小时钟周期时,设计满足定时。lt;

全文共6817字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[143442],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。