如何解决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 举报,一经查实,本站将立刻删除。