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

    

PLL от Cyclone 10 LP не моделируется в Modelsim

Использую Quartus Prime 17.1.0 build 590 + Modelsim Intel FPGA starter edition 10.5b.

Есть пример с PLL, который легко запустить - просто файл sim.bat, только пути поправить:

test_pll.zip

Наблюдается странная проблема:

post-10008-1535093768_thumb.png

Делаю резет как положено, на вход 200 МГц, что допустимо, тем более в симуляторе. Locked никогда не поднимается. Что я делаю не так?

 

Читал о всех возможных причинах неработоспособности PLL при моделировании - отсутствие сброса, инициализации, недостаточная точность модели, но у меня ведь 1ns/1ps и этого достаточно.

Самое интересное, что внутри компонента altlvds_rx встроенный в него PLL работает в модели, а ведь там то же самое altpll.

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


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

Попробуйте подольше начальный сброс подержать....

Т.е сначала ничего не подаете. Потом подаете сброс, держите какое-то время и снимаете....

У меня только так на моделировании PLL Завелся. Но если есть возможность не моделировать PLL лучше так и делать. Иначе скорость моделирования уменьшается в разы. Фактически быстрее будет отладить автомат управления фазой, и отлаживаться по signal tap, чем ждать результатов моделирования.

Если запустите все-же моделирование PLL учтите, что в прошлых версиях сигнал ответа от PLL phase_done раньше формировался с ошибкой (ошибка только в моделировании, в реальном железе все нормально), исправили ли они в более новых версиях Quartus - не знаю.

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


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

Т.е сначала ничего не подаете. Потом подаете сброс, держите какое-то время и снимаете....

У меня только так на моделировании PLL Завелся. Но если есть возможность не моделировать PLL лучше так и делать. Иначе скорость моделирования уменьшается в разы. Фактически быстрее будет отладить автомат управления фазой, и отлаживаться по signal tap, чем ждать результатов моделирования.

Вот, 15 мкс жду, потом 15 мкс сбрасываю, более чем достаточно:

post-10008-1535095055_thumb.png

Результат нулевой.

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

 

Так то в моделях я обычно делаю дурилку-заглушку, которая имитирует работу PLL и выдает частоту на выходы с такими же как у PLL названиями, так в самом деле быстрее пашет модель.

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


Ссылка на сообщение
Поделиться на другие сайты
Locked никогда не поднимается. Что я делаю не так?

Читал о всех возможных причинах неработоспособности PLL при моделировании - отсутствие сброса, инициализации, недостаточная точность модели, но у меня ведь 1ns/1ps и этого достаточно.

 

Я думаю, что для altpll в ее описании где-то сидит задержка по срабатыванию захвата. Наверняка она зависит от разрядности счетчиков и от времени их заполнения входными импульсами...

Надо найти это место и сделать симуляцию больше по времени или солько для симуляции эту задержку покоцать.

Вот у Ксайлинкса есть примитив глобального сброса после загрузки. Он требуется для симуляции памяти, так как мне лень тупо ждать в RTL симуляции, я переношу его в рабочую папку и там убираю задержку...

Я не вижу, как вы в тесте ограничиваете время симуляции? Как Вы его задаете?

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
Я думаю, что для altpll в ее описании где-то сидит задержка по срабатыванию захвата. Наверняка она зависит от разрядности счетчиков и от времени их заполнения входными импульсами...

Надо найти это место и сделать симуляцию больше по времени или солько для симуляции эту задержку покоцать.

Вот у Ксайлинкса есть примитив глобального сброса после загрузки. Он требуется для симуляции памяти, так как мне лень тупо ждать в RTL симуляции, я переношу его в рабочую папку и там убираю задержку...

100 мкс жду, 100 мкс сброс висит, далее 500 миллисекунд и ничего опять. Мне кажется это запредельно, в altlvds_rx это заводится за микросекунды.

 

Мне очевидно наличие бага. Слепо предположим - это баг. Что можно с этим сделать? Скомпилировать другую версию библиотек? Взять старую версию Modelsim? Нужно чтоб Cyclone 10 LP умела версия. Может Quartus Prime 18? Может версию для Linux?

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


Ссылка на сообщение
Поделиться на другие сайты
100 мкс жду, 100 мкс сброс висит, далее 500 миллисекунд и ничего опять. Мне кажется это запредельно, в altlvds_rx это заводится за микросекунды.

 

Мне очевидно наличие бага. Слепо предположим - это баг. Что можно с этим сделать? Скомпилировать другую версию библиотек? Взять старую версию Modelsim? Нужно чтоб Cyclone 10 LP умела версия. Может Quartus Prime 18? Может версию для Linux?

 

Первое что надо делать - официально обратиться в техподдержку Альтеры. Второе - тоже самое написать на Альтеровский форум.

Просто, если это баг, то там статистика больше.

Потом на калькуляторе посчитать, как я написал в предыдущем посте про время симуляции. Наверняка в ПЛЛ задержка определяется счетчиками, и задается в параметрах. Поэтому время может и отличаться на порядки...

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


Ссылка на сообщение
Поделиться на другие сайты
Первое что надо делать - официально обратиться в техподдержку Альтеры. Второе - тоже самое написать на Альтеровский форум.

Просто, если это баг, то там статистика больше.

Потом на калькуляторе посчитать, как я написал в предыдущем посте про время симуляции. Наверняка в ПЛЛ задержка определяется счетчиками, и задается в параметрах. Поэтому время может и отличаться на порядки...

Время задается в sim.do, run 500ms. Прописал в файле pll масштаб из 1ps/1ps в 1ps/1fs, в основном файле теста тоже такие единицы и поправил периоды - опять ноль эффекта.

 

Я сейчас напишу им в техподдержку, но создавал тему и думал многие этим пользуются, уж PLL это вообще товар первой необходимости. Странно что ни у кого бага с PLL нет, или решается большим временем моделирования. В Xilinx ISE/Vivado проблем с PLL вообще ноль - работает с пол оборота в обоих ихних симуляторах.

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


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

Приветствую.

Даю наводку - а что за порт такой у pll - inclk0(inclk0)?

И где он на времянке?

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


Ссылка на сообщение
Поделиться на другие сайты
Даю наводку - а что за порт такой у pll - inclk0(inclk0)?

И где он на времянке?

Ох елки, это эпический фейспалм с пробитием моей пустой черепной коробки...

Тем не менее, после исправления - результат такой же. Неделю назад пробовал аналогичный пример в составе другого проекта, тогда я подать входную частоту не забыл. Результат все равно - на выходах Z.

 

Вот версия с исправлением:

test_pll2.zip

Не работает все равно. Выведены внутренние сигналы модели PLL, этих сигналов там много. Многие висят в Z состоянии. Не понимаю почему. Входная тактовая теперь видна.

Изменено пользователем AVR

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


Ссылка на сообщение
Поделиться на другие сайты
Ох елки, это эпический фейспалм с пробитием моей пустой черепной коробки...

Тем не менее, после исправления - результат такой же. Неделю назад пробовал аналогичный пример в составе другого проекта, тогда я подать входную частоту не забыл. Результат все равно - на выходах Z.

 

Вот версия с исправлением:

test_pll2.zip

Не работает все равно. Выведены внутренние сигналы модели PLL, этих сигналов там много. Многие висят в Z состоянии. Не понимаю почему. Входная тактовая теперь видна.

 

еще в Cyclone V надо было модель PLL использовать, а не файл для синтеза. У Вас скорее всего Modelsim пишет warning типа "PLL is not bound"

 

поищите у себя в папке проекта msim_setup.tcl и проверьте какой файл команда "com" компилирует

 

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


Ссылка на сообщение
Поделиться на другие сайты
еще в Cyclone V надо было модель PLL использовать, а не файл для синтеза. У Вас скорее всего Modelsim пишет warning типа "PLL is not bound"

поищите у себя в папке проекта msim_setup.tcl и проверьте какой файл команда "com" компилирует

Вот том то и беда, что не припоминаю такого варнинга, ни единой ошибки. Самое смешное что в altlvds_rx/tx если включать PLL - всё прекрасно моделируется! Но отдельный PLL я ничего не компилирую, вот что есть в связке Quartus+Modelsim - то и должно по идее быть идеально совместимо между собой.

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


Ссылка на сообщение
Поделиться на другие сайты
.. вот что есть в связке Quartus+Modelsim - то и должно по идее быть идеально совместимо между собой.

 

Нy ведь и программировать надо без ошибок в идеальном случае :)

 

Я лучше сам напишу скрипт и буду свои ошибки исправлять, а не "индийского GUI" ( привет Кузьмичу :) )

 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти