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

Загрузка Spartan 3 с помощью микроконтроллера

Имеется плата со Spartan 3(xc3s200) и МК LPC2368. Задача состоит в приеме по езернету файла конфигурации спартана, и прошивке ее в режиме slave serial mode через ssp МК. Для начала хочется вкомпилить файл конфигурации спартана в прошивку МК, ну и попробовать пошить плис.

Собственно вопрос: Как использовать *isc файл для конфигурирования (загружать с конца или начала,можно ли сделать элементы не по 64 бита а по 32 , заложен ли в нем ARRAY_ID),какова макс частота загрузки? Заранее спасибо.

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


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

Собственно вопрос: Как использовать *isc файл для конфигурирования (загружать с конца или начала,можно ли сделать элементы не по 64 бита а по 32 , заложен ли в нем ARRAY_ID),какова макс частота загрузки? Заранее спасибо.

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

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


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

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

Ну я вообще новичек в этой теме. До этого с МК почти не работал. Плис грузил через житаг(*bit). *isc по тому ,что можно в прогу для МК запихнуть в виде с-массива. А что делать с bin не понятно. Может его конвертануть как то можно?

 

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


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

Может его конвертануть как то можно?

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

 

А дальше просто сливаем весь поток через SSP. Единственный момент - нужно при генерации указать правильный bit order.

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


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

Если использовать стандартную ф-ию сжатия ISE-вского битгена, можно ли, не используя декомпрессию, сразу заливать этот файл?

 

 

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

 

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


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

Если использовать стандартную ф-ию сжатия 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.

 

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


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

Если использовать стандартную ф-ию сжатия ISE-вского битгена, можно ли, не используя декомпрессию, сразу заливать этот файл?

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

 

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

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

 

Как раз так и нужно - если будут клоки между пакетами, то ПЛИС словит мусор и не загрузится.

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


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

Если использовать стандартную ф-ию сжатия ISE-вского битгена, можно ли, не используя декомпрессию, сразу заливать этот файл?
Можно, но степень компрессии там практически нулевая. Так что лучше добавить свой (хотя бы банальный ZLE, т.е. упаковку следующих подряд нулей)

 

 

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


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

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

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


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

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

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

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


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

Некоторое время назад я делал уже подобное. Заливал прошивку в FPGA (XC3S400) при помощи PIC24 тупо дёргая ногами. Скачай исходники (pic24_firmware.zip) тут: http://speccyland.net/index.php?option=com...0&Itemid=16. Там, думаю, всё понятно.

 

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


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

Общий порядок действий примерно такой :

1.Дёргаете PROG в 0, потом обратно в 1.

2. Ждёте пока INIT вскочит в 1. Ну или просто тупо ждёте какое-то время (какое - см. в даташите).

3. выпихиваете данные, сопровождая их клоками CCLK. Старшим битом вперёд, если мне склероз не изменяет.

4. В конце добавьте ещё несколько (к примеру 8) клоков дабы не морочиться startup events.

5. Проверяете DONE - если в 1, то всё ок, иначе - проблема, ищете в чём причина.

 

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

 

Всё так и делаем. Наблюдаем следующую картину: в процессе загрузки по каким-то причинам падает INIT в 0 и больше не встаёт. Соответственно, загрузка не происходит. В чём может быть причина?

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


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

Всё так и делаем. Наблюдаем следующую картину: в процессе загрузки по каким-то причинам падает INIT в 0 и больше не встаёт. Соответственно, загрузка не происходит. В чём может быть причина?

 

Обычно INIT падает в 0 по причине ошибок, в загрузочном файле есть контрольные суммы, автомат FPGA считает их и сверяет, если не

совпадает то снимает этот сигнал. Еще иногда, я сталкивался с этим сам, некоторые чипы, не конкретные типы а именно чипы, снимают

сигнал INIT в конце загрузки т.е. когда весь функционал загрузился а вырабатываются клоки необходимые для нормального запуска

FPGA. Приходилось в конце отключать проверку INIT, и чип нормально грузился, т.е. выставлял DONE и работал.

 

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


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

Обычно INIT падает в 0 по причине ошибок, в загрузочном файле есть контрольные суммы, автомат FPGA считает их и сверяет, если не

совпадает то снимает этот сигнал. Еще иногда, я сталкивался с этим сам, некоторые чипы, не конкретные типы а именно чипы, снимают

сигнал INIT в конце загрузки т.е. когда весь функционал загрузился а вырабатываются клоки необходимые для нормального запуска

FPGA. Приходилось в конце отключать проверку INIT, и чип нормально грузился, т.е. выставлял DONE и работал.

Надо попробавать. А как отключить проверку INIT?

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...