Перейти к содержанию
    

Добрый день. У меня возникла проблема при генерации клоков внутренней pll spartan-на 6-го. Дано: входная частота на spartan - 8 МГЦ. Эта частота через BUFG подается на клоковый вход PLL_BASE. Коэфф. умножения - 6.

Из PLL_BASE выходят 3 сигнала: 2 по 48Мгц (с делением на 1) и один - 24МГц (с делением на 2). CLKFBOUT и CLKFBIN соединены напрямую. Квждый из 3-х клоковых выходов проходит через BUFG. В spartan3 такая схема вполне работала, там, правда, использовался DSM. Тут я получаю ругань MAP-а

ERROR:Place:1205 - This design contains a global buffer instance, <DSP_CLKBUF>, driving the net, <Clk48MOut_OBUF>, that is driving the following (first 30) non-clock load pins off chip. This design practice, in Spartan-6, can lead to an unroutable situation due  to limitations in the global routing. If the design does route there may be  excessive delay or skew on this net. 

с последующим предложением использовать ODDR2. Есть ли у кого-то соображения как избавиться от этой ошибки? Если не сложно, может кто поделится примером простого умножения частоты на spartan-6. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... Дано: входная частота на spartan - 8 МГЦ. ...

У Spartan-6 минимальная допустимая входная частота для PLL -- 19 MHz.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Spartan-6 минимальная допустимая входная частота для PLL -- 19 MHz.

 

Даже если так, то MAP все равно должен был собраться. А тут вылетает......

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сож. примера на этом компе нет, может быть завтра дам.

А пока посоветую просто делать то, что предлагает ISE. Я ещё помню, как сам всё это делал именно так.. :-))

Хочет ODDR2, так поставьте. Потом наверное ещё что-то попросит, ну, за несколько итераций управитесь.. :-))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли у кого-то соображения как избавиться от этой ошибки? Если не сложно, может кто поделится примером простого умножения частоты на spartan-6. Спасибо.

А почитать то что вам английским по белому пишет маппер - не судьба? Там же совершенно отчётливо сказано - используйте ODDR!

Потому что так правильно и потому что по-другому вывести клок наружу в этой архитектуре невозможно. PLL в данном случае ни при чём.

P.S. Ещё по вашему коду - BUFG на входе PLL нафиг не нужен. А вот в цепи обратной связи - очень даже нужен (если вы хотите соблюсти фазовые соотношения между

входным клоком и всеми сгенерёнными клоками).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот пример. Клок сначала разгоняется DCM-ом, а затем PLLится.

 

    DCM_CLKGEN_inst4 : DCM_CLKGEN
    generic map
    (
        CLKFXDV_DIVIDE  => 2,       -- CLKFXDV divide value (2, 4, 8, 16, 32)
        CLKFX_DIVIDE    => 27,      -- Divide value - D - (1-256)
        CLKFX_MD_MAX    => 0.0,     -- Specify maximum M/D ratio for timing anlysis
        CLKFX_MULTIPLY  => 50,      -- Multiply value - M - (2-256)
        CLKIN_PERIOD    => 37.0,    -- Input clock period specified in nS
        SPREAD_SPECTRUM => "NONE",  -- Spread Spectrum mode "NONE", "CENTER_LOW_SPREAD", "CENTER_HIGH_SPREAD",
                                    -- "VIDEO_LINK_M0", "VIDEO_LINK_M1" or "VIDEO_LINK_M2"
        STARTUP_WAIT    => FALSE    -- Delay config DONE until DCM_CLKGEN LOCKED (TRUE/FALSE)
    )
    port map
    (
        CLKFX       => clk_DCM4p,   -- 1-bit output: Generated clock output
        CLKFX180    => clk_DCM4n,   -- 1-bit output: Generated clock output 180 degree out of phase from CLKFX.
        CLKFXDV     => open,        -- 1-bit output: Divided clock output
        LOCKED      => open,        -- 1-bit output: Locked output
        PROGDONE    => open,        -- 1-bit output: Active high output to indicate the successful re-programming
        STATUS      => open,        -- 2-bit output: DCM_CLKGEN status
        CLKIN       => clk_27MHz,   -- 1-bit input: Input clock
        FREEZEDCM   => '0',         -- 1-bit input: Prevents frequency adjustments to input clock
        PROGCLK     => '0',         -- 1-bit input: Clock input for M/D reconfiguration
        PROGDATA    => '0',         -- 1-bit input: Serial data input for M/D reconfiguration
        PROGEN      => '0',         -- 1-bit input: Active high program enable
        RST         => '0'          -- 1-bit input: Reset input pin
    );

    ODDR2_inst4: ODDR2
    generic map
    (
        DDR_ALIGNMENT   => "NONE",  -- Sets output alignment to "NONE", "C0", "C1"
        INIT            => '0',     -- Sets initial state of the Q output to '0' or '1'
        SRTYPE          => "SYNC"   -- Specifies "SYNC" or "ASYNC" set/reset
    )
    port map
    (
        Q  => clk4,         -- 1-bit output data
        C0 => clk_DCM4p,    -- 1-bit clock input
        C1 => clk_DCM4n,    -- 1-bit clock input
        CE => '1',          -- 1-bit clock enable input
        D0 => '1',          -- 1-bit data input (associated with C0)
        D1 => '0',          -- 1-bit data input (associated with C1)
        R  => '0',          -- 1-bit reset input
        S  => '0'           -- 1-bit set input
    );

    -----------------------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------------------


    PLL_BASE_inst : PLL_BASE
    generic map
    (
        BANDWIDTH => "OPTIMIZED",   -- "HIGH", "LOW" or "OPTIMIZED"
        CLKFBOUT_MULT   => 2,       -- Multiply value for all CLKOUT clock outputs (1-64)
        CLKFBOUT_PHASE  => 0.0,     -- Phase offset in degrees of the clock feedback output (0.0-360.0).
        CLKIN_PERIOD    => 20.0,    -- Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz).
        -- CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for CLKOUT# clock output (1-128)
        CLKOUT0_DIVIDE => 1,
        CLKOUT1_DIVIDE => 1,
        CLKOUT2_DIVIDE => 1,
        CLKOUT3_DIVIDE => 1,
        CLKOUT4_DIVIDE => 1,
        CLKOUT5_DIVIDE => 1,
        -- CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for CLKOUT# clock output (0.01-0.99).
        CLKOUT0_DUTY_CYCLE => 0.5,
        CLKOUT1_DUTY_CYCLE => 0.5,
        CLKOUT2_DUTY_CYCLE => 0.5,
        CLKOUT3_DUTY_CYCLE => 0.5,
        CLKOUT4_DUTY_CYCLE => 0.5,
        CLKOUT5_DUTY_CYCLE => 0.5,
        -- CLKOUT0_PHASE - CLKOUT5_PHASE: Output phase relationship for CLKOUT# clock output (-360.0-360.0).
        CLKOUT0_PHASE => 0.0,
        CLKOUT1_PHASE => 45.0,
        CLKOUT2_PHASE => 90.0,
        CLKOUT3_PHASE => 180.0,
        CLKOUT4_PHASE => 0.0,
        CLKOUT5_PHASE => 0.0,
        CLK_FEEDBACK => "CLKFBOUT",           -- Clock source to drive CLKFBIN ("CLKFBOUT" or "CLKOUT0")
        COMPENSATION => "SYSTEM_SYNCHRONOUS", -- "SYSTEM_SYNCHRONOUS", "SOURCE_SYNCHRONOUS", "EXTERNAL"
        DIVCLK_DIVIDE => 1,                   -- Division value for all output clocks (1-52)
        REF_JITTER => 0.1,                    -- Reference Clock Jitter in UI (0.000-0.999).
        RESET_ON_LOSS_OF_LOCK => FALSE        -- Must be set to FALSE
    )
    port map
    (
        CLKFBOUT    => pll_fb,      -- 1-bit output: PLL_BASE feedback output
        CLKOUT0     => pll_clkout,
        CLKOUT1     => open,
        CLKOUT2     => open,
        CLKOUT3     => open,
        CLKOUT4     => open,
        CLKOUT5     => open,
        LOCKED      => open,        -- 1-bit output: PLL_BASE lock status output
        CLKFBIN     => pll_fb,      -- 1-bit input: Feedback clock input
        CLKIN       => clk_DCM4p,   -- 1-bit input: Clock input
        RST         => '0'          -- 1-bit input: Reset input
    );

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот пример. Клок сначала разгоняется DCM-ом, а затем PLLится.

