verilog 中行为流和数据流之间的区别

问题描述 投票:0回答:2

我在

verilog
中进行了搜索以了解行为代码和数据流代码之间的区别。最后我找不到很好的例子,到处都在讲述他们所做的事情。 例如:

“非常简单。名称本身就解释了它们是什么。数据流是描述程序的一种方式。就像描述特定设计的逻辑功能一样。 另一方面,行为模型描述了系统的行为。当给出特定输入时,它会如何表现?”

这里写的是非常简单的例子,但我需要更多的例子。

verilog
2个回答
8
投票

Verilog 中的数据流建模允许根据其功能来设计数字系统。数据流建模利用布尔方程,并使用许多可以作用于输入以产生输出的运算符,例如 + - && & ! 〜|| | << >> {} 所以如果我想在数据流建模中描述一个 2 到 4 的解码器,我会像这样

module decoder2to4 ( e , a, b, do, dl, d2, d3);
input e, a, b;
output do, dl, d2, d3;
assign dO = ( e & ~a & ~b); //00
assign dl = (e & ~a & b);   //01
assign d2 = (e & a & ~b);   //10
assign d3 = ( e & a & b);   //11
endmodu1e

另一方面,Verilog 中的行为建模用于以算法方式描述设计的功能 所以如果我想在数据流建模中描述一个 2 到 4 的解码器,我会像这样

module decoder2to4 (e, i, d);
output [3:0] d;
input [l:0]i;
input e;
reg [3:0] d;
    always @ (i or e) begin
            if (e==l) begin
                case (i)
                       0: d = 4'b 0001;
                       1: d = 4'b 0010;
                       2: d = 4'b 0100;
                       3: d = 4'b 1000;
                      default d = 4'b xxxx;
               endcase
            end
            else
               d = 4'b0000;
    end
endmodule

0
投票

数据流建模工作基于连续分配,行为基于基于流程的实现。

连续分配

assign d=a||b;

行为分配

always@(a,b)
begin
d=a||b;
end

这是我想法的一个小例子。

© www.soinside.com 2019 - 2024. All rights reserved.