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

Как работать по обоим фронтам клока?

А то ж! Только для того, чтобы положить в FIFO, надо подать на него клок и строб записи, который через такт убрать. Строб, я пожалуй подать могу, а вот убрать его на следующем такте - хрен. Так что CDC придётся делать классической схемой для шины через флаг с двумя триггерами.

Если речь о приеме данных идет, то можно писать передним фронтом локального клока четные отсчеты, задним нечетные. Расширяя на сдвигающем регистре разрядность шины. Для регистров не нужна перезапись (клок прерывистый) А в фифо уже переписывать своей системной частотой.

 

http://turbobit.net/i4zl3ls2y4ky.html

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


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

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

 

Нужно вылизывать TCK. Звон на остальных линиях JTAG-а не мешает.

Ух, понаписали то.

У автора написано это:

LVDS-линки, которые передают по четыре бита на каждый фронт клока, но обязательно пачками, кратными 128-битам.

Тут передним/задним фронтами не обойдешся. Нужно считывать данные по восстановленному клоку или опорному с повышенной частотой. Обязательно нужно умножение частоты. И с рваным клоком будут серьезные проблемы.

Ну или не "по 4 бита на каждый фронт".

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


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

IBUFGDS = IBUFDS + BUFG

 

Хм... а согласно доке от Xilinx, perfomance у BUFG хуже чем у BUFIO. Поэтому не лучше ли использовать связку IBUFDS + BUFIO?

 

Тут передним/задним фронтами не обойдешся. Нужно считывать данные по восстановленному клоку или опорному с повышенной частотой. Обязательно нужно умножение частоты. И с рваным клоком будут серьезные проблемы.

Ну или не "по 4 бита на каждый фронт".

Я забыл написать в начале поста (казалось, очевидным), что четыре бита передаются по четырем LVDS-парам, а не по одной :) Так что не надо тут умножений и восстановлений. Тем более ни один DCM и PLL по рванному клоку не будет, наверное, работать.

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


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

А то ж! Только для того, чтобы положить в FIFO, надо подать на него клок и строб записи, который через такт убрать. Строб, я пожалуй подать могу, а вот убрать его на следующем такте - хрен. Так что CDC придётся делать классической схемой для шины через флаг с двумя триггерами.

Зачем строб убирать-то?

Держите WEA в единице пока идет запись в порт А, потом спокойно пересаживайте

на внутренний клок, читая из порта B.

А если про классическую схему, то какое у вас соотношение клока с тайгера и внутреннего клока?

Внутренний как минимум должен быть в двое выше внешнего, а то толку от двух последовательно

стоящих триггеров никакого.

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


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

Хм... а согласно доке от Xilinx, perfomance у BUFG хуже чем у BUFIO. Поэтому не лучше ли использовать связку IBUFDS + BUFIO?

 

Давно работаю с Xilinx, но понять сути вопроса не в состоянии. Складывается такое впечатление, что Вы хотите или постов набрать или найти бесплатных репетиторов для обучения, не прикладывая собственных усилий для самообучения.

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


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

А если про классическую схему, то какое у вас соотношение клока с тайгера и внутреннего клока?

Внутренний как минимум должен быть в двое выше внешнего, а то толку от двух последовательно

стоящих триггеров никакого.

 

Здесь немного не так. Тут интересно соотношение не внутреннего и внешнего клока, а внутреннего и делённого внешнего, так как меня интересуют данные после того, как они из последовательных собраны в параллельные. Здесь да - у меня клок более чем в два раза быстрее, так как там сериализация 1:8, а значит внутренний клок может быть до 4 раз меньше чем внешний, что весьма просто обеспечить. Кажется так, если ничего не напутал.

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


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

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

 

А шина данных 4*4*2 разрядная.

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


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

А шина данных 4*4*2 разрядная.

 

Ещё раз. Шина 4 разряда, но по ней передаются данные кратные 128-битам по обоим фронтам. То есть все четверное слово передается за 16 тактов.

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


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

Ещё раз. Шина 4 разряда, но по ней передаются данные кратные 128-битам по обоим фронтам. То есть все четверное слово передается за 16 тактов.

 

Я Вам готовую реализацию выкатил. Далее - как хотите.

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


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

Вообще в таких ситуациях, когда тактовая есть только в момент передачи регистр (как этого не хотелось бы) на входе не поставить без дополнительного "геморроя" по вычитке из него последнего значения. Поэтому берем DPRAM на 32 или 64 бита (на SRL16) и не паримся. Такое решение предлагает и Xilinx.

Т.о. на входе имеется 2 dpram (по одной на фронт), на выходе из нее на системной спокойно вычитываем и отпускаем ACK. Можно не на системной, если она меньше линковой тактовой, а на некой промежуточной, а потом десериалайзер.

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


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

Давно работаю с Xilinx, но понять сути вопроса не в состоянии. Складывается такое впечатление, что Вы хотите или постов набрать или найти бесплатных репетиторов для обучения, не прикладывая собственных усилий для самообучения.

 

Зачем мне набирать посты? Я, извиняюсь, не дрочу на число постов.

 

Я действительно не спец в ПЛИСах, т.е. написать на VHDL'е некоторый модуль я могу запросто, но вот сталкиваться уже непосредственно с тонкостями реализации Xilinx'ом клоков, DDR и LVDS мне раньше не приходилось.

 

По сути вопроса поясню. В доке UG-190 сказанно, что есть глобальные клоки, есть региональные клоки. В каком-то другом мануале (или в app note, уже не помню) видел утверждение, что региональные клоки имеют лучшие характеристики по сравнению с глобальными. Теперь если я правильно понимаю, то сигнал пропущенный, через BUFG попадает в глобальные клоки, через BUFR- в региональные, а через и BUFIO - в I/O clock net данного региона (или банка, вот здесь я ещё не разобрался), что и рекомендуется для source synchronous систем и именно последний я и хотел бы (следуя рекомендации) использовать.

 

Однако, написано, что BUFIO может запитываться только напрямую от clock capable I/O, то есть получается что сигнал пропущенный через BUFG уже не может драйвить BUFIO. Более того, не сказано в доке (если сказано, то ткните туда носом), что после того как я собираю LVDS-сигнал с помощью IBUF*DS, он продолжает оставаться clock capable, если был снят с соответствующей пары пинов. Вы говорите, что IBUFGDS = IBUFDS + BUFG. То есть я не могу на конец это цепочки подсоединить BUFIO. Однако IBUFDS + BUFIO почему-то у меня не разводится, может дело в том, что сигнал на выходе IBUFDS уже не clock capable?

 

Я правильно понимаю эту концепцию или я сбит с толку суффиксами G, R и IO в этих обозначениях? Или вы бесплатно не отвечаете на такие вопросы? :)

 

Я может быть тупой и ПЛИСам не обучен, но кажется, что Xilinx пишет доки, которые не проясняют до состояния очевидности такие моменты.

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


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

Зачем мне набирать посты? Я, извиняюсь, не дрочу на число постов.

 

Я действительно не спец в ПЛИСах, т.е. написать на VHDL'е некоторый модуль я могу запросто, но вот сталкиваться уже непосредственно с тонкостями реализации Xilinx'ом клоков, DDR и LVDS мне раньше не приходилось.

 

По сути вопроса поясню. В доке UG-190 сказанно, что есть глобальные клоки, есть региональные клоки. В каком-то другом мануале (или в app note, уже не помню) видел утверждение, что региональные клоки имеют лучшие характеристики по сравнению с глобальными. Теперь если я правильно понимаю, то сигнал пропущенный, через BUFG попадает в глобальные клоки, а через BUFR и BUFIO - в региональные, хотя разницу между последними двумя я не особо понимаю - знаю лишь, что BUFR может делить клок, в отличие от BUFIO. Я правильно понимаю эту концепцию или я сбит с толку суффиксами G и R в этих обозначениях? Или вы бесплатно не отвечаете на такие вопросы? :)

Дело не в том, что быстрее или медленнее. Просто локальная (региональная) тактовая сетка - единственный вариант работы ISERDES с прерывистой тактовой.

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


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

Дело не в том, что быстрее или медленнее. Просто локальная (региональная) тактовая сетка - единственный вариант работы ISERDES с прерывистой тактовой.

 

Решение с ISERDES'ами мне не очень нравится. Я решил остановится на IDDR. Всё, чего я не понимаю, это последовательность комбинации примитивов IBUF*DS, BUFIO, BUFR и того, какие конкретно надо использовать, чтобы грамотно сделать клоки.

 

Варианты:

1) IBUFDS => IDDR

2) IBUFGDS => IDDR

3) IBUFDS => BUFIO => IDDR (не разводится почему-то)

4) IBUFGDS => BUFIO => IDDR (не проверял на тему разведется или нет)

5) IBUFGDS => BUFR => IDDR (тоже ещё не проверял)

 

Кроме того, если останавливаться на варианте с BUFIO, то не понятно каким клоком тактовать логику, которая обрабатывает выходы IDDR, так как BUFIO вроде бы не может тактовать логику.

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


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

Если вас не пугает "повисший" последний бит, то можете и локальный клок использовать.

Цепочка такая:

Clock capable pin (или дифф пара, которая приходит на CC-pin) -> IBUFDS -> BUFIO ->
-> только IDDR.

с того же IBUFDS берем и на BUFR:

Clock capable pin (или дифф пара, которая приходит на CC-pin) -> IBUFDS -> BUFR ->
-> логика съема данных с IDDR и десериалайзера.

 

если клок введен не на Clock capable, то BUFIO и BUFR использовать не получится.

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


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

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

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

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

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

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

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

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

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

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