Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Требуется помощь Cyclone IV
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Erepb
Доброго времени суток, уважаемые форумчане!
Первый раз работаю с 4 циклоном и сразу же проблема с прошиванием...
И так, что имеем: EP4CGX110 в корпусе F484, прошивка выбрана PS с микропроцессорного модуля Intel Atom совместно с Intel PCH EG20T, который обеспечивает доступ к портам GPIO, по которым идет прогрузка ПЛИС.
MSEL0=0
MSEL1=0
MSEL2=0
MSEL3=+2,5В
Загрузка прошивки, по осциллографу, проходит верно, но CONF_DONE не выходит в высокий уровень. ПЛИС откликается (nSTATUS), если дергать nCONFIG. RBF правильно отправляется на ПЛИС. Единственное, что есть непонятного, это подключенные к +3,3В порты TCK, TMS, TDI (почему так - не знаю, я занимаюсь программированием в данном проекте). По плате смотрели осциллографом - сигналы данных и такта до ПЛИС доходят... Почему не прожигается - не понимаю sad.gif Вроде бы, уже и паузы делали между выводом ПЛИС в состояние конфигурации, и делали паузы после того, как вся RBF загрузится в ПЛИС, но результата ноль. Может кто что подскажет? Если требуется, то с работы смогу скинуть схему платы и сам код прожига с процессора.
Cosworth
А вопрос, пуллап на CONF_DONE имеется ли? Вообще схему бы посмотреть конечно.
SM
А не забыли 16 (или сколько там, не помню уже) пустых тактов на загрузочный клок выдать по окончании передачи битового потока? Потому как CONF_DONE появляется вроде как на такт позже после передачи всего RBF, а INIT_DONE еще через сколько-то там тактов.

Насчет пуллапов вопрос верный, только они обязательно нужны не только на CONF_DONE, а еще и на INIT_DONE, и на nStatus (если где-то забыть, то загрузка не удастся вообще)
Erepb
Прикрепил схему подключения ПЛИС. Там выводы сокращенно написаны - CONF->nCONFIG, CNFD->CONFIG_DONE, STAT->nSTATUS.
По-поводу тактов: делали 20 пустых - никакого эффекта, увеличивая на 10 тактов довели число пустых до 100 - тоже нет результата sm.gif
SM
Цитата(Erepb @ Sep 1 2014, 11:45) *
Прикрепил схему подключения ПЛИС


Не видно подтяжки на INIT_DONE (без нее, на сколько я помню, CONF_DONE не поднимается). Да и на nCONFIG тоже подтяжки нет... Хотя, подозреваю, что она на другом конце разъема, но, все равно...
Erepb
Цитата(SM @ Sep 1 2014, 11:50) *
Не видно подтяжки на INIT_DONE (без нее, на сколько я помню, CONF_DONE не поднимается). Да и на nCONFIG тоже подтяжки нет... Хотя, подозреваю, что она на другом конце разъема, но, все равно...


nCONFIG подтягивается до +3.3В через порт GPIO на самом процессоре. На схеме CONF_DONE и nSTATUS через 10кОм подключены к +3,3В, а не к +1,5В - не глядя кусок перекинул, моя неточность... А INIT_DONE где выведен? Вроде в handbook'e написано, что сигнал внутренний и вывести его наружу нельзя на этом Циклоне... Вроде бы,когда все делали пользовались мануалами Configuration and Remote System Upgrades in Cyclone IV Devices и Cyclone IV device handbook.
iosifk
Цитата(SM @ Sep 1 2014, 09:47) *
А не забыли 16 (или сколько там, не помню уже) пустых тактов на загрузочный клок выдать по окончании передачи битового потока? Потому как CONF_DONE появляется вроде как на такт позже после передачи всего RBF, а INIT_DONE еще через сколько-то там тактов.

Насчет пуллапов вопрос верный, только они обязательно нужны не только на CONF_DONE, а еще и на INIT_DONE, и на nStatus (если где-то забыть, то загрузка не удастся вообще)


Импульсы нужны обязательно, чтобы автомат отвечающий за загрузку внутри ПЛИС смог перейти от режима загрузко в пользовательский режим...
Фронты импульсов чистые?
Пробовали уменьшить частоту?
Вообще загрузка от микропроцессора обычно подробна расписана в аппликухах вместе с исходными кодами.
SM
Цитата(Erepb @ Sep 1 2014, 12:23) *
написано, что сигнал внутренний


Не, ну если в этой конкретной микрухе это так, то и подтягивать его не надо sm.gif

Тогда, смотрите, чтобы биты в нужной последовательности шли, и чтобы сигналы были качественными, в смысле согласования, то есть без звона, с нужными уровнями, скоростями нарастания фронтов, и без превышений по звону/выбросам.
Erepb
Цитата(iosifk @ Sep 1 2014, 12:27) *
Импульсы нужны обязательно, чтобы автомат отвечающий за загрузку внутри ПЛИС смог перейти от режима загрузко в пользовательский режим...
Фронты импульсов чистые?
Пробовали уменьшить частоту?
Вообще загрузка от микропроцессора обычно подробна расписана в аппликухах вместе с исходными кодами.


В течение дня попробую осциллограмму скинуть. Частоту уменьшать не пробовали. Фронты чистые, пробовали как по переднему, так и по заднему фронту тактировать. Так по этой инструкции и написали программу sm.gif Пробовали просто ножками GPIO на nCONFIG подавать 0 и 1, чтобы получить ответ от ПЛИС по nSTATUS - работает, отклики правильные, но прошивка не становится... Уже прошивку уменьшили до того, чтобы просто диод загорался - никак... Такая же прошивка на отладочной плате, только прошитая через AS работает корректно. Вот и не знаем уже, что тут может быть еще. Обе бракованные или обе непропаяны - одну даже перекатали, результата пока нет.
SM
Еще, в алгоритме, не забыли, что нулевой бит конфигурации должен быть выставлен перед первым фронтом такта, за время, не менее tDSU ?
Cosworth
Не знаю, насколько это важно, у Вас на схеме подтяжка к 1.5В, а MSEL к 2.5В (VCCA). В хэндбуке есть такая фраза:
Цитата
You must connect the pull-up resistor to the same supply voltage as the VCCA supply.

Stewart Little
Цитата(Erepb @ Sep 1 2014, 12:23) *
А INIT_DONE где выведен? Вроде в handbook'e написано, что сигнал внутренний и вывести его наружу нельзя на этом Циклоне... Вроде бы,когда все делали пользовались мануалами Configuration and Remote System Upgrades in Cyclone IV Devices и Cyclone IV device handbook.

Ну, вообще-то в хендбуке написано, что INIT_DONE не внутренний, а опциональный. Он может быть разрешен в "Device and Pin Options". В описании режима Passive Serial про использование INIT_DONE говорится в явном виде:
Цитата
INIT_DONE is released and pulled high when initialization is complete. The external
host device must be able to detect this low-to-high transition which signals the device
has entered user mode. When initialization is complete, the device enters user mode.
In user mode, the user I/O pins no longer have weak pull-up resistors and function as
assigned in your design.

INIT_DONE для EP4CGX100CF23 (который FBGA 484) выходит на вывод W8 - см. документ "EP4CGX110 Pin-Outs" : http://www.altera.com/literature/dp/cyclone-iv/EP4CGX110.pdf
Ну и в Pin Planner'е:
Erepb
Cosworth, не, там на самом деле идет +3.3В, это я ошибся, когда выдрал кусок схемы с другого листа...

Цитата(Stewart Little @ Sep 1 2014, 14:29) *
Ну, вообще-то в хендбуке написано, что INIT_DONE не внутренний, а опциональный. Он может быть разрешен в "Device and Pin Options". В описании режима Passive Serial про использование INIT_DONE говорится в явном виде:

INIT_DONE для EP4CGX100CF23 (который FBGA 484) выходит на вывод W8 - см. документ "EP4CGX110 Pin-Outs" : http://www.altera.com/literature/dp/cyclone-iv/EP4CGX110.pdf
Ну и в Pin Planner'е:


А вот я его и не заметил...


Цитата(SM @ Sep 1 2014, 12:53) *
Еще, в алгоритме, не забыли, что нулевой бит конфигурации должен быть выставлен перед первым фронтом такта, за время, не менее tDSU ?

Надо проверить, но, вроде бы, так и делали.
SM
Цитата(Erepb @ Sep 1 2014, 15:58) *
А вот я его и не заметил...


Ну он там не dedicated, так что, проверьте лишь то, что в опциях проекта не стоит "Enable INIT_DONE"
ViKo
Вряд ли INIT_DONE влияет на процесс загрузки. Это чисто информационный сигнал.
SM
У альтеры есть такое, что некоторые сигналы используются и внутри чипа, но при этом берутся с ножки микросхемы, а не со внутреннего сигнала. В таком случае из-за отсутствия пуллапа ПЛИС не выходит в user mode, при том, что все остальное правильно сделано. Я на это нарывался уже в начале пути... Но я уже точно не помню, был ли это именно INIT_DONE, возможно, CONF_DONE.
maksimp
Цитата(Erepb @ Sep 1 2014, 10:45) *
По-поводу тактов: делали 20 пустых - никакого эффекта, увеличивая на 10 тактов довели число пустых до 100 - тоже нет результата sm.gif

Даиташит страница 8-7 - нужно 3192 пустых тактов.
Stewart Little
Цитата(maksimp @ Sep 1 2014, 22:03) *
Даиташит страница 8-7 - нужно 3192 пустых тактов.

Это только в том случае, если используется CLKUSR.
Если он не используется, то:
Цитата
When using the internal oscillator, you do not have to send additional clock cycles from an external source to the CLKUSR pin during the initialization stage.

Там же, стр.8-33:
Цитата
Two DCLK falling edges are required after CONF_DONE goes high to begin the initialization of the device.
Stewart Little
Разбираемся дальше.

Цитата(Erepb @ Sep 1 2014, 12:23) *
nCONFIG подтягивается до +3.3В через порт GPIO на самом процессоре.

Altera утверждает, что этого недостаточно. Подтягивающий резистор (pullup или puldown) нужен обязательно:
http://www.altera.com/support/kdb/solution...302011_751.html

Цитата
Yes, a pull-up or pull-down resistor helps keep the nCONFIG line in a known state when the external host (a Max® II CPLD or a microcontroller) is not driving the line (for example, during external host reprogramming or power-up where the I/O driving nCONFIG may be tri-stated). If a pull-up resistor is added to the nCONFIG line, the FPGA stays in user mode if the external host is being reprogrammed. If a pull-down resistor is added to the nCONFIG line, the FPGA goes into reset mode if the external host is being reprogrammed.

Whenever the nCONFIG line is released high, ensure the first DCLK and DATA are not driven unintentionally. Altera recommends to keep the nCONFIG line low if the external host or the FPGA is not ready for configuration.
ViKo
Я проверил бы соединение всех нужных выводов с землей и питаниями.
sysel
Конфигурация из .rbf шлется LSB-first, т.е. каждый байт из файла надо выворачивать наизнанку, если у вас SPI порт работает в режиме MSB-first.
(см. http://www.altera.com/literature/hb/cyclon.../cyiv-51008.pdf, стр. 33)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.