[HDLBits做题]Combinational Logic --- Karnaugh Map to Circuit

1.4 Karnaugh Map to Circuit 卡诺图映射电路

1.4.1 3-variable [Kmap1]
问题描述

结合卡诺图的描述,完成电路:
image
在编程前先化简卡诺图,尝试写成乘积和的形式。我们无法检测你是否将卡诺图化简为最佳情况,但我们可以检查你的化简是否与卡诺图等价,也可以检查你是否能够将卡诺图转化为电路。

化简卡诺图得到:

在这里插入图片描述

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]
问题描述

结合卡诺图的描述,完成电路:
image

化简卡诺图得到:

在这里插入图片描述

o u t = a c d + b c d + b ′ c ′ + a ′ d ′ out = acd+bcd+b'c'+a'd' out=acd+bcd+bc+ad

代码:
    assign out = a&c&d | b&c&d | ~b&~c | ~a&~d;
1.4.3 4-variable [Kmap3]

结合卡诺图的描述,完成电路:
image

化简卡诺图得到:

在这里插入图片描述
o u t = a + b ′ c out = a+b'c out=a+bc
d表示无关项,可以借助d来画圈。注意ab那行前两个位置01 00 10 11 应调整为00 01 11 10,不好好读题被坑了…

代码:
    assign out = a | ~b&c;
1.4.4 4-variable [Kmap4]
问题描述

结合卡诺图的描述,完成电路:
image

卡诺图化简得到:
    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=abc+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]
问题描述

根据卡诺图的描述完成电路:
image

化简卡诺图

在这里插入图片描述

f = x 1 ′ x 3 + x 1 x 2 x 3 ′ f = x_1'x_3+x_1x_2x_3' f=x1x3+x1x2x3

代码
    assign f = ~x[1]&x[3] | x[1]&x[2]&~x[3];
1.4.7 Karnaugh map [Exams/2012 q1g]
问题描述

根据卡诺图的描述完成电路:
image

化简卡诺图

在这里插入图片描述

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=x2x4+x1x3+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作为多路复用器的选择输入,如下图所示:
image
image
只需要完成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=abc+abd+abd+abcd
根据卡诺图将ab整理得到
f = a ′ b ′ ( c + d ) + a b ′ d + a b c d f = a'b'(c+d) +ab'd+abcd f=ab(c+d)+abd+abcd

代码
    assign mux_in[0] = c | d;
    assign mux_in[1] = 0;
    assign mux_in[2] = ~d;
    assign mux_in[3] = c&d;

这个系列主要是记录一下自己的学习过程和简单思考过程,也参考了许多其他人的思路,题目均为HDLBits上的原题,借助翻译器和自己的理解简单组织了一下语言,如有问题欢迎批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值