brucexliu Posted June 30, 2013 Report Posted June 30, 2013 Hi, I am doing a project which required high speed data commnication between 2 chassis. 24 Double digital numbers in a loop rate 10K. The first thing come to my mind is using reflective memory. But the result is not good enough. The data transfer tooks 80% of time in the 10K loop, Then to avoid loop late, I could not do any thing else in this loop. Is there any option else? Maybe using digital I/O in FPGA card? Thanks in advance! Quote
ShaunR Posted June 30, 2013 Report Posted June 30, 2013 Hi,I am doing a project which required high speed data commnication between 2 chassis. 24 Double digital numbers in a loop rate 10K. The first thing come to my mind is using reflective memory. But the result is not good enough. The data transfer tooks 80% of time in the 10K loop, Then to avoid loop late, I could not do any thing else in this loop. Is there any option else? Maybe using digital I/O in FPGA card? Thanks in advance! It depends where your bottleneck is. 24xDouble precision numbers @ 10k is about 2MB/sec. Doesn't sound a lot to me. Are we talking PXI-RT or PXI-Windows7? How are you acquiring and how are you transferring (TCPIP, MXI?). Quote
brucexliu Posted June 30, 2013 Author Report Posted June 30, 2013 It depends where your bottleneck is.24xDouble precision numbers @ 10k is about 2MB/sec. Doesn't sound a lot to me. Are we talking PXI-RT or PXI-Windows7? How are you acquiring and how are you transferring (TCPIP, MXI?). It's PXI-RT, And yes, A 2MB/s is not high speed. But when I need a frequently transfering and receiving function in a determined loop rate, it is... Here is how my application works. PXI A and PXI B are synchronized using a 10K trigger signal. PXI A: Loop Rate 10K, Read 12 DBL from PXI B -->Processing-->Send 12 DBL to PXI B PXI B: Loop Rate 10K, Read 12 DBL from PXI A -->Processing-->Send 12 DBL to PXI A the transfer part took more time than I thought.. My processing part will take about 50us, and the transfer data take about 70us while using reflective memory(GE 5565)... So I am wonder how can I make the transfer time less than 40us. Quote
ShaunR Posted June 30, 2013 Report Posted June 30, 2013 It's PXI-RT, And yes, A 2MB/s is not high speed. But when I need a frequently transfering and receiving function in a determined loop rate, it is...Here is how my application works. PXI A and PXI B are synchronized using a 10K trigger signal. PXI A: Loop Rate 10K, Read 12 DBL from PXI B -->Processing-->Send 12 DBL to PXI B PXI B: Loop Rate 10K, Read 12 DBL from PXI A -->Processing-->Send 12 DBL to PXI A the transfer part took more time than I thought.. My processing part will take about 50us, and the transfer data take about 70us while using reflective memory(GE 5565)... So I am wonder how can I make the transfer time less than 40us. You want it 40 usecs because because 40+50 <100? Put your acquisition and processing (50us) in a producer loop and the TX in a consumer loop. Then your total processing time will be just the worst of the two (70us) rather than the addition of both. Quote
brucexliu Posted June 30, 2013 Author Report Posted June 30, 2013 You want it 40 usecs because because 40+50 <100? Put your acquisition and processing (50us) in a producer loop and the TX in a consumer loop. Then your total processing time will be just the worst of the two (70us) rather than the addition of both. Thanks for your methond. But unfortunately, I could not use the producer/consumer because of the data dependancy. The processing function in PXI A depend on the latest data of last loop from PXI B. And so does PXI B. In other word the data need to be synchronized. So all the program need to be done in 100us. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.