[UPD] Еще один вопрос вдогонку:
Кусок кода для чтения по Авалону регистров:
Код
if(avs_chipselect && avs_read) begin
case(avs_address)
// много регистров модуля
`ADDR_RG_DEBUG1: avs_readdata <= RG_DEBUG1;
`ADDR_RG_DEBUG2: avs_readdata <= 32'h12345678;
`ADDR_RG_DEBUG3: avs_readdata <= 32'h12345678;
`ADDR_RG_DEBUG4: avs_readdata <= 32'h12345678;
default:;
endcase
end
case(avs_address)
// много регистров модуля
`ADDR_RG_DEBUG1: avs_readdata <= RG_DEBUG1;
`ADDR_RG_DEBUG2: avs_readdata <= 32'h12345678;
`ADDR_RG_DEBUG3: avs_readdata <= 32'h12345678;
`ADDR_RG_DEBUG4: avs_readdata <= 32'h12345678;
default:;
endcase
end
По логике, давая в Авалон адрес, мы должны читать значение одного регистра.
Однако в Memory View это выглядит так:
с начала сегмента памяти моего Авалоновского модуля сидят нули (значения регистров), потом идет значение регистра RG_DEBUG1, а следом за ним - до конца всего сегмента сидят 0х12345678 (причем в формате 0x78563412). Хотя по логике должно следовать три значения 0х12345678 (RG_DEBUG2, RG_DEBUG3, RG_DEBUG4), а потом снова нули (остальная часть памяти пока не используется). В чем может быть проблема, ведь код написан, по идее, правильно?