|
|
  |
Работа с синхросигналами, нужна помощь. |
|
|
|
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:19
|
Местный
  
Группа: Свой
Сообщений: 441
Регистрация: 7-12-04
Пользователь №: 1 373

|
Цитата(Михаил_K @ Mar 4 2009, 08:47)  И тут появляется огромное желание сигнал SCLK использовать еще и как логический, т.е. заводить его на Ce триггера или управлять при помощи него мультиплексором. Но чувствую, что можно нарваться. Кто-нить встречал и может дать ссылку на доку, желательно Xilinx-кую, где написано, можно так делать или нет? Нарваться можно "только в путь". По идеи должна быть аппаратно в самой структуре ПЛИС заложена возможность динамического мультиплексирования клоков.
|
|
|
|
|
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, 10:55
|
Местный
  
Группа: Свой
Сообщений: 441
Регистрация: 7-12-04
Пользователь №: 1 373

|
Цитата(Михаил_K @ Mar 4 2009, 13:33)  Речь не идет о мультиплексировании клоков. Речь идет о заведении клока на вход данных. Клок перестанет быть глобальным сигналом после такой операции.
|
|
|
|
|
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.
|
|
|
|
|
Mar 4 2009, 11:09
|
Местный
  
Группа: Свой
Сообщений: 441
Регистрация: 7-12-04
Пользователь №: 1 373

|
Цитата(Михаил_K @ Mar 4 2009, 14:01)  Почему? Из-за аппаратной реализации ПЛИС. Правда, 100% не берусь утверждать на счёт ПЛИС Virtex. Но проверьте лишний раз.
|
|
|
|
|
Mar 4 2009, 11:13
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Цитата(Михаил_K @ Mar 4 2009, 13:52)  Вот констрейны соответствующие изучить - это надо. Только вот не нашел таких  Xilinx-ISE-Documentation-Software Manuals Constraints guide ctrl+F "multi cycle path" Пример .UCF файла для приемной части hypertransport 400MHz: Код # определяю сигналы, префикс net_ чтобы самому не запутаться NET "phy/rc0" TNM_NET="net_rx_clk_0"; NET "phy/rc1" TNM_NET="net_rx_clk_1"; NET "phy/tc" TNM_NET="net_tx_clk";
# указывю их частоты и предельные сдвиги фаз, префикс ts_ чтобы выделить, что это констрейн, а не сигнал timespec "ts_rx_clk_0" = period "net_rx_clk_0" 400 MHz HIGH 50% priority 6; # без явного указания приоритета иногда не обойтись timespec "ts_rx_clk_1" = period "net_rx_clk_1" "ts_rx_clk_0" * 1 phase -1.1 ns; # следует из спецификации линки и платы timespec "ts_tx_clk" = period "net_tx_clk" "ts_rx_clk_0" * 1 phase +1.25 ns;
# собираю элементы в группы # все, что тактируется (или использует как данные) clk0, в том числе и clk1 TIMEGRP "tg_phy_rx0" = "net_rx_clk_0"; # то, что тактируется только clk1 TIMEGRP "tg_phy_rx1" = "net_rx_clk_1" except "net_rx_clk_0";
# теперь можно задать ограничения прохождения сигнала между группами TIMESPEC "ts_phy_rx"=FROM "tg_phy_rx1" TO "tg_phy_rx0" 1.25 nS priority 1; Вам нужно будет определить два клока, задать их частоты, как ts_rx_clk_0 у меня. Определить 2 группы и задать ограничения по времени между двумя группами. Отдельно описать сигнал clock enable. Если использовать DCM, то достаточно описать сигнал, который поступает на вход DCM, дальше ISE сам все поймет, как вы его там умножали, делили и сдвигали.
|
|
|
|
|
Mar 4 2009, 11:15
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(Михаил_K @ Mar 4 2009, 13:52)  А кто сказал что они плохие? Вот констрейны соответствующие изучить - это надо. Только вот не нашел таких  Насколько я понимаю контролировать частоту работы схем через enable это вроде золотое правило. Я честно сказать в констрейнах тоже не разбираюсь, но вот что-то есть у ксайлинкса по этому поводу: http://www.xilinx.com/itp/xilinx4/data/doc.../strategy2.htmlMulti-Cycle Paths Assignments You can specify multi-cycle path assignments by identifying the start point and end point groups and then applying a FROM TO constraint for that path. For elements controlled by clock enables, use a TNM_NET on the clock enable to identify all of the elements. You can specify timing requirements as a function of the clock. Be aware of your specified units on the originating TSid. If in "MHz", "*" used as multiplication will make the new clock specification faster, if in "ns", "*" will make new clock specification slower.
|
|
|
|
|
Mar 4 2009, 11:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(Михаил_K @ Mar 4 2009, 12:52)  Посмотрел. Но честно говоря ничего страшного не увидел. Медленный клок приходит все по тем же глобальным линиям, и лишь у самого лута через коммутационную коробочку идет в лут. Также как и быстрый клок. Опасение то как-раз и вызывает то, что задержки дополнительной не будет. Была бы она хотя бы в 1 нс, можно было бы жить наверное. При реализации моего совета отсутствие задержки как раз есть благо, ибо, как я сказал, во время спада быстрого клока у медленного синфазного всегда полка, которую (при отсутствии задержки) вы надежно поймаете. Что до констрейнов в этом случае, то синтезатор поставит их сам, если только оба клока идут с PLL (он будет знать и их частоты, и фазовое соотношение).
|
|
|
|
|
Mar 4 2009, 11:42
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(petrov @ Mar 4 2009, 14:15)  Насколько я понимаю контролировать частоту работы схем через enable это вроде золотое правило. Эх... Это мы с вами понимаем.. К сожалению (еще раз повторюсь) FROM TO может быть использован только в UCF файле. Я разрабатываю узел, который должен иметь возможность использоваться во многих проектах. Все входные и выходные данные тактируются 100 МГц. Другого не дано по определению. 200 МГц заводится дополнительно. К сожалению, даже если я повешу KEEP на enable, могу сказать почти на 100%, другой человек в своем проекте это ограничение в UCF не внесет, пока не помучается с времянками. К сожалению многие разработчики умеют только задавать период синхросигнала.
|
|
|
|
|
Mar 4 2009, 12:04
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Цитата(Михаил_K @ Mar 4 2009, 14:42)  К сожалению многие разработчики умеют только задавать период синхросигнала. Ну и поставьте dual clock fifo между доменами. Будет дорого, универсально и надежно. На любые подходящие частоты. Возможно, даже экономичнее по питанию, если какую-то частоту можно уменьшить. Мы-то знаем, что можно было сделать лучше, но когда большая толпа своими ручонками лезет в проект не желая вдаваться в подробности, то кто-то за это будет платить. Конечный потребитель или тот один, кто собирает верхний уровень проекта. Кстати вопрос, а DCM на каком уровне иерархии возникает? Кто его входной сигнал констрейнами описывает?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|