AHB - Lite protocal

Iam designing AHB - Lite protocol for ddr interface , 

we are designing one master - one slave ahb-lite interface does we required to use HREADY_IN foe slave input and HSELX.

In which write transaction , when should we sent the response for the burst transaction should it be sent after burst is completed from master or when the data is written on to the ddr.

In read transaction, will master request the read next read data in a burst only when previous requested data is received.

for a burst to return data for ddr takes more cycles so is the response needs to be sent for each data in read transaction.

how is response sent in read burst transaction.

Please help me to clarify this doubts.

Thanks in advance

Parents
  • All AHB-lite "subordinate" designs must have both HREADYOUT output and an HREADY input, and an HSEL input.

    Even though you are directly connecting an AHB-lite "manager" to your DDR AHB-lite "subordinate" interface, where you would presumably tie the HSEL input to 1'b1 and connect the HREADYOUT output back to the HREADY input (as well as to the manager's HREADY input), you should still design the "subordinate" interface to have a standard AHB-lite set of inputs and outputs.

    All AHB-lite transfers in a burst must have a response returned, but if you only know the actual response once a burst of writes has been received by the DDR (perhaps you are buffering them up to perform one quick DDR burst access) you could give a default OKAY response to all but the last write data transfer, and then add some wait states to the final write data transfer until you know the real HRESP response required to be returned for just that final transfer.

    For bursts of reads the address phase of the next transfer will overlap with the data phase of the previous transfer, so your DDR will always know what is next being requested while it performs one read. It is a pipelined bus.

    And if you are again looking at bursts, the HBURST information will tell the DDR exactly how much read data will be requested (which could allow it to prefetch data from the DDR to save single access latencies), so it can just check that the next transfer is a SEQ to know the next data in the burst is required.

    Again there is a response sent for every transfer in a burst (read or write), so for the read burst you could return either a default OKAY response for all but the last transfer, the same as I described for writes, or you could just return the real response for each transfer as presumably you will know this as soon as you have the HRDATA value to return.

    Hopefully that covers your questions.

Reply
  • All AHB-lite "subordinate" designs must have both HREADYOUT output and an HREADY input, and an HSEL input.

    Even though you are directly connecting an AHB-lite "manager" to your DDR AHB-lite "subordinate" interface, where you would presumably tie the HSEL input to 1'b1 and connect the HREADYOUT output back to the HREADY input (as well as to the manager's HREADY input), you should still design the "subordinate" interface to have a standard AHB-lite set of inputs and outputs.

    All AHB-lite transfers in a burst must have a response returned, but if you only know the actual response once a burst of writes has been received by the DDR (perhaps you are buffering them up to perform one quick DDR burst access) you could give a default OKAY response to all but the last write data transfer, and then add some wait states to the final write data transfer until you know the real HRESP response required to be returned for just that final transfer.

    For bursts of reads the address phase of the next transfer will overlap with the data phase of the previous transfer, so your DDR will always know what is next being requested while it performs one read. It is a pipelined bus.

    And if you are again looking at bursts, the HBURST information will tell the DDR exactly how much read data will be requested (which could allow it to prefetch data from the DDR to save single access latencies), so it can just check that the next transfer is a SEQ to know the next data in the burst is required.

    Again there is a response sent for every transfer in a burst (read or write), so for the read burst you could return either a default OKAY response for all but the last transfer, the same as I described for writes, or you could just return the real response for each transfer as presumably you will know this as soon as you have the HRDATA value to return.

    Hopefully that covers your questions.

Children