tocha 0 1 октября, 2008 Опубликовано 1 октября, 2008 · Жалоба library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity primer is ... Вы обещали: a = a+b*c, а описали: Ai = Ai-1 + Bi*Ci, то есть конвеер, который даст осмысленный результат минимум после второго такта. Я так понял, вопрос был: как реализовать a = a+b*c за один такт. Может был неправ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 2 октября, 2008 Опубликовано 2 октября, 2008 · Жалоба Вы обещали: a = a+b*c, а описали: Ai = Ai-1 + Bi*Ci, то есть конвеер, который даст осмысленный результат минимум после второго такта. Я так понял, вопрос был: как реализовать a = a+b*c за один такт. Может был неправ. Ai = Ai-1 + Bi*Ci, - Это именно то что нужно. Именно эту операцию выполняет DSP. И даст результат на следующем такте. Вы же вдумайтесь сами, как может быть Ai = Ai+b*c. Для этого обязательным условием должно быть b*c = 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kamil_yaminov 1 2 октября, 2008 Опубликовано 2 октября, 2008 · Жалоба Дейстаительно получается один такт! Тое есть все сводится к тому как быстро сложить и быстро умножить, а это как я понимаю - комбинационные схемы работают. Дейстаительно получается один такт! Тое есть все сводится к тому как быстро сложить и быстро умножить, а это как я понимаю - комбинационные схемы работают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 3 октября, 2008 Опубликовано 3 октября, 2008 · Жалоба мой вопрос был про то, что если нет в архитектуре DSP блоков (не положили в FPGA: например, Spartan3 или проектируете ASIC) а сумматор на 48 разрядов не успевает по времянке за 1 такт, то есть его надо разбить регистрами на несколько ступеней но при этом хочется потоковые вычисления выполнять за 1 такт : то есть для вычисления суммы из 1000 слагаемых потратить 1000 с небольшим тактов умножитель порезать не вопрос - так как в нем может быть сколько угодно ступеней корвеера (ну или пусть это Spartan3, где есть умножители), а накопление как сделать? btw: мне искать вобщем-то не надо, я знаю, да и хитрого там ничего нет, но если кто-то начинает разбираться с такими вещами - может будет полезно понять Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Singer 0 10 октября, 2008 Опубликовано 10 октября, 2008 · Жалоба Нет никакой проблемы сделать за такт - только толку от этого мало, поскольку такт получается очень длинный :) Поэтому как правило дробят конвеером для получения большей частоты и пропускной способности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Builder 1 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба Нет никакой проблемы сделать за такт - только толку от этого мало, поскольку такт получается очень длинный :) Поэтому как правило дробят конвеером для получения большей частоты и пропускной способности. Длинные - понятие не инженерное. Про такты - разработчики проца сами решают что им выгоднее, за такт или не за такт. Вон, AD и в плавучке в серии Shark делает такое за так и жужит. А кто-то другой разобьёт эту операцию на стадии. Обсуждать-то что? Сказано, операция - чисто комбинационная, значит в принципе реализуется за такт, даже для плавающей точки. Если вопросы остались - поднимать доки по реальзации мат операций в двоичных кодах, для сомневающихся.. По моему весь разговор какой-то пустой получается, в темах про FPGA это вопрос для новичка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться