|
|
  |
DCM в XC3S400 |
|
|
|
Nov 22 2005, 10:55
|
Частый гость
 
Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762

|
Проблема такая: описываю на Verilog такой модуль module my_dcm(CLKIN_IN, CLKFX_OUT, CLKIN_IBUFG_OUT, CLK0_OUT);
input CLKIN_IN; output CLKFX_OUT; output CLKIN_IBUFG_OUT; output CLK0_OUT; wire CLKFB_IN; wire CLKFX_BUF; wire CLKIN_IBUFG; wire CLK0_BUF; wire GND; assign GND = 0; assign CLKIN_IBUFG_OUT = CLKIN_IBUFG; assign CLK0_OUT = CLKFB_IN; BUFG CLKFX_BUFG_INST (.I(CLKFX_BUF), .O(CLKFX_OUT)); IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN), .O(CLKIN_IBUFG)); BUFG CLK0_BUFG_INST (.I(CLK0_BUF), .O(CLKFB_IN)); // Period Jitter (unit interval) for block DCM_INST = 0.04 UI // Period Jitter (Peak-to-Peak) for block DCM_INST = 0.13 ns DCM DCM_INST (.CLKFB(CLKFB_IN), .CLKIN(CLKIN_IBUFG), .DSSEN(GND), .PSCLK(GND), .PSEN(GND), .PSINCDEC(GND), .RST(GND), .CLKDV(), .CLKFX(CLKFX_BUF), .CLKFX180(), .CLK0(CLK0_BUF), .CLK2X(), .CLK2X180(), .CLK90(), .CLK180(), .CLK270(), .LOCKED(), .PSDONE(), .STATUS())/* synthesis xc_props="CLK_FEEDBACK=1X, \ CLKDV_DIVIDE=2.000000, \ CLKFX_DIVIDE=1, \ CLKFX_MULTIPLY=10, \ CLKIN_DIVIDE_BY_2=FALSE, \ CLKIN_PERIOD=100.000000, \ CLKOUT_PHASE_SHIFT=NONE, \ DESKEW_ADJUST=SYSTEM_SYNCHRONOUS, \ DFS_FREQUENCY_MODE=LOW, \ DLL_FREQUENCY_MODE=LOW, \ DUTY_CYCLE_CORRECTION=TRUE, \ FACTORY_JF=C080, \ PHASE_SHIFT=0, \ STARTUP_WAIT=TRUE" */; // synopsys translate_off defparam DCM_INST.CLK_FEEDBACK = "1X"; defparam DCM_INST.CLKDV_DIVIDE = 2.000000; defparam DCM_INST.CLKFX_DIVIDE = 1; defparam DCM_INST.CLKFX_MULTIPLY = 10; defparam DCM_INST.CLKIN_DIVIDE_BY_2 = "FALSE"; defparam DCM_INST.CLKIN_PERIOD = 100.000000; defparam DCM_INST.CLKOUT_PHASE_SHIFT = "NONE"; defparam DCM_INST.DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS"; // defparam DCM_INST.DFS_FREQUENCY_MODE = "HIGH"; defparam DCM_INST.DFS_FREQUENCY_MODE = "LOW"; defparam DCM_INST.DLL_FREQUENCY_MODE = "LOW"; defparam DCM_INST.DUTY_CYCLE_CORRECTION = "TRUE"; defparam DCM_INST.FACTORY_JF = 16'hC080; defparam DCM_INST.PHASE_SHIFT = 0; defparam DCM_INST.STARTUP_WAIT = "TRUE"; // synopsys translate_on endmodule
На входе - 10МГц, на выходе, как видно, д.б. 100МГц. Симулирую его - все великолепно... Синтезирую (Sinplify Pro), заливаю в кристалл... на выходе... 10МГц!!! Причем, как бы я ни менял коэффициенты деления/умножения все одно и то же: 10МГц... Может кто сталкивался?
|
|
|
|
|
Nov 22 2005, 19:56
|
Частый гость
 
Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762

|
Цитата(tegumay @ Nov 22 2005, 21:23)  Если в DCM задействован как DFS и DLL то мин вх частота 18 Мгц лучше всего зайдите на сайт Xilinxa и скачайте доки по Spartan 3 DFS - когда задействованы выходы CLKFX и CLKFX180 (1-280 MHZ) DLL - когда зайдействованы остальные выходы если поставить обратную связь то будет уже не DFS а DLL и частота мин станет 18Мгц а не 1 МГц по ходу так Дело в том, что я не сам создавал сей чудный код, а доверил его архитектурному визарду от Ксайлинкса... И он сказал, что минимальная входная частота от 1 МГц для данной конфигурации... по крайней мере, как я его понял...
|
|
|
|
|
Nov 23 2005, 13:29
|
Частый гость
 
Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762

|
Сейчас вот попробовал сделать DCM-ку на ките. Входная частота 50МГц. Заодно для очистки совести все синтезировал не в Sinplify, а в XST. На выходе CLK2X вижу удвоенную частоту, фазы 90-180-270 нормально подвинутые. Но это я все видел и на своей плате с 10МГц входа (разве что с CLK2X там полз сигнал 10МГц, но со скважностью 4). Но с выхода CLKFX прет какой-то бред, постоянная со слабыми колыханиями, которые по сути своей вероятно наводки... Напомню, что на своей плате с 10МГц-ами, я видел те же 10МГц сквозняком. Какие будут идеи? А то у меня уже своих вариантов и не осталось... Пробовал обойтись, как тут звучало, без связи CLK0-CLKFB. Эффект нулевой.
|
|
|
|
|
Nov 23 2005, 20:41
|
Частый гость
 
Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762

|
Цитата(tegumay @ Nov 23 2005, 23:28)  На 50 Мгц коэффициенты MUL и DIV какие? не те же самые? не 10 : 1? Пытался 50МГц умножить на 2. Цитата(tegumay @ Nov 23 2005, 23:28)  а на вход RST подано что? почему то когда он в воздухе DCM не работает Пробовал с "0" и заводил на кнопку: жму, вижу сигнал падает в ноль, отпускаю, проскакивает 50МГц, потом якобы входит в режим и опять муть... Цитата(tegumay @ Nov 23 2005, 23:28)  рекомендую загдянуть в доки, там объъяснены все параметры блока DCM и когда в каких режимах он работает иначе придеться долго танцевать из-за того что некоторые параметры не сходятся - параметр CLKFEEDBACK стоит в 1X, а для режима DFS он должен быть в NONE и feedbacka е должно быть иначе он будет DLL. я режим DFS не использовал, в пятницу попробую... но не на Spartan'e Проверял в DFS-режиме с feedback-ом = NONE, на входе только CLKIN, сигнал снимаю только с CLKFX, остальные входы в "0", выходы - в воздухе... То же самое...
|
|
|
|
|
Nov 24 2005, 06:52
|
Частый гость
 
Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762

|
Цитата(Grumbler_2002 @ Nov 24 2005, 00:51)  Посмотреть STATUS на предмет захвата или срыва частоты, проверить джиттер входного сигнала. STATUS[2:0]=3'b111; Входной сигнал устойчивый, явного джиттера не наблюдается... Зато обнаружил, что нет захвата...
|
|
|
|
|
Nov 24 2005, 11:25
|
Частый гость
 
Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762

|
Цитата(tegumay @ Nov 24 2005, 12:51)  а как 2X он же работал? если он есть то и захват должен быть... Более того, он и сейчас работает!! Может, у меня крыша уже едет? LOCKED встает в "0" (это на случай, если я активный уровень перепутал  ) Почитал xapp462, скачал пример с http://www.xilinx.com/bvdocs/appnotes/xapp462_verilog.zipПопробовал BUFG_DFS_SUBM и BUFG_DFS_FB_SUBM. Результат в общем тот-же: 10,3мкс на CLKFX стоит 50МГц, а потом все рушится... P.S. Оппппа!!! Вот так накололся!!!! У кита светодиоды горят по "0". Прошу прощения у всех, кого заблудил... Мне очень стыдно  Получается все наоборот: LOCKED=1, а все статусы = 0...
Сообщение отредактировал stalko - Nov 24 2005, 11:32
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|