Ваша память использует адреса слов, нет? Я говорю это, потому что элементы имеют размер слова.
Таким образом, мы должны использовать адрес слова для их индексации, поэтому вам придется использовать [31: 2] для всех типов магазинов, а непросто sw
.
Половина магазина (sh
) перейдет в ОЗУ [a [31: 2]] [15: 0], если значение a [1] равно / 0, а [31:16] если a [1] нечетно / 1. (Предполагая, что они имеют младший порядок байтов - поменяйте их местами, если они имеют старший порядок байтов.)
Байт хранилища будет перемещен в ОЗУ [a [31: 2]] [7: 0], если a [1: 0] равно 2'b00,[15: 8] если 2'b01, [23:16] если 2'b10, и [31:24] если 2'b11.
В качестве альтернативы, вы можете моделировать ОЗУ, используя байты, итогда sb
будет тривиальным, в то время как sh
и sw
будут более сложными: sw
потребует обновления 4 разных мест в ОЗУ, поскольку они являются байтами в этой схеме.