[an error occurred while processing this directive]
DCM в XC3S400
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Stalko 24 ноября 2005 г. 00:28

Проблема такая:
описываю на 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 = "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МГц...

Попробовал сделать DCM-ку на ките. Входная частота 50МГц.
Заодно для очистки совести все синтезировал не в Sinplify, а в XST.
На выходе CLK2X вижу удвоенную частоту, фазы 90-180-270 нормально подвинутые.
Но это я все видел и на своей плате с 10МГц входа (разве что с CLK2X там полз сигнал 10МГц, но со скважностью 4).
Но с выхода CLKFX прет какой-то бред, постоянная со слабыми колыханиями, которые по сути своей вероятно наводки...
Напомню, что на своей плате с 10МГц-ами, я видел те же 10МГц сквозняком.
Пробовал обойтись без PLL, без связи CLK0-CLKFB .
Тогда:
CLK_FEEDBACK=NONE;
на входе только CLKIN, сигнал снимаю только с CLKFX, остальные входы в "0", выходы - в воздухе... То же самое...

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru