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

iodelay в режиме с программируемой задержкой

aabmail

А скорость передачи высокая?

Может лучше обойтись без сопровождающей тактовой вообще?

Использовать что-то типа NRZI.

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


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

Большое всем спасибо за ответы.

 

С IODELAY в S6 не работал, потому про них не скажу. Но раз вы хотите/знаете на сколько вам надо по вращать фазу данных в IODELAY, что вам мешает сделать то же самое с клоком в DCM, как вам советует Timmy?

 

Я понял, что Timmy имеет ввиду, говоря от PLL/DLL c нулевой задержкой. Но в моем случае обе платы считывают данные с source synchronous АЦП по общему клоку.

image.png

Если повернуть фазу одного клока, то поплывет чтение с АЦП.

 

Про кривость IODELAY понятно.

Если вы внешний тактовый сигнал в плисах напрямую заводите на тактовые входы регистров, то самый простой (минимум изменений) способ это "привязать" выходные сигналы к спаду, а входные к фронту тактового сигнала. Т.е. на передающей стороне состояние меняется по спаду, а на приемной стороне защелкивание производится по фронту. Но нужно учесть, что если изменятся условия подключения плат между собой и к генератору тактового сигнала, то и ситуация может поменяться на противоположную. Тогда рабочим может оказаться ваш текущий вариант.

 

Опишите подробнее клоковое дерево всей вашей системы, тогда проще будет подсказать решение.

Попробую передавать/принимать синхроимпульс по спаду клока.

 

aabmail

А скорость передачи высокая?

Может лучше обойтись без сопровождающей тактовой вообще?

Использовать что-то типа NRZI.

 

Тут не передача данных, а только синхроимпульс ~1 кГц.

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


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

Но в моем случае обе платы считывают данные с source synchronous АЦП по общему клоку.

У вас в кристалле 1 DCM? Да и у одного и того же DCM аж 6 выходов, каждый из которых можно настроить на свою фазу. Работать с АЦП и всей логикой можно на одном клоке, а для захвата данных можно переключаться между всеми клоками мультиплексором..

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


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

У вас в кристалле 1 DCM? Да и у одного и того же DCM аж 6 выходов, каждый из которых можно настроить на свою фазу. Работать с АЦП и всей логикой можно на одном клоке, а для захвата данных можно переключаться между всеми клоками мультиплексором..

По данному синхроимпульсу запускается чтение АЦП. Хотелось бы, чтобы синхроимпульс был бы в том же клоковом домене, что и АЦП.

 

 

Работать с АЦП и всей логикой можно на одном клоке, а для захвата данных можно переключаться между всеми клоками мультиплексором..

Не совсем понял, что Вы имеете ввиду.

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


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

По данному синхроимпульсу запускается чтение АЦП. Хотелось бы, чтобы синхроимпульс был бы в том же клоковом домене, что и АЦП.

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

 

Не совсем понял, что Вы имеете ввиду.

Я имел ввиду, что всё работает на одном клоке, а регистриратор синхроимпульса на нужном Вам.

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


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

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

 

 

Я имел ввиду, что всё работает на одном клоке, а регистриратор синхроимульса на нужном Вам.

 

Примерно понятно. Т.е. заводим отдельный клоковый домен только для регистрации синхроимпульса. Implementation tool должен сам просчитать констрейны (раз они с одного DCM исходят), и при переходе на основной клоковый домен синхроимпульс всегда будет попадать в одно тайминговое окно. Ок. :-)

Вы еще про мультиплексор написали. Я про него не понял. Куда его вставлять?

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


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

Вы еще про мультиплексор написали. Я про него не понял. Куда его вставлять?

Мультиплексор, это если в процессе регистрации синхроимпульса собираетесь переключаться между заранее сдвинутыми на фиксированную фазу выходами DCM. Но если собираетесь переключаться, то констрейны прописывать уже придётся.

А в целом всё верно.

P.S. : можно, судя по документам, двигать фазу посредством drp - лично для S6 не делал..

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


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

Мультиплексор, это если в процессе регистрации синхроимпульса собираетесь переключаться между заранее сдвинутыми на фиксированную фазу выходами DCM. Но если собираетесь переключаться, то констрейны прописывать уже придётся.

А в целом всё верно.

P.S. : можно, судя по документам, двигать фазу посредством drp - лично для S6 не делал..

Спасибо!

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


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

Кривость IODELAY в том, что шаги могут различаться до 150ps, плавают в три раза по PVT, длина задержки не более полпериода, в старых ревизиях чипа были глюки, создаёт дополнительную задержку около 2 нс.

DDR 2\3 controller разве не использует IODELAY? При таких глюках он бы не работал.

Для работы IODELAY надо объявлять еще IDELAYCTR и заводить 200MHz внешнего стабильного клока.

Если ошибаюсь, поправите.

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


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

DDR 2\3 controller разве не использует IODELAY? При таких глюках он бы не работал.

Для работы IODELAY надо объявлять еще IDELAYCTR и заводить 200MHz внешнего стабильного клока.

Если ошибаюсь, поправите.

DCM или PLL для чего?

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


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

DCM или PLL для чего?

Для задачи ТС считаю неправильным делать на iodelay. Резануло про кривость iodelay.

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


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

Для задачи ТС считаю неправильным делать на iodelay. Резануло про кривость iodelay.

и я про это :)

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


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

DDR 2\3 controller разве не использует IODELAY? При таких глюках он бы не работал.

Для работы IODELAY надо объявлять еще IDELAYCTR и заводить 200MHz внешнего стабильного клока.

Если ошибаюсь, поправите.

Поправлю, IDELAYCTR есть только в Виртексах и семёрках, а тут речь про Спартан, там всё не так. Хотя в Спартане действительно можно использовать IODELAY для выравнивания в DDR2 контроллере, поскольку задержки короткие и есть возможность его откалибровать. И при условии новой ревизии чипа, без сбоев времени задержки.

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


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

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

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

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

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

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

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

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

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

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