Commit 76ebb20ed4ea80507784e202091bf80c0113229b
1 parent
cd5530b2a6
Exists in
master
relecture proceeding et corrections : regarder commentaires sur figure et phrase…
… que je ne comprends pas
Showing 1 changed file with 6 additions and 4 deletions Inline Diff
ifcs2018_proceeding.tex
\documentclass[a4paper,conference]{IEEEtran/IEEEtran} | 1 | 1 | \documentclass[a4paper,conference]{IEEEtran/IEEEtran} | |
\usepackage{graphicx,color,hyperref} | 2 | 2 | \usepackage{graphicx,color,hyperref} | |
\usepackage{amsfonts} | 3 | 3 | \usepackage{amsfonts} | |
\usepackage{url} | 4 | 4 | \usepackage{url} | |
\usepackage[normalem]{ulem} | 5 | 5 | \usepackage[normalem]{ulem} | |
\graphicspath{{/home/jmfriedt/gpr/170324_avalanche/}{/home/jmfriedt/gpr/1705_homemade/}} | 6 | 6 | \graphicspath{{/home/jmfriedt/gpr/170324_avalanche/}{/home/jmfriedt/gpr/1705_homemade/}} | |
% correct bad hyphenation here | 7 | 7 | % correct bad hyphenation here | |
\hyphenation{op-tical net-works semi-conduc-tor} | 8 | 8 | \hyphenation{op-tical net-works semi-conduc-tor} | |
\textheight=26cm | 9 | 9 | \textheight=26cm | |
\setlength{\footskip}{30pt} | 10 | 10 | \setlength{\footskip}{30pt} | |
\pagenumbering{gobble} | 11 | 11 | \pagenumbering{gobble} | |
\begin{document} | 12 | 12 | \begin{document} | |
\title{Filter optimization for real time digital processing of radiofrequency signals: application | 13 | 13 | \title{Filter optimization for real time digital processing of radiofrequency signals: application | |
to oscillator metrology} | 14 | 14 | to oscillator metrology} | |
15 | 15 | |||
\author{\IEEEauthorblockN{A. Hugeat\IEEEauthorrefmark{1}\IEEEauthorrefmark{2}, J. Bernard\IEEEauthorrefmark{2}, | 16 | 16 | \author{\IEEEauthorblockN{A. Hugeat\IEEEauthorrefmark{1}\IEEEauthorrefmark{2}, J. Bernard\IEEEauthorrefmark{2}, | |
G. Goavec-M\'erou\IEEEauthorrefmark{1}, | 17 | 17 | G. Goavec-M\'erou\IEEEauthorrefmark{1}, | |
P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M. Friedt\IEEEauthorrefmark{1}} | 18 | 18 | P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M. Friedt\IEEEauthorrefmark{1}} | |
\IEEEauthorblockA{\IEEEauthorrefmark{1}FEMTO-ST, Time \& Frequency department, Besan\c con, France } | 19 | 19 | \IEEEauthorblockA{\IEEEauthorrefmark{1}FEMTO-ST, Time \& Frequency department, Besan\c con, France } | |
\IEEEauthorblockA{\IEEEauthorrefmark{2}FEMTO-ST, Computer Science department DISC, Besan\c con, France \\ | 20 | 20 | \IEEEauthorblockA{\IEEEauthorrefmark{2}FEMTO-ST, Computer Science department DISC, Besan\c con, France \\ | |
Email: \{pyb2,jmfriedt\}@femto-st.fr} | 21 | 21 | Email: \{pyb2,jmfriedt\}@femto-st.fr} | |
} | 22 | 22 | } | |
\maketitle | 23 | 23 | \maketitle | |
\thispagestyle{plain} | 24 | 24 | \thispagestyle{plain} | |
\pagestyle{plain} | 25 | 25 | \pagestyle{plain} | |
26 | 26 | |||
\begin{abstract} | 27 | 27 | \begin{abstract} | |
Software Defined Radio (SDR) provides stability, flexibility and reconfigurability to | 28 | 28 | Software Defined Radio (SDR) provides stability, flexibility and reconfigurability to | |
radiofrequency signal processing. Applied to oscillator characterization in the context | 29 | 29 | radiofrequency signal processing. Applied to oscillator characterization in the context | |
of ultrastable clocks, stringent filtering requirements are defined by spurious signal or | 30 | 30 | of ultrastable clocks, stringent filtering requirements are defined by spurious signal or | |
noise rejection needs. Since real time radiofrequency processing must be performed in a | 31 | 31 | noise rejection needs. Since real time radiofrequency processing must be performed in a | |
Field Programmable Array to meet timing constraints, we investigate optimization strategies | 32 | 32 | Field Programmable Array to meet timing constraints, we investigate optimization strategies | |
to design filters meeting rejection characteristics while limiting the hardware resources | 33 | 33 | to design filters meeting rejection characteristics while limiting the hardware resources | |
required and keeping timing constraints within the targeted measurement bandwidths. | 34 | 34 | required and keeping timing constraints within the targeted measurement bandwidths. | |
\end{abstract} | 35 | 35 | \end{abstract} | |
36 | 36 | |||
\begin{IEEEkeywords} | 37 | 37 | \begin{IEEEkeywords} | |
Software Defined Radio, Mixed-Integer Linear Programming, Finite Impulse Response filter | 38 | 38 | Software Defined Radio, Mixed-Integer Linear Programming, Finite Impulse Response filter | |
\end{IEEEkeywords} | 39 | 39 | \end{IEEEkeywords} | |
40 | 40 | |||
\section{Digital signal processing of ultrastable clock signals} | 41 | 41 | \section{Digital signal processing of ultrastable clock signals} | |
42 | 42 | |||
Analog oscillator phase noise characteristics are classically performed by downconverting | 43 | 43 | Analog oscillator phase noise characteristics are classically performed by downconverting | |
the radiofrequency signal using a saturated mixer to bring the radiofrequency signal to baseband, | 44 | 44 | the radiofrequency signal using a saturated mixer to bring the radiofrequency signal to baseband, | |
followed by a Fourier analysis of the beat signal to analyze phase fluctuations close to carrier. In | 45 | 45 | followed by a Fourier analysis of the beat signal to analyze phase fluctuations close to carrier. In | |
a fully digital approach, the radiofrequency signal is digitized and numerically downconverted by | 46 | 46 | a fully digital approach, the radiofrequency signal is digitized and numerically downconverted by | |
multiplying the samples with a local numerically controlled oscillator (Fig. \ref{schema}) \cite{rsi}. | 47 | 47 | multiplying the samples with a local numerically controlled oscillator (Fig. \ref{schema}) \cite{rsi}. | |
48 | 48 | |||
\begin{figure}[h!tb] | 49 | 49 | \begin{figure}[h!tb] | |
\begin{center} | 50 | 50 | \begin{center} | |
\includegraphics[width=.8\linewidth]{images/schema} | 51 | 51 | \includegraphics[width=.8\linewidth]{images/schema} | |
\end{center} | 52 | 52 | \end{center} | |
\caption{Fully digital oscillator phase noise characterization: the Device Under Test | 53 | 53 | \caption{Fully digital oscillator phase noise characterization: the Device Under Test | |
(DUT) signal is sampled by the radiofrequency grade Analog to Digital Converter (ADC) and | 54 | 54 | (DUT) signal is sampled by the radiofrequency grade Analog to Digital Converter (ADC) and | |
downconverted by mixing with a Numerically Controlled Oscillator (NCO). Unwanted signals | 55 | 55 | downconverted by mixing with a Numerically Controlled Oscillator (NCO). Unwanted signals | |
and noise aliases are rejected by a Low Pass Filter (LPF) implemented as a cascade of Finite | 56 | 56 | and noise aliases are rejected by a Low Pass Filter (LPF) implemented as a cascade of Finite | |
Impulse Response (FIR) filters. The signal is then decimated before a Fourier analysis displays | 57 | 57 | Impulse Response (FIR) filters. The signal is then decimated before a Fourier analysis displays | |
the spectral characteristics of the phase fluctuations.} | 58 | 58 | the spectral characteristics of the phase fluctuations.} | |
\label{schema} | 59 | 59 | \label{schema} | |
\end{figure} | 60 | 60 | \end{figure} | |
61 | 61 | |||
As with the analog mixer, | 62 | 62 | As with the analog mixer, | |
the non-linear behavior of the downconverter introduces noise or spurious signal aliasing as | 63 | 63 | the non-linear behavior of the downconverter introduces noise or spurious signal aliasing as | |
well as the generation of the frequency sum signal in addition to the frequency difference. | 64 | 64 | well as the generation of the frequency sum signal in addition to the frequency difference. | |
These unwanted spectral characteristics must be rejected before decimating the data stream | 65 | 65 | These unwanted spectral characteristics must be rejected before decimating the data stream | |
for the phase noise spectral characterization. The characteristics introduced between the downconverter | 66 | 66 | for the phase noise spectral characterization. The characteristics introduced between the downconverter | |
and the decimation processing blocks are core characteristics of an oscillator characterization | 67 | 67 | and the decimation processing blocks are core characteristics of an oscillator characterization | |
system, and must reject out-of-band signals below the targeted phase noise -- typically in the | 68 | 68 | system, and must reject out-of-band signals below the targeted phase noise -- typically in the | |
sub -170~dBc/Hz for ultrastable oscillator we aim at characterizing. The filter blocks will | 69 | 69 | sub -170~dBc/Hz for ultrastable oscillator we aim at characterizing. The filter blocks will | |
use most resources of the Field Programmable Gate Array (FPGA) used to process the radiofrequency | 70 | 70 | use most resources of the Field Programmable Gate Array (FPGA) used to process the radiofrequency | |
datastream: optimizing the performance of the filter while reducing the needed resources is | 71 | 71 | datastream: optimizing the performance of the filter while reducing the needed resources is | |
hence tackled in a systematic approach using optimization techniques. Most significantly, we | 72 | 72 | hence tackled in a systematic approach using optimization techniques. Most significantly, we | |
tackle the issue by attempting to cascade multiple Finite Impulse Response (FIR) filters with | 73 | 73 | tackle the issue by attempting to cascade multiple Finite Impulse Response (FIR) filters with | |
tunable number of coefficients and tunable number of bits representing the coefficients and the | 74 | 74 | tunable number of coefficients and tunable number of bits representing the coefficients and the | |
data being processed. | 75 | 75 | data being processed. | |
76 | 76 | |||
\section{Finite impulse response filter} | 77 | 77 | \section{Finite impulse response filter} | |
78 | 78 | |||
We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined | 79 | 79 | We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined | |
by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the outputs $y_k$ | 80 | 80 | by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the outputs $y_k$ | |
$$y_n=\sum_{k=0}^N b_k x_{n-k}$$ | 81 | 81 | $$y_n=\sum_{k=0}^N b_k x_{n-k}$$ | |
82 | 82 | |||
As opposed to an implementation on a general purpose processor in which word size is defined by the | 83 | 83 | As opposed to an implementation on a general purpose processor in which word size is defined by the | |
processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since | 84 | 84 | processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since | |
not only the coefficient values and number of taps must be defined, but also the number of bits defining | 85 | 85 | not only the coefficient values and number of taps must be defined, but also the number of bits defining | |
the coefficients and the sample size. | 86 | 86 | the coefficients and the sample size. | |
87 | 87 | |||
Ideally the coefficient are expressed as floating point value but this notation isn't a efficient way to | 88 | 88 | The coefficients are classically expressed as floating point values. However, this binary | |
work with FPGA. Instead we prefer convert this floating point values into integer values. However this | 89 | 89 | number representation is not efficient for fast arithmetic computation by an FPGA. Instead, | |
conversion result in some precision loss. Actually as show figure \ref{float_vs_int}, we see that we aren't | 90 | 90 | we select to quantify these floating point values into integer values. This quantization | |
91 | will result in some precision loss. As illustrated in Fig. \ref{float_vs_int}, we see that we aren't | |||
need too coefficients or too sample size. If we have lot of coefficients but a small sample size, | 91 | 92 | need too coefficients or too sample size. If we have lot of coefficients but a small sample size, | |
the first and last are equal to zero. But if we have too sample size for few coefficients that not improve the quality. | 92 | 93 | the first and last are equal to zero. But if we have too sample size for few coefficients that not improve the quality. | |
93 | 94 | |||
95 | % JMF je ne comprends pas la derniere phrase ci-dessus ni la figure ci dessous | |||
\begin{figure}[h!tb] | 94 | 96 | \begin{figure}[h!tb] | |
\includegraphics[width=\linewidth]{images/float-vs-integer.pdf} | 95 | 97 | \includegraphics[width=\linewidth]{images/float-vs-integer.pdf} | |
\caption{Illistration of coefficients choice impact} | 96 | 98 | \caption{Impact of the quantization resolution of the coefficients} | |
\label{float_vs_int} | 97 | 99 | \label{float_vs_int} | |
\end{figure} | 98 | 100 | \end{figure} | |
99 | 101 | |||
\section{Filter optimization} | 100 | 102 | \section{Filter optimization} | |
101 | 103 | |||
A basic approach for implementing the FIR filter is to compute the transfer function of | 102 | 104 | A basic approach for implementing the FIR filter is to compute the transfer function of | |
a monolithic filter: this single filter defines all coefficients with the same resolution | 103 | 105 | a monolithic filter: this single filter defines all coefficients with the same resolution | |
(number of bits) and processes data represented with their own resolution. Meeting the | 104 | 106 | (number of bits) and processes data represented with their own resolution. Meeting the | |
filter shape requires a large number of coefficients, limited by resources of the FPGA since | 105 | 107 | filter shape requires a large number of coefficients, limited by resources of the FPGA since | |
this filter must process data stream at the radiofrequency sampling rate after the mixer. | 106 | 108 | this filter must process data stream at the radiofrequency sampling rate after the mixer. | |
107 | 109 | |||
An optimization problem \cite{leung2004handbook} aims at improving one or many | 108 | 110 | An optimization problem \cite{leung2004handbook} aims at improving one or many | |
performance criteria within a constrained resource environment. Amongst the tools | 109 | 111 | performance criteria within a constrained resource environment. Amongst the tools | |
developed to meet this aim, Mixed-Integer Linear Programming (MILP) provides the framework to | 110 | 112 | developed to meet this aim, Mixed-Integer Linear Programming (MILP) provides the framework to | |
provide a formal definition of the stated problem and search for an optimal use of available | 111 | 113 | provide a formal definition of the stated problem and search for an optimal use of available | |
resources \cite{yu2007design, kodek1980design}. | 112 | 114 | resources \cite{yu2007design, kodek1980design}. | |
113 | 115 | |||
The degrees of freedom when addressing the problem of replacing the single monolithic | 114 | 116 | The degrees of freedom when addressing the problem of replacing the single monolithic | |
FIR with a cascade of optimized filters are the number of coefficients $N_i$ of each filter $i$, | 115 | 117 | FIR with a cascade of optimized filters are the number of coefficients $N_i$ of each filter $i$, | |
the number of bits $c_i$ representing the coefficients and the number of bits $d_i$ representing | 116 | 118 | the number of bits $c_i$ representing the coefficients and the number of bits $d_i$ representing | |
the data fed to the filter. Because each FIR in the chain is fed the output of the previous stage, | 117 | 119 | the data fed to the filter. Because each FIR in the chain is fed the output of the previous stage, | |
the optimization of the complete processing chain within a constrained resource environment is not | 118 | 120 | the optimization of the complete processing chain within a constrained resource environment is not | |
trivial. The resource occupation of a FIR filter is considered as $c_i+d_i+\log_2(N_i)$ which is | 119 | 121 | trivial. The resource occupation of a FIR filter is considered as $c_i+d_i+\log_2(N_i)$ which is | |
the number of bits needed in a worst case condition to represent the output of the FIR. | 120 | 122 | the number of bits needed in a worst case condition to represent the output of the FIR. | |
121 | 123 | |||
122 | 124 | |||
\begin{figure}[h!tb] | 123 | 125 | \begin{figure}[h!tb] | |
\includegraphics[width=\linewidth]{images/noise-rejection.pdf} | 124 | 126 | \includegraphics[width=\linewidth]{images/noise-rejection.pdf} | |
\caption{Rejection as a function of number of coefficients and number of bits} | 125 | 127 | \caption{Rejection as a function of number of coefficients and number of bits} | |
\label{noise-rejection} | 126 | 128 | \label{noise-rejection} | |
\end{figure} | 127 | 129 | \end{figure} | |
128 | 130 | |||
The objective function maximizes the noise rejection while keeping resource occupation below | 129 | 131 | The objective function maximizes the noise rejection while keeping resource occupation below | |
a user-defined threshold. The MILP solver is allowed to choose the number of successive | 130 | 132 | a user-defined threshold. The MILP solver is allowed to choose the number of successive | |
filters, within an upper bound. The last problem is to model the noise rejection. Since filter | 131 | 133 | filters, within an upper bound. The last problem is to model the noise rejection. Since filter | |
noise rejection capability is not modeled with linear equation, a look-up-table is generated | 132 | 134 | noise rejection capability is not modeled with linear equation, a look-up-table is generated | |
for multiple filter configurations in which the $c_i$, $d_i$ and $N_i$ parameters are varied: for each | 133 | 135 | for multiple filter configurations in which the $c_i$, $d_i$ and $N_i$ parameters are varied: for each | |
one of these conditions, the low-pass filter rejection defined as the mean power between | 134 | 136 | one of these conditions, the low-pass filter rejection defined as the mean power between | |
half the Nyquist frequency and the Nyquist frequency is stored as computed by the frequency response | 135 | 137 | half the Nyquist frequency and the Nyquist frequency is stored as computed by the frequency response | |
of the digital filter (Fig. \ref{noise-rejection}). | 136 | 138 | of the digital filter (Fig. \ref{noise-rejection}). | |
137 | 139 | |||
Linear program formalism for solving the problem is well documented: an objective function is | 138 | 140 | Linear program formalism for solving the problem is well documented: an objective function is | |
defined which is linearly dependent on the parameters to be optimized. Constraints are expressed | 139 | 141 | defined which is linearly dependent on the parameters to be optimized. Constraints are expressed | |
as linear equation and solved using one of the available solvers, in our case GLPK\cite{glpk}. | 140 | 142 | as linear equation and solved using one of the available solvers, in our case GLPK\cite{glpk}. | |
141 | 143 | |||
The MILP solver provides a solution to the problem by selecting a series of small FIR with | 142 | 144 | The MILP solver provides a solution to the problem by selecting a series of small FIR with | |
increasing number of bits representing data and coefficients as well as an increasing number | 143 | 145 | increasing number of bits representing data and coefficients as well as an increasing number | |
of coefficients, instead of a single monolithic filter. Fig. \ref{compare-fir} exhibits the | 144 | 146 | of coefficients, instead of a single monolithic filter. Fig. \ref{compare-fir} exhibits the | |
performance comparison between one solution and a monolithic FIR when selecting a cutoff | 145 | 147 | performance comparison between one solution and a monolithic FIR when selecting a cutoff | |
frequency of half the Nyquist frequency: a series of 5 FIR and a series of 10 FIR with the | 146 | 148 | frequency of half the Nyquist frequency: a series of 5 FIR and a series of 10 FIR with the | |
same space usage are provided as selected by the MILP solver. The FIR cascade provides improved | 147 | 149 | same space usage are provided as selected by the MILP solver. The FIR cascade provides improved | |
rejection than the monolithic FIR at the expense of a lower cutoff frequency which remains to | 148 | 150 | rejection than the monolithic FIR at the expense of a lower cutoff frequency which remains to | |
be tuned or compensated for. | 149 | 151 | be tuned or compensated for. | |
150 | 152 | |||
\begin{figure}[h!tb] | 151 | 153 | \begin{figure}[h!tb] | |
% \includegraphics[width=\linewidth]{images/compare-fir.pdf} | 152 | 154 | % \includegraphics[width=\linewidth]{images/compare-fir.pdf} | |
\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-200dB.pdf} | 153 | 155 | \includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-200dB.pdf} | |
\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR | 154 | 156 | \caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR | |
with a cutoff frequency set at half the Nyquist frequency.} | 155 | 157 | with a cutoff frequency set at half the Nyquist frequency.} | |
\label{compare-fir} | 156 | 158 | \label{compare-fir} | |
\end{figure} | 157 | 159 | \end{figure} | |
158 | 160 | |||
The resource occupation when synthesizing such FIR on a Xilinx FPGA is summarized as Tab. \ref{t1}. | 159 | 161 | The resource occupation when synthesizing such FIR on a Xilinx FPGA is summarized as Tab. \ref{t1}. | |
160 | 162 | |||
\begin{table}[h!tb] | 161 | 163 | \begin{table}[h!tb] | |
\caption{Resource occupation on a Xilinx Zynq-7000 series FPGA when synthesizing the FIR cascade | 162 | 164 | \caption{Resource occupation on a Xilinx Zynq-7000 series FPGA when synthesizing the FIR cascade | |
identified as optimal by the MILP solver within a finite resource criterion. The last line refers | 163 | 165 | identified as optimal by the MILP solver within a finite resource criterion. The last line refers | |
to available resources on a Zynq-7010 as found on the Redpitaya board. The rejection is the mean | 164 | 166 | to available resources on a Zynq-7010 as found on the Redpitaya board. The rejection is the mean | |
value from 0.6 to 1 Nyquist frequency.} | 165 | 167 | value from 0.6 to 1 Nyquist frequency.} | |
\begin{center} | 166 | 168 | \begin{center} | |
\begin{tabular}{|c|cccc|}\hline | 167 | 169 | \begin{tabular}{|c|cccc|}\hline | |
FIR & BlockRAM & LookUpTables & DSP & rejection (dB)\\\hline\hline | 168 | 170 | FIR & BlockRAM & LookUpTables & DSP & rejection (dB)\\\hline\hline | |
1 (monolithic) & 1 & 4064 & 40 & -72 \\ | 169 | 171 | 1 (monolithic) & 1 & 4064 & 40 & -72 \\ | |
5 & 5 & 12332 & 0 & -217 \\ | 170 | 172 | 5 & 5 & 12332 & 0 & -217 \\ | |
10 & 10 & 12717 & 0 & -251 \\\hline\hline | 171 | 173 | 10 & 10 & 12717 & 0 & -251 \\\hline\hline | |
Zynq 7010 & 60 & 17600 & 80 & \\\hline | 172 | 174 | Zynq 7010 & 60 & 17600 & 80 & \\\hline | |
\end{tabular} | 173 | 175 | \end{tabular} | |
\end{center} | 174 | 176 | \end{center} | |
%\vspace{-0.7cm} | 175 | 177 | %\vspace{-0.7cm} | |
\label{t1} | 176 | 178 | \label{t1} | |
\end{table} | 177 | 179 | \end{table} | |
178 | 180 | |||
\section{Filter coefficient selection} | 179 | 181 | \section{Filter coefficient selection} | |
180 | 182 | |||
The coefficients of a single monolithic filter are computed as the impulse response | 181 | 183 | The coefficients of a single monolithic filter are computed as the impulse response | |
of the filter transfer function, and practically approximated by a multitude of methods | 182 | 184 | of the filter transfer function, and practically approximated by a multitude of methods | |
including least square optimization (Matlab's {\tt firls} function), Hamming or Kaiser windowing | 183 | 185 | including least square optimization (Matlab's {\tt firls} function), Hamming or Kaiser windowing | |
(Matlab's {\tt fir1} function). Cascading filters opens a new optimization opportunity by | 184 | 186 | (Matlab's {\tt fir1} function). Cascading filters opens a new optimization opportunity by | |
selecting various coefficient sets depending on the number of coefficients. Fig. \ref{2} | 185 | 187 | selecting various coefficient sets depending on the number of coefficients. Fig. \ref{2} | |
illustrates that for a number of coefficients ranging from 8 to 47, {\tt fir1} provides a better | 186 | 188 | illustrates that for a number of coefficients ranging from 8 to 47, {\tt fir1} provides a better | |
rejection than {\tt firls}: since the linear solver increases the number of coefficients along | 187 | 189 | rejection than {\tt firls}: since the linear solver increases the number of coefficients along | |
the processing chain, the type of selected filter also changes depending on the number of coefficients | 188 | 190 | the processing chain, the type of selected filter also changes depending on the number of coefficients | |
and evolves along the processing chain. | 189 | 191 | and evolves along the processing chain. | |
190 | 192 | |||
\begin{figure}[h!tb] | 191 | 193 | \begin{figure}[h!tb] | |
\includegraphics[width=\linewidth]{images/fir1-vs-firls} | 192 | 194 | \includegraphics[width=\linewidth]{images/fir1-vs-firls} |