Перейти к содержанию
    

Не моделируется PLL в ModelSim

Здравствуйте, форумчане!

При попытке просимулировать PLL, сгенеренную IP core ALTPLL, натыкаюсь на проблему: нет выходной частоты PLL. 

Использую Quartus Prime Version 17.1.0 Lite Edition + ModelSim starter edition 10.5b. 

Создал тестовый проект с одной PLL для проверки симуляции. ModelSim запускается из Quartus'а. Ошибок при симуляции нет, библиотеки вроде все подхватываются. 

Код проекта:

module pllsim(
input inclk,
input reset,
output clk25
);

pll0 inst1(
    .inclk0(inclk),
    .areset(reset),
    .c0(clk25)
);

endmodule

 

код тестбенча:

`timescale 1 ps/ 1 ps
module pllsim_tb;

reg inclk;
reg reset;
wire clk25;

pllsim DUT (inclk, reset, clk25);

always #10000 inclk = ~inclk;

initial
begin
    inclk = 0;
    reset = 1;
#500000 
    reset = 0;

end

endmodule
 

Результат симуляции:

image.thumb.png.07c461cf79709c247a4292173207f319.png

 

Сообщения ModelSim:

# Reading P:/__work__/ModelSim_10.5b/modelsim_ase/tcl/vsim/pref.tcl
# do pllsim_run_msim_rtl_verilog.do
# if {[file exists rtl_work]} {
#     vdel -lib rtl_work -all
# }
# vlib rtl_work
# vmap work rtl_work
# Model Technology ModelSim - Intel FPGA Edition vmap 10.5b Lib Mapping Utility 2016.10 Oct  5 2016
# vmap work rtl_work 
# Copying P:/__work__/ModelSim_10.5b/modelsim_ase/win32aloem/../modelsim.ini to modelsim.ini
# Modifying modelsim.ini

# vlog -vlog01compat -work work +incdir+D:/!!QuartusProject/__TESTs/test_pll {D:/!!QuartusProject/__TESTs/test_pll/pllsim.v}
# Model Technology ModelSim - Intel FPGA Edition vlog 10.5b Compiler 2016.10 Oct  5 2016
# Start time: 11:52:04 on Jul 19,2024
# vlog -reportprogress 300 -vlog01compat -work work "+incdir+D:/!!QuartusProject/__TESTs/test_pll" D:/!!QuartusProject/__TESTs/test_pll/pllsim.v 
# -- Compiling module pllsim

# Top level modules:
#     pllsim
# End time: 11:52:04 on Jul 19,2024, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0
# vlog -vlog01compat -work work +incdir+D:/!!QuartusProject/__TESTs/test_pll {D:/!!QuartusProject/__TESTs/test_pll/pll0.v}
# Model Technology ModelSim - Intel FPGA Edition vlog 10.5b Compiler 2016.10 Oct  5 2016
# Start time: 11:52:04 on Jul 19,2024
# vlog -reportprogress 300 -vlog01compat -work work "+incdir+D:/!!QuartusProject/__TESTs/test_pll" D:/!!QuartusProject/__TESTs/test_pll/pll0.v 
# -- Compiling module pll0

# Top level modules:
#     pll0
# End time: 11:52:04 on Jul 19,2024, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0
# vlog -vlog01compat -work work +incdir+D:/!!QuartusProject/__TESTs/test_pll/db {D:/!!QuartusProject/__TESTs/test_pll/db/pll0_altpll.v}
# Model Technology ModelSim - Intel FPGA Edition vlog 10.5b Compiler 2016.10 Oct  5 2016
# Start time: 11:52:04 on Jul 19,2024
# vlog -reportprogress 300 -vlog01compat -work work "+incdir+D:/!!QuartusProject/__TESTs/test_pll/db" D:/!!QuartusProject/__TESTs/test_pll/db/pll0_altpll.v 
# -- Compiling module pll0_altpll

# Top level modules:
#     pll0_altpll
# End time: 11:52:04 on Jul 19,2024, Elapsed time: 0:00:00
# Errors: 0, Warnings: 0

# vlog -vlog01compat -work work +incdir+D:/!!QuartusProject/__TESTs/test_pll/simulation/modelsim {D:/!!QuartusProject/__TESTs/test_pll/simulation/modelsim/pllsim_tb.v}
# Model Technology ModelSim - Intel FPGA Edition vlog 10.5b Compiler 2016.10 Oct  5 2016
# Start time: 11:52:04 on Jul 19,2024
# vlog -reportprogress 300 -vlog01compat -work work "+incdir+D:/!!QuartusProject/__TESTs/test_pll/simulation/modelsim" D:/!!QuartusProject/__TESTs/test_pll/simulation/modelsim/pllsim_tb.v 
# -- Compiling module pllsim_tb

# Top level modules:
#     pllsim_tb
# End time: 11:52:05 on Jul 19,2024, Elapsed time: 0:00:01
# Errors: 0, Warnings: 0

# vsim -t 1ps -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L cyclone10lp_ver -L rtl_work -L work -voptargs="+acc"  pllsim_tb
# vsim -t 1ps -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L cyclone10lp_ver -L rtl_work -L work -voptargs=""+acc"" pllsim_tb 
# Start time: 11:52:05 on Jul 19,2024
# Loading work.pllsim_tb
# Loading work.pllsim
# Loading work.pll0
# Loading altera_mf_ver.altpll
# Loading altera_mf_ver.ALTERA_DEVICE_FAMILIES
# Loading altera_mf_ver.pll_iobuf

# add wave *
# view structure
# .main_pane.structure.interior.cs.body.struct
# view signals
# .main_pane.objects.interior.cs.body.tree
# run -all

 

Кто сталкивался и решил подобную проблему? На форуме похожие темы почитал, но решения не нашел..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, хотя и настроек как таковых нет. Входная частота указана 50 МГц, выходная 25. Сброс - активная 1. Все остальные параметры по умолчанию от IP core.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 Хилых генерирует свой скрипт симуляции для ядра... Altera так же? Есть вариант запустить сгенерированный скрипт?

2 С выхода ядра должны быть еще какие-то сигналы (готовности и т.п.). Их смотрели?

3 Библиотека выбранного семейства ПЛИС загружается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

59 минут назад, eugen_pcad_ru сказал:

1 Хилых генерирует свой скрипт симуляции для ядра... Altera так же? Есть вариант запустить сгенерированный скрипт?

2 С выхода ядра должны быть еще какие-то сигналы (готовности и т.п.). Их смотрели?

3 Библиотека выбранного семейства ПЛИС загружается?

1) На этот вопрос не могу ответить, т.к. ни разу с этим не сталкивался.

2) Явно они мною выведены не были, но в симуляции внутренний сигнал locked равен 0, что значит выходная частота не зафиксирована.

3) Загружаются общие библиотеки Альтеры: altera_mf_ver.ALTERA_DEVICE_FAMILIES, altera_mf_ver.altpll, в которых нужное семейство (Cyclone 10 LP) присутствует.

37 минут назад, sazh сказал:

 timescale  ему не нравиться.

1ns/ps

timescale указан 1 ps/ 1 ps

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ставите 1ns/1ps.

50МГц это 20нс.

Задаете клок.

initial begin: clock generator

clk = 1'b0;

forever #(10.0) clk = инверсия   clk;

end

initial begin

reset = 1'b1; repeat (10) @(posedge clk);

reset = 1'b0; repeat (100) @(posedge clk);

#5 $display ("End");

$stop;

end

Как то так. #5  Это уже в наносекундах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, sazh сказал:

Ставите 1ns/1ps.

50МГц это 20нс.

Задаете клок.

initial begin: clock generator

clk = 1'b0;

forever #(10.0) clk = инверсия   clk;

end

initial begin

reset = 1'b1; repeat (10) @(posedge clk);

reset = 1'b0; repeat (100) @(posedge clk);

#5 $display ("End");

$stop;

end

Как то так. #5  Это уже в наносекундах

Я в первом сообщении выкладывал тестбенч. Там есть описание сигналов входной частоты и сброса. С ними как раз всё хорошо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 19.07.2024 в 19:09, slkhome сказал:

Сброс точно 0м?

 

Сброс 1. В любом случае пробовал уже и так и так. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...