Discussion:
writing complex arbitrary waveforms
(too old to reply)
falkpl
2006-12-03 20:10:14 UTC
Permalink
I am using a 6534 to communicate over a three line custom protocol with to an asic.  The chip expects a clock line (~4Mhz) a frame sinc bit on another line and 16 bits of data on a third line.  each command is 17 bits long, a frame sync bit on line 1 and 16 bits (the command word) on the data line.  I was able to implement this by using a port to make the approperate wave form (using 3 of the 8 lines in a digital out port).  Now the problem, I will need to issue 48 different command words in a specific order and the commands must be seperated by an exact number of clock cycles.  I can generate a very long waveform and do this but the waveform becomes extremly long (10's of MBs).  Is there a methot of creating 49 different buffers (one for each command word and 1 for the clock cycles) and then queuing them up to issue in a specific order without any dropped clock cycles between digital out writes?  I am relativly new to digital output streaming and am stuck.
 
Paul
falkpl
2006-12-04 21:40:10 UTC
Permalink
Changing hardware is not a realtiy.  The system is already in place and I am trying to enhance it unfortunatly.  I could however try to augment it with an external pulse train to send out finite timed sections of the buffer.  That is, make one buffer consisting of all the commands (17bits each on 3 lines) and send them out on a triggered edge, would be very nice if the dio card had atleast one counter onboard.  But you dont think there is a way to conmtrol the buffers more precicly on this card?  Not exactly the news I was hoping for.  I will keep banging my head in search of a solution.  Thanks anyway.
 
Paul
Kevin Price
2006-12-05 00:40:10 UTC
Permalink
I don't know the 6534 all that well, but have done a fair amount of hw-timed DIO with the newer M-series boards.  I would expect that you can control your waveform with good precision, but not without some hassle.  If the onboard memory isn't deep enough to hold your whole waveform, you'd have to do just what you figured on -- write the 10's of MB of samples down piecewise using the right bite-sized chunks at the right time.  You'd probably have a loop to query the output progress status which would then alert a different loop that'd write another chunk to the task.  Something like that.
 
Should be do-able, but it feels kinda dirty and inelegant.  I think that's what you're stuck with though.  Anyone out there know otherwise?
 
-Kevin P.
 
falkpl
2006-12-05 17:10:13 UTC
Permalink
Thanks for all the input. Since changing the card is not really an option it might be easiest to add a simple timer card (6601?) and use the pulsetrain to write sections (1 command at a time) triggered by the pulse train.  Should this work, ie write n(17 bits) samples on each rising edge of the puste train where the edges are set to time the command writes?  I can use rtsi bus to avoid any additional external wiring. 
 
Paul

Loading...