Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите с ТаймКвестом
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
billidean
Добрый день всем.

На вход ПЛИС поступает некая тактовая по ЛВДС:
Код
PORT MAP (
    i         => comp_in_p,
    ibar     => comp_in_n,
    o         => cry_lane_clk
    );

Эта тактовая поступает в модуль переопределения рабочих частот:
Код
PORT MAP    (
    -- clock area
    lane_clk_in        => cry_lane_clk,
    lane_clk_out    => cry_lane_clk_selected,
    gen_clk            => quartz_clk,
    lane_div_out    => lane_div,
    ...
    );

Далее, что происходит в этом модуле:
1.
Код
lane_clk_out    <= lane_clk_inner;
    lane_div_out    <= lane_div_clk_p;


2.
Код
lane_clk_inner    <=    pll_160_lane_clk    WHEN command_osc_oe = '1' ELSE
                    lane_clk_in            WHEN pll2_status_locked = '1' ELSE
                    pll_160_lane_clk    WHEN pll_160_status_locked = '1' ELSE
                    '0';

т.е. исходя из условий, тактовая lane_clk_inner может быть pll_160_lane_clk или lane_clk_in или 0.

3. этот модуль содержит 2 ФАПЧа:
Код
gen_pll_lane : gen_pll2
    PORT MAP    (
        inclk0        => lane_clk_in,            -- 160
        c0            => pll2_sdi_clk,        -- 300
        c1            => pll2_serial_clkh,    -- 20
        c2            => pll2_core_clk,        -- 100
        c3            => pll2_serial_clkl,    -- 3
        locked        => pll2_status_locked
        );

gen_pll_160_quartz : gen_pll_160
    PORT map
    (
        inclk0        => gen_clk,                -- 80
        c0            => pll_160_lane_clk,    -- 160
        locked        => pll_160_status_locked
    );

исходя из состояний этих ФАПЧей и происходит выбор тактовой, которая коммутируется на сигнал lane_clk_inner.

4. Также в этом модуле есть деление этой тактовой lane_clk_inner на 10, этот сигнал называется lane_div_clk_p.

В SDC-файле описал следующее:
1. create_clock -period 6.25 -name comp_in_p [ get_ports comp_in_p ]
т.е. описал входную тактовую comp_in_p (160 МГц)
2. create_clock -period 12.50 -name quartz_clk [ get_ports quartz_clk ]
т.е. описал входную тактовую quartz_clk (80 МГц)
3. create_clock -name {altera_reserved_tck} -period 33.333 -waveform { 0.000 16.666 } [get_ports {altera_reserved_tck}]
derive_pll_clocks
derive_clock_uncertainty
set_clock_groups -asynchronous \
-group {altera_reserved_tck} \
-group {comp_in_p} \
-group {quartz_clk}

т.е. указал асинхронные группы без их взаимного анализа.
altera_reserved_tck - из-за использования СигналТапа.

Проект компилится без замечаний ТаймКвеста, т.е. типа все норм.

И вот здесь начинается...
Вроде проект заработал, можно тестировать...
НО!... немного изменишь проект, добавишь отладочные сигналы или изменишь наполнение СигналТапа (уберешь пару сигналов из захвата)...
и все, проект перестает полноценно работать.

При подробном анализе ТаймКвеста увидел не описанную тактовую lane_div_clk_p, т.е.
которая lane_clk_inner/10.

В-общем по разному пытался её описать, но ничего не получается, постоянно появляется варнинг:
"Node: gen_logic:gen_logic_unit|lane_div_clk_p was determined to be a clock but was found without an associated clock assignment."


Думаю, что сначала надо описать тактовую lane_clk_inner, но не знаю как, т.к. она является мультиплексированной,
после этого уже описывать lane_div_clk_p.


Большая просьба, подскажите нормальную литературу по времнному анализу ТаймКвест для ОЧЕНЬ начинающих,
где можно постичь тонкости описания таких сложных ситуаций.

Можно даже попытаться объяснить прямо здесь.

Заранее признателен за помощь.




warrior-2001
Необходимо использовать реконфигурируемую pll для таких дел.
Maverick
Цитата(billidean @ Nov 22 2016, 06:23) *
Добрый день всем.

Большая просьба, подскажите нормальную литературу по времнному анализу ТаймКвест для ОЧЕНЬ начинающих,
где можно постичь тонкости описания таких сложных ситуаций.

Заранее признателен за помощь.

например
billidean
Спасибо Maverick за ссылку.
Пробежался по статье, пока нет времени плотно поразбираться, но на первый взгляд статья подробная.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.