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

 
 
> Каскадирование умножителей в ПЛИС (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
 
Start new topic
Ответов
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
andrew_b
сообщение Dec 10 2008, 10:09
Сообщение #3


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

Группа: Свой
Сообщений: 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
Сообщение #4


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

Группа: Свой
Сообщений: 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
sazh
сообщение Dec 10 2008, 14:33
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #6


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

Группа: Свой
Сообщений: 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
sazh
сообщение Dec 10 2008, 15:54
Сообщение #7


Гуру
******

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



Цитата(0xFF @ Dec 10 2008, 18:21) *
в приложенном файле реализована схема Xapp467 на стр.6

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

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

C уважением


.A({1'b0,a[16:0]}), // 18-bit multiplier input
знак - это a[16], им и надо дополнять. Полученный результат signed. знак у него это святое. Вы же дальше разрядностью играете, суммируете, урезаете и т.д. понятие signed всегда присутствует и в параметрах умножителя (потому что разрядность по входам и выходу разная) и при описании сумматоров, если разрядная сетка меняется (Вы все это на откуп синтезатора отдали)
/////////////////////////////////////////////////////
Посмотрел документ. Одни вопросы и непонятки. Рисунок 5. Умножитель 22х16. На одной веточке скромное unsigned.
Чего на чего умножили - не понять. 16 разрядов до 18 надо размножить. как не понятно.
Код умножили на код. Код получили. Куда его потом засунуть. Как объявить.
На 6 рисунке надо полагать обещают на входе signed - на выходе signed.
Значит надо верить. И в лоб делать. (Про знак придется откатить. Анализировать разбивку вектора по макросам - я не математик.) Причем когда текстового описания коснулись в последующих примерах, числа без знака легли на этот макрос.
А когда на пальцах стали объснять
For example,
1111 1100 = -4
× 0000 0100 = +4
1111 0000 = -16
разрядную сетку по входу и выходу сравняли и в столбик умножили.
Кодом манипулируют в данном случае как числами со знаком. А столбик ничего о числах со знаком или без знака не знает.
Остается спросить по синтезатор. Неужели он сам не может оперируя signed или unsigned корректно разложить умножитель по этим макросам, или на худой конец ip генератор применить.
Go to the top of the page
 
+Quote Post
0xFF
сообщение Dec 11 2008, 11:18
Сообщение #8


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

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



Цитата(sazh @ Dec 10 2008, 19:54) *
.A({1'b0,a[16:0]}), // 18-bit multiplier input
знак - это a[16], им и надо дополнять. Полученный результат signed. знак у него это святое. Вы же дальше разрядностью играете, суммируете, урезаете и т.д. понятие signed всегда присутствует и в параметрах умножителя (потому что разрядность по входам и выходу разная) и при описании сумматоров, если разрядная сетка меняется (Вы все это на откуп синтезатора отдали)


я же вам написал, в приложенном коде реализована схема показаанная на рис.6
, а не на рис.5. И если вы прочитали по диагонали то наверное упустили из виду что это умножитель 35х35. Т.е mult70[69:0] = a[34:0]*b[34:0].

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

module mult_35x35( input [34:0] a, input [34:0] b, output [69:0] mult70);
......
.....
....
endmodule

Цитата(sazh @ Dec 10 2008, 19:54) *
Посмотрел документ. Одни вопросы и непонятки. Рисунок 5. Умножитель 22х16. На одной веточке скромное unsigned.
Чего на чего умножили - не понять. 16 разрядов до 18 надо размножить. как не понятно.
Код умножили на код. Код получили. Куда его потом засунуть. Как объявить.

если принять во внимание, что нижний умножитель легко и протсто реализуем на простой логике, то
вот так экономят на примитивах типа MULT18x18

Цитата(sazh @ Dec 10 2008, 19:54) *
Остается спросить по синтезатор. Неужели он сам не может оперируя signed или unsigned корректно разложить умножитель по этим макросам, или на худой конец ip генератор применить.

может конечно.... smile.gif , и следует применять, там где это оправдано

Успехов
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- omen   Каскадирование умножителей в ПЛИС (Spartan-3)   Dec 9 2008, 23:09
|- - ClockworkOrange   Цитата(Apast @ Dec 10 2008, 05:00) А восп...   Dec 10 2008, 08:25
||- - Костян   Цитата(ClockworkOrange @ Dec 10 2008, 06...   Dec 10 2008, 08:31
|- - andrew_b   Цитата(0xFF @ Dec 10 2008, 14:29) Вот тол...   Dec 10 2008, 11:08
||- - Kedin   Цитата(andrew_b @ Dec 10 2008, 16:08) Умн...   Dec 10 2008, 12:14
- - Boris_TS   Цитата(omen @ Dec 10 2008, 03:09) Подскаж...   Dec 10 2008, 08:24
- - omen   Спасибо за ответы. ЦитатаЕсть такой документ: XAP...   Dec 10 2008, 10:56
|- - Boris_TS   Цитата(omen @ Dec 10 2008, 14:56) Спасибо...   Dec 10 2008, 14:03
- - 0xFF   Цитата(andrew_b @ Dec 10 2008, 15:08) Умн...   Dec 10 2008, 12:41
- - Singer   Цитата(0xFF @ Dec 10 2008, 15:41) неправи...   Dec 10 2008, 14:00


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:25
Рейтинг@Mail.ru


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