FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > DSP

DSP comp.dsp newsgroup, mailing list

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 07-29-2003, 01:12 PM
praveen
Guest
 
Posts: n/a
Default Hilbert IIR filter implementation

Hello,
I wanted to know how to implement Hilbert transform using IIR filter.
Any reference or article or suggestion will be great.
I wanted to implement it on a DSP processor.
Hardware structure, filter coefficient?????


waiting for reply
With regards
praveen
Reply With Quote
  #2 (permalink)  
Old 07-29-2003, 03:13 PM
Vladimir Vassilevsky
Guest
 
Posts: n/a
Default Re: Hilbert IIR filter implementation


Hello Praveen,

The hardware structure for IIR Hilbert transformer is standard cascaded
allpass biquad sections. The number of sections depends on what kind of
frequency range, phase, and gain accuracy do you need. The coefficients
are usually optimized by Chebyshev approximation. For example, for voice
band IIR Hilbert with 1% accuracy you need 6-th order filter at least.

Vladimir Vassilevsky, Ph.D.

DSP and Mixed Signal Design Consultant

http://www.abvolt.com


praveen wrote:
>
> Hello,
> I wanted to know how to implement Hilbert transform using IIR filter.
> Any reference or article or suggestion will be great.
> I wanted to implement it on a DSP processor.
> Hardware structure, filter coefficient?????
>
> waiting for reply
> With regards
> praveen

Reply With Quote
  #3 (permalink)  
Old 07-29-2003, 04:09 PM
Jerry Avins
Guest
 
Posts: n/a
Default Re: Hilbert IIR filter implementation

Vladimir Vassilevsky wrote:
>
> Hello Praveen,
>
> The hardware structure for IIR Hilbert transformer is standard cascaded
> allpass biquad sections. The number of sections depends on what kind of
> frequency range, phase, and gain accuracy do you need. The coefficients
> are usually optimized by Chebyshev approximation. For example, for voice
> band IIR Hilbert with 1% accuracy you need 6-th order filter at least.
>
> Vladimir Vassilevsky, Ph.D.
>
> DSP and Mixed Signal Design Consultant


Vladimir,

For analog work, it is customary to use a pair of third-order allpasses
whose outputs have relative quadrature but are not specified relative to
the input phase. How is the IIR case handled, and how is identical delay
for the two channels achieved?

Jerry
--
Engineering is the art of making what you want from things you can get.
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Reply With Quote
  #4 (permalink)  
Old 07-30-2003, 10:58 AM
Olli Niemitalo
Guest
 
Posts: n/a
Default Re: Hilbert IIR filter implementation

On Tue, 29 Jul 2003, Jerry Avins wrote:

> For analog work, it is customary to use a pair of third-order allpasses
> whose outputs have relative quadrature but are not specified relative to
> the input phase. How is the IIR case handled, and how is identical delay
> for the two channels achieved?


Here is described a very effective structure for an IIR allpass pair:

http://www.biochem.oulu.fi/~oniemita/dsp/hilbert/

Juicy specs of the example filter:

* Takes 8 multiplications per input sample
* Phase difference 90 +/- 0.7 degrees over a band of width 0.998*Nyquist

Unfortunately, I haven't written a software to calculate the coefficients
to a specification. Someone could do it, for sure!

-olli
Reply With Quote
  #5 (permalink)  
Old 07-30-2003, 02:28 PM
Jerry Avins
Guest
 
Posts: n/a
Default Re: Hilbert IIR filter implementation

Olli Niemitalo wrote:
>
> On Tue, 29 Jul 2003, Jerry Avins wrote:
>
> > For analog work, it is customary to use a pair of third-order allpasses
> > whose outputs have relative quadrature but are not specified relative to
> > the input phase. How is the IIR case handled, and how is identical delay
> > for the two channels achieved?

>
> Here is described a very effective structure for an IIR allpass pair:
>
> http://www.biochem.oulu.fi/~oniemita/dsp/hilbert/
>
> Juicy specs of the example filter:
>
> * Takes 8 multiplications per input sample
> * Phase difference 90 +/- 0.7 degrees over a band of width 0.998*Nyquist
>
> Unfortunately, I haven't written a software to calculate the coefficients
> to a specification. Someone could do it, for sure!
>
> -olli


Thanks. That's very nice work and presentation. It is a digital
equivalent of the two-channel, third-order analog quadrature circuit I'm
familiar with. When Vladimir wrote "... for voice band IIR Hilbert with
1% accuracy you need 6-th order filter at least" I assumed he meant a
single sixth-order filter. I was probably wrong about that.

Jerry
--
Engineering is the art of making what you want from things you can get.
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Reply With Quote
  #6 (permalink)  
Old 07-31-2003, 03:35 PM
Jerry Avins
Guest
 
Posts: n/a
Default Re: Hilbert IIR filter implementation

Peter Brackett wrote:
>

...
>
> If you don't care about phase linearity it's easy to generate a complex IIR
> filter with a single input and two outputs whose two output sequences are
> approximate Hilbert Transforms of each other to whatever degree of precision
> you require in your approximation.

...
>
> One method, perhaps the simplest of several methods, to accomplish this is
> to first design an appropriate"prototype" "real" low pass IIR filter to pass
> the desired bandwidth over which one desires the ninety degree phase
> [Hilbert Transform] relationship using say the bilinear transformation
> technique. Typically one might use say a Butterworth or an Elliptic
> low pass design.
>

...

Peter,

That's neat and almost intuitive. Please write it up with an example for
http://www.dspguru.com I think it belongs there.

Jerry
--
Engineering is the art of making what you want from things you can get.
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Reply With Quote
  #7 (permalink)  
Old 07-31-2003, 04:08 PM
Al Clark
Guest
 
Posts: n/a
Default Re: Hilbert IIR filter implementation

"Peter Brackett" <[email protected]> wrote in
news:bga4h9$73p$[email protected]:

> Praveen:
>
> [snip]
> "praveen" <[email protected]> wrote in message
> news:[email protected] om...
>> Hello,
>> I wanted to know how to implement Hilbert transform using IIR filter.
>> Any reference or article or suggestion will be great.
>> I wanted to implement it on a DSP processor.
>> Hardware structure, filter coefficient?????
>>
>>
>> waiting for reply
>> With regards
>> praveen

> [snip]
>
> Often one does not really need a Hilbert Transformer, what one
> requires is a method of producing two sequences which are Hilbert
> Transforms of each other from a single input sequence. i.e. a pair of
> networks having approximately a 90 degree phase shift between their
> outputs with no amplitude difference.
>
> If you don't care about phase linearity it's easy to generate a
> complex IIR filter with a single input and two outputs whose two
> output sequences are approximate Hilbert Transforms of each other to
> whatever degree of precision you require in your approximation. And
> the approximation can be couched in terms of dB [or Np] of suppression
> of undesired [error] responses.
>
> Neat, eh?
>
> If you do require phase linearity as well as the requisite 90 degree
> phase difference between the outputs then you must also design an
> all-pass phase equalizer to linearize the phases, but often that is
> not required. If it is required then it is still quite possible if
> you have the capability to desing group delay phase equalizers. Group
> delay all-pass equalizer design is not a widespread design method in
> common dsp toolkits.
>
> To begin the design of a pair of networks which have a ninety degree
> phase shift between their outputs, one simply designs an appropriate
> complex IIR filter [i.e. a filter without even symmetry about zero
> frequency in its' attenuation characteristic] having the desired
> degree of approximation to the Hilbert Transform magnitude in a dB
> sense.
>
> One method, perhaps the simplest of several methods, to accomplish
> this is to first design an appropriate"prototype" "real" low pass IIR
> filter to pass the desired bandwidth over which one desires the ninety
> degree phase [Hilbert Transform] relationship using say the bilinear
> transformation technique. Typically one might use say a Butterworth
> or an Elliptic low pass design.
>
> The "prototype" low-pass filter is a "real" filter which has real
> coefficients and, except in the case of odd order, for any single real
> pole or
> zero, all other poles and zeros will occur in complex conjugate pairs,
> and the filter will have real sequences as inputs and outputs.
>
> Then, having the z-plane pole and zero factors for this real low pass
> prototype filter in hand, simply rotate the whole pole zero
> constellation about
> zero in [say] the positive angular direction about z = zero in the
> z-plane to place
> the lower transition band in the appropriate location around zero
> frequency. After this rotation of the pole-zero constellation you will
> then have a pole zero
> constellation where the poles and zeros no longer occur in complex
> conjugate pairs.
> i.e. this rotated low pass will now be a complex filter with complex
> coefficients and
> complex sequence outputs, i.e. two sequences as outputs, a real
> sequence and an
> imaginary sequence.
>
> The real and imaginary output sequences of this complex rotated low
> pass filter will then be approximate Hilbert Transforms of each other
> to whatever degree of approximation [in dB] was set up in the original
> low pass prototype.
>
> Such IIR "Hilbert Transformers" are very efficient [economical in
> multiply-adds and memory requirements] when compared to the "classic"
> FIR Hilbert
> Transformer techniques.
>
> --
> Peter
> Consultant
> Indialantic By-the-Sea, FL.
>
>
>


Peter,

I think I'm still missing something. Doesn't rotating the low pass
prototype just create a bandpass filter? How do you structure the filter
to get the hilbert pair? Maybe I need pictures or coffee. Can you create
a simple example?


--
Al Clark
Danville Signal Processing, Inc.
--------------------------------------------------------------------
Purveyors of Fine DSP Hardware and other Cool Stuff
Available at http://www.danvillesignal.com
Reply With Quote
  #8 (permalink)  
Old 07-31-2003, 04:48 PM
Matt Boytim
Guest
 
Posts: n/a
Default Re: Hilbert IIR filter implementation

[email protected] (praveen) wrote in message news:<[email protected] com>...
> Hello,
> I wanted to know how to implement Hilbert transform using IIR filter.
> Any reference or article or suggestion will be great.
> I wanted to implement it on a DSP processor.
> Hardware structure, filter coefficient?????
>
>
> waiting for reply
> With regards
> praveen


This may not be exactly what you're looking for, but is is certainly
related and interesting none the less.

"A Simple Method for Sampling In-Phase and Quadrature Components",
Charles M. Rader, Lincoln Labratory, IEEE Transactions on something
(sorry, that's all I can read on my copy), 1984, pages 821-824

Matt
Reply With Quote
  #9 (permalink)  
Old 07-31-2003, 10:05 PM
Peter Brackett
Guest
 
Posts: n/a
Default Re: Hilbert IIR filter implementation

Al:

[snip]
"Al Clark" <[email protected]> wrote in message > Peter,
>
> I think I'm still missing something. Doesn't rotating the low pass
> prototype just create a bandpass filter? How do you structure the filter
> to get the hilbert pair? Maybe I need pictures or coffee. Can you create
> a simple example?
> --
> Al Clark
> Danville Signal Processing, Inc.

[snip]

Of course it's a "complex" bandpass filter.

Isn't that *exactly* what a Hilbert Transformer in "parallel" with a
constant delay
does? i.e. the "pair" forms a *complex* bandpass filter which rejects
negative
frequencies.

The "rotated" low pass filter is really two real filters sharing a common
input sequence
with separate output sequences. Each of the output sequences is a real
sequence and
the two are Hilbert Transforms of each other i.e. in the frequency domain
they
differ by 90 degrees in their phase angles.

You don't have to take the complex signal viewpoint if you are more
comfortable with
real sequences, but a complex sequence is nothing more than a pair of real
sequences.

If you wish to take the view of complex signals and complex frequencies
[includes the
concept of positive and negative frequencies] it will help with the
understanding of
the 90 degree phase splitter, in this *complex* view then the two output
sequences
would be simply "labeled" the "real" sequence" and the other the "imaginary
sequence".

i.e. One way of looking at a Hilbert Transformer placed in parallel with a
pure constant
delay network equal to the average latency of the Hilbert transformer is to
view the parallel
combination of the Hilbert Transformer and the pure constant delay pair as a
complex filter.
[In this case a filter that has one real input sequence and two output
sequences, call one
output sequence "real" and the other output sequence "imaginary" if you
will.]

The complex filter formed by a constant delay network in parallel with the
Hilbert
Transfromer then can be viewed as a *complex* bandpass filter passing a band
of
[complex] positive frequencies from [approximately] w = 0 up to its'
specified upper
cutoff frequency whilst suppressing all the negative frequencies which fall
in its' lower
stopband. i.e. a complex band pass filter.

The pair of cross-coupled real filters resulting from the rotation of a real
low pass
filter about z = 0 in the z-plane produces a pair of real filters whose
output sequences
are Hilbert Transforms of each other.

The advantages of this approach to producing a pair of sequences with a 90
degree
phase difference, when compared to an FIR Hilbert Transformer in
parallel with a constant delay is that the pair of IIR filters is *much*
more efficient at
producing the 90 degree phase shifted output sequences.

By more effiecient I mean:

The IIR method I proposed when designed to meet the same phase shift error
specification will have:

a) Considerably less over all latency than the Hilbert Transformer
technique.
b) Considerably fewer multiply-adds.
c) Considerably less memory requirements.

Sometimes the improvement in these implementation factors is almost an order
of magnitude!

Nice when you are short of power, memory and latenency, say in a mobile or
span powered
application.

On the other hand the IIR implementation produces a non-linear phase angle
when compared
to the linear phase of the Hilbert Transformer constant delay pair. Often
that simply doesn't
matter. But if it does, it can be corrected by using all-pass delay
equalizers in the two output
paths, but that is a subject for another posting! :-)

--
Peter
Consultant
Indialantic By-the-Sea, FL.


Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Verilog Implementation of FIR Filter Rahul Iyer VHDL 1 02-20-2008 07:48 AM
FPGA : Decimation Filter Implementation bijoy FPGA 9 12-26-2005 06:42 AM
Farrow filter VHDL implementation? Andrew Lohbihler FPGA 0 07-30-2005 05:41 AM
CIC filter implementation using FPGA Sam FPGA 3 01-01-2005 12:41 PM
IIR Filter Difference Equation Implementation Benjamin M. Stocks DSP 1 07-10-2003 10:25 PM


All times are GMT +1. The time now is 04:30 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved