Advertisement

基于FPGA的数字信号处理【1.3】

阅读量:

2.3 FPGA设计性能描述指标

从体系结构角度来看,在 FPGA 设计与 CPU 架构 processor 的核心区别主要体现在两者的设计理念和功能划分上

这种差异的核心表现在于它们所采用的编程语言存在显著差异

流水线技术作为一种被广泛应用于 FPGA 设计中的并行处理优化方法

时钟基准频率

通过该模型可确定系统的最大运行时钟频率为Fmax。受约束于系统时钟周期T必须满足

在式中描述中:

2.延迟(Latency)
延迟表明数据从输入端到输出端所经历的时间长度。常用时间单位的周期来衡量这种现象。如图2.23所示,在该系统中输入数据依次经过E、F、G三个组件后才能到达最终输出端口。具体来说:

  • 操作E所需时间为两个时间单位;
  • 操作F所需时间为三个时间单位;
  • 操作G所需时间为一个时间单位;
    因此总耗时为六个时间单位(即6)。由此可知:任何两个节点之间的延迟等于其路径上各操作或模块所需时间单位的总和。

3.数据吞吐量(Throughput)
衡量了系统接收和处理输入数据的能力,通常以时钟周期为指标计算。具体而言,则是以两次输入数据之间的间隔时间来衡量。以图2.23为例,则相邻两次输入数据的时间间隔为6个时钟周期;因此其数据吞吐量为6次/时钟周期。若将图2.23的操作方式改采流水线方式如图2.24所示,则相邻两次输入数据的时间间隔缩短至3个时钟周期;此时的数据吞吐量即提升至3次/时钟周期。由此可见流水线技术有助于提升系统的吞吐量;但引入流水寄存器会带来延迟问题;因此在设计流水线系统时需综合考虑吞吐量与延迟两方面的性能指标

4.数据率(Data Rate)
数据率与数据吞吐量之间有着密切的关系,如式(2.4)所示。数据率等于系统时钟频率乘以数据吞吐量的倒数。这里,数据吞吐量以时钟周期个数来表示。式(2.4)不难理解,因为相邻两次输入数据的时间间隔反映了系统的处理能力,这个能力也限定了输入数据率

2.4 FPGA设计中的数据格式

2.4.1 浮点数基础知识

浮点数包含四个组成部分:符号位(Sign Bit)、尾数(Mantissa)亦称有效数据(significand)、基数(Radix)以及指数(Exponent);如图2.25所示。

本文旨在阐述IEEE-754标准中采用的二进制浮点数体系[5]。该体系基于基数为2的原则构建数值表示系统,并通过类似图示形式进行展示(如式(2.5)所示)。其中s代表符号位,m代表尾数值,e代表指数的实际值,n则对应于该浮点数值本身。

IEEE-754标准定义了三种浮点数格式:单精度型、双精度型和扩展精度型。其中单精度型占据32位内存空间,在C语言中对应类型是float;而双精度型则占据了64位内存空间,在C语言中对应的类型是double。本节仅对单 precision 和 double precision 浮点数格式进行详细阐述。

当二进制序列E既不全部为0也不全部为1时

在式中表示法中,请注意:|E|代表二进制序列对应的十进制数值;bias值即偏移量;而k则指明指数位宽度。其中k代表指数位宽度,在单精度情况下等于8。因此其偏移量bias等于2^{(k-1)}-1即等于2^{7}-1= 127.例如取E=\texttt{‘}\texttt{’}时(如图所示),相应的十进制数值则计算如下: $$

\vert E \vert = (2^7) + (2^3) = (4) + (8) = (9).

对于规格化的浮点数来说,则尾数的小数点左侧隐含一位为零(或一),其尾数m的计算公式基于此进行定义。

其中M定义为二进制形式"1"后跟若干位数字序列"..."以及尾随零组成的数值表示形式中的一部分,在这种情况下省略的部分均为零值。那么将该数值左移一位的操作即变为将二进制表示中的"..."这一部分依次向前移动一位,并在最高有效位前补一个"..."符号;代入公式(2.7)后得到结果m= (计算过程详细展开) = 1.5625;随后获取s、m、e三个参数之后即可通过公式(2.5)进行相应的浮点数值计算;比如图中的情况...

