USR
USR
module tb_UniversalShiftRegister_4bit;
reg clk;
reg reset;
reg [2:0] control;
reg serial_in_left;
reg serial_in_right;
reg [3:0] parallel_in;
wire [3:0] data_out;
// Clock generation
always #5 clk = ~clk;
initial begin
// Initialize inputs
clk = 0;
reset = 1;
control = 3'b000;
serial_in_left = 1;
serial_in_right = 0;
parallel_in = 4'b1010;
// Test left shift (SISO with serial input from the left)
control = 3'b001;
serial_in_left = 1;
#10;
// Test right shift (SISO with serial input from the right)
control = 3'b010;
serial_in_right = 0;
#10;
// Complete simulation
$stop;
end
initial begin
$monitor("Time = %0t | Control = %b | Data_out = %b | Serial_in_left = %b |
Serial_in_right = %b | Parallel_in = %b",
$time, control, data_out, serial_in_left, serial_in_right,
parallel_in);
end
endmodule