|
Помогите с констрейнами |
|
|
|
Dec 13 2011, 05:38
|

Профессионал
    
Группа: Свой
Сообщений: 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
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 13 2011, 11:02
|

Профессионал
    
Группа: Свой
Сообщений: 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
|
|
|
|
|
Dec 13 2011, 15:21
|

Профессионал
    
Группа: Свой
Сообщений: 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}] тестовый проектик попробую выдернуть из проекта попозже.
|
|
|
|
|
Dec 14 2011, 05:58
|

Профессионал
    
Группа: Свой
Сообщений: 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 нс раньше требуемого. я правильно расшифровал графики и исправил ошибки? как то всё слишком просто получилось.
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 14 2011, 06:54
|

Профессионал
    
Группа: Свой
Сообщений: 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 нс?
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 14 2011, 08:32
|

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

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