|
Работа с синхросигналами, нужна помощь. |
|
|
|
Mar 4 2009, 05:47
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Добрый день. Вопрос в следующем. Работаю с Virtex5. Есть два канала данных, и два синхросигнала SCLK и SCLKx2, где SCLKx2 - частота в два раза больше чем у SCLK. Оба синхросигнала получаются с DLL и соотвественно синхронны и, если можно так сказать "синфазны". В схеме есть места, где данные передаются с триггера тактируемого SCLK на триггер, тактируемый SCLKx2 и наоборот. Тут вроде проблем нету. Но оба канала данных обрабатываются либо параллельно, на SCLK, либо последовательно, на SLCKx2. И тут появляется огромное желание сигнал SCLK использовать еще и как логический, т.е. заводить его на Ce триггера или управлять при помощи него мультиплексором. Но чувствую, что можно нарваться. Кто-нить встречал и может дать ссылку на доку, желательно Xilinx-кую, где написано, можно так делать или нет?
|
|
|
|
|
 |
Ответов
|
Mar 4 2009, 07:17
|
Профессионал
    
Группа: Свой
Сообщений: 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;
|
|
|
|
|
Mar 4 2009, 07:32
|
Знающий
   
Группа: Свой
Сообщений: 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, тогда можно применить такую схему.
|
|
|
|
|
Mar 4 2009, 07:48
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(Михаил_K @ Mar 4 2009, 10:32)  А уж если DCM будет заниматься подстройкой в процессе работы (чем она и занимается), и фаза SCLK будет то опережать, то от SCLKx2 (ессно, на величину указанную в спецификации) Вы же сами написали: Цитата В схеме есть места, где данные передаются с триггера тактируемого SCLK на триггер, тактируемый SCLKx2 и наоборот. Тут вроде проблем нету. Вы не находите некоторое противоречие?
|
|
|
|
|
Mar 4 2009, 08:18
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(andrew_b @ Mar 4 2009, 10:48)  Вы не находите некоторое противоречие? Нет. Потому-что данные с триггера выходят с задержкой. И задержка эта, вместе с линиями коммутаций такова, что имеющийся разброс фаз на DCM не приводит к сбою в работе схемы. Цитата(Shtirlits @ Mar 4 2009, 10:53)  Делать так можно, но есть способ, при котором клок не выходит за пределы специально для него сделанных сетей и все части микросхемы и среды разработки используются по назначению. Смысл заключается в том, чтобы сделать регистр, который бы инвертировался на каждом такте быстрого клока. Тогда он будет менять свой уровень как и медленный клок. Чтобы фаза этого регистра имела связь с фазой медленного клока, нужно начинать инвертировать с привязкой к медленному клоку. Для этого нужен еще один регистр сброса. Констрейны в этом случае записываются проще и соблюдать их легче. Спасибо, от этом я думал. Здесь один недостаток - этот сигнал придется дополнительно таскать по всему кристаллу, и у отдельных узлов делать вход для этого сигнала. Этакое неудобство, но видимо обойти его не удастся. Правда для совпадения фазы я все-таки по другому сделал. Через триггер, как было предложено выше, только на вход D подал клок с выхода DCM, сдвинутого на 270 градусов.
|
|
|
|
|
Mar 4 2009, 09:02
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Цитата(Михаил_K @ Mar 4 2009, 11:18)  Здесь один недостаток - этот сигнал придется дополнительно таскать по всему кристаллу, и у отдельных узлов делать вход для этого сигнала. Этакое неудобство, но видимо обойти его не удастся. Во-первых, это неудобство нечто по сравнению с муками отладки схемы с нарушениями тайминогов. Во-вторых, если в каждый блок приходят оба клока и reset, то можно в кажом блоке сделать по экземпляру схемки из двух регистров. А там либо place-and-route их объединит или просто не станет дублировать. А еще скажите, какого порядка частота, 500MHz, 50MHz ? На 50MHz еще как-то можно говорить, что разные клоки на выходе чего-то у FPGA синхронных, а на 500MHz от такой фразы как-то не по себе.
|
|
|
|
|
Mar 4 2009, 09:27
|
Знающий
   
Группа: Свой
Сообщений: 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 микрон? Да вы на кристалл-то посмотрите.
|
|
|
|
|
Mar 4 2009, 09:52
|
Знающий
   
Группа: Свой
Сообщений: 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 нс, можно было бы жить наверное.
|
|
|
|
|
Mar 4 2009, 10:33
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Mar 4 2009, 12:53)  Ошибки не страшны если вы понимаете в что они именно в той части схемы которая по енаблам на вдвое более низкой частоте работает, единственное синтезатор напрягаться будет без ограничений. Для того чтобы это понять, я должен глазками, каждый раз после очередной имплементации проходить по отчету и смотреть, где возникли ошибки, и принимать решение, можно их оставить или нет. В медленной части схемы они или нет. Да после второго раза я сам уже ошибаться буду.  Вот если кто научит, как указать синтезатору, что enable раз в два такта работает.... Вроде есть параметр FROM-TO, но он для меня все-таки пока не понятен. Да и задать его можно только у UCF файле. А для этого нужно знать имя сигнала. А оно то как раз и не всегда известно, т.к. сигнал может находиться во вложенных блоках. Цитата(sergunas @ Mar 4 2009, 13:19)  Нарваться можно "только в путь". По идеи должна быть аппаратно в самой структуре ПЛИС заложена возможность динамического мультиплексирования клоков. Речь не идет о мультиплексировании клоков. Речь идет о заведении клока на вход данных. Цитата(petrov @ Mar 4 2009, 12:53)  Не долго в наработанных схемах во все регистры добавить enable. Иногда практически невозможно. Имеющиеся узлы находятся в библиотеке и используются во множестве других прошивок. Внести изменения в эти узлы - значит изменять и все проекты, которые эти узлы используют. Иначе они больше не будут собираться. Да и я работаю в коллективе, поэтому библиотека общая. После того как туда что-то попало, изменить становится проблематично. А порождать копии тех-же блоков - порочно.
|
|
|
|
|
Mar 4 2009, 11:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(Михаил_K @ Mar 4 2009, 13:33)  Вот если кто научит, как указать синтезатору, что enable раз в два такта работает.... Вроде есть параметр FROM-TO, но он для меня все-таки пока не понятен. Да и задать его можно только у UCF файле. Да, multi-cycle задаётся через него. Цитата А для этого нужно знать имя сигнала. А оно то как раз и не всегда известно, т.к. сигнал может находиться во вложенных блоках. Ну спуститесь по иерархии вниз до нужного блока. Если сигнал переименован, повесьте на него KEEP.
|
|
|
|
Сообщений в этой теме
Михаил_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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|