|
Inter channel skew, Модуль выравнивания данных в разных каналах данных. |
|
|
|
Aug 24 2017, 07:18
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Приветствую уважаемые посетители форума. И снова требуется ваша помощь. Заранее говорю, задачу я решил, и модуль выполняет свой функционал. Но меня не покидает чувство, что моя реализация очень далека от правильной, и я упустил какой-то важный момент, который позволил бы реализовать всё гораздо проще... Итак суть задачи: Имеем 3 шины с которых мы получаем данные. Данные мы приняли, синхронизировали с нашим клоковым доменом и в итоге получили 3 линии данных: DATA_BUS_N0, DATA_BUS_N1, DATA_BUS_N2. Данные синхронны частоте DATA_CLK. Каждую линию данных сопровождает сигнал валидности. Когда он равен лог.1 данные активны, когда он равен лог.0 активны тестовые данные. При приёме оказалось, что физически шины не выровнены, и данные в каждой шине поступают с задержкой друг относительно друга. И появляется так называемый inter channel skew. Максимальное расхождение данных между 2 шинами может составлять 1 период частоты DATA_CLK. Думаю тут будет уместна такая вот картинка:  Требуется разработать модуль, который бы выравнивал данные относительно друг друга, в итоге данные после модуля должны выглядеть так:  Был бы очень признателен, если бы подсказали правильные способы реализации данного модуля, или подсказали на какой-нибудь Application note, где рассказывается как его реализовать. Данные идут сплошным потоком, поэтому время работы модуля особой роли не играет.
|
|
|
|
|
 |
Ответов
|
Aug 24 2017, 15:56
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(Kuzmi4 @ Aug 24 2017, 18:03)  2 Flip-fl0p в общем случае, ваша задача решается через FIFO, которые пишутся по вашим VALID-сигналам, вычитываются по нужному наполнению (на сколько я понял, в вашем случае EF==0 для всех 3х FIFO) + нужно сделать сброс FIFO после того как вы вычитали условную "линию", чтобы ошибка разбега данных не накапливалась в процессе работы. Это без шума по VALID-сигналам.. Я вот и боюсь шума по VALID сигналам. Поэтому применяю простейший мажоритарный фильтр на 5 разрядов. Соответственно если идет 2 ошибки подряд фильтр их прекрасно убирает. Но вот на время фильтрации шума, я должен на это же время задержать данные(искажения в данных не критичны). И появляется проблема, что слишком много всякой "обвязки" для FIFO надо применять. Т.е вся дополнительная "обвязка" занимает столько же места, сколько и мой модуль, который я выложил здесь. Мне не жалко регистров. Просто схема выглядит как-то некрасиво и громоздко. Хотя работает, проверял на реально железке. А что за условие EF==0 ? Случаем не сигнал Empty FIFO ?
Сообщение отредактировал Flip-fl0p - Aug 24 2017, 15:57
|
|
|
|
|
Aug 24 2017, 19:54
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(Kuzmi4 @ Aug 24 2017, 22:15)  да, FIFO Empty Flag == 0 (есть данные внутри FIFO)
С шумами по VALID-сигналам там сложнее.. Кстати, откуда эти шумы там берутся ? В теории шумов быть не должно (на практике в лабораторных условиях их нет, что подтверждает теорию). Но я не могу дать гарантию, что передающее устройство, в моем случае источник DVI сигнала (скорость чуть меньше 800 Мб\с), не словит сбой. Может "прилетит" помеха, наведёт гадости на провод - и вот он сбой. Конечно, вероятность этого события крайне мала, поскольку отсутствие сигнала валидности - это всего 4 уникальных 10 битных комбинации - все остальные 10 битные комбинации считаются данными. Но всё-же хочется внести дополнительный механизм защиты от сбоя. Может я и зря себя накручиваю. Но если верить закону Мёрфи - сбой будет обязательно  Весь мой небольшой жизненный опыт говорит о том, что старина Мёрфи был тысячу раз прав !
Сообщение отредактировал Flip-fl0p - Aug 24 2017, 19:55
|
|
|
|
Сообщений в этой теме
Flip-fl0p Inter channel skew Aug 24 2017, 07:18 Inanity Пожалуйста.
Берём 3 FIFO. Каждую шину заводим в с... Aug 24 2017, 08:15 Flip-fl0p Цитата(Inanity @ Aug 24 2017, 11:15) Пожа... Aug 24 2017, 08:28  Flip-fl0p Цитата(Flip-fl0p @ Aug 24 2017, 11:2... Aug 24 2017, 13:07 dm.pogrebnoy FIFO заменить на сдвиговые регистры с мультиплексо... Aug 24 2017, 16:21 Kuzmi4 2 Flip-fl0p
Сделайте сначала без подавителя шума, ... Aug 28 2017, 14:11 Flip-fl0p Цитата(Kuzmi4 @ Aug 28 2017, 17:11) 2 Fli... Aug 30 2017, 06:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|