МАРСОХОД

Open Source Hardware Project

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

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

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

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

Заливать каждый раз, на посмотреть - хлопотно.
Заранее прошу прощения за много буковок.

Взял свое старое описание. И добавил параметры для моделирования.
`timescale 1ns / 100ps // Clock - 1ns, Precession 100ps (Не принципиально. Это тест)

module test;

	reg clk;

	root root_test(clk);
	
	always
	#10 clk = ~clk;
	
	initial
	begin
		clk=0;
	end

endmodule

// ***********************
//
// Главный модуль
//
// ***********************

module root (clock,clock_out,clock_out_2,clock_out_4,clock_out_8,clock_out_16,clock_out_32,clock_out_64,clock_out_128);

	input wire clock;
	output wire clock_out;
	output wire clock_out_2;
	output wire clock_out_4;
	output wire clock_out_8;
	output wire clock_out_16;
	output wire clock_out_32;
	output wire clock_out_64;
	output wire clock_out_128;

	assign clock_out = clock;
	half_freq freq_2(.freq_in(clock), .freq_out(clock_out_2));
	half_freq freq_4(.freq_in(clock_out_2), .freq_out(clock_out_4));
	half_freq freq_8(.freq_in(clock_out_4), .freq_out(clock_out_8));
	half_freq freq_16(.freq_in(clock_out_8), .freq_out(clock_out_16));
	half_freq freq_32(.freq_in(clock_out_16), .freq_out(clock_out_32));
	half_freq freq_64(.freq_in(clock_out_32), .freq_out(clock_out_64));
	half_freq freq_128(.freq_in(clock_out_64), .freq_out(clock_out_128));
	

endmodule

// ***********************
//
// Делитель частоты на два
//
// ***********************
module half_freq (freq_in, freq_out);

	input wire freq_in;						// Входной клок
	output reg freq_out;						// Выходной клок
	reg state;									// счетчик

	always @(posedge freq_in)
	begin

		if (state)				// Если на входе 1 и счетчик - 1, сбрасываем счетчик и инвертируем состояние сигнала.
		begin
			state <= 1'b0;
			freq_out <= ~freq_out;
		end
		else
		begin										// Если счетчик не единица, добавляем и инвертируем частоту
			state <= state + 1'b1;
			freq_out <= ~freq_out;
		end
	end
endmodule

Откомпилировал. Открыл в Модельере. Графиков - нет.
vlog -reportprogress 300 -work work {E:/FPGA projects/LED_blink/LED_blink.v}
# Model Technology ModelSim - Intel FPGA Edition vlog 10.5b Compiler 2016.10 Oct  5 2016
# Start time: 17:43:09 on Dec 28,2017
# vlog -reportprogress 300 -work work E:/FPGA projects/LED_blink/LED_blink.v 
# -- Compiling module test
# -- Compiling module root
# -- Compiling module half_freq
# 
# Top level modules:
# 	test
# End time: 17:43:09 on Dec 28,2017, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0
vsim work.root
# End time: 17:43:25 on Dec 28,2017, Elapsed time: 0:01:33
# Errors: 5, Warnings: 0
# vsim work.root 
# Start time: 17:43:25 on Dec 28,2017
# Loading work.root
# Loading work.half_freq
add wave -position insertpoint  \
sim:/root/clock_out

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

Последнее редактирование: от kolyan. Причина: Таймскэйл поменял.

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

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

Тестовую часть переписал так:
`timescale 1ns / 10ps
module test();
// constants                                           
// general purpose registers
//reg eachvec;
// test vector input registers
reg clock;
// wires                                               
wire clock_out;
wire clock_out_2;
wire clock_out_4;
wire clock_out_8;
wire clock_out_16;
wire clock_out_32;
wire clock_out_64;
wire clock_out_128;

root root_test (
	.clock(clock),
	.clock_out(clock_out),
	.clock_out_2(clock_out_2),
	.clock_out_4(clock_out_4),
	.clock_out_8(clock_out_8),
	.clock_out_16(clock_out_16),
	.clock_out_32(clock_out_32),
	.clock_out_64(clock_out_64),
	.clock_out_128(clock_out_128)
);
initial                                                
begin                                                  
	clock = 0;
$display("Running testbench");                       
end                                                    

always                                                 
begin                                                  
	#5 clock = ~clock;
end                                                    
endmodule

Но, при этом рисует странно:



Такое ощущение, что не работают делители. Хотя, на осциллографе и логическом анализаторе - все норм.
Вложения:

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

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

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

Почему симулированные сигналы проходят внутрь модуля и там кончаются? Не могу понять!
С осциллографом и натурой - все норм.

Помогите плиз, кто может. :о)

ЗЫ
С наступающим всех.

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

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

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

kolyan пишет: Что-то в этом месте у меня капитальный затык.

Почему симулированные сигналы проходят внутрь модуля и там кончаются? Не могу понять!
С осциллографом и натурой - все норм.

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

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

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

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

half_freq freq_2(.freq_in(clock), .freq_out(clock_out_2));
...
half_freq freq_128(.freq_in(clock_out_64), .freq_out(clock_out_128));

Если я правильно понял. Но он в том-же файле лежит.

Пока на нем экспериментирую... Учусь еще все писать и склеивать.

Для начала, надо идеологию освоить. Тогда уже можно что-то писать.

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

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

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

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

kolyan пишет: В модуль root вложен еще один:

Если я правильно понял. Но он в том-же файле лежит.

Если есть вложенный модуль и он не симулирован ранее - надо просимулировать его. Иначе ничего не будет.
Спасибо сказали: kolyan

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

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

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

Т.е., надо для каждого модуля делать такое описание симуляции и только потом симулировать все?

С наступающим Вас.

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

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

  • Meteor
  • Meteor аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 16
Увы, с моделсимом так. Симулируются все самые мелкие узлы, затем средние, состоящие из мелких, затем крупные в которых имеются средние.
И Вас с неизбежно Наступающим Новым годом!
Спасибо сказали: kolyan

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

Вопрос по симуляции (ModelSlim) 9 мес. 3 нед. назад #7536

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

Там очень странно с симуляцией.

Модуль:
module test (clock, data_out);

	input wire clock;

	output reg [7:0] data_out;

	reg [7:0] res;
	reg [25:0] count;

	always @( posedge clock ) begin
	
		count <= count+1;
		
		case ( count )
		
			25'b1000000000000000000000000: res <= res+1;
		
		endcase
		
		data_out <= ~res;
	
	end

endmodule

Тестбенч:
`timescale 10 ns/ 1 ps

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

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

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

always begin
	#2 clock = ~clock;
end
                                        
endmodule

Настройки Квартуса такие:



Откомпилировал, смоделировал


Фиг!
На выходе - ровная линия.
В железе - все, что задумано.

Что я мог забыть/не правильно понять?

В симуляцию так отправляю:


:*(
Помогите, пожалуйста. :(

Настройки для симуляции - такие:
Вложения:

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

Вопрос по симуляции (ModelSlim) 9 мес. 3 нед. назад #7537

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

Вложения:

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

  • Страница:
  • 1
  • 2
Время создания страницы: 1.648 секунд

facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Языки программирования Вопрос по симуляции (ModelSlim)