|
Нестабильная зарузку NIOS из onchip mem при герерации тактовой на PLL на Cyclone III |
|
|
|
Mar 31 2010, 06:25
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Народ помогите плиз. Есть девайс. На нем- cyclone III и USB котроллер cy7c68013 (очень распрастраненный Cypress, может выдавать на Cyclone тактовую в 12, 24 или 48 мегагерц) На циклоне реализован NIOS, программа небольшая и я решил обойтись без бутлоалера - грузить всю прогу сразу в onchip mem. Все работало при заведении тактовой с USB, однако хотелось бы ее увеличить, тем более что тайминг аналайзер сказал что тактовая до 110 Мг подойдет. Как начал использовать PLL - начали появляться странности - нестабильная прогрузка NIOSa. То есть в 90% случаев он загружается нормально, а в остальных то ли виснет толи непойму что. Но явно не корректно заружается. Тактовую на PLL увеличиваю в два раза - получается 96 Мгц. Тайминг аналайзер не выдает ничего плохого -тактовая нормальная, задержек нигде нет. Если NIOS грузиться девайс может работать по несколько суток без единой ошибки - проверял. В чем может быть проблема с загрузкой? Ногу PLL "locked" анализирую - приостанавливаю подачу тактовой на NIOS (мегафукнция ALTCLKCTRL), Жду пока стабилизируется, потом снова подаю. Процессор при этом не ресетю, но пробовал и ресетить, не помогало.
|
|
|
|
|
Mar 31 2010, 07:16
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Mar 31 2010, 10:54)  я с PLL делал так: ALTCLKCTRL не ставил, PLL "locked" заводил на reset процессора (полярность только правильную сделать). на 120МГц заводил, без сбоев. Сейчас попробуем, хотя я так тоже пробовал, не сразу я до ALTCLKCTRL дошел, но для чистоты эксперимента, еще разок. Цитата(KIM @ Mar 31 2010, 11:01)  Сейчас попробуем, хотя я так тоже пробовал, не сразу я до ALTCLKCTRL дошел, но для чистоты эксперимента, еще разок. Неполучается. Не всегда проходит инициализация. А вы как PLL генерировали? у меня In normal mode, поставил флаг Self reset on lose lock. Вообще я в первый раз pll использую. Может в этом дело?
|
|
|
|
|
Mar 31 2010, 07:43
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Mar 31 2010, 11:39)  Self reset я не ставил, у меня кварцевый опорник. а что значит - инициализация не проходит? если прога в on-chip слинкована и вектор сброса на on-chip нацелен, она вместе с sof загружается. Все правильно, прога слинкована в onchip.я для проверки загрузки прилепил к процессору PIO на выход,первой командой в функции main стоит установление этого PIO в единицу (по умолчанию он в 0), так вот он не устанавливается, то есть на этапе загрузки что то по-видимому происходит с процессором, он не доходит до этого места. программа в Onchip слинкована правильно, поскольку он все-таки загружается правильно в большинстве случаев и норм работает.
|
|
|
|
|
Mar 31 2010, 07:53
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Тайминги, тайминги и еще раз тайминги. Цитата(KIM @ Mar 31 2010, 10:25)  Тайминг аналайзер не выдает ничего плохого -тактовая нормальная, задержек нигде нет. Это еще не означает, что проект будет функционировать правильно. Зато это может означать, что у Вас не заданы необходимые констрейны. Как в законах Мерфи - "Если Вам кажется, что Ваш проект работает - значит Вы чего-то не заметили"  Второе, на что нужно обратить внимание - используете ли Вы начальные состояния триггеров по умолчанию? При этом можно нарваться на неприятности, когда проект будет работать корректно сразу после загрузки ПЛИС, а вот после сброса ниоса вдруг поведет себя непредсказуемо. Нужно все триггеры приводить в начальное состояние принудительно. Еще вопрос как Вы используете PLL - как компонент в SOPC Builder'е или "снаружи" ниосовской системы?
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Mar 31 2010, 08:09
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата вообще сильно на тайминги смахивает, точно все законстрейнили Тайминг аналайзер квартуса ни выдает ничего плохого. после PLL у меня тактовая получается 96, максимальная по тайминг аналайзеру - 108, в разделе multiconer timing alalyser summary все норм. Кроме того, если процессора все таки загрузиться, я его гонял больше суток по два раза - ни одной ошибки в рассчетах (там криптографию он считает, ошибки бы сразу вылезли если что) Цитата(vadimuzzz @ Mar 31 2010, 11:46)  но сама ПЛИС сконфигурилась? если flash-programmer`ом в ниос потыкать - проц ему виден? Да. проц видет, system_id получает Цитата(Stewart Little @ Mar 31 2010, 11:53)  Тайминги, тайминги и еще раз тайминги. Это еще не означает, что проект будет функционировать правильно. Зато это может означать, что у Вас не заданы необходимые констрейны. Как в законах Мерфи - "Если Вам кажется, что Ваш проект работает - значит Вы чего-то не заметили"  Мой файл SDC: Код create_clock -name input_clk -period 15.151 [get_ports board_clk] create_clock -name usb_clk -period 20833 [get_ports usb_clk]
create_generated_clock -source usb_clk \ -multiply_by 2 \ -divide_by 1 \ -name pll_clk pll:GLOBAL_PLL|altpll:altpll_component|pll_altpll:auto_generated|wire_pll1_clk[0] Цитата(Stewart Little @ Mar 31 2010, 11:53)  Еще вопрос как Вы используете PLL - как компонент в SOPC Builder'е или "снаружи" ниосовской системы? "Снаружи" nios системы Цитата(vadimuzzz @ Mar 31 2010, 10:54)  я с PLL делал так: ALTCLKCTRL не ставил, PLL "locked" заводил на reset процессора (полярность только правильную сделать). на 120МГц заводил, без сбоев. вопрос про полярность выходв PLL "locked" и NIOS_CPU "reset": для того чтобы ввести процессор в Reset : Reset <= '0'; чтобы вывести из ресета - Reset <= '1'; если PLL залочена то locked в '0' Если разлочена - то в '1'. Соответствено чтобы ресетнуть процессор когда pll теряет lock надо: reset <= not lock. Все правильно?
Сообщение отредактировал Omen_13 - Apr 1 2010, 15:20
Причина редактирования: Оформление кода
|
|
|
|
|
Mar 31 2010, 08:17
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата Тайминг аналайзер квартуса ни выдает ничего плохого warnings есть? Цитата вопрос про полярность выходв PLL "locked" и NIOS_CPU "reset": для того чтобы ввести процессор в Reset : Reset <= '0'; чтобы вывести из ресета - Reset <= '1'; если PLL залочена то locked в '0' Если разлочена - то в '1'. locked - active high (1 в захвате) reset_n у проца - active low (нулем сбрасывается) инвертор не нужен, напрямую.
|
|
|
|
|
Mar 31 2010, 08:22
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
vadimuzzzЯсно,у меня так и было
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Mar 31 2010, 09:39
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(KIM @ Mar 31 2010, 12:22)  warnings есть? Есть варнинги, щас отпишу, проект пересобиру картика из SOPC: Цитата(vadimuzzz @ Mar 31 2010, 12:50)  ну, кроме таймингов на ум ничего не приходит. выкладывайте репорт. картинку в SOPC тоже давайте отчет тайминг аналайзера: Я не указывал раньше - тут два процессора. Оба инитсятся из Onchip mem. То что указывал раньше про один проц - справедливо для обоих процов. Бывает что оба не инитятся, бывает что только один. Еще раз повторюсь что в Onchip все правильно слинковано поскольку частенько при включении все нормально инитится и работает. В общем - нет стабильности
Сообщение отредактировал Omen_13 - Apr 1 2010, 15:23
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 31 2010, 12:36
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Mar 31 2010, 15:47)  про board_clk не понял, он имеет какое-то отношение к системе? В данный момент не имеет, это у меня генератор на 66 МГц стоит на плате, его я пока не использую, раньше использовал, видимо упоминания остались
|
|
|
|
|
Mar 31 2010, 14:00
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
в общем ситауция не поменялась, все так же то рузится то не грузится. С altera_reserved_tck не разобрался, перевернул все *.sdc в проекте, нигде не указывается, варнинг так и есть. Остальные варнинги пропали, Fmax для pll_clk - 108 Мгц.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|