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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Помогите с констрейнами
juvf
сообщение Dec 13 2011, 05:38
Сообщение #1


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



[attachment=63490:______2.PNG]на рисунке 2 схема управления внешним ЦАП. На рисунке 1 времянка из даташит на АЦП. Как правильно задать констрейны не учитывая внешних задержек (в плате все цепи выравнены).

в *.sdc файле описал клоки.
Код
set_time_format -unit ns -decimal_places 3
create_clock -name {clk1} -period 10.000 -waveform { 0.000 5.000 } [get_ports {clk}]
create_generated_clock -name {pll|clk_out[0]} -source [get_pins {pll|clk_in[0]}] -duty_cycle 50.000 -master_clock {clk1} [get_pins {pll|clk_out[0]}]
create_generated_clock -name {pll|clk_out[1]} -source [get_pins {pll|clk_in[0]}] -duty_cycle 50.000 -phase 90.000 -master_clock {clk1} [get_pins {pll|clk_out[1]}]


не могу понять как описывать выходные пины Dout и clkDac? Очевидно нужно описать выходные задержки, но между чем и чем?
мне нужно чтобы передний фронт clkDac был посередине установки данных на Dout. По даташиту, при моих частотах допускается передний фронт clkDac двигать ±2 нс относительно Dout. Как это правильно прописать в констерейнах?
пробовал так
Код
set_output_delay -clock [get_clocks {pll|clk_out[0]}] -max 7 [get_ports {clkDac}]
set_output_delay -clock [get_clocks {pll|clk_out[0]}] -min 3 [get_ports {clkDac}]
set_output_delay -clock [get_clocks {pll|clk_out[0]}] -max 2 [get_ports {Dout[*]}]
set_output_delay -clock [get_clocks {pll|clk_out[0]}] -min -2 [get_ports {Dout[*]}]


такие констрейны не выполняются. Например по clkAdc такие картинки - рисунок 3. Не понятно по графику.... по идее клок pll|clk_in[0] испустился (Launch Clock), через 5 нс ±2 должен появится клок на выходе плис clkDac (Latch Clock). Но на графике всякие Clok Delay и Data Delay почемуто ДО того, как испустился клок (Launch Clock). Кто-нибудь может пояснить эти диаграммы, плииз.

Сообщение отредактировал juvf - Dec 13 2011, 05:43
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 13 2011, 08:57
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



тактовая на ЦАП неправильно задана.


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 13 2011, 11:02
Сообщение #3


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(des00 @ Dec 13 2011, 14:57) *
тактовая на ЦАП неправильно задана.

А где неправильно? Я ваши статьи до дыр зачитал... ни чего не понятно. По вашим картинкам и по вашему тексту вроде всё понятно. У меня совершенно другие картинки в TQ. На моем рисунке начало анализа не понятно от куда. Вышел Lautch Clock из плл (самая верхняя кривая), после этого этот клок должен прийти на вход ОЗУ, очевидно что будет какая-то задержка.... 1...2 нс. Но у меня задержка клока -3.474 нс (Clock Delay). Почему МИНУС 3.47? Далее .... после того, как клок прошел задержку в МИНУС 3.47нс идет задержка 6,243 нс на доставку данных к порту плис (Data Delay).

констрейны create_generated_clock в TQ автоматом создал. Там что-то неправильно?
Что нужно констрейнить и относительно чего? На самом деле мне нужно чтоб на НОЖКЕ плис clkDAC сигнал не убегал относительно данных на НОЖКАХ плис Dout. Как Doun или clkDAC убежит относительно входного клока ПЛИС или выходных регистров PLL - неважно.

Из TQ попытался сделать
set_max_delay -from [get_ports {Dout[*]}] -to [get_ports {clkDac}] 7
так проект вообще не собирается в квартусе.


ps Вопрос по вашей статье.....часть4
Цитата
Положим параметры ЦАП tsu/th = 5ns/5ns
Код
    set_output_delay -clock [get_clocks {oclk}] -max  5.0 [get_ports {data[*]}]
    set_output_delay -clock [get_clocks {oclk}] -min -5.0 [get_ports {data[*]}]

Это вы задали допуски для ...... для выхода data[*] модуля dac относительно выхода oclk модуля dac. А как же задержка прохождения от выхода data[*] модуля dac до конкретного пина плис? Или она не констрейница?





