Цитата(Golikov A. @ May 12 2017, 15:05)

принимается I2S как?
не совсем понял, попытаюсь описать. Имеем сигналы в I2S: BCK, LRCK, DATA. Со стороны записи в ФИФО. Сигналы BCK, LRCK, DATA не пропускаю через входные dff. Пробовал ставить на входах LRCK, DATA по одному или двум dff, тактовый на dff подавал входной сигнал BCK. По всей видимости не так отконстрейнил, не смог добиться исходного положения данных DATA, относительно сигнала LRCK - сместились на такт.
Цитата(Golikov A. @ May 12 2017, 15:05)

Второй клок это клок I2S? Прием на его частоте и пихание на той же частоте в FIFO или как?
Отчасти да. Только не входной клок, это клок с генератора (CLK_EXT), с которого работает все на стороне чтения ФИФО и дальше после него, в том числе и микросхемы ЦАП.
Нужная сетка выходных частот BCK и LRCK осуществляется делителями (счетчиками) на стороне чтения. Из входного сигнала LRCK получаю импульс для записи данных в ФИФО и импульс указателя начала пакета для сигнала DATA на приемной стороне. Данные и импульс указателя передаю через ФИФО. Выходной сигнал LRCK формируется от импульса указателя начала пакета.
Да, пихание происходит на частоте входного сигнала BCK, без изменений.
Цитата(Golikov A. @ May 12 2017, 15:05)

Опять же хорошо понять что есть поплыло. Что работать перестало понятно, но если подробнее описать как оно перестало работать, то возможно будет понятнее насчет причин.
Плывет импульс указателя начала пакета для сигнала DATA. На осциллографе этот импульс с выхода ФИФО начинает скакать на пол периода выходного сигнала LRCK.
Соответственно, начинает плыть выходной сигнал LRCK, он получен из этого импульса, ну и данные тоже. Вывел наружу асинхронный сигнал сброса ФИФО. Сбрасываю ФИФО после такого плывуна, какое-то время работает нормально.
Цитата(Golikov A. @ May 12 2017, 15:05)

Констраины какие прописаны? Просто путь от клока к клоку зафалсен или как?
derive_clock_uncertainty
create_clock -name {CLK50Mhz} -period 20.000 -waveform { 0.000 10.000 } [get_ports {clk50Mhz}] клок для другой схемы не относящийся к данной теме
create_clock -name {BCK} -period 40.000 -waveform { 0.000 20.000 } [get_ports {BCK}] клок входного сигнала BCK, I2S
create_clock -name {CLK_EXT} -period 20.000 -waveform { 0.000 10.000 } [get_ports {CLK_EXT}] клок с генератора, со стороны чтения ФИФО
Возможно надо отконтстрейнить LRCK как клок?
set_clock_groups -exclusive -group [get_clocks {BCK}]
set_clock_groups -exclusive -group [get_clocks {CLK_EXT}]
set_clock_groups -exclusive -group [get_clocks {CLK50Mhz}]
пробовал так:
set_false_path -from [get_clocks {CLK_EXT}] -to [get_clocks {BCK}]
set_false_path -from [get_clocks {BCK}] -to [get_clocks {CLK_EXT}]
Для ФИФО.
set_false_path -from [get_registers {*dcfifo*delayed_wrptr_g[*]}] -to [get_registers {*dcfifo*rs_dgwp*}]
set_false_path -from [get_registers {*dcfifo*rdptr_g[*]}] -to [get_registers {*dcfifo*ws_dgrp*}]
Цитата(Golikov A. @ May 12 2017, 15:05)

В визарде при создании какой режим защиты от мета-стабильности был выставлен?
3 режим - Best metastability protection, best fmax, unsynchronised clocks 3 or more sync stage... How many sync stage? - 4
Цитата(Golikov A. @ May 12 2017, 15:05)

какие еще асинхронные и прочие входные сигналы есть? Защищены ли они от мета-стабильности?
Сигнал третьего клока 50 МГц сам по себе, для других узлов внутри этой же ПЛИС. Логические входа, где просто 0 или 1, с них сигнал пропущен через пару dff. dff тактируются от CLK_EXT.
Цитата(sonycman @ May 12 2017, 15:43)

И в FIFO вы пишете с частотой внешнего клока, а считываете его с частотой (пусть одинаковой) уже другого генератора?
Иначе откуда берётся асинхронность?
Да, все так.
Цитата(sonycman @ May 12 2017, 15:43)

Тогда использование FIFO для записи и чтения просто по асинхронным клокам пусть и одинаковой частоты без учёта опустошения\переполнения неправильно.
Частота будет в любом случае разной, пусть и незначительно, что привёдет к рассинхронизации данных через определённое время.
Попробуйте в симуляторе, как будет работать двухклоковый FIFO, если на него подать немножко разные частоты, к примеру: 49.152000 и 49.152999 МГц.
Начинаю считывать данные из ФИФО после смены состояния на выходе rdempty. Симулировал с разыми частотами, 1:1, 2:1, (вход:выход) все ок. Видимо 10мс длины симуляции мало для отображения этой проблемы.