Circuits>Combinational Logic>Karnaugh Map to Circuit
1. 3-variable
功能:
将卡曼图转换成逻辑表达式,再转换成电路图。
收获:
代码:
module top_module(
input a,
input b,
input c,
output out );
assign out = c|b|a&(~c);
endmodule
2. 4-variable
功能:
将卡曼图转换成逻辑表达式,再转换成电路图。
收获:
代码:
module top_module(
input a,
input b,
input c,
input d,
output out );
assign out = ((~b)&(~c))|((~d)&(~a))|(b&c&d)|(a&c&d);
endmodule
3.4-variable
功能:
将卡曼图转换成逻辑表达式,再转换成电路图。
收获:
代码:
module top_module(
input a,
input b,
input c,
input d,
output out );
assign out = a|(~b)&c;
endmodule
4.4-variable
功能:
将卡曼图转换成逻辑表达式,再转换成电路图。
收获:
代码:
module top_module(
input a,
input b,
input c,
input d,
output out );
reg a1,b1,c1,d1;
always@(*)
begin
a1 = ~a;
b1 = ~b;
c1 = ~c;
d1 = ~d;
end
assign out = (a1&b&c1&d1)|(a&b1&c1&d1)|(a1&b1&c1&d)|(a&b&c1&d)|(a1&b&c&d)|(a&b1&c&d)|(a1&b1&c&d1)|(a&b&c&d1);
endmodule
5.Minimum SOP and POS
功能:
将给的对应关系变成sop和pos即积之和与和之积。
收获:
最小项和最大项。存在问题 12 8无关项和最大项的关系,已解决,在最小项中用到的无关项,在计算最大项不必算在内,但是没有用到的无关项,视为0处理的,在对待最大项的时候也应该对待0处理。
代码:
module top_module (
input a,
input b,
input c,
input d,
output out_sop,
output out_pos
);
assign out_sop = (c&d)|((~a)&(~b)&c);
assign out_pos = (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)&(~a|~b|~c|d)&(~a|~b|c|d)&(~a|b|c|d);//&(~a|b|~c|~d)&(~a|~b|c|d);
endmodule
6.Karnaugh Map
功能:
收获:
代码:
module top_module (
input [4:1] x,
output f );
assign f = (~x[1])&x[3]|x[2]&x[4];
endmodule
7.Karnaugh Map
功能:
将卡曼图转换成逻辑表达式。
收获:
代码:
module top_module (
input [4:1] x,
output f
);
assign f = (~x[1]&x[3])|(~x[2])&(~x[4])|x[2]&x[3]&x[4];
endmodule
8.K-map implemented with a multiplexer
功能:
收获:
代码可以选择case,也可以根据cd对应的逻辑改变cd的值。
代码:
module top_module (
input c,
input d,
output reg [3:0] mux_in
);
always@(*)
begin
case({c,d})
2'b00: begin mux_in[0]=1'b0; mux_in[1]=1'b0; mux_in[2]=1'b1; mux_in[3]=1'b0; end
2'b01: begin mux_in[0]=1'b1; mux_in[1]=1'b0; mux_in[2]=1'b0; mux_in[3]=1'b0; end
2'b11: begin mux_in[0]=1'b1; mux_in[1]=1'b0; mux_in[2]=1'b0; mux_in[3]=1'b1; end
2'b10: begin mux_in[0]=1'b1; mux_in[1]=1'b0; mux_in[2]=1'b1; mux_in[3]=1'b0; end
default: begin mux_in[0]=1'b0; mux_in[1]=1'b0; mux_in[2]=1'b0; mux_in[3]=1'b0; end
endcase
end
endmodule