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

 
 
> Проблема со 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
 
Start new topic
Ответов
BSV
сообщение Jan 19 2007, 17:37
Сообщение #2


Знающий
****

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



Проверьте:
1) PROG в '0' нужно держать не менее 0,3 us
2) После INIT = '1' нужно подождать не менее 0,5 us
3) Частота CCLK не более 20MHz, если битстрим - с компрессией

Проверять INIT после каждого бита бессмысленно, судя по диаграмме в даташите он вообще только в конце программирования проверяется. Так что похоже, что пока Вы туда целиком битстрим не зальете INIT меняться и не будет.

В порте 0x311 можно отдельные биты настраивать на вход и выход?

Что значит - не работает? (зависает? проваливается до конца и не появляется DONE? другое...)

while ((inportb(0x311)&0x04)==1) asm nop;
Если тестируемый вход не примет нужное значение - программа здесь зависнет, желательно предусмотреть выход из этого цикла по таймеру (счетчику).


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
disel
сообщение Jan 19 2007, 18:45
Сообщение #3


Знающий
****

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



Цитата(BSV @ Jan 19 2007, 17:37) *
Проверьте:
1) PROG в '0' нужно держать не менее 0,3 us
2) После INIT = '1' нужно подождать не менее 0,5 us
3) Частота CCLK не более 20MHz, если битстрим - с компрессией

Да, все выполняется.

Цитата(BSV @ Jan 19 2007, 17:37) *
Проверять INIT после каждого бита бессмысленно, судя по диаграмме в даташите он вообще только в конце программирования проверяется. Так что похоже, что пока Вы туда целиком битстрим не зальете INIT меняться и не будет.

Диаграмму эту я видел. Но в файле http://www.plis.ru/pic/pict/File/spartan2_rus.pdf написано, что контрольная сумма проверяется в процессе конфигурации. Отсюда и проверка INIT_B.

Цитата(BSV @ Jan 19 2007, 17:37) *
В порте 0x311 можно отдельные биты настраивать на вход и выход?

Да. Оттуда читаются DONE, INIT_B, BUSY

Цитата(BSV @ Jan 19 2007, 17:37) *
Что значит - не работает? (зависает? проваливается до конца и не появляется DONE? другое...)

Если задаю параллельный режим то после загрузки файла прошивки и установки RDWR_B и CS_B в единицу, INIT_B стоит в единице, BUSY возвращается в единицу. А DONE в единице не встает. Т.е. CRC-ошибки вроде бы нет.
Если задаю последовательный режим, то на выходе DOUT(BUSY) всегда единица. Вне зависимости от входных данных.
Начал грешить на вход CLK. Переключил в режим мастер, на CCLK есть тактовая, значит ножка жива.

Цитата(BSV @ Jan 19 2007, 17:37) *
while ((inportb(0x311)&0x04)==1) asm nop;
Если тестируемый вход не примет нужное значение - программа здесь зависнет, желательно предусмотреть выход из этого цикла по таймеру (счетчику).

Это еще отладка, а не боевой вариант программы smile.gif

Может подскажете еще такой вопрос:
В режиме slave parallel в даташите на spartan3 изображено что в микросхему загружаются N+1 байт. Что это означает?
Еще у xilinx есть xapp502. К нему прилагаются исходники для cpld на vhdl, и код на СИ для микроконтроллера. Так в VHDL-коде ножка PROG_B имеет либо Z-состояние, либо в нуле. С чем это может быть связано? Вроде бы это обычная входная нога. Там правда написано, что это для virtex и spartan2.

ps. хотел прицепить рисунок, не получилось. говорят нет прав.
Go to the top of the page
 
+Quote Post
BSV
сообщение Jan 20 2007, 01:13
Сообщение #4


Знающий
****

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



Цитата(disel @ Jan 19 2007, 18:45) *
написано, что контрольная сумма проверяется в процессе конфигурации. Отсюда и проверка INIT_B.

Но через каждый бит проверять - это все же чересчур...

Цитата(disel @ Jan 19 2007, 18:45) *
Если задаю параллельный режим то после загрузки файла прошивки и установки RDWR_B и CS_B в единицу, INIT_B стоит в единице, BUSY возвращается в единицу. А DONE в единице не встает. Т.е. CRC-ошибки вроде бы нет.
Если задаю последовательный режим, то на выходе DOUT(BUSY) всегда единица. Вне зависимости от входных данных.
Начал грешить на вход CLK. Переключил в режим мастер, на CCLK есть тактовая, значит ножка жива.

Давайте сначала с одним режимом разберемся - я пользовал только Slave Serial, поэтому его и предлагаю мучать. Итак, зачем Вам проверять состояние DOUT - этот выход вроде используется только при Daisy Chain.

Цитата(disel @ Jan 19 2007, 18:45) *
Может подскажете еще такой вопрос:
В режиме slave parallel в даташите на spartan3 изображено что в микросхему загружаются N+1 байт. Что это означает?

Что-то я там такого не нашел.

Цитата(disel @ Jan 19 2007, 18:45) *
Еще у xilinx есть xapp502. К нему прилагаются исходники для cpld на vhdl, и код на СИ для микроконтроллера. Так в VHDL-коде ножка PROG_B имеет либо Z-состояние, либо в нуле. С чем это может быть связано? Вроде бы это обычная входная нога. Там правда написано, что это для virtex и spartan2.

Все правильно, ставится подтягивающий резистор на питание, а нуль для PROG - активное состояние.
Обратите внимание, что INIT - двунаправленный!!! сигнал, удерживая его в нуле можно задерживать конфигурацию.

Еще про DONE - его фронт после конфигурации должен укладываться в период CCLK, иначе нужно либо уменьшать сопротивление подтягивающего резистора, либо использовать DriveDone "Yes" при генерации битстрима.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
disel
сообщение Jan 20 2007, 09:43
Сообщение #5


Знающий
****

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



Цитата(BSV @ Jan 20 2007, 01:13) *
Давайте сначала с одним режимом разберемся - я пользовал только Slave Serial, поэтому его и предлагаю мучать. Итак, зачем Вам проверять состояние DOUT - этот выход вроде используется только при Daisy Chain.

DOUT я проверяю чтобы определить принимает ли микросхема данные. Возможно не работает ножка CCLK на вход. Если она сдохла, как раз такая картина и будет. Т.е. микросхема перешла в режим конфигурации и ждет данных, но их нет. Как выход я ее проверял, переключил в мастер-режим.
А нужно ли включать какие либо опции при компиляции, чтобы задействовать выход DOUT при конфигурации? Или он всегда работает?

Цитата(BSV @ Jan 20 2007, 01:13) *
Цитата(disel @ Jan 19 2007, 18:45) *

Может подскажете еще такой вопрос:
В режиме slave parallel в даташите на spartan3 изображено что в микросхему загружаются N+1 байт. Что это означает?

Что-то я там такого не нашел.

Прикрепляю рисунок из даташита.


Цитата(BSV @ Jan 20 2007, 01:13) *
Цитата(disel @ Jan 19 2007, 18:45) *

Еще у xilinx есть xapp502. К нему прилагаются исходники для cpld на vhdl, и код на СИ для микроконтроллера. Так в VHDL-коде ножка PROG_B имеет либо Z-состояние, либо в нуле. С чем это может быть связано? Вроде бы это обычная входная нога. Там правда написано, что это для virtex и spartan2.

Все правильно, ставится подтягивающий резистор на питание, а нуль для PROG - активное состояние.

Я передаю не третье состояние, а просто единицу. Но это не криминал.

Цитата(BSV @ Jan 20 2007, 01:13) *
Обратите внимание, что INIT - двунаправленный!!! сигнал, удерживая его в нуле можно задерживать конфигурацию.

Да, я это уже понял. Сначала не обратил внимание. Сейчас я его только читаю.

Цитата(BSV @ Jan 20 2007, 01:13) *
Еще про DONE - его фронт после конфигурации должен укладываться в период CCLK, иначе нужно либо уменьшать сопротивление подтягивающего резистора, либо использовать DriveDone "Yes" при генерации битстрима.

Спасибо, не знал, учту на будующее. Сейчас генерация всех управляющих сигналов, включая клок выполняется по ISA шине через регистры ввода\вывода. Там такие скорости, что фронты не критичны.
Начал грешить на микросхему, может кто-то из ног барахлит. В понедельник еще одну плату спаяют, на свежей проверю.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
BSV
сообщение Jan 22 2007, 23:46
Сообщение #6


Знающий
****

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



Цитата(disel @ Jan 20 2007, 09:43) *
DOUT я проверяю чтобы определить принимает ли микросхема данные. Возможно не работает ножка CCLK на вход. Если она сдохла, как раз такая картина и будет. Т.е. микросхема перешла в режим конфигурации и ждет данных, но их нет. Как выход я ее проверял, переключил в мастер-режим.
А нужно ли включать какие либо опции при компиляции, чтобы задействовать выход DOUT при конфигурации? Или он всегда работает?

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

Цитата(disel @ Jan 20 2007, 09:43) *
Прикрепляю рисунок из даташита.

Ну, тогда уж N+2 байта (0 .. N+1) smile.gif . По моему, это просто чтобы показать порядок следования байт.

Цитата(disel @ Jan 20 2007, 09:43) *
Там такие скорости, что фронты не критичны.

Это для Вас они не критичны, а для микросхемы очень даже критичны - нога DOUT - тоже двунаправленная, все микросхемы в цепочке следят за ее состоянием и переходят в рабочий режим почти одновременно, когда DONE становится 1.


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

Сообщений в этой теме
- sergeeff   Проблема со Spartan3   Dec 14 2006, 12:08
- - andrew_b   Вы бы хоть версию ПО указали. Почитайте errata на ...   Dec 14 2006, 13:58
- - makc   Цитата(sergeeff @ Dec 14 2006, 12:08) Пол...   Dec 14 2006, 14:39
- - sergeeff   Попробовал увеличить количество CCLK - ноль эффект...   Dec 14 2006, 15:15
|- - Apast   Была у меня подобная проблема, правда на SLAVE SER...   Dec 14 2006, 16:11
- - sergeeff   ИНтересно. Поглядим в понедельник. Да, убедились, ...   Dec 15 2006, 00:22
|- - makc   Цитата(sergeeff @ Dec 15 2006, 00:22) ИНт...   Dec 15 2006, 08:49
- - makc   Появилось еще одна подробность, которая может отно...   Dec 15 2006, 19:35
- - sergeeff   Интересны дела твои Господи. Я, конечно же, ввел у...   Dec 15 2006, 20:43
|- - makc   Цитата(sergeeff @ Dec 15 2006, 20:43) Инт...   Dec 15 2006, 21:10
- - sergeeff   Все заработало, после того как сделал две вещи: 1....   Dec 18 2006, 12:07
|- - disel   Использую SLAVE PARALLEL режим загрузки прошивки. ...   Jan 18 2007, 15:26
- - RKOB   Недавно сам столкнулся с подобной проблемой: по ок...   Jan 18 2007, 17:42
|- - disel   У меня несколько другая ситуация. Я не могу получи...   Jan 18 2007, 17:58
- - RKOB   А что за битстрим ты грузишь ? У меня один раз был...   Jan 18 2007, 18:17
|- - disel   Цитата(RKOB @ Jan 18 2007, 18:17) А что з...   Jan 18 2007, 19:46
- - BSV   Он не в заголовке, а в самом битстриме. Если неохо...   Jan 19 2007, 00:03
|- - disel   Цитата(BSV @ Jan 19 2007, 00:03) Он не в ...   Jan 19 2007, 10:12
- - RKOB   Я б поделился, но я использую slave serial mode дл...   Jan 19 2007, 10:27
|- - disel   Цитата(RKOB @ Jan 19 2007, 10:27) Я б под...   Jan 19 2007, 11:35
|- - RKOB   [/quote] Я пробовал и serial slave mode, он у меня...   Jan 19 2007, 13:11
|- - disel   Вот как я реализовал Parallel Slave: Код printf...   Jan 19 2007, 15:07
- - BSV   Вот заготовка программы для загрузки в режиме Slav...   Jan 19 2007, 11:54


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

 


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


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