UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Adventurer
Adventurer
773 Views
Registered: ‎06-17-2016

Making LFM by DDS

Hi

IP: DDS v4

IDE: ISE 14.7

I want to make an LFM signal(up chirp) that starts from F0=69MHz to F1=71MHz. I configure the IP core and calculate the start phase according to F0(phase0) and end phase according to F1(phase1).

I increment the phase from phase0 to phase1 and the LFM signal generated, I expected an up chirp LFM signal produced but it is a symmetric LFM signal.

Why did this problem happen? I think I configure the DDS IP Core correctly!!!

Please guide me.

Best Regards

 

0 Kudos
12 Replies
Adventurer
Adventurer
734 Views
Registered: ‎06-17-2016

Re: Making LFM by DDS

Please, answer me!!! I'm waiting.

 

0 Kudos
Adventurer
Adventurer
709 Views
Registered: ‎06-17-2016

Re: Making LFM by DDS

Hi

Why nobody answer? Is it a wrong question?

 

 

0 Kudos
669 Views
Registered: ‎01-22-2015

Re: Making LFM by DDS

@dariush84 

I have not used DDSv4 to create a LFM signal – but maybe we can learn together.

I read about DDSv4 from Xilinx document DS558, which I hope you are using too.

I think the procedure for creating the LFM signal is:

1) Define the LFM: 
    F1=start frequency
    F2=end frequency
    TL=time-length of the LFM

2) Define other things: 
     FCLK = frequency of DDS clock
     FOUT = frequency output waveform from the DDS
     B = number of bits in DDS phase accumulator (see DS558)
     dP = (FOUT * 2^B) / FCLK =  phase increment value sent to DDS  (from DS558)

3) For the LFM, the equation showing how FOUT must change with running time, TR, is:   FOUT = F1 + TR * (F2 – F1) / TL

4) TR is broken into time segments.  The time-width, TC, of each segment is equal to the period of FCLK.  So, the total length of the LFM will consist of N=TL/TC time segments.  That is, the LFM consists of N time segments that are indexed by n=1 to N.

5) From 3) and 4) we can write:  FOUT = F1 + n * TC * (F2 – F1) / TL,  (n=1,N)

6) To Do:  Write HDL that calculates values of dP and feeds them to the DDS during N cycles of FCLK (causing FOUT to change from F1 to F2 in TL seconds).   That is, for (n=1,N), use equation from 5) to calculate FOUT and then use this value of FOUT in equation from 2) to calculate dP.

Cheers,
Mark

Tags (2)
0 Kudos
Adventurer
Adventurer
626 Views
Registered: ‎06-17-2016

Re: Making LFM by DDS

Hi

I do almost the same.

1) I suppose B=48.

2) I calculate dP1 according to F1=start frequency.

3) I calculate dP2 according to F2=end frequency.

4) N=TL/TC

5) I increase dP1 until reach to dP2 by PINC that is calculated from PINC=(dP2-dP1)/N.

I expected an up chirp signal but it is symmetric. The symmetric LFM signal is true but according to DDS IP core set , I expected an up chirp signal.

Best Regards

0 Kudos
620 Views
Registered: ‎06-21-2017

Re: Making LFM by DDS

What is your clock frequency?

0 Kudos
602 Views
Registered: ‎01-22-2015

Re: Making LFM by DDS

@dariush84 

I agree with Bruce.  Please give us the numbers for F1, F2, TL, and FCLK.

Also, describe “symmetric LFM” - maybe with a picture.

 

0 Kudos
Adventurer
Adventurer
555 Views
Registered: ‎06-17-2016

Re: Making LFM by DDS

Hi

Symmetric LFM signal in the time domain is as below:

15.JPGSymmetric LFM

But I sweep from F1 to F2 and I expected as below:
Capture16.JPGUpchirp LFM signal

 

 

 

When I look at the LFM signal at the frequency domain all the things are correct!!!

B=48

F1=79.99Mhz

F2=80.01Mhz

TL=7.8ms

FCLK=210MHz

The core is in streaming mode.

My produced LFM doesn't have any problem when I look at the signal in the frequency domain,

my problem is with the time-domain signal.

 

Regards

15.JPG
0 Kudos
544 Views
Registered: ‎06-21-2017

Re: Making LFM by DDS

I assume that your expected signal is a MatLab plot and the signal has many points in each cycle of the sine wave.  What happens if you decimate the expected signal to the same sample rate as the signal you collected?

0 Kudos
502 Views
Registered: ‎01-22-2015

Re: Making LFM by DDS

@dariush84 

For the DDS parameters you are using, I agree with Bruce that decimation will make it difficult to “see” the chirp waveform when looking at the DDS outputs.

That is, you are making a 80MHz waveform with samples taken at the 210MHz rate. That’s less than three samples per full-period sinusoid (Nyquist says we need at least two samples).  It’s hard to draw a sinusoid when you have only 2 or 3 points over a full-period of the sinusoid.

As a test, try using F1=9.99MHz and F2=10.01MHz.  Then, you’ll get at least 20 points for each sinusoid and you can easily “see” the chirp waveform - which should look as you expect.

0 Kudos
Adventurer
Adventurer
417 Views
Registered: ‎06-17-2016

Re: Making LFM by DDS

Hi

Sorry for my delay.

Thanks for your answer, I will test soon.

 

Best Regards

0 Kudos
135 Views
Registered: ‎12-08-2019

Re: Making LFM by DDS

Hi...as part of my project i want to generate lfm signal using dds ip core in vivado..

As i am a beginner i dont have any clear idea about how to do this..

Can u please share the full vhdl code of this lfm signal..with xplanations

0 Kudos
Scholar dgisselq
Scholar
50 Views
Registered: ‎05-21-2015

Re: Making LFM by DDS

aseelatk@gmail.com,

This article goes over the details, equation by equation, of how a sine wave generator, such as Xilinx's DDS, works internally.  In this case, there are three basic parts: something to handle bus logic, something to generate the phase to go into the sinewave table lookup, and then the sinewave generator itself.

Further, when it comes to sine wave generation, there are several ways to do it.  The basic method of table lookup is quite simple.  If you wanted to go one step simpler, you might consider skipping the table entirely and just grabbing the MSB of the phase, or perhaps even the two MSBs of the phase--at a performance loss of course.  If you want to go more complex, you can use a CORDIC--a method known for generating sine waves without multiplies.  Sadly, CORDICs can be very logic intensive for large bit-widths.  The good news is that the DSPs available on Xilinx FPGAs provide an easy solution to the problem, so you can use linear interpolation, quadratic interpolation, or more to get roughly as good as you want.

You can find examples of all of these sine wave generation methods on line, or for simplicity just use the Xilinx DDS IP.  That said, the examples should give you an idea of how the sine wave generation section of the Xilinx DDS IP might work.

Dan

0 Kudos