реклама на сайте
подробности

 
 
> Inter channel skew, Модуль выравнивания данных в разных каналах данных.
Flip-fl0p
сообщение Aug 24 2017, 07:18
Сообщение #1


В поисках себя...
****

Группа: Свой
Сообщений: 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, где рассказывается как его реализовать.
Данные идут сплошным потоком, поэтому время работы модуля особой роли не играет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Inanity
сообщение Aug 24 2017, 08:15
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 221
Регистрация: 6-07-12
Пользователь №: 72 653



Пожалуйста.

Берём 3 FIFO. Каждую шину заводим в своё FIFO. Начинаем чтение из всех трёх FIFO только тогда, когда в каждом есть хотя бы по одному слову (конъюнкция стробов валидности). Глубина FIFO естественно должна быть больше максимального разброса между шинами. Но раз это максимум 1 период то вообще хорошо. Можно даже FIFO сделать на логике, чтобы блочную память впустую не тратить, т.к. тут единый клоковый домен, да и глубина FIFO малая. Причем данный способ удобен в том, что не нужно заранее знать какая шина от какой отстаёт. Должно получиться очень компактно и просто.

Сообщение отредактировал Inanity - Aug 24 2017, 08:18
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 03:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016