dips11 0 12 января Опубликовано 12 января · Жалоба Здравствуйте. Мой вопрос в том, можно ли безопасно в смысле синхронизации использовать следующую конструкцию. Триггер 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; Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zversky 16 12 января Опубликовано 12 января · Жалоба Здесь смотрели?: https://kit-e.ru/kratkij-kurs-hdl-chast-10/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dips11 0 12 января Опубликовано 12 января · Жалоба 2 часа назад, Zversky сказал: Здесь смотрели?: https://kit-e.ru/kratkij-kurs-hdl-chast-10/ Ознакомился, но ответа для конкретно этих случаев не нашёл Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 12 января Опубликовано 12 января · Жалоба 4 часа назад, dima6656 сказал: сигнал clk как сброс в одном триггере и как тактирование во втором Нельзя. Есть простые правила при работе с FPGA. Сигнал clk подается на глобальный клоковый вход FPGA . Работать только по одному фронту клока (нет необходимости работать по разным фронтам при наличии на борту pll). Есть рекомендованные схемы для перехода из одного клокового домена в другой (если надо) Что касается метастабильности асинхронного сброса, ките все сказано (взято отсюда Microsoft Word - CummingsSNUG2002SJ_Resets_rev1_1.doc (sunburst-design.com) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 12 января Опубликовано 12 января (изменено) · Жалоба 11 часов назад, dima6656 сказал: Здравствуйте. Мой вопрос в том, можно ли безопасно в смысле синхронизации использовать следующую конструкцию. Тут получается так что в один момент времени и reg0 сбрасывается (меняет состояние) и на out приходит активный фронт тактового сигнала по которому он запоминает состояние reg0, которое как раз меняется в этот момент. На лицо вероятность возникновения метастабильного состояния. 11 часов назад, dima6656 сказал: И еще один вопрос. Грубо говоря, если выход триггера все время находиться в "0" Нет, не возникнет, но триггер который всегда установлен в 0 на практике никому не нужен. Просто нужно во время активного уровня сигнала асинхронного сброса, с запасом до и после, обеспечить на входе D гарантированный 0. Могу посоветовать посмотреть эти видео, думаю многие вопросы отпадут сами собой: FPGA (ПЛИС) - 1000 правил синхронного проектирования FPGA (ПЛИС) - Особенности синхронизации FPGA (ПЛИС) - Вопросы общего сброса Изменено 12 января пользователем Jackov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dips11 0 14 января Опубликовано 14 января · Жалоба В 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). Но уже при истечении времени, необходимого для перехода в состояние сброса, триггер перейдет в это состояние." То есть как будто метастабильное состояние возникнет на какое-то время. И вот непонятно как на самом деле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 14 января Опубликовано 14 января · Жалоба 2 часа назад, dima6656 сказал: По вашему нику могу предположить, что вы их автор. Угу. 2 часа назад, dima6656 сказал: И могли бы вы ,если вам не сложно, прояснить один момент. Ну сложно сказать как будет на самом деле, возможно зависит от внутренней схемотехники триггера, но если метастабильное состояние и возникнет, то на очень короткий момент времени. Т.е. такой переход скорее всего надо рассматривать не как 1 -> метастабильное состояние -> 0, а как просто не очень резкий переход 1 -> 0. По большому счёту не важно как схема войдёт в сброс, важно сколько она в нём пробудет и как из него выйдет. И да, малость неправильно сказал В 13.01.2024 в 01:27, Jackov сказал: нужно во время активного уровня сигнала асинхронного сброса, с запасом до и после, обеспечить на входе D гарантированный 0 Надо не за входом D следить, хотя и так тоже можно. Но лучше следить за тем чтобы момент снятия асинхронного сброса не совпал с активным фронтом тактового сигнала с запасом в обе стороны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 15 января Опубликовано 15 января · Жалоба По картинке, автор предположительно типовой SPI мастерит, и речь о сигнале разрешения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaahoo 0 15 января Опубликовано 15 января · Жалоба 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 - сделано специально для сброса, можно загуглить. Почему на асинхронный вход нельзя подать действительно асинхронный сброс -другой вопрос. Если кратко, то это приводит к метастабильности и поэтому запрещено правилами проектирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться