1.4 Karnaugh Map to Circuit 卡诺图映射电路
1.4.1 3-variable [Kmap1]
问题描述
结合卡诺图的描述,完成电路:
在编程前先化简卡诺图,尝试写成乘积和的形式。我们无法检测你是否将卡诺图化简为最佳情况,但我们可以检查你的化简是否与卡诺图等价,也可以检查你是否能够将卡诺图转化为电路。
化简卡诺图得到:
o u t = a + b + c out = a+b+c out=a+b+c
代码:
assign out = a | c | b ;
1.4.2 4-variable [Kmap2]
问题描述
结合卡诺图的描述,完成电路:
化简卡诺图得到:
o u t = a c d + b c d + b ′ c ′ + a ′ d ′ out = acd+bcd+b'c'+a'd' out=acd+bcd+b′c′+a′d′
代码:
assign out = a&c&d | b&c&d | ~b&~c | ~a&~d;
1.4.3 4-variable [Kmap3]
结合卡诺图的描述,完成电路:
化简卡诺图得到:
o
u
t
=
a
+
b
′
c
out = a+b'c
out=a+b′c
d表示无关项,可以借助d来画圈。注意ab那行前两个位置01 00 10 11 应调整为00 01 11 10,不好好读题被坑了…
代码:
assign out = a | ~b&c;
1.4.4 4-variable [Kmap4]
问题描述
结合卡诺图的描述,完成电路:
卡诺图化简得到:
out = a'bc'd'+a'b'c'd+ab'c'd'+abc'd+a'bcd+a'b'cd'+ab'cd+abcd' \\
out = (a'c'+ac)(bd'+b'd)+(a'c+ac')(bd+b'd')\\
out = (a⊙c)(b⊕d)+(a⊕c)(b⊙d)\\
out = (a⊕c)⊕(b⊕d)
结果不唯一。
代码:
assign out = (a^c)^(b^d);
1.4.5 Minimum SOP and POS [Exams/ece241 2013 q2]
问题描述
有四个输入(a,b,c,d)的单输出数字系统在输入出现2、7、15时产生逻辑1,并在出现0、1、4、5、6、9、10、13、14时产生逻辑0。数字3、8、11、12在此系统中没出现。例如7对应abcd分别被设置为0、1、1、1.
输出out_sop时最小SOP格式,out_pos时最小POS格式
问题分析
根据题意可知未出现过的数字为无关项,列卡诺图如下:
化简可得到
o
u
t
_
s
o
p
=
a
′
b
′
c
+
c
d
o
u
t
_
p
o
s
=
c
(
a
′
+
b
)
(
b
′
+
d
)
out\_sop = a'b'c+cd\\ out\_pos = c(a'+b)(b'+d)
out_sop=a′b′c+cdout_pos=c(a′+b)(b′+d)
代码:
assign out_sop = ~a&~b&c | c&d;
assign out_pos = c & (~a|b) & (~b|d);
注意
- SOP形式指找出所有输出为1(最小项)的输入组合
- POS形式指找出所有输出为0(最大项)的输入组合,画圈之后的正负是反着写的
1.4.6 Karnaugh map [Exams/m2014 q3]
问题描述
根据卡诺图的描述完成电路:
化简卡诺图
f = x 1 ′ x 3 + x 1 x 2 x 3 ′ f = x_1'x_3+x_1x_2x_3' f=x1′x3+x1x2x3′
代码
assign f = ~x[1]&x[3] | x[1]&x[2]&~x[3];
1.4.7 Karnaugh map [Exams/2012 q1g]
问题描述
根据卡诺图的描述完成电路:
化简卡诺图
f = x 2 ′ x 4 ′ + x 1 ′ x 3 + x 2 x 3 x 4 f = x_2'x_4'+x_1'x_3+x_2x_3x_4 f=x2′x4′+x1′x3+x2x3x4
代码
assign f = ~x[2]&~x[4] | ~x[1]&x[3] | x[2]&x[3]&x[4];
1.4.8 K-map implemented with a multiplexer [Exams/ece241 2014 q3]
问题描述
对于下面的卡诺图,请使用一个4对1多路复用器和尽可能少的使用2对1多路复用器来实现电路。不允许使用其他逻辑门,必须使用a和b作为多路复用器的选择输入,如下图所示:
只需要完成top_module即可
化简卡诺图
f
=
a
′
b
′
c
+
a
′
b
′
d
+
a
b
′
d
′
+
a
b
c
d
f = a'b'c+a'b'd+ab'd'+abcd
f=a′b′c+a′b′d+ab′d′+abcd
根据卡诺图将ab整理得到
f
=
a
′
b
′
(
c
+
d
)
+
a
b
′
d
+
a
b
c
d
f = a'b'(c+d) +ab'd+abcd
f=a′b′(c+d)+ab′d+abcd
代码
assign mux_in[0] = c | d;
assign mux_in[1] = 0;
assign mux_in[2] = ~d;
assign mux_in[3] = c&d;
这个系列主要是记录一下自己的学习过程和简单思考过程,也参考了许多其他人的思路,题目均为HDLBits上的原题,借助翻译器和自己的理解简单组织了一下语言,如有问题欢迎批评指正。