Nieve 0 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Не совсем. Сначала триггер синхронизируется по тактовой частоте, а только потом уже используется для асинхронного сброса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Не совсем. Сначала триггер синхронизируется по тактовой частоте, а только потом уже используется для асинхронного сброса. Тогда он не нужен совсем... Выход с reset bridge делает асинхронный сброс синхронным тактовой. Больше никаких дополнительных триггеров не нужно. P.S. Вы хоть читали статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Приходит асинхронный сброс на триггер. И загоняет его в метастабильное состояние. Эм, может, я чего-то пропустил в этой жизни? Где это написано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Эм, может, я чего-то пропустил в этой жизни? Где это написано? Так вот была предложена такая схема сброса: always @(posedge clk_i) begin rst_rg <= reset_i; end Если сигнал reset_i - внешний и асинхронен тактовой, то триггер rst_rg перейдет в метастабильное состояние. И соответственно применять выход rst_rg применять как асинхронный сброс - чревато проблемами. А если сброс был синхронизирован раньше, то зачем вообще применять триггер rst_rg ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nieve 0 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Тогда он не нужен совсем... Выход с reset bridge делает асинхронный сброс синхронным тактовой. Больше никаких дополнительных триггеров не нужно. P.S. Вы хоть читали статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»" Да, причем в оригинале. Скажу лишь одно, применял подобную схему во многих проектах (FPGA, ASIC) и никогда проблем со сбросом не наблюдалось. Спасибо за Ваше уточнение, а я обязательно проанализирую Ваше замечание. Эм, может, я чего-то пропустил в этой жизни? Где это написано? Насколько я понял, тут имеется в виду ситуация, когда сигнал сброса формируется по одной частоте, а схема работает по другой. В таком случае, после подачи сигнала сброса на триггер, он действительно может "свалиться" в метастабильное состояние. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Насколько я понял, тут имеется в виду ситуация, когда сигнал сброса формируется по одной частоте, а схема работает по другой. В таком случае, после подачи сигнала сброса на триггер, он действительно может "свалиться" в метастабильное состояние.Это странно. Сброс на то и сброс, чтобы переводить триггер в заведомо известное стабильное состояние. А вот снятие сброса в окрестности фронта клока может устроить метастабильность, тут я согласен. Поэтому часто делают так: подача сброса асинхронно, снятие сброса синхронно. Быстрый гуглинг: http://chipverification.blogspot.com/2008/...nous-reset.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Спасибо за всю серию в общем и за статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»" в частности ) Вам спасибо, за то что читаете. И если захотите обсудить, то могу еще кое-что рассказать "инженерное, чисто по жизни"... По скайпу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба ТС почему Вы не хотите пользоваться описание из темплате: // Quartus Prime Verilog Template // Binary counter module binary_counter #(parameter WIDTH=64) ( input clk, enable, reset, output reg [WIDTH-1:0] count ); // Reset if needed, or increment if counting is enabled always @ (posedge clk or posedge reset) begin if (reset) count <= 0; else if (enable == 1'b1) count <= count + 1; end endmodule ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба ТС почему Вы не хотите пользоваться описание из темплате: Могу предположить потому-что ему не нужен был изначально асинхронный сброс. Но нужна была начальная установка регистрам, для того, чтобы запускалось моделирование в Modelsim Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба ТС почему Вы не хотите пользоваться описание из темплате: Могу предположить потому-что ему не нужен был изначально асинхронный сброс. Но нужна была начальная установка регистрам, для того, чтобы запускалось моделирование в Modelsim А отсюда какой вывод? Проще было взять "обычное шаблонное" описание с асинхронным сбросом, как это привел Маверик. В симуляторе не задумываясь использовать Сброс, подогнав его в тестбенче под такты. А в железе, если этот Сброс не нужен, то на самом верху приписать ему неактивное значение и компилятор его сожрет. При этом все делается совершенно без ошибок и не плодятся лишние версии описания... Правда тогда нам всем нечего будет обсуждать, увы :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demsp 0 5 июня, 2018 Опубликовано 5 июня, 2018 · Жалоба Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 5 июня, 2018 Опубликовано 5 июня, 2018 · Жалоба Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями Я бы не был таким категоричным. Например FPGA фирмы Actel не умеют инициализировать триггеры нужным значением(во всяком случае у них были такие FPGA). Там без начального сброса никуда.... А вообще советую ознакомиться: http://www.kit-e.ru/articles/circuit/2009_1_96.php Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 5 июня, 2018 Опубликовано 5 июня, 2018 · Жалоба Мода на асинхронный сброс не проходит :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 6 июня, 2018 Опубликовано 6 июня, 2018 · Жалоба Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями `timescale 1 ns / 1 ps module ct ( input clk, output [1:0] counter ); reg [1:0] counter_rg = 2'b00; always @(posedge clk) begin counter_rg <= counter_rg + 1'b1; end assign counter = counter_rg; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться