Author Topic: FPGA based I/Q generator  (Read 2407 times)

0 Members and 1 Guest are viewing this topic.

Offline knightTopic starter

  • Regular Contributor
  • *
  • Posts: 50
  • Country: sg
FPGA based I/Q generator
« on: February 26, 2022, 10:06:06 am »
Hello. I need basic help in implementing an I/Q generator circuit on an FPGA. I have already coded the direct digital synthesis module that can generate sine and cosine wave. I just need help in developing the I/Q circuit. Please see the attached image.
 

Offline emece67

  • Frequent Contributor
  • **
  • !
  • Posts: 614
  • Country: 00
Re: FPGA based I/Q generator
« Reply #1 on: February 26, 2022, 06:24:09 pm »
.
« Last Edit: August 19, 2022, 05:18:12 pm by emece67 »
 

Offline cncjerry

  • Supporter
  • ****
  • Posts: 1308
Re: FPGA based I/Q generator
« Reply #2 on: February 26, 2022, 09:33:16 pm »
I and Q are two signals 90 degrees out of phase like sin and cos.  An I/Q pair oscillator is used with a real signal and a hilbert transform and a delay (one method) to create the signals that can be demodulated using the I/Q oscillator.  This might be a poorly written explanation but it is the basis for most SDR demodulation of AM/SSB/FM and phase modulated signals.

So if you have I/Q generated, what are you trying to accomplish? 

Jerry
 

Offline knightTopic starter

  • Regular Contributor
  • *
  • Posts: 50
  • Country: sg
Re: FPGA based I/Q generator
« Reply #3 on: February 27, 2022, 04:32:00 am »
I'm trying to generate SSB or AM signals from I/Q signal. Also, what is I envelope (I_ENV) and Q envelope (Q_ENV).
 

Offline hamster_nz

  • Super Contributor
  • ***
  • Posts: 2812
  • Country: nz
Re: FPGA based I/Q generator
« Reply #4 on: March 02, 2022, 07:35:43 am »
I'm trying to generate SSB or AM signals from I/Q signal. Also, what is I envelope (I_ENV) and Q envelope (Q_ENV).

They are the modulation "envelope" - controlling how much I and Q are in the modulated signal. They should really be filtered, conceptually for QPAM it might just be I_ENV is +1 or -1, and Q_ENV is +1 or -1, allowing two binary bits of information to be sent per symbol period.
Gaze not into the abyss, lest you become recognized as an abyss domain expert, and they expect you keep gazing into the damn thing.
 
The following users thanked this post: knight

Offline cncjerry

  • Supporter
  • ****
  • Posts: 1308
Re: FPGA based I/Q generator
« Reply #5 on: March 12, 2022, 10:04:58 pm »
Get a copy of "Digital Signal Processing in Communications Systems" by Frerking.  Should be available used.

To generate an SSB signal, you need oscillators and modulating signal(s) that are in quadrature (90 degrees out of phase, four signals).  The oscillator can be generated by a sin and cos pair as in your example but there are better ways to do it with less overhead that also doesn't exceed the floating point of the DSP.   I would look up how to generate the oscillators without sin/cos function.

One way to generate the modulating signal, you take a real signal, from say a microphone, and using a delay (equal to the length of the Hilbert transform) and a Hilbert transform (two paths) generate the I/Q signal for the modulator.  These two signals are what you refer to as I_ENV and Q_ENV.  Then depending on how those 4 signals are summed, you get either LSB or USB.  This is all at baseband.  You need to mix them up to the frequency you want to transmit or use a baseband real oscillator.   This is somewhat a broad explanation but if you get Frerking, he lays all this out perfectly.  Some PC DSP systems generate the internal oscillator at 12k (using a 48k sample rate) or even higher these days depending on the DAC. This then becomes your IF offset against your real RF oscillator.  Though SSB can be generated at baseband directly (no 12k internal IF), you can't generate FM without the IF offset ( at least I was never able to because of the DC component, maybe if the DC was filtered out?).  Once you have those 4 quadrature signals, you can do lsb, usb, dsb, AM, FM, phase, etc depending on how they are algebraically combined.  There is also an IFFT version that filters and does the Hilbert at the same time.  It might be the more modern way to do it.

That is the sum total of my memory of the subject.  I realized the AGC code for the SCHARC processors described in Frerking that was later borrowed and used in a number of SDRs.  I know of a few that used my FM code too but that was 20yrs ago.


Jerry
« Last Edit: March 12, 2022, 10:15:56 pm by cncjerry »
 
The following users thanked this post: oPossum, knight


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf