Jump to content

    

Моделирование PLL для Cyclone

23 часа назад, StewartLittle сказал:

Отредактированный modelsim.ini в студию! 

Прошу прощения, тут довольно хитрое устройство. Получается так: любой проект видит сверх некоего базового набора только те библиотеки, которые есть в файле mpf. Скомпилированные библиотеки в этот базовый набор не входят, сколько ни пиши их в корневой modelsim.ini.

Но: при создании нового проекта в файл mpf добавляются все добавленные мною пути к скомпилированным библиотекам, которые есть в корневом modelsim.ini. И вот тогда они попадают на закладку Library. В старых mpf этих путей не было, потому они и не отображались и не работали. А в новых проектах, созданных уже после редактирования корневого modelsim.ini, всё есть.

Share this post


Link to post
Share on other sites
54 minutes ago, DSIoffe said:

Прикладываю. Спасибо.

pll.zip

Сделал. Вставил эту строку последней, перед закрывающим тегом </INFO>. Не помогло :(

Файлы нужные для моделирования, с правкой ссылок на библиотеки в VHDL файлах в квартусе 17.1

quartus\eda\sim_lib\altera_lnsim.sv

quartus\libraries\vhdl\altera_lnsim\altera_lnsim_components.vhd

pll\Quartus\mypll_sim\mypll.vho
pll\Sources\TestPLL.vhd
pll\Model\TestPLL_tb.vhd

Мне лень было собирать все это правильно и все такое. Правка mypll.vho

-- LIBRARY altera_lnsim;
-- USE altera_lnsim.altera_lnsim_components.all;
 USE work.altera_lnsim_components.all;

запуск моделирования

vsim -novopt TestPLL_tb -t 1ps

Судя по тексту в консоли

# Info: =================================================
# Info:           Generic PLL Summary
# Info: =================================================
# Time scale of (testpll_tb.TestPLL_0.mypll_0.mypll_altera_pll_altera_pll_i_639.new_model.gpll.no_need_to_gen) is  1ps /  1ps
# Info: hierarchical_name = testpll_tb.TestPLL_0.mypll_0.mypll_altera_pll_altera_pll_i_639.new_model.gpll.no_need_to_gen
# Info: reference_clock_frequency = 120.0 MHz
# Info: output_clock_frequency = 17 MHZ
# Info: phase_shift = 0 ps
# Info: duty_cycle = 50
# Info: sim_additional_refclk_cycles_to_lock = 0
# Info: output_clock_high_period = 29411.764706
# Info: output_clock_low_period = 29411.764706
# Info: hierarchical_name = testpll_tb.TestPLL_0.mypll_0.mypll_altera_pll_altera_pll_i_639.new_model.gpll.UI
# Warning: The frequency of the reference clock signal differs from the specified frequency (120.0 MHz).

какие то параметры не те и моделирование идет не так)

pll.png

Share this post


Link to post
Share on other sites
59 минут назад, DSIoffe сказал:

при создании нового проекта в файл mpf добавляются все добавленные мною пути к скомпилированным библиотекам, которые есть в корневом modelsim.ini. И вот тогда они попадают на закладку Library. В старых mpf этих путей не было, потому они и не отображались и не работали. А в новых проектах, созданных уже после редактирования корневого modelsim.ini, всё есть.

Разумеется!!!

Когда Вы создаете новый проект, в него копируется "корневой" ini-файл. Все дальнейшие изменения настроек проекта буду отображаться уже в этоц копии ini-файла.

Соответственно, если "коревой" ini был подкручен уже после того, как новый проект создан, то в ini-файле проекта эти внесенные изменения автоматически отображены не будут.

Тем не менее, их можно внести туда врукопашную, также, как и в "корневой" ini-файл.

Share this post


Link to post
Share on other sites
36 минут назад, des00 сказал:

Файлы нужные для моделирования, с правкой ссылок на библиотеки в VHDL файлах в квартусе 17.1

Огромное спасибо! Работает! Теперь понять бы, почему для моделирования нужны именно эти файлы? Не подскажете, где про это можно прочитать? В частности, про файл vho?

13 минут назад, StewartLittle сказал:

Разумеется!!!

Спасибо! Теперь и для меня оно разумеется :) Эх, академиев мы не кончали :(

Share this post


Link to post
Share on other sites
6 минут назад, DSIoffe сказал:

В частности, про файл vho?

vho - это "выходной" vhdl, который генерируется EDA Netlist Writer'ом после синтеза или плейса/раута, если Вы указали, что желаете повести post-synthesis или post-pnr моделирование.

Ну или на этапе создания реализации IP-ядра, если соответствующая галка была взведена в визарде.

Share this post


Link to post
Share on other sites
3 hours ago, DSIoffe said:

Прикладываю. Спасибо.

pll.zip

Сделал. Вставил эту строку последней, перед закрывающим тегом </INFO>. Не помогло :(

А точно вставили строку со своим названием IP-ядра? По логу мегавизард не может найти имя "PLL Intel FPGA IP v18.1"

Quote

Jun 07 01PM:53:01>: Megafunction PLL Intel FPGA IP v18.1 is not listed in any 
wizard.lst file in the specified library path(s).Wizard launch aborted

<ALIAS>PLL Intel FPGA IP v18.1</ALIAS>

Share this post


Link to post
Share on other sites
3 hours ago, DSIoffe said:

Огромное спасибо! Работает! Теперь понять бы, почему для моделирования нужны именно эти файлы? Не подскажете, где про это можно прочитать? В частности, про файл vho?

Из первого что под рукой : Quartus II Handbook Version 9.0 Volume 3: Verification -> Section I. Simulation -> 2. Mentor Graphics ModelSim Support -> Altera Design Flow with ModelSim-Altera or ModelSim Software

Share this post


Link to post
Share on other sites
В 07.06.2019 в 17:08, iglaz3 сказал:

А точно вставили строку со своим названием IP-ядра?

Огромное спасибо!

Я вставил ровно то, что было написано в Вашем совете :( Ибо не понял то заклинание. Теперь понимаю: Intel переименовал мегафункцию в PLL Intel FPGA IP v18.1, но не вписал новое имя в файл lst. Я взял новое имя мегафункции из файла vhd, который сделал Quartus, и вписал его как ещё один alias в lst, и заработало. А в родном файле lst расписаны alias-ы аж до несуществующей версии Quartus 20.1, и все под старым именем, <ALIAS>Altera PLL v20.1</ALIAS>. Тьфу. И даже трудно винить Intel: разве уследишь в огромной фирме за каждым файликом из многих тысяч. Тут без стакана форума не разобраться.

В 07.06.2019 в 19:01, des00 сказал:

Из первого что под рукой

И ещё раз огромное спасибо. Правильное место, я мог бы и сам догадаться :(

Share this post


Link to post
Share on other sites

И, если можно, ещё вопросы.

Уважаемый des00, на Вашем рисунке виден некий переходный процесс запуска PLL. И импульсы с PLL идут недолго. У меня сначала тоже так было. Но потом я убрал сообщение о том, что The frequency of the reference clock signal differs from the specified frequency (120.0 MHz), а именно, сделал период тактовой частоты в проекте 8.3333333 ns вместо 2 нс, которые изначально стояли от балды. Теперь модель работает неограниченное время (я пробовал до 500 мс), но этого переходного процесса нет. Прикладываю рисунок.

Скажите, пожалуйста, этот переходный процесс отражает что-то реальное, или это какая-то ошибка? Если оно реальное, то как его вернуть? Заранее признателен.

И ещё: насколько нужен ключ novopt? Questa Sim угрожает увеличением времени моделирования при использовании этого ключа.

111.gif

Share this post


Link to post
Share on other sites
14 hours ago, DSIoffe said:

Скажите, пожалуйста, этот переходный процесс отражает что-то реальное, или это какая-то ошибка? Если оно реальное, то как его вернуть? Заранее признателен. 

Модель поведенческая так написана. Когда то давно я расковыривал до сорцов модель PLL, там тупо сделано на задержках и средствах языка по их моделированию. Ждать идеально точного поведения как PLL входит в захват, с этими моделями, думаю бесполезно.

14 hours ago, DSIoffe said:

И ещё: насколько нужен ключ novopt? Questa Sim угрожает увеличением времени моделирования при использовании этого ключа.

Это указание не оптимизировать сорцы при компиляции, позволяет оставить все переменные для отладки, но, т.к. на это нужны ресурсы, то время моделирования действительно увеличивается в разы. В новых этот ключ убрали, там сейчас другие опции управления видимостью переменных при оптимизаци.

Share this post


Link to post
Share on other sites
2 hours ago, des00 said:

Модель поведенческая так написана. Когда то давно я расковыривал до сорцов модель PLL, там тупо сделано на задержках и средствах языка по их моделированию. Ждать идеально точного поведения как PLL входит в захват, с этими моделями, думаю бесполезно.

Раз пошла такая пляска и я задам пару вопросов.

Подскажите, пожалуйста, Вы с Ксайлинксами не имели дела в этом плане? У меня получается так, что сгенерированные 4 частоты, сдвинутые по фазе на +90 градусов каждая следующая, выключают вторую частоту на 1 пикосекунду раньше нужного (не синхронно со срабатыванием 4-той). Это может быть из-за кривого описания примитивов или ошибки созданного тестбенча?

Screenshot_20190611_083529.png

Fig. 1

И более интересный вопрос: При временном моделировании для PLL/MMCM/(аналоги альтеры) синтезируется джиттер? Или это нереально/не нужно?

Share this post


Link to post
Share on other sites
1 hour ago, Nick_K said:

Подскажите, пожалуйста, Вы с Ксайлинксами не имели дела в этом плане? У меня получается так, что сгенерированные 4 частоты, сдвинутые по фазе на +90 градусов каждая следующая, выключают вторую частоту на 1 пикосекунду раньше нужного (не синхронно со срабатыванием 4-той). Это может быть из-за кривого описания примитивов или ошибки созданного тестбенча?

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

1 hour ago, Nick_K said:

И более интересный вопрос: При временном моделировании для PLL/MMCM/(аналоги альтеры) синтезируется джиттер? Или это нереально/не нужно?

Крайне сложно, описать в дискретном, событийном симуляторе (а вы используете именно такой) аналоговые вещи. Только приблизится к ним. Для аналоговых и аналогоцифровых моделей нужно использовать другой симулятор.

Share this post


Link to post
Share on other sites
1 hour ago, des00 said:

Крайне сложно, описать в дискретном, событийном симуляторе (а вы используете именно такой) аналоговые вещи. Только приблизится к ним. Для аналоговых и аналогоцифровых моделей нужно использовать другой симулятор.

Я это понимаю прекрасно. Но в данном случае стоит вполне конкретная задача по разработке модуля временного детектирования сигналла. Для этих же целей и хотел использовать временное пост-синтезис/имплементейшн моделлирование.

По поводу 1ps, я в модели менял на 1ps/1fs - никакого результата. До файлов корки не докапывался.

Share this post


Link to post
Share on other sites
1 hour ago, Nick_K said:

Я это понимаю прекрасно. Но в данном случае стоит вполне конкретная задача по разработке модуля временного детектирования сигналла. Для этих же целей и хотел использовать временное пост-синтезис/имплементейшн моделлирование.

Слабо понимаю чем вам мешает небольшой разнос, но в  железе он будет еще больше так то. Но вот такая модель у них)

1 hour ago, Nick_K said:

По поводу 1ps, я в модели менял на 1ps/1fs - никакого результата. До файлов корки не докапывался.

Надо корку вскрывать, смотреть. может быть эта 1пс моделирует перекос межу сигналами

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now