Commit 842e804be4a295da293fe60a2399ce6987d0a453

Authored by Arthur HUGEAT
1 parent 27f5f41088
Exists in master

Permier pas vers l'article journal.

Showing 11 changed files with 382 additions and 493 deletions Side-by-side Diff

demo_critere_filtre.m
  1 +clear all;
  2 +
  3 +global N = 2048;
  4 +
  5 +function rejection = rejection_criteria(log_data, fc)
  6 + N = length(log_data);
  7 +
  8 + % Index of the first point in the tail fir
  9 + index_tail = round((fc + 0.1) * N) + 1;
  10 +
  11 + % Index of th last point on the band
  12 + index_band = round((fc - 0.1) * N);
  13 +
  14 + % Get the worst rejection in stopband
  15 + worst_rejection = -max(log_data(index_tail:end));
  16 +
  17 + % Get the total of deviation in passband
  18 + worst_band = mean(-1 * abs(log_data(1:index_band)));
  19 +
  20 + % Compute the rejection
  21 + passband_malus = 10; % weighted value to penalize the deviation in passband
  22 + rejection = worst_band * passband_malus + worst_rejection;
  23 +endfunction
  24 +
  25 +function [h, log_curve, rejection] = compute_freqz(filename)
  26 + global N;
  27 +
  28 + b = load(filename);
  29 + [h, w] = freqz(b, 1, N/2);
  30 + mag = abs(h);
  31 + mag = mag ./ mag(1);
  32 + log_curve = 20 * log10(mag);
  33 +
  34 + rejection = rejection_criteria(log_curve, 0.5);
  35 +endfunction
  36 +
  37 +# Stages
  38 +hTotal = ones(N/2, 1);
  39 +% [h, curve1, c1] = compute_freqz("filters/fir1/fir1_033_int08"); % 1) -8dB
  40 +% [h, curve1, c1] = compute_freqz("filters/fir1/fir1_037_int08"); % 2) -9dB
  41 +[h, curve1, c1] = compute_freqz("filters/fir1/fir1_037_int08");
  42 +hTotal = hTotal .* h;
  43 +% [h, curve2, c2] = compute_freqz("filters/fir1/fir1_033_int10"); % 1) -8dB
  44 +% [h, curve2, c2] = compute_freqz("filters/fir1/fir1_033_int10"); % 2) -9dB
  45 +[h, curve2, c2] = compute_freqz("filters/fir1/fir1_033_int10");
  46 +hTotal = hTotal .* h;
  47 +% [h, curve3, c3] = compute_freqz("filters/fir1/fir1_033_int08");
  48 +% hTotal = hTotal .* h;
  49 +% [h, curve4, c4] = compute_freqz("filters/fir1/fir1_033_int10");
  50 +% hTotal = hTotal .* h;
  51 +% [h, curve5, c5] = compute_freqz("filters/fir1/fir1_015_int11");
  52 +% hTotal = hTotal .* h;
  53 +
  54 +# Log total
  55 +mag = abs(hTotal);
  56 +mag = mag ./ mag(1);
  57 +log_freqz = 20 * log10(mag);
  58 +cTotal = rejection_criteria(log_freqz, 0.5);
  59 +
  60 +[ c1+c2 cTotal ]
  61 +% [ c1+c2+c3+c4+c5 cTotal ]
  62 +
  63 +clf;
  64 +f_axe = [1:N/2] * 2/N;
  65 +hold on;
  66 +color = [0/255 114/255 189/255];
  67 +plot(f_axe, curve1, "linewidth", 1.5, "color", color);
  68 +plot([0 1], [-c1 -c1], "--", "linewidth", 1.5, "color", color);
  69 +
  70 +color = [217/255 83/255 25/255];
  71 +plot(f_axe, curve2, "linewidth", 1.5, "color", color);
  72 +plot([0 1], [-c2 -c2], "--", "linewidth", 1.5, "color", color);
  73 +% plot(f_axe, curve3, "linewidth", 1.5);
  74 +% plot(f_axe, curve4, "linewidth", 1.5);
  75 +% plot(f_axe, curve5, "linewidth", 1.5);
  76 +
  77 +color = [237/255 177/255 32/255];
  78 +plot(f_axe, log_freqz, "linewidth", 1.5, "color", color);
  79 +plot([0 1], [-cTotal -cTotal], "--", "linewidth", 1.5, "color", color);
  80 +plot([0 1], [-(c1 + c2) -(c1 + c2)], ":", "linewidth", 1.5, "color", color);
  81 +
  82 +plot([0.4 0.4], [-500 50], "k:")
  83 +plot([0.6 0.6], [-500 50], "k:")
  84 +ylim([-200 10])
  85 +hold off;
  86 +
  87 +xlabel("Normalized Frequency (a.u.)")
  88 +ylabel("Rejection (dB)")
  89 +legend("Reponse of 1st filter", "Rejection of 1st filter", "Reponse of 2nd filter", "Rejection of 2nd filter", "Reponse Total", "Actual Rejection", "Expected Rejection", "location", "southwest")
