Files
kernels/hw/rtl/libs/VX_shift_register.v
2020-08-05 15:53:59 -07:00

42 lines
995 B
Verilog

`include "VX_platform.vh"
module VX_shift_register #(
parameter DATAW = 1,
parameter DEPTH = 1
) (
input wire clk,
input wire reset,
input wire enable,
input wire [DATAW-1:0] in,
output wire [DATAW-1:0] out
);
reg [DEPTH-1:0][DATAW-1:0] entries;
if (1 == DEPTH) begin
always @(posedge clk) begin
if (reset) begin
entries <= '0;
end else begin
if (enable) begin
entries <= in;
end
end
end
end else begin
always @(posedge clk) begin
if (reset) begin
entries <= '0;
end else begin
if (enable) begin
entries <= {entries[DEPTH-2:0], in};
end
end
end
end
assign out = entries [DEPTH-1];
endmodule