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

 
 
> Работа с синхросигналами, нужна помощь.
Михаил_K
сообщение Mar 4 2009, 05:47
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Добрый день. Вопрос в следующем. Работаю с Virtex5. Есть два канала данных, и два синхросигнала SCLK и SCLKx2, где SCLKx2 - частота в два раза больше чем у SCLK. Оба синхросигнала получаются с DLL и соотвественно синхронны и, если можно так сказать "синфазны". В схеме есть места, где данные передаются с триггера тактируемого SCLK на триггер, тактируемый SCLKx2 и наоборот. Тут вроде проблем нету. Но оба канала данных обрабатываются либо параллельно, на SCLK, либо последовательно, на SLCKx2. И тут появляется огромное желание сигнал SCLK использовать еще и как логический, т.е. заводить его на Ce триггера или управлять при помощи него мультиплексором. Но чувствую, что можно нарваться. Кто-нить встречал и может дать ссылку на доку, желательно Xilinx-кую, где написано, можно так делать или нет?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrew_b
сообщение Mar 4 2009, 07:17
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Михаил_K @ Mar 4 2009, 08:47) *
Но чувствую, что можно нарваться. Кто-нить встречал и может дать ссылку на доку, желательно Xilinx-кую, где написано, можно так делать или нет?
Делал я так. Но в качестве CE использовал не сам SCLK, а стробированный SCLKx2.

Код
process (Reset, SCLKx2)
begin
    if (Reset = '1') then
        CE <= '0';
    elsif (rising_edge(SCLKx2)) then
        CE <= SCLK;
     end if;
end process;
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Mar 4 2009, 07:32
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(andrew_b @ Mar 4 2009, 10:17) *
Делал я так. Но в качестве CE использовал не сам SCLK, а стробированный SCLKx2.

Код
process (Reset, SCLKx2)
begin
    if (Reset = '1') then
        CE <= '0';
    elsif (rising_edge(SCLKx2)) then
        CE <= SCLK;
     end if;
end process;

А вот где почитать, можно ли так делать и что будет на выходе?
В зависимости от того, как DCM выравнит фазы клоков, возможно два варианта соотношения фазы CE и синхросигнала SCLK. А уж если DCM будет заниматься подстройкой в процессе работы (чем она и занимается), и фаза SCLK будет то опережать, то от SCLKx2 (ессно, на величину указанную в спецификации), то возможно, что Ce вообще будет два такта иметь одинаковое значение (будет проскок). Если только задержка при входе на триггер будет больше чем возможное опережение фазы SCLK, тогда можно применить такую схему.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Mar 4 2009, 07:48
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Михаил_K @ Mar 4 2009, 10:32) *
А уж если DCM будет заниматься подстройкой в процессе работы (чем она и занимается), и фаза SCLK будет то опережать, то от SCLKx2 (ессно, на величину указанную в спецификации)
Вы же сами написали:
Цитата
В схеме есть места, где данные передаются с триггера тактируемого SCLK на триггер, тактируемый SCLKx2 и наоборот. Тут вроде проблем нету.
Вы не находите некоторое противоречие?
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Mar 4 2009, 08:18
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(andrew_b @ Mar 4 2009, 10:48) *
Вы не находите некоторое противоречие?


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

Цитата(Shtirlits @ Mar 4 2009, 10:53) *
Делать так можно, но есть способ, при котором клок не выходит за пределы специально для него сделанных сетей и все части микросхемы и среды разработки используются по назначению.
Смысл заключается в том, чтобы сделать регистр, который бы инвертировался на каждом такте быстрого клока. Тогда он будет менять свой уровень как и медленный клок. Чтобы фаза этого регистра имела связь с фазой медленного клока, нужно начинать инвертировать с привязкой к медленному клоку. Для этого нужен еще один регистр сброса.
Констрейны в этом случае записываются проще и соблюдать их легче.

Спасибо, от этом я думал. Здесь один недостаток - этот сигнал придется дополнительно таскать по всему кристаллу, и у отдельных узлов делать вход для этого сигнала. Этакое неудобство, но видимо обойти его не удастся. rolleyes.gif

Правда для совпадения фазы я все-таки по другому сделал. Через триггер, как было предложено выше, только на вход D подал клок с выхода DCM, сдвинутого на 270 градусов. smile.gif
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 4 2009, 09:02
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Цитата(Михаил_K @ Mar 4 2009, 11:18) *
Здесь один недостаток - этот сигнал придется дополнительно таскать по всему кристаллу, и у отдельных узлов делать вход для этого сигнала. Этакое неудобство, но видимо обойти его не удастся.

