в чем разница между моделью потока данных и кодированием в стиле RTL в verilog/SystemC

В моей школе я изучал, что обе модели используются в одной и той же перспективе, но когда я просматривал онлайн, были страницы, на которых даны некоторые советы по преобразованию моделей потока данных в модели RTL, так что может ли кто-нибудь объяснить мне на примере, в чем именно разница. Заранее спасибо.


person Nikhil    schedule 14.08.2020    source источник


Ответы (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
comment
Кажется, что поток данных используется взаимозаменяемо с поведением для verilog... Для меня модуль verilog представляет собой либо уровень RT, либо гораздо более высокую, удобную для человека форму, независимо от того, называется ли он моделью потока данных или моделью поведения. - person Light; 14.08.2020
comment
@Light На самом деле есть моделирование проводов ворот. Успешный дизайн может использовать сочетание всех трех. Основное деление в моем опыте синтезируемо или нет? Потому что, если не просто возиться, мало смысла писать что-либо, кроме синтезируемого кода. Будь то гейт, RTL или поведенческий. - person TomServo; 17.08.2020