Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка Spartan 3 с помощью микроконтроллера
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
VLADIMIR-89-
Имеется плата со Spartan 3(xc3s200) и МК LPC2368. Задача состоит в приеме по езернету файла конфигурации спартана, и прошивке ее в режиме slave serial mode через ssp МК. Для начала хочется вкомпилить файл конфигурации спартана в прошивку МК, ну и попробовать пошить плис.
Собственно вопрос: Как использовать *isc файл для конфигурирования (загружать с конца или начала,можно ли сделать элементы не по 64 бита а по 32 , заложен ли в нем ARRAY_ID),какова макс частота загрузки? Заранее спасибо.
aaarrr
Цитата(VLADIMIR-89- @ Mar 31 2012, 00:09) *
Собственно вопрос: Как использовать *isc файл для конфигурирования (загружать с конца или начала,можно ли сделать элементы не по 64 бита а по 32 , заложен ли в нем ARRAY_ID),какова макс частота загрузки? Заранее спасибо.

А зачем isc, если можно сделать нормальный bin?
VLADIMIR-89-
Цитата
А зачем isc, если можно сделать нормальный bin?

Ну я вообще новичек в этой теме. До этого с МК почти не работал. Плис грузил через житаг(*bit). *isc по тому ,что можно в прогу для МК запихнуть в виде с-массива. А что делать с bin не понятно. Может его конвертануть как то можно?
aaarrr
Цитата(VLADIMIR-89- @ Mar 31 2012, 00:48) *
Может его конвертануть как то можно?

В МК его можно поместить любым удобным способом - в виде C-массива, просто как bin-файл через ассемблер или линкер. Совсем хорошо будет его предварительно сжать, т.к. объем большой.

А дальше просто сливаем весь поток через SSP. Единственный момент - нужно при генерации указать правильный bit order.
VLADIMIR-89-
Если использовать стандартную ф-ию сжатия ISE-вского битгена, можно ли, не используя декомпрессию, сразу заливать этот файл?


SSP работае в SPI режиме, не может ли быть проблем с синхронизацией на стороне плис, т.к. CCLK будет продать между посылками пакетов?
Bad0512
Цитата(VLADIMIR-89- @ Mar 31 2012, 22:50) *
Если использовать стандартную ф-ию сжатия ISE-вского битгена, можно ли, не используя декомпрессию, сразу заливать этот файл?


SSP работае в SPI режиме, не может ли быть проблем с синхронизацией на стороне плис, т.к. CCLK будет продать между посылками пакетов?

Общий порядок действий примерно такой :
1.Дёргаете PROG в 0, потом обратно в 1.
2. Ждёте пока INIT вскочит в 1. Ну или просто тупо ждёте какое-то время (какое - см. в даташите).
3. выпихиваете данные, сопровождая их клоками CCLK. Старшим битом вперёд, если мне склероз не изменяет.
4. В конце добавьте ещё несколько (к примеру 8) клоков дабы не морочиться startup events.
5. Проверяете DONE - если в 1, то всё ок, иначе - проблема, ищете в чём причина.

З Ы CCLK может пропадать совсем, это не страшно. Важно не подавать CCLK пока не пройдёт очистка конфигурации, т.е. после того как дёрнули PROG и до момента когда INIT станет в 1.
aaarrr
Цитата(VLADIMIR-89- @ Mar 31 2012, 19:50) *
Если использовать стандартную ф-ию сжатия ISE-вского битгена, можно ли, не используя декомпрессию, сразу заливать этот файл?

Внутри ПЛИС декомпрессора тоже нет, так что придется напрячь процессор.

Цитата(VLADIMIR-89- @ Mar 31 2012, 19:50) *
SSP работае в SPI режиме, не может ли быть проблем с синхронизацией на стороне плис, т.к. CCLK будет продать между посылками пакетов?

"продать" - следует читать "пропадать"?

