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

 
 
> Синхронизер, как сделать?
alexPec
сообщение Feb 11 2011, 23:21
Сообщение #1


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Добрый день. Мельком как то упоминал, но решил отдельную тему создать, чтоб была ясность.Такая задача: есть источник данных (АЦП, 16 бит), есть автомат, который их обрабатывает. Частоты АЦП и автомата отличаются на 0,06 Гц (примерно) при частоте 5 МГц. Надо как то данные синхронизировать. Что-то типа фифо на 1 слово, без сигналов "пусто" и "полно". В теме "фифо на 1 слово" посоветовали взять готовое фифо альтеры, но там на 4 слова минимум (в визарде). Может как то просто можно его изобразить, синхронизер этот. Логика такая: если новый отсчет не пришел, то автоматом читается старый. Если новый отсчет пришел, а старый не прочитан - старый пропадает. Т.е. если отсчет пропал или два раза прочитался (все равно такая ситуация случится) - не страшно, лишь бы ошибок в самом отсчете не было, типа половина бит - со старого отсчета, половина - с нового.
Пока не представляю даже как это синхронизировать, хоть бы образчик какой...

Сообщение отредактировал alexPec - Feb 11 2011, 23:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Feb 12 2011, 07:28
Сообщение #2


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

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



при таком соотношении тактовых и символьных частот, рекомендую сделать одинаковую частоту работы АЦП и вашего блока, или поставить фифо на 16 слов


--------------------
Go to the top of the page
 
+Quote Post
alexPec
сообщение Feb 12 2011, 09:39
Сообщение #3


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Спасибо ВСЕМ за ответы

Цитата(des00 @ Feb 12 2011, 10:28) *
при таком соотношении тактовых и символьных частот, рекомендую сделать одинаковую частоту работы АЦП и вашего блока, или поставить фифо на 16 слов


А нельзя одинаковую. Я бы рад. Я тут тему поднимал, нельзя потому что ацп тактируется DDS-ом, а от этого тактового нельзя синхронизировать pll. У меня 2 ацп на 3 с лишним и на 5 МГц. Максимально близко подстроить частоты можно с точностью установки dds-а, около 0,06 гц (ой блин, щас дошло, можно ведь и точнее, если умножение в ддсе сделать меньше, но не суть, все равно не ровно). Что соотношение частот автомата (в плисе) и АЦП именно такое уверенность есть, т.к. и ДДС и плис тактируются одним стабильным генератором на 16 мгц.

Цитата
Я бы сделал как в некоторых синхронных АЦП, перекодировал в код Грея, потом поставил пару-тройку регистров с минимальной длиной соединения и перекодировал обратно.

А как код грея тут помочь может? Если будут ошибки - так они и в коде грея будут.

Цитата
Судя по всему, нужен простой регистр на N разрядов. Записывать в него будете по сигналам синхронизации АЦП, а читать - когда захотите

Ну да, так и хочу, но это ведь в идеале. В реальности, когда (при таком соотношении частот так все равно будет, и не раз) чтение почти совпадает с записью (ну с разницей в сотни пикосекунд), какие-то биты данных успеют поменяться на новые, а какие-то нет, потому как одинаковое время распространения сигнала для всех 16 бит сделать не реально (или я что-то недопонимаю?), да и у регистров есть setup, hold параметры, измеряемые наносекундами. Если я правильно понимаю, когда не выдерживаем эти параметры, переключение регистра не гарантируется. В итоге при чтении получим половину бит старого отсчета, половину - нового. А этого и боюсь.

Цитата
Не мучайтесь, ставьте FIFO на 4 слова. Не нужны full и empty - игнорируйте.

А я вот и хочу у спецов спросить, а поможет ли? При таком раскладе похоже уже все равно - пусть 4, пусть 16 слов, лишь бы работало надежно. Как там в этом двухклоковом фифо синхронизер сделан? В мемори-блоке что-ли? Где-то можно почитать про это? Если бы знал как он там сделан, было бы понимание, будет оно так работать или нет. Потом искать, откуда эти неправильные отсчеты взялись, гораздо сложнее.

Цитата
при его тактовых частотах(тактовая == символьной) 4 слова мало, там только цепь ресинхронизации указателей займет 3 такта. 16 в самый раз.

И кстати до сих пор грубое, жесткое непонимание, как длина фифы влияет на вероятность отсутствия ошибок? Если уж встали фронты чтения и записи в нехорошее положение, то длина фифы по моему пониманию не поможет. Че-то вот туплю здесь. И еще: правильно ли я понимаю: частота записи в фифу должна быть чуть меньше чтения, чтоб фифа не переполнилась? Хотя наверно фиолетово - полная ли пустая она будет... Может частоты наоборот побольше разнести? Хотя лучше не надо, тогда отсчеты будут чаще пропадать.

Цитата
Если это не важно, и задача только избавиться от неправильно прочитанного кода из-за перекосов в момент метастабильного состояния, не нужно читать в это время. Создать сигнал, гарантирующий, что код с АЦП установился (всё, кроме времени в окрестности тактов АЦП), и читать, когда этот сигнал разрешает.


Так нельзя не читать. Автомат-то молотить должен, там фурье, все завязано на расстояние между частотами, на сигнал с передатчика по эфиру и т.д., нельзя тормозить. Именно прочитать надо, но только строго старый или строго новый отсчет, тогда в результате фурье будут небольшие ошибки (на модели это проверено). А если читаем шум (смесь старого и нового отсчета) - в результате фурье ошибки в несколько раз больше.

Сообщение отредактировал alexPec - Feb 12 2011, 09:53
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 12 2011, 09:53
Сообщение #4


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

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



Цитата(alexPec @ Feb 12 2011, 03:39) *
Я тут тему поднимал, нельзя потому что ацп тактируется DDS-ом, а от этого тактового нельзя синхронизировать pll.

а если без PLL ?sm.gif

Цитата
А я вот и хочу у спецов спросить, а поможет ли? При таком раскладе похоже уже все равно - пусть 4, пусть 16 слов, лишь бы работало надежно. Как там в этом двухклоковом фифо синхронизер сделан? В мемори-блоке что-ли? Где-то можно почитать про это? Если бы знал как он там сделан, было бы понимание, будет оно так работать или нет. Потом искать, откуда эти неправильные отсчеты взялись, гораздо сложнее.

почитайте как фифо делаются, правильно сконструированное асинхронное фифо не дернет сигналом empty пока слово не будет лежать в памяти, а поставит этот флаг, когда вы точно прочитаете последнее слово %) ну и ваш автомат этот флаг обязан будет обрабатывать и работать на более высокой частоте.
Цитата
И кстати до сих пор грубое, жесткое непонимание, как длина фифы влияет на вероятность отсутствия ошибок?

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


--------------------
Go to the top of the page
 
+Quote Post
alexPec
сообщение Feb 12 2011, 10:17
Сообщение #5


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

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(des00 @ Feb 12 2011, 12:53) *
а если без PLL ?sm.gif

Нельзя, автомат, как Вы написали, на более высокой частоте работает, умножать надо

Цитата
почитайте как фифо делаются, правильно сконструированное асинхронное фифо не дернет сигналом empty пока слово не будет лежать в памяти, а поставит этот флаг, когда вы точно прочитаете последнее слово %) ну и ваш автомат этот флаг обязан будет обрабатывать и работать на более высокой частоте.

А не знаете ли Вы, алтеровская фифа правильно сконструирована? По возможности нужно все-таки время экономить. Вот сказал бы кто (со знанием дела кнечноsm.gif ): поставь алтеровскую фифу и не парься, зуб даю, работает! И я бы поверил (пока проблемы не появятся). biggrin.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 12 2011, 10:35
Сообщение #6


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

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



Цитата(alexPec @ Feb 12 2011, 04:17) *
Нельзя, автомат, как Вы написали, на более высокой частоте работает, умножать надо

да на частоте на 0.06 Гц больше lol.gif Вам самому то не смешно ? Какая разница где делать асинхронный переход? сразу после АЦП, или после предварительной обработки ? Придумываете себе проблемы на ровном месте.
Цитата
А не знаете ли Вы, алтеровская фифа правильно сконструирована?

если бы не знал, не писал бы про 3 такта синхронизации. Кстати конструкция этого фифо вытаскивается на раз, два, три %)

судя вот по этому
Цитата
Так нельзя не читать. Автомат-то молотить должен, там фурье, все завязано на расстояние между частотами, на сигнал с передатчика по эфиру и т.д., нельзя тормозить.

на лицо проблемы с построением системы, что мешает взять double buffer ram (сорцы кста есть на этом форуме) размером с ваше фурье, накопить и по бырому обработать.


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alexPec   Синхронизер   Feb 11 2011, 23:21
- - Shtirlits   Я бы сделал как в некоторых синхронных АЦП, переко...   Feb 12 2011, 00:54
|- - Krys   Цитата(Shtirlits @ Feb 12 2011, 06:54) Я ...   Mar 10 2011, 11:33
- - Александр77   Цитата(alexPec @ Feb 12 2011, 02:21) Надо...   Feb 12 2011, 06:20
||- - alexPec   Цитатада на частоте на 0.06 Гц больше Вам само...   Feb 12 2011, 10:56
||- - _Anatoliy   Цитата(alexPec @ Feb 12 2011, 12:56) А ч...   Feb 12 2011, 11:45
||- - alexPec   Цитата(_Anatoliy @ Feb 12 2011, 14:45) А ...   Feb 12 2011, 19:42
|- - ViKo   Цитата(alexPec @ Feb 12 2011, 11:39) Так ...   Feb 12 2011, 10:06
|- - ViKo   Цитата(alexPec @ Feb 12 2011, 11:39) Так ...   Feb 12 2011, 10:26
- - dvladim   Цитата(alexPec @ Feb 12 2011, 02:21) Т.е....   Feb 12 2011, 07:40
|- - des00   Цитата(dvladim @ Feb 12 2011, 01:40) Не м...   Feb 12 2011, 08:16
- - ViKo   Вот не понимаю я подобных задач, уже не впервые по...   Feb 12 2011, 09:20
- - Shtirlits   Если дальше Фурье, то делать как я насоветовал нел...   Feb 12 2011, 11:17
- - slawikg   Поставте 2 фифо, после заполнения одного, начинае...   Feb 13 2011, 12:41


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

 


RSS Текстовая версия Сейчас: 4th July 2025 - 07:57
Рейтинг@Mail.ru


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