The actual application we're planning to develop will try and capture input pin state changes (currently the 5 DSPI pins on the ITX header connector setup as GPIO) over a short (~15 second) period, but at as high a rate as possible. We need to capture the timing of the pin changes, so using the slice timer as a reference (4 bytes). This therefore requires 5 bytes of data to be captured each iteration of the loop.
Ideally we'd like to capture at a rate close to 1.7MHz, which it appears might be possible as I've exceeded 2MHz on this simple benchmark (copying 5 bytes in a while loop). The only practical difference between the benchmark and the real app, is we don't need to toggle output pins, just read the input pins.
Capturing 5 bytes, 1.7 million times per second will consume around 9MB every second. For 15 seconds, that's 135MB, a little more than the 128MB max of a LogicPD FireEngine, but the time etc is adjustable.
Therefore due to the amount we need we're forced to use SDRAM for storing the data and not the faster SRAM
One option we might like to try, in a hope to improve memory usage, is to only capture on an external pin change which triggers an interrupt - this would stop us capturing the same pin state for a number of cycles of the loop, wasting memory.
What I've found though is that doing this exact same capture process (5 bytes) but triggered by a GPT expiring (counter set around 12, any less and I have problems), appears noticably slower. I guess that's the problem with interrupts, they have an overhead, whereas a simple while(1) loop has little.
Message Edited by David Hearn on 2006-06-09 09:55 AM