Я проектирую 32-битный процессор в fpga,
В настоящее время каждая адресная шина процессора работает в байтах.Таким образом, чтобы получить доступ к вашей 32-битной памяти, вы НЕ должны подключать биты адреса LS 2.Вы можете использовать адресные биты A [1: 0], чтобы выбрать байт (или половину слова, используя только A [1]) из памяти при чтении.
Вам по-прежнему понадобятся сигналы разрешения записи в четыре байта.Это позволяет вам писать слова, полусферы или байты.
Посмотрите на существующие шины ЦП или существующие стандарты подключения, такие как AHB или AXI.
Редактировать сообщение:
но читая адрес 0001, я получаю 0x05060708, но желаемое значение - 0x02030405.
Что вы пытаетесь сделатьсделать это прочитать слово с неподключенного адреса.Не существует 32-битной памяти, которая бы поддерживала это.Я предлагаю вам взглянуть на то, как работает 32-битная память.
Старая архитектура Motorola 68020 поддерживала это.Для этого требуется специальный контроллер памяти, который сначала считывает данные с адреса 0, а затем с адреса 4 и повторно объединяет данные в новое 32-разрядное слово.
Поскольку стоимость потери памяти и сокращения циклов ЦП становится все более важной, ни один современный ЦП не поддерживает это.Они выдают исключение: доступ к памяти без выравнивания.
У вас есть несколько вариантов:
Создание специального контроллера памяти, который поддерживает невыровненный доступ.
Отрегулируйте свои ожидания.
Я бы пошел на последнее.В общем, оно основано на неправильном представлении о том, как работает память.Как консолидация: Вы не первый человек на этом сайте, который думает, что именно так вы читаете слова из памяти.