Итак, код выглядит примерно так:
Код
assign master_write=1'b0;
assign master_writedata=32'd0;
assign master_byteenable=4'b1111;
always @(posedge clk) begin
if (State==FirstState) begin//установка запроса
master_address<=Addr;
master_read<=1'b1;
State<=SecondState;
end
else begin //ожидание снятия waitrequest и чтение данных
if (!master_waitrequest) begin
master_read<=0;
Data<=master_readdata[7:0];
Addr<=Addr+32'd1;
State<=FirstState;
end
end
end
assign master_writedata=32'd0;
assign master_byteenable=4'b1111;
always @(posedge clk) begin
if (State==FirstState) begin//установка запроса
master_address<=Addr;
master_read<=1'b1;
State<=SecondState;
end
else begin //ожидание снятия waitrequest и чтение данных
if (!master_waitrequest) begin
master_read<=0;
Data<=master_readdata[7:0];
Addr<=Addr+32'd1;
State<=FirstState;
end
end
end
Смотрел сигналтабом, что выставляется на шинах - вроде, все правильно. Выставился адрес, выставился запрос на чтение. Выставился waitrequest. По сбросу waitrequest сбросился и запрос чтения. Но вот данные, выставленные на master_readdata, меня расстраивают. Первый байт читается правильно, а далее читается какой-то совершенно другой байт (каждый раз один и тот же), причем этого второго (как и последующих) байта в памяти по данному адресу и рядом нет (проверял дебагером ниоса). Компонент в сопсе создан, вроде, без ошибок. Адреса, выставляемые по версии сигнал таба, совпадают с адресами из дебагера ниоса. Кеша данных в системе нет, да и все равно первый байт читается верно.
Подскажите, где может быть загвоздка.