Как раз так и нужно - если будут клоки между пакетами, то ПЛИС словит мусор и не загрузится.
XVR
Цитата(VLADIMIR-89- @ Mar 31 2012, 19:50) *
Если использовать стандартную ф-ию сжатия ISE-вского битгена, можно ли, не используя декомпрессию, сразу заливать этот файл?
Можно, но степень компрессии там практически нулевая. Так что лучше добавить свой (хотя бы банальный ZLE, т.е. упаковку следующих подряд нулей)

eugen_pcad_ru
А пакеты от компа приходят? Может просто перенаправить от езернета в SSP при загрузке ПО компа?
VLADIMIR-89-
Цитата
А пакеты от компа приходят? Может просто перенаправить от езернета в SSP при загрузке ПО компа?

Ну вообще, в конечном итоге так и должно происходить. Только вот только с загрузкой спартана даже из памяти микроконтроллера пока разобраться не получается - уже и разные битрейты и порядки бит в байтах перепробовал, и вместо спиая - жпио. Бестолку crying.gif
SolderMan
Некоторое время назад я делал уже подобное. Заливал прошивку в FPGA (XC3S400) при помощи PIC24 тупо дёргая ногами. Скачай исходники (pic24_firmware.zip) тут: http://speccyland.net/index.php?option=com...0&Itemid=16. Там, думаю, всё понятно.
Art55555
Цитата(Bad0512 @ Mar 31 2012, 20:31) *
Общий порядок действий примерно такой :
1.Дёргаете PROG в 0, потом обратно в 1.
2. Ждёте пока INIT вскочит в 1. Ну или просто тупо ждёте какое-то время (какое - см. в даташите).
3. выпихиваете данные, сопровождая их клоками CCLK. Старшим битом вперёд, если мне склероз не изменяет.
4. В конце добавьте ещё несколько (к примеру 8) клоков дабы не морочиться startup events.
5. Проверяете DONE - если в 1, то всё ок, иначе - проблема, ищете в чём причина.

З Ы CCLK может пропадать совсем, это не страшно. Важно не подавать CCLK пока не пройдёт очистка конфигурации, т.е. после того как дёрнули PROG и до момента когда INIT станет в 1.


Всё так и делаем. Наблюдаем следующую картину: в процессе загрузки по каким-то причинам падает INIT в 0 и больше не встаёт. Соответственно, загрузка не происходит. В чём может быть причина?
Apast
Цитата(Art55555 @ Apr 5 2012, 12:28) *
Всё так и делаем. Наблюдаем следующую картину: в процессе загрузки по каким-то причинам падает INIT в 0 и больше не встаёт. Соответственно, загрузка не происходит. В чём может быть причина?


Обычно INIT падает в 0 по причине ошибок, в загрузочном файле есть контрольные суммы, автомат FPGA считает их и сверяет, если не
совпадает то снимает этот сигнал. Еще иногда, я сталкивался с этим сам, некоторые чипы, не конкретные типы а именно чипы, снимают
сигнал INIT в конце загрузки т.е. когда весь функционал загрузился а вырабатываются клоки необходимые для нормального запуска
FPGA. Приходилось в конце отключать проверку INIT, и чип нормально грузился, т.е. выставлял DONE и работал.
Art55555
Цитата(Apast @ Apr 5 2012, 15:24) *
Обычно INIT падает в 0 по причине ошибок, в загрузочном файле есть контрольные суммы, автомат FPGA считает их и сверяет, если не
совпадает то снимает этот сигнал. Еще иногда, я сталкивался с этим сам, некоторые чипы, не конкретные типы а именно чипы, снимают
сигнал INIT в конце загрузки т.е. когда весь функционал загрузился а вырабатываются клоки необходимые для нормального запуска
FPGA. Приходилось в конце отключать проверку INIT, и чип нормально грузился, т.е. выставлял DONE и работал.

Надо попробавать. А как отключить проверку INIT?
VLADIMIR-89-
Всем спасибо. Все работает. biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.