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

Асинхронный сброс

Здравствуйте. Мой вопрос в том, можно ли безопасно в смысле синхронизации использовать следующую конструкцию.
Триггер reg0 тактируется сигналом negedge signal а сбрасывается сигналом negedge clk, который физически заведен на его вход reset. Сигнал negedge signal приходит до сигнала negedge clk, за время t2, как показано на фото, поэтому здесь не должно быть проблем с синхронизацией. Но вопрос можно ли тактировать регистр out во втором блоке always, по тому же спаду clk при котором сброситься регистр reg0, при том что там есть условие if(reg0)? Короче говоря можно использовать сигнал clk как сброс в одном триггере и как тактирование во втором, если они связанны?

reg reg0;
reg out;

always@(negedge signal or negedge clk )
if(!clk)
    reg0 <= 0;
else 
    reg0 <= 1;

always@(negedge clk)
    if(reg0)
        out <= 1;
    
И еще один вопрос. В литературе говориться что при асинхронном сбросе существует вероятность перехода триггера в метастабильное состояние при сигнал сброса близко к тактовому сигналу. Но зависит ли  вероятность метастабильного состояния от данных которые приходят на триггер? Грубо говоря, если выход триггера все время находиться в "0" (как описывает код ниже),  может ли он войти в метастабильное состояние при асинхронном сбросе rst, и следовательно получить на своем выходе "1" с определенной вероятностью после того как метастабильное состояние рассосется ?

reg reg1;

always@(posedge clk or posedge rst)
if(rst)
    reg1 <= 0;
else 
    reg1 <= 0;

 

Заранее спасибо.

snimok.png

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


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

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

Здесь смотрели?: https://kit-e.ru/kratkij-kurs-hdl-chast-10/

Ознакомился, но ответа для конкретно этих случаев не нашёл 

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


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

4 часа назад, dima6656 сказал:

сигнал clk как сброс в одном триггере и как тактирование во втором

Нельзя. Есть простые правила при работе с FPGA. Сигнал clk подается на глобальный клоковый вход FPGA . Работать только по одному фронту клока (нет необходимости работать по разным фронтам при наличии на борту pll). Есть рекомендованные схемы для перехода из одного клокового домена в другой (если надо)

Что касается метастабильности асинхронного сброса, ките все сказано (взято отсюда Microsoft Word - CummingsSNUG2002SJ_Resets_rev1_1.doc (sunburst-design.com)

 

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


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

11 часов назад, dima6656 сказал:

Здравствуйте. Мой вопрос в том, можно ли безопасно в смысле синхронизации использовать следующую конструкцию.

Тут получается так что в один момент времени и reg0 сбрасывается (меняет состояние) и на out приходит активный фронт тактового сигнала по которому он запоминает состояние reg0, которое как раз меняется в этот момент. На лицо вероятность возникновения метастабильного состояния.

 

11 часов назад, dima6656 сказал:

И еще один вопрос.

Грубо говоря, если выход триггера все время находиться в "0"

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

 

Могу посоветовать посмотреть эти видео, думаю многие вопросы отпадут сами собой:

FPGA (ПЛИС) - 1000 правил синхронного проектирования

FPGA (ПЛИС) - Особенности синхронизации

FPGA (ПЛИС) - Вопросы общего сброса

 

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

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


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

В 13.01.2024 в 01:27, Jackov сказал:

Тут получается так что в один момент времени и reg0 сбрасывается (меняет состояние) и на out приходит активный фронт тактового сигнала по которому он запоминает состояние reg0, которое как раз меняется в этот момент. На лицо вероятность возникновения метастабильного состояния.

 

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

 

Могу посоветовать посмотреть эти видео, думаю многие вопросы отпадут сами собой:

FPGA (ПЛИС) - 1000 правил синхронного проектирования

FPGA (ПЛИС) - Особенности синхронизации

FPGA (ПЛИС) - Вопросы общего сброса

 

 

Спасибо за ответ! Совсем забыл про эти видео. По вашему нику могу предположить, что вы их автор. Если так, то спасибо и за вашу работу.
И могли бы вы ,если вам не сложно, прояснить один момент. В этом видео в момент времени 8:11 FPGA (ПЛИС) - Вопросы общего сброса сказано, что когда фронт асинхронного сброса совпадает с синхросигналом то метастабильное состояния не успеет возникнуть, так как триггер мгновенно сброситься. Но в статье https://kit-e.ru/kratkij-kurs-hdl-chast-10/ сказано: "Если асинхронный сброс выдан во время фронта сигнала синхрочастоты или перед этим активным фронтом синхроимпульса триггера, но время перед фронтом синхрочастоты меньше, чем время предустановки, то выход триггера мог войти в метастабильное состояние (рис. 3). Но уже при истечении времени, необходимого для перехода в состояние сброса, триггер перейдет в это состояние." То есть как будто метастабильное состояние возникнет на какое-то время.  И вот непонятно как на самом деле.

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


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

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

По вашему нику могу предположить, что вы их автор.

Угу.

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

И могли бы вы ,если вам не сложно, прояснить один момент.

Ну сложно сказать как будет на самом деле, возможно зависит от внутренней схемотехники триггера, но если метастабильное состояние и возникнет, то на очень короткий момент времени. Т.е. такой переход скорее всего надо рассматривать не как 1 -> метастабильное состояние -> 0, а как просто не очень резкий переход 1 -> 0. По большому счёту не важно как схема войдёт в сброс, важно сколько она в нём пробудет и как из него выйдет.

И да, малость неправильно сказал

В 13.01.2024 в 01:27, Jackov сказал:

нужно во время активного уровня сигнала асинхронного сброса, с запасом до и после, обеспечить на входе D гарантированный 0

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

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


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

По картинке, автор предположительно типовой SPI мастерит, и речь о сигнале разрешения.

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


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

On 1/14/2024 at 6:25 PM, dima6656 said:

В этом видео в момент времени 8:11 FPGA (ПЛИС) - Вопросы общего сброса сказано, что когда фронт асинхронного сброса совпадает с синхросигналом то метастабильное состояния не успеет возникнуть, так как триггер мгновенно сброситься. Но в статье https://kit-e.ru/kratkij-kurs-hdl-chast-10/ сказано: "Если асинхронный сброс выдан во время фронта сигнала синхрочастоты или перед этим активным фронтом синхроимпульса триггера, но время перед фронтом синхрочастоты меньше, чем время предустановки, то выход триггера мог войти в метастабильное состояние (рис. 3). Но уже при истечении времени, необходимого для перехода в состояние сброса, триггер перейдет в это состояние." То есть как будто метастабильное состояние возникнет на какое-то время.  И вот непонятно как на самом деле.

Проще говоря: вход сброса асинхронный, но архитектурно он обязан использоваться как синхронный, что означает что проверятся setup/hold относительно тактового входа. Точно так же, как и по входу данных.
В литературе эти setup/hold еще называются recovery/removal - сделано специально для сброса, можно загуглить.
Почему на асинхронный вход нельзя подать действительно асинхронный сброс -другой вопрос. Если кратко, то это приводит к метастабильности и поэтому запрещено правилами проектирования.

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


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

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

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

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

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

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

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

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

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

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