|
|
  |
сумматор при сложении возникают ошибки |
|
|
|
May 17 2015, 16:53
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(sergey sva @ May 17 2015, 19:32)  Нужно усреднять значение полученные из счетчика 32 разрядного. счетчик считает на частоте 200мгц. После значения суммируются в регистр 32 разряда 10 раз на 11 раз делятся на 10. каждый раз результат получается разный. Вместо значения из счетчика на модуль усреднения подал константу, тоже значение меняется в случайном порядке. Может сумматор не успевать суммировать на частоте 200мгц ep3c5e c8 ? Сложение деление записаны плюсиками может нужно сделать специальный сумматор на битовых операциях или есть специальные модули усреднения ? таймквест, что пишет? Если Вы моделируете бехавриал (без учета задержек) модель, то кристал и тактовая частота не имеет принципиального значения... такая симуляция без учета задержек, что показывает? так называемое функциональное моделирование если при симуляции без учета задержек есть ошибка, то нужно искать в ошибку в описании
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
May 17 2015, 17:48
|
Знающий
   
Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111

|
Цитата(sergey sva @ May 17 2015, 20:11)  Имеете ввиду усреднять 16 раз вместо 10? А можно как то ускорить сумматор ? Усреднение кратное степени двойки, производится сдвигом вправо на число равное степени (для усреднения по 16, надо сдвинуть вправо на 4 разряда). Данные на 300МГц поступают или реже? Если на 300, то сумматор скорее всего не ускорить никакой конвейеризацией - слишком высока частота.
|
|
|
|
|
May 17 2015, 17:50
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(sergey sva @ May 18 2015, 01:11)  Тамквест на некоторые цепи которые работают от другого плл на частоте 360мгц говорит что не удается получить такие тайминги но те модули работают как нужно без ошибок. сыклон 3, самый медленный. 360МГц ? не верю. У него триггерная на средней логике 250МГц максимум. Цитата Думал что лишнее биты будут отбрасываться, попробую сделать счетчик 16 разрядный. Имеете ввиду усреднять 16 раз вместо 10? А можно как то ускорить сумматор ? код смотреть надо, что бы знать что вы там изобрели. на 16 делить проще, чем на 10. Сумматор ускорить можно, но аккумулятор с суммированием слова за такт нет. Нужно использовать сумматор + дециматор + аккумулятор. Тогда можно что-то выжать.
--------------------
|
|
|
|
|
May 18 2015, 04:11
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(Golikov A. @ May 17 2015, 22:04)  если 1 сумматор должен за 16 тактов сложить 16 значений, то 2 сумматора должны за 16 тактов сложить уже 8 значений, то есть по 2 такта на значение. И так далее... то есть можно поставить в параллель 4 сумматора... Хороший метод! Есть еще один, он описан в XST User Guide от Xilinx, специально для ускорения в сумматорах с большой разрядностью. Там отдельно суммируются старшие и младшие части, с разрывом переноса. Младшие части суммируются как обычно на одном сумматоре, а вот для суммирования старших применяют уже два отдельных сумматора. При этом на один подают единицу переноса в младший разряд, а на второй нет. Потом выходы сумматоров старших частей поступают на двух-входовой коммутатор, управляемый сигналом выхода переноса с сумматора младших частей, и на выходе коммутатора сформируется реальная сумма старших частей. Таким образом, избегают сквозного переноса вдоль всего много разрядного сумматора.
Эскизы прикрепленных изображений
|
|
|
|
|
May 18 2015, 06:46
|
Знающий
   
Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650

|
Цитата(Serhiy_UA @ May 18 2015, 11:11)  Хороший метод! Есть еще один, он описан в XST User Guide от Xilinx, специально для ускорения в сумматорах с большой разрядностью. Там отдельно суммируются старшие и младшие части, с разрывом переноса. Младшие части суммируются как обычно на одном сумматоре, а вот для суммирования старших применяют уже два отдельных сумматора. При этом на один подают единицу переноса в младший разряд, а на второй нет. Потом выходы сумматоров старших частей поступают на двух-входовой коммутатор, управляемый сигналом выхода переноса с сумматора младших частей, и на выходе коммутатора сформируется реальная сумма старших частей. Таким образом, избегают сквозного переноса вдоль всего много разрядного сумматора. По моему опыту работы с продукцией Xilinx (про Альтеру молчу ибо не имел опыта) сквозной перенос через 32 бита будет по времянке гораздо лучше, чем перенос через 16 бит плюс внешний _асинхронный_ мультиплексор 2 в 1. Видимо эта рекомендация относилась к очень старым семействам Xilinx. В современных архитектурах логика переноса настолько разогнана по времянке, что пользовать какие-то трюки для ускрения переноса становится бессмысленно.
|
|
|
|
|
May 18 2015, 07:14
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(Bad0512 @ May 18 2015, 09:46)  ...что пользовать какие-то трюки для ускрения переноса становится бессмысленно. Возможно, так. Но метод такой есть, и я его применял лет 6 назад на FLEX10K (Альтера), что очень мне тогда помогло. Интересно так же и то, что в последних XST User Guide от Xilinx этот метод уже не упоминается.. Хотя кто его знает, может, кому и сгодится, скажем, при суммировании на очень больших разрядностях...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|