Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА: Вопрос по симуляции (ModelSlim)

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7538

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Я понимаю, что можно в железо лить и не париться, но симулировать - удобней. И не надо тестер логических уровней доставать, все на картинке и сразу.

Сейчас, вложенных модулей - нет, но не работает.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от kolyan.

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7539

  • Meteor
  • Meteor аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 18
Есть еще одна особенность между квартусом и моделсимом.
Дело в том, что моделсим - "зануда" - и когда делается счетчик, подобно Вашему count<=count+1, да еще с отсутствием начальной инициализации или сигнала сброса - он (моделсим) начинет выкобениваться, мол "а какое мне значение вывести если вы не сказали с какого числа мне начинать счет?".
Железяка тем отличается, что начав считать не с нуля, очень быстро дойдет до "истинного" начала и на выходе получится желаемый результат.
Рекомендация простая:
1) ввести сигнал сброса и в начале моделирования обнулить счетчик и регистры;
2) в самом начале (с верилогом не дружу) написать что счетчик равен нулю.
Спасибо сказали: kolyan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Meteor.

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7540

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Спасибо, попробую. Только, непонятно (пока), как это сделать.

Видимо:
@поискать надо что тут написать. Но, тут - разберусь.

Начальные параметры меня давно беспокоили, но я думал, что они тупо - нули (Т.к., нигде акцентов - нет на такой важный момент). Надо будет еще почитать что-то.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от kolyan. Причина: Дополнил

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7541

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Да, Вы были абсолютно правы.

Жаль, что поблагодарить можно только один раз.

Сделал некий фиктивный ресет и все полетело.

always @( posedge clock ) begin

if ( reset ) begin

count <= 25'd0;
res <= 7'd0;

end else begin

Но стало еще веселей.


Т.е., он симулирует два шага и помирает...

`timescale 1 ns/ 1 ps

module test_vlg_tst();
reg clock;
reg reset;
wire [7:0] data_out;

test i1 (
.clock(clock),
.data_out(data_out),
.reset(reset)
);

initial begin
clock = 0;
reset = 0;
$display("Running testbench");
end

always begin
#10 clock = ~clock;
end

initial begin
#20 reset = ~reset;
#20 reset = ~reset;
end

initial begin
#300 $stop;
end

endmodule

ЗЫ
Да, вместо ресета еще прокатывает такая конструкция:

reg first_step;

always @( posedge clock ) begin

if ( first_step ) begin

count <= 25'd0;
res <= 7'd0;
first_step <= 0;

end else begin
...

Но, пока ресет оставил для опытов.

ЗЫЫ
В любом случае, огромное СПАСИБО. Яб никогда не догадался, что он от меня хочет. :)))
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от kolyan. Причина: Опечатка

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7542

  • Meteor
  • Meteor аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 18
Могу порекомендовать поступить следующим образом: выведите состояние счетчика в отдельные порт и прогоните симуляцию. Мне несколько непонятна Ваша конструкция
case(count)
bla bla bla
end case;
Не очень понимаю когда должно происходить увеличение другого счетчика res. Когда count>0, или как?
В любом случае, вывод состояния count даст возможность посмотреть считает ли счетчик на каждом такте.
На всякий случай, прежде чем что-то делать, наведите курсор на окошко с временной диаграммой, нажмите кнопку мыши на ВД, а затем попробуйте нажать кнопку минус - она уменьшает масштаб. Может Вы банально не видите продолжение. Если моделсим останавливается он высказывает свое недовольство в окне transcript.
Когда Вы увидите что граница отображения уже явно близка к середине экрана, в transcript наберите run 100 (или любое другое значение) времянка должна дополнительно отработать указанное время.
И еще, напоследок, я при отработки в моделсиме пользуюсь do файлами. пример можно в скрине узреть. Его достоинство, что после всех манипуляций с компилированием я просто набираю команду
do имя_файла.do
В нем можно задать и время работы и какую часть отобразить по окончанию симуляции.

Вложения:
Спасибо сказали: kolyan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7543

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
>Мне несколько непонятна Ваша конструкция
>case(count)
>bla bla bla
>end case;

Это - фигня. Я так понял, что if-ы в ПЛИС дурной тон и все кейсами пользуются (если возможно).

Это равносильно

if ( count == 25'b0000000000000000000000001 ) begin // тут уменьшил, чтоб не симулировать много. Двух тактов для понимания (не глазами) достаточно.
res <= res+1; // По переполнению, само обнулится и сначала начнет. :))))) В этом железо лучше софта.
end

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от kolyan.

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7544

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
Да, спасибо за советы.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7545

  • Meteor
  • Meteor аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 18

kolyan пишет: Я так понял, что if-ы в ПЛИС дурной тон и все кейсами пользуются (если возможно).

Все не так)))
Что ифы, что кейсы они синтезируются одинаково и в последующем проявляются в виде мультиплексоров. Тут больше дело либо привычки, либо предпочтений.
Во всяком случае я пользуюсь обоими типами, но на vhdl.
Что касается Вашего кода - долго ждать когда отработается 2^25 степени состояний. В данном варианте, ожидания не оправданы и результат действительно скорее будет получен в железе.
Но вдруг Вам придется отлаживать какую-нибудь более сложную обработку (подсчет контрольных сумм и т.п.) тут моделсим станет незаменим - всегда сможете создать файл с результатами исполнения задачи и проверить либо вручную, либо в какой-либо программе (матлаб, лабвью и т.д.)
Спасибо сказали: kolyan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Meteor.

Вопрос по симуляции (ModelSlim) 2 года 6 мес. назад #7547

  • kolyan
  • kolyan аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 0
В общем, разобрался.

Очень удивило, что внутри case нельзя обнулить регистр, от которого этот кейс зависит.

Вот так вот (Вдруг, кто-то столкнется, чтоб ответ был), работает как надо и в железе и в симуляторе.
	always @( posedge clock ) begin
	
		if ( reset || count == COUNT_FULL ) begin
		
			count <= 25'd0;
			res <= 7'd0;
			
		end else begin
			
			case ( count )
		
				COUNT_EVENT: res <= res+1; 
				COUNT_FULL: res <= 7'd0;
		
			endcase

			data_out <= ~res;
			count <= count+1;

		end
	
	end

Так не работало (он не обнулялся, а тупо считал дальше):
case ( count )
		
	COUNT_EVENT: res <= res+1;
	COUNT_FULL: begin res <= 7'd0; count <= 25'd0 end
		
endcase

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.349 секунд
Работает на Kunena форум