当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于FPGA的可变长度移位寄存器优化设计

本文以最大可变长度为N、宽度为1bit的移位寄存器为模型,讨论如何从结构上优化可变长度移位寄存器和有效的FPGA实现。至于宽度不为1bit的情况,可以此类推。

  1 可变长度移位寄存器的常用结构

  通常可变长度移位寄存器的结构可分为两种:一种是输入分支型(结构A),如图1所示;另一种是输出分支型(结构B),如图2所示。

  

 

  结构A与结构B有两个共同点:第一,都是由触发器链路加数据流向控制逻辑组成;第二,每级触发器的输入输出都是信号节点,因而各级都需要对本级节点的信号流向进行控制。结构A用n-to-2n译码器来控制信号流向,结构B则用2n:1多路复用器控制信号流向。对于基本逻辑单元为查找表(LUT)+触发器(FF)+多路复用器(MUX)结构的FPGA来说,直接采用结构A与结构B构造较长的移位寄存器时,触发器链和复杂的组合逻辑会消耗很多资源,即这两种结构不宜用于较长的可变长度移位寄存器。

  2 解决方案

  为解决上述问题,可以采用如下两个方法:

  (1)优化功能结构与硬件结构的搭配。根据移位寄存器结构类型,选择适宜的FPGA芯片以提高资源利用率,降低资源消耗。

  (2)优化移位寄存器结构。采用FPGA片内RAM来实现移位寄存器,利用片内RAM速度快、数量大的优点,直接减少基本逻辑单元的消耗,提高资源利用率。

  2.1 优化功能结构与硬件结构的搭配

  通过调整FPGA芯片类型与移位寄存器结构类型的搭配,可以提高资源利用率,降低资源消耗。下面以结构B为例,阐述如何应用Xilinx公司的Spartan-3系列芯片高效地实现N=128的可变长度移位寄存器。

  2.1.1 实现原理

  Spartan-3系列芯片的每个可配置逻辑块CLB[1]如图3所示,包含8个LUT、8个DFF和8个2:1多路复用器(4个F5MUX,2个F6MUX,1个F7MUX,1个F8MUX),而每个LUT都能配置成移位寄存器模式(SRL),相当于一个16级的可逐级寻址的移位寄存器。如图4所示,一个LUT就包含了构成结构B所需的全部要素,从而有效地实现N=16的可变长度移位寄存器[2].Q15是用于多级级联实现N>16的移位寄存器的进位输出。

  

 

  

[!--empirenews.page--]2.1.2 应用示例

 

  利用Spartan-3系列芯片的一个CLB(相当于8个基本逻辑单元)就可以构成N=128的可变长度移位寄存器,如图5所示。作为对比,如果不调整FPGA芯片类型与移位寄存器结构类型的搭配,比如直接采用Altera Cyclone II芯片,按结构A实现N=128的可变长度移位寄存器,则需消耗169个基本逻辑单元(由Quartus II编译)。

  

 

  2.2 优化移位寄存器结构

  通过优化移位寄存器结构,采用FPGA片内RAM来实现移位寄存器,利用片内RAM速度快、数量大的优点,直接减少基本逻辑单元的消耗,提高资源利用率。

  2.2.1 实现原理

  FPGA片内RAM常见有两种,一种是分布式RAM(Distributed RAM),如Xilinx Spartan-3的LUT,每个LUT都可作为16位的RAM使用;另一种是嵌入式块RAM(Block RAM),如Xilinx Spartan-3的18KB块RAM、Altera Cyclone II的4KB块RAM(M4K)。结构A与结构B中,各级都需要对本级节点的信号流向进行控制,这种形式限制了FPGA嵌入式块RAM的使用。为此,设计了结构C——梯级组合型,如图6所示,这种结构非常利于采用片内RAM来实现移位寄存器。

  

 

  分析结构C,梯级组合型有两个要素:一是2:1多路复用器,每个都有单独的控制位,共n个,而且n〈〈N,二者呈指数关系;二是不同长度的移位寄存器组成的梯级,初级(第0级)由20=1个触发器组成,第1级由21=2个触发器链接组成,第2级由22=4个触发器链接组成,……,第N级由2N个触发器链接组成。在梯级组合型的结构中,不需要对每个触发器的输入输出都控制,只需通过控制位BI对各个梯级的输入输出控制就可以实现分辨率为1的长度连续变化,寄存器的长度N=BN×2N+…+B2×22+B1×21+B0×20.

  例如,对于最大N=255(控制字为8位)且采用结构C的可变长度移位寄存器,要实现长度为5的移位寄存器,只需设置控制字为00000101B即可;要实现长度为255的移位寄存器,只需设置控制字为1111111B即可。由于同一个梯级里,除头尾两级外,其他各级不再有信号流向控制,且各梯级触发器链的长度为2n,可以方便地利用FPGA嵌入式块RAM和厂商提供的经过优化的宏功能模块来实现长度较大的梯级,从而提高资源利用率。

  2.2.2 应用示例

  以Altera Cyclone II[3]的M4K为例,每个M4K块RAM有4 608个存储位(其中包括512个奇偶位),操作频率高达250MHz,M4K工作于移位寄存器模式时的结构如图7所示,数据宽度(w)、每段长度(m)、抽头数(n)的关系可方便地在厂商提供的基于RAM的移位寄存器宏模块“altshift_taps”中设置。当w×m×n不大于4 608且w×m不大于36时,消耗一个M4K和少量基本逻辑单元;当不能满足上述两项中任意一项,开发工具会自动连接多个M4K.通过调整w、m、n的组合,M4K能以多种方式高效实现结构C的梯级。

  

 

  例如,构造一个1024位的梯级,可以设置w=1、m=256、n=4,占用13个LUT,8个寄存器,1个M4K;构造一个4 096位的梯级,可以设置w=1、m=256、n=16,依然只占用13个LUT,8个寄存器,1个M4K.为进一步提高M4K的利用率,可以设置w=32、m=128、n=1,只占用12个LUT,7个寄存器,1个M4K就能得到32个长度为128位的移位寄存器段,将这些寄存器段自行连接,用一个M4K能同时得到如下的梯级:128位、256位(2段串连)、512位(2段串连)、1024位(8段串连)、2048位(16段串连),最大限度地利用了M4K的RAM资源。

  作为对比,仍以Altera Cyclone II芯片为例,如果用基于基本逻辑单元的移位寄存器宏模块“LPM_SHIFTREG”来实现1 024位的梯级和4096位的梯级,则分别需1 024(256×4)个LUT和4096(256×16)个LUT,资源开销较大。可见,结构C非常利于实现可变长度较长的移位寄存器。

  可变长度移位寄存器是非常有用的逻辑结构。对高速数据采集系统触发控制单元来说,应用优化后的可变长度移位寄存器可以提高其信噪比,改善其可靠性和灵活性。另外,采用可变长度移位寄存器可以减小死区时间,从而改善触发控制单元重复触发的性能。这些改善在本单位设备的实际应用中起到了良好的作用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