One of my customers is building a system in which AM335x GPMC is connected to OMAP-L138 HPI and I have been asked to help with the design of this interface. I have designed C5000-based systems with HPI interface several years ago, so I'm familiar with how the interface works. However, after spending some time looking at the OMAP-L138 HPI timing diagrams, I'm convinced that there are several errors and missing specs which complicate the task. I'm posting here in hopes that someone else has already looked at this and has figured out a way to make an OMAP-L1x/C674x HPI interface work on paper. If you're out there please help.
- The first problem I see is with the HPI HRDY signal timing spec for a read. The TRM describes several read cases in which the HRDY signal will go high (not ready) during the first half word access, while the HPI completes the internal portion of the read. For these cases, I would expect the HRDY signal high pulse to occur before the HPI data bus becomes valid. In order to design the interface there needs to be a delay time spec for the leading (rising edge) and one for the trailing (falling) edge of the HRDY pulse. The rising edge, marked T1 in the diagram below, is very important because it defines when the host interface should start sampling the HRDY signal. This T1 could occur immediately after the falling edge of strobe (/HSTROBE low) if the data is not ready. The falling edge, marked T2 in the diagram below, should coincide with the data valid time when the HPI data is ready to be read by the host. It is critical to have a spec for both edges because the host has a sampling window requirement that must be met in order for a NOT READY condition to be recognized. So this is what I would expect to find in the datasheet. Instead of this, the datasheet has a single delay time defined for the HRDY pulse (timing 5, td(HSTBL-HRDYV)). This timing is referenced to the leading edge of HRDY, and its value is coincident with the data valid time (timing 15, td(HSTBL-HDV)). This definition of HRDY says that the HPI is ready until the data becomes valid, at which point the HPI becomes not-ready!!! The timing diagram must be drawn wrong, but this is carried forward from older C6000 datasheets like ‘C6424. Others must have run into this. Can anyone shed some light on this?
- The second problem I see is with the data-bus timing for the HPI read. Again, the TRM describes cases for when read data is not ready and HRDY must be used to extend the cycle, and other cases for when data is ready and no HRDY pulse occurs. The datasheet specifies a single valid time for the data-bus, td(HSTBL-HDV). From the value of this parameter, I conclude that this is the data valid time after a not ready condition. However, there is no data-bus valid time spec for the cases when HRDY is not de-asserted (when data is immediately ready). Without this timing information, and considering the problem with #1 above, we have to design the system for worst case timing and ignore the HRDY signal. This causes a significant performance hit for the HPI interface.
I'm looking forward to hearing how others have dealt with this.
-Ruben