Introduction
For a SDR project i'm working on, i needed a signal generator with verry specific parameters.
One could use GNU/Radio for such need, but i decided to use an FPGA in stead.
The idea was to use a technique known as Envelope Elimination and Restoration.
This basicly means removing the amplitude information from a signal and only process the phase information.
Later you can add the amplitude information tot the system. This has several advantages like no need for linear systems.
Just at the end following the restoration step we're back to normal again.
HardWare
The hardware part is kept realy simple.
I used a ladder-resistor network to create a DAC that outputs the phase information direct at the target frequency.
An even simpler PWM followed by a Low-Pass-Filter provides the amplitude information needed for the envelope restoration part.
DAC using PWM followed by a LPFThese signals are fed into what in essence is a verry basic Amplitude-Modulator. Thats where the Envelope Restoration takes place.
What the electronics look like
Firmware
The firmware was created in VHDL and is running on a Altera Cyclone-IV FPGA.
The block diagram ilustrates how the whole process works.
I startof with a sinewave generator that produces both I and Q for an variating audioable sound This can be replaced easyly by a microphone signal later. A Sinewave generator creates a sinewave using a phase counter and an Sine approximation function. A external phase can be added to the phase counter, resulting in a phase modulated carrier, straight out of the Resitor-DAC The amplitude part is send to the PWM generator and after the LPF provides a descent amplitude signal Having just the need for a steady tone or predefine sequence of tones this is all i need for the project. The way all is setup the transmitter produces a USB signal at the target frequency of 1850kHz.
This is what the complete transmitter looks like