Перейти к содержанию
    

умножение в dsp48

Друзья, подскажите пожалуйста, почему без атрибута (* use_dsp48 = "yes" *) , этот код не синтезируется через DSP48?

`timescale 1ns / 1ps

module multiplier #
(
    parameter DO_DSP_BLOCK = "FALSE" //"TRUE"
)
(
     input wire clk_i,
     input wire [7:0] a, b,
     output  wire signed [63:0] res
);

     integer i = 0;
     
(* use_dsp48 = "yes" *)     
reg signed [63:0] prod;

always @ (posedge clk_i) begin
     prod <= a * b;
end

assign res = prod;

endmodule

 

Изменено пользователем Drakonof

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто ж его знает. Где, кем, когда не синтезируется...

Может быть из-за малой разрядности аргументов. Может быть из-за отсутствия регистров по входу. Может быть из-за того, что в вашем проекте и так уже 99% DSP заняты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

https://www.xilinx.com/support/answers/54357.html

...

use_dsp48

...

If this attribute is not specified, the default behavior is for Vivado Synthesis to determine the correct behavior. 

То есть при отсутствии этого атрибута синтезатор сам решает, как синтезировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...