理解 Verilog HDL 的抽象层次

VerilogHDL组合逻辑的编码可以从三个不同抽象层实现,这些抽象层是描述同一种硬件的不同方式。从具体到抽象的程度,可以分为gate、dataflow、behavior三种,其中gate级描述了硬件实际搭建的过程,dataflow级描述实际的逻辑门控数据的流动方式,behavior描述的是电路实际行为方式。可以根据用户实际喜好实现三种方式用于描述您的设计,下面我们还将看看这三种抽象层次所实现代码的差异。

抽象层

Verilog HDL 允许我们在三个不同的抽象层次上描述硬件。这些抽象层分别是:

门级建模 gate

在这一层次,HDL(Hardware Description Language,HDL)描述实际的逻辑门及其连接方式。这种建模方式适合简单的电路,但在设计复杂电路时不够实用。

数据流级建模 dataflow

在这一层,描述电路中的数据流动。数据流建模通过使用逻辑运算符将电路转化为布尔逻辑句子。这种方法更加高效,但仍然是对电路行为的具体描述。

行为级建模 behavior

这是一个更高的抽象层次,通过过程块(如 always 块)来描述电路的行为。这种方式使得设计复杂电路变得更加简单,因为我们只需描述电路的功能,而不需要具体的逻辑门。

具体实例

下面我们将通过一个具体的实例来说明这三种抽象层次各种的风格。
选用的实例是一个简单的2选1mux组合电路作为说明。
2 选 1 多路复用器( M U X )是一个选择器, 2选1多路复用器(MUX)是一个选择器, 21多路复用器(MUX)是一个选择器,
它根据选择输入( X )从两个输入( A 和 B )中选择一个输出( C ) 它根据选择输入(X)从两个输入(A和 B)中选择一个输出(C) 它根据选择输入(X)从两个输入(AB)中选择一个输出(C
其电路图如图:

在这里插入图片描述
逻辑表达式为:
C = X ⋅ A + X ‾ ⋅ B C= X\cdot A+ \overline{X} \cdot B C=XA+XB
这里的逻辑意义是:

当 X为 1 时,输出 C等于输入 A的值。
当 X为 0 时,输出 C等于输入 B的值。

真值表:

选择信号 X 输入 A 输入 B 输出 C
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
// Gate Level MUX 2-to-1
module mux2to1_gatelevel(input a, b, x, output c);
    wire not_x;
    wire out_and_a, out_and_b;

    not not1(not_x, x);
    and and1(out_and_a, a, x);
    and and2(out_and_b, b, not_x);
    or or1(c, out_and_a, out_and_b);
endmodule

使用基础逻辑门(NOT、AND、OR)实现了多路复用器。
not_x 是 x 的反相,out_and_a 和 out_and_b 是两个 AND 门的输出,分别对应于输入 a 和 b 经过选择信号 x 的与运算。
最后,通过一个 OR 门将两个 AND 门的输出合并,得出最终输出 c

// Dataflow Level MUX 2-to-1
module mux2to1_datalevel(input a, b, x, output c);
    assign c = (a & x) | (b & ~x);
endmodule

c 的值由 a 和 b 根据选择信号 x 通过位与(AND)和位或(OR)运算得到。
这种方式简洁明了,便于理解。但需要对于新入门的选手不太友好。

// Behavioral Level MUX 2-to-1
module mux2to1_behavioral(input a, b, x, output reg c);
    always @(*) begin
        if (x)
            c = a;
        else
            c = b;
    end
endmodule

使用 always @(*) 语句时,表示该块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值