ARM - выборка 32-битных данных с использованием 16-битной шины данных

На нашей встроенной платформе некоторые устройства имеют 16-битную шину данных (например, FPGA). Однако нам нужно читать их как 32-битные значения (например, 32-битные числа с плавающей запятой).

Насколько я понимаю, когда к 16-битной памяти обращается 32-битная инструкция загрузки данных (LDR), процессор ARM выполнит 2 16-битных выборки, чтобы собрать 32-битное количество.

Это правильно?

Например, я хотел бы, чтобы процессор ARM загружал значение uint32_t из устройства с 16-разрядной шиной данных без необходимости выполнять 2 uint16_t чтения, а затем объединять значения uint16_t в одну переменную uint32_t.

Нужно ли нам явно получить как 2 16-битных количества, а затем собрать как 32-битное количество?

Какие документы ARM содержат это разъяснение?

Существуют ли какие-либо особые настройки конфигурации ARM для ARM, чтобы сделать 2 выборки с 16-битной шины данных для формирования 32-битного количества (в регистре)?

К вашему сведению: мы используем ARM Cortex A8 и IAR EW IDE / Compiler.
Платформа работает в «системном» режиме, а не в режиме «большого пальца».


person Thomas Matthews    schedule 13.05.2016    source источник
comment
Руководство пользователя.............   -  person Martin James    schedule 13.05.2016
comment
документация по амба / акси. У вас Cortex A8 с шиной шириной 16 бит? Я бы предположил, что ширина 64 бита, а может быть 32, но 16 не имеет смысла. Кстати, обо всем этом позаботятся шина и процессор, см. Документацию amba / axi. инструкция stm из 8 слов против 64-битной оси по адресу, который не выровнен по 64-битному адресу, приводит как минимум к одной передаче длины 1 для нечетного слова, затем передаче длины 3 и другой длине 1, чтобы позаботиться о другом нечетном слово. все это волшебным образом обрабатывается аппаратным обеспечением, программное обеспечение никогда не нуждается в заботе.   -  person old_timer    schedule 13.05.2016
comment
(если вы не повышаете производительность платформы или не тестируете дизайн чипа)   -  person old_timer    schedule 13.05.2016
comment
все это обрабатывается внутри чипа, если ваш FPGA подключен к какой-либо шине на этом чипе, вам нужно посмотреть документацию поставщиков этого чипа. если вы используете руку в fpga, то у вас может быть прямой доступ к amba / axi или вам, возможно, придется посмотреть документацию поставщиков чипов fpga. независимо от того, что это все хорошо документировано, в зависимости от того, к какому интерфейсу вы подключаетесь.   -  person old_timer    schedule 13.05.2016
comment
вы сильно усложняете это, также режим большого пальца здесь не имеет значения, он преобразуется в инструкции руки, а затем подается в канал и / или он не имеет ничего общего с шиной amba / axi или другими шинами на дальнем конце этого, ничего на шине указывает используемые декодеры набора команд.   -  person old_timer    schedule 13.05.2016
comment
Никто не может ответить на этот вопрос без более подробной информации о том, как ПЛИС подключена к ЦП. Это автобус AHB, автобус AXI, какой-то нестандартный автобус. Правило того, как взаимодействие между процессором ARM и FPGA определяется шиной. Есть ли сигнал на маскировку байтов на шине? Тогда он, вероятно, поддерживает частичное чтение (т.е. 16 бит на 32/64 битной шине). Люди, занимающиеся аппаратным обеспечением, должны работать или лучше объяснять вам. Люди HW могут преодолеть это, правильно расшифровав адрес. Т.е., увеличение адреса 16-битного регистра на 2/4/8 и т. Д. Кажется, вашим HW-людям нужна помощь? Это не то место.   -  person artless noise    schedule 13.05.2016


Ответы (1)


Если вы обращаетесь к памяти, когда процессору требуется 32-битная память, он запрашивает ее напрямую (Cortex-A8 не поддерживает 16-битные шины). Некоторое периферийное устройство (в системе) отвечает за преобразование 32-битного запроса в 16-битный для адаптации к шине (выполнение 2 передач).

Это означает, что для процессора он должен быть полностью прозрачным.

person Dric512    schedule 13.05.2016
comment
Я не понимаю. У нас есть MRAM, и он имеет ширину 16 бит. Наша ПЛИС имеет 16-битные регистры. Сделала ли наша команда H / W большую ошибку, потому что вы сказали, что Cortex-A8 не поддерживает 16-битную шину данных? - person Thomas Matthews; 13.05.2016
comment
@ThomasMatthews Ну, шина данных на самом блоке Cortex-A8 имеет ширину 64 или 128 бит в зависимости от конфигурации, ваши микросхемы RAM почти наверняка свисают с какого-то контроллера памяти, который обычно может иметь 32- или 64-битный интерфейс со стороны системы, и вероятно, есть различные другие повышающие и понижающие параметры вокруг межсоединения между ними. Подумайте о том, чтобы подружиться с разработчиками аппаратного обеспечения и попросить их рассказать, как именно ваш чип сочетается друг с другом;) - person Notlikethat; 13.05.2016