-
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. Причина: Таймскэйл поменял.
|
-
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
Но, при этом рисует странно:
Вложение Симуляция.png не найдено
Такое ощущение, что не работают делители. Хотя, на осциллографе и логическом анализаторе - все норм.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
kolyan
-
Автор темы
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 0
-
-
|
Что-то в этом месте у меня капитальный затык.
Почему симулированные сигналы проходят внутрь модуля и там кончаются? Не могу понять!
С осциллографом и натурой - все норм.
Помогите плиз, кто может. :о)
ЗЫ
С наступающим всех.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Meteor
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 18
-
-
-
-
|
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.
|
-
Meteor
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 18
-
-
-
-
|
kolyan пишет: В модуль root вложен еще один:
Если я правильно понял. Но он в том-же файле лежит.
Если есть вложенный модуль и он не симулирован ранее - надо просимулировать его. Иначе ничего не будет.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
kolyan
-
Автор темы
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 0
-
-
|
Спасибо, попробую.
Т.е., надо для каждого модуля делать такое описание симуляции и только потом симулировать все?
С наступающим Вас.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Meteor
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 18
-
-
-
-
|
Увы, с моделсимом так. Симулируются все самые мелкие узлы, затем средние, состоящие из мелких, затем крупные в которых имеются средние.
И Вас с неизбежно Наступающим Новым годом!
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
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
Настройки Квартуса такие:
Откомпилировал, смоделировал
Фиг!
На выходе - ровная линия.
В железе - все, что задумано.
Что я мог забыть/не правильно понять?
В симуляцию так отправляю:
:*(
Помогите, пожалуйста. :(
Настройки для симуляции - такие:
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
kolyan
-
Автор темы
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 31
-
Спасибо получено: 0
-
-
|
Предвосхищая вопрос, так, тоже смотрел:
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.309 секунд