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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Проблема со Spartan3, Программируется XC3S200
sergeeff
сообщение Dec 14 2006, 12:08
Сообщение #1


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Получили новую плату, на которой стоит XC3S200. Программируется от процессора в режиме Slave Parallel.
В Xilinx ISE сделали простейший проект - на одну ногу, объявленную как вход - подаем импульсы. Через инвертор транслируем этот сигнал в FPGA на выходной pin. Получаем bin file, грузим его в FPGA (по окончании загрузки получаем сигнал DONE). Смотрим на выходном pin'e - глухо висит "1".

Может есть какие мысли у знатоков Xilinx'a?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Dec 14 2006, 13:58
Сообщение #2


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Вы бы хоть версию ПО указали.
Почитайте errata на ваш чип. Может, чего найдете.
Go to the top of the page
 
+Quote Post
makc
сообщение Dec 14 2006, 14:39
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(sergeeff @ Dec 14 2006, 12:08) *
Получили новую плату, на которой стоит XC3S200. Программируется от процессора в режиме Slave Parallel.
В Xilinx ISE сделали простейший проект - на одну ногу, объявленную как вход - подаем импульсы. Через инвертор транслируем этот сигнал в FPGA на выходной pin. Получаем bin file, грузим его в FPGA (по окончании загрузки получаем сигнал DONE). Смотрим на выходном pin'e - глухо висит "1".

Может есть какие мысли у знатоков Xilinx'a?


Как грузите? Проблема похожа на отсуствие дополнительных тактов на CCLK, необходимых для инициализации ПЛИС. Т.е. попробуйте в прошивку процессора добавить выдачу дополнительных тактов на CCLK (сверх тех, которые необходимы для передачи данных прошивки), хотя бы в количестве 8.

Еще советую проверить настройки StartUp clock, используемые при генерации bit-файла.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Dec 14 2006, 15:15
Сообщение #4


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Попробовал увеличить количество CCLK - ноль эффекта.

Вот наши установки в пакете:

Release 7.1i - Bitgen H.38

D:/Xilinx/bin/nt/bitgen.exe -intstyle ise -w -g DebugBitstream:No -g Binary:no -g CRC:Enable -g ConfigRate:6 -g CclkPin:PullUp -g M0Pin:PullUp -g M1Pin:PullUp -g M2Pin:PullUp -g ProgPin:PullUp -g DonePin:PullUp -g TckPin:PullUp -g TdiPin:PullUp -g TdoPin:PullUp -g TmsPin:PullUp -g UnusedPin:PullDown -g UserID:0xFFFFFFFF -g DCIUpdateMode:AsRequired -g StartUpClk:CClk -g DONE_cycle:4 -g GTS_cycle:5 -g GWE_cycle:6 -g LCK_cycle:NoWait -g Security:None -g DonePipe:No -g DriveDone:No F170001_main.ncd
Release 7.1i - Bitgen H.38

D:/Xilinx/bin/nt/bitgen.exe -intstyle ise -w -g DebugBitstream:No -g Binary:no -g CRC:Enable -g ConfigRate:6 -g CclkPin:PullUp -g M0Pin:PullUp -g M1Pin:PullUp -g M2Pin:PullUp -g ProgPin:PullUp -g DonePin:PullUp -g TckPin:PullUp -g TdiPin:PullUp -g TdoPin:PullUp -g TmsPin:PullUp -g UnusedPin:PullDown -g UserID:0xFFFFFFFF -g DCIUpdateMode:AsRequired -g StartUpClk:CClk -g DONE_cycle:4 -g GTS_cycle:5 -g GWE_cycle:6 -g LCK_cycle:NoWait -g Security:None -g DonePipe:No -g DriveDone:No F170001_main.ncd

Summary of Bitgen Options:
+----------------------+----------------------+
| Option Name | Current Setting |
+----------------------+----------------------+
| Compress | (Not Specified)* |
+----------------------+----------------------+
| Readback | (Not Specified)* |
+----------------------+----------------------+
| CRC | Enable** |
+----------------------+----------------------+
| DebugBitstream | No** |
+----------------------+----------------------+
| ConfigRate | 6** |
+----------------------+----------------------+
| StartupClk | Cclk** |
+----------------------+----------------------+
| DCMShutdown | Disable* |
+----------------------+----------------------+
| DCIUpdateMode | AsRequired** |
+----------------------+----------------------+
| CclkPin | Pullup** |
+----------------------+----------------------+
| DonePin | Pullup** |
+----------------------+----------------------+
| HswapenPin | Pullup* |
+----------------------+----------------------+
| M0Pin | Pullup** |
+----------------------+----------------------+
| M1Pin | Pullup** |
+----------------------+----------------------+
| M2Pin | Pullup** |
+----------------------+----------------------+
| ProgPin | Pullup** |
+----------------------+----------------------+
| TckPin | Pullup** |
+----------------------+----------------------+
| TdiPin | Pullup** |
+----------------------+----------------------+
| TdoPin | Pullup** |
+----------------------+----------------------+
| TmsPin | Pullup** |
+----------------------+----------------------+
| UnusedPin | Pulldown** |
+----------------------+----------------------+
| GWE_cycle | 6** |
+----------------------+----------------------+
| GTS_cycle | 5** |
+----------------------+----------------------+
| LCK_cycle | NoWait** |
+----------------------+----------------------+
| Match_cycle | Auto* |
+----------------------+----------------------+
| DONE_cycle | 4** |
+----------------------+----------------------+
| Persist | No* |
+----------------------+----------------------+
| DriveDone | No** |
+----------------------+----------------------+
| DonePipe | No** |
+----------------------+----------------------+
| Security | None** |
+----------------------+----------------------+
| UserID | 0xFFFFFFFF** |
+----------------------+----------------------+
| ActivateGclk | No* |
+----------------------+----------------------+
| ActiveReconfig | No* |
+----------------------+----------------------+
| PartialMask0 | (Not Specified)* |
+----------------------+----------------------+
| PartialMask1 | (Not Specified)* |
+----------------------+----------------------+
| PartialMask2 | (Not Specified)* |
+----------------------+----------------------+
| PartialGclk | (Not Specified)* |
+----------------------+----------------------+
| PartialLeft | (Not Specified)* |
+----------------------+----------------------+
| PartialRight | (Not Specified)* |
+----------------------+----------------------+
| IEEE1532 | No* |
+----------------------+----------------------+
| Binary | No** |
+----------------------+----------------------+
* Default setting.
** The specified setting matches the default setting.
.
[size=7]
Go to the top of the page
 
+Quote Post
Apast
сообщение Dec 14 2006, 16:11
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 224
Регистрация: 22-06-04
Из: Новосибирск
Пользователь №: 87



Была у меня подобная проблема, правда на SLAVE SERIAL, тоже грузилась нормально выставляла DONE но не работала. После долгих поисков выяснил что монтажник упустил и не запоял подтягиваещий резистр на сигнале INIT_B. После исправления оплошности проблема исчезла.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Dec 15 2006, 00:22
Сообщение #6


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



ИНтересно. Поглядим в понедельник. Да, убедились, что при заливке через JTAG все работает. Явно что-то на плате не удачно разведено.
Go to the top of the page
 
+Quote Post
makc
сообщение Dec 15 2006, 08:49
Сообщение #7


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(sergeeff @ Dec 15 2006, 00:22) *
ИНтересно. Поглядим в понедельник. Да, убедились, что при заливке через JTAG все работает. Явно что-то на плате не удачно разведено.


Если есть JTAG, то посмотрите значение статусного регистра ПЛИС после загрузки в нее прошивки процессором. Это может дать дополнительную информацию о причинах неокончившейся инициализации.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
makc
сообщение Dec 15 2006, 19:35
Сообщение #8


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Появилось еще одна подробность, которая может относиться к причине вышеописанной проблемы.
Сегодня разбирался с платой, в которой Spartan-3 также конфигурируется процессором, при этом процесс конфигурации успешно завершался, но состояние выходов ПЛИС было совершенно не то, которое определялось структурой проекта (например, вместо выхода в третьем состоянии был логический ноль и т.п.). Чтение статусного регистра ПЛИС показало, что DONE стоит в 1, а кроме того, GWE и GTS. Т.е. конфигурация вроде бы прогрузилась и ПЛИС ее восприняла, даже разрешила работу. Однако более внимательное рассмотрение показало GHIGH == 0, в то время как после успешной конфигурации он должен быть 1. Эксперименты позволили определить причину такого поведения ПЛИС: пауза между переводом сигнала PROG в неактивное состояние и начало загрузки данных (первым активным фронтом CCLK) была слишком короткой. После ее увеличения до 7 мс все встало на свои места.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Dec 15 2006, 20:43
Сообщение #9


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Интересны дела твои Господи. Я, конечно же, ввел у себя задержку, но никак ни 7 миллисекунд (насчет миллисекунд - я правильно понял?).

Будем попробовать. В любом случае, огромное спасибо за советы. О результатах должу.
Go to the top of the page
 
+Quote Post
makc
сообщение Dec 15 2006, 21:10
Сообщение #10


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(sergeeff @ Dec 15 2006, 20:43) *
Интересны дела твои Господи. Я, конечно же, ввел у себя задержку, но никак ни 7 миллисекунд (насчет миллисекунд - я правильно понял?).


Да, именно миллисекунд (не микро). У меня тоже была задержка, но была она маленькой, в виде пустого цикла. Что интересно, иногда ее хватало. Но после всех модификаций прошивки процессора восстановить исходные условия не удалось. Окончательно решило проблему именно введение большего значения задержки.

Цитата
Будем попробовать. В любом случае, огромное спасибо за советы. О результатах должу.


Успешной ловли багов! biggrin.gif maniac.gif


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Dec 18 2006, 12:07
Сообщение #11


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Все заработало, после того как сделал две вещи:
1. После получения сигнала DONE все управляющие pin'ы (CS, PROG, RW, INIT), выставил в "1".
2. Задержка действительно нужна. Но по моим замерам - не менее 200 мкс. Для пущей надежности установил 1 мс.

Сегодня еще погоняю с реальными FPGA проектами. Если чего обнаружу новенького - сообщу.

Большое спасибо всем за советы.
Go to the top of the page
 
+Quote Post
disel
сообщение Jan 18 2007, 15:26
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Использую SLAVE PARALLEL режим загрузки прошивки.
У меня возникла проблема - никак не могу после окончания заливки байтов прошивки получить ни DONE=1 (успех загрузки) ни INIT_B=0 (CRC Error) вне зависимости от того что туда лью. Специально заливал мусор, дабы добиться CRC Error, но ПЛИС вроде как хавает без проблем.

Инициализируется всё на ура, BUSY опускается в ноль. Но окончания загрузки никак не добиться. Не могли бы кто нибудь поделиться исходным кодом загрузки прошивки с микроконтроллера может быть я при сравнении со своим кодом найду - что я не так делаю. help.gif
Go to the top of the page
 
+Quote Post
RKOB
сообщение Jan 18 2007, 17:42
Сообщение #13


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

Группа: Свой
Сообщений: 172
Регистрация: 17-03-05
Пользователь №: 3 422



Недавно сам столкнулся с подобной проблемой: по окончании загрузки получаем сигнал DONE, но ПЛИС не стартует...(20 раз загрузиться нормально, а в 21 раз вот такая ерунда )

И так решение этой проблемы нашел на сайте xilinx:
Problem:
I am configuring a Spartan-3/-3E/-3A device at high speed.
The DONE pin goes High, but the device does not start up (the I/Os are still put into a 3-state condition).
Why is this occurring?

Solution:
Several problems might prevent a Spartan-3/-3E/-3A device from operating correctly after the DONE pin goes High:

1. A slow rise time on the DONE pin
2. An incorrect startup clock
3. Insufficient clock cycles to complete the startup sequence
4. Contention between DONE signals on configured vs. unconfigured devices

1. A slow rise time on the DONE pin ( наш случай )
The DONE pin must transition from Low to High within one CCLK cycle. For example, if CCLK is running at 33 MHz in slave serial mode, the rise time of the DONE pin must be less than 25 ns. The DONE pin is an open-drain driver by default, and it must be pulled High externally.

Potential Remedies:
a. Attach an external pull-up resistor to the DONE signal (the recommended value is 330 Ohms).
b. In BitGen, set "DonePipe=Yes" to delay the CFG_DONE signal. This setting adds a pipelined register stage to the DONE input (CFG_DONE) path.
c. Alternatively, set the BitGen "DriveDone=Yes" option to actively drive the DONE pin. (NOTE: This option should be used only if you are configuring one device or the device is last in a daisy chain.)

При генерации битстрима установил галочку "DriveDone=Yes" и все заработало!!!
Go to the top of the page
 
+Quote Post
disel
сообщение Jan 18 2007, 17:58
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



У меня несколько другая ситуация. Я не могу получить сигнал DONE.
Go to the top of the page
 
+Quote Post
RKOB
сообщение Jan 18 2007, 18:17
Сообщение #15


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

Группа: Свой
Сообщений: 172
Регистрация: 17-03-05
Пользователь №: 3 422



А что за битстрим ты грузишь ?
У меня один раз была проблема такая: загрузка шла, но никакого эффекта не было, так как загаловоке битстрима (*.bit) был указан источник тактировании JTAG (по умолчанию стоит JTAG), пока я (в опциях генерации битстрима) не заменил на CCLK...
Go to the top of the page
 
+Quote Post

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

 


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


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