I am seeing something on the DM3730 GPMC access timing that is not making sense to us at this time.
We have set up CS3 of the OMAP to access our FPGA and our timing has been set up to be roughly 100ns (i.e. time when CS is low) for a single 16-bit read access from the FPGA. CS3 is set up as a multiplexed 16 bit NOR Flash interface in our design.
When the processor issues a 32-bit read from CS3 we see two back to back transactions with a 12ns delay between the two transactions which is correct since that is the delay that we set up in our GPMC timing. But when we issue a new 32 bit read from CS3 we see a delay of around 150-160ns and then we see the two back to back reads as expected. We are trying to determine why we see the 150-160ns delay.
Following is the simple sequence of instructions that our code executes
1 LDR r_n, [FPGA]
2 STR r_n, [r_s]
3 LDR r_n, [FPGA + 4]
4 STR r_n, [r_s + 4]
5 LDR r_n, [FPGA + 8]
6 STR r_n, [r_s + 8]
In the above sequence Instruction 1 issues two back to back 16 bit reads as expected.
But between Instruction 1 and Instruction 3 we see around 150-160ns delay.... obviously as one can see above there is only 1 store (STR) instruuction between the two reads and this shouldnt be taking 150-160ns. My guess is that this store is also happening to the internal data cache which should be very fast.
Is there some other setting outside the GPMC that can influence this?