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

Каскадирование умножителей в ПЛИС (Spartan-3)

Подскажите пожалуйсто, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназаначен для выполнеия каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит.

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


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

Подскажите пожалуйсто, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназаначен для выполнеия каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит.

А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти.

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


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

Подскажите пожалуйста, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназначен для выполнения каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит.

Есть такой документ: XAPP467.pdf Using Embedded Multipliers in Spartan-3 FPGAs. Я думаю, что в нём Вы найдете ответы на все интересующие Вас вопросы, связанные с применением умножителей в Spartan-3.

 

Но мне непонятно что именно Вы имели ввиду под термином "каскадирование умножителей", поэтому, если после прочтения xapp467.pdf у Вас останутся вопросы, уточните этот термин.

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


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

А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти.

так и мозг атрофироваться может.....

 

 

Xilinx_UG073_XtremeDSP_for_Virtex_4_FPGAs_User_Guide.pdf

page 45: 35 x 35 Multiplier Model

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


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

А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти.
Я щетаю, что Кореген тут лишнее звено. Синтезатор сам способен собрать большой умножитель из более мелких.

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


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

Я щетаю, что Кореген тут лишнее звено. Синтезатор сам способен собрать большой умножитель из более мелких.

Вот только при умножении со знаком могут возникнуть проблемы

 

В приложении умножение на Spartan 3 со знаком, запаздывание если не ошибаюсь 4 такта,

закоментированные блоки умножения для 3е серии. для них запаздывание на 5 тактов, из-за регистровых выходов

 

Удачи

mult.txt

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


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

Спасибо за ответы.

 

Есть такой документ: XAPP467.pdf Using Embedded Multipliers in Spartan-3 FPGAs. Я думаю, что в нём Вы найдете ответы на все интересующие Вас вопросы, связанные с применением умножителей в Spartan-3.

 

Спасибо за доку, просто я почему то нашел только xapp467_vhdl, а там только примеры на vhdl, описалова нету.

 

Я щетаю, что Кореген тут лишнее звено. Синтезатор сам способен собрать большой умножитель из более мелких.

 

Действительно, собрал небольшой проектик (код ниже)

----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity mult is
    Port ( op1 : in  STD_LOGIC_VECTOR (21 downto 0);
           op2 : in  STD_LOGIC_VECTOR (21 downto 0);
           res : out  STD_LOGIC_VECTOR (43 downto 0));
end mult;

architecture Behavioral of mult is

begin
    res <= op1*op2;


end Behavioral;

Вот результат моделирования:

c:\modelir.JPG

 

Вот результат размещения на кристалле

c:\floorplaner.jpg

 

Т.е. синтезатор действительно сам сообразил как чего соединить.

 

ой похоже здесь сначала нада картинку куда-нить залить. ну в общем там на кристалле он использовал 4?? умножителя и собрал какую-то логику сопряжения между ними, а результаты моделирования соотвтетствуют действительности, т.е. он действительно пермножил нормально например 4190000 и 325489 и получил 1363798910000.

 

:wacko: о вот нашел как загрузить (((

post-40731-1228906561_thumb.jpg

post-40731-1228906596_thumb.jpg

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


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

Вот только при умножении со знаком могут возникнуть проблемы
Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией.

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


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

Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией.

 

Извините что вклиниваюсь, но вообще то MULT18X18 -

это знаковый 18X18 аппаратный умножитель

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


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

Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией.

 

неправильное утверждение, всё он знает

 

Извините что вклиниваюсь, но вообще то MULT18X18 -

это знаковый 18X18 аппаратный умножитель

правильно

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


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

неправильное утверждение, всё он знает

правильно

Просто умножитель 18x18 состоит из беззнакового умножителя 17x17 (который умножает модули входных значений) и логики формирования знака результата на основании знаков множимых. Все это я так понимаю, объединено внутри слайса DSP48 (или mult18x18). Поэтому с точки зрения пользователя умножение знаковое, но внутри умножителя оно конечно беззнаковое + логика знака.

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


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

Спасибо за доку, просто я почему то нашел только xapp467_vhdl, а там только примеры на vhdl, описалова нету.

У Xilinx некоторое время назад слегка изменилась система поиска (на мой взгляд из плохой стала просто отвратительной), и для того, чтобы найти какой-либо XAPP, необходимо приписывать в конце расширение файла (.pdf). Т.е. поиск необходимо проводить было не XAPP467 (в таком случае будет найдено то, что на него ссылается), а XAPP467.PDF.

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


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

Вот только при умножении со знаком могут возникнуть проблемы

 

В приложении умножение на Spartan 3 со знаком, запаздывание если не ошибаюсь 4 такта,

закоментированные блоки умножения для 3е серии. для них запаздывание на 5 тактов, из-за регистровых выходов

 

Удачи

 

Если Вы утверждаете, что он со знаком, разве можно ему 1'b0 подставлять?

MULT18X18S mult_4 (

.P(mult_resullt_4[35:0]), // 36-bit multiplier output

.A({1'b0,a[16:0]}), // 18-bit multiplier input

.B(b[34:17]), // 18-bit multiplier input

.CE(1), // Clock enable input for the P port

.C(clk), // Clock input

.R(0)

 

А тут знак mult_resullt_2 взяли и отбросили

teil_op1[69:0] <= {mult_resullt_1[35:0], mult_resullt_2[33:0]};

 

и где тогда reg signed, wire signed

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


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

Если Вы утверждаете, что он со знаком, разве можно ему 1'b0 подставлять?

MULT18X18S mult_4 (

.P(mult_resullt_4[35:0]), // 36-bit multiplier output

.A({1'b0,a[16:0]}), // 18-bit multiplier input

.B(b[34:17]), // 18-bit multiplier input

.CE(1), // Clock enable input for the P port

.C(clk), // Clock input

.R(0)

 

А тут знак mult_resullt_2 взяли и отбросили

teil_op1[69:0] <= {mult_resullt_1[35:0], mult_resullt_2[33:0]};

 

и где тогда reg signed, wire signed

 

в приложенном файле реализована схема Xapp467 на стр.6

 

В примитивах XILINX в случае при умножении со знаком и при использовании операндов с меньшим кол-вом бит чем вход умножителя недостоющие старшие биты необходимо дополнить знаковым битом.

 

Использование signed не протеворечит выше изложенному, в случае, конечно, если вы не используете Verilog 1995.

 

C уважением

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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