微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。