Digital Assignment
Digital Assignment
Id:202111409
Question 1:
Design code:
Test code:
module testbench; carry_lookahead_generator clg ( S, Cout,A,B, Cin);
reg [5:0] A, B;
A = 6'b0;
// Outputs B = 6'b0;
in_A = 0;
1
Name :Mohamed Bani Hasan
Id:202111409
// Wait for 100 ns
#100;
A = 6'b111111;
A = 6'b010101; B = 6'b000001;
reset = 0; #10;
#10;
$display("Carry look ahead generator: Cout = %b at $display("Carry look ahead generator: Cout = %b at
%d ns,\n", Cout, $time); %d ns,\n", Cout, $time);
$display("Time difference (Carry Look Ahead - Serial $display("Time difference (Carry Look Ahead - Serial
Adder): %0d ns,\n", Cout * gate_delay - out_C * Adder): %0d ns,\n", Cout * gate_delay - out_C *
gate_delay); gate_delay);
$display("sum=%b,\n",S); $display("sum=%b,\n",S);
2
Name :Mohamed Bani Hasan
Id:202111409
in_A = A[5];
in_B = B[5];
A = 6'b100110; #10;
B = 6'b011001;
Cin = 1'b0;
in_B = B[2];
#10;
$finish;
in_A = A[3];
end
in_B = B[3];
#10;
always #5 clk = ~clk;
in_A = A[4];
in_B = B[4];
endmodule
#10;
3
Name :Mohamed Bani Hasan
Id:202111409
Question 2:
design code:
test code:
module testbench; forever #5 clk = ~clk;
end
initial begin
wire out;
reset = 1'b1;
ConsecutiveOnesDetector cod(out,clk, in = 1'b0;
reset, in );
initial begin
#10 reset = 1'b0;
clk = 0;
4
Name :Mohamed Bani Hasan
Id:202111409
#10 in = 1'b0; #10 in = 1'b0;
#10 in = 1'b1;
#10 in = 1'b0;
#10 in = 1'b1;
Output:
5
Name :Mohamed Bani Hasan
Id:202111409
Qusetion 3:
state <= GREEN_STATE;
Design code:
end else begin
module Traffic_Light_Controller ( red,
orange, green,clk); counter <= counter + 1;
ORANGE_STATE=2'b01, end
GREEN_STATE=2'b10 endcase
} state_t; end
RED_STATE:
counter <= 0;
end
ORANGE_STATE:
counter <= 0;
6
Name :Mohamed Bani Hasan
Id:202111409
test code:
repeat (120) begin
module tb_TrafficLightController;
#500 clk = ~clk;
reg clk = 0;
$display("Time = %0t, Red = %b, Orange =
wire red, orange, green; %b, Green = %b", $time, red, orange, green);
end
Traffic_Light_Controller tlc
(red,orange,green,clk);
$finish;
end
initial begin
endmodule
#10;
7
Name :Mohamed Bani Hasan
Id:202111409
question 4:
design code:
module SerialTwosComplementor (out,clk, reset, in);
output out;
if (reset)
else
end
if (reset)
else begin
if (input_reg[15] == 1'b1)
else
end
end
endmodule
8
Name :Mohamed Bani Hasan
Id:202111409
test code:
module Testbench;
$display("__________________________
reg clk;
__________");
reg reset;
reg in;
#10 in = 1'b1;
wire out;
#10 in = 1'b0;
#10 in = 1'b0;
SerialTwosComplementor stc
#10 in = 1'b1;
(out,clk,reset,in);
#10 in = 1'b0;
#10 in = 1'b1;
initial begin
#10 in = 1'b0;
clk = 0;
#10 in = 1'b1;
reset = 1;
#10 in = 1'b0;
in = 0;
#10 in = 1'b1;
#10 reset = 0;
#10 in = 1'b0;
#10 in = 1'b0;
#10 in = 1'b1;
#10 in = 1'b1;
#10 in = 1'b0;
#10 in = 1'b0;
#10 in = 1'b1;
#10 in = 1'b1;
#10 in = 1'b1;
#10 in = 1'b1;
#100 $finish;
#10 in = 1'b1;
end
#10 in = 1'b1;
#10 in = 1'b0;
always #5 clk = ~clk;
#10 in = 1'b1;
#10 in = 1'b1;
always @(posedge clk) begin
#10 in = 1'b1;
$display("Input: %b, Output: %b", in,
#10 in = 1'b1;
out);
#10 in = 1'b0;
end
#10 in = 1'b1;
endmodule
9
Name :Mohamed Bani Hasan
Id:202111409
outputs:
10