|
Счетчики с большой разрядностью, Как лучше писать? |
|
|
|
Dec 14 2017, 12:06
|

Участник

Группа: Участник
Сообщений: 53
Регистрация: 7-09-16
Из: Томск
Пользователь №: 93 239

|
Всем привет!
Возник такой вопрос: Нужно отмерить промежуток времени от события А до события Б с большой точностью (допустим, с точностью 100 МГц-го клока). Время между событиями составляет 500 000 +- 10 000 тактов 100 МГц. Получается счетчик на 3 байта. Вроде не много, но если надо посчитать несколько таких отрезков времени независимо, да потом как-то обработать данные - выливается в кучу логики.
Как можно уменьшить размеры счетчиков?
Самое адекватное, что приходит в голову - это завести еще один счетчик, на низкой частоте, допустим, на 1 МГц. Этот счетчик будет отсчитывать основную длительность, и в конце, где примерно ожидается событие - включается первый, на 100 МГц-ах и досчитывает точное время до события. Потом результаты счетчиков суммируются.
Но при таком решении все равно нужно тратить место на медленный счетчик, на суммирование и т.д. По моим соображениям выигрыша не будет, либо он будет настолько мал, что не стоит всех этих заморочек. Да и момент запуска/остановки медленного счетчика завязан на клок 1 МГц и даст огромную (по меркам 100 МГц) ошибку.
|
|
|
|
|
 |
Ответов
(1 - 14)
|
Dec 14 2017, 12:21
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(nice_vladi @ Dec 14 2017, 15:06)  Нужно отмерить промежуток времени от события А до события Б с большой точностью (допустим, с точностью 100 МГц-го клока). Время между событиями составляет 500 000 +- 10 000 тактов 100 МГц. Получается счетчик на 3 байта. Вроде не много, но если надо посчитать несколько таких отрезков времени независимо, да потом как-то обработать данные - выливается в кучу логики.
Как можно уменьшить размеры счетчиков?
Самое адекватное, что приходит в голову - это завести еще один счетчик, на низкой частоте, допустим, на 1 МГц. Прескейлер даст выигрыш только в том случае, если его выход будет использоваться еще где-то... А если нет, то какая разница, где считать?
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Dec 14 2017, 15:14
|
Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243

|
Цитата(nice_vladi @ Dec 14 2017, 15:06)  Как можно уменьшить размеры счетчиков? Использовать умножители.
|
|
|
|
|
Dec 15 2017, 07:57
|
Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243

|
Цитата(Maverick @ Dec 14 2017, 22:46)  Поясните пожалуйста.... Или пример дайте...
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 15 2017, 08:30
|
Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243

|
Цитата(andrew_b @ Dec 15 2017, 11:23)  Умножитель != DSP block. В каких кристаллах?
|
|
|
|
|
Dec 15 2017, 08:42
|
Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243

|
Цитата(andrew_b @ Dec 15 2017, 11:37)  Не надо троллить. Не кормлю. ?
|
|
|
|
|
Dec 15 2017, 08:58
|
Гуру
     
Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261

|
Цитата(Tpeck @ Dec 15 2017, 11:30)  В каких кристаллах? Вы что, никогда не видели внутренности DSP48? Там внутри кроме, собсно, умножителя, есть ещё много всякого:  Поэтому: DSP == (Pre-adder + Multiplier + Pattern Detector + add/subtract/accumulate engine) != Multiplier..
|
|
|
|
|
Dec 15 2017, 09:09
|
Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243

|
Цитата(blackfin @ Dec 15 2017, 11:58)  Вы что, никогда не видели внутренности DSP48? Там внутри кроме, собсно, умножителя, есть ещё много всякого:  Поэтому: DSP == (Pre-adder + Multiplier + Pattern Detector + add/subtract/accumulate engine) != Multiplier.. Я с этим утверждением и не спорю. Просто может есть умножители без блока add/subtract/accumulate engine и люди их используют, а я об этом не знаю  Мне всегда казалось, если есть умножители => есть сумматоры большой разрядности для интегрирования => можно подать 1 на интегратор и получить счетчик.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|