Most of you familiar with signal processing would’ve heard the term Hilbert Transform. We’ll call it HT from here on. There are other transform in DSP like Laplace, Fourier, Z etc which are more popular & used across multiple domains. Basically transform, as the word suggests is a mathematical process which converts one form of signal to another. Some are used only for purely analytic purposes (Fourier) while some are used for real-time signal processing like Hilbert.
HT ‘transforms’ the phase of the signal. It performs a phase shift of -90°. Yes you read it right, it is negative 90° phase shift. Generally, it is mentioned as a 90° phase shift without explicitly mentioning positive or negative shift. The reason is due to the concept of positive & negative frequencies. HT would phase shift positive frequency component by -90° while a negative frequency would be shifted by +90°.
Where could we use HT?
I’m sure there are multiple uses but the one I’m aware of is Quadrature processing. The term quadrature processing refers to dealing with In-phase, Quadrature-phase signals, i.e I,Q signals. I,Q signals are used for modulation & demodulation techniques. Quadrature modulation/demodulation offers many advantages over conventional approaches which can be discussed in another post.
For example, SSB demodulation by phasing method uses Hilbert transform to phase shift the incoming modulated signal to -90°.
FPGA Implementation (Xilinx)
Hilbert transformers can be easily implemented in Xilinx FPGA’s using FIR compiler IP. HT coefficients can be generated using Matlab FDA Tool. It is important to note that the Hilbert coefficient structure should contain alternate zeroes for FIR compiler to infer the filter as a Hilbert Structure.
Snapshot shows Hilbert Transformer using FDA Tool.
Generated Coefficients for Hilbert transformer
As you can see, every alternate coefficient is zero valued, which the FIR compiler infers as a Hilbert Filter structure.
FIR IP Core generates I, Q output (dout_i, dout_q in IP symbol) if the Hilbert structure is inferred properly. The output is -90° phase shifted. HT of cosine is sine and HT of sine is -cosine
HT is predominantly used in quadrature Signal Processing.
There is limited & scattered knowledge available in the programmable logic space online. I recently stumbled upon Programmable Planet, a website dedicated to Programmable Devices.
Programmable planet is undoubtedly emerging as the best online resource for “all things programmable” as they call it. It has FPGA, VHDL concepts explained by industry experts - now that’s something new. These experts are very much active in the website & available for comments/clarifications.
If you haven’t gone through Programmable Planet, I suggest you do it right away.
Here’s the permalink —> http://bit.ly/MTNMAR
The concept of utilizing FPGAs for DSP operations is fairly well understood, established, and recognized within the signal processing industry.
FPGA’s have DSP slices to implement signal processing functions. The DSP operation most commonly used is Multiply-Accumulate or MAC operation. A MAC block is also used as a building block for more complex DSP applications like filtering.
FPGA DSP slice essentially implements a MAC operation.
Xilinx calls this slice “XtremeDSP DSP48”. (probably because it handle a maximum of 48-bit addition)
Image illustrates DSP48E used in Virtex-5 devices & its features (Courtesy of Xilinx Inc)
There are 3 variants of DSP slices used in Xilinx FPGA’s- DSP48A, DSP48 & DSP48E.
(Image Courtesy of Xilinx Inc)
Xilinx has a good number of DSP elements in FPGA devices with SX series.
For more info on Comparison of conventional DSP processing vis-a-vis FPGA-based DSP watch this space.
Click on the “Title” for a ‘free’ FPGA course.
Yes there is awesome free stuff available on the internet. Kudos to the creators of the page.
We often use basic arithmetic operations for synthesis - adders, multipliers & sometimes the division operation.
Some useful tips while using arithmetic operators:
- It is always recommended to use advanced options for synthesis in XST like “Use Mult”, “Use DSP” while using arithmetic operations.
- Check for customizable IP Cores. Most arithmetic operations are covered in FPGA vendor specific IP’s.
- However if you wish to use +,*,/ operators you will need to include libraries which define these operators.
Table shows VHDL Libraries needed to be added for specific arithmetic operations