Почему в TQ время Clock Delay в Data Required отрицательное?

Сообщение отредактировал juvf - Dec 13 2011, 11:03
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 13 2011, 11:56
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(juvf @ Dec 13 2011, 06:02) *
А где неправильно?

судя по вашему рисунку, вы тактируете ЦАП от плис. При этом клок, относительно которого должны быть заданы задержки идет от порта плис. У вас же указаны выходные пины PLL.

На остальное чуть позже отвечу и будет неплохо если вы выложите тестовый проектик.


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 13 2011, 15:21
Сообщение #5


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(des00 @ Dec 13 2011, 17:56) *
судя по вашему рисунку, вы тактируете ЦАП от плис. При этом клок, относительно которого должны быть заданы задержки идет от порта плис. У вас же указаны выходные пины PLL.

т.е. нужно задать клоки для ЦАП так?

Код
create_generated_clock -name {clkDac} -source [get_pins {pll|clk_in[0]}] -duty_cycle 50.000 -phase 90.000 -master_clock {clk1} [get_ports {clkDac}]


тестовый проектик попробую выдернуть из проекта попозже.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 13 2011, 19:22
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(juvf @ Dec 13 2011, 09:21) *
т.е. нужно задать клоки для ЦАП так?

нет, не так. Нужно описать выходной клок с ПЛЛ, порожденный из входного клока. И отдельно клок ЦАП, порожденный из выходного клока ПЛЛ. Не внимательно читали. В приложениях даже ссылки на статьи от альтеры были, с примерами. biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 14 2011, 05:58
Сообщение #7


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



с клоком ЦАП вроде прояснилось. Но все равно не получается данные отконстрейнить. в приложении тестовый проектbr (Q11.0 SP1)



с клоком на ЦАП разобрался.... картинки в TQ стали понятные. Толи во всем разобрался, толи формулу под результат подогнал...... Подскажите если сто не так по картинкам...

на первой картинке Launtch Clock - это клок на входе ОЗУ внутри плис. Latch Clock - это клок на выходе из плис который пойдёт на ЦАП. они в противофазе как и нужно. между ними 180°.
Data Arrival складывается из задержки Launtch Clock до входного триггера в озу 0,815 нс и задержки выборки данных из озу 7,564 нс.

Data Required: после переднего фронта Latch Clock на выходе Pll через 2,287 нс на пыходе ПЛИС появится клок - это время задержки распространения клока. Т.е. реально в через 2,287 нс на ЦАП придет клок. Но нужно ещё 2 нс на tsu. поэтому данные должны быть готовы не позднее чем за 2 нс до клока на ЦАП. А в реале данные появятся на 2,869 нс позже требуемого.
Наверно нужно задержать клок ЦАП примерно на 3 нс и должно все заработать. между Launtch Clock и Latch Clock 180°. 3 нс на 100 МГц - это примерно 108°. Делаю между Launtch Clock и Latch Clock 290°. Пересобираю проект и вуаля.... вторая картинка: данные на пинах плис появились на 0,186 нс раньше требуемого.

я правильно расшифровал графики и исправил ошибки? как то всё слишком просто получилось.


Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  TestConstr.7z ( 1.87 мегабайт ) Кол-во скачиваний: 32
 
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 14 2011, 06:11
Сообщение #8


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(juvf @ Dec 14 2011, 00:58) *
я правильно расшифровал графики и исправил ошибки? как то всё слишком просто получилось.

бинго !!! %) я же говорил что ничего сложного, но требуется понимание физики процесса %)

ЗЫ. а в вашем случае лучше фазу вообще не крутить, если по холду проходите конечно


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 14 2011, 06:54
Сообщение #9


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата
я же говорил что ничего сложного, но требуется понимание физики процесса

ага, спасибо за подсказки. В тестовом проекте не стал фазу вообще крутить. сделал 0°. и tsu/th сделал 4 нс. проект пустой все собралось прекрасно.

