目录
第80题:K-map implemented with a multiplexer
第71题:100-bit binary adder
module top_module
(
input [99:0] a, b,
input cin ,
output cout,
output [99:0] sum
);
assign {cout,sum} = a + b + cin;
endmodule
第72题:4-digit BCD adder
module top_module
(
input [15:0] a, b,
input cin ,
output cout,
output [15:0] sum
);
wire cout_o [3:0];
bcd_fadd bcd_fadd_inst0
(
.a (a[3:0]),
.b (b[3:0]),
.cin (cin),
.cout(cout_o[0]),
.sum (sum[3:0])
);
generate
genvar i;
for(i=4;i<16;i=i+4)
begin:bcd_fadd4_inst
bcd_fadd bcd_fadd_insti
(
.a (a[i+:4]),
.b (b[i+:4]),
.cin (cout_o[i/4-1]),
.cout(cout_o[i/4]),
.sum (sum[i+:4])
);
end
endgenerate
assign cout = cout_o[3];
endmodule
第73题:3-variable
module top_module
(
input a ,
input b ,
input c ,
output out
);
assign out = a | b | c;
endmodule
第74题:4-variable
module top_module
(
input a ,
input b ,
input c ,
input d ,
output out
);
assign out = ((~a)&(~d)) | ((~b)&(~c)) | (b&c&d) | (a&c&d);
endmodule
第75题:4-variable
module top_module
(
input a ,
input b ,
input c ,
input d ,
output out
);
assign out = a | ((~b)&c);
endmodule
第76题:4-variable
module top_module
(
input a ,
input b ,
input c ,
input d ,
output out
);
assign out = ((~a)&b&(~c)&(~d)) | (a&(~b)&(~c)&(~d)) | ((~a)&(~b)&(~c)&d) | (a&b&(~c)&d) | ((~a)&b&c&d) | (a&(~b)&c&d) | ((~a)&(~b)&c&(~d)) | (a&b&c&(~d));
endmodule
第77题:Minimum SOP and POS
module top_module
(
input a ,
input b ,
input c ,
input d ,
output out_sop ,
output out_pos
);
assign out_sop = ((~a)&(~b)&c) | (c&d);
assign out_pos = c & ((~a)|d) & ((~b)|d);
endmodule
第78题:Karnaugh map
module top_module
(
input [4:1] x,
output f
);
assign f = x[3]&(~x[1]) | x[4]&x[2] | x[3]&x[4];
endmodule
第79题:Karnaugh map
module top_module
(
input [4:1] x,
output f
);
assign f = (~x[1]&x[3]) | (~x[2]&~x[3]&~x[4]) | (x[1]&~x[2]&~x[4]) | (x[2]&x[3]&x[4]);
endmodule
第80题:K-map implemented with a multiplexer
module top_module
(
input c ,
input d ,
output [3:0] mux_in
);
assign mux_in[0] = c ? 1 : (d?1:0);
assign mux_in[1] = 0;
assign mux_in[2] = d ? 0 : 1;
assign mux_in[3] = (c&d) ? 1 :0;
endmodule