DSPRelated.com
Forums

Applying hilbert transform close to DC

Started by Aaron December 6, 2005
Hello,

I've been trying to apply a hilbert transform from DC to around 10kHz @
a 57600Hz sample rate however the 90 degree phase shift doesn't work
well close to DC (which is expected). Btw, this is for an
implementation of the phasing method for SSB-SC modulation.

Is there some way to get around this problem? or a better way to
perform the phase shift?

I've been experimenting with upshifting the baseband signal to some
arbitary frequency (thus removing DC) and then applying the transform
but this deviates from the formula and hence I can't get it to work...

Thanks,
Aaron

"Aaron" <aaron.low@iinet.net.au> wrote in news:1133927856.693521.114810
@g14g2000cwa.googlegroups.com:

> Hello, > > I've been trying to apply a hilbert transform from DC to around 10kHz @ > a 57600Hz sample rate however the 90 degree phase shift doesn't work > well close to DC (which is expected). Btw, this is for an > implementation of the phasing method for SSB-SC modulation. > > Is there some way to get around this problem? or a better way to > perform the phase shift? > > I've been experimenting with upshifting the baseband signal to some > arbitary frequency (thus removing DC) and then applying the transform > but this deviates from the formula and hence I can't get it to work... > > Thanks, > Aaron > >
Hilbert tranformers work fine. The problem is that you need a long delay as you go down in frequency. Think about what a 90 degree phase shift at DC is. It would take infinite taps. To shift 20 Hz by 90 degrees requires a 1/80 sec delay. A short delay line is not going to be able to create this much delay with a 57600 Hz sample rate -- Al Clark Danville Signal Processing, Inc. -------------------------------------------------------------------- Purveyors of Fine DSP Hardware and other Cool Stuff Available at http://www.danvillesignal.com

Aaron wrote:

> Hello, > > I've been trying to apply a hilbert transform from DC to around 10kHz @ > a 57600Hz sample rate however the 90 degree phase shift doesn't work > well close to DC (which is expected). Btw, this is for an > implementation of the phasing method for SSB-SC modulation. > > Is there some way to get around this problem? or a better way to > perform the phase shift?
There is no silver bullet. You can do Hilbert transform using multirate filterbanks; that takes less computation.
> I've been experimenting with upshifting the baseband signal to some > arbitary frequency (thus removing DC) and then applying the transform > but this deviates from the formula and hence I can't get it to work...
You can do it this way however you have to build the bandpass filters to separate /+/ and /-/ spectrum. That is not easier then making 90 degree shift. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Hello Vladimir,

