Jump to content
  • 0

Adjusting phase in a string of otherwise identical RF pulses


Steve_3

Question

Posted (edited)

I'm using an AD3 with the python SDK for this.  Is there a way to define an RF pulse,  and then play it out N times,   but with a different phase each time?   Rebuilding the pulse in a loop appears to be somewhat time consuming and would likely be imprecise.    I can trigger the repeated pulses from a pattern generator, but I still don't know how to change the phase with each pulse.   Of course, time is an issue,  more than a few msec to update the pulse doesn't work.  

A bit of code you helped me with some time ago is attached.  Ideally I'd like the second pulse to be at a different phase.   180 is fine, but ideally any phase.  The 180 I can do with some external hardware at the cost of 3dB insertion loss, but I'd prefer to do this in software.

Thanks for any suggestions/pointers!  I have looked at the AnalogOut_Phase example, and tried to adapt it, but had no luck so far.

test_undersampling_v4.py

Edited by Steve_3
Add information
Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Thanks Attila.  I did not do a good job of explaining the issue,  unlike  AnalogOut_Phase.py,  I'm trying to send discrete pulses.   like the figure below.  Generally amplitude modulated, but sticking with simple pulses to get this working initially.   AnalogOut_Phase.Py appears to exit the wait/trigger loop loop and go back to the configure step.   I've tried to modify the example to run pulses, rather than a continuous waveform and having some difficulties.  I've tried generating a comb of triggers,  setting the RF pulse to wait for the next trigger and updating the configuration in a loop, but I can't get the loop to synchronize with the trigger.     What I was hoping  was to modify the phase during the wait/trigger phase so as not to introduce any variable PC delays into the loop.  Hope that makes some sense.     

image.png.2b0501fcc0d48992949416438501d153.png

Link to comment
Share on other sites

  • 0

Hi @Steve_3

Is the burst length 1ms and trigger rate 3ms 333Hz ?
Do you want a Scope input capture for each burst as well ?
Asking these because reading the capture will take additional time, about 1-10ms depending on capture size, and can influence the AWG phase change rate.

Link to comment
Share on other sites

  • 0

Thanks Attila.   Yes,  i do need to capture data between the pulses, and the bursts are 1-5 msec,   but about 3 MHz.    I read in the docs about a "phase buffer",  which led me down this path, wondering if it was possible to update that during the wait/repeat cycle in some manner.    I also don't see a way to 'toggle' between two RF pulses (each defined with different phases).  But there is a lot in the manual, I'm hoping I've missed something.

Link to comment
Share on other sites

  • 0

You could use AM to block the signal in middle and FM to adjust phase. Note the carrier may not start from 0* at +3ms since it is running from start, it just has 0V amplitude while 100% AM blocks it.

image.png

 

Link to comment
Share on other sites

  • 0

Thanks, really appreciate the responses.   I'll give that a try, maybe a very long RF pulse that is a concatenation of all the pulses (sincs), with -100% amplitude where I would want zero RF out.

Link to comment
Share on other sites

  • 0

Hi-  Is it possible that Waveforms has access to functionality that is not accessible in the SDK?   In particular:  Using FDwfAnalogOutNodeDataSet I can define a custom pulse, and I can use this to create a single pulse that is a series of pulses, zero in between them.  But, this is only defined by an array of real floats.   So I can't add a phase and AM modulation string,  as you have effectively done in the example above.    The   FDwfAnalogOutNodePhaseSet command simply takes a single variable for phase, whereas in your example, the phase is defined by a waveform.       Hoping I'm missing something.

Link to comment
Share on other sites

  • 0

FDwfAnalogOutNodePhaseSet sets the initial phase of the standard waveform

For PM waveform use FDwfAnalogOutNodeEnableSet(hdwf, 0, AnalogOutNodeFM, 2) # 2=PM amplitude and offset expressed in %, 3=PMD in *deg

image.png

 

image.png

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...