Перейти к содержанию
    

VHDL Сложение STD_LOGIC_VECTOR

Здравствуйте.

Может глупый вопрос, но я никак не могу разобраться.

Стоит задача сложить 9 std_logic_vector(31 downto 0) в один цикл. 

Максимальна возможная сумма - 35 бит.

Если перевести все в integer, то максимальная сумма превысит диапазон integer.

Тогда как сложить 9 std_logic_vector(31 downto 0) в один цикл?

Благодарю.

Изменено пользователем Kostochkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Kostochkin сказал:

Стоит задача сложить 9 std_logic_vector(31 downto 0) в один цикл. 

Есть у меня с давних пор "чуйка" на то, что если задается примерно такой вопрос о нестандартном действии, то надо не искать решение для именно этого вопроса, а постараться понять как можно что-то сделать по-другому, чтобы именно такого действия - "сложить 9 std_logic_vector(31 downto 0) в один цикл" не нужно было делать. Потому как при таком сложении без конвейеров Вы подсадите весь проект на более низкую частоту... Ну либо, если компилятор захочет сделать цепи параллельного переноса, то это сожрет прорву логики и интерконнектов. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Kostochkin сказал:

Стоит задача сложить 9 std_logic_vector(31 downto 0) в один цикл.

Если это беззнаковые числа, то можно использовать carry save adder.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, andrew_b said:

Если это беззнаковые числа, то можно использовать carry save adder.

а почему со знаковыми нельзя? и, по моему, это имело смысл если делать конвеер и т.д. а для современного синтезатора, без времянки, что дерево CSA, что просто написать а1+а2+...+а9 - без разницы.

вопрос, по-моему, про старшие биты, которые не влазят в представление/математику - то есть про конструкцию языка. мой ответ такой :) использовать верилог и в нем logic [34:0] sum; можно даже signed добавить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, yes said:

а почему со знаковыми нельзя? и, по моему, это имело смысл если делать конвеер и т.д. а для современного синтезатора, без времянки, что дерево CSA, что просто написать а1+а2+...+а9 - без разницы.

вопрос, по-моему, про старшие биты, которые не влазят в представление/математику - то есть про конструкцию языка. мой ответ такой :) использовать верилог и в нем logic [34:0] sum; можно даже signed добавить

Благодарю, попробую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, yes сказал:

а почему со знаковыми нельзя?

Может, и можно, не пробовал. А про беззнаковые знаю точно.

2 минуты назад, yes сказал:

а для современного синтезатора, без времянки, что дерево CSA, что просто написать а1+а2+...+а9 - без разницы.

В дереве CSA нет переносов. Точнее, есть, но только в одном последнем сумматоре.

3 минуты назад, yes сказал:

вопрос, по-моему, про старшие биты, которые не влазят в представление/математику - то есть про конструкцию языка.

Целые тут ни при чём. Пакет numeric_std поддерживает суммирование векторов с любой разрядностью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, andrew_b said:

В дереве CSA нет переносов. Точнее, есть, но только в одном последнем сумматоре.

я знаю. хотел сказать, что если делать в один такт, то наверно, результат будет одинаковый - описано в языке дерево CSA или просто стоит + и реализация отдана на усмотрение синтезатору (то есть длина логического пути переноса будет такая же).

если ставить регистровую станцию после каждой суммы (ну или нескольких ступеней) с сохранением переноса, то может и будет выигрыш, но это конвеер, и все-равно что-то с последним переносом (парой слагаемых) делать - например засунуть в DSP блок (это я фантазирую, не применял CSA в ПЛИС)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, andrew_b said:

Пакет numeric_std поддерживает суммирование векторов с любой разрядностью.

я вот так сразу не напишу (а если без интернета, то пришлось бы либо свою операцию/либу писать либо в исходниках рыться)

что-то типа resize и т.п. наверно нужно не люблю я этот vhdl

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Dimidrol сказал:

в картинках

Картинки для тех, кто читать не умеет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...