【Verilog】卡诺图到电路Karnaugh Map to Circuit
我的学记|刘航宇的博客

【Verilog】卡诺图到电路Karnaugh Map to Circuit

刘航宇
3年前发布 /正在检测是否收录...
温馨提示:
本文最后更新于2022年07月12日,已超过993天没有更新,若内容或图片失效,请留言反馈。

问题描述一

具有四个输入 (a,b,c,d) 的单输出数字系统在输入出现 2、7 或 15 时产生逻辑 1,当输入出现 0、1、4、5、6、9、10、13或14 时产生逻辑 0 。数字 3、8、11 和 12 的输入条件从未出现在此系统中。例如,7 对应于分别设置a,b,c,d为0、1、1、1。确定最小SOP形式的输出out_sop,以及最小POS形式的输出out_pos。

问题解答

(1)根据题意可以画出如下卡诺图:
图片[1] - 【Verilog】卡诺图到电路Karnaugh Map to Circuit - 我的学记|刘航宇的博客
(2)随后进行卡诺图的化简:
最小SOP:采用圈1法,如图中蓝色和绿色实线所示,合并标1的最小项,即。
最小POS:采用圈0法,如图中红、黄、深蓝色虚线所示,合并标0的最小项,得到$L=c d+\bar{a} \bar{b} c$

通过将该逻辑表达式进行化简,可以得到。$L=c \cdot(\bar{b}+\bar{c}+d) \cdot(\bar{a}+\bar{c}+d)$

得到该卡诺图的逻辑表达式后,便可以开始编写verilog代码。

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);        //sop
    assign out_pos = c&(~b|~c|d)&(~a|~c|d);  //pos
 
endmodule

问题描述二

得出下面卡诺图中显示的函数 f。
图片[2] - 【Verilog】卡诺图到电路Karnaugh Map to Circuit - 我的学记|刘航宇的博客

问题解答

采用圈0法,如下图所示。
图片[3] - 【Verilog】卡诺图到电路Karnaugh Map to Circuit - 我的学记|刘航宇的博客
合并标0的最小项,得到$\bar{L}=\overline{x_{1}} \overline{x_{3}}+\overline{x_{3}} \overline{x_{4}}+x_{1} \overline{x_{2}}+x_{1} x_{3}$将该表达式化简,可以得到:$L=\left(x_{1}+x_{3}\right) \cdot\left(x_{3}+x_{4}\right) \cdot\left(\bar{X}_ {1}+x_{2}\right) \cdot\left(\bar{X}_{1}+\bar{X}_{3}\right)$得到该卡诺图的逻辑表达式后,便可以开始编写verilog代码。

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

问题描述三

得出下面卡诺图中显示的函数 f。(原试题要求简化 SOP 和 POS 形式的函数。)
图片[4] - 【Verilog】卡诺图到电路Karnaugh Map to Circuit - 我的学记|刘航宇的博客

问题解答

最小SOP:采用圈1法,如下图所示。
图片[5] - 【Verilog】卡诺图到电路Karnaugh Map to Circuit - 我的学记|刘航宇的博客
合并标1的最小项,得到$L=\overline{x_{2}} \overline{x_{4}}+\bar{X}_ {1} x_{3}+x_{2} x_{3} x_{4}$
最小POS:采用圈0法,如下图所示。
图片[6] - 【Verilog】卡诺图到电路Karnaugh Map to Circuit - 我的学记|刘航宇的博客
合并标0的最小项,得到$\bar{L}=\overline{x_{3}} \overline{x_{4}}+x_{2} \overline{x_{3}}+x_{1} x_{2} \overline{x_{4}}+x_{1} \overline{x_{2}} x_{4}$,通过化简该逻辑表达式,可以得到:$L=\left(x_{3}+\overline{x_{4}}\right) \cdot\left(\overline{x_{2}}+x_{3}\right) \cdot\left(\overline{x_{1}}+\overline{x_{2}}+x_{4}\right) \cdot\left(\overline{x_{1}}+x_{2}+\overline{x_{4}}\right)$得到该卡诺图的逻辑表达式后,便可以开始编写verilog代码。

module top_module (
    input [4:1] x,
    output f
); 
    
    //assign f = (~x[2]&~x[4])|(~x[1]&x[3])|(x[2]&x[3]&x[4]);                     //sop
    assign f = (x[3]|~x[4])&(~x[2]|x[3])&(~x[1]|~x[2]|x[4])&(~x[1]|x[2]|~x[4]);   //pos
 
endmodule
© 版权声明
THE END
喜欢就支持一下吧
点赞 1 分享 赞赏
评论 抢沙发
取消