Cyclone的M4K可以配置移位寄存器使用。Handbook里介绍关 于移位寄存器不多,就两段话加一个图,这让特权同学走了不少弯路才算搞明白怎么回事。
大体上,就是一个位宽为w的移位输入shift_in_data和移位输出shift_out_data,一个输入时钟信号shift_clk作为数据移入或者移除锁存信号,可选的时钟使能输入信号和异步清除输入信号。还有一个taps信号,这个可以是一个大信号,也可以是好多个小信号,后面再详细说。
这个移位寄存器的使用说简单其实很简单。配置输入输出的数据位宽w,移位寄存器的一个taps位宽m,总的taps数量n(相当于数据深度)。这三个参数乘积就是占用的M4K存储大小。从上面 的图里,移位数据会每个clk输入一个shift_in_data, 同时输出一个shift_out_data数据,而M4K内部则是每m个clk周期移位一次,一次是移动m位,如下图: