移位寄存器

移位寄存器复位与不复位的区别

作者:胡建东,玩儿转FPGA

实现一个4bit的移位寄存器如下,不带复位
module shift_reg(

input clk,

input rst,

input din,

output dout

);

reg [ 3:0] buff;

assign dout = buff[3];

always@(posedge clk) begin buff[3:0] <= {buff[2:0],din}; end

endmodule

下图是ISE14.7实现后的结果如下图所示,编译器直接把他综合进了一个SRL16里面,也就是专用的移位寄存器模块,只需要一个LUT就可以实现16bit以内的移位

Xilinx FPGA中SRL(移位寄存器)资源

SRL(移位寄存器)资源,在FPGA中都有,不过是叫不同的名字。Xilinx FPGA内部的LUT有个特殊功能,就是可以配置成可变长度SRL。
5输入的一个LUT可以变成32bit 的SRL
6输入的,可以变成64bit的SRL
所以,你写的SRL可能被综合成LUT。
可以定义移位长度的移位寄存器。
就是用一个lut可以实现16位的移位寄存器。

SRL16 的是 16bit移位寄存器查找表 // 16-Bit Shift Register Look-Up-Table (LUT)

在一个LUT中可以实现16个FF移位的功能!
SSRL16 SRL16_inst (
.Q(Q), // SRL data output
.A0(A0), // Select[0] input
.A1(A1), // Select[1] input
.A2(A2), // Select[2] input
.A3(A3), // Select[3] input
.CLK(CLK), // Clock input
.D(D) // SRL data input
);

Xilinx 官网的说明——原理

同步内容