Commit 56f7c40c963b2da3756f4f2947a7ad632ff8ccd5
1 parent
7c78647f19
Exists in
master
Ajout de corrections.
Showing 2 changed files with 71 additions and 22 deletions Inline Diff
ifcs2018_journal.tex
% fusionner max rejection a surface donnee v.s minimiser surface a rejection donnee | 1 | 1 | % fusionner max rejection a surface donnee v.s minimiser surface a rejection donnee | |
% demontrer comment la quantification rejette du bruit vers les hautes frequences => 6 dB de | 2 | 2 | % demontrer comment la quantification rejette du bruit vers les hautes frequences => 6 dB de | |
% rejection par bit et perte si moins de bits que rejection/6 | 3 | 3 | % rejection par bit et perte si moins de bits que rejection/6 | |
% developper programme lineaire en incluant le decalage de bits | 4 | 4 | % developper programme lineaire en incluant le decalage de bits | |
% insister que avant on etait synthetisable mais pas implementable, alors que maintenant on | 5 | 5 | % insister que avant on etait synthetisable mais pas implementable, alors que maintenant on | |
% implemente et on demontre que ca tourne | 6 | 6 | % implemente et on demontre que ca tourne | |
% gwen : pourquoi le FIR est desormais implementable et ne l'etait pas meme sur zedboard->new FIR ? | 7 | 7 | % gwen : pourquoi le FIR est desormais implementable et ne l'etait pas meme sur zedboard->new FIR ? | |
% Gwen : peut-on faire un vrai banc de bruit de phase avec ce FIR, ie ajouter ADC, NCO et mixer | 8 | 8 | % Gwen : peut-on faire un vrai banc de bruit de phase avec ce FIR, ie ajouter ADC, NCO et mixer | |
% (zedboard ou redpit) | 9 | 9 | % (zedboard ou redpit) | |
10 | 10 | |||
% label schema : verifier que "argumenter de la cascade de FIR" est fait | 11 | 11 | % label schema : verifier que "argumenter de la cascade de FIR" est fait | |
12 | 12 | |||
\documentclass[a4paper,journal]{IEEEtran/IEEEtran} | 13 | 13 | \documentclass[a4paper,journal]{IEEEtran/IEEEtran} | |
\usepackage{graphicx,color,hyperref} | 14 | 14 | \usepackage{graphicx,color,hyperref} | |
\usepackage{amsfonts} | 15 | 15 | \usepackage{amsfonts} | |
\usepackage{amsthm} | 16 | 16 | \usepackage{amsthm} | |
\usepackage{amssymb} | 17 | 17 | \usepackage{amssymb} | |
\usepackage{amsmath} | 18 | 18 | \usepackage{amsmath} | |
\usepackage{algorithm2e} | 19 | 19 | \usepackage{algorithm2e} | |
\usepackage{url,balance} | 20 | 20 | \usepackage{url,balance} | |
\usepackage[normalem]{ulem} | 21 | 21 | \usepackage[normalem]{ulem} | |
\usepackage{tikz} | 22 | 22 | \usepackage{tikz} | |
\usetikzlibrary{positioning,fit} | 23 | 23 | \usetikzlibrary{positioning,fit} | |
\usepackage{multirow} | 24 | 24 | \usepackage{multirow} | |
\usepackage{scalefnt} | 25 | 25 | \usepackage{scalefnt} | |
\usepackage{caption} | 26 | 26 | \usepackage{caption} | |
\usepackage{subcaption} | 27 | 27 | \usepackage{subcaption} | |
28 | 28 | |||
% correct bad hyphenation here | 29 | 29 | % correct bad hyphenation here | |
\hyphenation{op-tical net-works semi-conduc-tor} | 30 | 30 | \hyphenation{op-tical net-works semi-conduc-tor} | |
\textheight=26cm | 31 | 31 | \textheight=26cm | |
\setlength{\footskip}{30pt} | 32 | 32 | \setlength{\footskip}{30pt} | |
\pagenumbering{gobble} | 33 | 33 | \pagenumbering{gobble} | |
\begin{document} | 34 | 34 | \begin{document} | |
\title{Filter optimization for real time digital processing of radiofrequency signals: application | 35 | 35 | \title{Filter optimization for real time digital processing of radiofrequency signals: application | |
to oscillator metrology} | 36 | 36 | to oscillator metrology} | |
37 | 37 | |||
\author{\IEEEauthorblockN{A. Hugeat\IEEEauthorrefmark{1}\IEEEauthorrefmark{2}, J. Bernard\IEEEauthorrefmark{2}, | 38 | 38 | \author{\IEEEauthorblockN{A. Hugeat\IEEEauthorrefmark{1}\IEEEauthorrefmark{2}, J. Bernard\IEEEauthorrefmark{2}, | |
G. Goavec-M\'erou\IEEEauthorrefmark{1}, | 39 | 39 | G. Goavec-M\'erou\IEEEauthorrefmark{1}, | |
P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M. Friedt\IEEEauthorrefmark{1}}\\ | 40 | 40 | P.-Y. Bourgeois\IEEEauthorrefmark{1}, J.-M. Friedt\IEEEauthorrefmark{1}}\\ | |
\IEEEauthorblockA{\IEEEauthorrefmark{1}FEMTO-ST, Time \& Frequency department, Besan\c con, France }\\ | 41 | 41 | \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 \\ | 42 | 42 | \IEEEauthorblockA{\IEEEauthorrefmark{2}FEMTO-ST, Computer Science department DISC, Besan\c con, France \\ | |
Email: \{pyb2,jmfriedt\}@femto-st.fr} | 43 | 43 | Email: \{pyb2,jmfriedt\}@femto-st.fr} | |
} | 44 | 44 | } | |
\maketitle | 45 | 45 | \maketitle | |
\thispagestyle{plain} | 46 | 46 | \thispagestyle{plain} | |
\pagestyle{plain} | 47 | 47 | \pagestyle{plain} | |
\newtheorem{definition}{Definition} | 48 | 48 | \newtheorem{definition}{Definition} | |
49 | 49 | |||
\begin{abstract} | 50 | 50 | \begin{abstract} | |
Software Defined Radio (SDR) provides stability, flexibility and reconfigurability to | 51 | 51 | Software Defined Radio (SDR) provides stability, flexibility and reconfigurability to | |
radiofrequency signal processing. Applied to oscillator characterization in the context | 52 | 52 | radiofrequency signal processing. Applied to oscillator characterization in the context | |
of ultrastable clocks, stringent filtering requirements are defined by spurious signal or | 53 | 53 | 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 | 54 | 54 | noise rejection needs. Since real time radiofrequency processing must be performed in a | |
Field Programmable Array to meet timing constraints, we investigate optimization strategies | 55 | 55 | Field Programmable Array to meet timing constraints, we investigate optimization strategies | |
to design filters meeting rejection characteristics while limiting the hardware resources | 56 | 56 | to design filters meeting rejection characteristics while limiting the hardware resources | |
required and keeping timing constraints within the targeted measurement bandwidths. The | 57 | 57 | required and keeping timing constraints within the targeted measurement bandwidths. The | |
presented technique is applicable to scheduling any sequence of processing blocks characterized | 58 | 58 | presented technique is applicable to scheduling any sequence of processing blocks characterized | |
by a throughput, resource occupation and performance tabulated as a function of configuration | 59 | 59 | by a throughput, resource occupation and performance tabulated as a function of configuration | |
characateristics, as is the case for filters with their coefficients and resolution yielding | 60 | 60 | characateristics, as is the case for filters with their coefficients and resolution yielding | |
rejection and number of multipliers. | 61 | 61 | rejection and number of multipliers. | |
\end{abstract} | 62 | 62 | \end{abstract} | |
63 | 63 | |||
\begin{IEEEkeywords} | 64 | 64 | \begin{IEEEkeywords} | |
Software Defined Radio, Mixed-Integer Linear Programming, Finite Impulse Response filter | 65 | 65 | Software Defined Radio, Mixed-Integer Linear Programming, Finite Impulse Response filter | |
\end{IEEEkeywords} | 66 | 66 | \end{IEEEkeywords} | |
67 | 67 | |||
\section{Digital signal processing of ultrastable clock signals} | 68 | 68 | \section{Digital signal processing of ultrastable clock signals} | |
69 | 69 | |||
Analog oscillator phase noise characteristics are classically performed by downconverting | 70 | 70 | Analog oscillator phase noise characteristics are classically performed by downconverting | |
the radiofrequency signal using a saturated mixer to bring the radiofrequency signal to baseband, | 71 | 71 | 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 | 72 | 72 | 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 | 73 | 73 | 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}. | 74 | 74 | multiplying the samples with a local numerically controlled oscillator (Fig. \ref{schema}) \cite{rsi}. | |
75 | 75 | |||
\begin{figure}[h!tb] | 76 | 76 | \begin{figure}[h!tb] | |
\begin{center} | 77 | 77 | \begin{center} | |
\includegraphics[width=.8\linewidth]{images/schema} | 78 | 78 | \includegraphics[width=.8\linewidth]{images/schema} | |
\end{center} | 79 | 79 | \end{center} | |
\caption{Fully digital oscillator phase noise characterization: the Device Under Test | 80 | 80 | \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 | 81 | 81 | (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 | 82 | 82 | 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 | 83 | 83 | 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 | 84 | 84 | Impulse Response (FIR) filters. The signal is then decimated before a Fourier analysis displays | |
the spectral characteristics of the phase fluctuations.} | 85 | 85 | the spectral characteristics of the phase fluctuations.} | |
\label{schema} | 86 | 86 | \label{schema} | |
\end{figure} | 87 | 87 | \end{figure} | |
88 | 88 | |||
As with the analog mixer, | 89 | 89 | As with the analog mixer, | |
the non-linear behavior of the downconverter introduces noise or spurious signal aliasing as | 90 | 90 | 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. | 91 | 91 | 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 | 92 | 92 | These unwanted spectral characteristics must be rejected before decimating the data stream | |
for the phase noise spectral characterization \cite{andrich2018high}. The characteristics introduced between the | 93 | 93 | for the phase noise spectral characterization \cite{andrich2018high}. The characteristics introduced between the | |
downconverter | 94 | 94 | downconverter | |
and the decimation processing blocks are core characteristics of an oscillator characterization | 95 | 95 | 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 | 96 | 96 | 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 | 97 | 97 | 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 | 98 | 98 | 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 | 99 | 99 | 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 | 100 | 100 | 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 | 101 | 101 | 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 | 102 | 102 | tunable number of coefficients and tunable number of bits representing the coefficients and the | |
data being processed. | 103 | 103 | data being processed. | |
104 | 104 | |||
\section{Finite impulse response filter} | 105 | 105 | \section{Finite impulse response filter} | |
106 | 106 | |||
We select FIR filters for their unconditional stability and ease of design. A FIR filter is defined | 107 | 107 | We select FIR filters 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 | 108 | 108 | by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the | |
outputs $y_k$ | 109 | 109 | outputs $y_k$ | |
\begin{align} | 110 | 110 | \begin{align} | |
y_n=\sum_{k=0}^N b_k x_{n-k} | 111 | 111 | y_n=\sum_{k=0}^N b_k x_{n-k} | |
\label{eq:fir_equation} | 112 | 112 | \label{eq:fir_equation} | |
\end{align} | 113 | 113 | \end{align} | |
114 | 114 | |||
As opposed to an implementation on a general purpose processor in which word size is defined by the | 115 | 115 | 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 offers more degrees of freedom since | 116 | 116 | processor architecture, implementing such a filter on an FPGA offers more degrees of freedom since | |
not only the coefficient values and number of taps must be defined, but also the number of bits | 117 | 117 | 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. For this reason, and because we consider pipeline | 118 | 118 | defining the coefficients and the sample size. For this reason, and because we consider pipeline | |
processing (as opposed to First-In, First-Out FIFO memory batch processing) of radiofrequency | 119 | 119 | processing (as opposed to First-In, First-Out FIFO memory batch processing) of radiofrequency | |
signals, High Level Synthesis (HLS) languages \cite{kasbah2008multigrid} are not considered but | 120 | 120 | signals, High Level Synthesis (HLS) languages \cite{kasbah2008multigrid} are not considered but | |
the problem is tackled at the Very-high-speed-integrated-circuit Hardware Description Language | 121 | 121 | the problem is tackled at the Very-high-speed-integrated-circuit Hardware Description Language | |
(VHDL) level. | 122 | 122 | (VHDL) level. | |
{\color{red}Since latency is not an issue in a openloop phase noise characterization instrument, | 123 | 123 | {\color{red}Since latency is not an issue in a openloop phase noise characterization instrument, | |
the large | 124 | 124 | the large | |
numbre of taps in the FIR, as opposed to the shorter Infinite Impulse Response (IIR) filter, | 125 | 125 | numbre of taps in the FIR, as opposed to the shorter Infinite Impulse Response (IIR) filter, | |
is not considered as an issue as would be in a closed loop system.} % r2.4 | 126 | 126 | is not considered as an issue as would be in a closed loop system.} % r2.4 | |
127 | 127 | |||
The coefficients are classically expressed as floating point values. However, this binary | 128 | 128 | The coefficients are classically expressed as floating point values. However, this binary | |
number representation is not efficient for fast arithmetic computation by an FPGA. Instead, | 129 | 129 | number representation is not efficient for fast arithmetic computation by an FPGA. Instead, | |
we select to quantify these floating point values into integer values. This quantization | 130 | 130 | we select to quantify these floating point values into integer values. This quantization | |
will result in some precision loss. | 131 | 131 | will result in some precision loss. | |
132 | 132 | |||
\begin{figure}[h!tb] | 133 | 133 | \begin{figure}[h!tb] | |
\includegraphics[width=\linewidth]{images/zero_values} | 134 | 134 | \includegraphics[width=\linewidth]{images/zero_values} | |
\caption{Impact of the quantization resolution of the coefficients: the quantization is | 135 | 135 | \caption{Impact of the quantization resolution of the coefficients: the quantization is | |
set to 6~bits -- with the horizontal black lines indicating $\pm$1 least significant bit -- setting | 136 | 136 | set to 6~bits -- with the horizontal black lines indicating $\pm$1 least significant bit -- setting | |
the 30~first and 30~last coefficients out of the initial 128~band-pass | 137 | 137 | the 30~first and 30~last coefficients out of the initial 128~band-pass | |
filter coefficients to 0 (red dots).} | 138 | 138 | filter coefficients to 0 (red dots).} | |
\label{float_vs_int} | 139 | 139 | \label{float_vs_int} | |
\end{figure} | 140 | 140 | \end{figure} | |
141 | 141 | |||
The tradeoff between quantization resolution and number of coefficients when considering | 142 | 142 | The tradeoff between quantization resolution and number of coefficients when considering | |
integer operations is not trivial. As an illustration of the issue related to the | 143 | 143 | integer operations is not trivial. As an illustration of the issue related to the | |
relation between number of fiter taps and quantization, Fig. \ref{float_vs_int} exhibits | 144 | 144 | relation between number of fiter taps and quantization, Fig. \ref{float_vs_int} exhibits | |
a 128-coefficient FIR bandpass filter designed using floating point numbers (blue). Upon | 145 | 145 | a 128-coefficient FIR bandpass filter designed using floating point numbers (blue). Upon | |
quantization on 6~bit integers, 60 of the 128~coefficients in the beginning and end of the | 146 | 146 | quantization on 6~bit integers, 60 of the 128~coefficients in the beginning and end of the | |
taps become null, {\color{red}making the large number of coefficients irrelevant: processing | 147 | 147 | taps become null, {\color{red}making the large number of coefficients irrelevant: processing | |
resources % r1.1 | 148 | 148 | resources % r1.1 | |
are hence saved by shrinking the filter length.} This tradeoff aimed at minimizing resources | 149 | 149 | are hence saved by shrinking the filter length.} This tradeoff aimed at minimizing resources | |
to reach a given rejection level, or maximizing out of band rejection for a given computational | 150 | 150 | to reach a given rejection level, or maximizing out of band rejection for a given computational | |
resource, will drive the investigation on cascading filters designed with varying tap resolution | 151 | 151 | resource, will drive the investigation on cascading filters designed with varying tap resolution | |
and tap length, as will be shown in the next section. Indeed, our development strategy closely | 152 | 152 | and tap length, as will be shown in the next section. Indeed, our development strategy closely | |
follows the skeleton approach \cite{crookes1998environment, crookes2000design, benkrid2002towards} | 153 | 153 | follows the skeleton approach \cite{crookes1998environment, crookes2000design, benkrid2002towards} | |
in which basic blocks are defined and characterized before being assembled \cite{hide} | 154 | 154 | in which basic blocks are defined and characterized before being assembled \cite{hide} | |
in a complete processing chain. In our case, assembling the filter blocks is a simpler block | 155 | 155 | in a complete processing chain. In our case, assembling the filter blocks is a simpler block | |
combination process since we assume a single value to be processed and a single value to be | 156 | 156 | combination process since we assume a single value to be processed and a single value to be | |
generated at each clock cycle. The FIR filters will not be considered to decimate in the | 157 | 157 | generated at each clock cycle. The FIR filters will not be considered to decimate in the | |
current implementation: the decimation is assumed to be located after the FIR cascade at the | 158 | 158 | current implementation: the decimation is assumed to be located after the FIR cascade at the | |
moment. | 159 | 159 | moment. | |
160 | 160 | |||
\section{Methodology description} | 161 | 161 | \section{Methodology description} | |
162 | 162 | |||
Our objective is to develop a new methodology applicable to any Digital Signal Processing (DSP) | 163 | 163 | Our objective is to develop a new methodology applicable to any Digital Signal Processing (DSP) | |
chain obtained by assembling basic processing blocks, with hardware and manufacturer independence. | 164 | 164 | chain obtained by assembling basic processing blocks, with hardware and manufacturer independence. | |
Achieving such a target requires defining an abstract model to represent some basic properties | 165 | 165 | Achieving such a target requires defining an abstract model to represent some basic properties | |
of DSP blocks such as perfomance (i.e. rejection or ripples in the bandpass for filters) and | 166 | 166 | of DSP blocks such as perfomance (i.e. rejection or ripples in the bandpass for filters) and | |
resource occupation. These abstract properties, not necessarily related to the detailed hardware | 167 | 167 | resource occupation. These abstract properties, not necessarily related to the detailed hardware | |
implementation of a given platform, will feed a scheduler solver aimed at assembling the optimum | 168 | 168 | implementation of a given platform, will feed a scheduler solver aimed at assembling the optimum | |
target, whether in terms of maximizing performance for a given arbitrary resource occupation, or | 169 | 169 | target, whether in terms of maximizing performance for a given arbitrary resource occupation, or | |
minimizing resource occupation for a given perfomance. In our approach, the solution of the | 170 | 170 | minimizing resource occupation for a given perfomance. In our approach, the solution of the | |
solver is then synthesized using the dedicated tool provided by each platform manufacturer | 171 | 171 | solver is then synthesized using the dedicated tool provided by each platform manufacturer | |
to assess the validity of our abstract resource occupation indicator, and the result of running | 172 | 172 | to assess the validity of our abstract resource occupation indicator, and the result of running | |
the DSP chain on the FPGA allows for assessing the performance of the scheduler. We emphasize | 173 | 173 | the DSP chain on the FPGA allows for assessing the performance of the scheduler. We emphasize | |
that all solutions found by the solver are synthesized and executed on hardware at the end | 174 | 174 | that all solutions found by the solver are synthesized and executed on hardware at the end | |
of the analysis. | 175 | 175 | of the analysis. | |
176 | 176 | |||
In this demonstration , we focus on only two operations: filtering and shifting the number of | 177 | 177 | In this demonstration , we focus on only two operations: filtering and shifting the number of | |
bits needed to represent the data along the processing chain. | 178 | 178 | bits needed to represent the data along the processing chain. | |
We have chosen these basic operations because shifting and the filtering have already been studied | 179 | 179 | We have chosen these basic operations because shifting and the filtering have already been studied | |
in the literature \cite{lim_1996, lim_1988, young_1992, smith_1998} providing a framework for | 180 | 180 | in the literature \cite{lim_1996, lim_1988, young_1992, smith_1998} providing a framework for | |
assessing our results. Furthermore, filtering is a core step in any radiofrequency frontend | 181 | 181 | assessing our results. Furthermore, filtering is a core step in any radiofrequency frontend | |
requiring pipelined processing at full bandwidth for the earliest steps, including for | 182 | 182 | requiring pipelined processing at full bandwidth for the earliest steps, including for | |
time and frequency transfer or characterization \cite{carolina1,carolina2,rsi}. | 183 | 183 | time and frequency transfer or characterization \cite{carolina1,carolina2,rsi}. | |
184 | 184 | |||
Addressing only two operations allows for demonstrating the methodology but should not be | 185 | 185 | Addressing only two operations allows for demonstrating the methodology but should not be | |
considered as a limitation of the framework which can be extended to assembling any number | 186 | 186 | considered as a limitation of the framework which can be extended to assembling any number | |
of skeleton blocks as long as perfomance and resource occupation can be determined. {\color{red} | 187 | 187 | of skeleton blocks as long as perfomance and resource occupation can be determined. {\color{red} | |
Hence, | 188 | 188 | Hence, | |
in this paper we will apply our methodology on simple DSP chains: a white noise input signal % r1.2 | 189 | 189 | in this paper we will apply our methodology on simple DSP chains: a white noise input signal % r1.2 | |
is generated using a Pseudo-Random Number (PRN) generator or by sampling a wideband (125~MS/s) | 190 | 190 | is generated using a Pseudo-Random Number (PRN) generator or by sampling a wideband (125~MS/s) | |
14-bit Analog to Digital Converter (ADC) loaded by a 50~$\Omega$ resistor.} Once samples have been | 191 | 191 | 14-bit Analog to Digital Converter (ADC) loaded by a 50~$\Omega$ resistor.} Once samples have been | |
digitized at a rate of 125~MS/s, filtering is applied to qualify the processing block performance -- | 192 | 192 | digitized at a rate of 125~MS/s, filtering is applied to qualify the processing block performance -- | |
practically meeting the radiofrequency frontend requirement of noise and bandwidth reduction | 193 | 193 | practically meeting the radiofrequency frontend requirement of noise and bandwidth reduction | |
by filtering and decimating. Finally, bursts of filtered samples are stored for post-processing, | 194 | 194 | by filtering and decimating. Finally, bursts of filtered samples are stored for post-processing, | |
allowing to assess either filter rejection for a given resource usage, or validating the rejection | 195 | 195 | allowing to assess either filter rejection for a given resource usage, or validating the rejection | |
when implementing a solution minimizing resource occupation. | 196 | 196 | when implementing a solution minimizing resource occupation. | |
197 | 197 | |||
{\color{red} | 198 | 198 | {\color{red} | |
The first step of our approach is to model the DSP chain. Since we aim at only optimizing % r1.3 | 199 | 199 | The first step of our approach is to model the DSP chain. Since we aim at only optimizing % r1.3 | |
the filtering part of the signal processing chain, we have not included the PRN generator or the | 200 | 200 | the filtering part of the signal processing chain, we have not included the PRN generator or the | |
ADC in the model: the input data size and rate are considered fixed and defined by the hardware. | 201 | 201 | ADC in the model: the input data size and rate are considered fixed and defined by the hardware. | |
The filtering can be done in two ways, either by considering a single monolithic FIR filter | 202 | 202 | The filtering can be done in two ways, either by considering a single monolithic FIR filter | |
requiring many coefficients to reach the targeted noise rejection ratio, or by | 203 | 203 | requiring many coefficients to reach the targeted noise rejection ratio, or by | |
cascading multiple FIR filters, each with fewer coefficients than found in the monolithic filter.} | 204 | 204 | cascading multiple FIR filters, each with fewer coefficients than found in the monolithic filter.} | |
205 | 205 | |||
After each filter we leave the possibility of shifting the filtered data to consume | 206 | 206 | After each filter we leave the possibility of shifting the filtered data to consume | |
less resources. Hence in the case of cascaded filter, we define a stage as a filter | 207 | 207 | less resources. Hence in the case of cascaded filter, we define a stage as a filter | |
and a shifter (the shift could be omitted if we do not need to divide the filtered data). | 208 | 208 | and a shifter (the shift could be omitted if we do not need to divide the filtered data). | |
209 | 209 | |||
\subsection{Model of a FIR filter} | 210 | 210 | \subsection{Model of a FIR filter} | |
211 | 211 | |||
A cascade of filters is composed of $n$ FIR stages. In stage $i$ ($1 \leq i \leq n$) | 212 | 212 | A cascade of filters is composed of $n$ FIR stages. In stage $i$ ($1 \leq i \leq n$) | |
the FIR has $C_i$ coefficients and each coefficient is an integer value with $\pi^C_i$ | 213 | 213 | the FIR has $C_i$ coefficients and each coefficient is an integer value with $\pi^C_i$ | |
bits while the filtered data are shifted by $\pi^S_i$ bits. We define also $\pi^-_i$ as | 214 | 214 | bits while the filtered data are shifted by $\pi^S_i$ bits. We define also $\pi^-_i$ as | |
the size of input data and $\pi^+_i$ as the size of output data. The figure~\ref{fig:fir_stage} | 215 | 215 | the size of input data and $\pi^+_i$ as the size of output data. The figure~\ref{fig:fir_stage} | |
shows a filtering stage. | 216 | 216 | shows a filtering stage. | |
217 | 217 | |||
\begin{figure} | 218 | 218 | \begin{figure} | |
\centering | 219 | 219 | \centering | |
\begin{tikzpicture}[node distance=2cm] | 220 | 220 | \begin{tikzpicture}[node distance=2cm] | |
\node[draw,minimum size=1.3cm] (FIR) { $C_i, \pi_i^C$ } ; | 221 | 221 | \node[draw,minimum size=1.3cm] (FIR) { $C_i, \pi_i^C$ } ; | |
\node[draw,minimum size=1.3cm] (Shift) [right of=FIR, ] { $\pi_i^S$ } ; | 222 | 222 | \node[draw,minimum size=1.3cm] (Shift) [right of=FIR, ] { $\pi_i^S$ } ; | |
\node (Start) [left of=FIR] { } ; | 223 | 223 | \node (Start) [left of=FIR] { } ; | |
\node (End) [right of=Shift] { } ; | 224 | 224 | \node (End) [right of=Shift] { } ; | |
225 | 225 | |||
\node[draw,fit=(FIR) (Shift)] (Filter) { } ; | 226 | 226 | \node[draw,fit=(FIR) (Shift)] (Filter) { } ; | |
227 | 227 | |||
\draw[->] (Start) edge node [above] { $\pi_i^-$ } (FIR) ; | 228 | 228 | \draw[->] (Start) edge node [above] { $\pi_i^-$ } (FIR) ; | |
\draw[->] (FIR) -- (Shift) ; | 229 | 229 | \draw[->] (FIR) -- (Shift) ; | |
\draw[->] (Shift) edge node [above] { $\pi_i^+$ } (End) ; | 230 | 230 | \draw[->] (Shift) edge node [above] { $\pi_i^+$ } (End) ; | |
\end{tikzpicture} | 231 | 231 | \end{tikzpicture} | |
\caption{A single filter is composed of a FIR (on the left) and a Shifter (on the right)} | 232 | 232 | \caption{A single filter is composed of a FIR (on the left) and a Shifter (on the right)} | |
\label{fig:fir_stage} | 233 | 233 | \label{fig:fir_stage} | |
\end{figure} | 234 | 234 | \end{figure} | |
235 | 235 | |||
FIR $i$ has been characterized through numerical simulation as able to reject $F(C_i, \pi_i^C)$ dB. | 236 | 236 | FIR $i$ has been characterized through numerical simulation as able to reject $F(C_i, \pi_i^C)$ dB. | |
This rejection has been computed using GNU Octave software FIR coefficient design functions | 237 | 237 | This rejection has been computed using GNU Octave software FIR coefficient design functions | |
(\texttt{firls} and \texttt{fir1}). | 238 | 238 | (\texttt{firls} and \texttt{fir1}). | |
For each configuration $(C_i, \pi_i^C)$, we first create a FIR with floating point coefficients and a given $C_i$ number of coefficients. | 239 | 239 | For each configuration $(C_i, \pi_i^C)$, we first create a FIR with floating point coefficients and a given $C_i$ number of coefficients. | |
Then, the floating point coefficients are discretized into integers. In order to ensure that the coefficients are coded on $\pi_i^C$~bits effectively, | 240 | 240 | Then, the floating point coefficients are discretized into integers. In order to ensure that the coefficients are coded on $\pi_i^C$~bits effectively, | |
the coefficients are normalized by their absolute maximum before being scaled to integer coefficients. | 241 | 241 | the coefficients are normalized by their absolute maximum before being scaled to integer coefficients. | |
At least one coefficient is coded on $\pi_i^C$~bits, and in practice only $b_{C_i/2}$ is coded on $\pi_i^C$~bits while the others are coded on much fewer bits. | 242 | 242 | At least one coefficient is coded on $\pi_i^C$~bits, and in practice only $b_{C_i/2}$ is coded on $\pi_i^C$~bits while the others are coded on much fewer bits. | |
243 | 243 | |||
With these coefficients, the \texttt{freqz} function is used to estimate the magnitude of the filter | 244 | 244 | With these coefficients, the \texttt{freqz} function is used to estimate the magnitude of the filter | |
transfer function. | 245 | 245 | transfer function. | |
Comparing the performance between FIRs requires however defining a unique criterion. As shown in figure~\ref{fig:fir_mag}, | 246 | 246 | Comparing the performance between FIRs requires however defining a unique criterion. As shown in figure~\ref{fig:fir_mag}, | |
the FIR magnitude exhibits two parts: we focus here on the transitions width and the rejection rather than on the | 247 | 247 | the FIR magnitude exhibits two parts: we focus here on the transitions width and the rejection rather than on the | |
bandpass ripples as emphasized in \cite{lim_1988,lim_1996}. {\color{red}Throughout this demonstration, | 248 | 248 | bandpass ripples as emphasized in \cite{lim_1988,lim_1996}. {\color{red}Throughout this demonstration, | |
we arbitrarily set a bandpass of 40\% of the Nyquist frequency and a bandstop from 60\% | 249 | 249 | we arbitrarily set a bandpass of 40\% of the Nyquist frequency and a bandstop from 60\% | |
of the Nyquist frequency to the end of the band, as would be typically selected to prevent | 250 | 250 | of the Nyquist frequency to the end of the band, as would be typically selected to prevent | |
aliasing before decimating the dataflow by 2. The method is however generalized to any filter | 251 | 251 | aliasing before decimating the dataflow by 2. The method is however generalized to any filter | |
shape as long as it is defined from the initial modelling steps: Fig. \ref{fig:rejection_pyramid} | 252 | 252 | shape as long as it is defined from the initial modelling steps: Fig. \ref{fig:rejection_pyramid} | |
as described below is indeed unique for each filter shape.} | 253 | 253 | as described below is indeed unique for each filter shape.} | |
254 | 254 | |||
\begin{figure} | 255 | 255 | \begin{figure} | |
\begin{center} | 256 | 256 | \begin{center} | |
\scalebox{0.8}{ | 257 | 257 | \scalebox{0.8}{ | |
\centering | 258 | 258 | \centering | |
\begin{tikzpicture}[scale=0.3] | 259 | 259 | \begin{tikzpicture}[scale=0.3] | |
\draw[<->] (0,15) -- (0,0) -- (21,0) ; | 260 | 260 | \draw[<->] (0,15) -- (0,0) -- (21,0) ; | |
\draw[thick] (0,12) -- (8,12) -- (20,0) ; | 261 | 261 | \draw[thick] (0,12) -- (8,12) -- (20,0) ; | |
262 | 262 | |||
\draw (0,14) node [left] { $P$ } ; | 263 | 263 | \draw (0,14) node [left] { $P$ } ; | |
\draw (20,0) node [below] { $f$ } ; | 264 | 264 | \draw (20,0) node [below] { $f$ } ; | |
265 | 265 | |||
\draw[>=latex,<->] (0,14) -- (8,14) ; | 266 | 266 | \draw[>=latex,<->] (0,14) -- (8,14) ; | |
\draw (4,14) node [above] { passband } node [below] { $40\%$ } ; | 267 | 267 | \draw (4,14) node [above] { passband } node [below] { $40\%$ } ; | |
268 | 268 | |||
\draw[>=latex,<->] (8,14) -- (12,14) ; | 269 | 269 | \draw[>=latex,<->] (8,14) -- (12,14) ; | |
\draw (10,14) node [above] { transition } node [below] { $20\%$ } ; | 270 | 270 | \draw (10,14) node [above] { transition } node [below] { $20\%$ } ; | |
271 | 271 | |||
\draw[>=latex,<->] (12,14) -- (20,14) ; | 272 | 272 | \draw[>=latex,<->] (12,14) -- (20,14) ; | |
\draw (16,14) node [above] { stopband } node [below] { $40\%$ } ; | 273 | 273 | \draw (16,14) node [above] { stopband } node [below] { $40\%$ } ; | |
274 | 274 | |||
\draw[>=latex,<->] (16,12) -- (16,8) ; | 275 | 275 | \draw[>=latex,<->] (16,12) -- (16,8) ; | |
\draw (16,10) node [right] { rejection } ; | 276 | 276 | \draw (16,10) node [right] { rejection } ; | |
277 | 277 | |||
\draw[dashed] (8,-1) -- (8,14) ; | 278 | 278 | \draw[dashed] (8,-1) -- (8,14) ; | |
\draw[dashed] (12,-1) -- (12,14) ; | 279 | 279 | \draw[dashed] (12,-1) -- (12,14) ; | |
280 | 280 | |||
\draw[dashed] (8,12) -- (16,12) ; | 281 | 281 | \draw[dashed] (8,12) -- (16,12) ; | |
\draw[dashed] (12,8) -- (16,8) ; | 282 | 282 | \draw[dashed] (12,8) -- (16,8) ; | |
283 | 283 | |||
\end{tikzpicture} | 284 | 284 | \end{tikzpicture} | |
} | 285 | 285 | } | |
\end{center} | 286 | 286 | \end{center} | |
\caption{Shape of the filter transmitted power $P$ as a function of frequency $f$: | 287 | 287 | \caption{Shape of the filter transmitted power $P$ as a function of frequency $f$: | |
the passband is considered to occupy the initial 40\% of the Nyquist frequency range, | 288 | 288 | the passband is considered to occupy the initial 40\% of the Nyquist frequency range, | |
the stopband the last 40\%, allowing 20\% transition width.} | 289 | 289 | the stopband the last 40\%, allowing 20\% transition width.} | |
\label{fig:fir_mag} | 290 | 290 | \label{fig:fir_mag} | |
\end{figure} | 291 | 291 | \end{figure} | |
292 | 292 | |||
In the transition band, the behavior of the filter is left free, we only {\color{red}define} the passband and the stopband characteristics. | 293 | 293 | In the transition band, the behavior of the filter is left free, we only {\color{red}define} the passband and the stopband characteristics. | |
% r2.7 | 294 | 294 | % r2.7 | |
% Our initial criterion considered the mean value of the stopband rejection, as shown in figure~\ref{fig:mean_criterion}. This criterion | 295 | 295 | % Our initial criterion considered the mean value of the stopband rejection, as shown in figure~\ref{fig:mean_criterion}. This criterion | |
% yields unacceptable results since notches overestimate the rejection capability of the filter. Furthermore, the losses within | 296 | 296 | % yields unacceptable results since notches overestimate the rejection capability of the filter. Furthermore, the losses within | |
% the passband are not considered and might be excessive for excessively wide transitions widths introduced for filters with few coefficients. | 297 | 297 | % the passband are not considered and might be excessive for excessively wide transitions widths introduced for filters with few coefficients. | |
Our criterion to compute the filter rejection considers | 298 | 298 | Our criterion to compute the filter rejection considers | |
% r2.8 et r2.2 r2.3 | 299 | 299 | % r2.8 et r2.2 r2.3 | |
the maximum magnitude within the stopband, to which the {\color{red}sum of the absolute values | 300 | 300 | the maximum magnitude within the stopband, to which the {\color{red}sum of the absolute values | |
within the passband is subtracted to avoid filters with excessive ripples}. With this | 301 | 301 | within the passband is subtracted to avoid filters with excessive ripples}. With this | |
criterion, we meet the expected rejection capability of low pass filters as shown in figure~\ref{fig:custom_criterion}. | 302 | 302 | criterion, we meet the expected rejection capability of low pass filters as shown in figure~\ref{fig:custom_criterion}. | |
303 | 303 | |||
% \begin{figure} | 304 | 304 | % \begin{figure} | |
% \centering | 305 | 305 | % \centering | |
% \includegraphics[width=\linewidth]{images/colored_mean_criterion} | 306 | 306 | % \includegraphics[width=\linewidth]{images/colored_mean_criterion} | |
% \caption{Mean stopband rejection criterion comparison between monolithic filter and cascaded filters} | 307 | 307 | % \caption{Mean stopband rejection criterion comparison between monolithic filter and cascaded filters} | |
% \label{fig:mean_criterion} | 308 | 308 | % \label{fig:mean_criterion} | |
% \end{figure} | 309 | 309 | % \end{figure} | |
310 | 310 | |||
\begin{figure} | 311 | 311 | \begin{figure} | |
\centering | 312 | 312 | \centering | |
\includegraphics[width=\linewidth]{images/colored_custom_criterion} | 313 | 313 | \includegraphics[width=\linewidth]{images/colored_custom_criterion} | |
\caption{Custom criterion (maximum rejection in the stopband minus the mean of the absolute value of the passband rejection) | 314 | 314 | \caption{Custom criterion (maximum rejection in the stopband minus the mean of the absolute value of the passband rejection) | |
comparison between monolithic filter and cascaded filters} | 315 | 315 | comparison between monolithic filter and cascaded filters} | |
\label{fig:custom_criterion} | 316 | 316 | \label{fig:custom_criterion} | |
\end{figure} | 317 | 317 | \end{figure} | |
318 | 318 | |||
Thanks to the latter criterion which will be used in the remainder of this paper, we are able to automatically generate multiple FIR taps | 319 | 319 | Thanks to the latter criterion which will be used in the remainder of this paper, we are able to automatically generate multiple FIR taps | |
and estimate their rejection. Figure~\ref{fig:rejection_pyramid} exhibits the | 320 | 320 | and estimate their rejection. Figure~\ref{fig:rejection_pyramid} exhibits the | |
rejection as a function of the number of coefficients and the number of bits representing these coefficients. | 321 | 321 | rejection as a function of the number of coefficients and the number of bits representing these coefficients. | |
The curve shaped as a pyramid exhibits optimum configurations sets at the vertex where both edges meet. | 322 | 322 | The curve shaped as a pyramid exhibits optimum configurations sets at the vertex where both edges meet. | |
Indeed for a given number of coefficients, increasing the number of bits over the edge will not improve the rejection. | 323 | 323 | Indeed for a given number of coefficients, increasing the number of bits over the edge will not improve the rejection. | |
Conversely when setting the a given number of bits, increasing the number of coefficients will not improve | 324 | 324 | Conversely when setting the a given number of bits, increasing the number of coefficients will not improve | |
the rejection. Hence the best coefficient set are on the vertex of the pyramid. | 325 | 325 | the rejection. Hence the best coefficient set are on the vertex of the pyramid. | |
326 | 326 | |||
\begin{figure} | 327 | 327 | \begin{figure} | |
\centering | 328 | 328 | \centering | |
\includegraphics[width=\linewidth]{images/rejection_pyramid} | 329 | 329 | \includegraphics[width=\linewidth]{images/rejection_pyramid} | |
\caption{Rejection as a function of number of coefficients and number of bits} | 330 | 330 | \caption{Rejection as a function of number of coefficients and number of bits} | |
\label{fig:rejection_pyramid} | 331 | 331 | \label{fig:rejection_pyramid} | |
\end{figure} | 332 | 332 | \end{figure} | |
333 | 333 | |||
Although we have an efficient criterion to estimate the rejection of one set of coefficients (taps), | 334 | 334 | Although we have an efficient criterion to estimate the rejection of one set of coefficients (taps), | |
we have a problem when we cascade filters and estimate the criterion as a sum two or more individual criteria. | 335 | 335 | we have a problem when we cascade filters and estimate the criterion as a sum two or more individual criteria. | |
If the FIR filter coefficients are the same between the stages, we have: | 336 | 336 | If the FIR filter coefficients are the same between the stages, we have: | |
$$F_{total} = F_1 + F_2$$ | 337 | 337 | $$F_{total} = F_1 + F_2$$ | |
But selecting two different sets of coefficient will yield a more complex situation in which | 338 | 338 | But selecting two different sets of coefficient will yield a more complex situation in which | |
the previous relation is no longer valid as illustrated on figure~\ref{fig:sum_rejection}. The red and blue curves | 339 | 339 | the previous relation is no longer valid as illustrated on figure~\ref{fig:sum_rejection}. The red and blue curves | |
are two different filters with maximums and notches not located at the same frequency offsets. | 340 | 340 | are two different filters with maximums and notches not located at the same frequency offsets. | |
Hence when summing the transfer functions, the resulting rejection shown as the dashed yellow line is improved | 341 | 341 | Hence when summing the transfer functions, the resulting rejection shown as the dashed yellow line is improved | |
with respect to a basic sum of the rejection criteria shown as a the dotted yellow line. | 342 | 342 | with respect to a basic sum of the rejection criteria shown as a the dotted yellow line. | |
% r2.9 | 343 | 343 | % r2.9 | |
Thus, estimating the rejection of filter cascades is more complex than taking the sum of all the rejection | 344 | 344 | Thus, estimating the rejection of filter cascades is more complex than taking the sum of all the rejection | |
criteria of each filter. However since the this sum underestimates the rejection capability of the cascade, | 345 | 345 | criteria of each filter. However since the this sum underestimates the rejection capability of the cascade, | |
% r2.10 | 346 | 346 | % r2.10 | |
this upper bound is considered as a conservative and acceptable criterion for deciding on the suitability | 347 | 347 | this upper bound is considered as a conservative and acceptable criterion for deciding on the suitability | |
of the filter cascade to meet design criteria. | 348 | 348 | of the filter cascade to meet design criteria. | |
349 | 349 | |||
\begin{figure} | 350 | 350 | \begin{figure} | |
\centering | 351 | 351 | \centering | |
\includegraphics[width=\linewidth]{images/cascaded_criterion} | 352 | 352 | \includegraphics[width=\linewidth]{images/cascaded_criterion} | |
\caption{Rejection of two cascaded filters} | 353 | 353 | \caption{Rejection of two cascaded filters} | |
\label{fig:sum_rejection} | 354 | 354 | \label{fig:sum_rejection} | |
\end{figure} | 355 | 355 | \end{figure} | |
356 | 356 | |||
% r2.6 | 357 | 357 | % r2.6 | |
Finally in our case, we consider that the input signal are fully known. So the | 358 | 358 | Finally in our case, we consider that the input signal are fully known. So the | |
resolution of the data stream are fixed and still the same for all experiments | 359 | 359 | resolution of the data stream are fixed and still the same for all experiments | |
in this paper. | 360 | 360 | in this paper. | |
361 | 361 | |||
Based on this analysis, we address the estimate of resource consumption (called | 362 | 362 | Based on this analysis, we address the estimate of resource consumption (called | |
% r2.11 | 363 | 363 | % r2.11 | |
silicon area -- in the case of FPGAs this means processing cells) as a function of | 364 | 364 | silicon area -- in the case of FPGAs this means processing cells) as a function of | |
filter characteristics. As a reminder, we do not aim at matching actual hardware | 365 | 365 | filter characteristics. As a reminder, we do not aim at matching actual hardware | |
configuration but consider an arbitrary silicon area occupied by each processing function, | 366 | 366 | configuration but consider an arbitrary silicon area occupied by each processing function, | |
and will assess after synthesis the adequation of this arbitrary unit with actual | 367 | 367 | and will assess after synthesis the adequation of this arbitrary unit with actual | |
hardware resources provided by FPGA manufacturers. The sum of individual processing | 368 | 368 | hardware resources provided by FPGA manufacturers. The sum of individual processing | |
unit areas is constrained by a total silicon area representative of FPGA global resources. | 369 | 369 | unit areas is constrained by a total silicon area representative of FPGA global resources. | |
Formally, variable $a_i$ is the area taken by filter~$i$ | 370 | 370 | Formally, variable $a_i$ is the area taken by filter~$i$ | |
(in arbitrary unit). Variable $r_i$ is the rejection of filter~$i$ (in dB). | 371 | 371 | (in arbitrary unit). Variable $r_i$ is the rejection of filter~$i$ (in dB). | |
Constant $\mathcal{A}$ is the total available area. We model our problem as follows: | 372 | 372 | Constant $\mathcal{A}$ is the total available area. We model our problem as follows: | |
373 | 373 | |||
\begin{align} | 374 | 374 | \begin{align} | |
\text{Maximize } & \sum_{i=1}^n r_i \notag \\ | 375 | 375 | \text{Maximize } & \sum_{i=1}^n r_i \notag \\ | |
\sum_{i=1}^n a_i & \leq \mathcal{A} & \label{eq:area} \\ | 376 | 376 | \sum_{i=1}^n a_i & \leq \mathcal{A} & \label{eq:area} \\ | |
a_i & = C_i \times (\pi_i^C + \pi_i^-), & \forall i \in [1, n] \label{eq:areadef} \\ | 377 | 377 | a_i & = C_i \times (\pi_i^C + \pi_i^-), & \forall i \in [1, n] \label{eq:areadef} \\ | |
r_i & = F(C_i, \pi_i^C), & \forall i \in [1, n] \label{eq:rejectiondef} \\ | 378 | 378 | r_i & = F(C_i, \pi_i^C), & \forall i \in [1, n] \label{eq:rejectiondef} \\ | |
\pi_i^+ & = \pi_i^- + \pi_i^C - \pi_i^S, & \forall i \in [1, n] \label{eq:bits} \\ | 379 | 379 | \pi_i^+ & = \pi_i^- + \pi_i^C - \pi_i^S, & \forall i \in [1, n] \label{eq:bits} \\ | |
\pi_{i - 1}^+ & = \pi_i^-, & \forall i \in [2, n] \label{eq:inout} \\ | 380 | 380 | \pi_{i - 1}^+ & = \pi_i^-, & \forall i \in [2, n] \label{eq:inout} \\ | |
\pi_i^+ & \geq 1 + \sum_{k=1}^{i} \left(1 + \frac{r_j}{6}\right), & \forall i \in [1, n] \label{eq:maxshift} \\ | 381 | 381 | \pi_i^+ & \geq 1 + \sum_{k=1}^{i} \left(1 + \frac{r_j}{6}\right), & \forall i \in [1, n] \label{eq:maxshift} \\ | |
\pi_1^- &= \Pi^I \label{eq:init} | 382 | 382 | \pi_1^- &= \Pi^I \label{eq:init} | |
\end{align} | 383 | 383 | \end{align} | |
384 | 384 | |||
Equation~\ref{eq:area} states that the total area taken by the filters must be | 385 | 385 | Equation~\ref{eq:area} states that the total area taken by the filters must be | |
less than the available area. Equation~\ref{eq:areadef} gives the definition of | 386 | 386 | less than the available area. Equation~\ref{eq:areadef} gives the definition of | |
the area used by a filter, considered as the area of the FIR since the Shifter is | 387 | 387 | the area used by a filter, considered as the area of the FIR since the Shifter is | |
assumed not to require significant resources. We consider that the FIR needs $C_i$ registers of size | 388 | 388 | assumed not to require significant resources. We consider that the FIR needs $C_i$ registers of size | |
$\pi_i^C + \pi_i^-$~bits to store the results of the multiplications of the | 389 | 389 | $\pi_i^C + \pi_i^-$~bits to store the results of the multiplications of the | |
input data with the coefficients. Equation~\ref{eq:rejectiondef} gives the | 390 | 390 | input data with the coefficients. Equation~\ref{eq:rejectiondef} gives the | |
definition of the rejection of the filter thanks to the tabulated function~$F$ that we defined | 391 | 391 | definition of the rejection of the filter thanks to the tabulated function~$F$ that we defined | |
previously. The Shifter does not introduce negative rejection as we will explain later, | 392 | 392 | previously. The Shifter does not introduce negative rejection as we will explain later, | |
so the rejection only comes from the FIR. Equation~\ref{eq:bits} states the | 393 | 393 | so the rejection only comes from the FIR. Equation~\ref{eq:bits} states the | |
relation between $\pi_i^+$ and $\pi_i^-$. The multiplications in the FIR add | 394 | 394 | relation between $\pi_i^+$ and $\pi_i^-$. The multiplications in the FIR add | |
$\pi_i^C$ bits as most coefficients are close to zero, and the Shifter removes | 395 | 395 | $\pi_i^C$ bits as most coefficients are close to zero, and the Shifter removes | |
$\pi_i^S$ bits. Equation~\ref{eq:inout} states that the output number of bits of | 396 | 396 | $\pi_i^S$ bits. Equation~\ref{eq:inout} states that the output number of bits of | |
a filter is the same as the input number of bits of the next filter. | 397 | 397 | a filter is the same as the input number of bits of the next filter. | |
Equation~\ref{eq:maxshift} ensures that the Shifter does not introduce negative | 398 | 398 | Equation~\ref{eq:maxshift} ensures that the Shifter does not introduce negative | |
rejection. Indeed, the results of the FIR can be right shifted without compromising | 399 | 399 | rejection. Indeed, the results of the FIR can be right shifted without compromising | |
the quality of the rejection until a threshold. Each bit of the output data | 400 | 400 | the quality of the rejection until a threshold. Each bit of the output data | |
increases the maximum rejection level by 6~dB. We add one to take the sign bit | 401 | 401 | increases the maximum rejection level by 6~dB. We add one to take the sign bit | |
into account. If equation~\ref{eq:maxshift} was not present, the Shifter could | 402 | 402 | into account. If equation~\ref{eq:maxshift} was not present, the Shifter could | |
shift too much and introduce some noise in the output data. Each supplementary | 403 | 403 | shift too much and introduce some noise in the output data. Each supplementary | |
shift bit would cause an additional 6~dB rejection rise. A totally equivalent equation is: | 404 | 404 | shift bit would cause an additional 6~dB rejection rise. A totally equivalent equation is: | |
$\pi_i^S \leq \pi_i^- + \pi_i^C - 1 - \sum_{k=1}^{i} \left(1 + \frac{r_j}{6}\right)$. | 405 | 405 | $\pi_i^S \leq \pi_i^- + \pi_i^C - 1 - \sum_{k=1}^{i} \left(1 + \frac{r_j}{6}\right)$. | |
Finally, equation~\ref{eq:init} gives the number of bits of the global input. | 406 | 406 | Finally, equation~\ref{eq:init} gives the number of bits of the global input. | |
407 | 407 | |||
{\color{red} | 408 | 408 | {\color{red} | |
This model is non-linear since we multiply some variable with another variable | 409 | 409 | This model is non-linear since we multiply some variable with another variable | |
and it is even non-quadratic, as $F$ does not have a known | 410 | 410 | and it is even non-quadratic, as $F$ does not have a known | |
linear or quadratic expression. To linearize this problem, we introduce $p$ FIR configurations. | 411 | 411 | linear or quadratic expression. To linearize this problem, we introduce $p$ FIR configurations. | |
This variable must be defined by the user, it represent the number of different | 412 | 412 | This variable must be defined by the user, it represent the number of different | |
set of coefficients generated (for memory, we use \texttt{firls} and \texttt{fir1} | 413 | 413 | set of coefficients generated (for memory, we use \texttt{firls} and \texttt{fir1} | |
functions from GNU Octave). So $C_{ij}$ and $\pi_{ij}^C$ become constant and | 414 | 414 | functions from GNU Octave). So $C_{ij}$ and $\pi_{ij}^C$ become constant and | |
we defined $1 \leq j \leq p$ and the function $F$ can be estimate for each configurations | 415 | 415 | we defined $1 \leq j \leq p$ and the function $F$ can be estimate for each configurations | |
thanks our rejection criterion. We also defined binary | 416 | 416 | thanks our rejection criterion. We also defined binary | |
variable $\delta_{ij}$ that has value 1 if stage~$i$ is in configuration~$j$ | 417 | 417 | variable $\delta_{ij}$ that has value 1 if stage~$i$ is in configuration~$j$ | |
and 0 otherwise. The new equations are as follows: | 418 | 418 | and 0 otherwise. The new equations are as follows: | |
} | 419 | 419 | } | |
420 | 420 | |||
\begin{align} | 421 | 421 | \begin{align} | |
a_i & = \sum_{j=1}^p \delta_{ij} \times C_{ij} \times (\pi_{ij}^C + \pi_i^-), & \forall i \in [1, n] \label{eq:areadef2} \\ | 422 | 422 | a_i & = \sum_{j=1}^p \delta_{ij} \times C_{ij} \times (\pi_{ij}^C + \pi_i^-), & \forall i \in [1, n] \label{eq:areadef2} \\ | |
r_i & = \sum_{j=1}^p \delta_{ij} \times F(C_{ij}, \pi_{ij}^C), & \forall i \in [1, n] \label{eq:rejectiondef2} \\ | 423 | 423 | r_i & = \sum_{j=1}^p \delta_{ij} \times F(C_{ij}, \pi_{ij}^C), & \forall i \in [1, n] \label{eq:rejectiondef2} \\ | |
\pi_i^+ & = \pi_i^- + \left(\sum_{j=1}^p \delta_{ij} \pi_{ij}^C\right) - \pi_i^S, & \forall i \in [1, n] \label{eq:bits2} \\ | 424 | 424 | \pi_i^+ & = \pi_i^- + \left(\sum_{j=1}^p \delta_{ij} \pi_{ij}^C\right) - \pi_i^S, & \forall i \in [1, n] \label{eq:bits2} \\ | |
\sum_{j=1}^p \delta_{ij} & \leq 1, & \forall i \in [1, n] \label{eq:config} | 425 | 425 | \sum_{j=1}^p \delta_{ij} & \leq 1, & \forall i \in [1, n] \label{eq:config} | |
\end{align} | 426 | 426 | \end{align} | |
427 | 427 | |||
Equations \ref{eq:areadef2}, \ref{eq:rejectiondef2} and \ref{eq:bits2} replace | 428 | 428 | Equations \ref{eq:areadef2}, \ref{eq:rejectiondef2} and \ref{eq:bits2} replace | |
respectively equations \ref{eq:areadef}, \ref{eq:rejectiondef} and \ref{eq:bits}. | 429 | 429 | respectively equations \ref{eq:areadef}, \ref{eq:rejectiondef} and \ref{eq:bits}. | |
Equation~\ref{eq:config} states that for each stage, a single configuration is chosen at most. | 430 | 430 | Equation~\ref{eq:config} states that for each stage, a single configuration is chosen at most. | |
431 | 431 | |||
{\color{red} | 432 | 432 | {\color{red} | |
However the problem still quadratic since in the constraint~\ref{eq:areadef2} we multiply | 433 | 433 | However the problem still quadratic since in the constraint~\ref{eq:areadef2} we multiply | |
$\delta_{ij}$ and $\pi_i^-$. But like $\delta_{ij}$ is a binary variable we can | 434 | 434 | $\delta_{ij}$ and $\pi_i^-$. But like $\delta_{ij}$ is a binary variable we can | |
linearise this multiplication if we can bound $\pi_i^-$. As $\pi_i^-$ is the data size | 435 | 435 | linearise this multiplication if we can bound $\pi_i^-$. As $\pi_i^-$ is the data size | |
we define $0 < \pi_i^- \leq 128$ which is the maximal data size that we can process. | 436 | 436 | we define $0 < \pi_i^- \leq 128$ which is the maximal data size that we can process. | |
} | 437 | 437 | } | |
Moreover the Gurobi | 438 | 438 | Moreover the Gurobi | |
(\url{www.gurobi.com}) optimization software is used to solve this quadratic | 439 | 439 | (\url{www.gurobi.com}) optimization software is used to solve this quadratic | |
model, and since Gurobi is able to linearize, the model is left as is. This model | 440 | 440 | model, and since Gurobi is able to linearize, the model is left as is. This model | |
has $O(np)$ variables and $O(n)$ constraints. | 441 | 441 | has $O(np)$ variables and $O(n)$ constraints. | |
442 | 442 | |||
% This model is non-linear and even non-quadratic, as $F$ does not have a known | 443 | 443 | % This model is non-linear and even non-quadratic, as $F$ does not have a known | |
% linear or quadratic expression. We introduce $p$ FIR configurations | 444 | 444 | % linear or quadratic expression. We introduce $p$ FIR configurations | |
% $(C_{ij}, \pi_{ij}^C), 1 \leq j \leq p$ that are constants. | 445 | 445 | % $(C_{ij}, \pi_{ij}^C), 1 \leq j \leq p$ that are constants. | |
% % r2.12 | 446 | 446 | % % r2.12 | |
% This variable must be defined by the user, it represent the number of different | 447 | 447 | % This variable must be defined by the user, it represent the number of different | |
% set of coefficients generated (for memory, we use \texttt{firls} and \texttt{fir1} | 448 | 448 | % set of coefficients generated (for memory, we use \texttt{firls} and \texttt{fir1} | |
% functions from GNU Octave). | 449 | 449 | % functions from GNU Octave). | |
% We define binary | 450 | 450 | % We define binary | |
% variable $\delta_{ij}$ that has value 1 if stage~$i$ is in configuration~$j$ | 451 | 451 | % variable $\delta_{ij}$ that has value 1 if stage~$i$ is in configuration~$j$ | |
% and 0 otherwise. The new equations are as follows: | 452 | 452 | % and 0 otherwise. The new equations are as follows: | |
% | 453 | 453 | % | |
% \begin{align} | 454 | 454 | % \begin{align} | |
% a_i & = \sum_{j=1}^p \delta_{ij} \times C_{ij} \times (\pi_{ij}^C + \pi_i^-), & \forall i \in [1, n] \label{eq:areadef2} \\ | 455 | 455 | % a_i & = \sum_{j=1}^p \delta_{ij} \times C_{ij} \times (\pi_{ij}^C + \pi_i^-), & \forall i \in [1, n] \label{eq:areadef2} \\ | |
% r_i & = \sum_{j=1}^p \delta_{ij} \times F(C_{ij}, \pi_{ij}^C), & \forall i \in [1, n] \label{eq:rejectiondef2} \\ | 456 | 456 | % r_i & = \sum_{j=1}^p \delta_{ij} \times F(C_{ij}, \pi_{ij}^C), & \forall i \in [1, n] \label{eq:rejectiondef2} \\ | |
% \pi_i^+ & = \pi_i^- + \left(\sum_{j=1}^p \delta_{ij} \pi_{ij}^C\right) - \pi_i^S, & \forall i \in [1, n] \label{eq:bits2} \\ | 457 | 457 | % \pi_i^+ & = \pi_i^- + \left(\sum_{j=1}^p \delta_{ij} \pi_{ij}^C\right) - \pi_i^S, & \forall i \in [1, n] \label{eq:bits2} \\ | |
% \sum_{j=1}^p \delta_{ij} & \leq 1, & \forall i \in [1, n] \label{eq:config} | 458 | 458 | % \sum_{j=1}^p \delta_{ij} & \leq 1, & \forall i \in [1, n] \label{eq:config} | |
% \end{align} | 459 | 459 | % \end{align} | |
% | 460 | 460 | % | |
% Equations \ref{eq:areadef2}, \ref{eq:rejectiondef2} and \ref{eq:bits2} replace | 461 | 461 | % Equations \ref{eq:areadef2}, \ref{eq:rejectiondef2} and \ref{eq:bits2} replace | |
% respectively equations \ref{eq:areadef}, \ref{eq:rejectiondef} and \ref{eq:bits}. | 462 | 462 | % respectively equations \ref{eq:areadef}, \ref{eq:rejectiondef} and \ref{eq:bits}. | |
% Equation~\ref{eq:config} states that for each stage, a single configuration is chosen at most. | 463 | 463 | % Equation~\ref{eq:config} states that for each stage, a single configuration is chosen at most. | |
% | 464 | 464 | % | |
% % r2.13 | 465 | 465 | % % r2.13 | |
% This modified model is quadratic since we multiply two variables in the | 466 | 466 | % This modified model is quadratic since we multiply two variables in the | |
% equation~\ref{eq:areadef2} ($\delta_{ij}$ by $\pi_{ij}^-$) but it can be linearised if necessary. | 467 | 467 | % equation~\ref{eq:areadef2} ($\delta_{ij}$ by $\pi_{ij}^-$) but it can be linearised if necessary. | |
% The Gurobi | 468 | 468 | % The Gurobi | |
% (\url{www.gurobi.com}) optimization software is used to solve this quadratic | 469 | 469 | % (\url{www.gurobi.com}) optimization software is used to solve this quadratic | |
% model, and since Gurobi is able to linearize, the model is left as is. This model | 470 | 470 | % model, and since Gurobi is able to linearize, the model is left as is. This model | |
% has $O(np)$ variables and $O(n)$ constraints. | 471 | 471 | % has $O(np)$ variables and $O(n)$ constraints. | |
472 | 472 | |||
Two problems will be addressed using the workflow described in the next section: on the one | 473 | 473 | Two problems will be addressed using the workflow described in the next section: on the one | |
hand maximizing the rejection capability of a set of cascaded filters occupying a fixed arbitrary | 474 | 474 | hand maximizing the rejection capability of a set of cascaded filters occupying a fixed arbitrary | |
silcon area (section~\ref{sec:fixed_area}) and on the second hand the dual problem of minimizing the silicon area | 475 | 475 | silcon area (section~\ref{sec:fixed_area}) and on the second hand the dual problem of minimizing the silicon area | |
for a fixed rejection criterion (section~\ref{sec:fixed_rej}). In the latter case, the | 476 | 476 | for a fixed rejection criterion (section~\ref{sec:fixed_rej}). In the latter case, the | |
objective function is replaced with: | 477 | 477 | objective function is replaced with: | |
\begin{align} | 478 | 478 | \begin{align} | |
\text{Minimize } & \sum_{i=1}^n a_i \notag | 479 | 479 | \text{Minimize } & \sum_{i=1}^n a_i \notag | |
\end{align} | 480 | 480 | \end{align} | |
We adapt our constraints of quadratic program to replace equation \ref{eq:area} | 481 | 481 | We adapt our constraints of quadratic program to replace equation \ref{eq:area} | |
with equation \ref{eq:rejection_min} where $\mathcal{R}$ is the minimal | 482 | 482 | with equation \ref{eq:rejection_min} where $\mathcal{R}$ is the minimal | |
rejection required. | 483 | 483 | rejection required. | |
484 | 484 | |||
\begin{align} | 485 | 485 | \begin{align} | |
\sum_{i=1}^n r_i & \geq \mathcal{R} & \label{eq:rejection_min} | 486 | 486 | \sum_{i=1}^n r_i & \geq \mathcal{R} & \label{eq:rejection_min} | |
\end{align} | 487 | 487 | \end{align} | |
488 | 488 | |||
\section{Design workflow} | 489 | 489 | \section{Design workflow} | |
\label{sec:workflow} | 490 | 490 | \label{sec:workflow} | |
491 | 491 | |||
In this section, we describe the workflow to compute all the results presented in sections~\ref{sec:fixed_area} | 492 | 492 | In this section, we describe the workflow to compute all the results presented in sections~\ref{sec:fixed_area} | |
and \ref{sec:fixed_rej}. Figure~\ref{fig:workflow} shows the global workflow and the different steps involved | 493 | 493 | and \ref{sec:fixed_rej}. Figure~\ref{fig:workflow} shows the global workflow and the different steps involved | |
in the computation of the results. | 494 | 494 | in the computation of the results. | |
495 | 495 | |||
\begin{figure} | 496 | 496 | \begin{figure} | |
\centering | 497 | 497 | \centering | |
\begin{tikzpicture}[node distance=0.75cm and 2cm] | 498 | 498 | \begin{tikzpicture}[node distance=0.75cm and 2cm] | |
\node[draw,minimum size=1cm] (Solver) { Filter Solver } ; | 499 | 499 | \node[draw,minimum size=1cm] (Solver) { Filter Solver } ; | |
\node (Start) [left= 3cm of Solver] { } ; | 500 | 500 | \node (Start) [left= 3cm of Solver] { } ; | |
\node[draw,minimum size=1cm] (TCL) [right= of Solver] { TCL Script } ; | 501 | 501 | \node[draw,minimum size=1cm] (TCL) [right= of Solver] { TCL Script } ; | |
\node (Input) [above= of TCL] { } ; | 502 | 502 | \node (Input) [above= of TCL] { } ; | |
\node[draw,minimum size=1cm] (Deploy) [below= of Solver] { Deploy Script } ; | 503 | 503 | \node[draw,minimum size=1cm] (Deploy) [below= of Solver] { Deploy Script } ; | |
\node[draw,minimum size=1cm] (Bitstream) [below= of TCL] { Bitstream } ; | 504 | 504 | \node[draw,minimum size=1cm] (Bitstream) [below= of TCL] { Bitstream } ; | |
\node[draw,minimum size=1cm,rounded corners] (Board) [below right= of Deploy] { Board } ; | 505 | 505 | \node[draw,minimum size=1cm,rounded corners] (Board) [below right= of Deploy] { Board } ; | |
\node[draw,minimum size=1cm] (Postproc) [below= of Deploy] { Post-Processing } ; | 506 | 506 | \node[draw,minimum size=1cm] (Postproc) [below= of Deploy] { Post-Processing } ; | |
\node (Results) [left= of Postproc] { } ; | 507 | 507 | \node (Results) [left= of Postproc] { } ; | |
508 | 508 | |||
\draw[->] (Start) edge node [above] { $\mathcal{A}, n, \Pi^I$ } node [below] { $(C_{ij}, \pi_{ij}^C), F$ } (Solver) ; | 509 | 509 | \draw[->] (Start) edge node [above] { $\mathcal{A}, n, \Pi^I$ } node [below] { $(C_{ij}, \pi_{ij}^C), F$ } (Solver) ; | |
\draw[->] (Input) edge node [left] { ADC or PRN } (TCL) ; | 510 | 510 | \draw[->] (Input) edge node [left] { ADC or PRN } (TCL) ; | |
\draw[->] (Solver) edge node [below] { (1a) } (TCL) ; | 511 | 511 | \draw[->] (Solver) edge node [below] { (1a) } (TCL) ; | |
\draw[->] (Solver) edge node [right] { (1b) } (Deploy) ; | 512 | 512 | \draw[->] (Solver) edge node [right] { (1b) } (Deploy) ; | |
\draw[->] (TCL) edge node [left] { (2) } (Bitstream) ; | 513 | 513 | \draw[->] (TCL) edge node [left] { (2) } (Bitstream) ; | |
\draw[->,dashed] (Bitstream) -- (Deploy) ; | 514 | 514 | \draw[->,dashed] (Bitstream) -- (Deploy) ; | |
\draw[->] (Deploy) to[out=-30,in=120] node [above] { (3) } (Board) ; | 515 | 515 | \draw[->] (Deploy) to[out=-30,in=120] node [above] { (3) } (Board) ; | |
\draw[->] (Board) to[out=150,in=-60] node [below] { (4) } (Deploy) ; | 516 | 516 | \draw[->] (Board) to[out=150,in=-60] node [below] { (4) } (Deploy) ; | |
\draw[->] (Deploy) edge node [left] { (5) } (Postproc) ; | 517 | 517 | \draw[->] (Deploy) edge node [left] { (5) } (Postproc) ; | |
\draw[->] (Postproc) -- (Results) ; | 518 | 518 | \draw[->] (Postproc) -- (Results) ; | |
\end{tikzpicture} | 519 | 519 | \end{tikzpicture} | |
\caption{Design workflow from the input parameters to the results} | 520 | 520 | \caption{Design workflow from the input parameters to the results} | |
\label{fig:workflow} | 521 | 521 | \label{fig:workflow} | |
\end{figure} | 522 | 522 | \end{figure} | |
523 | 523 | |||
The filter solver is a C++ program that takes as input the maximum area | 524 | 524 | The filter solver is a C++ program that takes as input the maximum area | |
$\mathcal{A}$, the number of stages $n$, the size of the input signal $\Pi^I$, | 525 | 525 | $\mathcal{A}$, the number of stages $n$, the size of the input signal $\Pi^I$, | |
the FIR configurations $(C_{ij}, \pi_{ij}^C)$ and the function $F$. It creates | 526 | 526 | the FIR configurations $(C_{ij}, \pi_{ij}^C)$ and the function $F$. It creates | |
the quadratic programs and uses the Gurobi solver to estimate the optimal results. | 527 | 527 | the quadratic programs and uses the Gurobi solver to estimate the optimal results. | |
Then it produces two scripts: a TCL script ((1a) on figure~\ref{fig:workflow}) | 528 | 528 | Then it produces two scripts: a TCL script ((1a) on figure~\ref{fig:workflow}) | |
and a deploy script ((1b) on figure~\ref{fig:workflow}). | 529 | 529 | and a deploy script ((1b) on figure~\ref{fig:workflow}). | |
530 | 530 | |||
The TCL script describes the whole digital processing chain from the beginning | 531 | 531 | The TCL script describes the whole digital processing chain from the beginning | |
(the raw signal data) to the end (the filtered data) in a language compatible | 532 | 532 | (the raw signal data) to the end (the filtered data) in a language compatible | |
with proprietary synthesis software, namely Vivado for Xilinx and Quartus for | 533 | 533 | with proprietary synthesis software, namely Vivado for Xilinx and Quartus for | |
Intel/Altera. The raw input data generated from a 20-bit Pseudo Random Number (PRN) | 534 | 534 | Intel/Altera. The raw input data generated from a 20-bit Pseudo Random Number (PRN) | |
generator inside the FPGA and $\Pi^I$ is fixed at 16~bits. | 535 | 535 | generator inside the FPGA and $\Pi^I$ is fixed at 16~bits. | |
Then the script builds each stage of the chain with a generic FIR task that | 536 | 536 | Then the script builds each stage of the chain with a generic FIR task that | |
comes from a skeleton library. The generic FIR is highly configurable | 537 | 537 | comes from a skeleton library. The generic FIR is highly configurable | |
with the number of coefficients and the size of the coefficients. The coefficients | 538 | 538 | with the number of coefficients and the size of the coefficients. The coefficients | |
themselves are not stored in the script. | 539 | 539 | themselves are not stored in the script. | |
As the signal is processed in real-time, the output signal is stored as | 540 | 540 | As the signal is processed in real-time, the output signal is stored as | |
consecutive bursts of data for post-processing, mainly assessing the consistency of the | 541 | 541 | consecutive bursts of data for post-processing, mainly assessing the consistency of the | |
implemented FIR cascade transfer function with the design criteria and the expected | 542 | 542 | implemented FIR cascade transfer function with the design criteria and the expected | |
transfer function. | 543 | 543 | transfer function. | |
544 | 544 | |||
The TCL script is used by Vivado to produce the FPGA bitstream ((2) on figure~\ref{fig:workflow}). | 545 | 545 | The TCL script is used by Vivado to produce the FPGA bitstream ((2) on figure~\ref{fig:workflow}). | |
We use the 2018.2 version of Xilinx Vivado and we execute the synthesized | 546 | 546 | We use the 2018.2 version of Xilinx Vivado and we execute the synthesized | |
bitstream on a Redpitaya board fitted with a Xilinx Zynq-7010 series | 547 | 547 | bitstream on a Redpitaya board fitted with a Xilinx Zynq-7010 series | |
FPGA (xc7z010clg400-1) and two LTC2145 14-bit 125~MS/s ADC, loaded with 50~$\Omega$ resistors to | 548 | 548 | FPGA (xc7z010clg400-1) and two LTC2145 14-bit 125~MS/s ADC, loaded with 50~$\Omega$ resistors to | |
provide a broadband noise source. | 549 | 549 | provide a broadband noise source. | |
The board runs the Linux kernel and surrounding environment produced from the | 550 | 550 | The board runs the Linux kernel and surrounding environment produced from the | |
Buildroot framework available at \url{https://github.com/trabucayre/redpitaya/}: configuring | 551 | 551 | Buildroot framework available at \url{https://github.com/trabucayre/redpitaya/}: configuring | |
the Zynq FPGA, feeding the FIR with the set of coefficients, executing the simulation and | 552 | 552 | the Zynq FPGA, feeding the FIR with the set of coefficients, executing the simulation and | |
fetching the results is automated. | 553 | 553 | fetching the results is automated. | |
554 | 554 | |||
The deploy script uploads the bitstream to the board ((3) on | 555 | 555 | The deploy script uploads the bitstream to the board ((3) on | |
figure~\ref{fig:workflow}), flashes the FPGA, loads the different drivers, | 556 | 556 | figure~\ref{fig:workflow}), flashes the FPGA, loads the different drivers, | |
configures the coefficients of the FIR filters. It then waits for the results | 557 | 557 | configures the coefficients of the FIR filters. It then waits for the results | |
and retrieves the data to the main computer ((4) on figure~\ref{fig:workflow}). | 558 | 558 | and retrieves the data to the main computer ((4) on figure~\ref{fig:workflow}). | |
559 | 559 | |||
Finally, an Octave post-processing script computes the final results thanks to | 560 | 560 | Finally, an Octave post-processing script computes the final results thanks to | |
the output data ((5) on figure~\ref{fig:workflow}). | 561 | 561 | the output data ((5) on figure~\ref{fig:workflow}). | |
The results are normalized so that the Power Spectrum Density (PSD) starts at zero | 562 | 562 | The results are normalized so that the Power Spectrum Density (PSD) starts at zero | |
and the different configurations can be compared. | 563 | 563 | and the different configurations can be compared. | |
564 | 564 | |||
\section{Maximizing the rejection at fixed silicon area} | 565 | 565 | \section{Maximizing the rejection at fixed silicon area} | |
\label{sec:fixed_area} | 566 | 566 | \label{sec:fixed_area} | |
This section presents the output of the filter solver {\em i.e.} the computed | 567 | 567 | This section presents the output of the filter solver {\em i.e.} the computed | |
configurations for each stage, the computed rejection and the computed silicon area. | 568 | 568 | configurations for each stage, the computed rejection and the computed silicon area. | |
Such results allow for understanding the choices made by the solver to compute its solutions. | 569 | 569 | Such results allow for understanding the choices made by the solver to compute its solutions. | |
570 | 570 | |||
The experimental setup is composed of three cases. The raw input is generated | 571 | 571 | The experimental setup is composed of three cases. The raw input is generated | |
by a Pseudo Random Number (PRN) generator, which fixes the input data size $\Pi^I$. | 572 | 572 | by a Pseudo Random Number (PRN) generator, which fixes the input data size $\Pi^I$. | |
Then the total silicon area $\mathcal{A}$ has been fixed to either 500, 1000 or 1500 | 573 | 573 | Then the total silicon area $\mathcal{A}$ has been fixed to either 500, 1000 or 1500 | |
arbitrary units. Hence, the three cases have been named: MAX/500, MAX/1000, MAX/1500. | 574 | 574 | arbitrary units. Hence, the three cases have been named: MAX/500, MAX/1000, MAX/1500. | |
The number of configurations $p$ is 1827, with $C_i$ ranging from 3 to 60 and $\pi^C$ | 575 | 575 | The number of configurations $p$ is 1827, with $C_i$ ranging from 3 to 60 and $\pi^C$ | |
ranging from 2 to 22. In each case, the quadratic program has been able to give a | 576 | 576 | ranging from 2 to 22. In each case, the quadratic program has been able to give a | |
result up to five stages ($n = 5$) in the cascaded filter. | 577 | 577 | result up to five stages ($n = 5$) in the cascaded filter. | |
578 | 578 | |||
Table~\ref{tbl:gurobi_max_500} shows the results obtained by the filter solver for MAX/500. | 579 | 579 | Table~\ref{tbl:gurobi_max_500} shows the results obtained by the filter solver for MAX/500. | |
Table~\ref{tbl:gurobi_max_1000} shows the results obtained by the filter solver for MAX/1000. | 580 | 580 | Table~\ref{tbl:gurobi_max_1000} shows the results obtained by the filter solver for MAX/1000. | |
Table~\ref{tbl:gurobi_max_1500} shows the results obtained by the filter solver for MAX/1500. | 581 | 581 | Table~\ref{tbl:gurobi_max_1500} shows the results obtained by the filter solver for MAX/1500. | |
582 | 582 | |||
\renewcommand{\arraystretch}{1.4} | 583 | 583 | \renewcommand{\arraystretch}{1.4} | |
584 | 584 | |||
\begin{table} | 585 | 585 | \begin{table} | |
\caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MAX/500} | 586 | 586 | \caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MAX/500} | |
\label{tbl:gurobi_max_500} | 587 | 587 | \label{tbl:gurobi_max_500} | |
\centering | 588 | 588 | \centering | |
{\scalefont{0.77} | 589 | 589 | {\scalefont{0.77} | |
\begin{tabular}{|c|ccccc|c|c|} | 590 | 590 | \begin{tabular}{|c|ccccc|c|c|} | |
\hline | 591 | 591 | \hline | |
$n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | 592 | 592 | $n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | |
\hline | 593 | 593 | \hline | |
1 & (21, 7, 0) & - & - & - & - & 32~dB & 483 \\ | 594 | 594 | 1 & (21, 7, 0) & - & - & - & - & 32~dB & 483 \\ | |
2 & (3, 3, 15) & (31, 9, 0) & - & - & - & 58~dB & 460 \\ | 595 | 595 | 2 & (3, 3, 15) & (31, 9, 0) & - & - & - & 58~dB & 460 \\ | |
3 & (3, 3, 15) & (27, 9, 0) & (5, 3, 0) & - & - & 66~dB & 488 \\ | 596 | 596 | 3 & (3, 3, 15) & (27, 9, 0) & (5, 3, 0) & - & - & 66~dB & 488 \\ | |
4 & (3, 3, 15) & (19, 7, 0) & (11, 5, 0) & (3, 3, 0) & - & 74~dB & 499 \\ | 597 | 597 | 4 & (3, 3, 15) & (19, 7, 0) & (11, 5, 0) & (3, 3, 0) & - & 74~dB & 499 \\ | |
5 & (3, 3, 15) & (23, 8, 0) & (3, 3, 1) & (3, 3, 0) & (3, 3, 0) & 78~dB & 489 \\ | 598 | 598 | 5 & (3, 3, 15) & (23, 8, 0) & (3, 3, 1) & (3, 3, 0) & (3, 3, 0) & 78~dB & 489 \\ | |
\hline | 599 | 599 | \hline | |
\end{tabular} | 600 | 600 | \end{tabular} | |
} | 601 | 601 | } | |
\end{table} | 602 | 602 | \end{table} | |
603 | 603 | |||
\begin{table} | 604 | 604 | \begin{table} | |
\caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MAX/1000} | 605 | 605 | \caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MAX/1000} | |
\label{tbl:gurobi_max_1000} | 606 | 606 | \label{tbl:gurobi_max_1000} | |
\centering | 607 | 607 | \centering | |
{\scalefont{0.77} | 608 | 608 | {\scalefont{0.77} | |
\begin{tabular}{|c|ccccc|c|c|} | 609 | 609 | \begin{tabular}{|c|ccccc|c|c|} | |
\hline | 610 | 610 | \hline | |
$n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | 611 | 611 | $n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | |
\hline | 612 | 612 | \hline | |
1 & (37, 11, 0) & - & - & - & - & 56~dB & 999 \\ | 613 | 613 | 1 & (37, 11, 0) & - & - & - & - & 56~dB & 999 \\ | |
2 & (3, 3, 15) & (51, 14, 0) & - & - & - & 87~dB & 975 \\ | 614 | 614 | 2 & (3, 3, 15) & (51, 14, 0) & - & - & - & 87~dB & 975 \\ | |
3 & (3, 3, 15) & (35, 11, 0) & (19, 7, 0) & - & - & 99~dB & 1000 \\ | 615 | 615 | 3 & (3, 3, 15) & (35, 11, 0) & (19, 7, 0) & - & - & 99~dB & 1000 \\ | |
4 & (3, 4, 16) & (27, 8, 0) & (19, 7, 1) & (11, 5, 0) & - & 103~dB & 998 \\ | 616 | 616 | 4 & (3, 4, 16) & (27, 8, 0) & (19, 7, 1) & (11, 5, 0) & - & 103~dB & 998 \\ | |
5 & (3, 3, 15) & (31, 9, 0) & (19, 7, 0) & (3, 3, 1) & (3, 3, 0) & 111~dB & 984 \\ | 617 | 617 | 5 & (3, 3, 15) & (31, 9, 0) & (19, 7, 0) & (3, 3, 1) & (3, 3, 0) & 111~dB & 984 \\ | |
\hline | 618 | 618 | \hline | |
\end{tabular} | 619 | 619 | \end{tabular} | |
} | 620 | 620 | } | |
\end{table} | 621 | 621 | \end{table} | |
622 | 622 | |||
\begin{table} | 623 | 623 | \begin{table} | |
\caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MAX/1500} | 624 | 624 | \caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MAX/1500} | |
\label{tbl:gurobi_max_1500} | 625 | 625 | \label{tbl:gurobi_max_1500} | |
\centering | 626 | 626 | \centering | |
{\scalefont{0.77} | 627 | 627 | {\scalefont{0.77} | |
\begin{tabular}{|c|ccccc|c|c|} | 628 | 628 | \begin{tabular}{|c|ccccc|c|c|} | |
\hline | 629 | 629 | \hline | |
$n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | 630 | 630 | $n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | |
\hline | 631 | 631 | \hline | |
1 & (47, 15, 0) & - & - & - & - & 71~dB & 1457 \\ | 632 | 632 | 1 & (47, 15, 0) & - & - & - & - & 71~dB & 1457 \\ | |
2 & (19, 6, 15) & (51, 14, 0) & - & - & - & 103~dB & 1489 \\ | 633 | 633 | 2 & (19, 6, 15) & (51, 14, 0) & - & - & - & 103~dB & 1489 \\ | |
3 & (3, 3, 15) & (35, 11, 0) & (35, 11, 0) & - & - & 122~dB & 1492 \\ | 634 | 634 | 3 & (3, 3, 15) & (35, 11, 0) & (35, 11, 0) & - & - & 122~dB & 1492 \\ | |
4 & (3, 3, 15) & (27, 8, 0) & (19, 7, 0) & (27, 9, 0) & - & 129~dB & 1498 \\ | 635 | 635 | 4 & (3, 3, 15) & (27, 8, 0) & (19, 7, 0) & (27, 9, 0) & - & 129~dB & 1498 \\ | |
5 & (3, 3, 15) & (23, 9, 2) & (27, 9, 0) & (19, 7, 0) & (3, 3, 0) & 136~dB & 1499 \\ | 636 | 636 | 5 & (3, 3, 15) & (23, 9, 2) & (27, 9, 0) & (19, 7, 0) & (3, 3, 0) & 136~dB & 1499 \\ | |
\hline | 637 | 637 | \hline | |
\end{tabular} | 638 | 638 | \end{tabular} | |
} | 639 | 639 | } | |
\end{table} | 640 | 640 | \end{table} | |
641 | 641 | |||
\renewcommand{\arraystretch}{1} | 642 | 642 | \renewcommand{\arraystretch}{1} | |
643 | 643 | |||
From these tables, we can first state that the more stages are used to define | 644 | 644 | From these tables, we can first state that the more stages are used to define | |
the cascaded FIR filters, the better the rejection. It was an expected result as it has | 645 | 645 | the cascaded FIR filters, the better the rejection. It was an expected result as it has | |
been previously observed that many small filters are better than | 646 | 646 | been previously observed that many small filters are better than | |
a single large filter \cite{lim_1988, lim_1996, young_1992}, despite such conclusions | 647 | 647 | a single large filter \cite{lim_1988, lim_1996, young_1992}, despite such conclusions | |
being hardly used in practice due to the lack of tools for identifying individual filter | 648 | 648 | being hardly used in practice due to the lack of tools for identifying individual filter | |
coefficients in the cascaded approach. | 649 | 649 | coefficients in the cascaded approach. | |
650 | 650 | |||
Second, the larger the silicon area, the better the rejection. This was also an | 651 | 651 | Second, the larger the silicon area, the better the rejection. This was also an | |
expected result as more area means a filter of better quality with more coefficients | 652 | 652 | expected result as more area means a filter of better quality with more coefficients | |
or more bits per coefficient. | 653 | 653 | or more bits per coefficient. | |
654 | 654 | |||
Then, we also observe that the first stage can have a larger shift than the other | 655 | 655 | Then, we also observe that the first stage can have a larger shift than the other | |
stages. This is explained by the fact that the solver tries to use just enough | 656 | 656 | stages. This is explained by the fact that the solver tries to use just enough | |
bits for the computed rejection after each stage. In the first stage, a | 657 | 657 | bits for the computed rejection after each stage. In the first stage, a | |
balance between a strong rejection with a low number of bits is targeted. Equation~\ref{eq:maxshift} | 658 | 658 | balance between a strong rejection with a low number of bits is targeted. Equation~\ref{eq:maxshift} | |
gives the relation between both values. | 659 | 659 | gives the relation between both values. | |
660 | 660 | |||
Finally, we note that the solver consumes all the given silicon area. | 661 | 661 | Finally, we note that the solver consumes all the given silicon area. | |
662 | 662 | |||
The following graphs present the rejection for real data on the FPGA. In all the following | 663 | 663 | The following graphs present the rejection for real data on the FPGA. In all the following | |
figures, the solid line represents the actual rejection of the filtered | 664 | 664 | figures, the solid line represents the actual rejection of the filtered | |
data on the FPGA as measured experimentally and the dashed line are the noise levels | 665 | 665 | data on the FPGA as measured experimentally and the dashed line are the noise levels | |
given by the quadratic solver. The configurations are those computed in the previous section. | 666 | 666 | given by the quadratic solver. The configurations are those computed in the previous section. | |
667 | 667 | |||
Figure~\ref{fig:max_500_result} shows the rejection of the different configurations in the case of MAX/500. | 668 | 668 | Figure~\ref{fig:max_500_result} shows the rejection of the different configurations in the case of MAX/500. | |
Figure~\ref{fig:max_1000_result} shows the rejection of the different configurations in the case of MAX/1000. | 669 | 669 | Figure~\ref{fig:max_1000_result} shows the rejection of the different configurations in the case of MAX/1000. | |
Figure~\ref{fig:max_1500_result} shows the rejection of the different configurations in the case of MAX/1500. | 670 | 670 | Figure~\ref{fig:max_1500_result} shows the rejection of the different configurations in the case of MAX/1500. | |
671 | 671 | |||
% \begin{figure} | 672 | 672 | % \begin{figure} | |
% \centering | 673 | 673 | % \centering | |
% \includegraphics[width=\linewidth]{images/max_500} | 674 | 674 | % \includegraphics[width=\linewidth]{images/max_500} | |
% \caption{Signal spectrum for MAX/500} | 675 | 675 | % \caption{Signal spectrum for MAX/500} | |
% \label{fig:max_500_result} | 676 | 676 | % \label{fig:max_500_result} | |
% \end{figure} | 677 | 677 | % \end{figure} | |
% | 678 | 678 | % | |
% \begin{figure} | 679 | 679 | % \begin{figure} | |
% \centering | 680 | 680 | % \centering | |
% \includegraphics[width=\linewidth]{images/max_1000} | 681 | 681 | % \includegraphics[width=\linewidth]{images/max_1000} | |
% \caption{Signal spectrum for MAX/1000} | 682 | 682 | % \caption{Signal spectrum for MAX/1000} | |
% \label{fig:max_1000_result} | 683 | 683 | % \label{fig:max_1000_result} | |
% \end{figure} | 684 | 684 | % \end{figure} | |
% | 685 | 685 | % | |
% \begin{figure} | 686 | 686 | % \begin{figure} | |
% \centering | 687 | 687 | % \centering | |
% \includegraphics[width=\linewidth]{images/max_1500} | 688 | 688 | % \includegraphics[width=\linewidth]{images/max_1500} | |
% \caption{Signal spectrum for MAX/1500} | 689 | 689 | % \caption{Signal spectrum for MAX/1500} | |
% \label{fig:max_1500_result} | 690 | 690 | % \label{fig:max_1500_result} | |
% \end{figure} | 691 | 691 | % \end{figure} | |
692 | 692 | |||
% r2.14 et r2.15 et r2.16 | 693 | 693 | % r2.14 et r2.15 et r2.16 | |
\begin{figure} | 694 | 694 | \begin{figure} | |
\centering | 695 | 695 | \centering | |
\begin{subfigure}{\linewidth} | 696 | 696 | \begin{subfigure}{\linewidth} | |
\includegraphics[width=\linewidth]{images/max_500} | 697 | 697 | \includegraphics[width=\linewidth]{images/max_500} | |
\caption{Signal spectrum for MAX/500} | 698 | 698 | \caption{Signal spectrum for MAX/500} | |
\label{fig:max_500_result} | 699 | 699 | \label{fig:max_500_result} | |
\end{subfigure} | 700 | 700 | \end{subfigure} | |
701 | 701 | |||
\begin{subfigure}{\linewidth} | 702 | 702 | \begin{subfigure}{\linewidth} | |
\includegraphics[width=\linewidth]{images/max_1000} | 703 | 703 | \includegraphics[width=\linewidth]{images/max_1000} | |
\caption{Signal spectrum for MAX/1000} | 704 | 704 | \caption{Signal spectrum for MAX/1000} | |
\label{fig:max_1000_result} | 705 | 705 | \label{fig:max_1000_result} | |
\end{subfigure} | 706 | 706 | \end{subfigure} | |
707 | 707 | |||
\begin{subfigure}{\linewidth} | 708 | 708 | \begin{subfigure}{\linewidth} | |
\includegraphics[width=\linewidth]{images/max_1500} | 709 | 709 | \includegraphics[width=\linewidth]{images/max_1500} | |
\caption{Signal spectrum for MAX/1500} | 710 | 710 | \caption{Signal spectrum for MAX/1500} | |
\label{fig:max_1500_result} | 711 | 711 | \label{fig:max_1500_result} | |
\end{subfigure} | 712 | 712 | \end{subfigure} | |
\caption{Signal spectrum of each experimental configurations MAX/500, MAX/1000 and MAX/1500} | 713 | 713 | \caption{Signal spectrum of each experimental configurations MAX/500, MAX/1000 and MAX/1500} | |
\end{figure} | 714 | 714 | \end{figure} | |
715 | 715 | |||
In all cases, we observe that the actual rejection is close to the rejection computed by the solver. | 716 | 716 | In all cases, we observe that the actual rejection is close to the rejection computed by the solver. | |
717 | 717 | |||
We compare the actual silicon resources given by Vivado to the | 718 | 718 | We compare the actual silicon resources given by Vivado to the | |
resources in arbitrary units. | 719 | 719 | resources in arbitrary units. | |
The goal is to check that our arbitrary units of silicon area models well enough | 720 | 720 | The goal is to check that our arbitrary units of silicon area models well enough | |
the real resources on the FPGA. Especially we want to verify that, for a given | 721 | 721 | the real resources on the FPGA. Especially we want to verify that, for a given | |
number of arbitrary units, the actual silicon resources do not depend on the | 722 | 722 | number of arbitrary units, the actual silicon resources do not depend on the | |
number of stages $n$. Most significantly, our approach aims | 723 | 723 | number of stages $n$. Most significantly, our approach aims | |
at remaining far enough from the practical logic gate implementation used by | 724 | 724 | at remaining far enough from the practical logic gate implementation used by | |
various vendors to remain platform independent and be portable from one | 725 | 725 | various vendors to remain platform independent and be portable from one | |
architecture to another. | 726 | 726 | architecture to another. | |
727 | 727 | |||
Table~\ref{tbl:resources_usage} shows the resources usage in the case of MAX/500, MAX/1000 and | 728 | 728 | Table~\ref{tbl:resources_usage} shows the resources usage in the case of MAX/500, MAX/1000 and | |
MAX/1500 \emph{i.e.} when the maximum allowed silicon area is fixed to 500, 1000 | 729 | 729 | MAX/1500 \emph{i.e.} when the maximum allowed silicon area is fixed to 500, 1000 | |
and 1500 arbitrary units. We have taken care to extract solely the resources used by | 730 | 730 | and 1500 arbitrary units. We have taken care to extract solely the resources used by | |
the FIR filters and remove additional processing blocks including FIFO and Programmable | 731 | 731 | the FIR filters and remove additional processing blocks including FIFO and Programmable | |
Logic (PL -- FPGA) to Processing System (PS -- general purpose processor) communication. | 732 | 732 | Logic (PL -- FPGA) to Processing System (PS -- general purpose processor) communication. | |
733 | 733 | |||
\begin{table}[h!tb] | 734 | 734 | \begin{table}[h!tb] | |
\caption{Resource occupation. The last column refers to available resources on a Zynq-7010 as found on the Redpitaya.} | 735 | 735 | \caption{Resource occupation. The last column refers to available resources on a Zynq-7010 as found on the Redpitaya.} | |
\label{tbl:resources_usage} | 736 | 736 | \label{tbl:resources_usage} | |
\centering | 737 | 737 | \centering | |
\begin{tabular}{|c|c|ccc|c|} | 738 | 738 | \begin{tabular}{|c|c|ccc|c|} | |
\hline | 739 | 739 | \hline | |
$n$ & & MAX/500 & MAX/1000 & MAX/1500 & \emph{Zynq 7010} \\ \hline\hline | 740 | 740 | $n$ & & MAX/500 & MAX/1000 & MAX/1500 & \emph{Zynq 7010} \\ \hline\hline | |
& LUT & 249 & 453 & 627 & \emph{17600} \\ | 741 | 741 | & LUT & 249 & 453 & 627 & \emph{17600} \\ | |
1 & BRAM & 1 & 1 & 1 & \emph{120} \\ | 742 | 742 | 1 & BRAM & 1 & 1 & 1 & \emph{120} \\ | |
& DSP & 21 & 37 & 47 & \emph{80} \\ \hline | 743 | 743 | & DSP & 21 & 37 & 47 & \emph{80} \\ \hline | |
& LUT & 2374 & 5494 & 691 & \emph{17600} \\ | 744 | 744 | & LUT & 2374 & 5494 & 691 & \emph{17600} \\ | |
2 & BRAM & 2 & 2 & 2 & \emph{120} \\ | 745 | 745 | 2 & BRAM & 2 & 2 & 2 & \emph{120} \\ | |
& DSP & 0 & 0 & 70 & \emph{80} \\ \hline | 746 | 746 | & DSP & 0 & 0 & 70 & \emph{80} \\ \hline | |
& LUT & 2443 & 3304 & 3521 & \emph{17600} \\ | 747 | 747 | & LUT & 2443 & 3304 & 3521 & \emph{17600} \\ | |
3 & BRAM & 3 & 3 & 3 & \emph{120} \\ | 748 | 748 | 3 & BRAM & 3 & 3 & 3 & \emph{120} \\ | |
& DSP & 0 & 19 & 35 & \emph{80} \\ \hline | 749 | 749 | & DSP & 0 & 19 & 35 & \emph{80} \\ \hline | |
& LUT & 2634 & 3753 & 2557 & \emph{17600} \\ | 750 | 750 | & LUT & 2634 & 3753 & 2557 & \emph{17600} \\ | |
4 & BRAM & 4 & 4 & 4 & \emph{120} \\ | 751 | 751 | 4 & BRAM & 4 & 4 & 4 & \emph{120} \\ | |
& DPS & 0 & 19 & 46 & \emph{80} \\ \hline | 752 | 752 | & DPS & 0 & 19 & 46 & \emph{80} \\ \hline | |
& LUT & 2423 & 3047 & 2847 & \emph{17600} \\ | 753 | 753 | & LUT & 2423 & 3047 & 2847 & \emph{17600} \\ | |
5 & BRAM & 5 & 5 & 5 & \emph{120} \\ | 754 | 754 | 5 & BRAM & 5 & 5 & 5 & \emph{120} \\ | |
& DPS & 0 & 22 & 46 & \emph{80} \\ \hline | 755 | 755 | & DPS & 0 & 22 & 46 & \emph{80} \\ \hline | |
\end{tabular} | 756 | 756 | \end{tabular} | |
\end{table} | 757 | 757 | \end{table} | |
758 | 758 | |||
In some cases, Vivado replaces the DSPs by Look Up Tables (LUTs). We assume that, | 759 | 759 | In some cases, Vivado replaces the DSPs by Look Up Tables (LUTs). We assume that, | |
when the filter coefficients are small enough, or when the input size is small | 760 | 760 | when the filter coefficients are small enough, or when the input size is small | |
enough, Vivado optimizes resource consumption by selecting multiplexers to | 761 | 761 | enough, Vivado optimizes resource consumption by selecting multiplexers to | |
implement the multiplications instead of a DSP. In this case, it is quite difficult | 762 | 762 | implement the multiplications instead of a DSP. In this case, it is quite difficult | |
to compare the whole silicon budget. | 763 | 763 | to compare the whole silicon budget. | |
764 | 764 | |||
However, a rough estimation can be made with a simple equivalence: looking at | 765 | 765 | However, a rough estimation can be made with a simple equivalence: looking at | |
the first column (MAX/500), where the number of LUTs is quite stable for $n \geq 2$, | 766 | 766 | the first column (MAX/500), where the number of LUTs is quite stable for $n \geq 2$, | |
we can deduce that a DSP is roughly equivalent to 100~LUTs in terms of silicon | 767 | 767 | we can deduce that a DSP is roughly equivalent to 100~LUTs in terms of silicon | |
area use. With this equivalence, our 500 arbitraty units correspond to 2500 LUTs, | 768 | 768 | area use. With this equivalence, our 500 arbitraty units correspond to 2500 LUTs, | |
1000 arbitrary units correspond to 5000 LUTs and 1500 arbitrary units correspond | 769 | 769 | 1000 arbitrary units correspond to 5000 LUTs and 1500 arbitrary units correspond | |
to 7300 LUTs. The conclusion is that the orders of magnitude of our arbitrary | 770 | 770 | to 7300 LUTs. The conclusion is that the orders of magnitude of our arbitrary | |
unit map well to actual hardware resources. The relatively small differences can probably be explained | 771 | 771 | unit map well to actual hardware resources. The relatively small differences can probably be explained | |
by the optimizations done by Vivado based on the detailed map of available processing resources. | 772 | 772 | by the optimizations done by Vivado based on the detailed map of available processing resources. | |
773 | 773 | |||
We now present the computation time needed to solve the quadratic problem. | 774 | 774 | We now present the computation time needed to solve the quadratic problem. | |
For each case, the filter solver software is executed on a Intel(R) Xeon(R) CPU E5606 | 775 | 775 | For each case, the filter solver software is executed on a Intel(R) Xeon(R) CPU E5606 | |
clocked at 2.13~GHz. The CPU has 8 cores that are used by Gurobi to solve | 776 | 776 | clocked at 2.13~GHz. The CPU has 8 cores that are used by Gurobi to solve | |
the quadratic problem. Table~\ref{tbl:area_time} shows the time needed to solve the quadratic | 777 | 777 | the quadratic problem. Table~\ref{tbl:area_time} shows the time needed to solve the quadratic | |
problem when the maximal area is fixed to 500, 1000 and 1500 arbitrary units. | 778 | 778 | problem when the maximal area is fixed to 500, 1000 and 1500 arbitrary units. | |
779 | 779 | |||
\begin{table}[h!tb] | 780 | 780 | \begin{table}[h!tb] | |
\caption{Time needed to solve the quadratic program with Gurobi} | 781 | 781 | \caption{Time needed to solve the quadratic program with Gurobi} | |
\label{tbl:area_time} | 782 | 782 | \label{tbl:area_time} | |
\centering | 783 | 783 | \centering | |
\begin{tabular}{|c|c|c|c|}\hline | 784 | 784 | \begin{tabular}{|c|c|c|c|}\hline | |
$n$ & Time (MAX/500) & Time (MAX/1000) & Time (MAX/1500) \\\hline\hline | 785 | 785 | $n$ & Time (MAX/500) & Time (MAX/1000) & Time (MAX/1500) \\\hline\hline | |
1 & 0.1~s & 0.1~s & 0.3~s \\ | 786 | 786 | 1 & 0.1~s & 0.1~s & 0.3~s \\ | |
2 & 1.1~s & 2.2~s & 12~s \\ | 787 | 787 | 2 & 1.1~s & 2.2~s & 12~s \\ | |
3 & 17~s & 137~s ($\approx$ 2~min) & 275~s ($\approx$ 4~min) \\ | 788 | 788 | 3 & 17~s & 137~s ($\approx$ 2~min) & 275~s ($\approx$ 4~min) \\ | |
4 & 52~s & 5448~s ($\approx$ 90~min) & 5505~s ($\approx$ 17~h) \\ | 789 | 789 | 4 & 52~s & 5448~s ($\approx$ 90~min) & 5505~s ($\approx$ 17~h) \\ | |
5 & 286~s ($\approx$ 4~min) & 4119~s ($\approx$ 68~min) & 235479~s ($\approx$ 3~days) \\\hline | 790 | 790 | 5 & 286~s ($\approx$ 4~min) & 4119~s ($\approx$ 68~min) & 235479~s ($\approx$ 3~days) \\\hline | |
\end{tabular} | 791 | 791 | \end{tabular} | |
\end{table} | 792 | 792 | \end{table} | |
793 | 793 | |||
As expected, the computation time seems to rise exponentially with the number of stages. % TODO: exponentiel ? | 794 | 794 | As expected, the computation time seems to rise exponentially with the number of stages. % TODO: exponentiel ? | |
When the area is limited, the design exploration space is more limited and the solver is able to | 795 | 795 | When the area is limited, the design exploration space is more limited and the solver is able to | |
find an optimal solution faster. | 796 | 796 | find an optimal solution faster. | |
797 | 797 | |||
\subsection{Minimizing resource occupation at fixed rejection}\label{sec:fixed_rej} | 798 | 798 | \subsection{Minimizing resource occupation at fixed rejection}\label{sec:fixed_rej} | |
799 | 799 | |||
This section presents the results of the complementary quadratic program aimed at | 800 | 800 | This section presents the results of the complementary quadratic program aimed at | |
minimizing the area occupation for a targeted rejection level. | 801 | 801 | minimizing the area occupation for a targeted rejection level. | |
802 | 802 | |||
The experimental setup is composed of four cases. The raw input is the same | 803 | 803 | The experimental setup is composed of four cases. The raw input is the same | |
as in the previous section, from a PRN generator, which fixes the input data size $\Pi^I$. | 804 | 804 | as in the previous section, from a PRN generator, which fixes the input data size $\Pi^I$. | |
Then the targeted rejection $\mathcal{R}$ has been fixed to either 40, 60, 80 or 100~dB. | 805 | 805 | Then the targeted rejection $\mathcal{R}$ has been fixed to either 40, 60, 80 or 100~dB. | |
Hence, the three cases have been named: MIN/40, MIN/60, MIN/80 and MIN/100. | 806 | 806 | Hence, the three cases have been named: MIN/40, MIN/60, MIN/80 and MIN/100. | |
The number of configurations $p$ is the same as previous section. | 807 | 807 | The number of configurations $p$ is the same as previous section. | |
808 | 808 | |||
Table~\ref{tbl:gurobi_min_40} shows the results obtained by the filter solver for MIN/40. | 809 | 809 | Table~\ref{tbl:gurobi_min_40} shows the results obtained by the filter solver for MIN/40. | |
Table~\ref{tbl:gurobi_min_60} shows the results obtained by the filter solver for MIN/60. | 810 | 810 | Table~\ref{tbl:gurobi_min_60} shows the results obtained by the filter solver for MIN/60. | |
Table~\ref{tbl:gurobi_min_80} shows the results obtained by the filter solver for MIN/80. | 811 | 811 | Table~\ref{tbl:gurobi_min_80} shows the results obtained by the filter solver for MIN/80. | |
Table~\ref{tbl:gurobi_min_100} shows the results obtained by the filter solver for MIN/100. | 812 | 812 | Table~\ref{tbl:gurobi_min_100} shows the results obtained by the filter solver for MIN/100. | |
813 | 813 | |||
\renewcommand{\arraystretch}{1.4} | 814 | 814 | \renewcommand{\arraystretch}{1.4} | |
815 | 815 | |||
\begin{table}[h!tb] | 816 | 816 | \begin{table}[h!tb] | |
\caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/40} | 817 | 817 | \caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/40} | |
\label{tbl:gurobi_min_40} | 818 | 818 | \label{tbl:gurobi_min_40} | |
\centering | 819 | 819 | \centering | |
{\scalefont{0.77} | 820 | 820 | {\scalefont{0.77} | |
\begin{tabular}{|c|ccccc|c|c|} | 821 | 821 | \begin{tabular}{|c|ccccc|c|c|} | |
\hline | 822 | 822 | \hline | |
$n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | 823 | 823 | $n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | |
\hline | 824 | 824 | \hline | |
1 & (27, 8, 0) & - & - & - & - & 41~dB & 648 \\ | 825 | 825 | 1 & (27, 8, 0) & - & - & - & - & 41~dB & 648 \\ | |
2 & (3, 2, 14) & (19, 7, 0) & - & - & - & 40~dB & 263 \\ | 826 | 826 | 2 & (3, 2, 14) & (19, 7, 0) & - & - & - & 40~dB & 263 \\ | |
3 & (3, 3, 15) & (11, 5, 0) & (3, 3, 0) & - & - & 41~dB & 192 \\ | 827 | 827 | 3 & (3, 3, 15) & (11, 5, 0) & (3, 3, 0) & - & - & 41~dB & 192 \\ | |
4 & (3, 3, 15) & (3, 3, 0) & (3, 3, 0) & (3, 3, 0) & - & 42~dB & 147 \\ | 828 | 828 | 4 & (3, 3, 15) & (3, 3, 0) & (3, 3, 0) & (3, 3, 0) & - & 42~dB & 147 \\ | |
\hline | 829 | 829 | \hline | |
\end{tabular} | 830 | 830 | \end{tabular} | |
} | 831 | 831 | } | |
\end{table} | 832 | 832 | \end{table} | |
833 | 833 | |||
\begin{table}[h!tb] | 834 | 834 | \begin{table}[h!tb] | |
\caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/60} | 835 | 835 | \caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/60} | |
\label{tbl:gurobi_min_60} | 836 | 836 | \label{tbl:gurobi_min_60} | |
\centering | 837 | 837 | \centering | |
{\scalefont{0.77} | 838 | 838 | {\scalefont{0.77} | |
\begin{tabular}{|c|ccccc|c|c|} | 839 | 839 | \begin{tabular}{|c|ccccc|c|c|} | |
\hline | 840 | 840 | \hline | |
$n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | 841 | 841 | $n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | |
\hline | 842 | 842 | \hline | |
1 & (39, 13, 0) & - & - & - & - & 60~dB & 1131 \\ | 843 | 843 | 1 & (39, 13, 0) & - & - & - & - & 60~dB & 1131 \\ | |
2 & (3, 3, 15) & (35, 10, 0) & - & - & - & 60~dB & 547 \\ | 844 | 844 | 2 & (3, 3, 15) & (35, 10, 0) & - & - & - & 60~dB & 547 \\ | |
3 & (3, 3, 15) & (27, 8, 0) & (3, 3, 0) & - & - & 62~dB & 426 \\ | 845 | 845 | 3 & (3, 3, 15) & (27, 8, 0) & (3, 3, 0) & - & - & 62~dB & 426 \\ | |
4 & (3, 2, 14) & (11, 5, 1) & (11, 5, 0) & (3, 3, 0) & - & 60~dB & 344 \\ | 846 | 846 | 4 & (3, 2, 14) & (11, 5, 1) & (11, 5, 0) & (3, 3, 0) & - & 60~dB & 344 \\ | |
5 & (3, 2, 14) & (3, 3, 1) & (3, 3, 0) & (3, 3, 0) & (3, 3, 0) & 60~dB & 279 \\ | 847 | 847 | 5 & (3, 2, 14) & (3, 3, 1) & (3, 3, 0) & (3, 3, 0) & (3, 3, 0) & 60~dB & 279 \\ | |
\hline | 848 | 848 | \hline | |
\end{tabular} | 849 | 849 | \end{tabular} | |
} | 850 | 850 | } | |
\end{table} | 851 | 851 | \end{table} | |
852 | 852 | |||
\begin{table}[h!tb] | 853 | 853 | \begin{table}[h!tb] | |
\caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/80} | 854 | 854 | \caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/80} | |
\label{tbl:gurobi_min_80} | 855 | 855 | \label{tbl:gurobi_min_80} | |
\centering | 856 | 856 | \centering | |
{\scalefont{0.77} | 857 | 857 | {\scalefont{0.77} | |
\begin{tabular}{|c|ccccc|c|c|} | 858 | 858 | \begin{tabular}{|c|ccccc|c|c|} | |
\hline | 859 | 859 | \hline | |
$n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | 860 | 860 | $n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | |
\hline | 861 | 861 | \hline | |
1 & (55, 16, 0) & - & - & - & - & 81~dB & 1760 \\ | 862 | 862 | 1 & (55, 16, 0) & - & - & - & - & 81~dB & 1760 \\ | |
2 & (3, 3, 15) & (47, 14, 0) & - & - & - & 80~dB & 903 \\ | 863 | 863 | 2 & (3, 3, 15) & (47, 14, 0) & - & - & - & 80~dB & 903 \\ | |
3 & (3, 3, 15) & (23, 9, 0) & (19, 7, 0) & - & - & 80~dB & 698 \\ | 864 | 864 | 3 & (3, 3, 15) & (23, 9, 0) & (19, 7, 0) & - & - & 80~dB & 698 \\ | |
4 & (3, 3, 15) & (27, 9, 0) & (7, 7, 4) & (3, 3, 0) & - & 80~dB & 605 \\ | 865 | 865 | 4 & (3, 3, 15) & (27, 9, 0) & (7, 7, 4) & (3, 3, 0) & - & 80~dB & 605 \\ | |
5 & (3, 2, 14) & (27, 8, 0) & (3, 3, 1) & (3, 3, 0) & (3, 3, 0) & 81~dB & 534 \\ | 866 | 866 | 5 & (3, 2, 14) & (27, 8, 0) & (3, 3, 1) & (3, 3, 0) & (3, 3, 0) & 81~dB & 534 \\ | |
\hline | 867 | 867 | \hline | |
\end{tabular} | 868 | 868 | \end{tabular} | |
} | 869 | 869 | } | |
\end{table} | 870 | 870 | \end{table} | |
871 | 871 | |||
\begin{table}[h!tb] | 872 | 872 | \begin{table}[h!tb] | |
\caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/100} | 873 | 873 | \caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/100} | |
\label{tbl:gurobi_min_100} | 874 | 874 | \label{tbl:gurobi_min_100} | |
\centering | 875 | 875 | \centering | |
{\scalefont{0.77} | 876 | 876 | {\scalefont{0.77} | |
\begin{tabular}{|c|ccccc|c|c|} | 877 | 877 | \begin{tabular}{|c|ccccc|c|c|} | |
\hline | 878 | 878 | \hline | |
$n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | 879 | 879 | $n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ | |
\hline | 880 | 880 | \hline | |
1 & - & - & - & - & - & - & - \\ | 881 | 881 | 1 & - & - & - & - & - & - & - \\ | |
2 & (15, 7, 17) & (51, 14, 0) & - & - & - & 100~dB & 1365 \\ | 882 | 882 | 2 & (15, 7, 17) & (51, 14, 0) & - & - & - & 100~dB & 1365 \\ | |
3 & (3, 3, 15) & (27, 9, 0) & (27, 9, 0) & - & - & 100~dB & 1002 \\ | 883 | 883 | 3 & (3, 3, 15) & (27, 9, 0) & (27, 9, 0) & - & - & 100~dB & 1002 \\ | |
4 & (3, 3, 15) & (31, 9, 0) & (19, 7, 0) & (3, 3, 0) & - & 101~dB & 909 \\ | 884 | 884 | 4 & (3, 3, 15) & (31, 9, 0) & (19, 7, 0) & (3, 3, 0) & - & 101~dB & 909 \\ | |
5 & (3, 3, 15) & (23, 8, 1) & (19, 7, 0) & (3, 3, 0) & (3, 3, 0) & 101~dB & 810 \\ | 885 | 885 | 5 & (3, 3, 15) & (23, 8, 1) & (19, 7, 0) & (3, 3, 0) & (3, 3, 0) & 101~dB & 810 \\ | |
\hline | 886 | 886 | \hline | |
\end{tabular} | 887 | 887 | \end{tabular} | |
} | 888 | 888 | } | |
\end{table} | 889 | 889 | \end{table} | |
\renewcommand{\arraystretch}{1} | 890 | 890 | \renewcommand{\arraystretch}{1} | |
891 | 891 | |||
From these tables, we can first state that almost all configurations reach the targeted rejection | 892 | 892 | From these tables, we can first state that almost all configurations reach the targeted rejection | |
level or even better thanks to our underestimate of the cascade rejection as the sum of the | 893 | 893 | level or even better thanks to our underestimate of the cascade rejection as the sum of the | |
individual filter rejection. The only exception is for the monolithic case ($n = 1$) in | 894 | 894 | individual filter rejection. The only exception is for the monolithic case ($n = 1$) in | |
MIN/100: no solution is found for a single monolithic filter reach a 100~dB rejection. | 895 | 895 | MIN/100: no solution is found for a single monolithic filter reach a 100~dB rejection. | |
Futhermore, the area of the monolithic filter is twice as big as the two cascaded filters | 896 | 896 | Futhermore, the area of the monolithic filter is twice as big as the two cascaded filters | |
(1131 and 1760 arbitrary units v.s 547 and 903 arbitrary units for 60 and 80~dB rejection | 897 | 897 | (1131 and 1760 arbitrary units v.s 547 and 903 arbitrary units for 60 and 80~dB rejection | |
respectively). More generally, the more filters are cascaded, the lower the occupied area. | 898 | 898 | respectively). More generally, the more filters are cascaded, the lower the occupied area. | |
899 | 899 | |||
Like in previous section, the solver chooses always a little filter as first | 900 | 900 | Like in previous section, the solver chooses always a little filter as first | |
filter stage and the second one is often the biggest filter. This choice can be explained | 901 | 901 | filter stage and the second one is often the biggest filter. This choice can be explained | |
as in the previous section, with the solver using just enough bits not to degrade the input | 902 | 902 | as in the previous section, with the solver using just enough bits not to degrade the input | |
signal and in the second filter selecting a better filter to improve rejection without | 903 | 903 | signal and in the second filter selecting a better filter to improve rejection without | |
having too many bits in the output data. | 904 | 904 | having too many bits in the output data. | |
905 | 905 | |||
For the specific case of MIN/40 for $n = 5$ the solver has determined that the optimal | 906 | 906 | For the specific case of MIN/40 for $n = 5$ the solver has determined that the optimal | |
number of filters is 4 so it did not chose any configuration for the last filter. Hence this | 907 | 907 | number of filters is 4 so it did not chose any configuration for the last filter. Hence this | |
solution is equivalent to the result for $n = 4$. | 908 | 908 | solution is equivalent to the result for $n = 4$. | |
909 | 909 | |||
The following graphs present the rejection for real data on the FPGA. In all the following | 910 | 910 | The following graphs present the rejection for real data on the FPGA. In all the following | |
figures, the solid line represents the actual rejection of the filtered | 911 | 911 | figures, the solid line represents the actual rejection of the filtered | |
data on the FPGA as measured experimentally and the dashed line is the noise level | 912 | 912 | data on the FPGA as measured experimentally and the dashed line is the noise level | |
given by the quadratic solver. | 913 | 913 | given by the quadratic solver. | |
914 | 914 | |||
Figure~\ref{fig:min_40} shows the rejection of the different configurations in the case of MIN/40. | 915 | 915 | Figure~\ref{fig:min_40} shows the rejection of the different configurations in the case of MIN/40. | |
Figure~\ref{fig:min_60} shows the rejection of the different configurations in the case of MIN/60. | 916 | 916 | Figure~\ref{fig:min_60} shows the rejection of the different configurations in the case of MIN/60. | |
Figure~\ref{fig:min_80} shows the rejection of the different configurations in the case of MIN/80. | 917 | 917 | Figure~\ref{fig:min_80} shows the rejection of the different configurations in the case of MIN/80. | |
Figure~\ref{fig:min_100} shows the rejection of the different configurations in the case of MIN/100. | 918 | 918 | Figure~\ref{fig:min_100} shows the rejection of the different configurations in the case of MIN/100. | |
919 | 919 | |||
% \begin{figure} | 920 | 920 | % \begin{figure} | |
% \centering | 921 | 921 | % \centering | |
% \includegraphics[width=\linewidth]{images/min_40} | 922 | 922 | % \includegraphics[width=\linewidth]{images/min_40} | |
% \caption{Signal spectrum for MIN/40} | 923 | 923 | % \caption{Signal spectrum for MIN/40} | |
% \label{fig:min_40} | 924 | 924 | % \label{fig:min_40} | |
% \end{figure} | 925 | 925 | % \end{figure} | |
% | 926 | 926 | % | |
% \begin{figure} | 927 | 927 | % \begin{figure} | |
% \centering | 928 | 928 | % \centering | |
% \includegraphics[width=\linewidth]{images/min_60} | 929 | 929 | % \includegraphics[width=\linewidth]{images/min_60} | |
% \caption{Signal spectrum for MIN/60} | 930 | 930 | % \caption{Signal spectrum for MIN/60} | |
% \label{fig:min_60} | 931 | 931 | % \label{fig:min_60} | |
% \end{figure} | 932 | 932 | % \end{figure} | |
% | 933 | 933 | % | |
% \begin{figure} | 934 | 934 | % \begin{figure} | |
% \centering | 935 | 935 | % \centering | |
% \includegraphics[width=\linewidth]{images/min_80} | 936 | 936 | % \includegraphics[width=\linewidth]{images/min_80} | |
% \caption{Signal spectrum for MIN/80} | 937 | 937 | % \caption{Signal spectrum for MIN/80} | |
% \label{fig:min_80} | 938 | 938 | % \label{fig:min_80} | |
% \end{figure} | 939 | 939 | % \end{figure} | |
% | 940 | 940 | % | |
% \begin{figure} | 941 | 941 | % \begin{figure} | |
% \centering | 942 | 942 | % \centering | |
% \includegraphics[width=\linewidth]{images/min_100} | 943 | 943 | % \includegraphics[width=\linewidth]{images/min_100} | |
% \caption{Signal spectrum for MIN/100} | 944 | 944 | % \caption{Signal spectrum for MIN/100} | |
% \label{fig:min_100} | 945 | 945 | % \label{fig:min_100} | |
% \end{figure} | 946 | 946 | % \end{figure} | |
947 | 947 | |||
% r2.14 et r2.15 et r2.16 | 948 | 948 | % r2.14 et r2.15 et r2.16 | |
\begin{figure} | 949 | 949 | \begin{figure} | |
\centering | 950 | 950 | \centering | |
\begin{subfigure}{\linewidth} | 951 | 951 | \begin{subfigure}{\linewidth} | |
\includegraphics[width=\linewidth]{images/min_40} | 952 | 952 | \includegraphics[width=\linewidth]{images/min_40} | |
\caption{Signal spectrum for MIN/40} | 953 | 953 | \caption{Signal spectrum for MIN/40} | |
\label{fig:min_40} | 954 | 954 | \label{fig:min_40} | |
\end{subfigure} | 955 | 955 | \end{subfigure} | |
956 | 956 | |||
\begin{subfigure}{\linewidth} | 957 | 957 | \begin{subfigure}{\linewidth} | |
\includegraphics[width=\linewidth]{images/min_60} | 958 | 958 | \includegraphics[width=\linewidth]{images/min_60} | |
\caption{Signal spectrum for MIN/60} | 959 | 959 | \caption{Signal spectrum for MIN/60} | |
\label{fig:min_60} | 960 | 960 | \label{fig:min_60} | |
\end{subfigure} | 961 | 961 | \end{subfigure} | |
962 | 962 | |||
\begin{subfigure}{\linewidth} | 963 | 963 | \begin{subfigure}{\linewidth} | |
\includegraphics[width=\linewidth]{images/min_80} | 964 | 964 | \includegraphics[width=\linewidth]{images/min_80} | |
\caption{Signal spectrum for MIN/80} | 965 | 965 | \caption{Signal spectrum for MIN/80} | |
\label{fig:min_80} | 966 | 966 | \label{fig:min_80} | |
\end{subfigure} | 967 | 967 | \end{subfigure} | |
968 | 968 | |||
\begin{subfigure}{\linewidth} | 969 | 969 | \begin{subfigure}{\linewidth} | |
\includegraphics[width=\linewidth]{images/min_100} | 970 | 970 | \includegraphics[width=\linewidth]{images/min_100} | |
\caption{Signal spectrum for MIN/100} | 971 | 971 | \caption{Signal spectrum for MIN/100} | |
\label{fig:min_100} | 972 | 972 | \label{fig:min_100} | |
\end{subfigure} | 973 | 973 | \end{subfigure} | |
\caption{Signal spectrum of each experimental configurations MIN/40, MIN/60, MIN/80 and MIN/100} | 974 | 974 | \caption{Signal spectrum of each experimental configurations MIN/40, MIN/60, MIN/80 and MIN/100} | |
\end{figure} | 975 | 975 | \end{figure} | |
976 | 976 | |||
We observe that all rejections given by the quadratic solver are close to the experimentally | 977 | 977 | We observe that all rejections given by the quadratic solver are close to the experimentally | |
measured rejection. All curves prove that the constraint to reach the target rejection is | 978 | 978 | measured rejection. All curves prove that the constraint to reach the target rejection is | |
respected with both monolithic (except in MIN/100 which has no monolithic solution) or cascaded filters. | 979 | 979 | respected with both monolithic (except in MIN/100 which has no monolithic solution) or cascaded filters. | |
980 | 980 | |||
Table~\ref{tbl:resources_usage} shows the resource usage in the case of MIN/40, MIN/60; | 981 | 981 | Table~\ref{tbl:resources_usage} shows the resource usage in the case of MIN/40, MIN/60; | |
MIN/80 and MIN/100 \emph{i.e.} when the target rejection is fixed to 40, 60, 80 and 100~dB. We | 982 | 982 | MIN/80 and MIN/100 \emph{i.e.} when the target rejection is fixed to 40, 60, 80 and 100~dB. We | |
have taken care to extract solely the resources used by | 983 | 983 | have taken care to extract solely the resources used by | |
the FIR filters and remove additional processing blocks including FIFO and PL to | 984 | 984 | the FIR filters and remove additional processing blocks including FIFO and PL to | |
PS communication. | 985 | 985 | PS communication. | |
986 | 986 | |||
\renewcommand{\arraystretch}{1.2} | 987 | 987 | \renewcommand{\arraystretch}{1.2} | |
\begin{table} | 988 | 988 | \begin{table} | |
\caption{Resource occupation. The last column refers to available resources on a Zynq-7010 as found on the Redpitaya.} | 989 | 989 | \caption{Resource occupation. The last column refers to available resources on a Zynq-7010 as found on the Redpitaya.} | |
\label{tbl:resources_usage_comp} | 990 | 990 | \label{tbl:resources_usage_comp} | |
\centering | 991 | 991 | \centering | |
{\scalefont{0.90} | 992 | 992 | {\scalefont{0.90} |
ifcs2018_journal_reponse.tex
%Minor Revision - TUFFC-09469-2019 | 1 | 1 | %Minor Revision - TUFFC-09469-2019 | |
%Transactions on Ultrasonics, Ferroelectrics, and Frequency | 2 | 2 | %Transactions on Ultrasonics, Ferroelectrics, and Frequency | |
%Control (July 23, 2019 9:29 PM) | 3 | 3 | %Control (July 23, 2019 9:29 PM) | |
%To: arthur.hugeat@femto-st.fr, julien.bernard@femto-st.fr, | 4 | 4 | %To: arthur.hugeat@femto-st.fr, julien.bernard@femto-st.fr, | |
%gwenhael.goavec@femto-st.fr, pyb2@femto-st.fr, pierre-yves.bourgeois@femto-st.fr, | 5 | 5 | %gwenhael.goavec@femto-st.fr, pyb2@femto-st.fr, pierre-yves.bourgeois@femto-st.fr, | |
%jmfriedt@femto-st.fr | 6 | 6 | %jmfriedt@femto-st.fr | |
%CC: giorgio.santarelli@institutoptique.fr, lewin@ece.drexel.edu | 7 | 7 | %CC: giorgio.santarelli@institutoptique.fr, lewin@ece.drexel.edu | |
% | 8 | 8 | % | |
%Dear Mr. Arthur HUGEAT | 9 | 9 | %Dear Mr. Arthur HUGEAT | |
% | 10 | 10 | % | |
%Congratulations! Your manuscript | 11 | 11 | %Congratulations! Your manuscript | |
% | 12 | 12 | % | |
%MANUSCRIPT NO. TUFFC-09469-2019 | 13 | 13 | %MANUSCRIPT NO. TUFFC-09469-2019 | |
%MANUSCRIPT TYPE: Papers | 14 | 14 | %MANUSCRIPT TYPE: Papers | |
%TITLE: Filter optimization for real time digital processing of radiofrequency | 15 | 15 | %TITLE: Filter optimization for real time digital processing of radiofrequency | |
%signals: application to oscillator metrology | 16 | 16 | %signals: application to oscillator metrology | |
%AUTHOR(S): HUGEAT, Arthur; BERNARD, Julien; Goavec-Mérou, Gwenhaël; Bourgeois, | 17 | 17 | %AUTHOR(S): HUGEAT, Arthur; BERNARD, Julien; Goavec-Mérou, Gwenhaël; Bourgeois, | |
%Pierre-Yves; Friedt, Jean-Michel | 18 | 18 | %Pierre-Yves; Friedt, Jean-Michel | |
% | 19 | 19 | % | |
%has been reviewed and it has been suggested that it be accepted for publication | 20 | 20 | %has been reviewed and it has been suggested that it be accepted for publication | |
%after minor revisions. In your revision, you must respond to the reviewer’s | 21 | 21 | %after minor revisions. In your revision, you must respond to the reviewer’s | |
%comments at the end of this e-mail or attached. | 22 | 22 | %comments at the end of this e-mail or attached. | |
% | 23 | 23 | % | |
%Your revised manuscript must be submitted within the next THREE WEEKS. If you | 24 | 24 | %Your revised manuscript must be submitted within the next THREE WEEKS. If you | |
%are not able to submit your manuscript in this time frame, you must contact the | 25 | 25 | %are not able to submit your manuscript in this time frame, you must contact the | |
%Editor in Chief (Peter Lewin, lewinpa@drexel.edu). | 26 | 26 | %Editor in Chief (Peter Lewin, lewinpa@drexel.edu). | |
% | 27 | 27 | % | |
%Please resubmit your revised manuscript to the Transactions on Ultrasonics, | 28 | 28 | %Please resubmit your revised manuscript to the Transactions on Ultrasonics, | |
%Ferroelectrics, and Frequency Control Manuscript Central website at | 29 | 29 | %Ferroelectrics, and Frequency Control Manuscript Central website at | |
%http://mc.manuscriptcentral.com/tuffc-ieee. From the “Author Center” select | 30 | 30 | %http://mc.manuscriptcentral.com/tuffc-ieee. From the “Author Center” select | |
%“Manuscripts with Decisions” and under the appropriate manuscript ID select | 31 | 31 | %“Manuscripts with Decisions” and under the appropriate manuscript ID select | |
%“create a revision”. | 32 | 32 | %“create a revision”. | |
% | 33 | 33 | % | |
%To expedite the review of your resubmission: | 34 | 34 | %To expedite the review of your resubmission: | |
% | 35 | 35 | % | |
%(1) Include or attach a point by point response to reviewer’s comments and | 36 | 36 | %(1) Include or attach a point by point response to reviewer’s comments and | |
%detail all changes made in your manuscript under “Response to Decision Letter”. | 37 | 37 | %detail all changes made in your manuscript under “Response to Decision Letter”. | |
%Failure to address reviewers comments can still lead to a rejection of your | 38 | 38 | %Failure to address reviewers comments can still lead to a rejection of your | |
%manuscript. | 39 | 39 | %manuscript. | |
%(2) Submit a PDF of the revised manuscript using the “Formatted (Double Column) | 40 | 40 | %(2) Submit a PDF of the revised manuscript using the “Formatted (Double Column) | |
%Main File - PDF Document Only” file type with all changes highlighted in yellow | 41 | 41 | %Main File - PDF Document Only” file type with all changes highlighted in yellow | |
%under “File Upload”. | 42 | 42 | %under “File Upload”. | |
%(3) Original TeX, LaTeX, or Microsoft Word file of the final manuscript as | 43 | 43 | %(3) Original TeX, LaTeX, or Microsoft Word file of the final manuscript as | |
%Supporting Document. | 44 | 44 | %Supporting Document. | |
%(4) High quality source files of your figures in Word, Tiff, Postscript, | 45 | 45 | %(4) High quality source files of your figures in Word, Tiff, Postscript, | |
%EPS, Excel or Power Point (if figures are not already embedded in your source | 46 | 46 | %EPS, Excel or Power Point (if figures are not already embedded in your source | |
%file above) as Supporting Document. | 47 | 47 | %file above) as Supporting Document. | |
%(5) Author photos and biographies (papers only) as Supporting Document. | 48 | 48 | %(5) Author photos and biographies (papers only) as Supporting Document. | |
%(6) Graphical Abstract to accompany your text abstract on IEEE Xplore (image, | 49 | 49 | %(6) Graphical Abstract to accompany your text abstract on IEEE Xplore (image, | |
%animation, movie, or audio clip) uploaded as Multimedia. | 50 | 50 | %animation, movie, or audio clip) uploaded as Multimedia. | |
% | 51 | 51 | % | |
%*Please make sure that all final files have unique file names in order for | 52 | 52 | %*Please make sure that all final files have unique file names in order for | |
%them to be processed correctly by IEEE* | 53 | 53 | %them to be processed correctly by IEEE* | |
%Please note that a PDF is NOT sufficient for publication, the PDF is used | 54 | 54 | %Please note that a PDF is NOT sufficient for publication, the PDF is used | |
%for review. | 55 | 55 | %for review. | |
% | 56 | 56 | % | |
%During the resubmission process if you do not see a confirmation screen and | 57 | 57 | %During the resubmission process if you do not see a confirmation screen and | |
%receive a confirmation e-mail, your revised manuscript was not transmitted | 58 | 58 | %receive a confirmation e-mail, your revised manuscript was not transmitted | |
%to us and we will not be able to continue to process your manuscript. | 59 | 59 | %to us and we will not be able to continue to process your manuscript. | |
% | 60 | 60 | % | |
%Please refer to the policies regarding the voluntary page charges and | 61 | 61 | %Please refer to the policies regarding the voluntary page charges and | |
%mandatory page charges in the "Guideline for Authors" at | 62 | 62 | %mandatory page charges in the "Guideline for Authors" at | |
%http://ieee-uffc.org/publications/transactions-on-uffc/information-for-authors | 63 | 63 | %http://ieee-uffc.org/publications/transactions-on-uffc/information-for-authors | |
%Note over-length charge of US$175 per page is applied for published pages in | 64 | 64 | %Note over-length charge of US$175 per page is applied for published pages in | |
%excess of 8 pages. | 65 | 65 | %excess of 8 pages. | |
% | 66 | 66 | % | |
%Sincerely, | 67 | 67 | %Sincerely, | |
% | 68 | 68 | % | |
%Giorgio Santarelli | 69 | 69 | %Giorgio Santarelli | |
%Associate Editor in Chief | 70 | 70 | %Associate Editor in Chief | |
%Transactions on Ultrasonics, Ferroelectrics, and Frequency Control | 71 | 71 | %Transactions on Ultrasonics, Ferroelectrics, and Frequency Control | |
% | 72 | 72 | % | |
%**************************************************** | 73 | 73 | %**************************************************** | |
%REVIEWERS' COMMENTS: | 74 | 74 | %REVIEWERS' COMMENTS: | |
75 | 75 | |||
\documentclass[a4paper]{article} | 76 | 76 | \documentclass[a4paper]{article} | |
\usepackage{fullpage,graphicx,amsmath} | 77 | 77 | \usepackage{fullpage,graphicx,amsmath} | |
\begin{document} | 78 | 78 | \begin{document} | |
{\bf Reviewer: 1} | 79 | 79 | {\bf Reviewer: 1} | |
80 | 80 | |||
%Comments to the Author | 81 | 81 | %Comments to the Author | |
%In general, the language/grammar is adequate. | 82 | 82 | %In general, the language/grammar is adequate. | |
83 | 83 | |||
{\bf | 84 | 84 | {\bf | |
On page 2, "...allowing to save processing resource..." could be improved. % r1.1 | 85 | 85 | On page 2, "...allowing to save processing resource..." could be improved. % r1.1 | |
} | 86 | 86 | } | |
87 | 87 | |||
The sentence was split and now reads ``number of coefficients irrelevant: processing | 88 | 88 | The sentence was split and now reads ``number of coefficients irrelevant: processing | |
resources are hence saved by shrinking the filter length.'' | 89 | 89 | resources are hence saved by shrinking the filter length.'' | |
90 | 90 | |||
{\bf | 91 | 91 | {\bf | |
On page 2, "... or thanks at a radiofrequency-grade..." isn't at all clear what % r1.2 | 92 | 92 | On page 2, "... or thanks at a radiofrequency-grade..." isn't at all clear what % r1.2 | |
the author meant.} | 93 | 93 | the author meant.} | |
94 | 94 | |||
Grammatical error: this sentence now reads ``or by sampling a wideband (125~MS/s) | 95 | 95 | Grammatical error: this sentence now reads ``or by sampling a wideband (125~MS/s) | |
Analog to Digital Converter (ADC) loaded by a 50~$\Omega$ resistor.'' | 96 | 96 | Analog to Digital Converter (ADC) loaded by a 50~$\Omega$ resistor.'' | |
97 | 97 | |||
{\bf | 98 | 98 | {\bf | |
On page 2, the whole paragraph "The first step of our approach is to model..." % r1.3 | 99 | 99 | On page 2, the whole paragraph "The first step of our approach is to model..." % r1.3 | |
could be improved. | 100 | 100 | could be improved. | |
} | 101 | 101 | } | |
102 | 102 | |||
Indeed this paragraph has be written again and now reads as\\ | 103 | 103 | Indeed this paragraph has be written again and now reads as\\ | |
``The first step of our approach is to model the DSP chain. Since we aim at only optimizing | 104 | 104 | ``The first step of our approach is to model the DSP chain. Since we aim at only optimizing | |
the filtering part of the signal processing chain, we have not included the PRN generator or the | 105 | 105 | the filtering part of the signal processing chain, we have not included the PRN generator or the | |
ADC in the model: the input data size and rate are considered fixed and defined by the hardware. | 106 | 106 | ADC in the model: the input data size and rate are considered fixed and defined by the hardware. | |
The filtering can be done in two ways, either by considering a single monolithic FIR filter | 107 | 107 | The filtering can be done in two ways, either by considering a single monolithic FIR filter | |
requiring many coefficients to reach the targeted noise rejection ratio, or by | 108 | 108 | requiring many coefficients to reach the targeted noise rejection ratio, or by | |
cascading multiple FIR filters, each with fewer coefficients than found in the monolithic filter. | 109 | 109 | cascading multiple FIR filters, each with fewer coefficients than found in the monolithic filter. | |
'' | 110 | 110 | '' | |
111 | 111 | |||
{\bf | 112 | 112 | {\bf | |
I appreciate that the authors attempted and document two optimizations: that % r1.4 - en attente des résultats | 113 | 113 | I appreciate that the authors attempted and document two optimizations: that % r1.4 - fait | |
of maximum rejection ratio at fixed silicon area, as well as minimum silicon | 114 | 114 | of maximum rejection ratio at fixed silicon area, as well as minimum silicon | |
area for a fixed minimum rejection ratio. For non-experts, it might be very | 115 | 115 | area for a fixed minimum rejection ratio. For non-experts, it might be very | |
useful to compare the results of both optimization paths to the performance and | 116 | 116 | useful to compare the results of both optimization paths to the performance and | |
resource-utilization of generic low-pass filter gateware offered by device | 117 | 117 | resource-utilization of generic low-pass filter gateware offered by device | |
manufacturers. I appreciate also that the authors have presented source code | 118 | 118 | manufacturers. I appreciate also that the authors have presented source code | |
for examination online. | 119 | 119 | for examination online. | |
} | 120 | 120 | } | |
121 | 121 | |||
TODO : FIR Compiler et regarder les ressources pour un FIR comparable a ceux monolithiques | 122 | 122 | To compare the performance of our FIR filters and the performance of device | |
fournis dans l'article (memes coefs et meme nombre de coefs) | 123 | 123 | manufacturers generic filter, we have added a paragraph and a table at the | |
124 | end of experiments section. We compare the resources consumption with the same | |||
125 | FIR coefficients set. | |||
124 | 126 | |||
{\bf | 125 | 127 | {\bf | |
Reviewer: 2 | 126 | 128 | Reviewer: 2 | |
} | 127 | 129 | } | |
128 | 130 | |||
%Comments to the Author | 129 | 131 | %Comments to the Author | |
%In the Manuscript, the Authors describe an optimization methodology for filter | 130 | 132 | %In the Manuscript, the Authors describe an optimization methodology for filter | |
%design to be used in phase noise metrology. The methodology is general and can | 131 | 133 | %design to be used in phase noise metrology. The methodology is general and can | |
%be used for many aspects of the processing chain. In the Manuscript, the Authors | 132 | 134 | %be used for many aspects of the processing chain. In the Manuscript, the Authors | |
%focus on filtering and shifting while the other aspects, in particular decimation, | 133 | 135 | %focus on filtering and shifting while the other aspects, in particular decimation, | |
%will be considered in a future work. The optimization problem is modelled | 134 | 136 | %will be considered in a future work. The optimization problem is modelled | |
%theoretically and then solved by means of a commercial software. The solutions | 135 | 137 | %theoretically and then solved by means of a commercial software. The solutions | |
%are tested experimentally on the Redpitaya platform with synthetic and real | 136 | 138 | %are tested experimentally on the Redpitaya platform with synthetic and real | |
%white noises. Two cases are considered as a function of the number of filters: | 137 | 139 | %white noises. Two cases are considered as a function of the number of filters: | |
%maximum rejection given a fixed amount of resources and minimum resource | 138 | 140 | %maximum rejection given a fixed amount of resources and minimum resource | |
%utilization given a fixed amount of rejection. | 139 | 141 | %utilization given a fixed amount of rejection. | |
%The Authors find that filtering improves significantly when the number of | 140 | 142 | %The Authors find that filtering improves significantly when the number of | |
%filters increases. | 141 | 143 | %filters increases. | |
%A lot of work has been done in generalizing and automating the procedure so | 142 | 144 | %A lot of work has been done in generalizing and automating the procedure so | |
%that different approaches can be investigated quickly and efficiently. The | 143 | 145 | %that different approaches can be investigated quickly and efficiently. The | |
%results presented in the Manuscript seem to be just a case study based on | 144 | 146 | %results presented in the Manuscript seem to be just a case study based on | |
%the particular criterion chosen by the Authors. Different criteria, in | 145 | 147 | %the particular criterion chosen by the Authors. Different criteria, in | |
%general, could lead to different results and it is important to consider | 146 | 148 | %general, could lead to different results and it is important to consider | |
%carefully the criterion adopted by the Authors, in order to check if it | 147 | 149 | %carefully the criterion adopted by the Authors, in order to check if it | |
%is adequate to compare the performance of filters and if multi-stage | 148 | 150 | %is adequate to compare the performance of filters and if multi-stage | |
%filters are really superior than monolithic filters. | 149 | 151 | %filters are really superior than monolithic filters. | |
150 | 152 | |||
{\bf | 151 | 153 | {\bf | |
By observing the results presented in fig. 10-16, it is clear that the % r2.1 - fait | 152 | 154 | By observing the results presented in fig. 10-16, it is clear that the % r2.1 - fait | |
performances of multi-stage filters are obtained at the expense of their | 153 | 155 | performances of multi-stage filters are obtained at the expense of their | |
selectivity and, in this sense, the filters presented in these figures | 154 | 156 | selectivity and, in this sense, the filters presented in these figures | |
are not equivalent. For example, in Fig. 14, at the limit of the pass band, | 155 | 157 | are not equivalent. For example, in Fig. 14, at the limit of the pass band, | |
the attenuation is almost 15 dB for n = 5, while it is not noticeable for | 156 | 158 | the attenuation is almost 15 dB for n = 5, while it is not noticeable for | |
n = 1. | 157 | 159 | n = 1. | |
} | 158 | 160 | } | |
159 | 161 | |||
We have added on Figs 10--16 (now Fig 9(a)--(c)) the templates used to defined | 160 | 162 | We have added on Figs 10--16 (now Fig 9(a)--(c)) the templates used to defined | |
the bandpass and the bandstop of the filter. | 161 | 163 | the bandpass and the bandstop of the filter. | |
162 | 164 | |||
%Peut etre refaire une serie de simulation dans lesquelles on impose une coupure | 163 | 165 | We are aware of this non equivalence but we think that difference is not due to | |
%non pas entre 40 et 60\% mais entre 50 et 60\% pour demontrer que l'outil s'adapte | 164 | 166 | the cascaded filters but due to the definition of rejection criterion on the passband. | |
%au critere qu'on lui impose, et que la coupure moins raide n'est pas intrinseque | 165 | 167 | Indeed, in this article we have choose to take the summation of absolute values divide | |
%a la cascade de filtres. | 166 | 168 | by the bandwidth but this criterion is maybe too permissive and when we cascade | |
%AH: Je finis les corrections, je poste l'article revu et pendant ce temps j'essaie de | 167 | 169 | some filters this impact is more important. | |
%relancer des expérimentations. Si j'arrive à les finir à temps, je les intégrerai | 168 | |||
169 | 170 | |||
JMF : il n'a pas tord, la coupure est bcp moins franche a 5 filtres qu'a 1. Ca se voyait | 170 | 171 | However if we change the passband | |
moins avant de moyenner les fonctions de transfert, mais il y a bien une 15aine de dB | 171 | 172 | criterion by the summation of absolute value in passband, weighting given to the | |
quand on cascade 5 filtres ! | 172 | 173 | passband ripples are too strong and the solver are too restricted to provide | |
174 | any interesting solution but the ripples in passband will be minimal. And if we take the maximum absolute value in | |||
175 | passband, the rejection evaluation are too close form the original criterion and | |||
176 | the result will not be improved. | |||
173 | 177 | |||
178 | In this article, we will highlight the methodology instead of the filter conception. | |||
179 | Even if our rejection criterion is not the best, our methodology was not impacted | |||
180 | by this. So to improve the results, we can choose another criterion to be more | |||
181 | selective in passband but it is not the main objective of our article. | |||
182 | ||||
183 | % %Peut etre refaire une serie de simulation dans lesquelles on impose une coupure | |||
184 | % %non pas entre 40 et 60\% mais entre 50 et 60\% pour demontrer que l'outil s'adapte | |||
185 | % %au critere qu'on lui impose, et que la coupure moins raide n'est pas intrinseque | |||
186 | % %a la cascade de filtres. | |||
187 | % %AH: Je finis les corrections, je poste l'article revu et pendant ce temps j'essaie de | |||
188 | % %relancer des expérimentations. Si j'arrive à les finir à temps, je les intégrerai | |||
189 | % | |||
190 | % densité spectrale de la bande passante | |||
191 | % sum des valeurs absolues / largeur de la bande passante (1/N) vs max dans la bande de coupure | |||
192 | % | |||
193 | % JMF : il n'a pas tord, la coupure est bcp moins franche a 5 filtres qu'a 1. Ca se voyait | |||
194 | % moins avant de moyenner les fonctions de transfert, mais il y a bien une 15aine de dB | |||
195 | % quand on cascade 5 filtres ! | |||
196 | % | |||
197 | % Dire que la chute n'est pas du à la casacade mais à notre critère de rejection | |||
198 | ||||
{\bf | 174 | 199 | {\bf | |
The reason is in the criterion that considers the average attenuation in % r2.2 - fait | 175 | 200 | The reason is in the criterion that considers the average attenuation in % r2.2 - fait | |
the pass band. This criterion does not take into account the maximum attenuation | 176 | 201 | the pass band. This criterion does not take into account the maximum attenuation | |
in this region, which is a very important parameter for specifying a filter | 177 | 202 | in this region, which is a very important parameter for specifying a filter | |
and for evaluating its performance. For example, with this criterion, a | 178 | 203 | and for evaluating its performance. For example, with this criterion, a | |
filter with 0.1 dB of ripple is considered equivalent to a filter with | 179 | 204 | filter with 0.1 dB of ripple is considered equivalent to a filter with | |
10 dB of ripple. This point has a strong impact in the optimization process | 180 | 205 | 10 dB of ripple. This point has a strong impact in the optimization process | |
and in the results that are obtained and has to be reconsidered. | 181 | 206 | and in the results that are obtained and has to be reconsidered. | |
} | 182 | 207 | } | |
183 | 208 | |||
The manuscript erroneously stated that we considered the mean of the absolute | 184 | 209 | See above: If we choose the maximum absolute value in passband, we penalize the | |
value within the bandpass: the manuscript has now been corrected to properly state | 185 | 210 | case with 10 dB of ripple. | |
the selected criterion, namely the {\em sum} of the absolute value, so that any | 186 | |||
ripple in the bandpass will reduce the chances of a given filter set from being | 187 | |||
selected. The manuscript now states ``Our criterion to compute the filter rejection considers | 188 | |||
% r2.8 et r2.2 r2.3 | 189 | |||
the maximum magnitude within the stopband, to which the {sum of the absolute values | 190 | |||
within the passband is subtracted to avoid filters with excessive ripples}.'' | 191 | |||
192 | 211 | |||
212 | % The manuscript erroneously stated that we considered the mean of the absolute | |||
213 | % value within the bandpass: the manuscript has now been corrected to properly state | |||
214 | % the selected criterion, namely the {\em sum} of the absolute value, so that any | |||
215 | % ripple in the bandpass will reduce the chances of a given filter set from being | |||
216 | % selected. The manuscript now states ``Our criterion to compute the filter rejection considers | |||
217 | % % r2.8 et r2.2 r2.3 | |||
218 | % the maximum magnitude within the stopband, to which the {sum of the absolute values | |||
219 | % within the passband is subtracted to avoid filters with excessive ripples}.'' | |||
220 | ||||
{\bf | 193 | 221 | {\bf | |
I strongly suggest to re-run the analysis with a criterion that takes also % r2.3 -fait | 194 | 222 | I strongly suggest to re-run the analysis with a criterion that takes also % r2.3 -fait | |
into account the maximum allowed attenuation in pass band, for example by | 195 | 223 | into account the maximum allowed attenuation in pass band, for example by | |
fixing its value to a typical one, as it has been done for the transition | 196 | 224 | fixing its value to a typical one, as it has been done for the transition | |
bandwidth. | 197 | 225 | bandwidth. | |
} | 198 | 226 | } | |
199 | 227 | |||
See above: the absolute value within the passband will reject filters with | 200 | 228 | See above: the absolute value within the passband will reject filters with | |
excessive ripples, including excessive attenuation, within the passband. | 201 | 229 | excessive ripples, including excessive attenuation, within the passband. | |
202 | 230 | |||
231 | % TODO: test max(stopband) - max(abs(passband)) | |||
232 | ||||
{\bf | 203 | 233 | {\bf | |
In addition, I suggest to address the following points: % r2.4 | 204 | 234 | In addition, I suggest to address the following points: % r2.4 | |
- Page 1, line 50: the Authors state that IIR have shorter impulse response | 205 | 235 | - Page 1, line 50: the Authors state that IIR have shorter impulse response | |
than FIR. This is not true in general. The sentence should be reconsidered. | 206 | 236 | than FIR. This is not true in general. The sentence should be reconsidered. | |
} | 207 | 237 | } | |
208 | 238 | |||
We have not stated that the IIR has a shorter impulse response but a shorter lag. | 209 | 239 | We have not stated that the IIR has a shorter impulse response but a shorter lag. | |
Indeed while a typical FIR filter will have 32 to 128~coefficients, few IIR filters | 210 | 240 | Indeed while a typical FIR filter will have 32 to 128~coefficients, few IIR filters | |
have more than 5~coefficients. Hence, while a FIR requires 128 inputs before providing | 211 | 241 | have more than 5~coefficients. Hence, while a FIR requires 128 inputs before providing | |
the first output, an IIR will start providing outputs only 5 time steps after the initial | 212 | 242 | the first output, an IIR will start providing outputs only 5 time steps after the initial | |
input starts feeding the IIR. Hence, the issue we address here is lag and not impulse | 213 | 243 | input starts feeding the IIR. Hence, the issue we address here is lag and not impulse | |
response. We aimed at making this sentence clearer by stating that ``Since latency is not an issue | 214 | 244 | response. We aimed at making this sentence clearer by stating that ``Since latency is not an issue | |
in a openloop phase noise characterization instrument, the large | 215 | 245 | in a openloop phase noise characterization instrument, the large | |
numbre of taps in the FIR, as opposed to the shorter Infinite Impulse Response (IIR) filter, | 216 | 246 | numbre of taps in the FIR, as opposed to the shorter Infinite Impulse Response (IIR) filter, | |
is not considered as an issue as would be in a closed loop system in which lag aims at being | 217 | 247 | is not considered as an issue as would be in a closed loop system in which lag aims at being | |
minimized to avoid oscillation conditions.'' | 218 | 248 | minimized to avoid oscillation conditions.'' | |
219 | 249 | |||
{\bf | 220 | 250 | {\bf | |
- Fig. 4: the Author should motivate in the text why it has been chosen % r2.5 | 221 | 251 | - Fig. 4: the Author should motivate in the text why it has been chosen % r2.5 | |
this transition bandwidth and if it is a typical requirement for phase-noise | 222 | 252 | this transition bandwidth and if it is a typical requirement for phase-noise | |
metrology. | 223 | 253 | metrology. | |
} | 224 | 254 | } | |
225 | 255 | |||
The purpose of the paper is to demonstrate how a given filter shape can be achieved by | 226 | 256 | The purpose of the paper is to demonstrate how a given filter shape can be achieved by | |
minimizing varous resource criteria. Indeed the stopband and bandpass boundaries can | 227 | 257 | minimizing varous resource criteria. Indeed the stopband and bandpass boundaries can | |
be questioned: we have selected this filter shape as a typical anti-aliasing filter considering | 228 | 258 | be questioned: we have selected this filter shape as a typical anti-aliasing filter considering | |
the the dataflow is to be halved. Hence, selecting a cutoff frequency of 40\% the initial | 229 | 259 | the the dataflow is to be halved. Hence, selecting a cutoff frequency of 40\% the initial | |
Nyquist frequency prevents noise from reaching baseband after decimating the dataflow by a | 230 | 260 | Nyquist frequency prevents noise from reaching baseband after decimating the dataflow by a | |
factor of 2. Such ideas are now stated explicitly in the text as ``Throughout this demonstration, | 231 | 261 | factor of 2. Such ideas are now stated explicitly in the text as ``Throughout this demonstration, | |
we arbitrarily set a bandpass of 40\% of the Nyquist frequency and a bandstop from 60\% | 232 | 262 | we arbitrarily set a bandpass of 40\% of the Nyquist frequency and a bandstop from 60\% | |
of the Nyquist frequency to the end of the band, as would be typically selected to prevent | 233 | 263 | of the Nyquist frequency to the end of the band, as would be typically selected to prevent | |
aliasing before decimating the dataflow by 2. The method is however generalized to any filter | 234 | 264 | aliasing before decimating the dataflow by 2. The method is however generalized to any filter | |
shape as long as it is defined from the initial modelling steps: Fig. \ref{fig:rejection_pyramid} | 235 | 265 | shape as long as it is defined from the initial modelling steps: Fig. \ref{fig:rejection_pyramid} | |
as described below is indeed unique for each filter shape.'' | 236 | 266 | as described below is indeed unique for each filter shape.'' | |
237 | 267 | |||
{\bf | 238 | 268 | {\bf | |
- The impact of the coefficient resolution is discussed. What about the % r2.6 - fait | 239 | 269 | - The impact of the coefficient resolution is discussed. What about the % r2.6 - fait | |
resolution of the data stream? Is it fixed? If so, which value has been | 240 | 270 | resolution of the data stream? Is it fixed? If so, which value has been | |
used in the analysis? If not, how is it changed with respect to the | 241 | 271 | used in the analysis? If not, how is it changed with respect to the | |
coefficient resolution? | 242 | 272 | coefficient resolution? | |
} | 243 | 273 | } | |
244 | 274 | |||
We have now stated in the beginning of the document that ``we have not included the PRN generator | 245 | 275 | We have now stated in the beginning of the document that ``we have not included the PRN generator | |
or the ADC in the model: the input data size and rate are considered fixed and defined by the | 246 | 276 | or the ADC in the model: the input data size and rate are considered fixed and defined by the | |
hardware.'' so indeed the input datastream resolution is considered as a given. | 247 | 277 | hardware.'' so indeed the input datastream resolution is considered as a given. | |
248 | 278 | |||
{\bf | 249 | 279 | {\bf | |
- Page 3, line 47: the initial criterion can be omitted and, consequently, % r2.7 - fait | 250 | 280 | - Page 3, line 47: the initial criterion can be omitted and, consequently, % r2.7 - fait | |
Fig. 5 can be removed. | 251 | 281 | Fig. 5 can be removed. | |
- Page 3, line 55: ``maximum rejection'' is not compatible with fig. 4. % r2.8 - fait | 252 | 282 | - Page 3, line 55: ``maximum rejection'' is not compatible with fig. 4. % r2.8 - fait | |
It should be ``minimum'' | 253 | 283 | It should be ``minimum'' | |
} | 254 | 284 | } | |
AH: Je ne suis pas d'accord, le critère n'est pas le min de la rejection mais le max | 255 | 285 | AH: Je ne suis pas d'accord, le critère n'est pas le min de la rejection mais le max | |
de la magnitude. J'ai corrigé en ce sens. | 256 | 286 | de la magnitude. J'ai corrigé en ce sens. | |
257 | 287 | |||
288 | Juste mettre une phrase pour dire que la mean ne donnait pas de bons résultats | |||
289 | ||||
{\bf | 258 | 290 | {\bf | |
- Page e, line 55, second column: ``takin'' % r2.9 - fait | 259 | 291 | - Page e, line 55, second column: ``takin'' % r2.9 - fait | |
- Page 3, line 58: ``pessimistic'' should be replaced with ``conservative'' % r2.10 - fait | 260 | 292 | - Page 3, line 58: ``pessimistic'' should be replaced with ``conservative'' % r2.10 - fait | |
- Page 4, line 17: ``meaning'' $\rightarrow$ ``this means'' % r2.11 - fait | 261 | 293 | - Page 4, line 17: ``meaning'' $\rightarrow$ ``this means'' % r2.11 - fait | |
} | 262 | 294 | } | |
263 | 295 | |||
All typos and grammatical errors have been corrected. | 264 | 296 | All typos and grammatical errors have been corrected. | |
265 | 297 | |||
{\bf | 266 | 298 | {\bf | |
- Page 4, line 10: how $p$ is chosen? Which is the criterion used to choose % r2.12 - fait | 267 | 299 | - Page 4, line 10: how $p$ is chosen? Which is the criterion used to choose % r2.12 - fait | |
these particular configurations? Are they chosen automatically? | 268 | 300 | these particular configurations? Are they chosen automatically? | |
} | 269 | 301 | } | |
302 | C'est le nombre de coefficients et un taille raisonnable | |||
303 | Troncature de la pyramide | |||
304 | ||||
See below: we have added a better description of $p$ during the transformation explanation. | 270 | 305 | See below: we have added a better description of $p$ during the transformation explanation. | |
``we introduce $p$ FIR configurations. | 271 | 306 | ``we introduce $p$ FIR configurations. | |
This variable must be defined by the user, it represent the number of different | 272 | 307 | This variable must be defined by the user, it represent the number of different | |
set of coefficients generated (for memory, we use \texttt{firls} and \texttt{fir1} | 273 | 308 | set of coefficients generated (for memory, we use \texttt{firls} and \texttt{fir1} | |
functions from GNU Octave)'' | 274 | 309 | functions from GNU Octave)'' | |
275 | 310 | |||
{\bf | 276 | 311 | {\bf | |
- Page 4, line 31: how does the delta function transform model from non-linear % r2.13 - fait | 277 | 312 | - Page 4, line 31: how does the delta function transform model from non-linear % r2.13 - fait | |
and non-quadratic to a quadratic?} | 278 | 313 | and non-quadratic to a quadratic?} | |
279 | 314 | |||
The first model is non-quadratic but when we introduce the $p$ configurations, | 280 | 315 | The first model is non-quadratic but when we introduce the $p$ configurations, | |
we can estimate the function $F$ by computing | 281 | 316 | we can estimate the function $F$ by computing | |
the rejection for each configuration, so the model become quadratic because we have | 282 | 317 | the rejection for each configuration, so the model become quadratic because we have | |
some multiplication between variables. With the definition of $\delta_{ij}$ we can | 283 | 318 | some multiplication between variables. With the definition of $\delta_{ij}$ we can | |
replace the multiplication between variables by multiplication with binary variable and | 284 | 319 | replace the multiplication between variables by multiplication with binary variable and | |
this one can be linearise as follow:\\ | 285 | 320 | this one can be linearise as follow:\\ | |
$y$ is a binary variable \\ | 286 | 321 | $y$ is a binary variable \\ | |
$x$ is a real variable bounded by $X^{max}$ \\ | 287 | 322 | $x$ is a real variable bounded by $X^{max}$ \\ | |
\begin{equation*} | 288 | 323 | \begin{equation*} | |
m = x \times y \implies | 289 | 324 | m = x \times y \implies | |
\left \{ | 290 | 325 | \left \{ | |
\begin{split} | 291 | 326 | \begin{split} | |
m & \geq 0 \\ | 292 | 327 | m & \geq 0 \\ | |
m & \leq y \times X^{max} \\ | 293 | 328 | m & \leq y \times X^{max} \\ | |
m & \leq x \\ | 294 | 329 | m & \leq x \\ | |
m & \geq x - (1 - y) \times X^{max} \\ | 295 | 330 | m & \geq x - (1 - y) \times X^{max} \\ | |
\end{split} | 296 | 331 | \end{split} | |
\right . | 297 | 332 | \right . | |
\end{equation*} | 298 | 333 | \end{equation*} | |
Gurobi does the linearization so we don't explain this step to keep the model more | 299 | 334 | Gurobi does the linearization so we don't explain this step to keep the model more | |
simple. However, to improve the transformation explanation we have rewrote the | 300 | 335 | simple. However, to improve the transformation explanation we have rewrote the | |
paragraph ``This model is non-linear and even non-quadratic...''. | 301 | 336 | paragraph ``This model is non-linear and even non-quadratic...''. | |
302 | 337 | |||
JMF : il faudra mettre une phrase qui explique, ca en lisant cette reponse dans l'article | 303 | 338 | JMF : il faudra mettre une phrase qui explique, ca en lisant cette reponse dans l'article | |
je ne comprends pas comment ca repond a la question | 304 | 339 | je ne comprends pas comment ca repond a la question | |
305 | 340 | |||
AH: Je mets l'idée en français, je vais essayer de traduire ça au mieux. | 306 | 341 | AH: Je mets l'idée en français, je vais essayer de traduire ça au mieux. | |
307 | 342 | |||
Le problème n'est pas linéaire car nous multiplions des variables | 308 | 343 | Le problème n'est pas linéaire car nous multiplions des variables | |
entre elles. Pour y remédier, on considère que $\pi_{ij}^C$ et que $C_{ij}$ deviennent | 309 | 344 | entre elles. Pour y remédier, on considère que $\pi_{ij}^C$ et que $C_{ij}$ deviennent | |
des constantes. On introduit donc la variable binaire $\delta_{ij}$ qui nous indique | 310 | 345 | des constantes. On introduit donc la variable binaire $\delta_{ij}$ qui nous indique | |
quel filtre est sélectionné étage par étage. Malgré cela, notre programme est encore | 311 | 346 | quel filtre est sélectionné étage par étage. Malgré cela, notre programme est encore | |
quadratique car pour la contrainte~\ref{eq:areadef2}, il reste une multiplication entre | 312 | 347 | quadratique car pour la contrainte~\ref{eq:areadef2}, il reste une multiplication entre | |
$\delta_{ij}$ et $\pi_i^-$. Mais comme $\delta_{ij}$ est binaire, il est possible | 313 | 348 | $\delta_{ij}$ et $\pi_i^-$. Mais comme $\delta_{ij}$ est binaire, il est possible | |
de linéariser cette multiplication pour peu qu'on puisse borner $\pi_i^-$. Dans notre | 314 | 349 | de linéariser cette multiplication pour peu qu'on puisse borner $\pi_i^-$. Dans notre | |
cas définir la borne est facile car $\pi_i^-$ représente une taille de donnée, | 315 | 350 | cas définir la borne est facile car $\pi_i^-$ représente une taille de donnée, | |
nous définission donc $0 < \pi_i^- \leq 128$ car il s'agit de la plus grande valeur | 316 | 351 | nous définission donc $0 < \pi_i^- \leq 128$ car il s'agit de la plus grande valeur | |
qu'on puisse traiter. De plus nous utiliserons Gurobi qui se chargera de faire la | 317 | 352 | qu'on puisse traiter. De plus nous utiliserons Gurobi qui se chargera de faire la | |
linéarisation pour nous. | 318 | 353 | linéarisation pour nous. | |
319 | 354 | |||
320 | 355 | |||
{\bf | 321 | 356 | {\bf | |
- Captions of figure and tables are too minimal. % r2.14 | 322 | 357 | - Captions of figure and tables are too minimal. % r2.14 | |
} | 323 | 358 | } | |
We have change the captions of fig 10-16. | 324 | 359 | We have change the captions of fig 10-16. | |
325 | 360 | |||
{\bf | 326 | 361 | {\bf | |
- Figures can be grouped: fig. 10-12 can be grouped as three subplots (a, b, c) % r2.15 - fait | 327 | 362 | - Figures can be grouped: fig. 10-12 can be grouped as three subplots (a, b, c) % r2.15 - fait |