Commit 842e804be4a295da293fe60a2399ce6987d0a453
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
- ifcs2018_journal.tex
- images/custom_criterion.pdf
- images/max_rejection/prn_1000.pdf
- images/max_rejection/prn_2000.pdf
- images/max_rejection/prn_500.pdf
- images/mean_criterion.pdf
- images/min_area/prn_100.pdf
- images/min_area/prn_150.pdf
- images/min_area/prn_50.pdf
- images/sum_rejection.pdf
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