问题描述
我在学校学习过,两种模型都以相同的角度使用,但是当我上网浏览时,有一些页面定义了一些技巧,可以将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