I put two slaves on system AHB bus , one is leds the other is switch .
I can write date to the leds' register to control the led on or off, but I can't read date from the switch data register .
i don't know what's wrong
here is the slave's code
**************************************************************************************************
//Transfer Response assign HREADYOUT = 1'b1; //Single cycle Write & Read. Zero Wait state operations
//readalways @(*) begin if( rHADDR==(`SWITCH_BASE )) HRDATA <= {22'h0000_00,rSW}; end
I would suggest you try to dump your waveform and check whether the transfer has been issued out from the interconnect to your targeted slave correctly, e.g. switch data register. If it has been issued to the target slave correctly, then you can check why your switch data register has not response.
From your above limited information, it's difficult to find the reason. But when the slave responses out the read data, it should check whether it's a valid access to this slave by checking HTRANS, check its access type by HBURST, check its access size by HSIZE, etc.
At the same time, as AHB protocol is pipeline, each slave also needs to check whether there is wait status of previous stage from other slaves.
Hi
thanks for your replay ,I catch the waveform ,find that the value of the kernel's RDATA bus is always fixed as 0xdeabbeef . so when time to write ,the output date doesn't be the data which is read at the time of read
This is useful information. HRDATA is an input from your interconnect into Cortex-M3 Integration, you should check why it's fixed by your interconnect or other slaves.
thanks, i will check
Your above snapshot shows the programming to the LED and you may need to check your hardware design why HRDATAS is fixed.
Thanks for your replay ,I find the bug and resolve it.
thank you very mach
thank you very much