diff --git a/lab2CA.srcs/sources_1/new/BasicModules.v b/lab2CA.srcs/sources_1/new/BasicModules.v index 5cdafdd..718a158 100644 --- a/lab2CA.srcs/sources_1/new/BasicModules.v +++ b/lab2CA.srcs/sources_1/new/BasicModules.v @@ -1,6 +1,6 @@ `timescale 1ns / 1ps -module adder_1bit( +module add_1bit( input wire A, input wire B, input wire Cin, @@ -12,7 +12,7 @@ module adder_1bit( endmodule -module adder_9bit( +module add_9bit( input wire [8:0] A, input wire [8:0] B, input wire Cin, @@ -28,63 +28,63 @@ module adder_9bit( wire C_add6; wire C_add7; - adder_1bit add0( + add_1bit add0( .A(A[0]), .B(B[0]), .Cin(Cin), .S(Sum[0]), .Cout(C_add0)); - adder_1bit add1( + add_1bit add1( .A(A[1]), .B(B[1]), .Cin(C_add0), .S(Sum[1]), .Cout(C_add1)); - adder_1bit add2( + add_1bit add2( .A(A[2]), .B(B[2]), .Cin(C_add1), .S(Sum[2]), .Cout(C_add2)); - adder_1bit add3( + add_1bit add3( .A(A[3]), .B(B[3]), .Cin(C_add2), .S(Sum[3]), .Cout(C_add3)); - adder_1bit add4( + add_1bit add4( .A(A[4]), .B(B[4]), .Cin(C_add3), .S(Sum[4]), .Cout(C_add4)); - adder_1bit add5( + add_1bit add5( .A(A[5]), .B(B[5]), .Cin(C_add4), .S(Sum[5]), .Cout(C_add5)); - adder_1bit add6( + add_1bit add6( .A(A[6]), .B(B[6]), .Cin(C_add5), .S(Sum[6]), .Cout(C_add6)); - adder_1bit add7( + add_1bit add7( .A(A[7]), .B(B[7]), .Cin(C_add6), .S(Sum[7]), .Cout(C_add7)); - adder_1bit add8( + add_1bit add8( .A(A[8]), .B(B[8]), .Cin(C_add7), @@ -425,20 +425,55 @@ module register(input wire clk, reset, endmodule -module twos_compliment_9bit( +module shift_logical_left( input wire [8:0] A, + output wire [8:0] B); + + assign B = {A[7:0],A[8]}; + +endmodule + +module shift_logical_right( + input wire [8:0] A, + output wire [8:0] B); + + assign B = {A[0],A[8:1]}; + +endmodule + +module sub_9bit( + input wire [8:0] A, + input wire [8:0] B, output wire [8:0] C); - wire [8:0] B; + wire [8:0] D; + + twos_compliment_9bit two_comp0( + .A(B), + .C(D)); + + add_9bit add0( + .A(A), + .B(D), + .Cin(1'b0), + .Sum(C)); + +endmodule + +module twos_compliment_9bit( + input wire [8:0] A, + output wire [8:0] B); + + wire [8:0] C; not_9bit not0( .A(A), - .B(B)); + .B(C)); - adder_9bit adder0( - .A(B), + add_9bit add0( + .A(C), .B(9'b000000000), .Cin(1'b1), - .Sum(C)); + .Sum(B)); endmodule \ No newline at end of file diff --git a/lab2CA.xpr b/lab2CA.xpr index 837e719..66cc1de 100644 --- a/lab2CA.xpr +++ b/lab2CA.xpr @@ -104,8 +104,7 @@