Перейти к содержанию
    

Передача данных с одной отладочной платы в другую

4 minutes ago, excly said:

3. Примерно 10см

4. Фото нет. Соединено это все такими проводами

5. Что показывает осциллограф на приёмной стороне? Ну или максимально близко к приёмной стороне?
6. Если распушить кабель так чтобы отдельные проводки шли как можно дальше друг от друга?
7. Что будет если оставить одну линию данных и один клок? В пределе один СЕ
8. Земли соединены? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, excly сказал:

 я не могу добавить кодирование, как посоветовали выше, или по-другому передавать clock

Ну а логический анализатор от 200 Мгц простробировать и на clock поставить, можете? Это практически то-же, что и счетчик. Будет видно, что clolck на фронтах дает дребезг...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На обоих платах сделайте тактирование по фронту (posedge/rising_edge). И передаваемый тактовый сигнал нужно инвертировать! И всё будет работать и не только на 2МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обратите внимание на то, что вам написал iosifk. Вы защёлкиваете данные в СигналТап клоком 200 МГц. По отношению к этому клоку данные являются асинхронными. Ещё рискну предположить, что ваша приёмная стороне не обсконстрейнена. Из-за этого возможны разные чудеса.

Поэтому вам надо на приёмной стороне сделать CDC (clock domain crossing), то есть правильно перевести данные в клоковый домен 200 МГц, и правильно обконстрейнить дизайн.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, Inanity said:

На обоих платах сделайте тактирование по фронту (posedge/rising_edge). И передаваемый тактовый сигнал нужно инвертировать! И всё будет работать и не только на 2МГц.

Тактирование в обоих платах идет по фронту. Объясните, пожалуйста, зачем инвертировать передаваемый тактовый сигнал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 minutes ago, andrew_b said:

Обратите внимание на то, что вам написал iosifk. Вы защёлкиваете данные в СигналТап клоком 200 МГц. По отношению к этому клоку данные являются асинхронными. Ещё рискну предположить, что ваша приёмная стороне не обсконстрейнена. Из-за этого возможны разные чудеса.

Поэтому вам надо на приёмной стороне сделать CDC (clock domain crossing), то есть правильно перевести данные в клоковый домен 200 МГц, и правильно обконстрейнить дизайн.

Ваше предположение по поводу констрейнов абсолютно верно. Больная тема для меня, не совсем уверенно ее применяю)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 minutes ago, andrew_b said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, excly said:

Тактирование в обоих платах идет по фронту. Объясните, пожалуйста, зачем инвертировать передаваемый тактовый сигнал?

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

clk_forward.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, Inanity said:

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

Автор писал чуть выше:

13 hours ago, excly said:

На вторую плату передается клок, смещенный на 180 градусов.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Inanity said:

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

clk_forward.png

я pll создаю 2 одинаковый clock, смещенный друг относительно друга на 180 градусов. По первому я защелкиваю данные, а второй передаю на приемную плату. Но это, видимо, не совсем корректно, потому что в этом случае они не синхронны. Верно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, excly said:

Но это, видимо, не совсем корректно, потому что в этом случае они не синхронны. Верно?

На частоте 2 МГц это не должно влиять. На больших частотах возможны нюансы. Хотя как верно сказали выше инвертор проще чем вторая PLLка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, MegaVolt said:

Автор писал чуть выше:

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

Нет нет. Как раз в логическом анализаторе (который настоящий, а не SignalTap) проблем не видно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, MegaVolt said:

Автор писал чуть выше:

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

Чёрт, прошу прощения, впредь буду внимательнее.
 

7 minutes ago, excly said:

я pll создаю 2 одинаковый clock, смещенный друг относительно друга на 180 градусов. По первому я защелкиваю данные, а второй передаю на приемную плату. Но это, видимо, не совсем корректно, потому что в этом случае они не синхронны. Верно?

Если вы с помощью одной PLL создаёте эти два клока, они как раз синхронны, тем более для такого периода. Хотя как заметил MegaVolt на высоких частотах из-за разницы пути следования сигнала в ПЛИС возможны проблемы.

Изменено пользователем Inanity

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, excly said:

Нет нет. Как раз в логическом анализаторе (который настоящий, а не SignalTap) проблем не видно

Вот тут поподробнее. Чем SignalTap отличается от нормального анализатора кроме расположения уже внутри кристалла?

Мои вопросы вверху страницы видели?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, excly said:

и еще. Сигнал "ce", как видно на картинке, стоит все время в единице, но с ним тоже какие-то проблемы

Перечитал всё ещё раз. Всё таки не туда копаем. Если CE в единице и мы наблюдаем такую картину, то тут что-то на физическом уровне не так. На примере CE как будто что-то наводит помеху на него. А банки обеих ПЛИС реально (в железе) питаются от 3.3V ? Можете это подтвердить? С землёй как я понял всё в порядке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...