一般而言,移位寄存器应具备以下部分或全部控制和数据信号特征:
•
时钟
•
串行输入
•
异步置位
/
复位
•
同步置位
/
复位
•
同步
/
异步并行负载
•
时钟使能
•
串行或并行输出
赛灵思
FPGA
器件提供专用
SRL16
和
SRL32
资源 (集成在
LUT
中)。这样无需使用触发器资源即可高效实现移位寄存
器。但是这些元件只支持左
(LEFT)
移位操作,且
I/O
信号数量有限:
•
时钟
•
时钟使能
•
串行数据输入
•
串行数据输出
此外,
SRL
提供用于确定移位寄存器长度的地址输入 (
SRL16
的
A3
、
A2
、
A1
、
A0
输入)。移位寄存器的长度可以是
固定的静态长度,也可以动态调节。
在动态模式下,每当有新的地址施加到地址引脚,在访问
LUT
造成的延迟之后,就会在
Q
输出上提供新的位置值。同
步和异步置位
/
复位控制信号未在
SRL
原语中提供。但是,如果您的
RTL
代码包含复位,则赛灵思综合工具会推断
SRL
周围的其他逻辑,以提供复位功能。
为在使用
SRL
时获得最佳性能,赛灵思建议把最后一级移位寄存器实现在专用
slice
寄存器中。
slice
寄存器与
SRL
相
比,输出相对于时钟时延
(clock-to-out)
更短。这样可以为从移位寄存器逻辑出发的路径提供更大的时序裕量。综合工
具将自动推断此寄存器,除非该资源被示例化或由于属性或跨层级边界优化限制而阻止综合工具推断这样的寄存器。
赛灵思建议您使用
Vivado Design Suite HDL
模板中展示的
HDL
编码样式。
如果要使用寄存器来达到灵活布局芯片的目的,使用下列属性关闭
SRL
推断:
SHREG_EXTRACT = “no”