ifcs2018_journal.tex
1   -% JMF : revoir l'abstract : on y avait mis le Zynq7010 de la redpitaya en montrant
2   -% comment optimiser les perfs a surface finie. Ici aussi on tombait dans le cas ou`
3   -% la solution a 1 seul FIR n'etait simplement pas synthetisable => fusionner les deux
4   -% contributions pour le papier TUFFC
5   -
6 1 \documentclass[a4paper,conference]{IEEEtran/IEEEtran}
7 2 \usepackage{graphicx,color,hyperref}
8 3 \usepackage{amsfonts}
... ... @@ -12,6 +7,11 @@
12 7 \usepackage{algorithm2e}
13 8 \usepackage{url,balance}
14 9 \usepackage[normalem]{ulem}
  10 +\usepackage{tikz}
  11 +\usetikzlibrary{positioning,fit}
  12 +\usepackage{multirow}
  13 +\usepackage{scalefnt}
  14 +
15 15 % correct bad hyphenation here
16 16 \hyphenation{op-tical net-works semi-conduc-tor}
17 17 \textheight=26cm
... ... @@ -89,7 +89,10 @@
89 89 We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined
90 90 by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the
91 91 outputs $y_k$
92   -$$y_n=\sum_{k=0}^N b_k x_{n-k}$$
  92 +\begin{align}
  93 + y_n=\sum_{k=0}^N b_k x_{n-k}
  94 + \label{eq:fir_equation}
  95 +\end{align}
93 96  
94 97 As opposed to an implementation on a general purpose processor in which word size is defined by the
95 98 processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since
... ... @@ -107,20 +110,6 @@
107 110 we select to quantify these floating point values into integer values. This quantization
108 111 will result in some precision loss.
109 112  
110   -%As illustrated in Fig. \ref{float_vs_int}, we see that we aren't
111   -%need too coefficients or too sample size. If we have lot of coefficients but a small sample size,
112   -%the first and last are equal to zero. But if we have too sample size for few coefficients that not improve the quality.
113   -
114   -% JMF je ne comprends pas la derniere phrase ci-dessus ni la figure ci dessous
115   -% AH en gros je voulais dire que prendre trop peu de bit avec trop de coeff, ça induit ta figure (bien mieux faite que moi)
116   -% et que l'inverse trop de bit sur pas assez de coeff on ne gagne rien, je vais essayer de la reformuler
117   -
118   -%\begin{figure}[h!tb]
119   -%\includegraphics[width=\linewidth]{images/float-vs-integer.pdf}
120   -%\caption{Impact of the quantization resolution of the coefficients}
121   -%\label{float_vs_int}
122   -%\end{figure}
123   -
124 113 \begin{figure}[h!tb]
125 114 \includegraphics[width=\linewidth]{images/demo_filtre}
126 115 \caption{Impact of the quantization resolution of the coefficients: the quantization is
127 116  
128 117  
129 118  
130 119  
131 120  
132 121  
133 122  
134 123  
135 124  
136 125  
137 126  
138 127  
139 128  
140 129  
141 130  
142 131  
143 132  
144 133  
145 134  
146 135  
147 136  
148 137  
149 138  
150 139  
151 140  
152 141  
153 142  
154 143  
155 144  
156 145  
157 146  
158 147  
159 148  
160 149  
161 150  
162 151  
163 152  
164 153  
165 154  
166 155  
167 156  
168 157  
169 158  
... ... @@ -148,515 +137,326 @@
148 137 current implementation: the decimation is assumed to be located after the FIR cascade at the
149 138 moment.
150 139  
151   -\section{Filter optimization}
  140 +\section{Methodology description}
  141 +We want create a new methodology to develop any Digital Signal Processing (DSP) chain
  142 +and for any hardware platform (Altera, Xilinx...). To do this we have defined an
  143 +abstract model to represent some basic operations of DSP.
152 144  
153   -A basic approach for implementing the FIR filter is to compute the transfer function of
154   -a monolithic filter: this single filter defines all coefficients with the same resolution
155   -(number of bits) and processes data represented with their own resolution. Meeting the
156   -filter shape requires a large number of coefficients, limited by resources of the FPGA since
157   -this filter must process data stream at the radiofrequency sampling rate after the mixer.
  145 +For the moment, we are focused on only two operations: the filtering and the shift of data.
  146 +We have chosen this basic operation because the shifting and the filtering have already be studied in
  147 +lot of works {\color{red} mettre les nouvelles référence ici} hence it will be easier
  148 +to check and validate our results.
158 149  
159   -An optimization problem \cite{leung2004handbook} aims at improving one or many
160   -performance criteria within a constrained resource environment. Amongst the tools
161   -developed to meet this aim, Mixed-Integer Linear Programming (MILP) provides the framework to
162   -formally define the stated problem and search for an optimal use of available
163   -resources \cite{yu2007design, kodek1980design}.
  150 +However having only two operations is insufficient to work with complex DSP but
  151 +in this paper we only want demonstrate the relevance and the efficiency of our approach.
  152 +In future work it will be possible to add more operations and we are able to
  153 +model any DSP chain.
164 154  
165   -First we need to ensure that our problem is a real optimization problem. When
166   -designing a processing function in the FPGA, we aim at meeting some requirement such as
167   -the throughput, the computation time or the noise rejection noise. However, due to limited
168   -resources to design the process like BRAM (high performance RAM), DSP (Digital Signal Processor)
169   -or LUT (Look Up Table), a tradeoff must be generally searched between performance and available
170   -computational resources: optimizing some criteria within finite, limited
171   -resources indeed matches the definition of a classical optimization problem.
  155 +We will apply our methodology on very simple DSP chain. We generate a digital signal
  156 +thanks at generator of Pseudo-Random Number (PRN) or thanks at an Analog to Digital
  157 +Converter (ADC). Once we have a digital signal, we filter it to decrease the noise level.
  158 +Finally we stored some burst of filtered samples before post-processing it.
  159 +% TODO: faire un schéma
  160 +In this particular case, we want optimize the filtering step to have the best noise
  161 +rejection for constrain number of resource or to have the minimal resources
  162 +consumption for a given rejection objective.
172 163  
173   -Specifically the degrees of freedom when addressing the problem of replacing the single monolithic
174   -FIR with a cascade of optimized filters are the number of coefficients $N_i$ of each filter $i$,
175   -the number of bits $C_i$ representing the coefficients and the number of bits $D_i$ needed to represent
176   -the data $x_k$ fed to each filter as provided by the acquisition or previous processing stage.
177   -Because each FIR in the chain is fed the output of the previous stage,
178   -the optimization of the complete processing chain within a constrained resource environment is not
179   -trivial. The resource occupation of a FIR filter is considered as $C_i \times N_i$ which aims
180   -at approximating the number of bits needed in a worst case condition to represent the output of the
181   -FIR. Indeed, the number of bits generated by the $i$th FIR is $(C_i+D_i)\times\log_2(N_i)$, but the
182   -$\log$ function is avoided for its incompatibility with a linear programming description, and
183   -the simple product is approximated as the number of gates needed to perform the calculation. Such an
184   -occupied area estimate assumes that the number of gates scales as the number of bits and the number
185   -of coefficients, but does not account for the detailed implementation of the hardware. Indeed,
186   -various FPGA implementations will provide different hardware functionalities, and we shall consider
187   -at the end of the design a synthesis step using vendor software to assess the validity of the solution
188   -found. As an example of the limitation linked to the lack of detailed hardware consideration, Block Random
189   -Access Memory (BRAM) used to store filter coefficients are not shared amongst filters, and multiplications
190   -are most efficiently implemented by using DSP blocks whose input word
191   -size is finite. DSPs are a scarce resource to be saved in a practical implementation. Keeping a high
192   -abstraction on the resource occupation is nevertheless selected in the following discussion in order
193   -to leave enough degrees of freedom in the problem to try and find original solutions: too many
194   -constraints in the initial statement of the problem leave little room for finding an optimal solution.
  164 +The first step of our approach is to model the DSP chain and since we just optimize
  165 +the filtering, we have not modeling the PRN generator or the ADC. The filtering can be
  166 +done by two ways. The first one we use only one FIR filter with lot of coefficients
  167 +to rejection the noise, we called this approach a monolithic approach. And the second one
  168 +we select different FIR filters with less coefficients the monolithic filter and we cascaded
  169 +it to filtering the signal.
195 170  
196   -\begin{figure}[h!tb]
197   -\begin{center}
198   -\includegraphics[width=.5\linewidth]{schema2}
199   -\caption{Shape of the filter transmitted power $P$ as a function of frequency:
200   -the bandpass BP is considered to occupy the initial
201   -40\% of the Nyquist frequency range, the stopband the last 40\%, allowing 20\% transition
202   -width.}
203   -\label{rejection-shape}
204   -\end{center}
205   -\end{figure}
  171 +After each filter we leave the possibility of shifting the filtered data to consume
  172 +less resources. Hence in the case of cascaded filter, we define a stage as a filter
  173 +and a shifter (the shift could be omitted if we do not need to divide the filtered data).
206 174  
207   -Following these considerations, the model is expressed as:
208   -\begin{align}
209   - \begin{cases}
210   - \mathcal{R}_i &= \mathcal{F}(N_i, C_i)\\
211   - \mathcal{A}_i &= N_i \times C_i\\
212   - \Delta_i &= \Delta _{i-1} + \mathcal{P}_i
213   - \end{cases}
214   - \label{model-FIR}
215   -\end{align}
216   -To explain the system \ref{model-FIR}, $\mathcal{R}_i$ represents the stopband rejection dependence with $N_i$ and $C_i$, $\mathcal{A}_i$
217   -is a theoretical area occupation of the processing block on the FPGA as discussed earlier, and $\Delta_i$ is the total rejection for the current stage $i$.
218   -Since the function $\mathcal{F}$ cannot be explictly expressed, we run simulations to determine the rejection depending
219   -on $N_i$ and $C_i$. However, selecting the right filter requires a clear definition of the rejection criterion. Selecting an
220   -incorrect criterion will lead the linear program solver to produce a solution which might not meet the user requirements.
221   -Hence, amongst various criteria including the mean or median value of the FIR response in the stopband as will
222   -be illustrated lated (section \ref{median}), we have designed
223   -a criterion aimed at avoiding ripples in the passband and considering the maximum of the FIR spectral response in the stopband
224   -(Fig. \ref{rejection-shape}). The bandpass criterion is defined as the sum of the absolute values of the spectral response
225   -in the bandpass, reminiscent of a standard deviation of the spectral response: this criterion must be minimized to avoid
226   -ripples in the passband. The stopband transfer function maximum must also be minimized in order to improve the filter
227   -rejection capability. Weighing these two criteria allows designing the linear program to be solved.
  175 +\subsection{Model of a FIR filter}
  176 +A cascade of filter are composed of $n$ stage. In stage $i$ ($1 \leq i \leq n$)
  177 +the FIR has $C_i$ coefficients and each coefficients are integer values with $\pi^C_i$
  178 +bits and the filtered data are shifted of $\pi^S_i$ bits. We define also $\pi^-_i$ as
  179 +the size of input data and $\pi^+_i$ as the size of output data. The figure~\ref{fig:fir_stage}
  180 +shows a filtering stage.
228 181  
229   -\begin{figure}[h!tb]
230   -\includegraphics[width=\linewidth]{images/noise-rejection.pdf}
231   -\caption{Rejection as a function of number of coefficients and number of bits}
232   -\label{noise-rejection}
233   -\end{figure}
  182 +\begin{figure}
  183 + \centering
  184 + \begin{tikzpicture}[node distance=2cm]
  185 + \node[draw,minimum size=1.3cm] (FIR) { $C_i, \pi_i^C$ } ;
  186 + \node[draw,minimum size=1.3cm] (Shift) [right of=FIR, ] { $\pi_i^S$ } ;
  187 + \node (Start) [left of=FIR] { } ;
  188 + \node (End) [right of=Shift] { } ;
234 189  
235   -The objective function maximizes the noise rejection ($\max(\Delta_{i_{\max}})$) while keeping resource
236   -occupation below a user-defined threshold, or as will be discussed here, aims at minimizing the area
237   -needed to reach a given rejection ($\min(S_q)$ in the forthcoming discussion, Eqs. \ref{cstr_size}
238   -and \ref{cstr_rejection}). The MILP solver is allowed to choose the number of successive
239   -filters, within an upper bound. The last problem is to model the noise rejection. Since filter
240   -noise rejection capability is not modeled with linear equations, a look-up-table is generated
241   -for multiple filter configurations in which the $C_i$, $D_i$ and $N_i$ parameters are varied: for each
242   -one of these conditions, the low-pass filter rejection is stored as computed by the frequency response
243   -of the digital filter (Fig. \ref{noise-rejection}). Various rejection criteria have been investigated,
244   -including mean value of the stopband response, median value of the stopband response, or as finally
245   -selected, maximum value in the stopband. An intuitive analysis of the chart of Fig. \ref{noise-rejection}
246   -hints at an optimum
247   -set of tap length and number of bit for representing the coefficients along the line of the pyramidal
248   -shaped rejection capability function.
  190 + \node[draw,fit=(FIR) (Shift)] (Filter) { } ;
249 191  
250   -Linear program formalism for solving the problem is well documented: an objective function is
251   -defined which is linearly dependent on the parameters to be optimized. Constraints are expressed
252   -as linear equations and solved using one of the available solvers, in our case GLPK\cite{glpk}.
253   -With the notations used in the description of system \ref{model-FIR}, we have defined the linear problem as:
254   -\paragraph{Variables}
255   -\begin{align*}
256   -x_{i,j} \in \lbrace 0,1 \rbrace & \text{ $i$ is a given filter} \\
257   -& \text{ $j$ is the stage} \\
258   -& \text{ If $x_{i,j}$ is equal to 1, the filter is selected} \\
259   -\end{align*}
260   -\paragraph{Constants}
261   -\begin{align*}
262   -\mathcal{F} = \lbrace F_1 ... F_p \rbrace & \text{ All possible filters}\\
263   -& \text{ $p$ is the number of different filters} \\
264   -% N(i) & \text{ % Constant to let the
265   -% number of coefficients %} \\ & \text{
266   -% for filter $i$}\\
267   -% C(i) & \text{ % Constant to let the
268   -% number of bits of %}\\ & \text{
269   -% each coefficient for filter $i$}\\
270   -\mathcal{S}_{\max} & \text{ Total space available inside the FPGA}
271   -\end{align*}
272   -\paragraph{Constraints}
273   -\begin{align}
274   -1 \leq i \leq p & \nonumber\\
275   -1 \leq j \leq q & \text{ $q$ is the max of filter stage} \nonumber \\
276   -\forall j, \mathlarger{\sum_{i}} x_{i,j} = 1 & \text{ At most one filter by stage} \nonumber\\
277   -\mathcal{S}_0 = 0 & \text{ initial occupation} \nonumber\\
278   -\forall j, \mathcal{S}_j = \mathcal{S}_{j-1} + \mathlarger{\sum_i (x_{i,j} \times \mathcal{A}_i)} \label{cstr_size} \\
279   -\mathcal{S}_j \leq \mathcal{S}_{\max}\nonumber \\
280   -\mathcal{N}_0 = 0 & \text{ initial rejection}\nonumber\\
281   -\forall j, \mathcal{N}_j = \mathcal{N}_{j-1} + \mathlarger{\sum_i (x_{i,j} \times \mathcal{R}_i)} \label{cstr_rejection} \\
282   -\mathcal{N}_q \geqslant 160 & \text{ an user defined bound}\nonumber\\
283   -& \text{ (e.g. 160~dB here)}\nonumber\\\nonumber
284   -\end{align}
285   -\paragraph{Goal}
286   -\begin{align*}
287   -\min \mathcal{S}_q
288   -\end{align*}
  192 + \draw[->] (Start) edge node [above] { $\pi_i^-$ } (FIR) ;
  193 + \draw[->] (FIR) -- (Shift) ;
  194 + \draw[->] (Shift) edge node [above] { $\pi_i^+$ } (End) ;
  195 + \end{tikzpicture}
  196 + \caption{A single filter is composed of a FIR (on the left) and a Shifter (on the right)}
  197 + \label{fig:fir_stage}
  198 +\end{figure}
289 199  
290   -The constraint \ref{cstr_size} means the occupation for the current stage $j$ depends on
291   -the previous occupation and the occupation of current selected filter (it is possible
292   -that no filter is selected for this stage). And the second one \ref{cstr_rejection}
293   -means the same thing but for the rejection, the rejection depends the previous rejection
294   -plus the rejection of selected filter.
  200 +FIR $i$ can reject $F(C_i, \pi_i^C)$ dB. $F$ is determined numerically.
  201 +To measure this rejection, we use GNU Octave software to design FIR filter coefficients thanks to two
  202 +algorithms (\texttt{firls} and \texttt{fir1}).
  203 +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.
  204 +Then, the floating point coefficients are discretized into integers. In order to ensure that the coefficients are coded on $\pi_i^C$~bits effectively,
  205 +the coefficients are normalized by their absolute maximum before being scaled to integer coefficients.
  206 +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 other are coded on very fewer bits.
295 207  
296   -\subsection{Low bandpass ripple and maximum rejection criteria}
  208 +With these coefficients, the \texttt{freqz} function is used to estimate the magnitude of the filter.
  209 +Comparing the performance between FIRs requires however a unique criterion. As shown in figure~\ref{fig:fir_mag},
  210 +the FIR magnitude exhibits two parts.
297 211  
298   -The MILP solver provides a solution to the problem by selecting a series of small FIR with
299   -increasing number of bits representing data and coefficients as well as an increasing number
300   -of coefficients, instead of a single monolithic filter.
  212 +\begin{figure}
  213 + \centering
  214 + \begin{tikzpicture}[scale=0.3]
  215 + \draw[<->] (0,15) -- (0,0) -- (21,0) ;
  216 + \draw[thick] (0,12) -- (8,12) -- (20,0) ;
301 217  
302   -\begin{figure}[h!tb]
303   -% \includegraphics[width=\linewidth]{images/compare-fir.pdf}
304   -\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-noise-fixe-jmf-light.pdf}
305   -\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR
306   -with a cutoff frequency set at half the Nyquist frequency.}
307   -\label{compare-fir}
308   -\end{figure}
  218 + \draw (0,14) node [left] { $P$ } ;
  219 + \draw (20,0) node [below] { $f$ } ;
309 220  
310   -Fig. \ref{compare-fir} exhibits the
311   -performance comparison between one solution and a monolithic FIR when selecting a cutoff
312   -frequency of half the Nyquist frequency: a series of 5 FIR and a series of 10 FIR with the
313   -same space usage are provided as selected by the MILP solver. The FIR cascade provides improved
314   -rejection than the monolithic FIR at the expense of a lower cutoff frequency which remains to
315   -be tuned or compensated for.
  221 + \draw[>=latex,<->] (0,14) -- (8,14) ;
  222 + \draw (4,14) node [above] { passband } node [below] { $40\%$ } ;
316 223  
  224 + \draw[>=latex,<->] (8,14) -- (12,14) ;
  225 + \draw (10,14) node [above] { transition } node [below] { $20\%$ } ;
317 226  
318   -The resource occupation when synthesizing such FIR on a Xilinx FPGA is summarized as Tab. \ref{t1}.
319   -We have considered a set of resources representative of the hardware platform we work on,
320   -Avnet's Zedboard featuring a Xilinx XC7Z020-CLG484-1 Zynq System on Chip (SoC). The results reported in
321   -Tab. \ref{t1} emphasize that implementing the monolithic single FIR is impossible due to
322   -the insufficient hardware resources (exhausted LUT resources), while the FIR cascading 5 or 10
323   -filters fit in the available resources. However, in all cases the DSP resources are fully
324   -used: while the design can be synthesized using Xilinx proprietary Vivado 2016.2 software,
325   -implementing the design fails due to the excessive resource usage preventing routing the signals
326   -on the FPGA. Such results emphasize on the one hand the improvement prospect of the optimization
327   -procedure by finding non-trivial solutions matching resource constraints, but on the other
328   -hand also illustrates the limitation of a model with an abstraction layer that does not account
329   -for the detailed architecture of the hardware.
  227 + \draw[>=latex,<->] (12,14) -- (20,14) ;
  228 + \draw (16,14) node [above] { stopband } node [below] { $40\%$ } ;
330 229  
331   -\begin{table}[h!tb]
332   -\caption{Resource occupation on a Xilinx Zynq-7000 series FPGA when synthesizing the FIR cascade
333   -identified as optimal by the MILP solver within a finite resource criterion. The last line refers
334   -to available resources on a Zynq-7020 as found on the Zedboard.}
335   -\begin{center}
336   -\begin{tabular}{|c|cccc|}\hline
337   -FIR & BlockRAM & LookUpTables & DSP & rejection (dB)\\\hline\hline
338   -1 (monolithic) & 1 & 76183 & 220 & -162 \\
339   -5 & 5 & 18597 & 220 & -160 \\
340   -10 & 8 & 24729 & 220 & -161 \\\hline\hline
341   -\textbf{Zynq 7020} & \textbf{420} & \textbf{53200} & \textbf{220} & \\\hline
342   -%\begin{tabular}{|c|ccccc|}\hline
343   -%FIR & BRAM36 & BRAM18 & LUT & DSP & rejection (dB)\\\hline\hline
344   -%1 (monolithic) & 1 & 0 & {\color{Red}76183} & 220 & -162 \\
345   -%5 & 0 & 5 & {\color{Green}18597} & 220 & -160 \\
346   -%10 & 0 & 8 & {\color{Green}24729} & 220 & -161 \\\hline\hline
347   -%\textbf{Zynq 7020} & \textbf{140} & \textbf{280} & \textbf{53200} & \textbf{220} & \\\hline
348   -\end{tabular}
349   -\end{center}
350   -%\vspace{-0.7cm}
351   -\label{t1}
352   -\end{table}
  230 + \draw[>=latex,<->] (16,12) -- (16,8) ;
  231 + \draw (16,10) node [right] { rejection } ;
353 232  
354   -\subsection{Alternate criteria}\label{median}
  233 + \draw[dashed] (8,-1) -- (8,14) ;
  234 + \draw[dashed] (12,-1) -- (12,14) ;
355 235  
356   -Fig. \ref{compare-fir} provides FIR solutions matching well the targeted transfer
357   -function, namely low ripple in the bandpass defined as the first 40\% of the frequency
358   -range and maximum rejection of 160~dB in the last 40\% stopband. We illustrate now, for
359   -demonstrating the need to properly select the optimization criterion, two cases of poor
360   -filter shapes obtained by selecting the mean value and median value of the rejection,
361   -with no consideration for the ripples in the bandpass. The results of the optimizations,
362   -in these cases, are shown in Figs. \ref{compare-mean} and \ref{compare-median}.
  236 + \draw[dashed] (8,12) -- (16,12) ;
  237 + \draw[dashed] (12,8) -- (16,8) ;
363 238  
364   -\begin{figure}[h!tb]
365   -\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-noise-fixe-mean-light.pdf}
366   -\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR
367   -with a cutoff frequency set at half the Nyquist frequency.}
368   -\label{compare-mean}
  239 + \end{tikzpicture}
  240 +
  241 +% \includegraphics[width=.5\linewidth]{images/fir_magnitude}
  242 +\caption{Shape of the filter transmitted power $P$ as a function of frequency $f$:
  243 +the passband is considered to occupy the initial 40\% of the Nyquist frequency range,
  244 +the stopband the last 40\%, allowing 20\% transition width.}
  245 +\label{fig:fir_mag}
369 246 \end{figure}
370 247  
371   -In the case of the mean value criterion (Fig. \ref{compare-mean}), the solution is not
372   -acceptable since the notch at the end of the transition band compensates for some unacceptable
373   -rise in the rejection close to the Nyquist frequency. Applying such a filter might yield excessive
374   -high frequency spurious components to be aliased at low frequency when decimating the signal.
375   -Similarly, the lack of criterion on the bandpass shape induces a shape with poor flatness and
376   -and slowly decaying transfer function starting to attenuate spectral components well before the
377   -transition band starts. Such issues are partly aleviated by replacing a mean rejection value with
378   -a median rejection value (Fig. \ref{compare-median}) but solutions remain unacceptable for
379   -the reasons stated previously and much poorer than those found with the maximum rejection criterion
380   -selected earlier (Fig. \ref{compare-fir}).
  248 +In the transition band, the behavior of the filter is left free, we only care about the passband and the stopband.
  249 +Our first criterion considers the mean value of the stopband rejection, as shown in figure~\ref{fig:mean_criterion}. This criterion does not work because we do not consider the shape of the passband.
  250 +A second criterion considers the maximum rejection within the stopband minus the mean of the absolute value of passband rejection. With this criterion, the results are significantly improved as shown in figure~\ref{fig:custom_criterion}.
381 251  
382   -\begin{figure}[h!tb]
383   -\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-noise-fixe-median-light.pdf}
384   -\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR
385   -with a cutoff frequency set at half the Nyquist frequency.}
386   -\label{compare-median}
  252 +\begin{figure}
  253 +\centering
  254 +\includegraphics[width=\linewidth]{images/mean_criterion}
  255 +\caption{Mean criterion comparison between monolithic filter and cascade filters}
  256 +\label{fig:mean_criterion}
387 257 \end{figure}
388 258  
389   -\section{Filter coefficient selection}
  259 +\begin{figure}
  260 +\centering
  261 +\includegraphics[width=\linewidth]{images/custom_criterion}
  262 +\caption{Custom criterion comparison between monolithic filter and cascade filters}
  263 +\label{fig:custom_criterion}
  264 +\end{figure}
390 265  
391   -The coefficients of a single monolithic filter are computed as the impulse response
392   -of the filter transfer function, and practically approximated by a multitude of methods
393   -including least square optimization (Matlab's {\tt firls} function), Hamming or Kaiser windowing
394   -(Matlab's {\tt fir1} function).
  266 +Although we have a efficient criterion to estimate the rejection of one set of coefficient
  267 +we have a problem when we sum two or more criterion. If the FIR filter coefficients are the same
  268 +between the stage, we have:
  269 +$$F_{total} = F_1 + F_2$$
  270 +But when we choose two different set of coefficient, the previous equality are not
  271 +true. The figure~\ref{fig:sum_rejection} illustrates the problem. The red and blue curves
  272 +are two different filter coefficient and we can see that their maximum on the stopband
  273 +are not at the same frequency. So when we sum the rejection criteria (the dotted yellow line)
  274 +we do not meet the dashed yellow line. Define the rejection of cascaded filters
  275 +is more difficult than just take the summation between all the rejection criteria of each filter.
  276 +However this summation gives us an upper bound for rejection although in fact we obtain
  277 +better rejection than expected.
395 278  
396   -\begin{figure}[h!tb]
397   -\includegraphics[width=\linewidth]{images/fir1-vs-firls}
398   -\caption{Evolution of the rejection capability of least-square optimized filters and Hamming
399   -FIR filters as a function of the number of coefficients, for floating point numbers and 8-bit
400   -encoded integers.}
401   -\label{2}
  279 +\begin{figure}
  280 +\centering
  281 +\includegraphics[width=\linewidth]{images/sum_rejection}
  282 +\caption{Rejection of two cascaded filters}
  283 +\label{fig:sum_rejection}
402 284 \end{figure}
403 285  
404   -Cascading filters opens a new optimization opportunity by
405   -selecting various coefficient sets depending on the number of coefficients. Fig. \ref{2}
406   -illustrates that for a number of coefficients ranging from 8 to 47, {\tt fir1} provides a better
407   -rejection than {\tt firls}: since the linear solver increases the number of coefficients along
408   -the processing chain, the type of selected filter also changes depending on the number of coefficients
409   -and evolves along the processing chain.
  286 +\section{Experiments with fixed area space}
410 287  
411   -\section{Conclusion}
  288 +\begin{figure}
  289 +\centering
  290 +\includegraphics[width=\linewidth]{images/max_rejection/prn_500}
  291 +\caption{Experimental results for design with PRN as data input and 500 a.u. as max arbitrary space}
  292 +\label{fig:prn_500}
  293 +\end{figure}
412 294  
413   -We address the optimization problem of designing a low-pass filter chain in a Field Programmable Gate
414   -Array for improved noise rejection within constrained resource occupation, as needed for
415   -real time processing of radiofrequency signal when characterizing spectral phase noise
416   -characteristics of stable oscillators. The flexibility of the digital approach makes the result
417   -best suited for closing the loop and using the measurement output in a feedback loop for
418   -controlling clocks, e.g. in a quartz-stabilized high performance clock whose long term behavior
419   -is controlled by non-piezoelectric resonator (sapphire resonator, microwave or optical
420   -atomic transition).
  295 +\begin{figure}
  296 +\centering
  297 +\includegraphics[width=\linewidth]{images/max_rejection/prn_1000}
  298 +\caption{Experimental results for design with PRN as data input and 1000 a.u. as max arbitrary space}
  299 +\label{fig:prn_1000}
  300 +\end{figure}
421 301  
422   -\section*{Acknowledgement}
  302 +\begin{figure}
  303 +\centering
  304 +\includegraphics[width=\linewidth]{images/max_rejection/prn_2000}
  305 +\caption{Experimental results for design with PRN as data input and 2000 a.u. as max arbitrary space}
  306 +\label{fig:prn_2000}
  307 +\end{figure}
423 308  
424   -This work is supported by the ANR Programme d'Investissement d'Avenir in
425   -progress at the Time and Frequency Departments of the FEMTO-ST Institute
426   -(Oscillator IMP, First-TF and Refimeve+), and by R\'egion de Franche-Comt\'e.
427   -The authors would like to thank E. Rubiola, F. Vernotte, and G. Cabodevila
428   -for support and fruitful discussions.
  309 +\begin{table}
  310 +\centering
  311 +\begin{tabular}{|c|c|ccc|c|c|}
  312 +\hline
  313 +\multicolumn{2}{|c|}{\multirow{2}{*}{Stage}} & \multicolumn{3}{c|}{Stage} & \multirow{2}{*}{Rejection} & \multirow{2}{*}{Area} \\ \cline{3-5}
  314 +\multicolumn{2}{|c|}{} & i = 1 & i = 2 & i = 3 & & \\ \hline
  315 + & C & 19 & - & - & & \\
  316 +n = 1 & $pi^C$ & 7 & - & - & 33 dB & 437 a.u. \\
  317 + & $pi^S$ & 0 & - & - & & \\ \hline
  318 + & C & 11 & 19 & - & & \\
  319 +n = 2 & $pi^C$ & 5 & 7 & - & 53 dB & 478 a.u. \\
  320 + & $pi^S$ & 16 & 0 & - & & \\ \hline
  321 + & C & 9 & 15 & 11 & & \\
  322 +n = 3 & $pi^C$ & 4 & 6 & 5 & 57 dB & 499 a.u. \\
  323 + & $pi^S$ & 16 & 3 & 0 & & \\ \hline
  324 +\end{tabular}
  325 +\caption{Solver results for design with PRN as data input and 500 a.u. as max arbitrary space}
  326 +\label{tbl:prn_500}
  327 +\end{table}
429 328  
430   -\bibliographystyle{IEEEtran}
431   -\balance
432   -\bibliography{references,biblio}
433   -\end{document}
  329 +\begin{table}
  330 +\centering
  331 +{\scalefont{0.85}
  332 +\begin{tabular}{|c|c|ccccc|c|c|}
  333 +\hline
  334 +\multicolumn{2}{|c|}{\multirow{2}{*}{Stage}} & \multicolumn{5}{c|}{Stage} & \multirow{2}{*}{Rejection} & \multirow{2}{*}{Area} \\ \cline{3-7}
  335 +\multicolumn{2}{|c|}{} & i = 1 & i = 2 & i = 3 & i = 4 & i = 5 & & \\ \hline
  336 + & C & 37 & - & - & - & - & & \\
  337 +n = 1 & $pi^C$ & 11 & - & - & - & - & 56 dB & 999 a.u. \\
  338 + & $pi^S$ & 0 & - & - & - & - & & \\ \hline
  339 + & C & 11 & 39 & - & - & - & & \\
  340 +n = 2 & $pi^C$ & 5 & 13 & - & - & - & 82 dB & 972 a.u. \\
  341 + & $pi^S$ & 16 & 0 & - & - & - & & \\ \hline
  342 + & C & 9 & 31 & 19 & - & - & & \\
  343 +n = 3 & $pi^C$ & 7 & 8 & 7 & - & - & 93 dB & 990 a.u. \\
  344 + & $pi^S$ & 19 & 2 & 0 & - & - & & \\ \hline
  345 + & C & 9 & 19 & 17 & 11 & - & & \\
  346 +n = 4 & $pi^C$ & 4 & 7 & 7 & 5 & - & 99 dB & 992 a.u. \\
  347 + & $pi^S$ & 16 & 3 & 3 & 0 & - & & \\ \hline
  348 + & C & 9 & 15 & 11 & 11 & 11 & & \\
  349 +n = 5 & $pi^C$ & 4 & 7 & 5 & 5 & 5 & 99 dB & 998 a.u. \\
  350 + & $pi^S$ & 16 & 3 & 2 & 1 & 1 & & \\ \hline
  351 +\end{tabular}
  352 +}
  353 +\caption{Solver results for design with PRN as data input and 1000 a.u. as max arbitrary space}
  354 +\label{tbl:prn_1000}
  355 +\end{table}
434 356  
435   - \section{Contexte d'ordonnancement}
436   - Dans cette partie, nous donnerons des d\'efinitions de termes rattach\'es au domaine de l'ordonnancement
437   - et nous verrons que le sujet trait\'e se rapproche beaucoup d'un problème d'ordonnancement. De ce fait
438   - nous pourrons aller plus loin que les travaux vus pr\'ec\'edemment et nous tenterons des approches d'ordonnancement
439   - et d'optimisation.
  357 +\begin{table}
  358 +\centering
  359 +{\scalefont{0.85}
  360 +\begin{tabular}{|c|c|ccccc|c|c|}
  361 +\hline
  362 +\multicolumn{2}{|c|}{\multirow{2}{*}{Stage}} & \multicolumn{5}{c|}{Stage} & \multirow{2}{*}{Rejection} & \multirow{2}{*}{Area} \\ \cline{3-7}
  363 +\multicolumn{2}{|c|}{} & i = 1 & i = 2 & i = 3 & i = 4 & i = 5 & & \\ \hline
  364 + & C & 39 & - & - & - & - & & \\
  365 +n = 1 & $pi^C$ & 13 & - & - & - & - & 61 dB & 1131 a.u. \\
  366 + & $pi^S$ & 0 & - & - & - & - & & \\ \hline
  367 + & C & 37 & 39 & - & - & - & & \\
  368 +n = 2 & $pi^C$ & 11 & 13 & - & - & - & 117 dB & 1974 a.u. \\
  369 + & $pi^S$ & 17 & 0 & - & - & - & & \\ \hline
  370 + & C & 15 & 35 & 35 & - & - & & \\
  371 +n = 3 & $pi^C$ & 9 & 11 & 11 & - & - & 138 dB & 1985 a.u. \\
  372 + & $pi^S$ & 19 & 3 & 0 & - & - & & \\ \hline
  373 + & C & 11 & 27 & 27 & 23 & - & & \\
  374 +n = 4 & $pi^C$ & 5 & 9 & 9 & 9 & - & 148 dB & 1993 a.u. \\
  375 + & $pi^S$ & 16 & 3 & 2 & 0 & - & & \\ \hline
  376 + & C & 11 & 27 & 31 & 11 & 11 & & \\
  377 +n = 5 & $pi^C$ & 5 & 9 & 8 & 5 & 5 & 153 dB & 2000 a.u. \\
  378 + & $pi^S$ & 16 & 3 & 1 & 0 & 1 & & \\ \hline
  379 +\end{tabular}
  380 +}
  381 +\caption{Solver results for design with PRN as data input and 2000 a.u. as max arbitrary space}
  382 +\label{tbl:prn_2000}
  383 +\end{table}
440 384  
441   - \subsection{D\'efinition du vocabulaire}
442   - Avant tout, il faut d\'efinir ce qu'est un problème d'optimisation. Il y a deux d\'efinitions
443   - importantes à donner. La première est propos\'ee par Legrand et Robert dans leur livre \cite{def1-ordo} :
444   - \begin{definition}
445   - \label{def-ordo1}
446   - Un ordonnancement d'un système de t\^aches $G\ =\ (V,\ E,\ w)$ est une fonction $\sigma$ :
447   - $V \rightarrow \mathbb{N}$ telle que $\sigma(u) + w(u) \leq \sigma(v)$ pour toute arête $(u,\ v) \in E$.
448   - \end{definition}
  385 +\begin{table}
  386 +\centering
  387 +\begin{tabular}{|c|c|c|c|c|}\hline
  388 +Input & Stages & Computation time & Vivado time & Redpitaya time \\\hline\hline
  389 + & 1 & 0.02~s & $\approx$ 20 min & $\approx$ 1 min \\
  390 +PRN & 2 & 1.70~s & $\approx$ 20 min & $\approx$ 1 min \\
  391 + & 3 & 19~s & $\approx$ 20 min & $\approx$ 1 min \\\hline
  392 +\end{tabular}
  393 +\caption{Time to compute and deploy the designs for PRN 500}
  394 +\label{tbl:time_prn_500}
  395 +\end{table}
449 396  
450   - Dit plus simplement, l'ensemble $V$ repr\'esente les t\^aches à ex\'ecuter, l'ensemble $E$ repr\'esente les d\'ependances
451   - des t\^aches et $w$ les temps d'ex\'ecution de la t\^ache. La fonction $\sigma$ donne donc l'heure de d\'ebut de
452   - chacune des t\^aches. La d\'efinition dit que si une t\^ache $v$ d\'epend d'une t\^ache $u$ alors
453   - la date de d\'ebut de $v$ sera plus grande ou \'egale au d\'ebut de l'ex\'ecution de la t\^ache $u$ plus son
454   - temps d'ex\'ecution.
  397 +\begin{table}
  398 +\centering
  399 +\begin{tabular}{|c|c|c|c|c|}\hline
  400 +Input & Stages & Computation time & Vivado time & Redpitaya time \\\hline\hline
  401 + & 1 & 0.07~s & $\approx$ 20 min & $\approx$ 1 min \\
  402 + & 2 & 1.31~s & $\approx$ 20 min & $\approx$ 1 min \\
  403 +PRN & 3 & 119~s ($\approx$ 2~min) & $\approx$ 20 min & $\approx$ 1 min \\
  404 + & 4 & 270~s ($\approx$ 5~min) & $\approx$ 20 min & $\approx$ 1 min \\
  405 + & 5 & 5998~s ($\approx$ 2~h) & $\approx$ 20 min & $\approx$ 1 min \\\hline
  406 +\end{tabular}
  407 +\caption{Time to compute and deploy the designs for PRN 1000}
  408 +\label{tbl:time_prn_1000}
  409 +\end{table}
455 410  
456   - Une autre d\'efinition importante qui est propos\'ee par Leung et al. \cite{def2-ordo} est :
457   - \begin{definition}
458   - \label{def-ordo2}
459   - L'ordonnancement traite de l'allocation de ressources rares à des activit\'es avec
460   - l'objectif d'optimiser un ou plusieurs critères de performance.
461   - \end{definition}
  411 +\begin{table}
  412 +\centering
  413 +\begin{tabular}{|c|c|c|c|c|}\hline
  414 +Input & Stages & Computation time & Vivado time & Redpitaya time \\\hline\hline
  415 + & 1 & 0.07~s & $\approx$ 20 min & $\approx$ 1 min \\
  416 + & 2 & 0.75~s & $\approx$ 20 min & $\approx$ 1 min \\
  417 +PRN & 3 & 36~s & - & - \\
  418 + & 4 & 14500~s ($\approx$ 4~h) & $\approx$ 20 min & $\approx$ 1 min \\
  419 + & 5 & 74237~s ($\approx$ 20~h) & $\approx$ 20 min & $\approx$ 1 min \\\hline
  420 +\end{tabular}
  421 +\caption{Time to compute and deploy the designs for PRN 2000}
  422 +\label{tbl:time_prn_2000}
  423 +\end{table}
462 424  
463   - Cette d\'efinition est plus g\'en\'erique mais elle nous int\'eresse d'avantage que la d\'efinition \ref{def-ordo1}.
464   - En effet, la partie qui nous int\'eresse dans cette première d\'efinition est le respect de la pr\'ec\'edance des t\^aches.
465   - Dans les faits les dates de d\'ebut ne nous int\'eressent pas r\'eellement.
  425 +\section{Experiments with fixed rejection target}
466 426  
467   - En revanche la d\'efinition \ref{def-ordo2} sera au c\oe{}ur du projet. Pour se convaincre de cela,
468   - il nous faut d'abord d\'efinir quel est le type de problème d'ordonnancement qu'on traite et quelles
469   - sont les m\'ethodes qu'on peut appliquer.
  427 +\begin{figure}
  428 +\centering
  429 +\includegraphics[width=\linewidth]{images/min_area/prn_50}
  430 +\caption{Results for design with PRN as data input and 50 dB as aimed rejection level}
  431 +\label{fig:prn_500}
  432 +\end{figure}
470 433  
471   - Les problèmes d'ordonnancement peuvent être class\'es en diff\'erentes cat\'egories :
472   - \begin{itemize}
473   - \item T\^aches ind\'ependantes : dans cette cat\'egorie de problèmes, les t\^aches sont complètement ind\'ependantes
474   - les unes des autres. Dans notre cas, ce n'est pas le plus adapt\'e.
475   - \item Graphe de t\^aches : la d\'efinition \ref{def-ordo1} d\'ecrit cette cat\'egorie. La plupart du temps,
476   - les t\^aches sont repr\'esent\'ees par une DAG. Cette cat\'egorie est très proche de notre cas puisque nous devons \'egalement ex\'ecuter
477   - des t\^aches qui ont un certain nombre de d\'ependances. On pourra même dire que dans certain cas,
478   - on a des anti-arbres, c'est à dire que nous avons une multitude de t\^aches d'entr\'ees qui convergent vers une
479   - t\^ache de fin.
480   - \item Workflow : cette cat\'egorie est une sous cat\'egorie des graphes de t\^aches dans le sens où
481   - il s'agit d'un graphe de t\^aches r\'ep\'et\'e de nombreuses de fois. C'est exactement ce type de problème
482   - que nous traitons ici.
483   - \end{itemize}
  434 +\begin{figure}
  435 +\centering
  436 +\includegraphics[width=\linewidth]{images/min_area/prn_100}
  437 +\caption{Results for design with PRN as data input and 50 dB as aimed rejection level}
  438 +\label{fig:prn_100}
  439 +\end{figure}
484 440  
485   - Bien entendu, cette liste n'est pas exhaustive et il existe de nombreuses autres classifications et sous-classifications
486   - de ces problèmes. Nous n'avons parl\'e ici que des cat\'egories les plus communes.
  441 +\begin{figure}
  442 +\centering
  443 +\includegraphics[width=\linewidth]{images/min_area/prn_150}
  444 +\caption{Results for design with PRN as data input and 2000 a.u. as max arbitrary space}
  445 +\label{fig:prn_150}
  446 +\end{figure}
487 447  
488   - Un autre point à d\'efinir, est le critère d'optimisation. Il y a là encore un grand nombre de
489   - critères possibles. Nous allons donc parler des principaux :
490   - \begin{itemize}
491   - \item Temps de compl\'etion total (ou Makespan en anglais) : ce critère est l'un des critères d'optimisation
492   - les plus courant. Il s'agit donc de minimiser la date de fin de la dernière t\^ache de l'ensemble des
493   - t\^aches à ex\'ecuter. L'enjeu de cette optimisation est donc de trouver l'ordonnancement optimal permettant
494   - la fin d'ex\'ecution au plus tôt.
495   - \item Somme des temps d'ex\'ecution (Flowtime en anglais) : il s'agit de faire la somme des temps d'ex\'ecution de toutes les t\^aches
496   - et d'optimiser ce r\'esultat.
497   - \item Le d\'ebit : ce critère quant à lui, vise à augmenter au maximum le d\'ebit de traitement des donn\'ees.
498   - \end{itemize}
  448 +\section{Conclusion}
499 449  
500   - En plus de cela, on peut avoir besoin de plusieurs critères d'optimisation. Il s'agit dans ce cas d'une optimisation
501   - multi-critères. Bien entendu, cela complexifie d'autant plus le problème car la solution la plus optimale pour un
502   - des critères peut être très mauvaise pour un autre critère. De ce cas, il s'agira de trouver une solution qui permet
503   - de faire le meilleur compromis entre tous les critères.
  450 +\section*{Acknowledgement}
504 451  
505   - \subsection{Formalisation du problème}
506   - \label{formalisation}
507   - Maintenant que nous avons donn\'e le vocabulaire li\'e à l'ordonnancement, nous allons pouvoir essayer caract\'eriser
508   - formellement notre problème. En effet, nous allons reprendre les contraintes \'enonc\'ees dans la sections \ref{def-contraintes}
509   - et nous essayerons de les formaliser le plus finement possible.
  452 +This work is supported by the ANR Programme d'Investissement d'Avenir in
  453 +progress at the Time and Frequency Departments of the FEMTO-ST Institute
  454 +(Oscillator IMP, First-TF and Refimeve+), and by R\'egion de Franche-Comt\'e.
  455 +The authors would like to thank E. Rubiola, F. Vernotte, and G. Cabodevila
  456 +for support and fruitful discussions.
510 457  
511   - Comme nous l'avons dit, une t\^ache est un bloc de traitement. Chaque t\^ache $i$ dispose d'un ensemble de paramètres
512   - que nous nommerons $\mathcal{P}_{i}$. Cet ensemble $\mathcal{P}_i$ est propre à chaque t\^ache et il variera d'une
513   - t\^ache à l'autre. Nous reviendrons plus tard sur les paramètres qui peuvent composer cet ensemble.
514   -
515   - Outre cet ensemble $\mathcal{P}_i$, chaque t\^ache dispose de paramètres communs :
516   - \begin{itemize}
517   - \item Dur\'ee de la t\^ache : Comme nous l'avons dit auparavant, dans le cadre d'un FPGA le temps est compt\'e en nombre de coup d'horloge.
518   - En outre, les blocs sont toujours sollicit\'es, certains même sont capables de lire et de renvoyer une r\'esultat à chaque coups d'horloge.
519   - Donc la dur\'ee d'une t\^ache ne peut être le laps de temps entre l'entr\'ee d'une donn\'ee et la sortie d'une autre. Nous d\'efinirons la
520   - dur\'ee comme le temps de traitement d'une donn\'ee, c'est à dire la diff\'erence de temps entre la date de sortie d'une donn\'ee
521   - et de sa date d'entr\'ee. Nous nommerons cette dur\'ee $\delta_i$. % Je devrais la nomm\'ee w comme dans la def2
522   - \item La pr\'ecision : La pr\'ecision d'une donn\'ee est le nombre de bits significatifs qu'elle compte. En effet, au fil des traitements
523   - les pr\'ecisions peuvent varier. On nomme donc la pr\'ecision d'entr\'ee d'une t\^ache $i$ comme $\pi_i^-$ et la pr\'ecision en sortie $\pi_i^+$.
524   - \item La fr\'equence du flux en entr\'ee (ou sortie) : Cette fr\'equence repr\'esente la fr\'equence des donn\'ees qui arrivent (resp. sortent).
525   - Selon les t\^aches, les fr\'equences varieront. En effet, certains blocs ralentissent le flux c'est pourquoi on distingue la fr\'equence du
526   - flux en entr\'ee et la fr\'equence en sortie. Nous nommerons donc la fr\'equence du flux en entr\'ee $f_i^-$ et la fr\'equence en sortie $f_i^+$.
527   - \item La quantit\'e de donn\'ees en entr\'ee (ou en sortie) : Il s'agit de la quantit\'e de donn\'ees que le bloc s'attend à traiter (resp.
528   - est capable de produire). Les t\^aches peuvent avoir à traiter des gros volumes de donn\'ees et n'en ressortir qu'une partie. Cette
529   - fois encore, il nous faut donc diff\'erencier l'entr\'ee et la sortie. Nous nommerons donc la quantit\'e de donn\'ees entrantes $q_i^-$
530   - et la quantit\'e de donn\'ees sortantes $q_i^+$ pour une t\^ache $i$.
531   - \item Le d\'ebit d'entr\'ee (ou de sortie) : Ce paramètre correspond au d\'ebit de donn\'ees que la t\^ache est capable de traiter ou qu'elle
532   - fournit en sortie. Il s'agit simplement de l'expression des deux pr\'ec\'edents paramètres. Nous d\'efinirons donc la d\'ebit entrant de la
533   - t\^ache $i$ comme $d_i^-\ =\ q_i^-\ *\ f_i^-$ et le d\'ebit sortant comme $d_i^+\ =\ q_i^+\ *\ f_i^+$.
534   - \item La taille de la t\^ache : La taille dans les FPGA \'etant limit\'ee, ce paramètre exprime donc la place qu'occupe la t\^ache au sein du bloc.
535   - Nous nommerons $\mathcal{A}_i$ cette taille.
536   - \item Les pr\'ed\'ecesseurs et successeurs d'une t\^ache : cela nous permet de connaître les t\^aches requises pour pouvoir traiter
537   - la t\^ache $i$ ainsi que les t\^aches qui en d\'ependent. Ces ensemble sont not\'es $\Gamma _i ^-$ et $ \Gamma _i ^+$ \\
538   - %TODO Est-ce vraiment un paramètre ?
539   - \end{itemize}
540   -
541   - Ces diff\'erents paramètres communs sont fortement li\'es aux \'el\'ements de $\mathcal{P}_i$. Voici quelques exemples de relations
542   - que nous avons identifi\'ees :
543   - \begin{itemize}
544   - \item $ \delta _i ^+ \ = \ \mathcal{F}_{\delta}(\pi_i^-,\ \pi_i^+,\ d_i^-,\ d_i^+,\ \mathcal{P}_i) $ donne le temps d'ex\'ecution
545   - de la t\^ache en fonction de la pr\'ecision voulue, du d\'ebit et des paramètres internes.
546   - \item $ \pi _i ^+ \ = \ \mathcal{F}_{p}(\pi_i^-,\ \mathcal{P}_i) $, la fonction $F_p$ donne la pr\'ecision en sortie selon la pr\'ecision de d\'epart
547   - et les paramètres internes de la t\^ache.
548   - \item $d_i^+\ =\ \mathcal{F}_d(d_i^-, \mathcal{P}_i)$, la fonction $F_d$ donne le d\'ebit sortant de la t\^ache en fonction du d\'ebit
549   - sortant et des variables internes de la t\^ache.
550   - \item $A_i^+\ =\ \mathcal{F}_A(\pi_i^-,\ \pi_i^+,\ d_i^-,\ d_i^+, \mathcal{P}_i)$
551   - \end{itemize}
552   - Pour le moment, nous ne sommes pas capables de donner une d\'efinition g\'en\'erale de ces fonctions. Mais en revanche,
553   - sur quelques exemples simples (cf. \ref{def-contraintes}), nous parvenons à donner une \'evaluation de ces fonctions.
554   -
555   - Maintenant que nous avons donn\'e toutes les notations utiles, nous allons \'enoncer des contraintes relatives à notre problème. Soit
556   - un DGA $G(V,\ E)$, on a pour toutes arêtes $(i, j)\ \in\ E$ les in\'equations suivantes :
557   -
558   - \paragraph{Contrainte de pr\'ecision :}
559   - Cette in\'equation traduit la contrainte de pr\'ecision d'une t\^ache à l'autre :
560   - \begin{align*}
561   - \pi _i ^+ \geq \pi _j ^-
562   - \end{align*}
563   -
564   - \paragraph{Contrainte de d\'ebit :}
565   - Cette in\'equation traduit la contrainte de d\'ebit d'une t\^ache à l'autre :
566   - \begin{align*}
567   - d _i ^+ = q _j ^- * (f_i + (1 / s_j) ) & \text{ où } s_j \text{ est une valeur positive de temporisation de la t\^ache}
568   - \end{align*}
569   -
570   - \paragraph{Contrainte de synchronisation :}
571   - Il s'agit de la contrainte qui impose que si à un moment du traitement, le DAG se s\'epare en plusieurs branches parallèles
572   - et qu'elles se rejoignent plus tard, la somme des latences sur chacune des branches soit la même.
573   - Plus formellement, s'il existe plusieurs chemins disjoints, partant de la t\^ache $s$ et allant à la t\^ache de $f$ alors :
574   - \begin{align*}
575   - \forall \text{ chemin } \mathcal{C}1(s, .., f),
576   - \forall \text{ chemin } \mathcal{C}2(s, .., f)
577   - \text{ tel que } \mathcal{C}1 \neq \mathcal{C}2
578   - \Rightarrow
579   - \sum _{i} ^{i \in \mathcal{C}1} \delta_i = \sum _{i} ^{i \in \mathcal{C}2} \delta_i
580   - \end{align*}
581   -
582   - \paragraph{Contrainte de place :}
583   - Cette in\'equation traduit la contrainte de place dans le FPGA. La taille max de la puce FPGA est nomm\'e $\mathcal{A}_{FPGA}$ :
584   - \begin{align*}
585   - \sum ^{\text{t\^ache } i} \mathcal{A}_i \leq \mathcal{A}_{FPGA}
586   - \end{align*}
587   -
588   - \subsection{Exemples de mod\'elisation}
589   - \label{exemples-modeles}
590   - Nous allons maintenant prendre quelques blocs de traitement simples afin d'illustrer au mieux notre modèle.
591   - Pour tous nos exemple, nous prendrons un d\'ebit en entr\'ee de 200 Mo/s avec une pr\'ecision de 16 bit.
592   -
593   - Prenons tout d'abord l'exemple d'un bloc de d\'ecimation. Le but de ce bloc est de ralentir le flux en ne gardant
594   - que certaines donn\'ees à intervalle r\'egulier. Cet intervalle est appel\'e le facteur de d\'ecimation, on le notera $N$.
595   -
596   - Donc d'après notre mod\'elisation :
597   - \begin{itemize}
598   - \item $N \in \mathcal{P}_i$
599   - %TODO N ou 1 ?
600   - \item $\delta _i = N\ c.h.$ (coup d'horloge)
601   - \item $\pi _i ^+ = \pi _i ^- = 16 bits$
602   - \item $f _i ^+ = f _i ^-$
603   - \item $q _i ^+ = q _i ^- / N$
604   - \item $d _i ^+ = q _i ^- / N / f _i ^-$
605   - \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\
606   - %TODO Je ne sais pas trouver la taille...
607   - \end{itemize}
608   -
609   - Un autre exemple int\'eressant que l'on peut donner, c'est le cas des spliters. Il s'agit la aussi d'un bloc très
610   - simple qui permet de dupliquer un flux. On peut donc donner un nombre de sorties à cr\'eer, on note ce paramètre
611   - %TODO pas très inspir\'e...
612   - $X$. Voici ce que donne notre mod\'elisation :
613   - \begin{itemize}
614   - \item $X \in \mathcal{P}_i$
615   - \item $\delta _i = 1\ c.h.$
616   - \item $\pi _i ^+ = \pi _i ^- = 16 bits$
617   - \item $f _i ^+ = f _i ^-$
618   - \item $q _i ^+ = q _i ^-$
619   - \item $d _i ^+ = d _i ^-$
620   - \item $\Gamma _i ^- = 1$
621   - \item $\Gamma _i ^+ = X$\\
622   - \end{itemize}
623   -
624   - L'exemple suivant traite du cas du shifter. Il s'agit d'un bloc qui a pour but de diminuer le nombre de bits des
625   - donn\'ees afin d'acc\'el\'erer les traitement sur les blocs suivants. On peut donc donner le nombre de bits à shifter,
626   - on note ce paramètre $S$. Voici ce que donne notre mod\'elisation :
627   - \begin{itemize}
628   - \item $S \in \mathcal{P}_i$
629   - \item $\delta _i = 1\ c.h.$
630   - \item $\pi _i ^+ = \pi _i ^- - S$
631   - \item $f _i ^+ = f _i ^-$
632   - \item $q _i ^+ = q _i ^-$
633   - \item $d _i ^+ = d _i ^-$
634   - \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\
635   - \end{itemize}
636   -
637   - Nous allons traiter un dernier exemple un peu plus complexe, le cas d'un filtre d\'ecimateur (ou FIR). Ce bloc
638   - est compos\'e de beaucoup de paramètres internes. On peut d\'efinir un nombre d'\'etages $E$, qui repr\'esente le nombre
639   - d'it\'erations à faire avant d'arrêter le traitement. Afin d'effectuer son filtrage, on doit donner au bloc un ensemble
640   - de coefficients $C$ et par cons\'equent ces coefficients ont leur propre pr\'ecision $\pi _C$. Pour finir, le dernier
641   - paramètre à donner est le facteur de d\'ecimation $N$. Si on applique notre mod\'elisation, on peut obtenir cela :
642   - \begin{itemize}
643   - \item $E \in \mathcal{P}_i$
644   - \item $C \in \mathcal{P}_i$
645   - \item $\pi _C \in \mathcal{P}_i$
646   - \item $N \in \mathcal{P}_i$
647   - \item $\delta _i = E * |C| * q_i^-\ c.h.$ %Trop simpliste
648   - \item $\pi _i ^+ = \pi _i ^- * \pi _C$
649   - \item $f _i ^+ = f _i ^-$
650   - \item $q _i ^+ = q _i ^- / N$
651   - \item $d _i ^+ = q _i ^- / N / f _i ^-$
652   - \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\
653   - \end{itemize}
654   -
655   - Ces exemples ne sont que des modèles provisoires; pour s'assurer de leur performance, il faudra les
656   - confronter à des simulations.
657   -
658   -
659   -Bien que les articles sur les skeletons, \cite{gwen-cogen}, \cite{skeleton} et \cite{hide}, nous aient donn\'e des indices sur une possible
660   - mod\'elisation, ils \'etaient encore trop focalis\'es sur l'optimisation spatiale des blocs. Nous nous sommes donc inspir\'es de ces travaux
661   - pour proposer notre modèle, en faisant abstraction des optimisations bas niveau.
  458 +\bibliographystyle{IEEEtran}
  459 +\balance
  460 +\bibliography{references,biblio}
  461 +\end{document}
images/custom_criterion.pdf
No preview for this file type
images/max_rejection/prn_1000.pdf
No preview for this file type
images/max_rejection/prn_2000.pdf
No preview for this file type
images/max_rejection/prn_500.pdf
No preview for this file type
images/mean_criterion.pdf
No preview for this file type
images/min_area/prn_100.pdf
No preview for this file type
images/min_area/prn_150.pdf
No preview for this file type
images/min_area/prn_50.pdf
No preview for this file type
images/sum_rejection.pdf
No preview for this file type