ADRV9361-z7035 SDR for generationg arbitrary waveform

Recommended Posts

Dear All

I want to generate an arbitrary waveform or tone having bandwith as large as 20 MHz . I am using ADRV9361-z7035 hardware from analog devices . I gone through online material , but I found material related to LTE waveform , DSSS etc .So  I dont want to generate a tone or spectrum of particular standard . I am very curios that how this be done ? as the SDR I am using has 56 MHz (real time instantaneous BW ).

Best Regards

Share on other sites

First of all the Project Vault is a place to post working projects, not ask questions; so this post belongs somewhere else.

Doing things and knowing how they work are often two different challenges. Understanding how to create a tone and how to implement LTE are worlds apart. Wanting to understand the concepts for both are worthwhile goals. I'd advise starting with a good textbook. Janak Sodha's book Fundamentals of Communications Systems is a good introductory text with lots of accessible examples. Analog Devices has a number of good application notes texts available as well. Beware that there is a lot of math involved. Fortunately, one doesn't have to do brute force math to implement basic signal creation.

To start, consider a vector. It has length and an angular orientation relative to some X-Y coordinate system. If you pin the tail to a fixed point and spin the head of the vector around at a constant rate you've created the basis for a tone. The basic building block of a tone generator is the phase accumulator. The phase accumulator is nothing more than an adder where you don't care about overflow. The time it takes between overflows represents the tonal frequency. Of course tones are sinusoidal so the actual tone requires using the accumulated phase as a pointer into a sine or cosine lookup table. And that's the 10 second introductory lecture on communications. Now if you suppose that creating a tone and creating the exact tone with the qualities that you want might be a bit more complicated then you assume correctly; but dealing with the details isn't a 10 second presentation. Now, you can do all sorts of interesting things with your rotating vector like modulate ( vary ) its magnitude for AM. Or, instead of changing the phase input to your phase accumulator at a constant rate you can modulate the input to do FM or PM. If you create a number of different tones and add them you can encode information that can be extracted by finding which tones make up the signal. There's quite a leap from there to modern communications in terms of what you need to understand but that's the fun. All of these can be implemented in FPGA logic with a lot of knowledge and a bit of insight. Communications is little more than creating and manipulating tones with some sophisticated conditioning involved. Conditioning is important because poorly designed or constrained communications interfere with other even well designed communication systems. That's why the experimenter needs to be careful building hardware that transmits signals. Drowning out an FM station that you are listening to while playing around with your hardware might be fun for you but will not be so much fun for your neighbours; particularly if they are dependent on a communications system like police and firemem or pilots.

The pioneers of modern communications were mathematicians like Fourier, Laplace and Euler who understood the basic concepts long before other very smart people got around to playing with tonal generation for transmitting and receiving information. And all of it is possible because someone had some insight that made the very difficult practical to implement.

Share on other sites

It's occurred to me that even a 10 second lecture needs preliminary introductions.

If you want to do cool stuff with logic then you need to understand numbers. Anything that you can do with decimal numbers you can do with binary numbers. Binary numbers can represent integer, fractional or mixed numbers; you just need to understand how to do the book-keeping that is required to know where the decimal point is in fixed length storage units like the std_logic_vector. You need to understand what happens when you throw away or truncate bits that don't fit your storage elements, and what happens when you use rounding to determine what that lsb should be. You need to understand bit growth for adding numbers and multiplying numbers. Once you figure out the basics your digital world becomes a vastly less limited place. Sure you can let others do your work for you using canned IP and such but this comes at a high cost and limits your horizons. It's not really much different for software applications, though these days few people would even consider trying to anything without pre-compiled libraries or high level functions that come with tools like Matlab.