OpenCores
URL https://opencores.org/ocsvn/hilbert_transformer/hilbert_transformer/trunk

Subversion Repositories hilbert_transformer

[/] [hilbert_transformer/] [trunk/] [doc/] [hilbert_transformer.tex] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 plutonium
\documentclass[a4paper,BCOR7mm,12pt,pointlessnumbers,bibtotoc]{scrartcl}
2
% Define German as thesis language
3
%\usepackage{german}
4
 
5
\usepackage{latexsym,alltt,
6
            textcomp, float}
7
 
8
% Codierung
9
\usepackage[latin1]{inputenc}
10
 
11
% zusaetzliche Symbole
12
\usepackage{textcomp, latexsym}
13
 
14
% Grafiken
15
\usepackage{graphicx, psfrag}
16
 
17
% "H"-Option für Gleitumgebungen
18
\usepackage{float}
19
 
20
% Gleitumgebungen nach Referenz platzieren
21
\usepackage{flafter}
22
 
23
% lange Tabellen
24
\usepackage{longtable}
25
 
26
%Mathematik
27
\usepackage{amsmath}
28
\usepackage{amsfonts}
29
\usepackage{amssymb}
30
 
31
% pdftex
32
\usepackage{hyperref}
33
 
34
% neue deutsche Rechtschreibung
35
%\usepackage{ngerman}
36
 
37
% zusätzliche Spaltendefinitionen für Tabellen
38
\usepackage{array}
39
 
40
% Darstellung mehrerer Bilder als ein Objekt
41
\usepackage{subfigure}
42
 
43
% Drehen von Grafiken (turn,rotate)
44
\usepackage{rotating}
45
 
46
% Weitere Symbole
47
%\usepackage{psnfss}
48
\usepackage{pifont}
49
 
50
%Farben
51
\usepackage{color}
52
 
53
% Absatzabstand etwas groesser
54
\addtolength{\parskip}{1.1ex}
55
 
56
% Blocksatz erzwingen
57
\sloppy
58
 
59
% Abstand zweier Listenelemente kleiner
60
\setlength{\itemsep}{0ex plus0.2ex}
61
 
62
% "Rahmenabstand" für gerahmte Gleichungen
63
\setlength{\fboxsep}{10pt}
64
 
65
\begin{document}
66
%\maketitle
67
\begin{center}
68
\Large Hilbert Transformator IP Cores\\[0.4cm]
69
\large Martin Kumm \\[0.5cm]
70
\large \today \\[0.5cm]
71
\end{center}
72
 
73
\section{Introduction}
74
 
75
The Hilbert Transform is an important component in communication systems, e.g. for single sideband modulation/demodulation, amplitude and phase detection, etc. It can be formulated as filtering operation which makes it possible to approximate the Hilbert Transform with a digital filter. Due to the non-causal and infinite impulse response of that filter, it is not that easy to get a good approximation with low hardware resource usage. Therefore, different filters with different complexities have been implemented. The detailed discussion can be found in \cite{ks08}.
76
 
77
\section{Mathematical Background}
78
 
79
The Hilbert Transform can be defined as filter in the discrete frequency domain as
80
\begin{equation}
81
H_{H}(e^{j \Omega}) =
82
 \left\{
83
    \begin{tabular}{ll}
84
    $-j$ & \mbox{for }\mbox{$0 < \Omega < \pi$}\\
85
    $j$ & \mbox{for }\mbox{$-\pi < \Omega < 0$}\\
86
    $0$ & \mbox{for }\mbox{$\Omega = 0$} \ \ ,\\
87
    \end{tabular}
88
 \right.
89
\end{equation}
90
with $\Omega=2\pi f/fs$, $f_s$ is the sampling frequency in Hz and $j=\sqrt{-1}$.
91
The magnitude is unity for all frequencies not equal to zero and the phase is $-90^\circ$ for all positive, and $+90^\circ$ for all negative frequencies. The inverse Fourier transform leads to the impulse response
92
\begin{equation}
93
h_{H}(n) = \frac{1-\cos(\pi n)}{\pi n} =
94
 \left\{
95
    \begin{tabular}{ll}
96
    $2/(\pi n)$ & \mbox{for }\mbox{odd}\mbox{ $n$}\\
97
    $0$ & \mbox{for }\mbox{even}\mbox{ $n$}.\\
98
    \end{tabular}
99
 \right.
100
 \label{equ:disc_hilbert_imp_resp}
101
\end{equation}
102
A so-called analytic signal can be generated from a real valued signal by extending the signal with its own Hilbert transform as the imaginary part:
103
\begin{equation}
104
        \underline{x}(n)=x(n)+j\mathcal{H}\{x(n)\}
105
        \label{equ:del_analytic_signal}
106
\end{equation}
107
This signal has the property that no spectral components exist for the lower half of the z-plane ($-\pi<\Omega<0$). The operation in (\ref{equ:del_analytic_signal}) can be formulated as a filter operation with
108
\begin{equation}
109
        \underline{H}_{A}(e^{j \Omega})=1+j H_{H}(e^{j \Omega}) \ \ .
110
        \label{equ:def_analytic_filter}
111
\end{equation}
112
The realizations are filters that generates an analytic signal from a real valued signal, therefore these filters are called analytic filter ($\underline{H}_{Ax}$). The implementations described in the next section realize analythic filters.
113
 
114
\section{Implementation}
115
 
116
The first analytic filter is implemented as FIR filter
117
\begin{equation}
118
        \widetilde{H}_{H1}(z) = z^{-N/2} \sum_{k=-N/2}^{N/2} b_k z^{-k}
119
\end{equation}
120
Matlab (\verb|firls()|) was used to calculate the impulse response for an Hilbert filter with an order of $N=10$ to be $b_1=$163/256, $b_3=$54/256, $b_5=$32/256 and zero for all even coefficients. An additional delay is needed to form the analytic filter
121
\begin{equation}
122
        \underline{H}_{A1}(z) = z^{-5} + j \widetilde{H}_{H1}(z) \ \ .
123
\end{equation}
124
Due to the zero coefficients and the asymmetric impulse response, only three real multipliers are needed. The structure of the implementation is shown in Figure~\ref{fig:h_a_1_filter_impl}. Two pipeline registers are implemented after the multiplication and the addition in the last stage. Therefore, the delay of the real part must be set to $z^{-7}$. Detailed plots of the filter are shown in Figure~\ref{fig:h_a1}.
125
 
126
\begin{figure}[H]
127
  \centering
128
    \includegraphics{images/h_a_1_filter_impl}
129
  \caption{Structure of $\widetilde{H}_{H1}(z)$}
130
  \label{fig:h_a_1_filter_impl}
131
\end{figure}
132
 
133
The following analytic filters are based on frequency sampling filters (see \cite{ks08} for further details), so only the transfer functions are given here:
134
\begin{equation}
135
  \underline{H}_{A2}(z) = F_{z4}(z)C_{+90}(z)
136
\end{equation}
137
with
138
\begin{equation}
139
  F_{z4}(z) = 1-z^{-4}
140
\end{equation}
141
and
142
\begin{equation}
143
  C_{+90}(z) = \frac{z^{-1}}{1 - j z^{-1}} \ \ .
144
\end{equation}
145
Detailed plots of the filter are shown in Figure~\ref{fig:h_a2}.
146
 
147
The third one is defined as
148
\begin{equation}
149
  \underline{H}_{A3}(z) = \left(\underline{H}_{A2}(z)C_{0/180}(z)C^{-1}_{-30/-150}(z)\right)^{2}
150
\end{equation}
151
with
152
\begin{equation}
153
  C_{0/180}(z) = \frac{z^{-2}}{1 - z^{-2}}
154
\end{equation}
155
and
156
\begin{equation}
157
  C^{-1}_{-30/-150}(z) = (1 + j z^{-1} - z^{-2}) \ \ .
158
\end{equation}
159
Detailed plots of the filter are shown in Figure~\ref{fig:h_a3}. A block diagram of the implementation is shown in Figure~\ref{fig:block_impl_h_a3}.
160
 
161
\begin{figure}[H]
162
  \includegraphics[width=15 cm]{images/block_impl_h_a3}
163
  \caption{Block diagram of  $\underline{H}_{A3}(z)$}
164
  \label{fig:block_impl_h_a3}
165
\end{figure}
166
 
167
The last filter is an extension of $\underline{H}_{A3}(z)$ with an IIR component, so the total impulse response becomes IIR ($\underline{H}_{A1-A3}(z)$ have a finite impulste response even though IIR components are included). The transfer function is
168
\begin{equation}
169
  \underline{H}_{A4}(z) = \underline{H}_{A3}(z) C_{P}^2(z)
170
\label{equ:fsf_ha4_cp}
171
\end{equation}
172
with
173
\begin{equation}
174
  C_{P}(z) = \frac{z^{-2}}{1-\frac{1}{2} z^{-2}} \ \ .
175
\label{equ:cp}
176
\end{equation}
177
 
178
Detailed plots of the filter are shown in Figure~\ref{fig:h_a4}. A block diagram of the implementation is shown in Figure~\ref{fig:block_impl_h_a4}.
179
 
180
\begin{figure}[H]
181
        \includegraphics[width=15 cm]{images/block_impl_h_a4}
182
        \caption{Block diagram of  $\underline{H}_{A4}(z)$}
183
        \label{fig:block_impl_h_a4}
184
\end{figure}
185
 
186
\section{Comparison of the Filters}
187
 
188
The resource usage of the filters is shown in Table~\ref{tab:filter_performance}. All filters have been compiled for an Altera Cyclone I FPGA (EP1C6Q240C8).
189
 
190
\begin{table}[H]
191
  \centering
192
    \begin{tabular}{l|r|r|r|r}
193
      \hline
194
      \hline
195
        Filter         & $N_A$ & $N_R$ & $N_{LE}$ & $f_{max}$ [MHz]\\
196
        \hline
197
        $\underline{H}_{A1}(z)$ & 10    & 6  & 337 & 266\\
198
        $\underline{H}_{A2}(z)$ & 3     & 4  & 110 & 275\\
199
        $\underline{H}_{A3}(z)$ & 16    & 18 & 562 & 191\\
200
        $\underline{H}_{A4}(z)$ & 18    & 38 & 679 & 193\\
201
      \hline
202
      \hline
203
    \end{tabular}
204
  \caption{Ressource usage of the implemented filters. Symbols: $N_A$, $N_R$ and $N_{LE}$: required number of adders/subtracters (incl. output register), registers (incl. pipeline registers) and logic elements on Altera Cyclone I, $f_{max}$: maximum speed on Altera Cyclone I. The constant coefficient multipliers of $\underline{H}_{A1}(z)$ were represented by equivalent adders using the canonic signed digit system \cite{mb07} for comparison.}
205
  \label{tab:filter_performance}
206
\end{table}
207
 
208
\section{Frequency Responses of the implemented Filters}
209
 
210
\begin{figure}[H]
211
  \centering
212
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a1_total_abs}\label{fig:h_a1_total_abs}}
213
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a1_iq_abs}\label{fig:h_a1_iq_abs}}
214
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a1_phase_diff}\label{fig:h_a1_phase_diff}}
215
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a1_iq_gd}\label{fig:h_a1_iq_gd}}
216
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a1_iq_diff}\label{fig:h_a1_iq_diff}}
217
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a1_iq_ampl_mismatch}\label{fig:h_a1_iq_ampl_mismatch}}
218
  \caption{Plots of the filter $H_{A1}(e^{j \omega})$, (a) normalized magnitude response of the total filter, (b) normalized magnitude response of the real and imaginary parts (I and Q), (c) phase response, (d) group delay of the total filter and I and Q paths, (e) group delay error between I and Q, (f) amplitude error between I and Q}
