реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Каскадирование умножителей в ПЛИС (Spartan-3)
omen
сообщение Dec 9 2008, 23:09
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 6-10-08
Пользователь №: 40 731



Подскажите пожалуйсто, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназаначен для выполнеия каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит.
Go to the top of the page
 
+Quote Post
Apast
сообщение Dec 10 2008, 02:00
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 224
Регистрация: 22-06-04
Из: Новосибирск
Пользователь №: 87



Цитата(omen @ Dec 10 2008, 03:09) *
Подскажите пожалуйсто, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназаначен для выполнеия каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит.

А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Dec 10 2008, 08:24
Сообщение #3


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(omen @ Dec 10 2008, 03:09) *
Подскажите пожалуйста, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназначен для выполнения каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит.

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

Но мне непонятно что именно Вы имели ввиду под термином "каскадирование умножителей", поэтому, если после прочтения xapp467.pdf у Вас останутся вопросы, уточните этот термин.
Go to the top of the page
 
+Quote Post
ClockworkOrange
сообщение Dec 10 2008, 08:25
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 337
Регистрация: 17-05-07
Пользователь №: 27 784



Цитата(Apast @ Dec 10 2008, 05:00) *
А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти.

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


Прикрепленный файл  Xilinx_UG073_XtremeDSP_for_Virtex_4_FPGAs_User_Guide.pdf ( 2.55 мегабайт ) Кол-во скачиваний: 673

page 45: 35 x 35 Multiplier Model


--------------------
Чтoбы yзнaть, кaкaя дopoгa впepeди, cпpocи тex, ктo пo нeй вoзвpaщaeтcя ©
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 10 2008, 08:31
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(ClockworkOrange @ Dec 10 2008, 06:25) *
так и мозг атрофироваться может.....

smile.gif
поддерживаю.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Dec 10 2008, 10:09
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Apast @ Dec 10 2008, 06:00) *
А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти.
Я щетаю, что Кореген тут лишнее звено. Синтезатор сам способен собрать большой умножитель из более мелких.
Go to the top of the page
 
+Quote Post
0xFF
сообщение Dec 10 2008, 10:29
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(andrew_b @ Dec 10 2008, 14:09) *
Я щетаю, что Кореген тут лишнее звено. Синтезатор сам способен собрать большой умножитель из более мелких.

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

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

Удачи
Прикрепленные файлы
Прикрепленный файл  mult.txt ( 5.71 килобайт ) Кол-во скачиваний: 99
 
Go to the top of the page
 
+Quote Post
omen
сообщение Dec 10 2008, 10:56
Сообщение #8





Группа: Участник
Сообщений: 12
Регистрация: 6-10-08
Пользователь №: 40 731



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

Цитата
Есть такой документ: 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;

Вот результат моделирования:
[img]http://c:\modelir.JPG[/img]

Вот результат размещения на кристалле
[img]http://c:\floorplaner.jpg[/img]

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

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

wacko.gif о вот нашел как загрузить (((
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Dec 10 2008, 11:08
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(0xFF @ Dec 10 2008, 14:29) *
Вот только при умножении со знаком могут возникнуть проблемы
Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией.
Go to the top of the page
 
+Quote Post
Kedin
сообщение Dec 10 2008, 12:14
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 28-05-07
Пользователь №: 28 001



Цитата(andrew_b @ Dec 10 2008, 16:08) *
Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией.


Извините что вклиниваюсь, но вообще то MULT18X18 -
это знаковый 18X18 аппаратный умножитель
Go to the top of the page
 
+Quote Post
0xFF
сообщение Dec 10 2008, 12:41
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(andrew_b @ Dec 10 2008, 15:08) *
Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией.


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

Цитата(Kedin @ Dec 10 2008, 16:14) *
Извините что вклиниваюсь, но вообще то MULT18X18 -
это знаковый 18X18 аппаратный умножитель

правильно
Go to the top of the page
 
+Quote Post
Singer
сообщение Dec 10 2008, 14:00
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 13-11-07
Пользователь №: 32 296



Цитата(0xFF @ Dec 10 2008, 15:41) *
неправильное утверждение, всё он знает
правильно

Просто умножитель 18x18 состоит из беззнакового умножителя 17x17 (который умножает модули входных значений) и логики формирования знака результата на основании знаков множимых. Все это я так понимаю, объединено внутри слайса DSP48 (или mult18x18). Поэтому с точки зрения пользователя умножение знаковое, но внутри умножителя оно конечно беззнаковое + логика знака.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Dec 10 2008, 14:03
Сообщение #13


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(omen @ Dec 10 2008, 14:56) *
Спасибо за доку, просто я почему то нашел только xapp467_vhdl, а там только примеры на vhdl, описалова нету.

У Xilinx некоторое время назад слегка изменилась система поиска (на мой взгляд из плохой стала просто отвратительной), и для того, чтобы найти какой-либо XAPP, необходимо приписывать в конце расширение файла (.pdf). Т.е. поиск необходимо проводить было не XAPP467 (в таком случае будет найдено то, что на него ссылается), а XAPP467.PDF.
Go to the top of the page
 
+Quote Post
sazh
сообщение Dec 10 2008, 14:33
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(0xFF @ Dec 10 2008, 13:29) *
Вот только при умножении со знаком могут возникнуть проблемы

В приложении умножение на 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
Go to the top of the page
 
+Quote Post
0xFF
сообщение Dec 10 2008, 15:21
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 9-01-06
Пользователь №: 12 984



Цитата(sazh @ Dec 10 2008, 18:33) *
Если Вы утверждаете, что он со знаком, разве можно ему 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 уважением
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 11:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01488 секунд с 7
ELECTRONIX ©2004-2016