Al:
[snip]
"Al Clark" <dsp@danvillesignal.com> 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 by Matt Boytim●July 31, 20032003-07-31
praveenkumar1979@rediffmail.com (praveen) wrote in message news:<ff8a3afb.0307290312.4438c8c3@posting.google.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 by Al Clark●July 31, 20032003-07-31
"Peter Brackett" <ab4bc@ix.netcom.com> wrote in
news:bga4h9$73p$1@slb1.atl.mindspring.net:
> Praveen:
>
> [snip]
> "praveen" <praveenkumar1979@rediffmail.com> wrote in message
> news:ff8a3afb.0307290312.4438c8c3@posting.google.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
> [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 by Jerry Avins●July 31, 20032003-07-31
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 by Peter Brackett●July 31, 20032003-07-31
Praveen:
[snip]
"praveen" <praveenkumar1979@rediffmail.com> wrote in message
news:ff8a3afb.0307290312.4438c8c3@posting.google.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
[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.
Reply by Jerry Avins●July 30, 20032003-07-30
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 by Olli Niemitalo●July 30, 20032003-07-30
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 by Peter Brackett●July 29, 20032003-07-29
Praveen:
[snip]
> 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 there outputs with no amplitude difference.
If you don't care about phase linearity it's easy to generate a complex IIR
filter 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 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. This latter all-pass group delay
equalizer design is not a widespread 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.
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.
The "prototype" low-pass filter is a "real" filter which has real
coefficients, and except for any single real pole or zero in the case of
odd order, all other poles and zeros will occur in complex conjugate pairs,
and it 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 pole zero constellation about
zero in [say] the positive direction about z = zero in the z-plane to place
the lower transition band in the appropriate location around zero frequency.
You will then have a pole zero constellation where the poles and zeros do
not 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 was set up in the low pass prototype.
Such IIR "Hilbert Transformers" are very efficient [economical in
multiply-adds and memory requirements] when compared to the FIR Hilbert
Transformer techniques.
--
Peter
Consultant
Indialantic By-the-Sea, FL.
Reply by Jerry Avins●July 29, 20032003-07-29
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 by Vladimir Vassilevsky●July 29, 20032003-07-29
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