侧边栏壁纸
    • 累计撰写 302 篇文章
    • 累计收到 527 条评论
    【Verilog】卡诺图到电路Karnaugh Map to Circuit
    我的学记|刘航宇的博客

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

    刘航宇
    2022-07-11 / 0 评论 / 498 阅读 / 正在检测是否收录...

    问题描述一

    具有四个输入 (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)根据题意可以画出如下卡诺图:
    Test
    (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。
    Test

    问题解答

    采用圈0法,如下图所示。
    Test
    合并标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 形式的函数。)
    Test

    问题解答

    最小SOP:采用圈1法,如下图所示。
    Test
    合并标1的最小项,得到$L=\overline{x_{2}} \overline{x_{4}}+\bar{X}_ {1} x_{3}+x_{2} x_{3} x_{4}$
    最小POS:采用圈0法,如下图所示。
    Test
    合并标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
    1
    [Verilog]ASIC/FPGA实现边沿检测电路(上升/下降沿)
    « 上一篇 2022-07-14
    【IC设计】数字IC设计流程及学习指南
    下一篇 » 2022-07-06

    评论 (0)

    取消