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

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


Участник
*

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



Подскажите, как запустить счетчик, чтобы вместо красных линий (нулей) были зелёные линии
Код
module count (input clk, output reg [1:0]counter);
always @(posedge clk)
counter <= counter + 1;
endmodule


Test bench
Код
module top;
   reg clk;
   wire [1:0] counter;
count tcount (clk, counter);
initial
  begin
    clk = 0;
    forever #10 clk = !clk;
  end
endmodule

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
OM-S
сообщение May 29 2018, 16:51
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 12-05-05
Из: г. Москва
Пользователь №: 4 944



Задайте начальное значение счетчику (обнулите).
Вы же сигналу clk в тестбенче задали начальное значение перед инверсией.
Go to the top of the page
 
+Quote Post
demsp
сообщение May 29 2018, 17:09
Сообщение #3


Участник
*

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



Спасибо. А как это сделать? Если написать
Код
module top;
   reg clk;
   wire [1:0] counter;
count tcount (clk, counter);
initial
  begin
    clk = 0;
    forever #10 clk = !clk;
    counter=0;
end
endmodule

то компилятор выдаёт ошибку Error: C:/.../tcount.v(9): (vlog-2110) Illegal reference to net "counter".

Наверное, надо делать счётчик с загрузкой и загружать значение "ноль"

Сообщение отредактировал demsp - May 29 2018, 17:16
Go to the top of the page
 
+Quote Post
OM-S
сообщение May 29 2018, 17:33
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 12-05-05
Из: г. Москва
Пользователь №: 4 944



Да, конечно, нужно сделать синхонную загрузку или обнуление (что вам нужно по заданию) счетчика.
Делаете дополнительный вход (reset, например) и по нему обнуляете.

А если совсем по простому, то можно попробовать так (по крайней мере в sv)
Код
module count (input clk,
output reg [1:0]counter = 0);
always @(posedge clk)
counter <= counter + 1;
endmodule


[/quote]
Go to the top of the page
 
+Quote Post
Nieve
сообщение May 29 2018, 18:56
Сообщение #5





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



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

Код
module count
(
input clk_i,
input reset_i,
output out_o
);

reg rst_rg;
reg [2:0] cnt;

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

always @(posedge clk_i or negedge rst_rg)
     begin
          if (!rst_rg) cnt <= 3'b0;
          else cnt <= cnt + 1'b1;
     end

assign out_o = cnt[0]; // Just an example
endmodule

Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 29 2018, 19:00
Сообщение #6


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

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



Цитата
Подскажите, как запустить счетчик, чтобы вместо красных линий (нулей) были зелёные линии

Quartus знает, что при включении питания регистры инициализируются нулями. А вот Modelsim про это не знает, и инициализирует регистры неопределенным значением.
Вывод: в файле описания счетчика принудительно проинициализировать регистры.
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 29 2018, 19:38
Сообщение #7


Гуру
******

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



Цитата(Nieve @ May 29 2018, 21:56) *
Асинхронный сброс

Даже слишком асинхронный, очень даже слишком, чтобы его другим предлагать...
Откуда такое откопали?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Nieve
сообщение May 29 2018, 19:54
Сообщение #8





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



Еще давно, когда только начинал изучать Verilog, коллега поделился мудростью. Применял подобную схему в своих проектах, никогда проблем не возникало.


Go to the top of the page
 
+Quote Post
iosifk
сообщение May 29 2018, 20:02
Сообщение #9


Гуру
******

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



Цитата(Nieve @ May 29 2018, 22:54) *
Еще давно, когда только начинал изучать Verilog, коллега поделился мудростью. Применял подобную схему в своих проектах, никогда проблем не возникало.

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



--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 29 2018, 20:02
Сообщение #10


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

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



Цитата(Nieve @ May 29 2018, 22:54) *
Еще давно, когда только начинал изучать Verilog, коллега поделился мудростью. Применял подобную схему в своих проектах, никогда проблем не возникало.

Значит Вы очень везучий человек biggrin.gif .
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 30 2018, 04:55
Сообщение #11


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

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



Цитата(iosifk @ May 29 2018, 22:38) *
Даже слишком асинхронный, очень даже слишком, чтобы его другим предлагать...
Откуда такое откопали?
Всегда так делали. А в чём, собственно, проблемы?
У асинхронного сброса есть одно неустанимое преимущество: для него не нужен клок. В отличие от.
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 30 2018, 07:09
Сообщение #12


Гуру
******

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



Цитата(andrew_b @ May 30 2018, 07:55) *
Всегда так делали. А в чём, собственно, проблемы?
У асинхронного сброса есть одно неустанимое преимущество: для него не нужен клок. В отличие от.

А просто взять шаблон простейшего счетчика из учебника или из того же Моделсима без отдельного триггера для сигнала сброс, слабо было?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Marat Zuev
сообщение May 30 2018, 22:01
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 8-05-18
Пользователь №: 103 834



Цитата(iosifk @ May 30 2018, 07:09) *
А просто взять шаблон простейшего счетчика из учебника или из того же Моделсима без отдельного триггера для сигнала сброс, слабо было?
Он его, Иосиф Григорьевич, "недосинхронизировал" ))
Спасибо за всю серию в общем и за статью "Краткий курс HDL. Часть 10. Несколько слов о «сбросе»" в частности )


--------------------
--
С наилучшими пожеланиями, Marat.
Go to the top of the page
 
+Quote Post
Nieve
сообщение May 31 2018, 04:15
Сообщение #14





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



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

И где же тут "недосинхронизация" ?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 31 2018, 04:37
Сообщение #15


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

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



Цитата(Nieve @ May 31 2018, 07:15) *
И где же тут "недосинхронизация" ?

Приходит асинхронный сброс на триггер.
И загоняет его в метастабильное состояние.
И этот нестабильный сброс с выхода триггера сбрасывает счетчик.
Или не сбрасывает.
Или недосбрасывает.
Как повезет.

Если в проекте в верхнего уровня есть reset bridge - то данный триггер не несет никакого смысла.
Если в проекте в верхнего уровня нет reset bridge - то данный триггер не несет никакого смысла.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 12th July 2025 - 14:17
Рейтинг@Mail.ru


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