L_Konstantin 0 13 октября, 2006 Опубликовано 13 октября, 2006 · Жалоба С кварцевого генератора подается тактовый сигнал на вход кристалла. далее он проводится через DCM. Проблема в том что на выходе DCM тактвый сигнал есть, но при этом loc стоит в нуле! Кто сталкивался? Как бороться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ilya79 0 13 октября, 2006 Опубликовано 13 октября, 2006 · Жалоба С кварцевого генератора подается тактовый сигнал на вход кристалла. далее он проводится через DCM. Проблема в том что на выходе DCM тактвый сигнал есть, но при этом loc стоит в нуле! Кто сталкивался? Как бороться? 1. Какие параметры тактового сигнала F, дрожание ? 2. В каком режиме работает DCM ? 3. Если пункт 1 удовлетворяет требованиям Xilinx, то попробуйте принудительно reset-ить DCM после загрузки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Link 0 13 октября, 2006 Опубликовано 13 октября, 2006 · Жалоба Заодно проверьте - режим работы DCM : low или high frequency - есть ли обратная связь - feedback Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
L_Konstantin 0 14 октября, 2006 Опубликовано 14 октября, 2006 (изменено) · Жалоба Входная частота: 47 МГц. Внутри DCM происходит умножение частоты на 2 и фазовый сдвиг. Reset в DCM заведен, однако его активация ситуацию не изменяет. Помогает только выключение питания и повторение загрузки. Просто перезагрузка также не помогает. При этом loc не выставляется примерно в 30% случаев загрузки - то есть нестабильность присутствует. Вот элемент кода (Kvartz_Clock - сигнал входящий в кристалл, Xilinx_DCM_Clock - тактовый сигнал для работы внутренней логики). --******************************************************************************** ***** attribute CLK_FEEDBACK of Xilinx_DCM : label is "2X"; attribute DLL_FREQUENCY_MODE of Xilinx_DCM : label is "LOW"; attribute CLKOUT_PHASE_SHIFT of Xilinx_DCM : label is "FIXED"; attribute PHASE_SHIFT of Xilinx_DCM : label is 40.0; --******************************************************************************** ***** Kvartz_CLK_IBUFG: IBUFG_LVCMOS33 port map( I => Kvartz_Clock, O => Kvartz_Clock_Int ); Kvartz_CLK_BUFGMUX: BUFGMUX port map ( I0 => Kvartz_Clock_Int, I1 => '0', S => '0', O => Kvartz_Clock_BufGMux ); Xilinx_DCM_ClockFB <= Xilinx_DCM_Clock; Xilinx_DCM: DCM port map( CLKIN => Kvartz_Clock_BufGMux, RST => NOT PCIX_Bus_Reset_Int, CLKFB => Xilinx_DCM_ClockFB, CLK0 => open, CLK2X => Xilinx_DCM_Clock_FromDLL, LOCKED => Xilinx_DCM_Locked ); Xilinx_Clock_BUFG: BUFG port map(I => Xilinx_DCM_Clock_FromDLL, O => Xilinx_DCM_Clock); Изменено 14 октября, 2006 пользователем L_Konstantin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klop 0 14 октября, 2006 Опубликовано 14 октября, 2006 · Жалоба Входная частота: 47 МГц. Внутри DCM происходит умножение частоты на 2 и фазовый сдвиг. Reset в DCM заведен, однако его активация ситуацию не изменяет. Помогает только выключение питания и повторение загрузки. Просто перезагрузка также не помогает. При этом loc не выставляется примерно в 30% случаев загрузки - то есть нестабильность присутствует. Вот элемент кода (Kvartz_Clock - сигнал входящий в кристалл, Xilinx_DCM_Clock - тактовый сигнал для работы внутренней логики). --******************************************************************************** ***** attribute CLK_FEEDBACK of Xilinx_DCM : label is "2X"; attribute DLL_FREQUENCY_MODE of Xilinx_DCM : label is "LOW"; attribute CLKOUT_PHASE_SHIFT of Xilinx_DCM : label is "FIXED"; attribute PHASE_SHIFT of Xilinx_DCM : label is 40.0; --******************************************************************************** ***** Kvartz_CLK_IBUFG: IBUFG_LVCMOS33 port map( I => Kvartz_Clock, O => Kvartz_Clock_Int ); Kvartz_CLK_BUFGMUX: BUFGMUX port map ( I0 => Kvartz_Clock_Int, I1 => '0', S => '0', O => Kvartz_Clock_BufGMux ); Xilinx_DCM_ClockFB <= Xilinx_DCM_Clock; Xilinx_DCM: DCM port map( CLKIN => Kvartz_Clock_BufGMux, RST => NOT PCIX_Bus_Reset_Int, CLKFB => Xilinx_DCM_ClockFB, CLK0 => open, CLK2X => Xilinx_DCM_Clock_FromDLL, LOCKED => Xilinx_DCM_Locked ); Xilinx_Clock_BUFG: BUFG port map(I => Xilinx_DCM_Clock_FromDLL, O => Xilinx_DCM_Clock); По моему на CLKFB должен быть заведен (через BUFG) CLK0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Link 0 14 октября, 2006 Опубликовано 14 октября, 2006 · Жалоба А зачем вам "Kvartz_CLK_BUFGMUX" когда уже есть "Kvartz_CLK_IBUFG". "Kvartz_CLK_BUFGMUX" просто не нужен. какие стоят значения аттрибутов - DESKEW_ADJUST - CLKIN_DIVIDE_BY_2 ? Вообще эти аттрибуты внедряются у вас при разводке Xilinx ? klop подавать на feedback CLK2x вроде можно, ведь стоит attribute CLK_FEEDBACK of Xilinx_DCM : label is "2X". Попробовать вместо CLK2x подавать CLK0 стоит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
L_Konstantin 0 15 октября, 2006 Опубликовано 15 октября, 2006 (изменено) · Жалоба 1. А зачем вам "Kvartz_CLK_BUFGMUX" когда уже есть "Kvartz_CLK_IBUFG". "Kvartz_CLK_BUFGMUX" просто не нужен. Поставил я его специально. Дело в том, что если его не ставить, то после IBufG сигнал идет по обычным путям внутри кристалла. А если его провести через BUFGMUX, то он начинает распространяться через глобальные скоростные линии (узнал об это тогда, когда боролся с тем, что разные блоки срабатывал по фронту в разное время. Поразглядывал разводку во FPGA Editor и увидел такую штуку. 2. какие стоят значения аттрибутов - DESKEW_ADJUST - CLKIN_DIVIDE_BY_2 Значения этих аттритов я сам не определяю - то есть они умолчательные. Задал специльно только CLK_FEEDBACK, DLL_FREQUENCY_MODE, CLKOUT_PHASE_SHIFT и PHASE_SHIFT - исходя из их необходимости. 3. CLK0 конечно надо попробовать подать на FB, но смогу попробовать только завтра - выходной седеня :) Изменено 15 октября, 2006 пользователем L_Konstantin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 15 октября, 2006 Опубликовано 15 октября, 2006 · Жалоба Поставил я его специально. Дело в том, что если его не ставить, то после IBufG сигнал идет по обычным путям внутри кристалла. А если его провести через BUFGMUX, то он начинает распространяться через глобальные скоростные линии (узнал об это тогда, когда боролся с тем, что разные блоки срабатывал по фронту в разное время. Поразглядывал разводку во FPGA Editor и увидел такую штуку. Если Вы от этого клока кроме DCM ничего не тактируете, то ставить туда BUFGMUX - только зряшняя трата ресурсов. Атрибуты Xilinx гораздо удобнее задавать через GENERIC - последние версии софта это позволяют, попробуйте воспользоваться вариантом из LANGUAGE TEMPLATES ISE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Link 0 15 октября, 2006 Опубликовано 15 октября, 2006 · Жалоба Поставил я его специально. Дело в том, что если его не ставить, то после IBufG сигнал идет по обычным путям внутри кристалла. А если его провести через BUFGMUX, то он начинает распространяться через глобальные скоростные линии (узнал об это тогда, когда боролся с тем, что разные блоки срабатывал по фронту в разное время. Поразглядывал разводку во FPGA Editor и увидел такую штуку. Вообще-то после IBUFG сигнал идет по высокоскоростным (клоковым) цепям, это после IBUF он идет по обычным... Чтобы блоки срабатывали когда надо, обычно constrant вешаются... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться