billidean 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Добрый день всем. На вход ПЛИС поступает некая тактовая по ЛВДС: 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 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Необходимо использовать реконфигурируемую pll для таких дел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Добрый день всем. Большая просьба, подскажите нормальную литературу по времнному анализу ТаймКвест для ОЧЕНЬ начинающих, где можно постичь тонкости описания таких сложных ситуаций. Заранее признателен за помощь. например Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 26 ноября, 2016 Опубликовано 26 ноября, 2016 · Жалоба Спасибо Maverick за ссылку. Пробежался по статье, пока нет времени плотно поразбираться, но на первый взгляд статья подробная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться