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

Симуляция счётчика в ModelSim

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

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


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

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

Тогда он не нужен совсем...

Выход с reset bridge делает асинхронный сброс синхронным тактовой. Больше никаких дополнительных триггеров не нужно.

P.S. Вы хоть читали статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»"

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


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

Приходит асинхронный сброс на триггер.

И загоняет его в метастабильное состояние.

Эм, может, я чего-то пропустил в этой жизни? Где это написано?

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


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

Эм, может, я чего-то пропустил в этой жизни? Где это написано?

Так вот была предложена такая схема сброса:

always @(posedge clk_i)
     begin
          rst_rg <= reset_i;
     end

 

Если сигнал reset_i - внешний и асинхронен тактовой, то триггер rst_rg перейдет в метастабильное состояние.

И соответственно применять выход rst_rg применять как асинхронный сброс - чревато проблемами.

А если сброс был синхронизирован раньше, то зачем вообще применять триггер rst_rg ?

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


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

Тогда он не нужен совсем...

Выход с reset bridge делает асинхронный сброс синхронным тактовой. Больше никаких дополнительных триггеров не нужно.

P.S. Вы хоть читали статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»"

Да, причем в оригинале.

Скажу лишь одно, применял подобную схему во многих проектах (FPGA, ASIC) и никогда проблем со сбросом не наблюдалось. Спасибо за Ваше уточнение, а я обязательно проанализирую Ваше замечание.

 

Эм, может, я чего-то пропустил в этой жизни? Где это написано?

Насколько я понял, тут имеется в виду ситуация, когда сигнал сброса формируется по одной частоте, а схема работает по другой. В таком случае, после подачи сигнала сброса на триггер, он действительно может "свалиться" в метастабильное состояние.

 

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


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

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

Поэтому часто делают так: подача сброса асинхронно, снятие сброса синхронно.

Быстрый гуглинг: http://chipverification.blogspot.com/2008/...nous-reset.html

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


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

Спасибо за всю серию в общем и за статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»" в частности )

Вам спасибо, за то что читаете.

И если захотите обсудить, то могу еще кое-что рассказать "инженерное, чисто по жизни"... По скайпу...

 

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


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

ТС почему Вы не хотите пользоваться описание из темплате:

 

// 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

 

???

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


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

ТС почему Вы не хотите пользоваться описание из темплате:

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

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


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

ТС почему Вы не хотите пользоваться описание из темплате:

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

А отсюда какой вывод?

Проще было взять "обычное шаблонное" описание с асинхронным сбросом, как это привел Маверик. В симуляторе не задумываясь использовать Сброс, подогнав его в тестбенче под такты. А в железе, если этот Сброс не нужен, то на самом верху приписать ему неактивное значение и компилятор его сожрет. При этом все делается совершенно без ошибок и не плодятся лишние версии описания...

Правда тогда нам всем нечего будет обсуждать, увы :(

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


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

Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями

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


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

Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями

Я бы не был таким категоричным. Например FPGA фирмы Actel не умеют инициализировать триггеры нужным значением(во всяком случае у них были такие FPGA). Там без начального сброса никуда....

А вообще советую ознакомиться: http://www.kit-e.ru/articles/circuit/2009_1_96.php

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


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

Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями

 

 

`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

 

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


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

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

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

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

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

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

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

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

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

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