Files
kernels/hw/rtl/libs/VX_shift_register.v
Blaise Tine f3721c523f minor update
2020-07-28 06:02:32 -04:00

50 lines
1.1 KiB
Verilog

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