Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка прошивки в FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Sp_dev
Пытаюсь загрузить сформированную прошивку в FPGA *.bin, который формируется в среде XilinxISE9.2 для XC3S200-tq144. Реализован простой счетчик. Контроль входных и выходных сигналов выполняю осциллографом. Все выводы подключены, питание где надо подведено соответствующее. Режим загрузки slave serial, т.е. мастером выступает внешний контроллер. В самом начале, после сброса конфигурации, дожидаюсь сигнала INIT_B. Далее выставляю PROG_B и начинаю побитно записывать данные. В конце жду сигнала DONE. Этот сигнал не появляется. Соответствующие тестовые сигналы с выводов микросхемы не наблюдаю - держатся постоянные уровни. В чем проблема, не понятно. Формат файла очень похож на правду - начало, данные, контрольная сумма, старт. Готов этот файл выслать, если кто захочет посмотреть. Правильно ли я понимаю, что в принципе, достаточно простой загрузки файла и никаких других данных загружать не надо? Также вопрос - тот ли файл прошивки я использую - *.bin? Заранее признателен.
Kedin
1. CCLK должен формировать мастер, т.е. внешний контроллер и по сигналу DONE он еще должен продолжаться вроде бы 8 тактов.
2. При генерации файла прошивки надо указать что прошивка для slave serial, по умолчанию делается проршивка для JTAG
Mig&L
Цитата(Sp_dev @ Sep 23 2008, 15:25) *
Пытаюсь загрузить сформированную прошивку в FPGA *.bin, который формируется в среде XilinxISE9.2 для XC3S200-tq144...

Плата своя или kit? Кабель свой или из kit'a? Побольше информации
Sp_dev
CCLK формируется мастером, конечно. Я пробовал несколько тактов пустых вставлять, не помогает. По поводу установки slave serial - кажется это устанавливал, но сейчас проверю. Плата своя. Загрузка происходит с процессора TI DM642
Very_hard
В xapp098 хорошо описана именно такая загрузка. Поищите на сайте Xilinx. Возможные проблемы - обратная последовательность бит в байте, не выдержаны требуемые тайминги.
Файл Вы используете правильный. Ничего больше загружать не нужно.
В начале вроде бы выставляется в 0 PROG_B, потом ожидается 0 на INIT, потом 1 в PROG_B, ждем 1 на INIT, задержка (100 мкс) и дальше данные с клоком.
Mig&L
*.bin или *bit ? должно быть *bit.
Kedin
Цитата(Sp_dev @ Sep 23 2008, 17:40) *
CCLK формируется мастером, конечно. Я пробовал несколько тактов пустых вставлять, не помогает. По поводу установки slave serial - кажется это устанавливал, но сейчас проверю. Плата своя. Загрузка происходит с процессора TI DM642

Была такая же проблема из-за того что в EDK собирался проект с настройкой -g StartUpClk:JTAGCLK
(прошивка через JTAG), V4FX12 в slave serial грузился через CPLD, тоже не выставлялся DONE, поменял настройку на -g StartUpClk:СCLK сгенерил прошивку, все заработало
Very_hard
Мы используем *.bin файл - все нормально загружается. Вроде у bit-файла нужно заголовок удалять перед загрузкой, не пробовал.
Sp_dev
Использую файл *.bin
Mig&L
Я использую *.bit ? но заголовок отрезаю, размер беру из книжки Кузелин, Кнышев , Зотов.
andrew_b
Цитата(Mig&L @ Sep 23 2008, 16:07) *
Я использую *.bit ? но заголовок отрезаю, размер беру из книжки Кузелин, Кнышев , Зотов.
Это делает САПР. Если у bitgen выставить опцию -g Binary:Yes, будет генерироваться .bin.
Boris_TS
Цитата(Sp_dev)
Правильно ли я понимаю, что в принципе, достаточно простой загрузки файла и никаких других данных загружать не надо?

Правильно, только нужный файл прошивки. Теоретически еще надо добавить около 8 CCLK для процедуры Startup (по умолчанию DONE появляется на 4 CCLK при Startup), но обычно в конце файла прошивки есть "данные" (пустышки), при передачи которых и происходит Startup (если Вы Startup не перевели на USER Clock - опции BitGen)

Цитата(Very_hard)
Также вопрос - тот ли файл прошивки я использую - *.bin?

Да использовать надо *.bin. Bit - это заголовок (формат которого можно найти в одной из тем этой конференции, если чего могу выложить заново) + содержимое bin файла.

Цитата(Very_hard @ Sep 23 2008, 15:42) *
В начале вроде бы выставляется в 0 PROG_B, потом ожидается 0 на INIT, потом 1 в PROG_B, ждем 1 на INIT, задержка (100 мкс) и дальше данные с клоком.

Да где-то так и надо делать (иногда работает и без задержки в 100 мкс). ПЛИС фиксирует данные (DIN) по rising edge CCLK.

Есть еще одни саперские грабли на которые периодически наступают: у последней загружаемой в цепочке ПЛИС в опциях BitGen надо поставить Done_Drive_High. У вас, я так понял, ПЛИС в цепочке единственная - проверьте наличие этой галочки.
Mig&L
Попробуйте дать побольше задержку после подачи питания и началом загрузки прошивки
Михаил_K
Цитата(Mig&L @ Sep 23 2008, 16:43) *
Попробуйте дать побольше задержку после подачи питания и началом загрузки прошивки

1. Для указанного плиса пофигу какой файл грузить *.bit или *.bin. Она сама заголовок отрезает.
2. В настройках bitgen посмотрите установку start-up clock
3. Если мне не изменяет память, в файле bin биты в байтах переставлены местами.

Вообще, чтобы создать файл для загрузки через микроконтроллер, сделайте его из файла bit при помощи утилиты iMPACT.

Во время загрузки контролируйте init. Если он упадет, значит ошибка в данных.
Boris_TS
Цитата(Михаил_K @ Sep 23 2008, 16:58) *
1. Для указанного плиса пофигу какой файл грузить *.bit или *.bin. Она сама заголовок отрезает.

ПЛИС'а - она конечно "умная" но не настолько, чтобы самой понимать: где заголовок, а где нет.
Конфигурационная последовательность начинается со слов синхронизвции, вот после получения этих слов и начинается обработка команд в BitStream. Но кто гарантирует, что в заголовке (случайно) не сложатся байтики в эти самые "словеса синхронизации" ???

Поэму, во избежания проблем конфигурирования, Xilinx предлагает для непосредственной загрузки "чистый" BitStream, записываемый в *.bin файл.
Sp_dev
Всем спасибо. С учетом ваших замечаний и последующей корректировки кода все заработало.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.