No. GNU Radio is not the best way to go about making a simple oscilloscope + function generator setup BUT it may suit what you are trying to do, which is actually something slightly different.
If you are specifically aiming at producing real-time real-world arbitrary waveform generation and basic oscilloscope functionality where speed is not critical and you have a PC available, then there are numerous free or low cost software solutions available that directly target these capabilities, either separately or in combination. Gargoyle and friends will tell you about many of these by using search strings such as
arbitary waveforms soundcard
The above produced either directly or via linked links (examples only) the references listed at the end of this post under "OSCILLOSCOPES & FUNCTION GENERATORS:"
BUT
GNU Radio is targeted more towards RF solutions than towards what you appear to be wanting to do. It essentially attaches processing software to an ADC/DAC front end of your choice with a minimum of intervening hardware an with a software radio as the mos likely target - BUT not the only one.
As it is RF focused in original mindset the most supported hardware look suspiciously like multi MHz RF front ends and costs accordingly, BUT it does have sound card drivers and also has emulation capability allowing complete software playing with no hardware at all.
So, yes, it will do what you want.
It is Python based. Whether it uses NumPy arrays or other means of data presentation is entirely your choice.
GNU Radio oscilloscope module usrp_oscope.py
Usefully, GNU Radio has an oscilloscope module available - usrp_oscope.py - here - 350 lines of Python code.
Oscilloscope module
Basic Q & A here
User discussion here and here
An excellent introduction to what GNU Radio does (and doesn't) do is here
[http://www.gnu.org/software/gnuradio/doc/exploring-gnuradio.html]
A good overview of hardware supported here
[http://gnuradio.org/redmine/projects/gnuradio/wiki/Hardware] with mention of soundcard interfaces.
They note:
Most computers nowadays are shipped with a built-in sound interface or sound card. 16 Bit resolution at 44.1 kHz (kSPS) and two channels is a long available level that you can expect. Virtually every operating system supports this hardware out of the box, and it's sufficient for a lot of DIY and hobby applications. You can expect stereo (2 channels) input and output.
If the quality of a built in sound interfaces are not very expensively built and introduce noise or show bad frequency characteristics or degraded resolution, that is dynamic range. Fortunately, high quality sound interfaces are offered, like professional digital recording equipment, with more than a dozen channels, up to 24bit resolution and 192kHz sampling rate. These interfaces can be connected internally via PCI bus or externally via USB.
GNU Radio's own Wiki - excellent get you ging page here
"Exploring GNU Radio" by Eric Blossom - the 'father' of the GNU Radio concept here
Python writing tutorials for GNU Radio here . They say:
Welcome, GNU Radio beginners. If you are reading this tutorial, you probably already have some very basic knowledge about how GNU Radio works, what it is and what it can do - and now you want to enter this exciting world of Open Source digital signal processing (DSP) yourself.
This is a tutorial on how to write applications for GNU Radio in Python. It is no introduction to programming, software radio or signal processing, nor does it cover how to extend GNU Radio by creating new blocks or adding code to the source tree. If you have some background in the mentioned topics and are starting to work with GNU Radio, this probably is the correct tutorial for you. If you don't know what a Software Radio is or what a FIR filter does, you should probably go a few steps back and get a more solid background on signal processing theory. But don't let this discourage you - the best way to learn something is by trying it out.
Although this tutorial is designed to make your introduction to GNU Radio as easy as possible, it is not a definitive guide. In fact, I might sometimes simply not tell the real truth to make explanations easier. I might even contradict myself in later chapters. Usage of brain power is still necessary to develop GNU Radio applications.
Wikipedia / GNU Radio here
- "OSCILLOSCOPES & FUNCTION GENERATORS:"
Free "Soundarb" soundcard based function generator. here
1
- SoundArb is a free program from David Sherman Engineering Co. that allows you to control a PC sound card like you would a conventional function generator. You can select standard waveforms, load arbitrary waveforms from a text wave table file, control the frequency and amplitude of the waveform, and select from a versatile set of triggering modes. With a stereo sound card, one channel can be used as a "sync" output.
Free software download here
XOSCOPE - GNU Sourceforge Oscilloscope here
- xoscope is a digital oscilloscope using input from a sound card orEsounD and/or a ProbeScope/osziFOX and will soon support Bitscopehardware. Includes 8 signal displays, variable time scale, math,memory, measurements, and file save/load.
Opencircuits.com/Oscilloscope - vast range of oscilloscopes including open source hardwrae, sound card based, more. Superb. Here
Free miniscope pc oscilloscpe front end here
This offering via EDN may be free Program turns PC sound card into a function generator with softwarehere
Wikipedia provides this introduction which in turn links to
Virtins Sound Card Signal Generator 3.2. Typical lowish but note free commercial offering. Free trial . $20 ish ull version here . Many siilar availabnle. Many free.
Basic tutorial
This handbook for a commercial product but with some good related material here
DIY Verilog FPGA implementation
Instructable AWG using an AVR microcontroller. Not quite what you want but shown minimalist hardware that can be used with no PC here
Your requirements will never be met.
A dish antenna is the best for providing focus and if you looked at voyager II, it used a 3.7 metre dish at about 3 GHz. This would give a 3dB half-beam-width of about 0.91 degrees.
I'm using the example of Voyager II because they would not ship something to the planets that had not been thought about (o-rings excluded from this statement).
At 1 GHz this half beam angle increases to 2.74 degrees
At 1 GHz and a 1m dish this increases to 10.2 degrees
See this calculator to check. To help you get further ideas about this follow these rules: -
- If you double the frequency, the gain of an antenna will quadruple.
- If you double the frequency, the beam-width of an antenna will halve.
- If you double the antenna diameter (keeping the frequency the same),
the gain of the antenna will quadruple.
- If you double the antenna diameter (keeping the frequency the same),
the beam-width of an antenna will halve.
Best Answer
There are vector phase shifter/modulator devices on the market. Basically, you generate a fixed shift (ideally around 90 degrees, but not critical) and then proportionally add/substract the original and fixed-shift phases to produce any desired output phase.
Getting best performance (especially if the fixed shift is not 90 degrees) would require using DACs to generate the control voltages for each phase from a lookup table based on measurements previously taken at a particular frequency (or automatically over a range of frequencies, perhaps using a GPIB-connected vector network analyzer)
RE-EDIT: Since you have a solution at low frequencies, one option is to just mix each of these up to 500 MHz using the same local oscillator and pass the outputs through matched band filters. This is slightly more practical if you use arbitrary generators capable of outputting a higher frequency, say 100 MHz, as then the filter requirements are looser. Ultimately this is sort of reshuffling of the same idea - it's still multiplication, but your control inputs are moderate frequencies instead of DC voltages and it moves the shifting requirement through the multiplier to where it is easy, at the cost of requiring some filters on the other side. And there's even a form where you replace the filters with a quadrature (2-phase) local oscillator and image reject mixers.
ADDITIONAL IDEA:
A pair of lower frequency linked generators could be used as references for PLL synthesizers multiplying to the desired frequency range. Changing the phase of the low frequency signal will result in a phase change of the high frequency one, of magnitude multiplied by the multiplication factor (think of the phase change as a time delay, with which the higher frequency signal must also align). The catch is that extremely fine control of phase would be necessary at the low frequency to get moderate resolution control at the higher one. For example, if you have a 20 MHz signal synthesized at 100 MSPS, a delay of one sample is 5 entire periods of a 500 MHz product! As a result, this would require a DDS with many bits of residual phase - that is to say, less significant bits of the phase accumulator that accumulate internally, and only eventually roll over into the bits that are of a high enough order to feed into the lookup table that generates sine samples. Any decent DDS has some of these; in this case you'd need an extreme. The idea probably works best when the DDS frequency is as high as practical - ie a few hundred MHz clocked at a gigasample (which is something you've been able to buy as an IC from Analog Devices etc for a few years now) and the PLL multiplication ratio is fairly low.
Most of these ideas seek to use a greater quantity of relatively inexpensive (per unit) active circuitry and even software to limit the requirement of expensive per-unit-adjusted precision passive elements. Unfortunately, most require pairs of filters or a shift network with performance that is either similar, or been per-unit characterized so that its imperfections can pre-compensated in the control settings used. The method using two low frequency DDS's and image reject mixers goes closest to avoiding this, but it needs near perfectly orthogonal quadrature LOs at fixed frequencies for each band - for example 400 MHz to mix to the 500 MHz band. It may be possible to create two phases by digitally dividing from a higher frequency, otherwise there would be a shift element that would need to be aligned for each band of interest. The soundcard-as-HF-exciter ham software-defined-radio people have done some looking at precompensating the synthesized signals to compensate for imperfect IQ LOs and mixers which could be looked into, but since the idea is to have perfect cancellation of the image frequency (vs filter it out) this is pretty critical.
Simple answer if $$ available
If budget permits, Agilent and presumably others offer dual channel and synchronizable arbitrary waveform generators that will do 500 MHz either directly or via an IQ mixer. As an off the shelf solution, this would be closest to extending what you are able to do at 20 MHz to the 550 MHz need. Such equipment is rented as if not more often than purchased outright.