Конечно поделюсь, только закончу еще слейв-часть. Пока что виснет, паскуда и не могу понять почему. В Isim все работает, но не использую Xilinxoвую модель, а дергаю шину вручную.
Слейв Акси-лайт, т.е одно слово. Два регистра. В симуляторе норм, вживую не поднимается в 1 S_AXI_AWREADY. Таймаут по шине не приходит, система тупо висит.
Код
---------------------------------------------------------
WRITE_PROC: process(M_AXI_ACLK) is
begin
if M_AXI_ARESETN='0' then
conf_reg<=(others=>'0');
addr_reg<=(others=>'0');
else
if M_AXI_ACLK'event and M_AXI_ACLK='1' then
case W_state is
when ST_IDLE=>
if S_AXI_AWVALID='1' then
S_AXI_AWREADY<='1';
W_state<=ST_WRITE;
end if;
when ST_WRITE=>
S_AXI_AWREADY<='0';
S_AXI_WREADY<='1';
if S_AXI_WVALID='1' then
if S_AXI_AWADDR(0)='0' then
conf_reg<=S_AXI_WDATA;
else
addr_reg<=S_AXI_WDATA;
end if;
W_state<=ST_CONFIRM;
end if;
when ST_CONFIRM=>
S_AXI_BRESP<="00";
S_AXI_WREADY<='0';
S_AXI_BVALID<='1';
if S_AXI_BREADY='1' then
S_AXI_BVALID<='0';
W_state<=ST_IDLE;
end if;
end case;
end if;
end if;
end process;
ДОБАВЛЕНО:Ёрш твою медь, есть ли где-то вменяемая времянка записи в Axi-lite? У меня проц почему-то первым делом BREADY поднимает.
Сообщение отредактировал count_enable - Jan 24 2014, 18:45