kamil_yaminov 1 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба Поделитесь пожалуйста ссылкой на нормальное описание алгоритма быстрого умножения с накоплением, которое применяется в DSP-процессорах (MAC блоки). Из того, что я нарыл в тырнете, понял только что используются какие-то хитрые комбинационные схемы вкупе с таблицами. Зараннее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DRUID3 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба :05: ну алгоритмы быстрого умножения, видимо, на одной полке с алгоритмами быстрого сложения... А, если серьезно, то опишите для чего Вам это понадобилось, какие стоят задачи? Алгоритмы умножения с накоплением(давайте угадаю 8x8 бит? :) ) поддерживаются в DSP аппаратно - баааааальшой аккум ну и однотактное перемножение, причем актуально это для fix - собственно потому то эти процессоры и DSP - из-за аппаратных всяких фич. Или же нужна VHDL версия всего этого безобразия для реализации в FPGA или заказухе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kamil_yaminov 1 1 октября, 2008 Опубликовано 1 октября, 2008 (изменено) · Жалоба да просто интересно стало, ведь пользуюсь-пользуюсь, а как работает не знаю. Недавно хвастал перед товарищем достижениями современных ДСП, а он и спроси, а как, мол, за такт перемножение с накоплением делается, такого, мол, быть не может, ну я в ступор сразу и ушел. Может я сначала вопрос не так сформулировал, а интересует именно то что реализованно аппаратно внутри ДСП. Изменено 1 октября, 2008 пользователем kamil yaminov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 17 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба а как, мол, за такт перемножение с накоплением делается, такого, мол, быть не может а почему бы и нет? такт - это как минимум передний и задний фронт. А если применить разные задержки - получаем большое количество подтактов. Кстати говоря, умножение - чисто комбинационная задача, так что вообще никаких проблем не вижу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tocha 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба А слово "pipeline" слышали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kamil_yaminov 1 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба Про конвейер слышал и даже пользовался им, но мне не кажется, что внутри МАСа стоит конвейер, если не прав, то поправте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 17 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба Вот, например, бегло порывшись в яндексе... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tocha 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба Про конвейер слышал и даже пользовался им, но мне не кажется, что внутри МАСа стоит конвейер, если не прав, то поправте. А как по-другому? За один такт МАК никак не сделать, значит - последовательная схема. Походу ваш товарищ прав. Вся сила в конвеере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kamil_yaminov 1 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба Да, действительно, перемножение с накоплением за один такт наверное никак не сделать, тогда - конвейер. PS. В гугл надо забивать не умножение, а перемножение, тогда, оказывается, много чего полезного можно найти ). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба А как по-другому? За один такт МАК никак не сделать, значит - последовательная схема. Походу ваш товарищ прав. Вся сила в конвеере. интересно, что в МАС-е нужен результат предыдущей операции - ну то есть для прибавления i-го слагаемого нужно иметь i-1 результат - то есть сконвееризировать большой сумматор аккумулятора не получится (допустима задержка только 1 такт) вобщем решения есть (и наверно, не одно) - интересно, найдете ли их гуглем (мне было бы интересно посмотреть) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба А как по-другому? За один такт МАК никак не сделать, значит - последовательная схема. Походу ваш товарищ прав. Вся сила в конвеере. За один такт все делается. Вопрос лишь в быстродействии (или в максимальной тактовой частоте). Вам правильно сказали, умножение, как и сложение - это лишь комбинационная логика. Кстати, для накопления действительно нужно иметь результат предыдущего сложения, но это значит что суммирование должно быть за один такт, и совсем не значит что умножение должно быть за один такт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tocha 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба интересно, что в МАС-е нужен результат предыдущей операции - ну то есть для прибавления i-го слагаемого нужно иметь i-1 результат - то есть сконвееризировать большой сумматор аккумулятора не получится (допустима задержка только 1 такт) вобщем решения есть (и наверно, не одно) - интересно, найдете ли их гуглем (мне было бы интересно посмотреть) Не понял, решение чего? Если того, как сделать мак за один такт, то приведите здесь, если не сложно. ЗЫ. По поводу гугла, если вам интересно, то и ищите сами. За один такт все делается. Вопрос лишь в быстродействии (или в максимальной тактовой частоте). Вам правильно сказали, умножение, как и сложение - это лишь комбинационная логика. Кстати, для накопления действительно нужно иметь результат предыдущего сложения, но это значит что суммирование должно быть за один такт, и совсем не значит что умножение должно быть за один такт. Я не говорю, что умножение и сложение - некомбинацинная логика, и не говорю, что умножение должно быть за один такт. Я говорю, что один МАК за один такт не делается. Если можете, покажите, если не сложно, как за один такт сделать следующую операцию a = a + b*c. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба Не понял, решение чего? Если того, как сделать мак за один такт, то приведите здесь, если не сложно. ЗЫ. По поводу гугла, если вам интересно, то и ищите сами. Я не говорю, что умножение и сложение - некомбинацинная логика, и не говорю, что умножение должно быть за один такт. Я говорю, что один МАК за один такт не делается. Если можете, покажите, если не сложно, как за один такт сделать следующую операцию a = a + b*c. Элементарно. Вам в каком виде показать, на VHDL подойдет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tocha 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба Элементарно. Вам в каком виде показать, на VHDL подойдет? в любом, vhdl подойдёт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба в любом, vhdl подойдёт library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity primer is port( CLK : in STD_LOGIC; Reset : in STD_LOGIC; B : in STD_LOGIC_VECTOR(11 downto 0); C : in STD_LOGIC_VECTOR(11 downto 0); Q : out STD_LOGIC_VECTOR(47 downto 0) ); end primer; architecture primer of primer is signal A : std_logic_vector (47 downto 0); signal p : std_logic_vector (23 downto 0); begin p<=signed( B ) * signed( C ); process (CLK) begin if (CLK'Event and CLK = '1') then if (Reset = '1') then A<=(others =>'0'); else A<= A+SXT(p,48); end if; end if; end process; Q<=A; end primer; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться