Alice 0 6 июня, 2007 Опубликовано 6 июня, 2007 · Жалоба Помогите, в WEBPack ISE наверно есть реализован такой сумматор? Мне нужно просуммировать два числа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 192 6 июня, 2007 Опубликовано 6 июня, 2007 · Жалоба Заходите в CoreGen и генерируйте нужный сумматор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Renom 0 6 июня, 2007 Опубликовано 6 июня, 2007 (изменено) · Жалоба Готовые сумматоры есть только на 2^8, для более больших либо делать в coregen, либо несколько строчки на языке: асинхронный: entity summ is Port ( a : in STD_LOGIC_VECTOR (31 downto 0); b : in STD_LOGIC_VECTOR (31 downto 0); c : out STD_LOGIC_VECTOR (63 downto 0)); end summ; architecture Behavioral of summ is begin c<=a+b; end Behavioral; синхронный: entity summ is Port ( a : in STD_LOGIC_VECTOR (31 downto 0); b : in STD_LOGIC_VECTOR (31 downto 0); clk : in STD_LOGIC; c : out STD_LOGIC_VECTOR (63 downto 0)); end summ; architecture Behavioral of summ is begin process (clk) begin if rising_edge(clk) then c<=a+b; end if; end process; end Behavioral; Если требуются входные/выходные переносы, сбросы/установка и т.д. то либо в coregen,либо в language templates. Изменено 6 июня, 2007 пользователем Rendom Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 7 июня, 2007 Опубликовано 7 июня, 2007 · Жалоба Готовые сумматоры есть только на 2^8, для более больших либо делать в coregen, либо несколько строчки на языке: асинхронный: entity summ is Port ( a : in STD_LOGIC_VECTOR (31 downto 0); b : in STD_LOGIC_VECTOR (31 downto 0); c : out STD_LOGIC_VECTOR (63 downto 0)); Все хорошо, но по-мойму для c хватит (32 downto 0) ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 7 июня, 2007 Опубликовано 7 июня, 2007 · Жалоба Все хорошо, но по-мойму для c хватит (32 downto 0) ;-) А вот и нет, для c хватит (31 downto 0) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
~KPbIC~ 0 7 июня, 2007 Опубликовано 7 июня, 2007 · Жалоба А вот и нет, для c хватит (31 downto 0) А все-таки 32 downto 0, иначе куда будет перенос деваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 7 июня, 2007 Опубликовано 7 июня, 2007 · Жалоба Про перенос в исходном посте ничего не было, если нужен, то да, (32 downto 0). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Very_hard 0 7 июня, 2007 Опубликовано 7 июня, 2007 · Жалоба Для сумматора 2^32 перенос не нужен. так что (31 downto 0). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
~KPbIC~ 0 7 июня, 2007 Опубликовано 7 июня, 2007 · Жалоба Для сумматора 2^32 перенос не нужен. так что (31 downto 0). Почему? Может и нужен) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Renom 0 8 июня, 2007 Опубликовано 8 июня, 2007 · Жалоба сорри, с разрядностью выхода ошибся (написал как для перемножителя), а в общем случае что бы не было потерь из-за переполнения нужна конечно (32 downto 0) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Very_hard 0 8 июня, 2007 Опубликовано 8 июня, 2007 · Жалоба Почему? Может и нужен) может я чего-то не понимаю, но на результат суммирования по модулю 2^32 32-й разряд (перенос) не влияет... разве что он нужен еще для каких-то целей )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
~KPbIC~ 0 8 июня, 2007 Опубликовано 8 июня, 2007 · Жалоба может я чего-то не понимаю, но на результат суммирования по модулю 2^32 32-й разряд (перенос) не влияет... разве что он нужен еще для каких-то целей )) Разве не влияет? Например 0х80 + 0х80 = 0х100, судя по вашему 0х00 это что 0+0 или все таки что-то другое? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Very_hard 0 8 июня, 2007 Опубликовано 8 июня, 2007 · Жалоба Разве не влияет? Например 0х80 + 0х80 = 0х100, судя по вашему 0х00 это что 0+0 или все таки что-то другое? Ну в названии темы писали же не просто про суммирование, а про суммирование по модулю 2^32. В Вашем примере, если суммировать по модулю 2^2, то в результате будет 0. В случае суммирования по модулю 2^32 отбрасывается 32-й разряд(если разряды считать с нуля). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
~KPbIC~ 0 8 июня, 2007 Опубликовано 8 июня, 2007 · Жалоба Ну в названии темы писали же не просто про суммирование, а про суммирование по модулю 2^32. В Вашем примере, если суммировать по модулю 2^2, то в результате будет 0. В случае суммирования по модулю 2^32 отбрасывается 32-й разряд(если разряды считать с нуля). странная арифметика, я думал сумирую по модулю 2^8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Very_hard 0 8 июня, 2007 Опубликовано 8 июня, 2007 · Жалоба сорри. конечно 2^8. )) но у вас просто суммирование, а не по модулю 2^8... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться