Спасибо ВСЕМ за ответы
Цитата(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 в самый раз.
И кстати до сих пор грубое, жесткое непонимание, как длина фифы влияет на вероятность отсутствия ошибок? Если уж встали фронты чтения и записи в нехорошее положение, то длина фифы по моему пониманию не поможет. Че-то вот туплю здесь. И еще: правильно ли я понимаю: частота записи в фифу должна быть чуть меньше чтения, чтоб фифа не переполнилась? Хотя наверно фиолетово - полная ли пустая она будет... Может частоты наоборот побольше разнести? Хотя лучше не надо, тогда отсчеты будут чаще пропадать.
Цитата
Если это не важно, и задача только избавиться от неправильно прочитанного кода из-за перекосов в момент метастабильного состояния, не нужно читать в это время. Создать сигнал, гарантирующий, что код с АЦП установился (всё, кроме времени в окрестности тактов АЦП), и читать, когда этот сигнал разрешает.
Так нельзя не читать. Автомат-то молотить должен, там фурье, все завязано на расстояние между частотами, на сигнал с передатчика по эфиру и т.д., нельзя тормозить. Именно прочитать надо, но только строго старый или строго новый отсчет, тогда в результате фурье будут небольшие ошибки (на модели это проверено). А если читаем шум (смесь старого и нового отсчета) - в результате фурье ошибки в несколько раз больше.