Во-первых, это неудобство нечто по сравнению с муками отладки схемы с нарушениями тайминогов.
Во-вторых, если в каждый блок приходят оба клока и reset, то можно в кажом блоке сделать по экземпляру схемки из двух регистров. А там либо place-and-route их объединит или просто не станет дублировать.

А еще скажите, какого порядка частота, 500MHz, 50MHz ?
На 50MHz еще как-то можно говорить, что разные клоки на выходе чего-то у FPGA синхронных, а на 500MHz от такой фразы как-то не по себе.
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Mar 4 2009, 09:27
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(Shtirlits @ Mar 4 2009, 12:02) *
А еще скажите, какого порядка частота, 500MHz, 50MHz ?
На 50MHz еще как-то можно говорить, что разные клоки на выходе чего-то у FPGA синхронных, а на 500MHz от такой фразы как-то не по себе.

100 и 200 МГц.


Цитата(andrew_b @ Mar 4 2009, 12:05) *
Оттуда, что путь от DCM до буферов разный. Просимулируйте дизайн с реальными задержками и посмотрите на свои клоки.

На сколько разный? На 1 микрон? Да вы на кристалл-то посмотрите.
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 4 2009, 09:39
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



А почему нельзя использовать глобальный SCLKx2, а там где требуется работа на вдвое низкой частоте cформировать соответствующий глобальный enable.
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Mar 4 2009, 09:52
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(petrov @ Mar 4 2009, 12:39) *
А почему нельзя использовать глобальный SCLKx2, а там где требуется работа на вдвое низкой частоте cформировать соответствующий глобальный enable.

Ну тут две причины.
Первая и очень не маловажная. Хочется использовать уже наработанные схемы, которые не работают на CLKx2. Ну так было спроектировано.
Вторая причина возникает возможно из-за моего неумения задавать ограничения, но при таком проектировании при анализе времянок не учитывается то, что глобальный еnable идет через такт. И в результате, мы должны либо всю схему сделать работоспособной на 200 МГц, либо будем получать ошибки по времянкам.


Цитата(Shtirlits @ Mar 4 2009, 12:32) *
1) в FPGA editor (если это xilinx) проследите сеть медленного клока, где и как он соединяется с входом регистра, который на быстром клоке
2) в анализаторе таймингов посмотрите, какое время распространения клока получилось после того, как вы его подключили к входу данных
3) ужаснитесь содеянному

Посмотрел. Но честно говоря ничего страшного не увидел. Медленный клок приходит все по тем же глобальным линиям, и лишь у самого лута через коммутационную коробочку идет в лут. Также как и быстрый клок. Опасение то как-раз и вызывает то, что задержки дополнительной не будет. Была бы она хотя бы в 1 нс, можно было бы жить наверное.
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 4 2009, 09:53
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Михаил_K @ Mar 4 2009, 12:48) *
Ну тут две причины.
Первая и очень не маловажная. Хочется использовать уже наработанные схемы, которые не работают на CLKx2. Ну так было спроектировано.
Вторая причина возникает возможно из-за моего неумения задавать ограничения, но при таком проектировании при анализе времянок не учитывается то, что глобальный еnable идет через такт. И в результате, мы должны либо всю схему сделать работоспособной на 200 МГц, либо будем получать ошибки по времянкам.


Не долго в наработанных схемах во все регистры добавить enable. Ошибки не страшны если вы понимаете в что они именно в той части схемы которая по енаблам на вдвое более низкой частоте работает, единственное синтезатор напрягаться будет без ограничений.
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Mar 4 2009, 10:33
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(petrov @ Mar 4 2009, 12:53) *
Ошибки не страшны если вы понимаете в что они именно в той части схемы которая по енаблам на вдвое более низкой частоте работает, единственное синтезатор напрягаться будет без ограничений.

Для того чтобы это понять, я должен глазками, каждый раз после очередной имплементации проходить по отчету и смотреть, где возникли ошибки, и принимать решение, можно их оставить или нет. В медленной части схемы они или нет. Да после второго раза я сам уже ошибаться буду. wacko.gif

Вот если кто научит, как указать синтезатору, что enable раз в два такта работает.... Вроде есть параметр FROM-TO, но он для меня все-таки пока не понятен. Да и задать его можно только у UCF файле. А для этого нужно знать имя сигнала. А оно то как раз и не всегда известно, т.к. сигнал может находиться во вложенных блоках.

Цитата(sergunas @ Mar 4 2009, 13:19) *
Нарваться можно "только в путь". По идеи должна быть аппаратно в самой структуре ПЛИС заложена возможность динамического мультиплексирования клоков.

Речь не идет о мультиплексировании клоков. Речь идет о заведении клока на вход данных.

Цитата(petrov @ Mar 4 2009, 12:53) *
Не долго в наработанных схемах во все регистры добавить enable.


Иногда практически невозможно. Имеющиеся узлы находятся в библиотеке и используются во множестве других прошивок.
Внести изменения в эти узлы - значит изменять и все проекты, которые эти узлы используют. Иначе они больше не будут собираться. Да и я работаю в коллективе, поэтому библиотека общая. После того как туда что-то попало, изменить становится проблематично. А порождать копии тех-же блоков - порочно.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Mar 4 2009, 11:02
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Михаил_K @ Mar 4 2009, 13:33) *
Вот если кто научит, как указать синтезатору, что enable раз в два такта работает.... Вроде есть параметр FROM-TO, но он для меня все-таки пока не понятен. Да и задать его можно только у UCF файле.
Да, multi-cycle задаётся через него.

Цитата
А для этого нужно знать имя сигнала. А оно то как раз и не всегда известно, т.к. сигнал может находиться во вложенных блоках.
Ну спуститесь по иерархии вниз до нужного блока. Если сигнал переименован, повесьте на него KEEP.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Михаил_K   Работа с синхросигналами   Mar 4 2009, 05:47
||- - andrew_b   Цитата(Михаил_K @ Mar 4 2009, 11:18) Прав...   Mar 4 2009, 08:23
|||- - Михаил_K   Цитата(andrew_b @ Mar 4 2009, 11:23) Фазы...   Mar 4 2009, 08:37
|||- - andrew_b   Цитата(Михаил_K @ Mar 4 2009, 11:37) Отку...   Mar 4 2009, 09:05
|||- - DmitryR   Я при возникновении похожих задач (хлопать быстрым...   Mar 4 2009, 09:10
|||- - Shtirlits   Цитата(DmitryR @ Mar 4 2009, 12:10) Я при...   Mar 4 2009, 09:32
|||- - Михаил_K   Цитата(DmitryR @ Mar 4 2009, 12:10) Я при...   Mar 4 2009, 09:32
|||- - petrov   Цитата(Михаил_K @ Mar 4 2009, 13:33) Иног...   Mar 4 2009, 10:48
||||- - Михаил_K   Цитата(petrov @ Mar 4 2009, 13:48) Порочн...   Mar 4 2009, 10:52
||||- - Shtirlits   Цитата(Михаил_K @ Mar 4 2009, 13:52) Вот ...   Mar 4 2009, 11:13
||||- - petrov   Цитата(Михаил_K @ Mar 4 2009, 13:52) А кт...   Mar 4 2009, 11:15
||||- - Михаил_K   Цитата(petrov @ Mar 4 2009, 14:15) Наскол...   Mar 4 2009, 11:42
||||- - Shtirlits   Цитата(Михаил_K @ Mar 4 2009, 14:42) К со...   Mar 4 2009, 12:04
|||||- - Михаил_K   Цитата(Shtirlits @ Mar 4 2009, 15:04) Ну ...   Mar 4 2009, 12:12
||||- - DmitryR   Цитата(Михаил_K @ Mar 4 2009, 14:42) К со...   Mar 4 2009, 12:22
|||- - sergunas   Цитата(Михаил_K @ Mar 4 2009, 13:33) Речь...   Mar 4 2009, 10:55
||||- - Михаил_K   Цитата(sergunas @ Mar 4 2009, 13:55) Клок...   Mar 4 2009, 11:01
||||- - sergunas   Цитата(Михаил_K @ Mar 4 2009, 14:01) Поче...   Mar 4 2009, 11:09
||- - DmitryR   Цитата(Михаил_K @ Mar 4 2009, 12:52) Посм...   Mar 4 2009, 11:42
|- - Shtirlits   Делать так можно, но есть способ, при котором клок...   Mar 4 2009, 07:53
- - sergunas   Цитата(Михаил_K @ Mar 4 2009, 08:47) И ту...   Mar 4 2009, 10:19
- - Михаил_K   Ну в общем ответ на свой вопрос я получил. В лоб з...   Mar 4 2009, 12:35
- - dvladim   Цитата(Михаил_K @ Mar 4 2009, 15:35) Ну в...   Mar 4 2009, 19:31
- - Shtirlits   Цитата(dvladim @ Mar 4 2009, 22:31) Почем...   Mar 4 2009, 21:42
- - Михаил_K   Цитата(dvladim @ Mar 4 2009, 22:31) Опа, ...   Mar 5 2009, 05:56


Closed TopicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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