Перейти к содержанию
    

Ширина шины SelectMAP

ПЛИС - Kintex 7. Задача - загрузить прошивку через SelectMAP. Описание этого режима загрузки есть в UG470. Там говорится, что сначала шина данных всегда 8-ми битная, затем в ПЛИС загружается специальная последовательность, определяющая ширину шины. Магический символ - 0хBB. Далее говорится, что если за 0хBB идет 0х11 - ширина шины 8 битов, если 0х22 - 16 битов, если 0х44 - 32 бита.

Открываю бинарник прошивки, и вижу там последовательность 0xBB,0x11,0x22,0x00,0x44, причем такая же последовательность приведена в таблице 5-2 в UG470, и все эти символы помечены как "Bus Width Detection Pattern".

Какая ширина шины в этом случае? 8 битов, потому что за 0хBB идет 0х11, или 32 бита, потому что в конце этой последовательности  0х44?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, attaboy сказал:

Открываю бинарник прошивки, и вижу там последовательность 0xBB,0x11,0x22,0x00,0x44, причем такая же последовательность приведена в таблице 5-2 в UG470, и все эти символы помечены как "Bus Width Detection Pattern".

Бинарник всегда один и тот же. ПЛИС смотрит на то, какие данные появляются на шине данных после magic. Если ширина 8 бит - появится 0x11, остальное будет уже в следующих тактах. В 16-битной шине появится 0x1122, т.е. на следующем такте после magic сразу появится 22 в известном положении. В 32-битной шине появится слово 0x11220044, и будет отдетектировано 44. После ширины, есть еще паттерн определения endian (в т.ч. bit endian).

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципе все заработало. Порадовал также порядок битов в байте. Как говорят в UG470:

Quote

Traditionally, in SelectMAP x8 mode, configuration data is loaded one byte per CCLK, with the most-significant bit (MSB) of each byte presented to the D0 pin. Although this convention (D0=MSB, D7=LSB) differs from many other devices, it is consistent acorss all Xilinx FPGAs.

Если по простому перевести на русский язык, то получится что-то типа: "Мы традиционно делали это через одно место, и продолжаем так делать."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это артефакты какой-то древней архитектуры. Потом Xilinx переметнулся на правильную стороны, но осадочек остался. У них и биты в модуле PIO, что ли, были когда-то перевернуты ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/22/2022 at 8:50 PM, alexadmin said:

Это артефакты какой-то древней архитектуры. Потом Xilinx переметнулся на правильную стороны, но осадочек остался. У них и биты в модуле PIO, что ли, были когда-то перевернуты ;)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...