KIM 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба Народ помогите плиз. Есть девайс. На нем- cyclone III и USB котроллер cy7c68013 (очень распрастраненный Cypress, может выдавать на Cyclone тактовую в 12, 24 или 48 мегагерц) На циклоне реализован NIOS, программа небольшая и я решил обойтись без бутлоалера - грузить всю прогу сразу в onchip mem. Все работало при заведении тактовой с USB, однако хотелось бы ее увеличить, тем более что тайминг аналайзер сказал что тактовая до 110 Мг подойдет. Как начал использовать PLL - начали появляться странности - нестабильная прогрузка NIOSa. То есть в 90% случаев он загружается нормально, а в остальных то ли виснет толи непойму что. Но явно не корректно заружается. Тактовую на PLL увеличиваю в два раза - получается 96 Мгц. Тайминг аналайзер не выдает ничего плохого -тактовая нормальная, задержек нигде нет. Если NIOS грузиться девайс может работать по несколько суток без единой ошибки - проверял. В чем может быть проблема с загрузкой? Ногу PLL "locked" анализирую - приостанавливаю подачу тактовой на NIOS (мегафукнция ALTCLKCTRL), Жду пока стабилизируется, потом снова подаю. Процессор при этом не ресетю, но пробовал и ресетить, не помогало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба я с PLL делал так: ALTCLKCTRL не ставил, PLL "locked" заводил на reset процессора (полярность только правильную сделать). на 120МГц заводил, без сбоев. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KIM 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба я с PLL делал так: ALTCLKCTRL не ставил, PLL "locked" заводил на reset процессора (полярность только правильную сделать). на 120МГц заводил, без сбоев. Сейчас попробуем, хотя я так тоже пробовал, не сразу я до ALTCLKCTRL дошел, но для чистоты эксперимента, еще разок. Сейчас попробуем, хотя я так тоже пробовал, не сразу я до ALTCLKCTRL дошел, но для чистоты эксперимента, еще разок. Неполучается. Не всегда проходит инициализация. А вы как PLL генерировали? у меня In normal mode, поставил флаг Self reset on lose lock. Вообще я в первый раз pll использую. Может в этом дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба Неполучается. Не всегда проходит инициализация. А вы как PLL генерировали? у меня In normal mode, поставил флаг Self reset on lose lock. Вообще я в первый раз pll использую. Может в этом дело? Self reset я не ставил, у меня кварцевый опорник. а что значит - инициализация не проходит? если прога в on-chip слинкована и вектор сброса на on-chip нацелен, она вместе с sof загружается. вообще сильно на тайминги смахивает, точно все законстрейнили? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KIM 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба Self reset я не ставил, у меня кварцевый опорник. а что значит - инициализация не проходит? если прога в on-chip слинкована и вектор сброса на on-chip нацелен, она вместе с sof загружается. Все правильно, прога слинкована в onchip.я для проверки загрузки прилепил к процессору PIO на выход,первой командой в функции main стоит установление этого PIO в единицу (по умолчанию он в 0), так вот он не устанавливается, то есть на этапе загрузки что то по-видимому происходит с процессором, он не доходит до этого места. программа в Onchip слинкована правильно, поскольку он все-таки загружается правильно в большинстве случаев и норм работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба но сама ПЛИС сконфигурилась? если flash-programmer`ом в ниос потыкать - проц ему виден? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 42 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба Тайминги, тайминги и еще раз тайминги. Тайминг аналайзер не выдает ничего плохого -тактовая нормальная, задержек нигде нет. Это еще не означает, что проект будет функционировать правильно. Зато это может означать, что у Вас не заданы необходимые констрейны. Как в законах Мерфи - "Если Вам кажется, что Ваш проект работает - значит Вы чего-то не заметили" :) Второе, на что нужно обратить внимание - используете ли Вы начальные состояния триггеров по умолчанию? При этом можно нарваться на неприятности, когда проект будет работать корректно сразу после загрузки ПЛИС, а вот после сброса ниоса вдруг поведет себя непредсказуемо. Нужно все триггеры приводить в начальное состояние принудительно. Еще вопрос как Вы используете PLL - как компонент в SOPC Builder'е или "снаружи" ниосовской системы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KIM 0 31 марта, 2010 Опубликовано 31 марта, 2010 (изменено) · Жалоба вообще сильно на тайминги смахивает, точно все законстрейнили Тайминг аналайзер квартуса ни выдает ничего плохого. после PLL у меня тактовая получается 96, максимальная по тайминг аналайзеру - 108, в разделе multiconer timing alalyser summary все норм. Кроме того, если процессора все таки загрузиться, я его гонял больше суток по два раза - ни одной ошибки в рассчетах (там криптографию он считает, ошибки бы сразу вылезли если что) но сама ПЛИС сконфигурилась? если flash-programmer`ом в ниос потыкать - проц ему виден? Да. проц видет, system_id получает Тайминги, тайминги и еще раз тайминги. Это еще не означает, что проект будет функционировать правильно. Зато это может означать, что у Вас не заданы необходимые констрейны. Как в законах Мерфи - "Если Вам кажется, что Ваш проект работает - значит Вы чего-то не заметили" :) Мой файл 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] Еще вопрос как Вы используете PLL - как компонент в SOPC Builder'е или "снаружи" ниосовской системы? "Снаружи" nios системы я с 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. Все правильно? Изменено 1 апреля, 2010 пользователем Omen_13 Оформление кода Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба Тайминг аналайзер квартуса ни выдает ничего плохого warnings есть? вопрос про полярность выходв PLL "locked" и NIOS_CPU "reset": для того чтобы ввести процессор в Reset : Reset <= '0'; чтобы вывести из ресета - Reset <= '1'; если PLL залочена то locked в '0' Если разлочена - то в '1'. locked - active high (1 в захвате) reset_n у проца - active low (нулем сбрасывается) инвертор не нужен, напрямую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KIM 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба vadimuzzz Ясно,у меня так и было Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба ну, кроме таймингов на ум ничего не приходит. выкладывайте репорт. картинку в SOPC тоже давайте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KIM 0 31 марта, 2010 Опубликовано 31 марта, 2010 (изменено) · Жалоба warnings есть? Есть варнинги, щас отпишу, проект пересобиру картика из SOPC: ну, кроме таймингов на ум ничего не приходит. выкладывайте репорт. картинку в SOPC тоже давайте отчет тайминг аналайзера: Я не указывал раньше - тут два процессора. Оба инитсятся из Onchip mem. То что указывал раньше про один проц - справедливо для обоих процов. Бывает что оба не инитятся, бывает что только один. Еще раз повторюсь что в Onchip все правильно слинковано поскольку частенько при включении все нормально инитится и работает. В общем - нет стабильности usb_nios_input_chip.sta.rar Изменено 1 апреля, 2010 пользователем Omen_13 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба так, чтобы последние варнинги убрать добавьте derive_clock_uncertainty: 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 ] derive_clock_uncertainty это даст более точную оценку Fmax. про board_clk не понял, он имеет какое-то отношение к системе? да, еще он про jtag-овский клок ругается(altera_reserved_tck), у него наверное констрейн уже есть, посмотрите в папке проекта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KIM 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба про board_clk не понял, он имеет какое-то отношение к системе? В данный момент не имеет, это у меня генератор на 66 МГц стоит на плате, его я пока не использую, раньше использовал, видимо упоминания остались Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KIM 0 31 марта, 2010 Опубликовано 31 марта, 2010 · Жалоба в общем ситауция не поменялась, все так же то рузится то не грузится. С altera_reserved_tck не разобрался, перевернул все *.sdc в проекте, нигде не указывается, варнинг так и есть. Остальные варнинги пропали, Fmax для pll_clk - 108 Мгц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться