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

Вопрос новичка по ПЛИСам

Меня интересует следующий вопрос: допустим описываешь простейшую схему, которая входит в состав большого проекта.

Ниже примерчик.

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 защелкивается неправильное значение.

 

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

 

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

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


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

Нужно описывать задержки распространения сигнала. Поищите в гугле constraints guide.

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


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

Нужно описывать задержки распространения сигнала. Поищите в гугле constrain guide.

Хотите сказать что эта проблема решается написанием констрейна на clk ?

 

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


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

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

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


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

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

Вобще ситуация вполне возможна при большой загрузке кристалла и большой разрядности сумматоров. При задании тактовой частоты Вы сможете определить максимальную тактовую частоту register-to-register.

Если a b c d есть выходы регистра или триггера той же тактовой частоты, то задание тактовой частоты clk будет достаточным для определения максимальной тактовой частоты.

Если выходы a b c d выходные триггеры другой тактовой частоты, то требуется задать соотношения этих тактовых частот и создать схему синхронизации перехода из одного клокового домена в другой.

Если это вообще неизвестные входные сигналы, то требуется задать ограничения и соотношения по входам, но обычно в любом случае их каким то образом записывают в регистры через приемную логику.

 

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


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

Меня интересует следующий вопрос: допустим описываешь простейшую схему, которая входит в состав большого проекта.

Ниже примерчик.

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 бит, то вряд ли это проблема задержек распространения

 

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


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

у меня 3 встречных вопроса:

1) делали вы функциональную симуляцию проекта или модуля? все ли там впорядке?

2) насколько чип заполнен? если заполнение небольшое, скажем 30%, то врядли это проблема задержек

3) какова рабочая частота и какие разрядности сумматоров? на небольших частотах, скажем 10-20Мгц врядли проблема с задержками распространения, если разрядности сумматоров небольшие, скажем 8-16 бит, то вряд ли это проблема задержек распространения

Я чисто гипотетически спрашиваю, возможна ли такая проблема. На практике пока не сталкивался с такой ситуацией.

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


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

....Если выходы a b c d выходные триггеры другой тактовой частоты, то требуется задать соотношения этих тактовых частот и создать схему синхронизации перехода из одного клокового домена в другой.....

 

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

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


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

На границе нужно сделать лишь две вещи, на примере 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;

 

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


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

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

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

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

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

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

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

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

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

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