Jump to content
    

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

Здравствуйте. Мой вопрос в том, можно ли безопасно в смысле синхронизации использовать следующую конструкцию.
Триггер 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

Share this post


Link to post
Share on other sites

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

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

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

 

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

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

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

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

 

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

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

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

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

 

Edited by Jackov

Share this post


Link to post
Share on other sites

В 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). Но уже при истечении времени, необходимого для перехода в состояние сброса, триггер перейдет в это состояние." То есть как будто метастабильное состояние возникнет на какое-то время.  И вот непонятно как на самом деле.

Share this post


Link to post
Share on other sites

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

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

Угу.

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 - сделано специально для сброса, можно загуглить.
Почему на асинхронный вход нельзя подать действительно асинхронный сброс -другой вопрос. Если кратко, то это приводит к метастабильности и поэтому запрещено правилами проектирования.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...