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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Как передать все возможные значения счётчика из одного клокового домена в другой?
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 Текстовая версия Сейчас: 1st July 2025 - 11:54
Рейтинг@Mail.ru


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