|
|
  |
Конфигурирование ПЛИС микропроцессором., Проблемы с загрузкой. |
|
|
|
Aug 25 2006, 21:08
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(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КГц.
|
|
|
|
|
Aug 25 2006, 21:24
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(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?? Не подскажете где найти информацию по этому поводу?? Вышлите мне пожалуйста Вашу программу, может сразу все станет понятно.
|
|
|
|
|
Aug 25 2006, 21:53
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Цитата(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 При таком раскладе у меня получается, что данные нужно толкать старшим битом вперед, а не младшим. Ладно попробую в понедельник.
|
|
|
|
|
Aug 27 2006, 07:19
|

Местный
  
Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894

|
Цитата(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...
Сообщение отредактировал -Al- - Aug 27 2006, 07:25
|
|
|
|
|
Aug 28 2006, 05:20
|
Профессионал
    
Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158

|
Спартан3 из контроллера грузится нормально, проверялось. 1. Грузить байты из bin файла надо со старшего бита. 2. Еще обратите внимание на электрическое соласование сигналов Progr, Din, Cclk, поскольку их входное напряжение 2,5В, то на 3В выходах контроллера должны стоять последовательные резисторы порядка 1к - 2к. 3. Кроме того, по сравнению с более ранними микросхемами Xilinx Спартан3 обнаружил такую особенность: происходит запуск микросхемы в работу еще до загрузки последней порции (нескольких байт) данных и соответственно до установки сигнала Done. Такое преждевременное появление сигналов на ножках сбивало у меня процесс загрузки и я долго не мог понять, в чем дело.
Еще в дополнение не забудьте, как и для других FPGA Xilinx для Спартана3 после сигнала Progr необходимо перед загрузкой выдержать паузу порядка 100мкс.
|
|
|
|
|
Aug 29 2006, 03:51
|

Местами Гуру
    
Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323

|
Цитата(-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'ов.
|
|
|
|
|
Aug 29 2006, 12:30
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488

|
Слава Богу! Устройство заработало после того, как был изменен порядок загрузки битов - начиная со старшего, как мне все и советовали. Еще пришлось изменить порядок выставления данных на DIN - теперь сначала выставляются данные, потом происходит изменение CCLK от высокого уровня к низкому и снова к высокому, по другому почему-то не работает - ПЛИС через некоторое время выставляет 1 на выводе INIT_B, что свидетельствует о несовпадении контрольных сумм. Но некоторые вопросы остались: известно, что вывод CCLK может быть переназначен на пользовательский, для этого насколько я понимаю необходимо подключить к проекту примитив Startup_Spartan3, подвести к его выводу CLK пользовательский а также поставить опцию UserCLK в BitGen. Вот только непонятно как ПЛИС узнает какой вывод для CCLK назначен, если данные для конфигурации еще не загружены?? А загружаются они по выводу CCLK?? Еще такой вопрос: для некоторых выводов (например CCLK, Done, Prog и др.) в опциях BitGenа можно задавать pullup резисторы, опять же, все эти настройки вступят в действие после загрузки конфигурации??
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|