HDL Bits在线学习Verilog(一):Karnaugh Map to Circuit

博客内容涉及逻辑函数的卡诺图化简,详细解释了如何通过圈1法和圈0法来简化最小项,进而得到最小的SOP(与或非)和POS(或与非)形式的逻辑表达式。示例中展示了针对不同输入组合的逻辑系统,如何通过卡诺图确定其输出表达式,并给出了对应的Verilog代码实现。
摘要由CSDN通过智能技术生成

Exams/ece241 2013 q2: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 对应于分别设置a,b,c,d为0、1、1、1。确定最小SOP形式的输出out_sop,以及最小POS形式的输出out_pos。

问题解答

(1)根据题意可以画出如下卡诺图:

(2)随后进行卡诺图的化简:

        最小SOP:

        采用圈1法,如图中蓝色和绿色实线所示,合并标1的最小项,即L=cd+\bar{a}\bar{b}c

        最小POS:

        采用圈0法,如图中红、黄、深蓝色虚线所示,合并标0的最小项,得到\bar{L}=\bar{c}+bc\bar{d}+ac\bar{d}

通过将该逻辑表达式进行化简,可以得到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

Exams/m2014 q3 Karnaugh map

题目链接为:

Exams/m2014 q3

问题描述

得出下面卡诺图中显示的函数 f。

File:Exams m2014q3.png

 问题解答

采用圈0法,如下图所示。

 合并标0的最小项,得到\bar{L}=\bar{x_{1}}\bar{x_{3}}+\bar{x_{3}}\bar{x_{4}}+x_{1}\bar{x_{2}}+x_{1}x_{3},将该表达式化简,可以得到:

L=(x_{1}+x_{3})\cdot(x_{3}+x_{4})\cdot(\bar{x_{1}}+x_{2})\cdot(\bar{x_{1}}+\bar{x_{3}})。得到该卡诺图的逻辑表达式后,便可以开始编写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

Exams/2012 q1g Karnaugh map

题目链接为:

Exams/2012 q1g

问题描述

得出下面卡诺图中显示的函数 f。(原试题要求简化 SOP 和 POS 形式的函数。)

File:Exams 2012q1g.png

 问题解答

    最小SOP:采用圈1法,如下图所示。

合并标1的最小项,得到L=\bar{x_{2}}\bar{x_{4}}+\bar{x_{1}}x_{3}+x_{2}x_{3}x_{4}

     最小POS:采用圈0法,如下图所示。

合并标0的最小项,得到\bar{L}=\bar{x_{3}}\bar{x_{4}}+x_{2}\bar{x_{3}}+x_{1}x_{2}\bar{x_{4}}+x_{1}\bar{x_{2}}x_{4},通过化简该逻辑表达式,可以得到:L=(x_{3}+\bar{x_{4}})\cdot(\bar{x_{2}}+x_{3})\cdot(\bar{x_{1}}+\bar{x_{2}}+x_{4})\cdot(\bar{x_{1}}+x_{2}+\bar{x_{4}})。得到该卡诺图的逻辑表达式后,便可以开始编写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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值