реклама на сайте
подробности

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


Участник
*

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



Всем привет!

Возник такой вопрос:
Нужно отмерить промежуток времени от события А до события Б с большой точностью (допустим, с точностью 100 МГц-го клока). Время между событиями составляет 500 000 +- 10 000 тактов 100 МГц. Получается счетчик на 3 байта.
Вроде не много, но если надо посчитать несколько таких отрезков времени независимо, да потом как-то обработать данные - выливается в кучу логики.

Как можно уменьшить размеры счетчиков?

Самое адекватное, что приходит в голову - это завести еще один счетчик, на низкой частоте, допустим, на 1 МГц. Этот счетчик будет отсчитывать основную длительность, и в конце, где примерно ожидается событие - включается первый, на 100 МГц-ах и досчитывает точное время до события. Потом результаты счетчиков суммируются.

Но при таком решении все равно нужно тратить место на медленный счетчик, на суммирование и т.д. По моим соображениям выигрыша не будет, либо он будет настолько мал, что не стоит всех этих заморочек. Да и момент запуска/остановки медленного счетчика завязан на клок 1 МГц и даст огромную (по меркам 100 МГц) ошибку.
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 46)
Lmx2315
сообщение Dec 14 2017, 12:12
Сообщение #2


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Вы сделали такие счётчики и они у вас не завелись на 100 Мгц?


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 14 2017, 12:21
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Делал недавно на похожей частоте на Воронежской плисине таймер, с времянкой проблемы были. Пришлось бить на несколько последовательных, суть следующая - при достижении максимального значения на первом формируется сигнал CE, записываемый в регистр, который служит разрешением счета для следующего.Таким образом, вместо одного счетчика разрядностью N соединяются последовательно два счетчика разрядностью N/2. Надеюсь суть описал понятно, кода под рукой нет.
PS/ Вспомнил - у des00 в статье было sm.gif http://embedders.org/content/timequest-dly...-litsom-k-litsu
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 14 2017, 12:21
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 14 2017, 12:21
Сообщение #5


Универсальный солдатик
******

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



Одним таймером на 32 разряда считайте. А время измеряйте по захватам состояния таймера.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 14 2017, 12:24
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(bogaev_roman @ Dec 14 2017, 15:21) *
Делал недавно на похожей частоте на Воронежской плисине таймер, с времянкой проблемы были. Пришлось бить на несколько последовательных, суть следующая - при достижении максимального значения на первом формируется сигнал CE, записываемый в регистр, который служит разрешением счета для следующего.Таким образом, вместо одного счетчика разрядностью N соединяются последовательно два счетчика разрядностью N/2. Надеюсь суть описал понятно, кода под рукой нет.

Это Вы разбили счетчик, чтобы получить перенос в группе.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Dec 14 2017, 15:14
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(nice_vladi @ Dec 14 2017, 15:06) *
Как можно уменьшить размеры счетчиков?

Использовать умножители.

Go to the top of the page
 
+Quote Post
Maverick
сообщение Dec 14 2017, 19:46
Сообщение #8


я только учусь...
******

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



Цитата(Tpeck @ Dec 14 2017, 17:14) *
Использовать умножители.

Поясните пожалуйста....
Или пример дайте...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Dec 15 2017, 07:57
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(Maverick @ Dec 14 2017, 22:46) *
Поясните пожалуйста....
Или пример дайте...


Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Dec 15 2017, 08:23
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Умножитель != DSP block.
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Dec 15 2017, 08:30
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(andrew_b @ Dec 15 2017, 11:23) *
Умножитель != DSP block.

В каких кристаллах?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Dec 15 2017, 08:37
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Tpeck @ Dec 15 2017, 11:30) *
В каких кристаллах?

Не надо троллить. Не кормлю.
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Dec 15 2017, 08:42
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(andrew_b @ Dec 15 2017, 11:37) *
Не надо троллить. Не кормлю.

?
Go to the top of the page
 
+Quote Post
blackfin
сообщение Dec 15 2017, 08:58
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Tpeck @ Dec 15 2017, 11:30) *
В каких кристаллах?

Вы что, никогда не видели внутренности DSP48? biggrin.gif

Там внутри кроме, собсно, умножителя, есть ещё много всякого:



Поэтому:

