реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Конфигурирование ПЛИС микропроцессором., Проблемы с загрузкой.
Prusak
сообщение Aug 25 2006, 19:41
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488



Здравствуйте.
Пытаюсь произвести конфигурацию ПЛИСа на плате 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??
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 25 2006, 20:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



На первый взгляд, все правильно. Может быть, запостите кусочек bin-файла (первые 16 байт)?
Go to the top of the page
 
+Quote Post
BSV
сообщение Aug 25 2006, 20:34
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



Поставьте галочку "Create Binary Configuration File" в опциях "Generate Programming File" ISE. Запустите "Generate Programming File". Используйте тот bin, который генерится (это bit без заголовка). Не забудьте, что CCLK нужно тикать еще не менее 8 тактов после загрузки последнего бита. Проверьте частоту CCLK (уточните по Datasheet'у). Если хотите, могу выслать заготовку программы-загрузчика, которую использовал (вроде работало).

Сообщение отредактировал BSV - Aug 25 2006, 20:38


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
Prusak
сообщение Aug 25 2006, 21:08
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 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КГц.
Go to the top of the page
 
+Quote Post
Prusak
сообщение Aug 25 2006, 21:24
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 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?? Не подскажете где найти информацию по этому поводу??
Вышлите мне пожалуйста Вашу программу, может сразу все станет понятно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 25 2006, 21:27
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Prusak @ Aug 26 2006, 01:08) *
Вот, первые 16 байт bin-файла.
Цитата
FF FF FF FF AA 99 55 66 30 00 80 01 00 00 00 07

При таком раскладе у меня получается, что данные нужно толкать старшим битом вперед, а не младшим.
Go to the top of the page
 
+Quote Post
Prusak
сообщение Aug 25 2006, 21:53
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 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

При таком раскладе у меня получается, что данные нужно толкать старшим битом вперед, а не младшим.
Ладно попробую в понедельник.
Go to the top of the page
 
+Quote Post
BSV
сообщение Aug 25 2006, 22:35
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



В своей программе я именно старший бит сначала задвигал.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
Harbour
сообщение Aug 26 2006, 04:27
Сообщение #9


Местами Гуру
*****

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



Для альтеры нужно еще 32 такта пустых в конце задвинуть, только потом CONF_DONE подымается - мож и в xilinx'е тоже есть такое. А что разве доки типа "Configuring SRAM based FPGA devices" у Xilinx'а нетути ?
Go to the top of the page
 
+Quote Post
-Al-
сообщение Aug 27 2006, 07:19
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
vladec
сообщение Aug 28 2006, 05:20
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 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мкс.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Aug 29 2006, 03:51
Сообщение #12


Местами Гуру
*****

Группа: 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'ов.
Go to the top of the page
 
+Quote Post
Prusak
сообщение Aug 29 2006, 12:30
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488



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

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 10:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.81835 секунд с 7
ELECTRONIX ©2004-2016