新一代5G系统的设计十分复杂,而UltraScale器件内置的相关功能,能让这项工作变得更加简单。
即将到来的5G无线通信系统似乎需要支持比目前使用的4G系统更大的带宽(200 MHz及以上),以及大型的天线阵列,以实现更高的载波频率,从而有可能构建小得多的天线元。这些所谓的大规模多输入多输出(MIMO)应用连同更加迫切的延迟需求可将设计复杂度提高一个数量级。
去年年底,赛灵思宣布推出20nmUltraScaleTM系列,目前第一款器件已在运输途中[1,2,3]。这项新技术与之前的28nm7 系列相比具有众多优势,尤其是在无线通信方面。确实,这款新型芯片与赛灵思Vivado®设计套件[4,5]工具的结合完美适用于新一代无线电应用等高性能信号处理设计。
我们来看看针对这类设计UltraScale器件有哪些优势,着重观察架构方面——尤其是当实现一些用于无线数字前端(DFE)应用的最常见功能时,这种增强功能会给DSP48 Slice和Block RAM带来哪些优势。与7 系列相比,UltraScale系列可提供更加密集的布线和时钟资源,能够实现更高的设备利用率,尤其针对高速设计。但是,这些特性通常不能对设计架构产生直接影响,因此我们在这里不做讨论。
UltraScale架构增强功能简介
UltraScale 20nm架构不仅能随着几何节点的迁移提高集成能力,提升架构性能以及降低功率消耗,还包括一些显著增强的全新功能,可直接支持DFE应用。而这些功能对UltraScale Kintex®器件而言尤其重要,为此赛灵思已根据此类设计的需求进行了重大调整。
首先,这些器件包含多达5,520个DSP48 Slice,这几乎是7 系列 FPGA的最大数量(1,920)的三倍(Zynq® - 700 All Programmable SoC为2,020),因此,它可以实现高集成度。比如,一个中型UltraScale FPGA的瞬时带宽就能达到80到100 MHz,您可以利用这一带宽实现完整的8Tx/8Rx DFE系统,而在7 系列架构中,必须使用双芯片解决方案才能实现,因为每个芯片只能有效支持一个4x4系统。如欲了解有关这类设计各项功能的详细信息,敬请参阅赛灵思白皮书WP445“采用赛灵思All Programmable FPGAs以及SoC实现高速无线电设计”[6]。
SerDes 可在最低速度等级器件上支持12.5 Gbps流量,实现最大JESD204B接口连接速度。
受远辐射被动降温的散热限制,将复杂设计集成到单个器件要求大幅降低功耗,以散发热量。UltraScale系列在提供这项功能时,其静态功耗比同等规模的7 系列器件低10%-15%,动态功耗比类似设计低20%-25%。此外,赛灵思还大幅降低了UltraScale产品线的SerDes功耗。
此外,它还存在性能优势。最低速度等级UltraScale器件支持时钟速率高于500MHz的设计,而7 系列器件则要求达到中速等级。然而,即使这样,Block RAM从计时角度来看要求仍然严苛,并且必须选择WRITE_FIRST或NO_CHANGE模式以达到这种性能。不能使用READ_FIRST,因为它的限值在470MHz左右,而另外两种模式可达到530MHz。无论何时NO_CHANGE总是您的最佳选择,因为它同时还能实现最低功耗。
同样,SerDes可在最低UltraScale速度等级上支持高达12.5 Gbps流量,从而实现最大JESD204B接口连接速度,其应很快可在大多数DAC和ADC上实现。同样,最低的UltraScale速度等级还可支持两个最高CPRI等级(7级和8级,其流量分别为9.8304和10.1376Gbps)以及10GE接口,通常用于DFE系统。
此外,UltraScale Kintex资源组合更适合无线电应用,它能够实现逻辑资源的最佳用法。该DSP逻辑比尤其符合DFE设计的典型需求。确切地说,UltraScale Kintex器件拥有每千查找表(LUTs)8-8.5个DSP48 Slice,而7 系列器件只有大概6个。
赛灵思还大幅增加了UltraScale架构的时钟和布线资源。这项增加提高了器件利用率,尤其针对高时钟速率设计。实际上,这样做减少了布线拥塞,设计人员可以实现更好的设计封装和LUT利用率,尤其是使LUT/SRL压缩变得更为高效。用户可以利用这项有意思的架构特性更好地打包设计,从而优化资源利用率以及动态功耗,其中相关逻辑的动态功耗下降系数可达1.7。LUT/SRL的压缩原理包括采用LUT6的两个输出在单个LUT内打包两个不同函数。这样,如果两个LUT5共享相同的输出或内存读取/写入地址,您可以将实现逻辑函数或内存的两个LUT5打包到一个LUT6中。同样,也可以将两个SRL16打包到一个LUT6中。
该特性对于数字无线电设计非常实用,该设计通常将共享同一地址的多个小内存(例如储存滤波系数的ROM)和很多短延迟线(小于16个周期)集成到按时间排列的不同信号路径中。
数据复用功能,尤其是双输入复用器,也将受益于这项特性。但是要想获得较高的时钟速率,必须谨慎使用LUT/SRL压缩。首先,必须用连接到O6/O5 LUT输出的两个触发器以避免发生任何时序问题。基于相同的原因,建议仅对相关逻辑使用这项功能,该策略还能起到限制布线拥塞的作用。
在UltraScale器件中,时钟架构和可配置逻辑块(CLB)均有助于更好地利用器件。尽管CLB仍然以7 系列架构为基础,但现在每个CLB拥有单个Slice(而非两个),其中集成了8个6输入LUT和16个触发器。因此进位链有8位长,且提供更宽的输出复用器。另外,赛灵思还增加了控制类资源(也就是时钟,时钟使能和复位信号均共享于CLB中的存储组件)。
然而,从本质上来讲,还是DSP48 Slice和Block RAM的改进对无线电设计架构的影响最大。我们来详细了解一下。
UltraScale DSP48 Slice架构的优势
图1给出了UltraScale DSP48Slice(DSP48E2)的视图。上面的原理图(图表“a”)显示了详细架构,下面的原理图(“b”)强调了与7 系列Slice(DSP48E1)相比增强的功能。
• 赛灵思将乘法器的宽度从25×18增加到27×18,预加法器宽度也相应增加到27 位。
• 您可以选择预加法器输入端为A或B,输出端集成了一些多路复用器逻辑,从而允许在任意乘法器输入端上(27 位或18 位输入)馈送D±A 或D±B。
• 预加法器输出端可馈送两个乘法器输入(在18 位输入端上有适当的MSB 截断),因此允许计算高达18 位数据的(D±A)² 或(D±B)²。
• 通过额外的W-mux 多路复用器在算术逻辑单元(ALU) 中添加了第四个操作数, 可将其看作输入端C、P 或一个常量值(在FPGA 配置时定义)。这样,使用乘法器时便可以执行一个三输入操作, 如A * B + C + P 或A*B+P+PCIN。值得注意的是,只能在ALU 中添加W-mux 输出(不允许减少)。
• 赛灵思集成了其它逻辑,从而可在X 、Y 或Z 多路复用器输出端中的任意两个之间执行96 位宽异或。实际上此处可提供四个不同模式,1x96位、2x48 位、4x24 位或8x12 位异或操作。
将乘法器尺寸从25×18 扩大到27×18,这对DSP48 Slice 芯片面积的影响极小,但会显著提高对浮点运算的支持。首先,需要指出的是,DSP48E2 可有效支持高达28×18 位或27×19 位符号乘法运算。这是通过用输入端C 处理额外的比特位来实现,如图2,显示了28 位操作数X 和18 位操作数Y 之间的乘法运算。
46 位输出端的45 个最高有效位(MSBs)的计算方式为:
Z[45:1] = X[27:1]*Y[17:0] + X[0]*Y[17:1]
X 的27 个最高有效位和Y 的18位可直接馈送到DSP48E2 乘法器输入端,而X[0]*Y[17:1] 源自外部17 位AND 运算符,并在一个流水线步骤后被发送到输入端C 以匹配DSP48E2延迟。事实上AND 运算符可通过由X[0] 控制的复位引脚将Y[17:1] 直接馈送到寄存器中。同样,外部1 位AND 运算符和用于实现延迟平衡的三时钟周期延迟可用来计算Z,Z[0] 的LSB。
因此您可以执行具有单个DSP48E2 Slice 和18 个LUT/ 触发器对的28×18 位乘法器。这同样适用于使用其它27 个LUT/ 触发器对的27×19 位乘法器。这两种情况下,均可通过W-mux 支持运算结果的收敛舍入。
双精度浮点乘法运算涉及两个运算符的53位非符号尾数的整数乘积。尽管双精度浮点计数法中储存有一个52位数值(m),但它代表的是非符号尾数的小数部分,而实际上其是标准化的1+m值,需要将这些值乘在一起;因此乘法运算将要求使用附加位。考虑到两个53位操作数的MSB都等于1,并适当分解乘法运算从而以最佳方式利用DSP48E2 26×27位非符号乘法器及其改善后的各项功能(例如,由W-mux启动的真正的三输入48位加法器),可以看到,只需6个DSP48E2 Slice和极少的外部逻辑就可以构建53×53位非符号乘法运算。本文未涉及这类实现方式的所有细节,但在上一代7 系列器件上,要实现类似的方法则需要10个DSP48E1 Slice;因此UltraScale架构将需要的Slice数量减少了40%。
DSP48E2的27×18乘法器对于以融合数据路径为基础的应用非常实用。最近,IEEE浮点标准中加入了融合乘累加运算符概念[8]。一般来说,这包括建立浮点运算A*B+C,且乘法器和加法器之间无需明确舍入、标准化和非规范化的数据。当使用传统的浮点运算时,这些功能的代价非常高昂,且占用了最多的延迟时间。可推广这一概念以建立积和运算符,这在线性代数中非常常见(矩阵积,Cholesky分解法)。因此,这种方法在成本或时间紧迫的情况下十分高效,同时要求具备浮点计数法的准确性和动态范围。在无线电DFE应用中,数字预失真功能通常要求一些硬件加速来支持,以提高非线性滤波器系数的更新速度。然后,您可以在FPGA架构中建立一个或多个浮点MAC引擎,以协助软件中运行的系数估算算法(例如,在Zynq SoC的一个ARM®CortexTM-A9核上)。
对于这类算术结构,已经证明如果尾数宽度略有上升,从23位上升到26位,则与真正的单精度浮点实现相比,准确度会有所提高,但会减少延迟和空间占用。UltraScale架构非常适合该用途,因为它只需2个DSP48 Slice就可以打造单精度的融合乘法器,而7 系列器件则需使用3个Slice以及其它架构逻辑。
预加法器集成在位于乘法器前面的DSP48 Slice中,可提供一种高效的对称滤波器实现方式,这在DFE设计中很常见,可以实现数字上变频器(DUC)和数字下变频器(DDC)功能。对于N抽头对称滤波器来说,其输出实例的计算方式如下:
其中x(n)代表输入信号,h(n)代表滤波器脉冲响应,其中h(n)=h(N-1-n)。
因此,成对的输入实例会被馈送入预加法器中,而输出则会进一步乘以相应的滤波器系数。在7 系列架构上,预加法器必须使用DSP48E1的30位输入端(A)以及25位输入端(D),且其输出端需连接乘法器的25位输入端,同时将输入端B布线至18位乘法器输入端。
因此,在建立对称滤波器时,系数数值化后不得超过18位,这样可将阻带衰减限制在85到90dB左右。对于新一代5G无线电系统来说,这也许会成为问题,因为该系统很可能在干扰水平较高的环境下运行,因此也许需要更大的衰减。
通过额外的W-mux多路复用器可将第四个输入操作数添加到ALU中对无线电应用最为有益。
UltraScale架构解决了这个问题,因为可选择预加法器输入端作为A或B,并在输出端集成了一些多路复用逻辑,从而支持将D±A或D±B馈送至任意乘法器输入端(27位或18位输入端)。因此,可支持系数达27位的对称滤波器。赛灵思还为DSP48E2 Slice添加了另一项功能,将预加法器输出端连接至乘法器的两个输入端(在18位输入端上设有恰当的MSB截断)。这样便可以执行多达18位数据的(D±A)²或(D±A)²运算,从而可有效用于评估平方误差项的总和。此类运算在优化问题中十分常见,比如,在实施最小平方解决方案以获得调制解调器均衡器系数时,或按时间排列两个信号时。
毫无争议,通过额外的W-mux多路复用器将第四个输入操作数添加到ALU中对无线电应用最为有益。相比7 系列器件上针对此类设计相同的实现方案,这个操作数通常可以将DSP48需求量减少10%-20%。
只能将W-mux输出加入ALU(不允许减少)中,并可将其动态设置为寄存器C或P内容,或在FPGA配置过程中将其设为常量值(比如用于DSP48输出端的收敛舍入或对称舍入的常量),或只需将其归零。通过这种方式可在使用乘法器时执行真正的三输入运算,如A*B+C+P,A*B+C+PCIN,A*B+P+PCIN,而这在7 系列架构中是不可能实现的。的确,使用乘法器阶段会生成最后两个部分乘积输出,然后将其添加到ALU中,以完成运算(见图1)。因此,启动乘法器后,乘法器将使用ALU的两个输入端并执行一项三输入运算,而7 系列器件则无法执行。
受益于这一额外ALU输入端的两个最主要实例是半并行滤波器和复合乘积累加(MAC)操作数。下面我们将对这两个实例进行详细讲解。
关于滤波器和MAC
在任何DFE应用中,线性滤波器都是最常用的处理单元。在赛灵思 FPGA上集成此项功能后,建议[6]尽可能实现多通道滤波器,因为它的复合采样率(定义为通道数量与每条通道一般信号采样频率的乘积)与该设计运行所用的时钟速率相同。在所谓的并行架构中,每个DSP48 Slice根据数据通道支持单一滤波器系数,从而大幅简化了控制逻辑,并因此最大限度地降低设计资源利用率。
但是由于提高了时钟速率(例如,在最低速度等级UltraScale器件上时钟速率超过500 MHz),且滤波器以相对较低的采样率运行,因此通常会选择时钟速率作为复合采样率的倍数。可尽量提高时钟速率,以进一步减小设计占用的空间,同时降低功耗。在这种情况下,将需建立一个半并行架构,其中每个DSP48会根据通道处理K系数,而K是时钟速率与复合采样率之间的比率。最高效的实现方案包括将滤波器拆分为多个K相位,每个DSP48可处理这些K相位的一个特定系数。
在每个时钟周期中计算出连续多个滤波器输出相位,并将其累加形成一个输出样本(每个K周期一次)。因此,与并行实现方案相比,滤波器输出需要增加一个累加器。这种全精度累加器可作用于较大的数据宽度,等于bS+bC+bF,其中bS和bC分别表示数据样本的位宽度和系数,而bF=Log2N是滤波器的位增长,N是系数总数。因此,常规做法是在DSP48 Slice内实现累加器,以保证支持最高时钟速率并最大限度地降低占用空间和功率消耗。
需要注意的是,各类滤波器都可以生成半并行架构,例如:单频率滤波器、整数型滤波器或分数率内插和抽取滤波器。图3是简化后的7系列和UltraScale实现方块图。图中清晰地突出了UltraScale解决方案的优势,由于其具备W-mux功能,相位累加器可被最后一个DSP48 Slice吸收。
下面我们来思考一下如何实现每个时钟周期产生一个输出单元的全并行复合MAC运算符。众所周知,您可以重写复乘积的等式PI+j.PQ=(AI+j.AQ).(BI+j.BQ),从而根据以下等式仅使用三个真正的乘法运算:
因此,利用内置加法器,您只需三个DSP48(一个用于计算P1,另外两个用来处理PI和PQ输出)就能实现复合乘法器。根据延迟需求以及其中表述的速度性能指令,需要增加一些逻辑以在不同数据路径间平衡延迟。为获取最大速度支持,必须对DSP48实行完全流水线化,从而让运算符整个延迟六个周期。随后在每个输入端增加一个两周延迟线,让实际数据路径和虚构数据路径保持一致。在每个输入位配备四个SRL2,并利用SRL压缩功能将四个SRL2打包到两个LUT中。通过在每个PI和PQ输出端添加累加器来最终完成复合MAC。此外,这个累加器会作用于较大的数据宽度,因此能更好地集成到DSP48 Slice中。图4显示7 系列和UltraScale器件相应的实现方案,从而再一次展示了W-mux集成的优势。PI和PQ DSP48E2 Slice在吸收累加器时可节省40%资源。值得一提的是,该方式还减少了延迟,对一些应用十分有益。
您可以用类似结构构建带有三个真实滤波器的复合滤波器(其中一个具备复合数据和系数),如图5所示。输入信号的真实部分和虚构部分会馈送至两个真实滤波器中,其系数分别为该滤波器系数虚构部分和真实部分的差值和总和。第三个滤波器用系数的真实部分处理并行的输入端真实与虚构部分的总和。当需要建立并行滤波器时,最终可将三个滤波器的输出端结合起来,以生成输出端的真实与虚构组件,其将再次受益于W-mux,这也是DFE应用中使用均衡器的典型状况。
UltraScale内存架构的优势
UltraScale器件集成的Block RAM与7 系列中集成的Block RAM基本相同,但新架构引入了硬件数据级联方案以及动态电源门控能力。图6显示了该级联,其中展示的是同一列中在每个上下相邻的Block RAM间嵌入的数据多路复用器。因此,无需使用其它逻辑资源便能以由下至上的方式建立更大内存。
图6 – UltraScale器件上的BRAM级联
该级联覆盖了器件上的所有整列,但最好将级联的使用限制在单个时钟区域(即12个连续BRAM)以避免时钟偏移并最大限度提升时序性能。此外,它还提供足够的灵活性,可支持该级联功能的不同实现。实际上,您既可以将多路复用器应用到位于可选寄存器前后的Block RAM数据输入端,也可以用于数据输出端。
该级联使建立需要多个BRAM的大型内存成为可能,同时占用空间极少,支持最高时钟速率以及最低功率消耗,而这些在7 系列器件上则无法实现。比如,在7 Se系列器件上,通过配置为16K×2位的八个BRAM(36K)实现存储16位数据的16K内存,以避免外部数据复用,而这样则需要增加逻辑资源和延迟,并会影响计时与布线拥塞。从动态功率角度来说,这种方法效率较低,因为在所有读取或写入操作中都要启 动这八个Block RAM。最佳解决方案包括使用2Kx16位配置,由于这样只需启动一个BRAM,因此消耗的动态功率只有上述方法的八分之一。级联功能连同动态功率门控功能正好可以在UltraScale器件上实现这种效果。
Block RAM级联的另一种直接应用与实现I/Q数据转换功能有关,通常与DFE系统的基带CPRI接口集成。图7展示了通常由一个NxM存储器阵列组成的高级交换架构。N入口流上的连续数据会根据其输出目的地写入到相应的Block RAM中并形成一行,且会从相应的Block RAM以一列的形式读取M出口流。因此,可以用BRAM级联有效实现每一列。
图7 – 数据交换高级架构
如欲了解有关20nmUltraScale系列的更多信息,敬请访问 。
参考文献
1. 赛灵思背景资料,2013年7月,“推出UltraScale架构:业界首款ASIC级All Programmable架构”
2. 赛灵思白皮书 WP435,2013年8月, “赛灵思UltraScale:为您未来架构而打造的新一代架构”
3.赛灵思数据手册DS890,2014年2月6日,“UltraScale 架构和产品简介”
4. 赛灵思背景资料,2013年7月, “Vivado设计套件加速设计生产力的九大理由”
5.赛灵思用户指南UG949,“Vivado 设计套件的设计方法指南”
6. 赛灵思白皮书WP445,2014年1月20日,“采用赛灵思All Programmable FPGA和 SoC实现高速无线电设计”
7. 赛灵思用户指南UG579,“UltraScale 架构——DSP Slice,高级规范用户指南”8. IEEE计算机社团,2008年8月29日,“针对浮点架构的IEEE 标准”
评论
查看更多