当 s 等于 0 时, e 等于 9, m 等于 1.5625 时, 计算得 n 等于 (-1) 的 0 次方乘以 1.5625 的 9 次方, 结果等于约 55.5112。单精度规格化浮点数具有以下特性:

(i)E 所表示的二进制序列既不全为零也不全是 1, 因此满足 0 < |E| < 2^{8} - 1。

(ii)尾数的实际值 m 的最小可能值是 1, 这对应于 M 全部位均为零;而最大可能值则接近但小于 2, 即当 M 全部位均为一的时候 m 接近但小于 2。

2.非规格化
如果E的所有二进制位均为零,则该浮点数被视为非规格化形式。这种浮点数被称为非规格化形式,在这种情况下,e和m的计算极为简便。具体参考式(2.9)中的表达,请注意式中bias仍保持127与式(2.6)一致的特点。

将式(2.9)代入式(2.5)可得单精度非规格化浮点数的计算公式为

通过采用非规格化的数值形式,则能够表示零值。当将符号位S设为1并令其他各位全部置零时,则得到-0.0;类似地,若令所有各位均置零,则得到+0.0。根据式(2.9)的结果可知,变量m的有效取值范围是: 0 ≤ m ≤ 1 - 2^{-23} ,其中当m=1时有m<1成立,因此,非规格化浮点数所能表示的数值的最大绝对值是(1 - 2^{-23}) × 2^{-126} ,而最小绝对值则是零。这一特性表明,非规格化数的一个重要应用即是用以表示那些非常接近于零的小数值,并且这些小数是以等间距逐渐趋近于零的状态出现的,这在计算机运算中被称为"渐近下溢"(Graduallyunderflow)属性。

当指数部分E的所有二进制位均为1时,则该数值被视为特殊数值。具体而言:如果尾数M的所有二进制位均为零,则该特殊数值代表无穷大;若符号位S设为1,则该无穷大为负无穷大;否则则表示正无穷大;然而,如果尾数M并非全零状态,则该特殊数值被定义为NaN(Not a Number),这表明其不是一个合法实数类型的结果。

对于单精度浮点运算器而言,上述三种特殊情况的具体表现形式如表2.1所示

IEEE-754标准中所定义的双精度浮点数格式如图2.28所示,并由64个二进制位组成。其中具体来说包括一个符号域S(占据最高有效位置)、一个指数字段E(占前11 bits)以及一个52-bit的尾数值域M。同样地,该数值格式被划分为规格化值、非规格化值以及特殊值三类情况,其基本架构与单精度浮点数相似,因此在此不做详细展开,直接参考表2.2中的相关内容即可。

根据表2.2的数据,在规格化双精度浮点运算中,其能表示的最大绝对值上限为(1−2⁻⁵²)×2¹⁰²³,在十进制科学记数法中对应约为1.8×10³⁸;而最小正数值则为1.0×2⁻¹⁰²²,在十进制下约为2.2×10⁻³⁰⁸。通过与单精度和双精度格式进行对比可以看出,规格化与非规格化的存在与否直接影响数据精度和动态范围。因此可知浮点数的数值范围主要由数据格式与位宽决定。

4.浮点数运算 为了便于阐述,在此采用基数为10的浮点数进行说明。该类运算的具体实现过程可参考图2.29和图2.30分别展示加法与乘法的操作流程。

2.4.2 定点数基础知识

定点数值指一类小数点位置固定不变的数据。在探讨定点数值时,通常会涉及二进制表示中的原码与补码。

数字电路的工作原理基于高低电平分别代表1和0这一基础。正确运用二进制计数法的基础在于理解其数字表示特点:每一位都是一个独立的信息单元,在不同的位置上具有不同的权值——即所谓的"权"或"值"的概念在计算机体系中扮演着至关重要的角色。

对于一个由N个比特组成的二元数码系统来说,在不带符号的情况下(即仅用于表达非负数值),它能够表示的无符号整数值范围是从0到2N−1(包括这两个端点)。而当引入符号位之后,则可以在同样的宽度下扩展其表达能力:所能表示的最大正数值为2{N-1}-1(即所有比特均为0的情况),而最小负值则为-2^{N-1}(即最高有效位被用作符号位)。需要注意的是,在这种情况下最高有效位不再像常规情况下那样作为单纯的位置标识符——而是承担着区分正负的关键作用。

