04-06-2006 12:47 PM

04-07-2006 03:50 PM
04-10-2006 02:44 PM
04-10-2006 03:08 PM
Thanks for the replies. First off resetting the entire FPGA is not an option for me as the FPGA is simultaneously doing digital data generation as well as digital data recording and they work independantly of eachother as two seperate state machines. As for Christian's suggestion I think this is (near) exactly what I am doing. Let me post a state diagram
[b]Initialize[/b]
While (number of elements != 0)

04-10-2006 03:08 PM
Thanks for the replies. First off resetting the entire FPGA is not an option for me as the FPGA is simultaneously doing digital data generation as well as digital data recording and they work independantly of eachother as two seperate state machines. As for Christian's suggestion I think this is (near) exactly what I am doing. Let me post a state diagram
[b]Initialize[/b]
While (number of elements != 0)

04-10-2006 03:08 PM
Thanks for the replies. First off resetting the entire FPGA is not an option for me as the FPGA is simultaneously doing digital data generation as well as digital data recording and they work independantly of eachother as two seperate state machines. As for Christian's suggestion I think this is (near) exactly what I am doing. Let me post a state diagram
[b]Initialize[/b]
While (number of elements != 0)

04-10-2006 03:26 PM
04-10-2006 03:33 PM
Sorry about all those multiple posts, I was trying to edit my post and pressed back a few times not knowing that would happen. The forum doesnt seem to want to let me edit/delete them either. In any case here is what the pertient parts of the state machine are doing. Note that I have never used DMA Configure/Stop/Start, simply DMA Read which seems to do all the configuring for me. If this isnt optimal, please let me know. One thing I noticed by adding this DMA Read functionality in the Initialize state is that it added a noticible pause between the initialize state and the idle state at which time Resource manager shows 100% cpu activity. The pause is about 3-4 seconds.
State: Initialize
While( Number_of_Elements != 0 )
{
DMA READ (timeout = 0,number of elements = 1)
}
Next_State = idle
State: Idle
While ( Start != 1 )
{
}
Next_State = Recording
State: Recording
Timed_While ( (DMA_STOP || ABORT) != 1 )
{
DMA READ (timeout = 0, number of elements = 14000, timed loop period = 130ms )
}
Next_State = Initialize

04-10-2006 04:55 PM
If you don't call DMA Configure and DMA Start, they will be executed automatically the first time you call DMA Read. I think this may explain why your Initialize state is taking so long. I would suggest you call these methods explicitly. It also allows you to manually configure the size of the DMA buffer on the host.
I don't know if you have other code in your Initialize state, but if you don't, you should not need this state any more. Once you have called DMA Configure and DMA Start you are ready to go into the Recording state.
04-10-2006 06:27 PM - edited 04-10-2006 06:27 PM
Message Edited by SiegeX on 04-10-2006 06:28 PM
