Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос новичка по ПЛИСам
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
D-Luxe
Меня интересует следующий вопрос: допустим описываешь простейшую схему, которая входит в состав большого проекта.
Ниже примерчик.
Код
process(clk)
begin
if ( clk'event and clk='1' ) then
y <= a + b;
z <= c + d;
e <= y + z;
end if;
end process;


Допустим после трассировки y находится в одной части кристалла, а z и e в другой части кристалла. Возможна ли такая ситуация, что y подается на сложение с z со значительной задержкой, в итоге в e защелкивается неправильное значение.

Если такая ситуация возможно то как с этим бороться?

Пример возможно довольно грубый, но надеюсь проблема понятна (проблема которая возникает в синхронной схеме из-за задержек после трассировки).
yuri_d
Нужно описывать задержки распространения сигнала. Поищите в гугле constraints guide.
D-Luxe
Цитата(yuri_d @ Jun 15 2011, 21:51) *
Нужно описывать задержки распространения сигнала. Поищите в гугле constrain guide.

Хотите сказать что эта проблема решается написанием констрейна на clk ?
yuri_d
Да, для Вашего примера будет достаточно констрейна на clk. Но это в итоге покроет только пути y -> e и z -> e. Сумматоры a+b и c+d остаются не покрытыми, так как неизвестно происхождение a, b, c и d.
bogaev_roman
Цитата
Допустим после трассировки y находится в одной части кристалла, а z и e в другой части кристалла. Возможна ли такая ситуация, что y подается на сложение с z со значительной задержкой, в итоге в e защелкивается неправильное значение

Вобще ситуация вполне возможна при большой загрузке кристалла и большой разрядности сумматоров. При задании тактовой частоты Вы сможете определить максимальную тактовую частоту register-to-register.
Если a b c d есть выходы регистра или триггера той же тактовой частоты, то задание тактовой частоты clk будет достаточным для определения максимальной тактовой частоты.
Если выходы a b c d выходные триггеры другой тактовой частоты, то требуется задать соотношения этих тактовых частот и создать схему синхронизации перехода из одного клокового домена в другой.
Если это вообще неизвестные входные сигналы, то требуется задать ограничения и соотношения по входам, но обычно в любом случае их каким то образом записывают в регистры через приемную логику.
nckkm
Цитата(D-Luxe @ Jun 15 2011, 21:45) *
Меня интересует следующий вопрос: допустим описываешь простейшую схему, которая входит в состав большого проекта.
Ниже примерчик.
Код
process(clk)
begin
if ( clk'event and clk='1' ) then
y <= a + b;
z <= c + d;
e <= y + z;
end if;
end process;


Допустим после трассировки y находится в одной части кристалла, а z и e в другой части кристалла. Возможна ли такая ситуация, что y подается на сложение с z со значительной задержкой, в итоге в e защелкивается неправильное значение.

Если такая ситуация возможно то как с этим бороться?

Пример возможно довольно грубый, но надеюсь проблема понятна (проблема которая возникает в синхронной схеме из-за задержек после трассировки).


у меня 3 встречных вопроса:
1) делали вы функциональную симуляцию проекта или модуля? все ли там впорядке?
2) насколько чип заполнен? если заполнение небольшое, скажем 30%, то врядли это проблема задержек
3) какова рабочая частота и какие разрядности сумматоров? на небольших частотах, скажем 10-20Мгц врядли проблема с задержками распространения, если разрядности сумматоров небольшие, скажем 8-16 бит, то вряд ли это проблема задержек распространения
D-Luxe
Цитата(nckkm @ Jun 22 2011, 10:37) *
у меня 3 встречных вопроса:
1) делали вы функциональную симуляцию проекта или модуля? все ли там впорядке?
2) насколько чип заполнен? если заполнение небольшое, скажем 30%, то врядли это проблема задержек
3) какова рабочая частота и какие разрядности сумматоров? на небольших частотах, скажем 10-20Мгц врядли проблема с задержками распространения, если разрядности сумматоров небольшие, скажем 8-16 бит, то вряд ли это проблема задержек распространения

Я чисто гипотетически спрашиваю, возможна ли такая проблема. На практике пока не сталкивался с такой ситуацией.
artix
Цитата(bogaev_roman @ Jun 16 2011, 12:54) *
....Если выходы a b c d выходные триггеры другой тактовой частоты, то требуется задать соотношения этих тактовых частот и создать схему синхронизации перехода из одного клокового домена в другой.....


извиняюсь если офтоп но не хотелось плодить новую тему раз уж в этой зацепили этот вопрос. laughing.gif а как правильно обконстрейнить кросклоковую передачу сигнала между двумя клоковыми доменами в xilinx, схема синхронизации стандартная на базе тригеров. Заранее благодарен
Shtirlits
На границе нужно сделать лишь две вещи, на примере fifo питаемого зависимыми клоками:

1) обеспечить минимальную длину связей (MAXDELAY)
NET "*BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc(*)" MAXDELAY = 450 ps;
NET "*BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc(*)" MAXDELAY = 450 ps;

2) попросить анализатор игнорировать нарушения setup и hold, так как они неизбежны (TIG)
NET "*BU2/U0/grf.rf/gcx.clkx/wr_pntr_gc(*)" TIG;
NET "*BU2/U0/grf.rf/gcx.clkx/rd_pntr_gc(*)" TIG;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.