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

 
 
3 страниц V  < 1 2 3 >  
Closed TopicStart new topic
> Работа с синхросигналами, нужна помощь.
Михаил_K
сообщение Mar 4 2009, 09:52
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 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
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 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
sergunas
сообщение Mar 4 2009, 10:19
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 441
Регистрация: 7-12-04
Пользователь №: 1 373



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

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


Знающий
****

Группа: Свой
Сообщений: 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
petrov
сообщение Mar 4 2009, 10:48
Сообщение #20


Гуру
******

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



Цитата(Михаил_K @ Mar 4 2009, 13:33) *
Иногда практически невозможно. Имеющиеся узлы находятся в библиотеке и используются во множестве других прошивок.
Внести изменения в эти узлы - значит изменять и все проекты, которые эти узлы используют. Иначе они больше не будут собираться. Да и я работаю в коллективе, поэтому библиотека общая. После того как туда что-то попало, изменить становится проблематично. А порождать копии тех-же блоков - порочно.


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


Знающий
****

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



Цитата(petrov @ Mar 4 2009, 13:48) *
Порочно применять плохие решения схемотехнические, тем более чтобы на них влияло устройство коллектива. ИМХО лучше сделать правильно и изучить констрейны соответствующие.

А кто сказал что они плохие?
Вот констрейны соответствующие изучить - это надо. Только вот не нашел таких crying.gif
Go to the top of the page
 
+Quote Post
sergunas
сообщение Mar 4 2009, 10:55
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 441
Регистрация: 7-12-04
Пользователь №: 1 373



Цитата(Михаил_K @ Mar 4 2009, 13:33) *
Речь не идет о мультиплексировании клоков. Речь идет о заведении клока на вход данных.

Клок перестанет быть глобальным сигналом после такой операции.
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Mar 4 2009, 11:01
Сообщение #23


Знающий
****

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



Цитата(sergunas @ Mar 4 2009, 13:55) *
Клок перестанет быть глобальным сигналом после такой операции.

Почему?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Mar 4 2009, 11:02
Сообщение #24


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

Группа: Свой
Сообщений: 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
sergunas
сообщение Mar 4 2009, 11:09
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 441
Регистрация: 7-12-04
Пользователь №: 1 373



Цитата(Михаил_K @ Mar 4 2009, 14:01) *
Почему?

Из-за аппаратной реализации ПЛИС. Правда, 100% не берусь утверждать на счёт ПЛИС Virtex. Но проверьте лишний раз.
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 4 2009, 11:13
Сообщение #26


Знающий
****

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



Цитата(Михаил_K @ Mar 4 2009, 13:52) *
Вот констрейны соответствующие изучить - это надо. Только вот не нашел таких crying.gif

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 сам все поймет, как вы его там умножали, делили и сдвигали.
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 4 2009, 11:15
Сообщение #27


Гуру
******

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



Цитата(Михаил_K @ Mar 4 2009, 13:52) *
А кто сказал что они плохие?
Вот констрейны соответствующие изучить - это надо. Только вот не нашел таких crying.gif



Насколько я понимаю контролировать частоту работы схем через enable это вроде золотое правило.


Я честно сказать в констрейнах тоже не разбираюсь, но вот что-то есть у ксайлинкса по этому поводу:

http://www.xilinx.com/itp/xilinx4/data/doc.../strategy2.html

Multi-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.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Mar 4 2009, 11:42
Сообщение #28


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Михаил_K @ Mar 4 2009, 12:52) *
Посмотрел. Но честно говоря ничего страшного не увидел. Медленный клок приходит все по тем же глобальным линиям, и лишь у самого лута через коммутационную коробочку идет в лут. Также как и быстрый клок. Опасение то как-раз и вызывает то, что задержки дополнительной не будет. Была бы она хотя бы в 1 нс, можно было бы жить наверное.

При реализации моего совета отсутствие задержки как раз есть благо, ибо, как я сказал, во время спада быстрого клока у медленного синфазного всегда полка, которую (при отсутствии задержки) вы надежно поймаете. Что до констрейнов в этом случае, то синтезатор поставит их сам, если только оба клока идут с PLL (он будет знать и их частоты, и фазовое соотношение).
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Mar 4 2009, 11:42
Сообщение #29


Знающий
****

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



Цитата(petrov @ Mar 4 2009, 14:15) *
Насколько я понимаю контролировать частоту работы схем через enable это вроде золотое правило.

Эх... Это мы с вами понимаем..

К сожалению (еще раз повторюсь) FROM TO может быть использован только в UCF файле. Я разрабатываю узел, который должен
иметь возможность использоваться во многих проектах. Все входные и выходные данные тактируются 100 МГц. Другого не дано по определению. 200 МГц заводится дополнительно. К сожалению, даже если я повешу KEEP на enable, могу сказать почти на 100%, другой человек в своем проекте это ограничение в UCF не внесет, пока не помучается с времянками. К сожалению многие разработчики умеют только задавать период синхросигнала.
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 4 2009, 12:04
Сообщение #30


Знающий
****

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



Цитата(Михаил_K @ Mar 4 2009, 14:42) *
К сожалению многие разработчики умеют только задавать период синхросигнала.

Ну и поставьте dual clock fifo между доменами. Будет дорого, универсально и надежно. На любые подходящие частоты. Возможно, даже экономичнее по питанию, если какую-то частоту можно уменьшить.
Мы-то знаем, что можно было сделать лучше, но когда большая толпа своими ручонками лезет в проект не желая вдаваться в подробности,
то кто-то за это будет платить. Конечный потребитель или тот один, кто собирает верхний уровень проекта.

Кстати вопрос, а DCM на каком уровне иерархии возникает? Кто его входной сигнал констрейнами описывает?
Go to the top of the page
 
+Quote Post

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

 


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


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