触发控制单元是高速数据采集系统的重要组成部分,而可变长度移位寄存器在触发控制单元中起弹性缓存、数控延迟等作用。触发控制单元根据不同的条件设置时间窗口,并对窗口内的数据进行操作,在线完成实时事例选判和控制。由于高速数据采集系统的采样频率高,单位时间内产生的数据和事件多,不同时间窗口所需的移位寄存器的长度变化会很大。一方面,触发控制单元作为高速数据采集系统的一个组成部分,常常与系统的其他组成部分共享有限的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的可变长度移位寄存器。
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的移位寄存器的进位输出。
利用Spartan-3系列芯片的一个CLB(相当于8个基本逻辑单元)就可以构成N=128的可变长度移位寄存器,如图5所示。作为对比,如果不调整FPGA芯片类型与移位寄存器结构类型的搭配,比如直接采用Altera Cyclone II芯片,按结构A实现N=128的可变长度移位寄存器,则需消耗169个基本逻辑单元(由Quartus II编译)。