DSP == (Pre-adder + Multiplier + Pattern Detector + add/subtract/accumulate engine) != Multiplier..
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Dec 15 2017, 09:09
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(blackfin @ Dec 15 2017, 11:58) *
Вы что, никогда не видели внутренности DSP48? biggrin.gif

Там внутри кроме, собсно, умножителя, есть ещё много всякого:



Поэтому:

DSP == (Pre-adder + Multiplier + Pattern Detector + add/subtract/accumulate engine) != Multiplier..


Я с этим утверждением и не спорю. Просто может есть умножители без блока add/subtract/accumulate engine и люди их используют, а я об этом не знаю sm.gif
Мне всегда казалось, если есть умножители => есть сумматоры большой разрядности для интегрирования => можно подать 1 на интегратор и получить счетчик.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Dec 15 2017, 09:14
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(nice_vladi @ Dec 14 2017, 19:06) *
Всем привет!

Возник такой вопрос:
Нужно отмерить промежуток времени от события А до события Б с большой точностью (допустим, с точностью 100 МГц-го клока). Время между событиями составляет 500 000 +- 10 000 тактов 100 МГц. Получается счетчик на 3 байта.
Вроде не много, но если надо посчитать несколько таких отрезков времени независимо, да потом как-то обработать данные - выливается в кучу логики.
о меркам 100 МГц) ошибку.

У вас 19-разрядный счетчик не работает на 100 МГц? Что это за ПЛИС такая? ИМХО это даже для воронежских поделок не должно быть проблемой.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Dec 15 2017, 09:20
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Tpeck @ Dec 15 2017, 12:09) *
.. есть умножители => есть сумматоры ..

Так и нужно было написать, что в счетчике можно использовать сумматоры входящие в состав DSP48.

Вы же предложили операцию суммирования выполнять с помощью операции умножения.

С точки зрения обычной математики это невозможно. Но, может, у вас какая-то своя математика?

biggrin.gif
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Dec 15 2017, 09:35
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(blackfin @ Dec 15 2017, 12:20) *
Так и нужно было написать, что в счетчике можно использовать сумматоры входящие в состав DSP48.

Вы же предложили операцию суммирования выполнять с помощью операции умножения.

С точки зрения обычной математики это невозможно. Но, может, у вас какая-то своя математика?

biggrin.gif

Я предложил реализовать не с помощью операции умножения, а с помощью аппаратного умножителя которые есть в большинстве ПЛИС.
Мне казалось это очевидным и мне даже в голову не приходит как это можно было трактовать по другому.
Но видимо я ошибался.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Dec 15 2017, 09:42
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Bad0512 @ Dec 15 2017, 12:14) *
ИМХО это даже для воронежских поделок не должно быть проблемой.

Ошибаетесь.
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Dec 15 2017, 09:42
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(blackfin @ Dec 15 2017, 12:20) *
С точки зрения обычной математики это невозможно.

Так здесь и не математику обсуждаем.
Go to the top of the page
 
+Quote Post
nice_vladi
сообщение Dec 15 2017, 10:48
Сообщение #21


Участник
*

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



Цитата(Lmx2315 @ Dec 14 2017, 13:12) *
Вы сделали такие счётчики и они у вас не завелись на 100 Мгц?


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


Цитата(bogaev_roman @ Dec 14 2017, 13:21) *
Делал недавно на похожей частоте на Воронежской плисине таймер, с времянкой проблемы были. Пришлось бить на несколько последовательных, суть следующая - при достижении максимального значения на первом формируется сигнал CE, записываемый в регистр, который служит разрешением счета для следующего.Таким образом, вместо одного счетчика разрядностью N соединяются последовательно два счетчика разрядностью N/2. Надеюсь суть описал понятно, кода под рукой нет.
PS/ Вспомнил - у des00 в статье было sm.gif http://embedders.org/content/timequest-dly...-litsom-k-litsu


Это немного не то. Повысится максимальная частота работы, но количество логики останется тем же (мб немного больше).

Цитата(ViKo @ Dec 14 2017, 13:21) *
Одним таймером на 32 разряда считайте. А время измеряйте по захватам состояния таймера.


Немного не понял, можно про захват состояния тамера подробнее? Я представлял себе так: событие А начинаем считать. Событие Б забрали результат, сбросили счётчик. Ну, что-то вроде этого.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 15 2017, 10:59
Сообщение #22


Универсальный солдатик
******

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



Цитата(nice_vladi @ Dec 15 2017, 13:48) *
Немного не понял, можно про захват состояния тамера подробнее? Я представлял себе так: событие А начинаем считать. Событие Б забрали результат, сбросили счётчик. Ну, что-то вроде этого.

Ну, как в таймерах на микроконтроллерах сделано. Счетчик крутится непрерывно. Пришло событие - захватываем состояние счетчика в регистр. Пришло другое - снова (можно в другой регистр). Дальше находим разность между ними, это можно делать где угодно, хоть в микроконтроллере или компьютере, к которому подключен.
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 15 2017, 14:26
Сообщение #23


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



Цитата(Bad0512 @ Dec 15 2017, 12:14) *
У вас 19-разрядный счетчик не работает на 100 МГц? Что это за ПЛИС такая? ИМХО это даже для воронежских поделок не должно быть проблемой.

..почти все воронежские плис до 50 Мгц , только одна какая-то под 100 Мгц , на простом счётчике.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 15 2017, 14:54
Сообщение #24


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(nice_vladi @ Dec 14 2017, 15:06) *
Всем привет!

Возник такой вопрос:
Нужно отмерить промежуток времени от события А до события Б с большой точностью (допустим, с точностью 100 МГц-го клока).

А давайте представим не тупой счетчик с проблемами переноса, а счетчик совсем небольшой + память + автомат + аккумулятор + флаг...
Значит все действия разбиваем на такты-таймслоты. Автомат проверяет что счетчик выдал переполнение и начал делать следующее:
читает 4-6 бит ячейку памяти, делает инкремент аккумулятора и если есть флаг переполнения, то взводит флаг. результат записывает в эту ячейку, а в этот же такт в аккумулятор грузится число из другой ячейки памяти... И его содержимое инкрементирует с учетом флага...
И вот так, старшие биты обрабатываем по "микропроцессорному" за несколько тактов. И чтобы не было перерывов ровно настолько же тактов крутится счетчик. Думаю, что для автомата нужно 6-8 тактов. Аккумулятор скажем на 4 разряда. Память если на Ксайлинксе, то там есть как SRL так и распределенная память на 1 логической ячейке 32х1 (в старых было 16х1)... Так вот, 4 таких ячейки дадут 4 бита х 32 = разрядный счетчик... При этом немного экономится всего. И триггеров и межсоединений...
Причем, если надо, то к этому же автомату, если добавить память, то можно и 2 канала сделать...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 16 2017, 07:53
Сообщение #25


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(iosifk @ Dec 15 2017, 17:54) *
А давайте представим не тупой счетчик с проблемами переноса, а счетчик совсем небольшой + память + автомат + аккумулятор + флаг...
Значит все действия разбиваем на такты-таймслоты. Автомат проверяет что счетчик выдал переполнение и начал делать следующее:
читает 4-6 бит ячейку памяти, делает инкремент аккумулятора и если есть флаг переполнения, то взводит флаг. результат записывает в эту ячейку, а в этот же такт в аккумулятор грузится число из другой ячейки памяти... И его содержимое инкрементирует с учетом флага...
И вот так, старшие биты обрабатываем по "микропроцессорному" за несколько тактов. И чтобы не было перерывов ровно настолько же тактов крутится счетчик. Думаю, что для автомата нужно 6-8 тактов. Аккумулятор скажем на 4 разряда. Память если на Ксайлинксе, то там есть как SRL так и распределенная память на 1 логической ячейке 32х1 (в старых было 16х1)... Так вот, 4 таких ячейки дадут 4 бита х 32 = разрядный счетчик... При этом немного экономится всего. И триггеров и межсоединений...
Причем, если надо, то к этому же автомату, если добавить память, то можно и 2 канала сделать...

Либо даже вот так.
Делаем на SRL сдвиговый регистр. От него 4 бита переписываем в аккумулятор и инкрементируем. Результат переписываем обратно и потом регистр сдвигаем циклически. Причем сам регистр можно сдвигать на 1 бит, но писать-читать из него через 4 бита. А их как раз хватит для автомата.
Итого: SRL - 1 ячейка, аккумулятор на 4 бита, счетчик - ну скажем 5-8 разрядов, триггер разрешения счета и триггер готовности...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Maksim
сообщение Dec 16 2017, 12:25
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



https://ru.m.wikipedia.org/wiki/Регистр_сдв...обратной_связью


--------------------
qwerty
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 16 2017, 13:55
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(bogaev_roman @ Dec 14 2017, 14:21) *
Делал недавно на похожей частоте на Воронежской плисине таймер, с времянкой проблемы были. Пришлось бить на несколько последовательных, суть следующая - при достижении максимального значения на первом формируется сигнал CE, записываемый в регистр, который служит разрешением счета для следующего.

Всё изобретено много десятилетий назад и называется схемой ускоренного (параллельного) переноса в сумматорах. Изучается давным-давно уже студентами профильных специальностей.
Видимо Вы не учились..... laughing.gif

Цитата(ViKo @ Dec 15 2017, 12:59) *
Ну, как в таймерах на микроконтроллерах сделано. Счетчик крутится непрерывно. Пришло событие - захватываем состояние счетчика в регистр. Пришло другое - снова (можно в другой регистр). Дальше находим разность между ними, это можно делать где угодно, хоть в микроконтроллере или компьютере, к которому подключен.

А в чём выигрыш-то? Ну хорошо - счётчик один, но раз автору нужно независимо друг от друга посчитать несколько таких отрезков (видимо для каждого учитываемого отрезка Oi, есть своя пара сигналов Ai и Bi, задающих начало и конец отрезка Oi, и эти отрезки O0...Oi могут по времени как угодно накладываться друг на друга).
А значит потребуется для каждого отрезка завести как минимум один регистр хранения (содержимого счётчика на момент Ai) и один сумматор в доп. коде.
А это однозначно больше чем просто один счётчик на один отрезок.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 15:07
Сообщение #28


Универсальный солдатик
******

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



Цитата(jcxz @ Dec 16 2017, 16:55) *
А в чём выигрыш-то?...
А это однозначно больше чем просто один счётчик на один отрезок.

Может, и нет. Смотря куда результат выдавать.

Цитата(jcxz @ Dec 16 2017, 16:55) *
Всё изобретено много десятилетий назад и называется схемой ускоренного (параллельного) переноса в сумматорах. Изучается давным-давно уже студентами профильных специальностей.

Все равно есть ограничение на длину счетчика.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 16 2017, 15:24
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Dec 16 2017, 17:07) *
Все равно есть ограничение на длину счетчика.

Ограничение в чём? В количестве входов элемента "И"?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 16 2017, 15:28
Сообщение #30


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(jcxz @ Dec 16 2017, 16:55) *
Всё изобретено много десятилетий назад и называется схемой ускоренного (параллельного) переноса в сумматорах.

А значит потребуется для каждого отрезка завести как минимум один регистр хранения (содержимого счётчика на момент Ai) и один сумматор в доп. коде.
А это однозначно больше чем просто один счётчик на один отрезок.

для параллельного переноса надо задействовать довольно много интерконнектов - а это ценный ресурс.
что же касается сдвиговых регистров, то они делаются на SRL - это 16 или 32 бита, но они в одной ячейке. А так как соседние ячейки соединяются локальными интерконнектами, то там можно поднять частоту повыше...
А когда надо много счетчиков - то берем двухпортовку и один аккумулятор с автоматом... По одному порту читает результат, по другому порту работает автомат... И туда влезут сотни каналов...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 15:44
Сообщение #31


Универсальный солдатик
******

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



Цитата(jcxz @ Dec 16 2017, 18:24) *
Ограничение в чём? В количестве входов элемента "И"?

В быстродействии, естественно.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 16 2017, 16:08
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Dec 16 2017, 17:44) *
В быстродействии, естественно.

Так схема параллельного переноса как раз и нужна для снятия ограничений по скорости.
Как она может ограничить быстродействие? поясните.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 16 2017, 16:40
Сообщение #33


Универсальный солдатик
******

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



Цитата(jcxz @ Dec 16 2017, 19:08) *
Так схема параллельного переноса как раз и нужна для снятия ограничений по скорости.
Как она может ограничить быстродействие? поясните.

Как последовательный перенос имеет некую задержку для создания переноса (особенно, для последнего разряда), так и параллельный перенос имеет задержку.
А что вам непонятно? Вы знаете, к примеру, 32-разрядный элемент "И"? Как его сделать в ПЛИС? Какое у него будет быстродействие?
А предыдущему триггеру нужна 31-разрядная схема "И", и т.п. Ох... много.

Поэтому и разбивают таймер на части, делают лишний такт при переходе с одной части на другую, зато считают долгие времена.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 17 2017, 00:03
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Dec 16 2017, 18:40) *
Как последовательный перенос имеет некую задержку для создания переноса (особенно, для последнего разряда), так и параллельный перенос имеет задержку.

Всё имеет задержку, только разница в разы: для параллельной схемы задержка будет равна задержке одного разряда + задержка на "И", а в последовательной - суммарной задержке всех разрядов.

Цитата(ViKo @ Dec 16 2017, 18:40) *
А что вам непонятно? Вы знаете, к примеру, 32-разрядный элемент "И"? Как его сделать в ПЛИС? Какое у него будет быстродействие?

Многовходовой "И" легко делается из нескольких меньших.
Последовательно-параллельный перенос тоже возможен. Для уменьшения используемых элементов. Но разве в современных ПЛИС (не знаком с ними) не хватит ресурсов на несколько полноценных 24-разрядных счётчиков с параллельным переносом???
Go to the top of the page
 
+Quote Post
Александр77
сообщение Dec 17 2017, 07:09
Сообщение #35


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Цитата(jcxz @ Dec 17 2017, 03:03) *
Всё имеет задержку, только разница в разы: для параллельной схемы задержка будет равна задержке одного разряда + задержка на "И", а в последовательной - суммарной задержке всех разрядов.
Многовходовой "И" легко делается из нескольких меньших.

Когда будете делать слоеную "И", задержка составит не меньше чем n*dt, где n - число слоев. Тут все и полезет в сторону снижения частоты.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 17 2017, 07:11
Сообщение #36


Универсальный солдатик
******

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



В современных и несовременных ПЛИС есть специальные быстрые цепи последовательного переноса, благодаря чему таймер на 32 разряда получается быстрым безо всяких извращений.
А когда будете делать многовходовой И из многих малых, очень скоро быстродействие такого узла окажется хуже последовательного переноса в ПЛИС.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 17 2017, 15:32
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Александр77 @ Dec 17 2017, 09:09) *
Когда будете делать слоеную "И", задержка составит не меньше чем n*dt, где n - число слоев. Тут все и полезет в сторону снижения частоты.

Или я чего-то не понимаю или здесь клуб троллей... wacko.gif
5-ти входовые "И" возможны? Если да, то для реализации на их основе 24-входового "И" достаточно всего 2-х(!) "слоёв".
Не 20-и, а всего-лишь 2-х, Карл! А это по задержке будет меньше чем один разряд счётчика.

Цитата(ViKo @ Dec 17 2017, 09:11) *
А когда будете делать многовходовой И из многих малых, очень скоро быстродействие такого узла окажется хуже последовательного переноса в ПЛИС.

Каким образом задержка двух последовательных схем "И" может оказаться больше чем задержка последовательного переноса на 24 разрядах счётчика?
Каждый разряд счётчика состоит уже из нескольких последовательно включенных логических элементов.
Да, и автор говорил про 24-битный счётчик, а не 32-битный.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 17 2017, 15:42
Сообщение #38


Универсальный солдатик
******

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



Цитата(jcxz @ Dec 17 2017, 18:32) *
Или я чего-то не понимаю или здесь клуб троллей... wacko.gif
5-ти входовые "И" возможны?

Нет. 4-входовые.
Цитата
Если да, то для реализации на их основе 24-входового "И" достаточно всего 2-х(!) "слоёв".
Не 20-и, а всего-лишь 2-х, Карл! А это по задержке будет меньше чем один разряд счётчика.

Итого, 3. Но вы не учитываете задержки каналов, связывающих логические элементы. И задержек там будет, мама не горюй. А, поскольку количество каналов и логических элементов ограничено, там такая конструкция вырастет, что пол-ПЛИСы займет.
Мне только в кошмарном сне может присниться предлагаемое вами решение, реализованное в ПЛИС.
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Dec 17 2017, 16:32
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 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-входовые.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 17 2017, 16:48
Сообщение #40


Универсальный солдатик
******

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



Цитата(_4afc_ @ Dec 17 2017, 19:32) *
Задержка не перейдёт в снижение частоты если после каждого слоя поставить тригер.

Такт потеряли. Желаете считать через такт-другой?
Цитата
Если говорить за все современные ПЛИС - думаю у Xilinx всё же 6-входовые.

Ага, у них много чего есть, но цепи переносов не выбрасывают.
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Dec 17 2017, 17:05
Сообщение #41


Профессионал
*****

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



Цитата(ViKo @ Dec 17 2017, 19:48) *
Такт потеряли. Желаете считать через такт-другой?

Желаю узнать результат с задержкой в такт - другой.

Цитата(ViKo @ Dec 17 2017, 19:48) *
Ага, у них много чего есть, но цепи переносов не выбрасывают.

Не знаю, в чём проблемы иметь многоразрядный счётчик. В XC6SLX9 просто 32 разрядный счётчик спокойно считает на частоте 375МГц.
Go to the top of the page
 
+Quote Post
svedach
сообщение Dec 17 2017, 17:26
Сообщение #42


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Цитата
Не знаю, в чём проблемы иметь многоразрядный счётчик. В XC6SLX9 просто 32 разрядный счётчик спокойно считает на частоте 375МГц.


В седьмой серии на Artix (-1), 32 бит счетчик без проблем раскладывается на 150 МГц... На большей не проверял - не надо было...
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Dec 17 2017, 18:20
Сообщение #43


Профессионал
*****

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



Цитата(nice_vladi @ Dec 14 2017, 15:06) *
Нужно отмерить промежуток времени от события А до события Б с большой точностью (допустим, с точностью 100 МГц-го клока). Время между событиями составляет 500 000 +- 10 000 тактов 100 МГц. Получается счетчик на 3 байта.


Вообще-то достаточно одного 16битного счётчика, если вы измеряете диапазон 500 000 +- 10 000 тактов.
Если его запускать по событию А и останавливать по событию Б, то счётчик будет содержать время (0...65535)+458752 такта.



Цитата(svedach @ Dec 17 2017, 20:26) *
В седьмой серии на Artix (-1), 32 бит счетчик без проблем раскладывается на 150 МГц... На большей не проверял - не надо было...

Код
module t1(input CLK100, output CLK2);
reg      [31:0] Count;
always @( posedge CLK100 )  begin Count<=Count+1;    end
assign CLK2=Count[31];
endmodule

XC6SLX9-2TTG144 Synthesizing:
# Registers : 32
Flip-Flops : 32
Speed Grade: -2
Minimum period: 2.654ns (Maximum Frequency: 376.861MHz)
Код
----------------------------------------------------------------------------------------------------------
  Constraint                                |    Check    | Worst Case |  Best Case | Timing |   Timing  
                                            |             |    Slack   | Achievable | Errors |    Score  
----------------------------------------------------------------------------------------------------------
  TS_sys_clk_pin = PERIOD TIMEGRP "sys_clk_ | SETUP       |     0.430ns|     2.236ns|       0|           0
  pin" 375 MHz HIGH 50%                     | HOLD        |     0.465ns|            |       0|           0
                                            | MINPERIOD   |     0.000ns|     2.666ns|       0|           0
----------------------------------------------------------------------------------------------------------
All constraints were met.


Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 18 2017, 05:50
Сообщение #44


Универсальный солдатик
******

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



Я в Cyclone III делал таймер, цитирую свои комментарии:
Для EP3C5E144C8 при длине таймера LENTH получается следующая рабочая частота:
28 256.02 MHz
29 251.32 MHz
30 247.04 MHz

На стандартных последовательных переносах, jcxz!
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 19 2017, 21:29
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Dec 18 2017, 07:50) *
30 247.04 MHz
На стандартных последовательных переносах, jcxz!

Это надо читать как ~30ГГц ? Серьёзно? wacko.gif
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Dec 20 2017, 04:19
Сообщение #46


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(jcxz @ Dec 20 2017, 00:29) *
Это надо читать как ~30ГГц ? Серьёзно? wacko.gif

LENTH 30, частота 247.04 MHz.
Так понятно?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 20 2017, 04:54
Сообщение #47


Универсальный солдатик
******

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



Цитата(jcxz @ Dec 20 2017, 00:29) *
Это надо читать как ~30ГГц ? Серьёзно? wacko.gif

Это же таблица. Там пробелы есть между колонками. В оригинале были табуляции.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01815 секунд с 7
ELECTRONIX ©2004-2016