This commit is contained in:
lekcyjna123 2026-02-26 15:02:44 +00:00 committed by GitHub
commit 69f1f0922f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 90 additions and 26 deletions

View File

@ -1,33 +1,26 @@
module sar_logic (
input wire clk,
input wire clk,
input wire Op,
input wire En,
input wire Om,
input wire rst,
output reg [6:0] B, // 7-bit
output reg [6:0] BN, // 7-bit
output wire [7:0] B, // 8-bit
output reg [7:0] BN, // 8-bit
output reg [7:0] D // 8-bit
);
reg [3:0] counter = 4'b0000; // 4-bit counter
reg [3:0] counter; // 3-bit counter
assign B = D;
always @(posedge clk) begin
always @(posedge clk) begin
if (rst) begin
B <= 7'b0000000;
BN <= 7'b0000000;
D <= 8'b00000000;
counter <= 4'b0000;
end else if (En && (Op ^ Om)) begin
if (counter < 7) begin
D <= D | ({7'b0, Op} << counter);
B[counter % 7] <= (Op) ? 1'b1 : 1'b0;
BN[counter % 7] <= (Om) ? 1'b1 : 1'b0;
counter <= counter + 1'b1;
end
BN <= 8'b0000000;
D <= 8'b00000000;
counter <= 4'b0000;
end else if (En && (Op ^ Om) && ~(counter==8)) begin
D[counter[2:0]] <= Op;
BN[counter[2:0]] <= Om;
counter <= counter + 1'b1;
end
end
end
endmodule

View File

@ -10,8 +10,8 @@ module sar_logic_tb();
reg En;
// Outputs
wire [6:0] B;
wire [6:0] BN;
wire [7:0] B;
wire [7:0] BN;
wire [7:0] D;
// Instantiate the SAR Logic module
@ -46,14 +46,85 @@ module sar_logic_tb();
En = 1'b1;
Op = 1'b1;
Om = 1'b0;
// Apply reset again
#80 rst = 1'b1;
#100 rst = 1'b1;
#10 rst = 1'b0;
Op = 1'b0;
Om = 1'b1;
#70 rst = 1'b1;
#50 rst = 1'b1;
#10 rst = 1'b0;
En = 1'b1;
Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#50 rst = 1'b1;
#10 rst = 1'b0;
En = 1'b1;
Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
#10 Op = 1'b1;
Om = 1'b0;
#10 Op = 1'b0;
Om = 1'b1;
// End of simulation
#100 $finish;