Vladimir Vassilevsky wrote:
> > There is no silver bullet. You can do Hilbert transform using multirate > filterbanks; that takes less computation.
That's useful information but as Al pointed out it won't really solve my problem as I still require the phase shift close to DC and multirate filterbanks will still suffer from the same delay requirements? (note: I've never used them before though).
> > I've been experimenting with upshifting the baseband signal to some > > arbitary frequency (thus removing DC) and then applying the transform > > but this deviates from the formula and hence I can't get it to work... > > You can do it this way however you have to build the bandpass filters to > separate /+/ and /-/ spectrum. That is not easier then making 90 degree > shift.
Pls let me describe this a little since I'm new to this I've probably made a mistake. In matlab... -Take a 1kHz sine wave - m(t) -I used a 'carrier' tone of 14kHz - c(t) -Multiply the signals Now this is the signal I've been trying to play around with. I thought that by applying the HT to this then shifting it back to baseband I could see if I got the required 90 degree phase shift. I worked this out with trig and I think it should work?? But this doesn't seem to be the case. Is there something wrong with applying the HT in this way? Cheers, Aaron
Aaron wrote:
> Hello Vladimir, > > Vladimir Vassilevsky wrote: > >>There is no silver bullet. You can do Hilbert transform using multirate >>filterbanks; that takes less computation. > > > That's useful information but as Al pointed out it won't really solve > my problem as I still require the phase shift close to DC and multirate > filterbanks will still suffer from the same delay requirements? (note: > I've never used them before though). > > >>>I've been experimenting with upshifting the baseband signal to some >>>arbitary frequency (thus removing DC) and then applying the transform >>>but this deviates from the formula and hence I can't get it to work... >> >>You can do it this way however you have to build the bandpass filters to >>separate /+/ and /-/ spectrum. That is not easier then making 90 degree >>shift. > > > Pls let me describe this a little since I'm new to this I've probably > made a mistake. > In matlab... > -Take a 1kHz sine wave - m(t) > -I used a 'carrier' tone of 14kHz - c(t) > -Multiply the signals > Now this is the signal I've been trying to play around with. I thought > that by applying the HT to this then shifting it back to baseband I > could see if I got the required 90 degree phase shift. I worked this > out with trig and I think it should work?? But this doesn't seem to be > the case. Is there something wrong with applying the HT in this way?
What do you mean by "close to DC"? If you limit your frequencies to those above 40 Hz -- the lower limit of a telephone is about 300 Hz -- you need maybe 15 ms delay. For many applications, that's doable. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Hi Jerry,

Jerry Avins wrote:

> What do you mean by "close to DC"? If you limit your frequencies to > those above 40 Hz -- the lower limit of a telephone is about 300 Hz -- > you need maybe 15 ms delay. For many applications, that's doable.
Well, my goal is to support data transmission which is DC to about 10 kHz for our system. I'm sure a 40 Hz cutoff would be acceptable but wouldn't a 15 ms delay buffer @ 57600Hz kill my dsp with a 800+ tap filter? Cheers, Aaron
"Aaron" <aaron.low@iinet.net.au> wrote in news:1134104772.517055.8200
@z14g2000cwz.googlegroups.com:

> Hi Jerry, > > Jerry Avins wrote: > >> What do you mean by "close to DC"? If you limit your frequencies to >> those above 40 Hz -- the lower limit of a telephone is about 300 Hz -- >> you need maybe 15 ms delay. For many applications, that's doable. > > Well, my goal is to support data transmission which is DC to about 10 > kHz for our system. I'm sure a 40 Hz cutoff would be acceptable but > wouldn't a 15 ms delay buffer @ 57600Hz kill my dsp with a 800+ tap > filter? > > Cheers, > Aaron > >
It seems to me that the first thing you can do is reduce the sample rate. If your highest frequency of interest is 10k, you don't need to sample at 57600. You could decimate by 2. I don't know what DSP you are using but the computational requirements might not be a problem. A typical SHARC DSP operating at 200MHz (not the fastest SHARC) can perform (200M x 2)/57600 = 6944 instructions per sample assuming SIMD. You can perform similar calculations to determine whats possible with whatever target DSP you are looking at. -- Al Clark Danville Signal Processing, Inc. -------------------------------------------------------------------- Purveyors of Fine DSP Hardware and other Cool Stuff Available at http://www.danvillesignal.com

Aaron wrote:

>>There is no silver bullet. You can do Hilbert transform using multirate >>filterbanks; that takes less computation. > > > That's useful information but as Al pointed out it won't really solve > my problem as I still require the phase shift close to DC and multirate > filterbanks will still suffer from the same delay requirements? (note: > I've never used them before though).
There is no method to avoid the delay if you need the 90 degree shift. This is the fundamental limitation. Any method will require the delay of about 1/4 period of the lowest frequency at least; the difference can be in the computing efficiency only.
> >>>I've been experimenting with upshifting the baseband signal to some >>>arbitary frequency
>>You can do it this way however you have to build the bandpass filters to >>separate /+/ and /-/ spectrum. That is not easier then making 90 degree >>shift. > > > Pls let me describe this a little since I'm new to this I've probably > made a mistake.
The correct way to do 90 shift by band shifting is: 1. multiply the signal by exp(iwt) 2. filter the upper (or lower) sidebands from I and from Q. This is where the filters come in and where the delay will be incurred. 3. multiply the signal by exp(iwt) -> back to the baseband you have I and Q.
> In matlab...
Matlab is a worseless toy for rookies. BTW, If your signal is already digitized why can't you just use a modem to transmit it in the digital format? Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Al Clark wrote:

> It seems to me that the first thing you can do is reduce the sample rate. > If your highest frequency of interest is 10k, you don't need to sample at > 57600. You could decimate by 2.
Yes...that will definitely help and may be required with what little processing power I have to play with. Thanks, Aaron
Vladimir Vassilevsky wrote:

> The correct way to do 90 shift by band shifting is: > > 1. multiply the signal by exp(iwt) > 2. filter the upper (or lower) sidebands from I and from Q. This is > where the filters come in and where the delay will be incurred. > 3. multiply the signal by exp(iwt) -> back to the baseband you have I and Q.
ic....sort of. ill have to try it.
> Matlab is a worseless toy for rookies.
Unfortunately this describes me perfectly.....the rookie part that is
> BTW, If your signal is already digitized why can't you just use a modem > to transmit it in the digital format?
I'm working on a modem :) Thanks, Aaron