Jump to content

    

Конфигурация Spartan-6 Slave-Serial

Здравствуйте, Уважаемые Профессионалы!

 

Я столкнулся с трудностью при конфигурировании Spartan-6 в режиме Slave-Serial. Данные высылаются в формате big endian и защёлкиваются фронтом сигнала CCLK, но конфигурация не заканчивается и пин DONE не устанавливается в еденицу. Раньше, с идентичным конфигурационным bin файлом, на плате с загрузкой Slave Select-Map чип конфигурировался влёт. Алгоритм следущий (в соответствии с ug380):

1. Сброс PROG_B (больше 300 нс) -> INIT_B сбрасывается в ответ
2. Ожидание высокого уровня на INIT_B
3. DIN побитно (big endian) устанавливается в нужный бит, CCLK защёлкивает данные по фронту

4. В конце кофигурационного файла посылаем нули

 

Осциллограмма конфигурации и схема прицеплены к тексту. Частота CCLCK специально занижена до 150 кГц. Конфигурационный файл сверялся с файлом отгруженным с анализатора, ошибок в байтах нет, INIT_B остаётся на высоком уровне на протяжении всего процесса конфигурации и вроде бы ничто не удерживает пин DONE в состоянии нуля. Проверил распайку и на всякий случай смонтировал вторую такую же плату, но результат тот же.

У кого-нибудь возникали подобные сложности со Slave-Serial? Благодарю за советы!config.bmp

Spoiler

 

Edited by nazim

Share this post


Link to post
Share on other sites

1. PullUp на DONE есть?

2. Какое тактирование было выбрано при генерации bin файла? CCLK, JTAG или User Clock

3. Что указано в Startup Option (Не установлен ли Wait for DLL Lock)

4. Попробуйте после файла конфигурации передать несколько дополнительных байт. Иногда DONE не взводится и ПЛИС ждет еще несколько тактов.

Share this post


Link to post
Share on other sites

5. Проверьте правильность установки сигналов выбора режима загрузки.

Share this post


Link to post
Share on other sites
2 hours ago, Zig said:

1. PullUp на DONE есть?

На DONE стоит pullup в 330ом к положительной шине питания 3.3в, как было указанов в UG380

 

2 hours ago, Zig said:

2. Какое тактирование было выбрано при генерации bin файла? CCLK, JTAG или User Clock

При генерации бин файла было выбрано тактирование CCLK

 

2 hours ago, Zig said:

3. Что указано в Startup Option (Не установлен ли Wait for DLL Lock)

Wait for DCM and PLL Lock (Output Events) указано: Default (NoWait)

 

2 hours ago, Zig said:

4. Попробуйте после файла конфигурации передать несколько дополнительных байт. Иногда DONE не взводится и ПЛИС ждет еще несколько тактов.

Пробовал от восьми тактов, до нескольких тысяч, при низком уровне на DIN (пробовал также и с высоким) но к сожалению, конфигурация не заканчивается

Share this post


Link to post
Share on other sites
2 hours ago, aaarrr said:

5. Проверьте правильность установки сигналов выбора режима загрузки.

М0 и М1 подключены напрямую к VCCО_2 3.3в, как указано на картинке в UG380, что активизирует режим Slave - Serial

CSI_B, RDWR_B, HSWAPEN и SUSPEND подключёны к земле

 

 

Share this post


Link to post
Share on other sites

Посмотрел анализатором у себя. Кристалл Spartan-6 XC6SLX150. Загружаю bit файл, не преобразуя в bin.

Первые байты 00 09 0F F0 0F F0 0F F0 0F F0 00 00 01 61. Старший бит вперед. Бит данных изменяется по спаду, стабилен во время фронта.

Share this post


Link to post
Share on other sites
4 minutes ago, Zig said:

Посмотрел анализатором у себя. Кристалл Spartan-6 XC6SLX150. Загружаю bit файл, не преобразуя в bin.

Первые байты 00 09 0F F0 0F F0 0F F0 0F F0 00 00 01 61. Старший бит вперед. Бит данных изменяется по спаду, стабилен во время фронта.

Большое спасибо за участие, Zig. Попробую сегодня. Вы уж простите за наглость, но могли бы Вы померить ещё и амплитудное значение CCLK поближе к ножке или хотя бы на резисторном делителе? Может у меня с CCLK неприятность?

Share this post


Link to post
Share on other sites

На тактах, ближе к ПЛИС PullUp и PullDown по 100 Ом.

Низкий - 0,66В, высокий 2,54В. Питание IO 3,3В. Частота 12 МГц.

Share this post


Link to post
Share on other sites

пе

10 hours ago, Zig said:

На тактах, ближе к ПЛИС PullUp и PullDown по 100 Ом.

Низкий - 0,66В, высокий 2,54В. Питание IO 3,3В. Частота 12 МГц.

Огроменное СПАСИБО, Zig! Сложность была с пином CSI_B, сидевшим на земле и просевшим сигналом CCLK.

После перерезания дорожки соединявшей CSI_B с землёй и подтяжки к плюсу вывода микроконтроллера с которого шла генерация CCLK, верхняя амплитуда поднялась до трёх вольт и всё заработало ) DONE переходит в высокий уровень по окончанию конфигурации.

На второй плате, где CSI_B всё ещё соединён с землёй, конфигурация не заканчивается. Чип XC6SLX9-3TQG144 (speed grade -3), конфигурировал bin файлом, полученым из ISE опцией -g Binary.

Share this post


Link to post
Share on other sites

А куда CSI_B подключили? 

Сложность у вас была, видимо, в звенящем CCLK из-за отражений в линии, который увидели бы осциллографом. 

Share this post


Link to post
Share on other sites
7 hours ago, ViKo said:

А куда CSI_B подключили? 

Сложность у вас была, видимо, в звенящем CCLK из-за отражений в линии, который увидели бы осциллографом. 

CSI_B просто висит в воздухе, но на нём сейчас +3.3, потому как он подтягивается изнутри к положительной шине, когда HSWAP_EN притянут к земле.

Я смотрел осциллографом у которого заявлены 100МГц (меандр с частотой до 3МГц он должен показывать вполне достоверно), звона не было, но CCLK был просевший до 1.25В. После установки PullUp на пин контроллера с которого идёт сигнал CCLK, уровень поднялся до 3.3 (видно из за того что у меня разводка очень плохая или где-то с монтажом что-то не так, надо над этим поработать). После установки PullUp появился overshoot на переднем фронте и небольшой звон, но теперь конфигурация проходит.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this