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

 
 
> Вопрос по DCM у Spartan-3
ovs_pavel
сообщение May 16 2013, 17:31
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249



Вечер добрый. Возникла необходимость написать проект для Spartan-3 (xc3s1500-4fg676). Как всегда неожиданно и срочно ((. В проекте необходимо подстроить фазу входного сигнала под данные. Стандартное решение - DCM. Но что то забуксовал. Для частот ниже 120 МГц все работает. Вижу выходную частоту равную входной и с изменяемым фазовым сдвигом. А вот для частоты 150 МГц проблема - нет выходного сигнала (причем на симуляторе тоже).

В тоже время в проекте для 6-го spartana все ок.

Ниже код (собственно задание DCM):

`timescale 1ns / 1ps
module dcm_proba (
input tx_in_clk,

output tx_out_clk

);


//--------------------------------------------------------------------------//
//------------------------- Буфер входной частоты. -------------------------//
//--------------------------------------------------------------------------//
wire w_tx_in_clk;

BUFG BUFG_tx_in_clk (
.I (tx_in_clk),
.O (w_tx_in_clk)
);


//--------------------------------------------------------------------------//
//----------------------- DCM модуль сдвига частоты. -----------------------//
//--------------------------------------------------------------------------//
wire w_clk0_out;
wire bufg_clk0_out;

DCM #(
.CLKDV_DIVIDE (2.0),
.CLKFX_DIVIDE (2),
.CLKFX_MULTIPLY (2),
.CLKIN_DIVIDE_BY_2 ("FALSE"),
.CLKIN_PERIOD (6.7),
.CLKOUT_PHASE_SHIFT ("FIXED"),
.CLK_FEEDBACK ("1X"),
.DESKEW_ADJUST ("SYSTEM_SYNCHRONOUS"),
.DLL_FREQUENCY_MODE ("LOW"),
.DUTY_CYCLE_CORRECTION ("TRUE"),
.PHASE_SHIFT (-90),
.STARTUP_WAIT ("FALSE")
) DCM_SP_Clk_118_shift (
.CLK0 (bufg_clk0_out),
.CLK180 (),
.CLK270 (),
.CLK2X (),
.CLK2X180 (),
.CLK90 (),
.CLKDV (),
.CLKFX (),
.CLKFX180 (),
.LOCKED (),
.PSDONE (),
.STATUS (),
.CLKFB (w_clk0_out),
.CLKIN (w_tx_in_clk),
.PSCLK (),
.PSEN (1'b0),
.DSSEN (),
.PSINCDEC (),
.RST (1'b0)
);


BUFG BUFG_118_shist (
.I (bufg_clk0_out),
.O (w_clk0_out)
);


wire w_tx_out_clk;


//spartan 3

OFDDRCPE OFDDRCPE_out (
.Q (w_tx_out_clk),
.C0 (w_clk0_out),
.C1 (~w_clk0_out),
.CE (1'b1),
.CLR (1'b0),
.D0 (1'b1),
.D1 (1'b0),
.PRE (1'b0)
);

/*
// spartan 6
ODDR2 #(
.DDR_ALIGNMENT ("NONE"),
.INIT (1'b0),
.SRTYPE ("SYNC")
) ODDR2_inst (
.Q (w_tx_out_clk),
.C0 (w_clk0_out),
.C1 (~w_clk0_out),
.CE (1'b1),
.D0 (1'b1),
.D1 (1'b0),
.R (1'b0),
.S (1'b0)
);
*/

assign tx_out_clk = w_tx_out_clk;

endmodule


В констрейнах прописываю лишь:

NET "tx_in_clk" CLOCK_DEDICATED_ROUTE = FALSE;


Гуру по 3-им спартанам не подскажите в чем загвоздка??
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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