s_
: Less Clock versionv_
: Verilog special syntaxhalf_subtractor(input A, B, output Bo, D);
full_subtractor(input A, B, Bi, output Bo, D);
module s_full_subtractor(input A, B, Bi, output D, Bo);
assign D = A ^ B ^ Bi;
assign Bo = (~A & B) | (~(A ^ B) & Bi);
endmodule
module v_full_subtractor(input A, B, Bi, output D, Bo);
assign {Bo, D} = A - B - Bi;
endmodule
rs_flip_flop(input R, S, output Q, Qbar);
nand_rs_flip_flop(input Rbar, Sbar, output Q, Qbar);
full_adder(input A, B, Ci, output Co, S)
module s_full_adder(input A, B, Ci, output Co, S);
assign S = A ^ B ^ Ci;
assign Co = (A & B) | ((A ^ B) & Ci);
endmodule
Verilog special syntax
module v_full_adder(input A, B, Ci, output Co, S);
assign {Co, S} = A + B + Ci;
endmodule
half_adder(input A, B, output C, S);