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

ПЛИС 5576ХС1Т применение...

10 hours ago, iosifk said:

Пример Ксайлинкса..


Выставляется асинхронно, снимается под клоки данного региона. И в каждом регионе клоков вставляется вот такой модуль.


  always @(posedge clk_dst or posedge rst_in)
  begin
    if (rst_in)
    begin
      rst_meta <= 1'b1;
      rst_dst  <= 1'b1;
    end
    else // if !rst_dst
    begin
      rst_meta <= 1'b0;
      rst_dst  <= rst_meta;
    end // if rst
  end // always

endmodule


 

1. По коду: за счёт неблокирующего присваивания сигнал сброса снимется лишь на втором posedge clk_dst? (смущает коммент else // if !rst_dst)

2. По сути: получается для борьбы с метастабильностью нужно в каждом тактовом домене пробросить сигнал DEV_CLRn через синхронизатор, при этом смысл выделенного входа теряется (подойдёт любой другой), правильно понимаю?

Изменено пользователем prostoRoman

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


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

15 hours ago, alexadmin said:

btw, я старался никогда об этом не думать чтобы не нарушать целостной картины мира, но все же - а как они снимают этот ресет чтобы не ввергать триггеры в метастабильность (с учетом асинхронного внешнего сброса и произвольного набора тактовых сигналов). Речь не про flex, а про fpga в целом.

Если говорить про ФПГА в целом, то асинхронный сброс только условно является асинхронным. Физически сгенерирован он должен быть в синхронном клоковом домене и обязательно проверяется в Тайминг Анализе. Просто момент его срабатывания настаёт не при следующем высходящем фронте, а в текущем асинхронно. Но если есть слаки в цепи этого сигнала, он с тем же успехом может вызвать метастабильности. В общем и снятие его происходит по тем же правилам

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


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

12 hours ago, iosifk said:

Пример Ксайлинкса..


Выставляется асинхронно, снимается под клоки данного региона. И в каждом регионе клоков вставляется вот такой модуль.


//-----------------------------------------------------------------------------
//  
//  Copyright (c) 2008 Xilinx Inc.
//
//  Project  : Programmable Wave Generator
//  Module   : reset_bridge.v

 

 

Ok. Но ведь в регионе может быть не один, а два и более клоков. А какие-то устройства, емнип, позволяли заводить клоки прямо из логики в рамках каждой логической ячейки. Не будут же вставлять цепочку синхронизаторов на каждый пользовательский триггер...

Но даже в такой простой картине мира еще ведь нужно обеспечить одновременное снятие для разных регионов, работающих от одного физического клока.

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


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

2 часа назад, prostoRoman сказал:

1. По коду: за счёт неблокирующего присваивания сигнал сброса снимется лишь на втором posedge clk_dst? (смущает коммент else // if !rst_dst)

2. По сути: получается для борьбы с метастабильностью нужно в каждом тактовом домене пробросить сигнал DEV_CLRn через синхронизатор, при этом смысл выделенного входа теряется (подойдёт любой другой), правильно понимаю?

Да,  снимется на втором. Но ведь именно так и надо пропускать асинхронные сигналы через 2 триггера для синхронизации с тактовой. И если есть несколько клоковых доменов то Ксайлинкс в примере к ISE сделал такой модуль в каждом домене. А то, что сброс не будет сниматься "одновременно", то это так и должно быть. Ведь каждый домен работает независимо от других клоков...

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


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

Just now, iosifk said:

Да,  снимется на втором. Но ведь именно так и надо пропускать асинхронные сигналы через 2 триггера для синхронизации с тактовой.

Я не спорю с синхронизацией) Меня лишь интересовало как использовать те или иные специальные возможности. Для этого нужно знать как они работают, желательно знать и возможные подводные камни.

На примере того же DEV_CLRn: если он чисто аппаратный и без вариантов сбрасывает триггеры (из описания вроде так), тогда 1. никакого дополнительного учёта ф-ции сброса в коде не требуется by design; 2. остаётся (?) проблема метастабильности.

Если DEV_CLRn использовать как Вы привели пример, то в чём тогда физический смысл отдельной функции DEV_CLRn? Это ещё один глобальный вход, использование которого нужно описывать в коде (что противоречит докам)?

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


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

37 minutes ago, alexadmin said:

Но даже в такой простой картине мира еще ведь нужно обеспечить одновременное снятие для разных регионов, работающих от одного физического клока.

в чем проблема то? подавать тактовую, только после снятия асинхронного сброса, выдержав гарантированное время. Тактовые буфера модернизировать чуток и все.

Just now, prostoRoman said:

Я не спорю с синхронизацией) Меня лишь интересовало как использовать те или иные специальные возможности. Для этого нужно знать как они работают, желательно знать и возможные подводные камни.

С первого вашего вопроса, меня не покидает одна мысль. Этот чип клон FLEX10k, в чем проблема найти подробные доки на него и изучить? Доки в сети доступны, не смотря на то, что чипу порядка 25 лет.

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


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

4 minutes ago, des00 said:

С первого вашего вопроса, меня не покидает одна мысль. Этот чип клон FLEX10k, в чем проблема найти подробные доки на него и изучить? Доки в сети доступны, не смотря на то, что чипу порядка 25 лет.

Да смотрю dsf10k.pdf - и по-всему получается, что есть некий "Chip-Wide Reset", который асинхронно сбрасывает (или устанавливает, есть и такая опция) триггеры (с выводными - чуть сложнее). А вот как и когда формируется этот "Chip-Wide Reset" - не найду пока))

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


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

5 минут назад, prostoRoman сказал:

Я не спорю с синхронизацией) Меня лишь интересовало как использовать те или иные специальные возможности. Для этого нужно знать как они работают, желательно знать и возможные подводные камни.

На примере того же DEV_CLRn: если он чисто аппаратный и без вариантов сбрасывает триггеры (из описания вроде так), тогда 1. никакого дополнительного учёта ф-ции сброса в коде не требуется by design; 2. остаётся (?) проблема метастабильности.

Если DEV_CLRn использовать как Вы привели пример, то в чём тогда физический смысл отдельной функции DEV_CLRn? Это ещё один глобальный вход, использование которого нужно описывать в коде (что противоречит докам)?

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

А вот в больших Актелах функция привязки сброса к клокам вообще сделана аппаратно для каждого региона кристалла.

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


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

8 minutes ago, des00 said:

в чем проблема то? подавать тактовую, только после снятия асинхронного сброса, выдержав гарантированное время. Тактовые буфера модернизировать чуток и все.

Тактовый, как я понимаю, архитектурно правильно заводить на CLOCKx, имеющий спец.разводку по кристаллу. Тогда как его синхронизировать? Если нет двух последовательных триггеров на входе этого сигнала, тогда опять проблема))

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


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

2 minutes ago, prostoRoman said:

Тогда как его синхронизировать?

так ведь все остальное (ну, многое...) от него синхронизируется 

Квартус от него будет рассчитывать задержки

Изменено пользователем Yuri124

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


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

2 минуты назад, prostoRoman сказал:

Тактовый, как я понимаю, архитектурно правильно заводить на CLOCKx, имеющий спец.разводку по кристаллу. Тогда как его синхронизировать? Если нет двух последовательных триггеров на входе этого сигнала, тогда опять проблема))

А зачем "синхронизировать" сигнал от которого и так все должны синхронизироваться?

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


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

6 minutes ago, prostoRoman said:

Да смотрю dsf10k.pdf - и по-всему получается, что есть некий "Chip-Wide Reset", который асинхронно сбрасывает (или устанавливает, есть и такая опция) триггеры (с выводными - чуть сложнее). А вот как и когда формируется этот "Chip-Wide Reset" - не найду пока))

страница 22.

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


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

1 minute ago, Yuri124 said:

так ведь все остальное (ну, многое...) от него синхронизируется 

Квартус от него будет рассчитывать задержки

 

Вы не внимательно читали. Имелось в виду другое - синхронизация тактового сигнала с задним фронтом сигнала сброса DEV_CLRn (чтобы выполнялась времянка и не было метастабильности).

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


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

19 minutes ago, prostoRoman said:

Тактовый, как я понимаю, архитектурно правильно заводить на CLOCKx, имеющий спец.разводку по кристаллу. Тогда как его синхронизировать? Если нет двух последовательных триггеров на входе этого сигнала, тогда опять проблема))

ну что вы включили человека со сломаной логикой здравого смысла, возьмите документацию на Flex10к, ручку и бумагу, соберите в кучу все что написано в документации и включите логику здравого смысла. Сразу все встанет на место. Речь про конкретную фичу, конкретной плис. А понесло всех в сторону синхронизаторов сброса и Clock Domain Crossing (CDC)

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


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

Just now, prostoRoman said:

Вы не внимательно читали

Судя по ответам - это Вы неправильно сформулировали мысль )))

Добавьте синхронизаторы сброса, привязанные к этому глобальному клоку.

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


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

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

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

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

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

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

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

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

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

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