Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конфигурирование ПЛИС микропроцессором.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Prusak
Здравствуйте.
Пытаюсь произвести конфигурацию ПЛИСа на плате S3 Starter Kit. Процесс конфигурации производит микропроцессор путем дергания выводов GPIO. Режим загрузки Slave serial. Проблема одна и таже: ПЛИС не конфигурируется - сигнал Done не устанавливается в 1. Из флешки XCF Kit'а ПЛИС грузится прекрасно. Возможных неиспрвностей я вижу две:
1)Процессор грузит неверные данные.
Для проверки этой версии создал ядро ChipScope, подсоединил к выводу DIN ПЛИС, и вывода на который подал CCLK от процессора. Данные которые выдает процессор совпадают с содержимым bin файла загрузки, и устанавливаются грамотно - т.е сначала данные, потом фронт CCLK. Данные читаются из bin файла 32-х разрядными словами, грузятся - сначала младший бит, потом старший.
2)Неверны сами данные для конфигурации.
Данные для загрузки формировал в Impact'е, (установил галку в пункте создания bin файла). Для проверки второй версии подсоединил ядро ChipScop'a к выходу флешки XCF на плате и произвел чтение с помощь того же CCLK - данные НЕ совпадают с bin файлом (проверил только первые 70 бит).

Вот здесь у меня возникло 2 вопроса:
1)А как правильно сформировать данные для загрузки по serial mode?? Что-то не нашел вразумительной информации по этому поводу кроме XAPP502 (Using a Microprocessor to Configure Xilinx FPGAs via Slave Serial or SelectMAP Mode).
2)В каком порядке грузить данные в ПЛИС в режиме Slave Serial??
aaarrr
На первый взгляд, все правильно. Может быть, запостите кусочек bin-файла (первые 16 байт)?
BSV
Поставьте галочку "Create Binary Configuration File" в опциях "Generate Programming File" ISE. Запустите "Generate Programming File". Используйте тот bin, который генерится (это bit без заголовка). Не забудьте, что CCLK нужно тикать еще не менее 8 тактов после загрузки последнего бита. Проверьте частоту CCLK (уточните по Datasheet'у). Если хотите, могу выслать заготовку программы-загрузчика, которую использовал (вроде работало).
Prusak
Цитата(aaarrr @ Aug 25 2006, 23:06) *
На первый взгляд, все правильно. Может быть, запостите кусочек bin-файла (первые 16 байт)?

Вот, первые 16 байт bin-файла.
Цитата
FF FF FF FF AA 99 55 66 30 00 80 01 00 00 00 07
Прочитал в XAPP452 (Spartan-3 Advanced Configuration Architecture), какая должна быть последовательность конфигурационных данных - первые 16 байт совпадают с указанными там.
Но вот, данные из флеш которые я прочитал в ChipScope - у меня вызывают недоумение:
Цитата
FF FF FF FF 55 32 AA CC C0 03 00 01
Хотя если посмотреть их в бинари - они очень похожи, как будто несколько битов выпало. Частоту CCLK для флеш устанавливал 2МГц и 200КГц.
Prusak
Цитата(BSV @ Aug 25 2006, 23:34) *
Поставьте галочку "Create Binary Configuration File" в опциях "Generate Programming File" ISE. Запустите "Generate Programming File". Используйте тот bin, который генерится (это bit без заголовка). Не забудьте, что CCLK нужно тикать еще не менее 8 тактов после загрузки последнего бита. Проверьте частоту CCLK (уточните по Datasheet'у). Если хотите, могу выслать заготовку программы-загрузчика, которую использовал (вроде работало).
По поводу бинари файла - именно так и делал. Обрезанный bit файл тоже пробовал загружать - результат тот же.
CCLK тоже пробовал тикать даже 30 раз - не помогло. Частоты CCLK пробовал ставить 2МГц и примерно 200КГц.
Я другого не пойму, как правильно грузить данные?? Сначала младший бит, потом старший?? Т.е для моего постинга выше, для второго 32-х разрядного слова оно должно быть перевернуто: 66AA9955?? Не подскажете где найти информацию по этому поводу??
Вышлите мне пожалуйста Вашу программу, может сразу все станет понятно.
aaarrr
Цитата(Prusak @ Aug 26 2006, 01:08) *
Вот, первые 16 байт bin-файла.
Цитата
FF FF FF FF AA 99 55 66 30 00 80 01 00 00 00 07

При таком раскладе у меня получается, что данные нужно толкать старшим битом вперед, а не младшим.
Prusak
Цитата(aaarrr @ Aug 26 2006, 00:27) *
Цитата(Prusak @ Aug 26 2006, 01:08) *

Вот, первые 16 байт bin-файла.
Цитата
FF FF FF FF AA 99 55 66 30 00 80 01 00 00 00 07

При таком раскладе у меня получается, что данные нужно толкать старшим битом вперед, а не младшим.
Ладно попробую в понедельник.
BSV
В своей программе я именно старший бит сначала задвигал.
Harbour
Для альтеры нужно еще 32 такта пустых в конце задвинуть, только потом CONF_DONE подымается - мож и в xilinx'е тоже есть такое. А что разве доки типа "Configuring SRAM based FPGA devices" у Xilinx'а нетути ?
-Al-
Цитата(Harbour @ Aug 26 2006, 08:27) *
Для альтеры нужно еще 32 такта пустых в конце задвинуть, только потом CONF_DONE подымается - мож и в xilinx'е тоже есть такое. А что разве доки типа "Configuring SRAM based FPGA devices" у Xilinx'а нетути ?

Ничего этого не надо, эти такты уже включены в rbf файл, сгенерированный квартусовским ассемблером. Там же об этом в соответствующем документе написано:
Цитата
...Therefore, if the internal oscillator is the initialization clock source, sending the entire configuration file to the device is sufficient to configure and initialize the device. You do not need to provide additional clock cycles externally during the initialization stage...
vladec
Спартан3 из контроллера грузится нормально, проверялось.
1. Грузить байты из bin файла надо со старшего бита.
2. Еще обратите внимание на электрическое соласование сигналов Progr, Din, Cclk, поскольку их входное напряжение 2,5В, то на 3В выходах контроллера должны стоять последовательные резисторы порядка 1к - 2к.
3. Кроме того, по сравнению с более ранними микросхемами Xilinx Спартан3 обнаружил такую особенность: происходит запуск микросхемы в работу еще до загрузки последней порции (нескольких байт) данных и соответственно до установки сигнала Done. Такое преждевременное появление сигналов на ножках сбивало у меня процесс загрузки и я долго не мог понять, в чем дело.

Еще в дополнение не забудьте, как и для других FPGA Xilinx для Спартана3 после сигнала Progr необходимо перед загрузкой выдержать паузу порядка 100мкс.
Harbour
Цитата(-Al- @ Aug 27 2006, 10:19) *
Цитата(Harbour @ Aug 26 2006, 08:27) *

Для альтеры нужно еще 32 такта пустых в конце задвинуть, только потом CONF_DONE подымается - мож и в xilinx'е тоже есть такое. А что разве доки типа "Configuring SRAM based FPGA devices" у Xilinx'а нетути ?

Ничего этого не надо, эти такты уже включены в rbf файл, сгенерированный квартусовским ассемблером. Там же об этом в соответствующем документе написано:
Цитата
...Therefore, if the internal oscillator is the initialization clock source, sending the entire configuration file to the device is sufficient to configure and initialize the device. You do not need to provide additional clock cycles externally during the initialization stage...



Ну я начинал с max-plus и flex'ов - там такого небыло - у меня до сих пор функция загрузки заливает файл, и потом щелкая такты проверяет conf_done - работает железно и для новых и для старых прошивок, хотя в конце rbf'ов quartus стал дописывать хвостик из ff'ов.
Prusak
Слава Богу! Устройство заработало после того, как был изменен порядок загрузки битов - начиная со старшего, как мне все и советовали. Еще пришлось изменить порядок выставления данных на DIN - теперь сначала выставляются данные, потом происходит изменение CCLK от высокого уровня к низкому и снова к высокому, по другому почему-то не работает - ПЛИС через некоторое время выставляет 1 на выводе INIT_B, что свидетельствует о несовпадении контрольных сумм.
Но некоторые вопросы остались: известно, что вывод CCLK может быть переназначен на пользовательский, для этого насколько я понимаю необходимо подключить к проекту примитив Startup_Spartan3, подвести к его выводу CLK пользовательский а также поставить опцию UserCLK в BitGen. Вот только непонятно как ПЛИС узнает какой вывод для CCLK назначен, если данные для конфигурации еще не загружены?? А загружаются они по выводу CCLK??
Еще такой вопрос: для некоторых выводов (например CCLK, Done, Prog и др.) в опциях BitGenа можно задавать pullup резисторы, опять же, все эти настройки вступят в действие после загрузки конфигурации??
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.