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

Участник

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

|
Всем привет!
Возник такой вопрос: Нужно отмерить промежуток времени от события А до события Б с большой точностью (допустим, с точностью 100 МГц-го клока). Время между событиями составляет 500 000 +- 10 000 тактов 100 МГц. Получается счетчик на 3 байта. Вроде не много, но если надо посчитать несколько таких отрезков времени независимо, да потом как-то обработать данные - выливается в кучу логики.
Как можно уменьшить размеры счетчиков?
Самое адекватное, что приходит в голову - это завести еще один счетчик, на низкой частоте, допустим, на 1 МГц. Этот счетчик будет отсчитывать основную длительность, и в конце, где примерно ожидается событие - включается первый, на 100 МГц-ах и досчитывает точное время до события. Потом результаты счетчиков суммируются.
Но при таком решении все равно нужно тратить место на медленный счетчик, на суммирование и т.д. По моим соображениям выигрыша не будет, либо он будет настолько мал, что не стоит всех этих заморочек. Да и момент запуска/остановки медленного счетчика завязан на клок 1 МГц и даст огромную (по меркам 100 МГц) ошибку.
|
|
|
|
|
 |
Ответов
|
Dec 16 2017, 13:55
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(bogaev_roman @ Dec 14 2017, 14:21)  Делал недавно на похожей частоте на Воронежской плисине таймер, с времянкой проблемы были. Пришлось бить на несколько последовательных, суть следующая - при достижении максимального значения на первом формируется сигнал CE, записываемый в регистр, который служит разрешением счета для следующего. Всё изобретено много десятилетий назад и называется схемой ускоренного (параллельного) переноса в сумматорах. Изучается давным-давно уже студентами профильных специальностей. Видимо Вы не учились.....  Цитата(ViKo @ Dec 15 2017, 12:59)  Ну, как в таймерах на микроконтроллерах сделано. Счетчик крутится непрерывно. Пришло событие - захватываем состояние счетчика в регистр. Пришло другое - снова (можно в другой регистр). Дальше находим разность между ними, это можно делать где угодно, хоть в микроконтроллере или компьютере, к которому подключен. А в чём выигрыш-то? Ну хорошо - счётчик один, но раз автору нужно независимо друг от друга посчитать несколько таких отрезков (видимо для каждого учитываемого отрезка O i, есть своя пара сигналов A i и B i, задающих начало и конец отрезка O i, и эти отрезки O 0...O i могут по времени как угодно накладываться друг на друга). А значит потребуется для каждого отрезка завести как минимум один регистр хранения (содержимого счётчика на момент A i) и один сумматор в доп. коде. А это однозначно больше чем просто один счётчик на один отрезок.
|
|
|
|
|
Dec 16 2017, 16:40
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(jcxz @ Dec 16 2017, 19:08)  Так схема параллельного переноса как раз и нужна для снятия ограничений по скорости. Как она может ограничить быстродействие? поясните. Как последовательный перенос имеет некую задержку для создания переноса (особенно, для последнего разряда), так и параллельный перенос имеет задержку. А что вам непонятно? Вы знаете, к примеру, 32-разрядный элемент "И"? Как его сделать в ПЛИС? Какое у него будет быстродействие? А предыдущему триггеру нужна 31-разрядная схема "И", и т.п. Ох... много. Поэтому и разбивают таймер на части, делают лишний такт при переходе с одной части на другую, зато считают долгие времена.
|
|
|
|
|
Dec 17 2017, 00:03
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(ViKo @ Dec 16 2017, 18:40)  Как последовательный перенос имеет некую задержку для создания переноса (особенно, для последнего разряда), так и параллельный перенос имеет задержку. Всё имеет задержку, только разница в разы: для параллельной схемы задержка будет равна задержке одного разряда + задержка на "И", а в последовательной - суммарной задержке всех разрядов. Цитата(ViKo @ Dec 16 2017, 18:40)  А что вам непонятно? Вы знаете, к примеру, 32-разрядный элемент "И"? Как его сделать в ПЛИС? Какое у него будет быстродействие? Многовходовой "И" легко делается из нескольких меньших. Последовательно-параллельный перенос тоже возможен. Для уменьшения используемых элементов. Но разве в современных ПЛИС (не знаком с ними) не хватит ресурсов на несколько полноценных 24-разрядных счётчиков с параллельным переносом???
|
|
|
|
|
Dec 17 2017, 16:32
|

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(Александр77 @ Dec 17 2017, 10:09)  Когда будете делать слоеную "И", задержка составит не меньше чем n*dt, где n - число слоев. Тут все и полезет в сторону снижения частоты. Задержка не перейдёт в снижение частоты если после каждого слоя поставить тригер. Цитата(ViKo @ Dec 17 2017, 18:42)  Нет. 4-входовые. Если говорить за все современные ПЛИС - думаю у Xilinx всё же 6-входовые.
|
|
|
|
Сообщений в этой теме
nice_vladi Счетчики с большой разрядностью Dec 14 2017, 12:06 Lmx2315 Вы сделали такие счётчики и они у вас не завелись ... Dec 14 2017, 12:12 iosifk Цитата(bogaev_roman @ Dec 14 2017, 15:21)... Dec 14 2017, 12:24         jcxz Цитата(Александр77 @ Dec 17 2017, 09:09) ... Dec 17 2017, 15:32          ViKo Цитата(jcxz @ Dec 17 2017, 18:32) Или я ч... Dec 17 2017, 15:42          ViKo Цитата(_4afc_ @ Dec 17 2017, 19:32) Задер... Dec 17 2017, 16:48           _4afc_ Цитата(ViKo @ Dec 17 2017, 19:48) Такт по... Dec 17 2017, 17:05  iosifk Цитата(jcxz @ Dec 16 2017, 16:55) Всё изо... Dec 16 2017, 15:28 iosifk Цитата(nice_vladi @ Dec 14 2017, 15:06) Н... Dec 14 2017, 12:21 ViKo Одним таймером на 32 разряда считайте. А время изм... Dec 14 2017, 12:21 Tpeck Цитата(nice_vladi @ Dec 14 2017, 15:06) К... Dec 14 2017, 15:14 Maverick Цитата(Tpeck @ Dec 14 2017, 17:14) Исполь... Dec 14 2017, 19:46  Tpeck Цитата(Maverick @ Dec 14 2017, 22:46) Поя... Dec 15 2017, 07:57   andrew_b Умножитель != DSP block. Dec 15 2017, 08:23    Tpeck Цитата(andrew_b @ Dec 15 2017, 11:23) Умн... Dec 15 2017, 08:30     andrew_b Цитата(Tpeck @ Dec 15 2017, 11:30) В каки... Dec 15 2017, 08:37      Tpeck Цитата(andrew_b @ Dec 15 2017, 11:37) Не ... Dec 15 2017, 08:42     blackfin Цитата(Tpeck @ Dec 15 2017, 11:30) В каки... Dec 15 2017, 08:58      Tpeck Цитата(blackfin @ Dec 15 2017, 11:58) Вы ... Dec 15 2017, 09:09       blackfin Цитата(Tpeck @ Dec 15 2017, 12:09) .. ест... Dec 15 2017, 09:20        Tpeck Цитата(blackfin @ Dec 15 2017, 12:20) Так... Dec 15 2017, 09:35        Tpeck Цитата(blackfin @ Dec 15 2017, 12:20) С т... Dec 15 2017, 09:42 Bad0512 Цитата(nice_vladi @ Dec 14 2017, 19:06) В... Dec 15 2017, 09:14 bogaev_roman Цитата(Bad0512 @ Dec 15 2017, 12:14) ИМХО... Dec 15 2017, 09:42 Lmx2315 Цитата(Bad0512 @ Dec 15 2017, 12:14) У ва... Dec 15 2017, 14:26 nice_vladi Цитата(Lmx2315 @ Dec 14 2017, 13:12) Вы с... Dec 15 2017, 10:48 ViKo Цитата(nice_vladi @ Dec 15 2017, 13:48) Н... Dec 15 2017, 10:59 iosifk Цитата(nice_vladi @ Dec 14 2017, 15:06) В... Dec 15 2017, 14:54 iosifk Цитата(iosifk @ Dec 15 2017, 17:54) А дав... Dec 16 2017, 07:53 Maksim https://ru.m.wikipedia.org/wiki/Регистр_сдв...обра... Dec 16 2017, 12:25 ViKo В современных и несовременных ПЛИС есть специальны... Dec 17 2017, 07:11 svedach ЦитатаНе знаю, в чём проблемы иметь многоразрядный... Dec 17 2017, 17:26 _4afc_ Цитата(nice_vladi @ Dec 14 2017, 15:06) Н... Dec 17 2017, 18:20 ViKo Я в Cyclone III делал таймер, цитирую свои коммент... Dec 18 2017, 05:50 jcxz Цитата(ViKo @ Dec 18 2017, 07:50) 30 247.... Dec 19 2017, 21:29  _Anatoliy Цитата(jcxz @ Dec 20 2017, 00:29) Это над... Dec 20 2017, 04:19  ViKo Цитата(jcxz @ Dec 20 2017, 00:29) Это над... Dec 20 2017, 04:54
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|