Other Parts Discussed in Thread: OMAP-L138, THS10082
I have a new project that uses the C6455 to do some signal processing on a incoming signal. The signal is being sampled at 8 MHz and I have run a small DFT-like algorithm on the data stream. The algorithm only involves a dozen or so multiplies so a 1.2 GHz core should easily keep up, right?
The prototype HW is a 6455DSK board from Spectrum Digital. We plan to design and build a custom daughter card which will contain analog conditioning, a high speed ADC and some glue logic so the ADC appears on the processors external bus. We're planning on using CE5 (address 0xD0000000).The daughter card isn't ready so I've done a first pass at coding the algorithm working from internal array. By toggling a GPIO line I can time my loop. It's running every 30ns - great. I have lots of head room.
Now the problem: I eventually need to read the ADC once each time through the loop. I put a dummy read of address 0xD0000000 into my code and the loop time jumped to 130 ns!! I expected a penalty for touching external memory but 100 ns seems high and it's a killer in this project. The bizarre thing is that I put CE5 on a scope and it's active for only 20 ns. Why the other 80? I moved my GPIO writes around a bit and it appears that the core stalls 40 ns before CE5 goes active and stays stalled for 40 ns after CE5 becomes inactive. What's up?
I've setup the EMIF so that CE5 has no wait states. I have ECLKOUT at 150 MHz using SYSCLK4. Any idea what I might be doing wrong? I have to get around the extra 80 ns stall.
The EMIF registers are shown below. While I'm asking, the EMIF manual only describes a few registers that in the memory region of 0x70000000 to 0x700000D0. What does the data in the other address mean? Is one of them my problem?
0x70000000 0x00320311 0x40000000
0x70000008 0x00010620 0x00000753
0x70000010 0xFFFFFFFB 0x01FFFFFF
0x70000018 0x00000000 0x00000000
0x70000020 0x000000FE 0x00000000
0x70000028 0x40070B07 0x00040F14
0x70000030 0x00000000 0x00000000
0x70000038 0x00000000 0x00000000
0x70000040 0x00000000 0x00000000
0x70000048 0x00010000 0x00000000
0x70000050 0x00000000 0x00000000
0x70000058 0x00000000 0x00000000
0x70000060 0x00000091 0x00000000
0x70000068 0x00000000 0x00000000
0x70000070 0x00000000 0x00000000
0x70000078 0x00000000 0x00000000
0x70000080 0x00240120 0x00240120
0x70000088 0x00000002 0x00000002
0x70000090 0x00000000 0x00000000
0x70000098 0x00000000 0x00000000
0x700000A0 0x40000080 0x00000000
0x700000A8 0x00000000 0x00000000
0x700000B0 0x00000000 0x00000000
0x700000B8 0x00000000 0x00000000
0x700000C0 0x00000001 0x00000000
0x700000C8 0x00000000 0x00000000
0x700000D0 0x00000000 0x00000000
Thank you for any help,
Fred Hansen