// [1] 8-bit Shift-Left Register with Positive-Edge Clock,
// Serial In, and Serial Out
// ---------------------------------------------------------------
module v_shift_registers_1 (C, SI, SO);
input C,SI;
output SO;
reg [7:0] tmp;
always @(posedge C)
begin
tmp <= tmp << 1;
tmp[0] <= SI;
end
assign SO = tmp[7];
endmodule
/// [2] 8-bit Shift-Left Register with Negative-Edge Clock, Clock Enable,
// Serial In, and Serial Out
// ------------------------------------------------------------------------------------
module v_shift_registers_2 (C, CE, SI, SO);
input C,SI, CE;
output SO;
reg [7:0] tmp;
always @(negedge C)
begin
if (CE)
begin
tmp <= tmp << 1;
tmp[0] <= SI;
end
end
assign SO = tmp[7];
endmodule
/// [3] 8-bit Shift-Left Register with Positive-Edge Clock,
// Asynchronous Clear, Serial In, and Serial Out
// --------------------------------------------------------------
module v_shift_registers_3 (C, CLR, SI, SO);
input C,SI,CLR;
output SO;
reg [7:0] tmp;
always @(posedge C or posedge CLR)
begin
if (CLR)
tmp <= 8'b00000000;
else
tmp <= {tmp[6:0], SI};
end
assign SO = tmp[7];
endmodule
/// [4] 8-bit Shift-Left Register with Positive-Edge Clock, Synchronous Set,
// Serial In, and Serial Out
// ---------------------------------------------------------------------------------
module v_shift_registers_4 (C, S, SI, SO);
input C,SI,S;
output SO;
reg [7:0] tmp;
always @(posedge C)
begin
if (S)
tmp <= 8'b11111111;
else
tmp <= {tmp[6:0], SI};
end
assign SO = tmp[7];
endmodule
/// [5] 8-bit Shift-Left Register with Positive-Edge Clock,
// Serial In, and Parallel Out
// ---------------------------------------------------------
module v_shift_registers_5 (C, SI, PO);
input C,SI;
output [7:0] PO;
reg [7:0] tmp;
always @(posedge C)
tmp <= {tmp[6:0], SI};
assign PO = tmp;
endmodule
/// [6] 8-bit Shift-Left Register with Positive-Edge Clock,
// Asynchronous Parallel Load, Serial In, and Serial Out
// ------------------------------------------------------------
module v_shift_registers_6 (C, ALOAD, SI, D, SO);
input C,SI,ALOAD;
input [7:0] D;
output SO;
reg [7:0] tmp;
always @(posedge C or posedge ALOAD)
begin
if (ALOAD)
tmp <= D;
else
tmp <= {tmp[6:0], SI};
end
assign SO = tmp[7];
endmodule
/// [7] 8-bit Shift-Left Register with Positive-Edge Clock,
// Synchronous Parallel Load, Serial In, and Serial Out
// ------------------------------------------------------------
module v_shift_registers_7 (C, SLOAD, SI, D, SO);
input C,SI,SLOAD;
input [7:0] D;
output SO;
reg [7:0] tmp;
always @(posedge C)
begin
if (SLOAD)
tmp <= D;
else
tmp <= {tmp[6:0], SI};
end
assign SO = tmp[7];
endmodule
// [8] 8-bit Shift-Left/Shift-Right Register with Positive-Edge Clock,
// Serial In, and Parallel Out
// -------------------------------------------------------------------
module v_shift_registers_8 (C, SI, LEFT_RIGHT, PO);
input C,SI,LEFT_RIGHT;
output PO;
reg [7:0] tmp;
always @(posedge C)
begin
if (LEFT_RIGHT==1'b0)
tmp <= {tmp[6:0], SI};
else
tmp <= {SI, tmp[7:1]};
end
assign PO = tmp;
endmodule
// Serial In, and Serial Out
// ---------------------------------------------------------------
module v_shift_registers_1 (C, SI, SO);
input C,SI;
output SO;
reg [7:0] tmp;
always @(posedge C)
begin
tmp <= tmp << 1;
tmp[0] <= SI;
end
assign SO = tmp[7];
endmodule
/// [2] 8-bit Shift-Left Register with Negative-Edge Clock, Clock Enable,
// Serial In, and Serial Out
// ------------------------------------------------------------------------------------
module v_shift_registers_2 (C, CE, SI, SO);
input C,SI, CE;
output SO;
reg [7:0] tmp;
always @(negedge C)
begin
if (CE)
begin
tmp <= tmp << 1;
tmp[0] <= SI;
end
end
assign SO = tmp[7];
endmodule
/// [3] 8-bit Shift-Left Register with Positive-Edge Clock,
// Asynchronous Clear, Serial In, and Serial Out
// --------------------------------------------------------------
module v_shift_registers_3 (C, CLR, SI, SO);
input C,SI,CLR;
output SO;
reg [7:0] tmp;
always @(posedge C or posedge CLR)
begin
if (CLR)
tmp <= 8'b00000000;
else
tmp <= {tmp[6:0], SI};
end
assign SO = tmp[7];
endmodule
/// [4] 8-bit Shift-Left Register with Positive-Edge Clock, Synchronous Set,
// Serial In, and Serial Out
// ---------------------------------------------------------------------------------
module v_shift_registers_4 (C, S, SI, SO);
input C,SI,S;
output SO;
reg [7:0] tmp;
always @(posedge C)
begin
if (S)
tmp <= 8'b11111111;
else
tmp <= {tmp[6:0], SI};
end
assign SO = tmp[7];
endmodule
/// [5] 8-bit Shift-Left Register with Positive-Edge Clock,
// Serial In, and Parallel Out
// ---------------------------------------------------------
module v_shift_registers_5 (C, SI, PO);
input C,SI;
output [7:0] PO;
reg [7:0] tmp;
always @(posedge C)
tmp <= {tmp[6:0], SI};
assign PO = tmp;
endmodule
/// [6] 8-bit Shift-Left Register with Positive-Edge Clock,
// Asynchronous Parallel Load, Serial In, and Serial Out
// ------------------------------------------------------------
module v_shift_registers_6 (C, ALOAD, SI, D, SO);
input C,SI,ALOAD;
input [7:0] D;
output SO;
reg [7:0] tmp;
always @(posedge C or posedge ALOAD)
begin
if (ALOAD)
tmp <= D;
else
tmp <= {tmp[6:0], SI};
end
assign SO = tmp[7];
endmodule
/// [7] 8-bit Shift-Left Register with Positive-Edge Clock,
// Synchronous Parallel Load, Serial In, and Serial Out
// ------------------------------------------------------------
module v_shift_registers_7 (C, SLOAD, SI, D, SO);
input C,SI,SLOAD;
input [7:0] D;
output SO;
reg [7:0] tmp;
always @(posedge C)
begin
if (SLOAD)
tmp <= D;
else
tmp <= {tmp[6:0], SI};
end
assign SO = tmp[7];
endmodule
// [8] 8-bit Shift-Left/Shift-Right Register with Positive-Edge Clock,
// Serial In, and Parallel Out
// -------------------------------------------------------------------
module v_shift_registers_8 (C, SI, LEFT_RIGHT, PO);
input C,SI,LEFT_RIGHT;
output PO;
reg [7:0] tmp;
always @(posedge C)
begin
if (LEFT_RIGHT==1'b0)
tmp <= {tmp[6:0], SI};
else
tmp <= {SI, tmp[7:1]};
end
assign PO = tmp;
endmodule
No comments:
Post a Comment