|
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, 08:28
|

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

|
Цитата(Inanity @ Aug 24 2017, 11:15)  Пожалуйста.
Берём 3 FIFO. Каждую шину заводим в своё FIFO. Начинаем чтение из всех трёх FIFO только тогда, когда в каждом есть хотя бы по одному слову (конъюнкция стробов валидности). Глубина FIFO естественно должна быть больше максимального разброса между шинами. Но раз это максимум 1 период то вообще хорошо. Можно даже FIFO сделать на логике, чтобы блочную память впустую не тратить, т.к. тут единый клоковый домен, да и глубина FIFO малая. Причем данный способ удобен в том, что не нужно заранее знать какая шина от какой отстаёт. Должно получиться очень компактно и просто. Делал я такой вариант, не устроил из-за того, что данные передаются как во время стробов валидности, так и во время их отсутствия. Просто предназначение данных разное. Я делал так: по стробам валидности я писал данные в 3 разных FIFO(в точности как вы и говорили) и потом их считывал... А во время отсутствия строба валидности я их писал в другие FIFO... Такая реализация вполне возможная, но как мне показалось уже очень мудреная и сложная. Ещё я там добавил фильтр стробов валидности для того, чтобы если вдруг произошло искажение принимаемых данных, и к примеру строб валидности на 1 такт стал равен нулю, не сбивалась запись в FIFO, иначе из-за ошибок приёма можно получить ещё большее расхождение фаз... Поскольку данные являются видео потоком, искажения данных не влияют ни на что.
Сообщение отредактировал Flip-fl0p - Aug 24 2017, 08:31
|
|
|
|
|
Aug 24 2017, 13:07
|

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

|
Цитата(Flip-fl0p @ Aug 24 2017, 11:28)  Делал я такой вариант, не устроил из-за того, что данные передаются как во время стробов валидности, так и во время их отсутствия. Просто предназначение данных разное. Я делал так: по стробам валидности я писал данные в 3 разных FIFO(в точности как вы и говорили) и потом их считывал... А во время отсутствия строба валидности я их писал в другие FIFO... Такая реализация вполне возможная, но как мне показалось уже очень мудреная и сложная. Ещё я там добавил фильтр стробов валидности для того, чтобы если вдруг произошло искажение принимаемых данных, и к примеру строб валидности на 1 такт стал равен нулю, не сбивалась запись в FIFO, иначе из-за ошибок приёма можно получить ещё большее расхождение фаз... Поскольку данные являются видео потоком, искажения данных не влияют ни на что. UPD.Вот такое "творение" получилось у меня. Если честно не очень нравится
|
|
|
|
Сообщений в этой теме
Flip-fl0p Inter channel skew Aug 24 2017, 07:18 Kuzmi4 2 Flip-fl0p
в общем случае, ваша задача решается ч... Aug 24 2017, 15:03 Flip-fl0p Цитата(Kuzmi4 @ Aug 24 2017, 18:03) 2 Fli... Aug 24 2017, 15:56  Kuzmi4 Цитата(Flip-fl0p @ Aug 24 2017, 18:5... Aug 24 2017, 19:15   Flip-fl0p Цитата(Kuzmi4 @ Aug 24 2017, 22:15) да, F... Aug 24 2017, 19:54 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
|
|
|