В моей школе я изучал, что обе модели используются в одной и той же перспективе, но когда я просматривал онлайн, были страницы, на которых даны некоторые советы по преобразованию моделей потока данных в модели RTL, так что может ли кто-нибудь объяснить мне на примере, в чем именно разница. Заранее спасибо.
в чем разница между моделью потока данных и кодированием в стиле RTL в verilog/SystemC
Ответы (1)
Это модель потока данных
module #(parameter width = 8) array_multiplier(
input [width-1:0] a, b,
output [width-1:0] y
);
assign Y = a * b;
endmodule
Это RTL-модель множителя (взято из здесь)
module #(parameter width = 8) array_multiplier_(
input clk,
input [width-1:0] a, b,
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
person
dave_59
schedule
14.08.2020
Кажется, что поток данных используется взаимозаменяемо с поведением для verilog... Для меня модуль verilog представляет собой либо уровень RT, либо гораздо более высокую, удобную для человека форму, независимо от того, называется ли он моделью потока данных или моделью поведения.
- person Light; 14.08.2020
@Light На самом деле есть моделирование проводов ворот. Успешный дизайн может использовать сочетание всех трех. Основное деление в моем опыте синтезируемо или нет? Потому что, если не просто возиться, мало смысла писать что-либо, кроме синтезируемого кода. Будь то гейт, RTL или поведенческий.
- person TomServo; 17.08.2020