Стал в рабочем проекте реализовывать полученный опыт )) Если фазу не крутить, и tsu/th = 3 нс, то setup не проходит. т.е. получается Data Arrival порядка 9 нс. допустим фаза сдвинута на 359°. Т.е. клок на цапе будет задержан практически на 9.999 нс. и чуть чуть не проходит. не успевают данные к расчетному Data Required. Задержать бы клок ещё на пару нс и былобы всё прекрасно. Ставлю в PLL задержку на клок в 11 нс, при том что период равен 10. Тут уже TQ не понимает меня. Он считает что клок на цапе задержен не на 11, а на 1 нс. и соответственно все расчеты делает неверно. см рисунок. Как в таких случаях указать TQ, что Latch Clock задержен от Lautch Clok на время, больше периода, т.е. на 11 нс?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 14 2011, 07:17
Сообщение #10


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(juvf @ Dec 14 2011, 00:54) *
Он считает что клок на цапе задержен не на 11, а на 1 нс. и соответственно все расчеты делает неверно. см рисунок. Как в таких случаях указать TQ, что Latch Clock задержен от Lautch Clok на время, больше периода, т.е. на 11 нс?

1. триггеры в выходные порты ЦАПА поставьте. Уж какой то большой у вас DataArrival
2. Мультициклы. Подробнее посмотрите сайт журнала КиТ. Там в архивах за прошлый год открыли мои статьи. В них более полно расписано задание констрейнов В/В и в частности есть ваш конкретный случай %)


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 14 2011, 08:32
Сообщение #11


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(des00 @ Dec 14 2011, 13:17) *
1. триггеры в выходные порты ЦАПА поставьте.
наверно это будет самое правильное. раньше стояли триггеры, но убрал, чему-то они сильно мешали. Возможно верну.
Цитата
2. Мультициклы. Подробнее посмотрите сайт журнала КиТ.
Спасибо, нашел ваши статьи. Выучил ещё один урок )).

Если можно, ещё вопрос..... На самом деле для работы цап нужен clk и wr. По даташиту они практически совпадают. Я сейчас отконстреинил данные относительно клока на цап. wr на цап - это соседний порт на плис соединённый внутри плис. см рис. Нужно описывать констрейны для wr? Если нужно, то как? Первые мысли - это создать ещё один клок от выхода плл до порта вр, так же как клок для цап, и прописать задержки для данных относительно нового клока wr.


Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 14 2011, 09:50
Сообщение #12


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(juvf @ Dec 14 2011, 03:32) *
На самом деле для работы цап нужен clk и wr. По даташиту они практически совпадают. Я сейчас отконстреинил данные относительно клока на цап. wr на цап - это соседний порт на плис соединённый внутри плис. см рис. Нужно описывать констрейны для wr?

я бы сделал так, описал wr как generated_clock с того же порта PLL что и clkDac. И задал бы те же констрейны относительно него. Только не забудьте добавить ключ -add в задержки, что бы анализ не выкинул часть заданных задержек.


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 14 2011, 10:14
Сообщение #13


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(des00 @ Dec 14 2011, 15:50) *
я бы сделал так, описал wr как generated_clock с того же порта PLL что и clkDac. И задал бы те же констрейны относительно него. Только не забудьте добавить ключ -add в задержки, что бы анализ не выкинул часть заданных задержек.
я уже так и сделал, тока без адд )))
Спасибо за подсказку
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 19 2011, 03:42
Сообщение #14


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



А как констрейнить такие схемы? Сигнал прерывания в модуле MyMod порождается клоком 100 МГц, а процессор считывает порт клоком 50 МГц от др источника. TQ на такие схемы ругается. В предыдущих схемах сделал на логике так, что чтение порта блокирует изменение int, что-то типа аппаратного мютикса. Но в текущей схеме такой возможности нет.

Входные клоки идут с одного клокдистребьютера, очевидно что входные клоки можно описать относительно друг друга, или принять что фаза каждого 4-го клока совпадает. Cигнал int надо описать, .... но как? set_input_delay или set_output_delay? Какие max и min?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 19 2011, 04:15
Сообщение #15


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(juvf @ Dec 18 2011, 21:42) *
А как констрейнить такие схемы? Сигнал прерывания в модуле MyMod порождается клоком 100 МГц, а процессор считывает порт клоком 50 МГц от др источника. TQ на такие схемы ругается. В предыдущих схемах сделал на логике так, что чтение порта блокирует изменение int, что-то типа аппаратного мютикса. Но в текущей схеме такой возможности нет.

недавно пробегали статьи по CDC (Clock Domain Crossing) поройте что к чему. А описывается просто : если клоки асинхронные, то через эксклюзивные группы, если синхронные то через мультициклы или ложные пути.


--------------------
Go to the top of the page
 
+Quote Post

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

 


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


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