其他分享
首页 > 其他分享> > Verilog HDLBits 第十期:3.1.4 Karnaugh Map to circuit

Verilog HDLBits 第十期:3.1.4 Karnaugh Map to circuit

作者:互联网

目录

 前言

3.1.4.1 3-varible(Kmap1)

Solution:

3.1.4.2 4-varible(Kmap2)

Solution:

3.1.4.3 4-varible(Kmap3)

Solution:

3.1.4.4 4-varible(Kmap4)

Solution:

3.1.4.5 Minimum SOP and POS(Exams/ece241 2013 q2)

Solution:

3.1.4.6 Kamaugh map(Exams/m2014 q3)

Solution:

3.1.4.7 Kamaugh map(Exams/2012 q1g)

Solution:

3.1.4.8 K-map implemented with a multiplexer(Exams/ece241 2014 q3)

Solution:


 前言

HDLbits网站如下

Problem sets - HDLBits (01xz.net)

从本期开始我们继续HDLbits第三章Circuits的学习,本期的内容是3.1.4 Karnaugh Map to circuit


3.1.4.1 3-varible(Kmap1)

实现下面卡诺图描述的电路。

Kmap1.png

在写代码之前尝试简化卡诺图。请尝试和之积、积之和的形式。我们无法检查你是否对卡诺图进行最简优化。但是我们可以检查您的优化是否有效,并且我们检查您是否可以将卡诺图转化为电路。

Solution:

module top_module(
    input a,
    input b,
    input c,
    output out  ); 
    assign out = a | b | c;

endmodule

卡诺图化简一定要把所有的最小项覆盖,才不会出错。


3.1.4.2 4-varible(Kmap2)

实现下面卡诺图描述的电路。

Kmap2.png

Solution:

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  );
    assign out = ~b&~c | ~a&~d | a&c&d | ~a&b&c;

endmodule

卡诺图化简一定要把所有的最小项覆盖,才不会出错。


3.1.4.3 4-varible(Kmap3)

实现下面卡诺图描述的电路。

Kmap3.png

Solution:

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  ); 
    assign out = a | (~b&c) ;

endmodule

卡诺图化简一定要把所有的最小项覆盖,才不会出错。


3.1.4.4 4-varible(Kmap4)

实现下面卡诺图描述的电路。

Kmap4.png

Hint:对于此函数,更改任何一个输入的值总是会反转输出。它是一个简单的逻辑函数,但不能轻易表达为和之积或 积之和 形式。

Solution:

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  ); 
    assign out = a^b^c^d;
    
endmodule

本题若要以和之积形式的话,有8个最小项太过麻烦。根据Hint,发现更改任何一个输入的值总是会反转输出,且输入有奇数个1的时候输出1,于是想到异或。


3.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 对应于分别设置为 0、1、1、1 的 a、b、c、d。

确定最小积之和形式的输出out_sop,以及最小POS形式的输出out_pos。

Solution:

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 = c & (~b|d) & (~a|d);

endmodule

大家可能习惯了写最小项,其实最大项也是类似的,请多加练习~


3.1.4.6 Kamaugh map(Exams/m2014 q3)

考虑下面卡诺图中显示的函数 f。

Exams m2014q3.png

实现这个功能。 d 是不关心的,这意味着您可以选择输出任何方便的值。 

Solution:

module top_module (
    input [4:1] x, 
    output f );
    assign f =x[3]&~x[1] | x[4]&x[2];

endmodule

3.1.4.7 Kamaugh map(Exams/2012 q1g)

考虑下面卡诺图中显示的函数 f。

 

Solution:

module top_module (
    input [4:1] x,
    output f
); 
    assign f = (x[3]&~x[1]) | (~x[4]&~x[2]) | (x[4]&x[3]&x[2]);

endmodule

3.1.4.8 K-map implemented with a multiplexer(Exams/ece241 2014 q3)

对于如下卡诺图,对于下面的卡诺图,给出使用一个 4 对 1 多路复用器和足够多的 2 对 1 多路复用器的电路实现,但使用尽可能少。不允许使用任何其他逻辑门,必须使用 a 和 b 作为多路复用器选择器输入,如下面的 4 对 1 多路复用器所示。

您仅实现了标记为 top_module 的部分,以便整个电路(包括 4 对 1 多路复用器)实现卡诺图的电路。

(仅使用 2 对 1 多路复用器的要求存在,因为原始考试问题还想测试使用 K-maps 的逻辑函数简化以及如何仅使用具有恒定输入的多路复用器来合成逻辑函数。如果您希望将此视为纯粹的在 Verilog 练习中,您可以忽略此约束并按您希望的方式编写模块。) 

Solution:

module top_module (
    input c,
    input d,
    output [3:0] mux_in
); 
    assign mux_in[0]=c|d;
    assign mux_in[1]=1'b0;
    assign mux_in[2]=~d;
    assign mux_in[3]=c&d;

endmodule

根据题意,当ab输入2‘b00时,多路复用器输出mux_in[0],对应的就是卡诺图的第一列,mux_in[0]=c|d;其他的同理。


本小节还是比较基础的,继续加油

标签:Map,HDLBits,Karnaugh,Solution,module,卡诺图,3.1,input,out
来源: https://blog.csdn.net/weixin_51915958/article/details/121795255