20210324Verilog学习笔记:描述组合电路的四种方式比较:真值表、逻辑代数、结构描述、抽象描述

这篇博客探讨了如何使用Verilog语言实现三输入逻辑门。通过真值表法、逻辑代数法、结构描述法和抽象法四种方法进行详细阐述。作者指出,随着输入信号数量的增加,真值表法的代码量会显著增大,而逻辑代数法则最为简洁。在编程硬件时,需要结合电路原理进行思考,不能仅依赖于高级编程。博客还强调了在不同方法中权衡复杂性和直观性的必要性。
摘要由CSDN通过智能技术生成

三输入,一输出,输入信号有两个以上高电平则输出为高电平

真值表法:

module desciption_realdata(a, b, c, out);
    input a, b, c;
    output out;
    reg out;
    always @(a, b, c)
            case ({a, b, c})
                3'b000: out <= 0;
                3'b001: out <= 0;
                3'b010: out <= 0;
                3'b011: out <= 1;
                3'b100: out <= 0;
                3'b101: out <= 1;
                3'b110: out <= 1;
                3'b111: out <= 1;
            endcase
endmodule

在这里插入图片描述

逻辑代数法:

module description_logic(a, b, c, out);
    input a, b, c;
    output out;
    assign out = (a & b) | (b & c) | (a & c);
endmodule

在这里插入图片描述

结构描述法:

module description_structure(a, b, c, out);
    input a, b, c;
    output out;
    wire w1, w2, w3;
    and a1(w1, a, b);
    and a2(w2, c, b);
    and a3(w3, a, c);
    assign out = w1 | w2 | w3;
endmodule

在这里插入图片描述

抽象法:

module description_abstract(a, b, c, out);
    input a, b, c;
    output out;
    reg [1:0]sum;
    reg out;
    always @(a, b, c)
        begin
            sum = a + b + c;
            if(sum >= 2'b10) out = 1;
            else out = 0;
        end
endmodule

在这里插入图片描述
目前理解:在输入信号个数增加的时候,真值表法代码量太大,最简便的写法是逻辑代数法,只要写出逻辑代数表达式,然后连续赋值语句赋值即可,抽象法虽简单,但是必须联想到用到加法器和数字比较器,在编程硬件过程中一定得时刻想象对应电路,从电路角度出发写代码,而不是一味地顶级编程而把综合的过程丢给EDA完成。

欢迎评论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值