219
  \label{fig:h_a1}
220
\end{figure}
221
 
222
\begin{figure}[H]
223
        \centering
224
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a2_total_abs}\label{fig:h_a2_total_abs}}
225
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a2_iq_abs}\label{fig:h_a2_iq_abs}}
226
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a2_phase_diff}\label{fig:h_a2_phase_diff}}
227
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a2_iq_gd}\label{fig:h_a2_iq_gd}}
228
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a2_iq_diff}\label{fig:h_a2_iq_diff}}
229
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a2_iq_ampl_mismatch}\label{fig:h_a2_iq_ampl_mismatch}}
230
  \caption{Plots of the filter $H_{A2}(e^{j \omega})$, (a) normalized magnitude response of the total filter, (b) normalized magnitude response of the real and imaginary parts (I and Q), (c) phase response, (d) group delay of the total filter and I and Q paths, (e) group delay error between I and Q, (f) amplitude error between I and Q}
231
  \label{fig:h_a2}
232
\end{figure}
233
 
234
\begin{figure}[H]
235
        \centering
236
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a3_total_abs}\label{fig:h_a3_total_abs}}
237
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a3_iq_abs}\label{fig:h_a3_iq_abs}}
238
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a3_phase_diff}\label{fig:h_a3_phase_diff}}
239
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a3_iq_gd}\label{fig:h_a3_iq_gd}}
240
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a3_iq_diff}\label{fig:h_a3_iq_diff}}
241
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a3_iq_ampl_mismatch}\label{fig:h_a3_iq_ampl_mismatch}}
242
  \caption{Plots of the filter $H_{A3}(e^{j \omega})$, (a) normalized magnitude response of the total filter, (b) normalized magnitude response of the real and imaginary parts (I and Q), (c) phase response, (d) group delay of the total filter and I and Q paths, (e) group delay error between I and Q, (f) amplitude error between I and Q}
243
        \label{fig:h_a3}
244
\end{figure}
245
 
246
\begin{figure}[H]
247
        \centering
248
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a4_total_abs}\label{fig:h_a4_total_abs}}
249
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a4_iq_abs}\label{fig:h_a4_iq_abs}}
250
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a4_phase_diff}\label{fig:h_a4_phase_diff}}
251
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a4_iq_gd}\label{fig:h_a4_iq_gd}}
252
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a4_iq_diff}\label{fig:h_a4_iq_diff}}
253
  \subfigure[]{\includegraphics[width=65 mm]{images/h_a4_iq_ampl_mismatch}\label{fig:h_a4_iq_ampl_mismatch}}
254
  \caption{Plots of the filter $H_{A4}(e^{j \omega})$, (a) normalized magnitude response of the total filter, (b) normalized magnitude response of the real and imaginary parts (I and Q), (c) phase response, (d) group delay of the total filter and I and Q paths, (e) group delay error between I and Q, (f) amplitude error between I and Q}
255
  \label{fig:h_a4}
256
\end{figure}
257
 
258
 
259
\bibliographystyle{alpha}
260
\bibliography{hilbert_transformer}
261
 
262
\end{document}
263
 
264
 
265
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.