进一步地,在4位二进制原码中从最高位MSB(最显著位)至最低位LSB(最不显著位)依次纵向排列展开,并如图2.31所示进行展示。其中DEC标记的是十进制数值。可以看到,在最低位处波形变化速率是次低位的两倍,在次低位处则是次高位的两倍,在次高位处又是最高位的两倍这一规律的存在为设计等占空比具有2整数幂分频器提供了重要依据同时也为ADC(模拟数字转换器)芯片测试提供了方法这种观察启发我们从多角度审视事物正如宋代著名诗人苏轼所言:“横看成岭侧成峰远近高低各不同”。

在设计计数器时常见的是使用无符号整数,在数学运算中通常会采用有符号整数。这涉及到如何获得负整数的二进制补码。表2.5列举了4位二进制补码与有符号整数值之间的对应关系,并详细说明了将二进制补码转换为有符号整数值的方法。例如,在具体实现中可能会遇到两种不同的表达方式:一种是-4=1×(-8)+1×4+0×2+0×1;另一种是-4=(-1)¹ ×8 + 1×4 + 0×2 + 0×1。这里第二种表达方式旨在突出说明:当存在一个有效位时(即S=1),其对数值大小的影响可表示为(-1)^S × 8。通过对比表中的数据可以看出,在相同条件下,-7的四位二进制补码与其绝对值9的原码表示是相同的;而当计算它们绝对值之和时会得到一个特定的结果:即在四舍五入的情况下得到的结果可能有所不同?或者是否应该考虑到某种修正项?另外需要注意的是,在某些特殊情况下可能会出现偏差?比如当存在多个有效位时应该如何处理?为了更好地理解这一过程,请参考图中的相关内容。

根据图2.32所示的求补码的方法,求取有符号整数-4的4位二进制补码可如下进行:
方法1:24 -|-4|=12,12以4位二进制原码表示为1100,这即为-4的4位二进制补码;
方法2:|-4|=4,4以4位二进制原码表示为0100,其反码为1011,加1为1100;
方法3:|-4|=4,4以4位二进制原码表示为0100,逐位取反直至最后一个1为止,即为1100,次高位1及其后面的两个0保持不变。
同样的方法可知,-4的5位二进制补码为11100。不难发现,11100是1100将符号位扩展一位所得(所谓符号位扩展,是指将符号位向高位复制)。这说明符号位扩展是不改变数值大小的,认识这一点是非常重要的。
根据上述有符号整数与二进制码的对应关系,对于给定的有符号整数X可由式(2.11)确定其以二进制补码表示时的最小位宽Ws 。

式中 ,floor 表示向下取整;ceil 表示向上取整。当 X>0 时 ,floor(log2 X)确定了权值位为1 的最高权值位的标号(最低标号为 0 ,如表 2.5 中 2 的指数位所示);当 X<0 时 ,ceil(log2 |X|)确定了权值位为1 的最高权值位的标号 ,此时将符号位视为权值位 ,与表 2.5 一致 。对于无符号整数 ,由于没有符号位的存在 ,因此在进行二进制原码表示时所需 的最小二进制表示宽度为

在有符号和无符号整数中,它们都被视为典型的定点数值。其中S表示符号位,在该定点数值中使用S表示符号。其小数点的位置固定位于数据的最低位之后的位置,并且这种数值表示方式在计算机运算中有着广泛的应用。如图2.33所示,在这种定点数值体系下进行运算会更加高效和精确。

在图2.33所示的结构中, 每一位的位置具有对应的权值设定, 其具体数值等于2的i次方, 其中i代表该位的位置编号 (i=0,1,…,w-1)。由此可知, 对于具有字长w的有符号整型变量vs而言, 它们的数值计算方式与无符号整型变量vu有所不同: vs采用补码形式表示数值; vu采用简单的二进制形式表示数值。其中, bi取值于0或1, 表示第i位所对应的二进制数字信息

第二类定点数据格式定义称为"定点纯小数", 它们的共同特点是: 整数值恒定为零 (即十进制的小数值范围限定在[−1, 0)之间)。如图2.34所示的数据格式展示了这一概念: 带有符号信息的是有符号定点纯小数 (S=1), 而无符号定点纯小数 (S=0) 则不携带此类信息。其中的小点位置位于所有二进制数字构成串的最左侧位置

全部评论 (0)

还没有任何评论哟~