omen 0 9 декабря, 2008 Опубликовано 9 декабря, 2008 · Жалоба Подскажите пожалуйсто, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназаначен для выполнеия каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Apast 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Подскажите пожалуйсто, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназаначен для выполнеия каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит. А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Подскажите пожалуйста, может кто уже сталкивался. Как можно выполнить каскадирование умножителей в ПЛИС семейства Spartan-3. Там есть блоки умножителей MULT18X18, MULT18X18SIO, последний собственно и предназначен для выполнения каскадирования. но что куда заводить не понятно. Нужно выполнять перемножение чисел большей разрядности чем 18 бит. Есть такой документ: XAPP467.pdf Using Embedded Multipliers in Spartan-3 FPGAs. Я думаю, что в нём Вы найдете ответы на все интересующие Вас вопросы, связанные с применением умножителей в Spartan-3. Но мне непонятно что именно Вы имели ввиду под термином "каскадирование умножителей", поэтому, если после прочтения xapp467.pdf у Вас останутся вопросы, уточните этот термин. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ClockworkOrange 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти. так и мозг атрофироваться может..... Xilinx_UG073_XtremeDSP_for_Virtex_4_FPGAs_User_Guide.pdf page 45: 35 x 35 Multiplier Model Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Костян 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба так и мозг атрофироваться может..... :) поддерживаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба А воспользоваться Xilinx CORE GEN не хотите? Он сам все правильно сгенерит для заданной разряднояти. Я щетаю, что Кореген тут лишнее звено. Синтезатор сам способен собрать большой умножитель из более мелких. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0xFF 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Я щетаю, что Кореген тут лишнее звено. Синтезатор сам способен собрать большой умножитель из более мелких. Вот только при умножении со знаком могут возникнуть проблемы В приложении умножение на Spartan 3 со знаком, запаздывание если не ошибаюсь 4 такта, закоментированные блоки умножения для 3е серии. для них запаздывание на 5 тактов, из-за регистровых выходов Удачи mult.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
omen 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Спасибо за ответы. Есть такой документ: 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; Вот результат моделирования: Вот результат размещения на кристалле Т.е. синтезатор действительно сам сообразил как чего соединить. ой похоже здесь сначала нада картинку куда-нить залить. ну в общем там на кристалле он использовал 4?? умножителя и собрал какую-то логику сопряжения между ними, а результаты моделирования соотвтетствуют действительности, т.е. он действительно пермножил нормально например 4190000 и 325489 и получил 1363798910000. о вот нашел как загрузить ((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Вот только при умножении со знаком могут возникнуть проблемы Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kedin 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией. Извините что вклиниваюсь, но вообще то MULT18X18 - это знаковый 18X18 аппаратный умножитель Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0xFF 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Умножитель не знает ничего про знак. Он умножает двоичные числа и не занимается их интерпретацией. неправильное утверждение, всё он знает Извините что вклиниваюсь, но вообще то MULT18X18 - это знаковый 18X18 аппаратный умножитель правильно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Singer 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба неправильное утверждение, всё он знает правильно Просто умножитель 18x18 состоит из беззнакового умножителя 17x17 (который умножает модули входных значений) и логики формирования знака результата на основании знаков множимых. Все это я так понимаю, объединено внутри слайса DSP48 (или mult18x18). Поэтому с точки зрения пользователя умножение знаковое, но внутри умножителя оно конечно беззнаковое + логика знака. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Спасибо за доку, просто я почему то нашел только xapp467_vhdl, а там только примеры на vhdl, описалова нету. У Xilinx некоторое время назад слегка изменилась система поиска (на мой взгляд из плохой стала просто отвратительной), и для того, чтобы найти какой-либо XAPP, необходимо приписывать в конце расширение файла (.pdf). Т.е. поиск необходимо проводить было не XAPP467 (в таком случае будет найдено то, что на него ссылается), а XAPP467.PDF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Вот только при умножении со знаком могут возникнуть проблемы В приложении умножение на 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0xFF 0 10 декабря, 2008 Опубликовано 10 декабря, 2008 · Жалоба Если Вы утверждаете, что он со знаком, разве можно ему 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 уважением Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться