Post Go back to editing

Asynchronous Memory-bank controller unexcepted behavior

Category: Hardware
Product Number: ADSP-BF527

I have a custom board interfacing the BF527 to an FPGA through EBIU. I am using only 8 lines on the databus :D7 to D0,(D15 to D8 are unconnected). I have written the interface for Asynchronous Memory-bank Controller in VHDL. In order to test my VHDL behavior I am trying to read a total of 0x2fe bytes at blackfin sequentially in the order 0xff,0xfe,0xfd...0x00,0xff,0xfe...,0x00,0xff,0xfe,...,0x01, and halting at first error in reading. Read is done at fixed(even) address 0x20000000. The AMC is configured at maximum number clock cycles for SETUP, READ_ACCESS and HOLD (I can share the blackfin driver if needed). In my VHDL code every time I observe the AMS & AOE asserted I decrement a counter and output its value on the databus throughout the duration ARE is asserted.

I am observing an error in reading at exactly same location every time (i.e. exactly in reading 0x7f during the last chunk between 0xff,0xfe,...,0x01). At this instance blackfin is issuing a (dummy) read cycle by asserting the AMS,AOE and ARE, however no data is read in this cycle. Data read by blackfin is : 0x81,0x80,0x7e (0x7f is skipped because is transferred by FPGA during the dummy read cycle, and hence read is terminated)

I have attached a screenshot of a chipscope waveform depicting the same.

.

(tx_done is my internal signal to know de-assertion of ARE)

Edit Notes

Uploaded a better image
[edited by: Raam at 6:40 AM (GMT -5) on 8 Jan 2026]
Parents Reply Children
  • Dear  Thank you for your time in this regard. Let me try your suggested solution. I will verify the answer after confirmation.

  • Hi, I referred to the processor manual in the "Programmable Timing Characteristics" section like you suggested. What I could understand is that ARDY is an optional signal. I am referring to Pg 311, where in the register description of EBIU_AMBCTL0(bit 0), if zero(which is actually zero in my case) then processor doesn't care about whatever signal is on ARDY. Moreover, even the E2E App note you pointed (EE-213.pdf) also does not mention the usage of ARDY. (EE-326 is not related to AMC but SDRAM). Need Help.

  • Hi  , I enabled ARDY handshake on blackfin and concurrently in my FPGA logic. Sorry to report that I still obverve the dummy read cycles on the bus. Issue un-resolved.

  • Hi,

    Apologies for the delayed caused.

    Thank you for sharing your observation.
    Regarding the ARDY pin state, your understanding is correct. The ARDY signal is optional and is only used when the ARDY enable bit is set for the corresponding bank in EBIU_AMBCTLx. When enabled, the processor samples ARDY near the end of the programmed access period and can extend the access time by inserting additional wait states until ARDY is asserted.

    If the ARDY enable bit is 0, the processor ignores the ARDY input and the access timing is controlled solely by the programmed wait states. Therefore, ARDY does not need to be driven in this configuration.

    Please refer to the “External Access Extension” section in the ADSP-BF527 Hardware Reference Manual for additional details:
    www.analog.com/.../ADSP-BF52x_hwr_rev1.2.pdf

    Regarding the dummy cycles, it is possible to observe additional read cycles that may appear similar to dummy cycles due to the processor's external bus interface and pipeline behavior , even though the processor only captures valid data when the access is accepted.

    Since enabling ARDY did not help, to further analyze the issue, could you please provide the following details:

    1.The EBIU_AMBCTL0/AMBCTL1 register configuration values being used (setup, read access/strobe, hold, and ARDY enable settings).
    2.Whether the ARDY signal is asserted within the sampling window near the end of the programmed access period, as described in the HRM.
    3.A timing waveform around the failing read (0x7F) showing AMS, ARE, AOE, ABE[1:0], and ARDY.

    Regards,
    Nandini C