attaboy 0 12 января, 2022 Опубликовано 12 января, 2022 · Жалоба ПЛИС - 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 12 12 января, 2022 Опубликовано 12 января, 2022 · Жалоба 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). Когда вы делаете загрузчик - ни о чем не думаете, просто грузите данные в той ширине, в какой можете. ПЛИС сама определит ширину из-за наличия этих специальных паттернов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 22 февраля, 2022 Опубликовано 22 февраля, 2022 · Жалоба В принципе все заработало. Порадовал также порядок битов в байте. Как говорят в 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. Если по простому перевести на русский язык, то получится что-то типа: "Мы традиционно делали это через одно место, и продолжаем так делать." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 22 февраля, 2022 Опубликовано 22 февраля, 2022 · Жалоба Это артефакты какой-то древней архитектуры. Потом Xilinx переметнулся на правильную стороны, но осадочек остался. У них и биты в модуле PIO, что ли, были когда-то перевернуты ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 24 февраля, 2022 Опубликовано 24 февраля, 2022 · Жалоба On 2/22/2022 at 8:50 PM, alexadmin said: Это артефакты какой-то древней архитектуры. Потом Xilinx переметнулся на правильную стороны, но осадочек остался. У них и биты в модуле PIO, что ли, были когда-то перевернуты ;) и биты, в байтах, ICAPE2 тоже. Проковырялся прилично когда делал софт-ресет плис, документацию проштудировал раз 5, ни слова, пока на одном форуме, случайно не нашел что надо порядок байт оставить тем же, а биты инвертировать) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться