verilog / SystemC中的数据流模型和RTL样式编码之间有什么区别

问题描述

我在学校学习过,两种模型都以相同的角度使用,但是当我上网浏览时,有一些页面定义了一些技巧,可以将Dataflow模型转换为RTL模型,所以有人可以用一个例子向我解释什么完全不同。预先感谢。

解决方法

这是一个数据流模型

module #(parameter width = 8) array_multiplier(    
     input [width-1:0] a,b,output [width-1:0] y
);
   assign Y = a * b;
endmodule

这是乘法器的RTL模型(从here中提取)

module #(parameter width = 8) array_multiplier_(    
     input clk,input [width-1:0] a,output [width-1:0] y
);   
reg [width-1:0] a_pipeline [0:width-2];
reg [width-1:0] b_pipeline [0:width-2];
reg [width-1:0] partials [0:width-1];
integer i;

always @(posedge clk) begin
    a_pipeline[0] <= a;
    b_pipeline[0] <= b;
    for (i = 1; i < width-1; i = i+1) begin
        a_pipeline[i] <= a_pipeline[i-1];
        b_pipeline[i] <= b_pipeline[i-1];
    end

    partials[0] <= a[0] ? b : 0;
    for (i = 1; i < width; i = i+1)
        partials[i] <= (a_pipeline[i-1][i] ? b_pipeline[i-1] << i : 0) +
                partials[i-1];
end

assign y = partials[width-1];

endmodule

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...