........

 

Спасибо.

Я сотворил нечто похожее. Единственное что: Я побоялся подключать DCM на PLL и сделал следующее: 20Мгц подал на PLL и для трех клоков 24, 48 и 8Мгц вывел на 3 ODDR2 через BUFG прямой и сдвинутый на 180 градусов клок.

48 и 8 МГц используются далее в автоматах spartan-а. Счастье было недолгим. Получил ругань ERROR:Pack:2531 и ERROR:Pack:2530 на ODDR2 клоков для 48 и 8 Мгц: failed to join the "OLOGIC2" component as required. и failed to join the OLOGIC component as required.

Чего ей опять для счастья не хватает - не понимаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо.

Я сотворил нечто похожее. Единственное что: Я побоялся подключать DCM на PLL и сделал следующее: 20Мгц подал на PLL и для трех клоков 24, 48 и 8Мгц вывел на 3 ODDR2 через BUFG прямой и сдвинутый на 180 градусов клок.

48 и 8 МГц используются далее в автоматах spartan-а. Счастье было недолгим. Получил ругань ERROR:Pack:2531 и ERROR:Pack:2530 на ODDR2 клоков для 48 и 8 Мгц: failed to join the "OLOGIC2" component as required. и failed to join the OLOGIC component as required.

Чего ей опять для счастья не хватает - не понимаю.

Приведите кусок кода где вы вставляете ODDR2 а также полностью сообщения об ошибках (это делается очень легко - погуглите на тему copy & paste ).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приведите кусок кода где вы вставляете ODDR2 а также полностью сообщения об ошибках (это делается очень легко - погуглите на тему copy & paste ).

 

Спасибо.

1. Я конечно гулил ошибку перед тем как сунуться сюда. К сожалению....

2. тут

 

 

 

-------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

library UNISIM;
use UNISIM.VCOMPONENTS.ALL;

ENTITY DCM_Block IS
   PORT(
           -- input clocks
           SYSCLK20M       : IN  std_logic;    -- input 20MHz clock

           -- output clocks
           Clk48M          : OUT std_logic;    -- 48MHz output system and dsp clock
           Clk24M          : OUT std_logic;    -- 24MHz output holt clock
           Clk08M          : OUT std_logic;    -- 08MHz output system clock

           Inp48MLatch     : IN  std_logic;
           Out48MLatch     : OUT std_logic;

           Inp08MLatch     : IN  std_logic;
           Out08MLatch     : OUT std_logic);

END DCM_Block;

ARCHITECTURE DCM_Block_Arch OF DCM_Block IS

-- clock buffer prototype - recommended
COMPONENT BUFG
   PORT(
       I               : IN  std_logic;
       O               : OUT std_logic );
END COMPONENT;

-- ODDR2 component

COMPONENT ODDR2
   GENERIC(
       DDR_ALIGNMENT : string := "NONE";
       INIT          : bit    := '0';
       SRTYPE        : string := "SYNC" );
   PORT(
       Q           : out std_ulogic;
       C0          : in  std_ulogic;
       C1          : in  std_ulogic;
       CE          : in  std_ulogic := 'H';
       D0          : in  std_ulogic;
       D1          : in  std_ulogic;
       R           : in  std_ulogic := 'L';
       S           : in  std_ulogic := 'L' );
END COMPONENT;


-- PLL COMPONENT

COMPONENT PLL_BASE
   GENERIC(
       BANDWIDTH : string := "OPTIMIZED";
       CLKFBOUT_MULT : integer := 24;
       CLKFBOUT_PHASE : real := 0.0;
       CLKIN_PERIOD : real := 50.000000;

       CLKOUT0_DIVIDE : integer := 10;
       CLKOUT0_DUTY_CYCLE : real := 0.5;
       CLKOUT0_PHASE : real := 90.0;
       CLKOUT1_DIVIDE : integer := 10;
       CLKOUT1_DUTY_CYCLE : real := 0.5;
       CLKOUT1_PHASE : real := 270.0;

       CLKOUT2_DIVIDE : integer := 20;
       CLKOUT2_DUTY_CYCLE : real := 0.5;
       CLKOUT2_PHASE : real := 90.0;
       CLKOUT3_DIVIDE : integer := 20;
       CLKOUT3_DUTY_CYCLE : real := 0.5;
       CLKOUT3_PHASE : real := 270.0;

       CLKOUT4_DIVIDE : integer := 60;
       CLKOUT4_DUTY_CYCLE : real := 0.5;
       CLKOUT4_PHASE : real := 90.0;
       CLKOUT5_DIVIDE : integer := 60;
       CLKOUT5_DUTY_CYCLE : real := 0.5;
       CLKOUT5_PHASE : real := 270.0;

       CLK_FEEDBACK : string := "CLKFBOUT";
       COMPENSATION : string := "SYSTEM_SYNCHRONOUS";
       DIVCLK_DIVIDE : integer := 1;
       REF_JITTER : real := 0.100;
       RESET_ON_LOSS_OF_LOCK : boolean := FALSE );
   PORT(
       CLKFBOUT : out std_ulogic;
       CLKOUT0 : out std_ulogic;
       CLKOUT1 : out std_ulogic;
       CLKOUT2 : out std_ulogic;
       CLKOUT3 : out std_ulogic;
       CLKOUT4 : out std_ulogic;
       CLKOUT5 : out std_ulogic;
       LOCKED : out std_ulogic;
       CLKFBIN : in std_ulogic;
       CLKIN : in std_ulogic;
       RST : in std_ulogic );
END COMPONENT;

-- to avaod waring
attribute box_type of PLL_BASE  : component is "black_box";
attribute box_type of BUFG      : component is "black_box";
attribute box_type of ODDR2     : component is "black_box";

-- Signal Declarations:
signal  Reset_PLL   : std_logic;    -- DCM reset

-- FSM

-- Watchdog signals
constant DcmReset               : integer := 7;

-- clock generation signals
signal PllFeedBack  : std_logic;    -- pll lock signal
signal PllLocked    : std_logic;    -- pll lock signal

signal SYSCLK20M_B  : std_logic;    -- pll lock signal

signal PLL_48_Dir   : std_logic;    -- from pll to bufg
signal PLL_48_Inv   : std_logic;    -- from pll to bufg
signal BUFG_48_Dir  : std_logic;    -- from bufg to oddr2
signal BUFG_48_Inv  : std_logic;    -- from bufg to oddr2
signal Clk48Out     : std_logic;    -- output 48MHz;

signal PLL_24_Dir   : std_logic;    -- from pll to bufg
signal PLL_24_Inv   : std_logic;    -- from pll to bufg
signal BUFG_24_Dir  : std_logic;    -- from bufg to oddr2
signal BUFG_24_Inv  : std_logic;    -- from bufg to oddr2
signal Clk24Out     : std_logic;    -- output 24MHz;

signal PLL_08_Dir   : std_logic;    -- from pll to bufg
signal PLL_08_Inv   : std_logic;    -- from pll to bufg
signal BUFG_08_Dir  : std_logic;    -- from bufg to oddr2
signal BUFG_08_Inv  : std_logic;    -- from bufg to oddr2
signal Clk08Out     : std_logic;    -- output 24MHz;

BEGIN
   -- generating DCM reset signal
   PLL_Reset : PROCESS( SYSCLK20M )
   variable ResetClockCnt      : integer range 0 to DcmReset := 0;
   BEGIN
       IF SYSCLK20M'event and SYSCLK20M = '1' THEN
           IF ResetClockCnt < DcmReset THEN
               Reset_PLL <= '1';
               ResetClockCnt := ResetClockCnt + 1;
           ELSE
               Reset_PLL <= '0';
           END IF;
       END IF; -- ClkInp'event
   END PROCESS PLL_Reset;

   SYSCLK_BUFG : BUFG
   PORT MAP (
       I => SYSCLK20M,
       O => SYSCLK20M_B );

   -- Clock Generator
   U_PLL_BASE : PLL_BASE
   PORT MAP(
       CLKFBOUT => PllFeedBack,
       CLKOUT0 => PLL_48_Dir,
       CLKOUT1 => PLL_48_Inv,
       CLKOUT2 => PLL_24_Dir,
       CLKOUT3 => PLL_24_Inv,
       CLKOUT4 => PLL_08_Dir,
       CLKOUT5 => PLL_08_Inv,
       LOCKED => PllLocked,
       CLKFBIN => PllFeedBack,
       CLKIN => SYSCLK20M_B,
       RST => Reset_PLL);

   -- 48 MHz clock
   CLK48M_DIR_CLKBUF : BUFG
   PORT MAP (
       I => PLL_48_Dir,
       O => BUFG_48_Dir );

   CLK48M_INV_CLKBUF : BUFG
   PORT MAP (
       I => PLL_48_Inv,
       O => BUFG_48_Inv );

   CLK48_ODDR2 : ODDR2
   PORT MAP(
       Q => Clk48Out,
       C0 => BUFG_48_Dir,
       C1 => BUFG_48_Inv,
       D0 => '1',
       D1 => '0',
       S => '0',
       R => '0',
       CE => '1');

   Clk48M <= Clk48Out;

   -- 24 MHz clock
   CLK24M_DIR_CLKBUF : BUFG
   PORT MAP (
       I => PLL_24_Dir,
       O => BUFG_24_Dir );

   CLK24M_INV_CLKBUF : BUFG
   PORT MAP (
       I => PLL_24_Inv,
       O => BUFG_24_Inv );

   CLK24_ODDR2 : ODDR2
   PORT MAP(
       Q => Clk24Out,
       C0 => BUFG_24_Dir,
       C1 => BUFG_24_Inv,
       D0 => '1',
       D1 => '0',
       S => '0',
       R => '0',
       CE => '1');

   Clk24M <= Clk24Out;

   -- 8 MHz clock
   CLK08M_DIR_CLKBUF : BUFG
   PORT MAP (
       I => PLL_08_Dir,
       O => BUFG_08_Dir );

   CLK08M_INV_CLKBUF : BUFG
   PORT MAP (
       I => PLL_08_Inv,
       O => BUFG_08_Inv );

   CLK08_ODDR2 : ODDR2
   PORT MAP(
       Q => Clk08Out,
       C0 => BUFG_08_Dir,
       C1 => BUFG_08_Inv,
       D0 => '1',
       D1 => '0',
       S => '0',
       R => '0',
       CE => '1');

   Clk08M <= Clk08Out;


   LATCH08PRC : PROCESS(Clk08Out)
   BEGIN
       IF Clk08Out'event and Clk08Out = '1' THEN
           Out08MLatch <= Inp08MLatch;
       END IF;
   END PROCESS LATCH08PRC;


   LATCH48PRC : PROCESS(Clk48Out)
   BEGIN
       IF Clk48Out'event and Clk48Out = '1' THEN
           Out48MLatch <= Inp48MLatch;
       END IF;
   END PROCESS LATCH48PRC;


END DCM_Block_Arch;

3. Результат

ERROR:Pack:2531 - The dual data rate register "CLK08_ODDR2" failed to join the
  "OLOGIC2" component as required.  The output signal for register symbol
  CLK08_ODDR2 requires general routing to fabric, but the register can only be
  routed to ILOGIC, IODELAY, and IOB.
ERROR:Pack:2531 - The dual data rate register "CLK48_ODDR2" failed to join the
  "OLOGIC2" component as required.  The output signal for register symbol
  CLK48_ODDR2 requires general routing to fabric, but the register can only be
  routed to ILOGIC, IODELAY, and IOB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я побоялся подключать DCM на PLL и сделал следующее

Вполне официальная комбинация - не надо боятся. В некоторых случаях - единственная возможная, т.к. на вход DCM можно подать сигнал из "просто логики", а на вход PLL - нет.

А изначальное сообщение

RROR:Place:1205 - This design contains a global buffer instance, <DSP_CLKBUF>, driving the net, <Clk48MOut_OBUF>, that is driving the following...

говорит что вы пробуете использовать клок в не-клоковых цепях (например вывести на IO). Так нельзя.

И наоборот - выход ODDR нельзя завести обратно в FPGA - только на IO pin.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вполне официальная комбинация - не надо боятся. В некоторых случаях - единственная возможная, т.к. на вход DCM можно подать сигнал из "просто логики", а на вход PLL - нет.

Я испугался возможного джиттера. Быть может напрасно, но просто перестраховка.

 

А изначальное сообщение

говорит что вы пробуете использовать клок в не-клоковых цепях (например вывести на IO). Так нельзя.

И наоборот - выход ODDR нельзя завести обратно в FPGA - только на IO pin.

Стоп. Изначально стояла Следующая задача: есть входной клок 8 или 20 МГц. Внутри FPGA я делаю клоки частотой 8, 24 и 48МГц. 24 и 48 МГц торчат наружу. В свою очередь

те-же 48 и 8Мгц используются для клоков внутри FPGA. Правильно ли я понимаю, что для вывода клока наружу необходимо использовать ODDR2, а для внутреннего клока - брать

его от PLL через BUFG?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я испугался возможного джиттера. Быть может напрасно, но просто перестраховка.

 

 

Стоп. Изначально стояла Следующая задача: есть входной клок 8 или 20 МГц. Внутри FPGA я делаю клоки частотой 8, 24 и 48МГц. 24 и 48 МГц торчат наружу. В свою очередь

те-же 48 и 8Мгц используются для клоков внутри FPGA. Правильно ли я понимаю, что для вывода клока наружу необходимо использовать ODDR2, а для внутреннего клока - брать

его от PLL через BUFG?

У вас есть клок BUFG_48_Dir - его можно использовать для тактирования разного рода счётчиков, регистров и т.д. Клок с выхода Q ODDR2 можно подать только на IO элементы типа OLOGIC и OBUF.

Инверсный клок можно не делать на PLL отдельно - примитив ODDR2 имеет встроенные отключабельные инверторы по клоковым входам. Просто назначаете на ногу C1 инверсию клока - синтезатор и маппер сами разберутся как это трактовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я испугался возможного джиттера. Быть может напрасно, но просто перестраховка.

PLL его как раз немного и отфильтрует но честно говоря в S6 PLL так себе. Например для 20Msps DAC уже не то. Но для чисто цифровых схем - вполне хватает.

 

Стоп. Изначально стояла Следующая задача: есть входной клок 8 или 20 МГц. Внутри FPGA я делаю клоки частотой 8, 24 и 48МГц. 24 и 48 МГц торчат наружу. В свою очередь

те-же 48 и 8Мгц используются для клоков внутри FPGA. Правильно ли я понимаю, что для вывода клока наружу необходимо использовать ODDR2, а для внутреннего клока - брать его от PLL через BUFG?

           +-> логика
PLL->BUFG->|
           +-> ODDR2->pin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

HELP!

Ситуация такая. Имеется Spartan 6 45t в корпусе 484. На него заходит 100 МГц LVDS с хорошего кварцевого осциллятора. Загоняю это дело на PLL, получаю с него частоты 800 МГц (IOCLK для serdes), 160 МГц и 80 МГц (фаза 0 и фаза 180). Из этих двух 80 МГц при помощи ODDR2 и OBUFDS получаю выходной LVDS сигнал 80 МГц. Казалось бы, всё просто, как мычание. Однако, обнаружил пренеприятнейшее явление - при включении питания эта зараза не всегда запускается! Примерно 1 раз из 10 генерации на выходных ножках нет. Однако, если я изменяю проект - вывожу с PLL сигнал LOCKED на IOB пин, к которому подключен транзистор со светодиодом, чтобы визуально проконтролировать, эта сволочь запускается всегда! Т.е. отличие только в том, вывожу ли я LOCKED на пин или нет. Очевидно, дело вообще не в этом, а просто проект иначе раскладывается, но поведение удивительное. Подскажите, пожалуйста, на что обратить внимание, чтобы разобраться в проблеме?

В UCF прописаны тайминги на входной клок 100 МГц (период 10 нс 50%), остальное ISE 14.7 само понимает из параметров конфигурации PLL. All constraints, само собой, met.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...