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

 
 
> Как передать все возможные значения счётчика из одного клокового домена в другой?
MegaVolt
сообщение Oct 20 2015, 10:51
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Есть первый клоковый домен. В нём реализован счётчик. Есть второй клоковый домен. Как можно передать все возможные значения счётчика во второй домен.

Классическая реализация подразумевает запрос - ответ с использованием синхронизаторов.

Есть ли решения позволяющие иметь на второй стороне все возможные значения счётчика.

Поясню. Для однобитного счётчика это позволяет реализовать обычный синхронизатор правда при условии что первая частота меньше второй.

Есть ли решения для большей разрядности и не зависящие от соотношения частот? Искажения кодов не допустимы. Пропуск кода или повторные коды само собой допустимы.

Т.е. вот такие результаты выходов вполне допустимы
1: 1-2-4-5-7-8-10-11-...
2: 1-1-2-2-2-3-3-4-4-4-4-...

Вопрос скорее теоретический. Любопытно возможно ли такое и как реализовать наиболее простым способом.
Возможно есть частные решения для передачи из домена с болей частотой в домен с меньшей. Или наоборот.
Go to the top of the page
 
+Quote Post
4 страниц V  < 1 2 3 4 >  
Start new topic
Ответов (30 - 44)
krux
сообщение Oct 20 2015, 14:48
Сообщение #31


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Цитата
Как выбирать из регистров если частоты не кратны

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


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Oct 20 2015, 14:56
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(krux @ Oct 20 2015, 17:48) *
по известному номеру предыдущего выбранного синхронизатора, плюс, по монотонному возрастанию для начальной синхронизации.
Это да вариант. Куча синхронизаторов работающих по очереди со сдвигом фазы на такт в каждом. Их количество зависит от количества тактов необходимых на синхронизацию.

Как вариант решения очень даже. Вот интересно есть ли способы как то это решение оптимизировать?
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 20 2015, 15:05
Сообщение #33


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(MegaVolt @ Oct 20 2015, 22:15) *
Интересует решение и для второго случая когда clk1 > clk2

сделать асинхронный ресамплер на основе elastic buffer(stream based fifo) + DPLL.

ЗЫ. правда будут залипы. но без этого никак


--------------------
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Oct 20 2015, 15:07
Сообщение #34


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Цитата(MegaVolt @ Oct 20 2015, 17:15) *
Пропуски и повторы допустимы если они вызываны разностью частот. И не допустимы если они вызваны тормозами синхронизатора.
Интересует решение и для второго случая когда clk1 > clk2
А если так:
1. В домене clk2 создаём счётчик cnt2 (пусть от 0 до 127)
2. В домене clk1 создаём счётчик cnt1, разрядность которого позволяет с некоторым запасом не "кувыркнуться" через ноль, пока счетчик (cnt2) досчитает до 127
3. При достижении счётчиком cnt2 значения 127, сбрасываемся в 0 и формируем запрос в домен clk1 о передаче значения cnt1.
4. Получив запрос, счётчик cnt1 пересылает своё значение и сбрасывается в 0.
5. Таким образом, мы получаем какое количество тактов clk1 накапливается в счётчике cnt1 за время, пока счётчик cnt2 считает интервал в 128 тактов clk2.
6. Представив это значение в формате с фиксированной точкой мы получаем масштабный коэффициент, позволяющий вести эквивалентный счёт от тактов clk2 с представлением времени в домене clk1 в течении следующего интервала, пока не произойдёт обновление информации.
Пример:
cnt2 пробежал интервал в 128 тактов clk2, присланное значение cnt1 = 2309 clk1
Считаем 7 младших бит - дробной частью, тогда в десятичных получаем cnt1/cnt2 = 18,0390625.
Теперь на каждый такт clk2 мы прибавляем к образе cnt1 значение 18,0390625:
18,0390625, 36,078125 и т.д.
На следующем интервале cnt1 покажет число 2314, к примеру, и мы скорректируем наш масштабный коэффициент.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Oct 20 2015, 15:20
Сообщение #35


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(des00 @ Oct 20 2015, 18:05) *
сделать асинхронный ресамплер на основе elastic buffer(stream based fifo) + DPLL.
Цифровая PLL впринципе вариант но не самый простой sm.gif
Цитата
ЗЫ. правда будут залипы. но без этого никак
Залипы это что?


Цитата(EvgenyNik @ Oct 20 2015, 18:07) *
А если так:
...
Теперь на каждый такт clk2 мы прибавляем к образе cnt1 значение 18,0390625:
18,0390625, 36,078125 и т.д.
На следующем интервале cnt1 покажет число 2314, к примеру, и мы скорректируем наш масштабный коэффициент.
Очень любопытный способ sm.gif Два счётчика считающих отдельно и подстраивающихся друг к другу. Спасибо sm.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 20 2015, 15:31
Сообщение #36


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(MegaVolt @ Oct 20 2015, 22:20) *
Цифровая PLL впринципе вариант но не самый простой sm.gif Залипы это что?

элементарный. асинхронный ФД + петлевой фильтр(lead/lag звенья) + NCO (по сути аккумулятор). итого плиток 150-200. ну и elastic buffer еще плиток 30+ блочная память

залипы у меня это повторы последнего числа.


--------------------
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 20 2015, 15:41
Сообщение #37


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

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(MegaVolt)
Пропуски и повторы допустимы если они вызываны разностью частот. И не допустимы если они вызваны тормозами синхронизатора.


Вы не можете разделить эти ситуации. Поэтому пока не конкретизируете сценарий работы этого устройства, какие тормоза синхронизатора допустимы, а какие нет, какое соотношение частот предполагается и.т.д. ... Вы так и будете "теоретически" бегать за коровками sm.gif
Надо неспешна окинуть взором все стадо-систему, определить приоритеты и и методично начать тра... sm.gif

Практически задержки будут не менее 3-5 тактов МЕДЛЕННОЙ частоты

Успехов! Rob.
Go to the top of the page
 
+Quote Post
krux
сообщение Oct 20 2015, 15:55
Сообщение #38


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



счетчик из 100 МГц домена переведён на 9 МГц. использованы 6 синхронизаторов на муксах с ready-valid интерфейсами.
Прикрепленное изображение

доделывать не стал, там дальше уже всё понятно.
ресурсов жрёт кошмар. имхо оно того не стоит.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Oct 20 2015, 16:27
Сообщение #39


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Правильно сформулированная задача - половина решения sm.gif)

Задача то сводится к следующей:
Передаём через параллельный синхронизатор выход счётчика во второй домен. Часть семплов портиться. Задача выдавать на выход только годные семплы.

Годность определяем по условям.
1. Следующий семпл >предыдущего на величину не более заданной.
2. Некий небольшое избыточное кодирование для защиты младших бит.

Господа критикуйте sm.gif)

Цитата(krux @ Oct 20 2015, 18:55) *
счетчик из 100 МГц домена переведён на 9 МГц. использованы 6 синхронизаторов на муксах с ready-valid интерфейсами.
если не секрет что за хитрые синхронизаторы?


Цитата(des00 @ Oct 20 2015, 18:31) *
элементарный. асинхронный ФД
а для обработки его выхода часом не нужна частота большая чем оба клока в разы?
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 20 2015, 16:33
Сообщение #40


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(MegaVolt @ Oct 20 2015, 23:27) *
а для обработки его выхода часом не нужна частота большая чем оба клока в разы?

а поделить до кратных частот мысль не приходит ? wink.gif


--------------------
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Oct 20 2015, 16:51
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(des00 @ Oct 20 2015, 19:33) *
а поделить до кратных частот мысль не приходит ? wink.gif
sm.gif))))))

Туплю sm.gif
Я в жизни не делал ЦФАПЧ sm.gif))) хотя они всегда нравились sm.gif
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 20 2015, 17:12
Сообщение #42


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

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(MegaVolt @ Oct 20 2015, 19:27) *
Правильно сформулированная задача - половина решения sm.gif)
Задача то сводится к следующей:
Передаём через параллельный синхронизатор выход счётчика во второй домен. Часть семплов портиться. Задача выдавать на выход только годные семплы.

Годность определяем по условям.
1. Следующий семпл >предыдущего на величину не более заданной.
2. Некий небольшое избыточное кодирование для защиты младших бит.

Господа критикуйте sm.gif)

Еще раз - поставьте классику. Она обеспечит Вам требуемые условия!
При ЛЮБЫХ отношениях частот (но с одним маааленким HO) wink.gif
должно быть ограничение что время распространение сигнала от регистра быстрого клока к медленному НЕ БОЛЕЕ периода быстрого клока - и "Усе будет в ажуре шеф!" sm.gif

Успехов! Rob.
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Oct 20 2015, 18:51
Сообщение #43


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(RobFPGA @ Oct 20 2015, 20:12) *
Еще раз - поставьте классику. Она обеспечит Вам требуемые условия!
классика это с кодом грея?
Цитата
При ЛЮБЫХ отношениях частот (но с одним маааленким HO) wink.gif
должно быть ограничение что время распространение сигнала от регистра быстрого клока к медленному НЕ БОЛЕЕ периода быстрого клока - и "Усе будет в ажуре шеф!" sm.gif
не очень понял про какие регистры идёт речь и откуда берётся это ограничение?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Oct 20 2015, 19:12
Сообщение #44


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

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(MegaVolt @ Oct 20 2015, 21:51) *
классика это с кодом грея?не очень понял про какие регистры идёт речь и откуда берётся это ограничение?

Да именно с ним. А ограничение гарантирует отсутствие ошибок.
cnt_in(clk_1) -> bin_to_gray -> reg_1(clk_1) -> reg_2(clk_2) ->reg_3(clk_2) ... -> gray_to_bin -> cnt_out(clk_2)
Ограничение задает максимальное время распространение сигнала между reg_1 и reg_2. Это время должно быть меньше чем период максимально частоты.

Успехов! Rob.

Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 20 2015, 19:24
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



по моему хэнд шейк позволит передавать данные из 1 домена в другой не менее быстро, но со 100% защитой.

код грея хорош если нет пропусков отсчетов, представьте что clk1 в 10 раз быстрее clk2, тогда reg_1(clk_1) в домене clk_2 будет виден как 0-10-20 и так далее, а в коде грея на такой дельте будет смена далеко не 1 бита, и вся синхроцепочка не имеет смысла, как и преобразование в код грея.


а если на частоте clk1 сохранять данные в регистр, и выставлять сигнал готовности, то через 2 такта clk2 данные будут уже во 2 домене, а еще через 2 clk1 можно выставлять новые данные. Если подобрать частоту подачи данных, то можно даже 2 clk1 сэкономить. И получим ту же частоту что на коде грея...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 16:24
Рейтинг@Mail.ru


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