реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Симуляция счётчика в ModelSim
Nieve
сообщение May 31 2018, 04:42
Сообщение #16





Группа: Участник
Сообщений: 12
Регистрация: 29-04-18
Из: Москва
Пользователь №: 103 558



Не совсем. Сначала триггер синхронизируется по тактовой частоте, а только потом уже используется для асинхронного сброса.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 31 2018, 04:44
Сообщение #17


В поисках себя...
****

Группа: Свой
Сообщений: 657
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Nieve @ May 31 2018, 07:42) *
Не совсем. Сначала триггер синхронизируется по тактовой частоте, а только потом уже используется для асинхронного сброса.

Тогда он не нужен совсем...
Выход с reset bridge делает асинхронный сброс синхронным тактовой. Больше никаких дополнительных триггеров не нужно.
P.S. Вы хоть читали статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»"
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 31 2018, 05:08
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 923
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Flip-fl0p @ May 31 2018, 07:37) *
Приходит асинхронный сброс на триггер.
И загоняет его в метастабильное состояние.
Эм, может, я чего-то пропустил в этой жизни? Где это написано?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 31 2018, 05:28
Сообщение #19


В поисках себя...
****

Группа: Свой
Сообщений: 657
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(andrew_b @ May 31 2018, 08:08) *
Эм, может, я чего-то пропустил в этой жизни? Где это написано?

Так вот была предложена такая схема сброса:
Код
always @(posedge clk_i)
     begin
          rst_rg <= reset_i;
     end


Если сигнал reset_i - внешний и асинхронен тактовой, то триггер rst_rg перейдет в метастабильное состояние.
И соответственно применять выход rst_rg применять как асинхронный сброс - чревато проблемами.
А если сброс был синхронизирован раньше, то зачем вообще применять триггер rst_rg ?
Go to the top of the page
 
+Quote Post
Nieve
сообщение May 31 2018, 05:31
Сообщение #20





Группа: Участник
Сообщений: 12
Регистрация: 29-04-18
Из: Москва
Пользователь №: 103 558



Цитата(Flip-fl0p @ May 31 2018, 04:44) *
Тогда он не нужен совсем...
Выход с reset bridge делает асинхронный сброс синхронным тактовой. Больше никаких дополнительных триггеров не нужно.
P.S. Вы хоть читали статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»"

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

Цитата(andrew_b @ May 31 2018, 05:08) *
Эм, может, я чего-то пропустил в этой жизни? Где это написано?

Насколько я понял, тут имеется в виду ситуация, когда сигнал сброса формируется по одной частоте, а схема работает по другой. В таком случае, после подачи сигнала сброса на триггер, он действительно может "свалиться" в метастабильное состояние.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 31 2018, 06:26
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 923
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Nieve @ May 31 2018, 08:31) *
Насколько я понял, тут имеется в виду ситуация, когда сигнал сброса формируется по одной частоте, а схема работает по другой. В таком случае, после подачи сигнала сброса на триггер, он действительно может "свалиться" в метастабильное состояние.
Это странно. Сброс на то и сброс, чтобы переводить триггер в заведомо известное стабильное состояние. А вот снятие сброса в окрестности фронта клока может устроить метастабильность, тут я согласен.
Поэтому часто делают так: подача сброса асинхронно, снятие сброса синхронно.
Быстрый гуглинг: http://chipverification.blogspot.com/2008/...nous-reset.html
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 31 2018, 07:30
Сообщение #22


Гуру
******

Группа: Модераторы
Сообщений: 3 923
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Marat Zuev @ May 31 2018, 01:01) *
Спасибо за всю серию в общем и за статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»" в частности )

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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Maverick
сообщение May 31 2018, 08:39
Сообщение #23


я только учусь...
******

Группа: Модераторы
Сообщений: 3 425
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



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

Код
// 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


???


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 31 2018, 09:02
Сообщение #24


В поисках себя...
****

Группа: Свой
Сообщений: 657
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

Могу предположить потому-что ему не нужен был изначально асинхронный сброс. Но нужна была начальная установка регистрам, для того, чтобы запускалось моделирование в Modelsim
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 31 2018, 10:07
Сообщение #25


Гуру
******

Группа: Модераторы
Сообщений: 3 923
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Flip-fl0p @ May 31 2018, 12:02) *
Код
ТС почему Вы не хотите пользоваться описание из темплате:

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

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


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
demsp
сообщение Jun 5 2018, 06:42
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 17-03-18
Пользователь №: 102 435



Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 5 2018, 07:14
Сообщение #27


В поисках себя...
****

Группа: Свой
Сообщений: 657
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(demsp @ Jun 5 2018, 09:42) *
Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями

Я бы не был таким категоричным. Например FPGA фирмы Actel не умеют инициализировать триггеры нужным значением(во всяком случае у них были такие FPGA). Там без начального сброса никуда....
А вообще советую ознакомиться: http://www.kit-e.ru/articles/circuit/2009_1_96.php
Go to the top of the page
 
+Quote Post
des333
сообщение Jun 5 2018, 20:13
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Мода на асинхронный сброс не проходит sm.gif


--------------------
Go to the top of the page
 
+Quote Post
sazh
сообщение Jun 6 2018, 17:22
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(demsp @ Jun 5 2018, 09:42) *
Да, спасибо, в реальной схеме сброс вообще не нужен, но в симуляции использую сброс для инициализации регистров нулями



Код
`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

Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2018 - 23:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.00942 секунд с 7
ELECTRONIX ©2004-2016