diff --git a/demo_critere_filtre.m b/demo_critere_filtre.m new file mode 100644 index 0000000..2e864d5 --- /dev/null +++ b/demo_critere_filtre.m @@ -0,0 +1,89 @@ +clear all; + +global N = 2048; + +function rejection = rejection_criteria(log_data, fc) + N = length(log_data); + + % Index of the first point in the tail fir + index_tail = round((fc + 0.1) * N) + 1; + + % Index of th last point on the band + index_band = round((fc - 0.1) * N); + + % Get the worst rejection in stopband + worst_rejection = -max(log_data(index_tail:end)); + + % Get the total of deviation in passband + worst_band = mean(-1 * abs(log_data(1:index_band))); + + % Compute the rejection + passband_malus = 10; % weighted value to penalize the deviation in passband + rejection = worst_band * passband_malus + worst_rejection; +endfunction + +function [h, log_curve, rejection] = compute_freqz(filename) + global N; + + b = load(filename); + [h, w] = freqz(b, 1, N/2); + mag = abs(h); + mag = mag ./ mag(1); + log_curve = 20 * log10(mag); + + rejection = rejection_criteria(log_curve, 0.5); +endfunction + +# Stages +hTotal = ones(N/2, 1); +% [h, curve1, c1] = compute_freqz("filters/fir1/fir1_033_int08"); % 1) -8dB +% [h, curve1, c1] = compute_freqz("filters/fir1/fir1_037_int08"); % 2) -9dB +[h, curve1, c1] = compute_freqz("filters/fir1/fir1_037_int08"); +hTotal = hTotal .* h; +% [h, curve2, c2] = compute_freqz("filters/fir1/fir1_033_int10"); % 1) -8dB +% [h, curve2, c2] = compute_freqz("filters/fir1/fir1_033_int10"); % 2) -9dB +[h, curve2, c2] = compute_freqz("filters/fir1/fir1_033_int10"); +hTotal = hTotal .* h; +% [h, curve3, c3] = compute_freqz("filters/fir1/fir1_033_int08"); +% hTotal = hTotal .* h; +% [h, curve4, c4] = compute_freqz("filters/fir1/fir1_033_int10"); +% hTotal = hTotal .* h; +% [h, curve5, c5] = compute_freqz("filters/fir1/fir1_015_int11"); +% hTotal = hTotal .* h; + +# Log total +mag = abs(hTotal); +mag = mag ./ mag(1); +log_freqz = 20 * log10(mag); +cTotal = rejection_criteria(log_freqz, 0.5); + +[ c1+c2 cTotal ] +% [ c1+c2+c3+c4+c5 cTotal ] + +clf; +f_axe = [1:N/2] * 2/N; +hold on; +color = [0/255 114/255 189/255]; +plot(f_axe, curve1, "linewidth", 1.5, "color", color); +plot([0 1], [-c1 -c1], "--", "linewidth", 1.5, "color", color); + +color = [217/255 83/255 25/255]; +plot(f_axe, curve2, "linewidth", 1.5, "color", color); +plot([0 1], [-c2 -c2], "--", "linewidth", 1.5, "color", color); +% plot(f_axe, curve3, "linewidth", 1.5); +% plot(f_axe, curve4, "linewidth", 1.5); +% plot(f_axe, curve5, "linewidth", 1.5); + +color = [237/255 177/255 32/255]; +plot(f_axe, log_freqz, "linewidth", 1.5, "color", color); +plot([0 1], [-cTotal -cTotal], "--", "linewidth", 1.5, "color", color); +plot([0 1], [-(c1 + c2) -(c1 + c2)], ":", "linewidth", 1.5, "color", color); + +plot([0.4 0.4], [-500 50], "k:") +plot([0.6 0.6], [-500 50], "k:") +ylim([-200 10]) +hold off; + +xlabel("Normalized Frequency (a.u.)") +ylabel("Rejection (dB)") +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") diff --git a/ifcs2018_journal.tex b/ifcs2018_journal.tex index 9eea1c4..216f688 100644 --- a/ifcs2018_journal.tex +++ b/ifcs2018_journal.tex @@ -1,8 +1,3 @@ -% JMF : revoir l'abstract : on y avait mis le Zynq7010 de la redpitaya en montrant -% comment optimiser les perfs a surface finie. Ici aussi on tombait dans le cas ou` -% la solution a 1 seul FIR n'etait simplement pas synthetisable => fusionner les deux -% contributions pour le papier TUFFC - \documentclass[a4paper,conference]{IEEEtran/IEEEtran} \usepackage{graphicx,color,hyperref} \usepackage{amsfonts} @@ -12,6 +7,11 @@ \usepackage{algorithm2e} \usepackage{url,balance} \usepackage[normalem]{ulem} +\usepackage{tikz} +\usetikzlibrary{positioning,fit} +\usepackage{multirow} +\usepackage{scalefnt} + % correct bad hyphenation here \hyphenation{op-tical net-works semi-conduc-tor} \textheight=26cm @@ -89,7 +89,10 @@ data being processed. We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the outputs $y_k$ -$$y_n=\sum_{k=0}^N b_k x_{n-k}$$ +\begin{align} + y_n=\sum_{k=0}^N b_k x_{n-k} + \label{eq:fir_equation} +\end{align} As opposed to an implementation on a general purpose processor in which word size is defined by the processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since @@ -107,20 +110,6 @@ number representation is not efficient for fast arithmetic computation by an FPG we select to quantify these floating point values into integer values. This quantization will result in some precision loss. -%As illustrated in Fig. \ref{float_vs_int}, we see that we aren't -%need too coefficients or too sample size. If we have lot of coefficients but a small sample size, -%the first and last are equal to zero. But if we have too sample size for few coefficients that not improve the quality. - -% JMF je ne comprends pas la derniere phrase ci-dessus ni la figure ci dessous -% 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) -% et que l'inverse trop de bit sur pas assez de coeff on ne gagne rien, je vais essayer de la reformuler - -%\begin{figure}[h!tb] -%\includegraphics[width=\linewidth]{images/float-vs-integer.pdf} -%\caption{Impact of the quantization resolution of the coefficients} -%\label{float_vs_int} -%\end{figure} - \begin{figure}[h!tb] \includegraphics[width=\linewidth]{images/demo_filtre} \caption{Impact of the quantization resolution of the coefficients: the quantization is @@ -148,514 +137,325 @@ generated at each clock cycle. The FIR filters will not be considered to decimat current implementation: the decimation is assumed to be located after the FIR cascade at the moment. -\section{Filter optimization} - -A basic approach for implementing the FIR filter is to compute the transfer function of -a monolithic filter: this single filter defines all coefficients with the same resolution -(number of bits) and processes data represented with their own resolution. Meeting the -filter shape requires a large number of coefficients, limited by resources of the FPGA since -this filter must process data stream at the radiofrequency sampling rate after the mixer. - -An optimization problem \cite{leung2004handbook} aims at improving one or many -performance criteria within a constrained resource environment. Amongst the tools -developed to meet this aim, Mixed-Integer Linear Programming (MILP) provides the framework to -formally define the stated problem and search for an optimal use of available -resources \cite{yu2007design, kodek1980design}. - -First we need to ensure that our problem is a real optimization problem. When -designing a processing function in the FPGA, we aim at meeting some requirement such as -the throughput, the computation time or the noise rejection noise. However, due to limited -resources to design the process like BRAM (high performance RAM), DSP (Digital Signal Processor) -or LUT (Look Up Table), a tradeoff must be generally searched between performance and available -computational resources: optimizing some criteria within finite, limited -resources indeed matches the definition of a classical optimization problem. - -Specifically the degrees of freedom when addressing the problem of replacing the single monolithic -FIR with a cascade of optimized filters are the number of coefficients $N_i$ of each filter $i$, -the number of bits $C_i$ representing the coefficients and the number of bits $D_i$ needed to represent -the data $x_k$ fed to each filter as provided by the acquisition or previous processing stage. -Because each FIR in the chain is fed the output of the previous stage, -the optimization of the complete processing chain within a constrained resource environment is not -trivial. The resource occupation of a FIR filter is considered as $C_i \times N_i$ which aims -at approximating the number of bits needed in a worst case condition to represent the output of the -FIR. Indeed, the number of bits generated by the $i$th FIR is $(C_i+D_i)\times\log_2(N_i)$, but the -$\log$ function is avoided for its incompatibility with a linear programming description, and -the simple product is approximated as the number of gates needed to perform the calculation. Such an -occupied area estimate assumes that the number of gates scales as the number of bits and the number -of coefficients, but does not account for the detailed implementation of the hardware. Indeed, -various FPGA implementations will provide different hardware functionalities, and we shall consider -at the end of the design a synthesis step using vendor software to assess the validity of the solution -found. As an example of the limitation linked to the lack of detailed hardware consideration, Block Random -Access Memory (BRAM) used to store filter coefficients are not shared amongst filters, and multiplications -are most efficiently implemented by using DSP blocks whose input word -size is finite. DSPs are a scarce resource to be saved in a practical implementation. Keeping a high -abstraction on the resource occupation is nevertheless selected in the following discussion in order -to leave enough degrees of freedom in the problem to try and find original solutions: too many -constraints in the initial statement of the problem leave little room for finding an optimal solution. +\section{Methodology description} +We want create a new methodology to develop any Digital Signal Processing (DSP) chain +and for any hardware platform (Altera, Xilinx...). To do this we have defined an +abstract model to represent some basic operations of DSP. + +For the moment, we are focused on only two operations: the filtering and the shift of data. +We have chosen this basic operation because the shifting and the filtering have already be studied in +lot of works {\color{red} mettre les nouvelles référence ici} hence it will be easier +to check and validate our results. + +However having only two operations is insufficient to work with complex DSP but +in this paper we only want demonstrate the relevance and the efficiency of our approach. +In future work it will be possible to add more operations and we are able to +model any DSP chain. + +We will apply our methodology on very simple DSP chain. We generate a digital signal +thanks at generator of Pseudo-Random Number (PRN) or thanks at an Analog to Digital +Converter (ADC). Once we have a digital signal, we filter it to decrease the noise level. +Finally we stored some burst of filtered samples before post-processing it. +% TODO: faire un schéma +In this particular case, we want optimize the filtering step to have the best noise +rejection for constrain number of resource or to have the minimal resources +consumption for a given rejection objective. + +The first step of our approach is to model the DSP chain and since we just optimize +the filtering, we have not modeling the PRN generator or the ADC. The filtering can be +done by two ways. The first one we use only one FIR filter with lot of coefficients +to rejection the noise, we called this approach a monolithic approach. And the second one +we select different FIR filters with less coefficients the monolithic filter and we cascaded +it to filtering the signal. + +After each filter we leave the possibility of shifting the filtered data to consume +less resources. Hence in the case of cascaded filter, we define a stage as a filter +and a shifter (the shift could be omitted if we do not need to divide the filtered data). + +\subsection{Model of a FIR filter} +A cascade of filter are composed of $n$ stage. In stage $i$ ($1 \leq i \leq n$) +the FIR has $C_i$ coefficients and each coefficients are integer values with $\pi^C_i$ +bits and the filtered data are shifted of $\pi^S_i$ bits. We define also $\pi^-_i$ as +the size of input data and $\pi^+_i$ as the size of output data. The figure~\ref{fig:fir_stage} +shows a filtering stage. + +\begin{figure} + \centering + \begin{tikzpicture}[node distance=2cm] + \node[draw,minimum size=1.3cm] (FIR) { $C_i, \pi_i^C$ } ; + \node[draw,minimum size=1.3cm] (Shift) [right of=FIR, ] { $\pi_i^S$ } ; + \node (Start) [left of=FIR] { } ; + \node (End) [right of=Shift] { } ; + + \node[draw,fit=(FIR) (Shift)] (Filter) { } ; + + \draw[->] (Start) edge node [above] { $\pi_i^-$ } (FIR) ; + \draw[->] (FIR) -- (Shift) ; + \draw[->] (Shift) edge node [above] { $\pi_i^+$ } (End) ; + \end{tikzpicture} + \caption{A single filter is composed of a FIR (on the left) and a Shifter (on the right)} + \label{fig:fir_stage} +\end{figure} -\begin{figure}[h!tb] -\begin{center} -\includegraphics[width=.5\linewidth]{schema2} -\caption{Shape of the filter transmitted power $P$ as a function of frequency: -the bandpass BP is considered to occupy the initial -40\% of the Nyquist frequency range, the stopband the last 40\%, allowing 20\% transition -width.} -\label{rejection-shape} -\end{center} +FIR $i$ can reject $F(C_i, \pi_i^C)$ dB. $F$ is determined numerically. +To measure this rejection, we use GNU Octave software to design FIR filter coefficients thanks to two +algorithms (\texttt{firls} and \texttt{fir1}). +For each configuration $(C_i, \pi_i^C)$, we first create a FIR with floating point coefficients and a given $C_i$ number of coefficients. +Then, the floating point coefficients are discretized into integers. In order to ensure that the coefficients are coded on $\pi_i^C$~bits effectively, +the coefficients are normalized by their absolute maximum before being scaled to integer coefficients. +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. + +With these coefficients, the \texttt{freqz} function is used to estimate the magnitude of the filter. +Comparing the performance between FIRs requires however a unique criterion. As shown in figure~\ref{fig:fir_mag}, +the FIR magnitude exhibits two parts. + +\begin{figure} + \centering + \begin{tikzpicture}[scale=0.3] + \draw[<->] (0,15) -- (0,0) -- (21,0) ; + \draw[thick] (0,12) -- (8,12) -- (20,0) ; + + \draw (0,14) node [left] { $P$ } ; + \draw (20,0) node [below] { $f$ } ; + + \draw[>=latex,<->] (0,14) -- (8,14) ; + \draw (4,14) node [above] { passband } node [below] { $40\%$ } ; + + \draw[>=latex,<->] (8,14) -- (12,14) ; + \draw (10,14) node [above] { transition } node [below] { $20\%$ } ; + + \draw[>=latex,<->] (12,14) -- (20,14) ; + \draw (16,14) node [above] { stopband } node [below] { $40\%$ } ; + + \draw[>=latex,<->] (16,12) -- (16,8) ; + \draw (16,10) node [right] { rejection } ; + + \draw[dashed] (8,-1) -- (8,14) ; + \draw[dashed] (12,-1) -- (12,14) ; + + \draw[dashed] (8,12) -- (16,12) ; + \draw[dashed] (12,8) -- (16,8) ; + + \end{tikzpicture} + +% \includegraphics[width=.5\linewidth]{images/fir_magnitude} +\caption{Shape of the filter transmitted power $P$ as a function of frequency $f$: +the passband is considered to occupy the initial 40\% of the Nyquist frequency range, +the stopband the last 40\%, allowing 20\% transition width.} +\label{fig:fir_mag} \end{figure} -Following these considerations, the model is expressed as: -\begin{align} - \begin{cases} - \mathcal{R}_i &= \mathcal{F}(N_i, C_i)\\ - \mathcal{A}_i &= N_i \times C_i\\ - \Delta_i &= \Delta _{i-1} + \mathcal{P}_i - \end{cases} - \label{model-FIR} -\end{align} -To explain the system \ref{model-FIR}, $\mathcal{R}_i$ represents the stopband rejection dependence with $N_i$ and $C_i$, $\mathcal{A}_i$ -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$. -Since the function $\mathcal{F}$ cannot be explictly expressed, we run simulations to determine the rejection depending -on $N_i$ and $C_i$. However, selecting the right filter requires a clear definition of the rejection criterion. Selecting an -incorrect criterion will lead the linear program solver to produce a solution which might not meet the user requirements. -Hence, amongst various criteria including the mean or median value of the FIR response in the stopband as will -be illustrated lated (section \ref{median}), we have designed -a criterion aimed at avoiding ripples in the passband and considering the maximum of the FIR spectral response in the stopband -(Fig. \ref{rejection-shape}). The bandpass criterion is defined as the sum of the absolute values of the spectral response -in the bandpass, reminiscent of a standard deviation of the spectral response: this criterion must be minimized to avoid -ripples in the passband. The stopband transfer function maximum must also be minimized in order to improve the filter -rejection capability. Weighing these two criteria allows designing the linear program to be solved. +In the transition band, the behavior of the filter is left free, we only care about the passband and the stopband. +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. +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}. -\begin{figure}[h!tb] -\includegraphics[width=\linewidth]{images/noise-rejection.pdf} -\caption{Rejection as a function of number of coefficients and number of bits} -\label{noise-rejection} +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/mean_criterion} +\caption{Mean criterion comparison between monolithic filter and cascade filters} +\label{fig:mean_criterion} \end{figure} -The objective function maximizes the noise rejection ($\max(\Delta_{i_{\max}})$) while keeping resource -occupation below a user-defined threshold, or as will be discussed here, aims at minimizing the area -needed to reach a given rejection ($\min(S_q)$ in the forthcoming discussion, Eqs. \ref{cstr_size} -and \ref{cstr_rejection}). The MILP solver is allowed to choose the number of successive -filters, within an upper bound. The last problem is to model the noise rejection. Since filter -noise rejection capability is not modeled with linear equations, a look-up-table is generated -for multiple filter configurations in which the $C_i$, $D_i$ and $N_i$ parameters are varied: for each -one of these conditions, the low-pass filter rejection is stored as computed by the frequency response -of the digital filter (Fig. \ref{noise-rejection}). Various rejection criteria have been investigated, -including mean value of the stopband response, median value of the stopband response, or as finally -selected, maximum value in the stopband. An intuitive analysis of the chart of Fig. \ref{noise-rejection} -hints at an optimum -set of tap length and number of bit for representing the coefficients along the line of the pyramidal -shaped rejection capability function. - -Linear program formalism for solving the problem is well documented: an objective function is -defined which is linearly dependent on the parameters to be optimized. Constraints are expressed -as linear equations and solved using one of the available solvers, in our case GLPK\cite{glpk}. -With the notations used in the description of system \ref{model-FIR}, we have defined the linear problem as: -\paragraph{Variables} -\begin{align*} -x_{i,j} \in \lbrace 0,1 \rbrace & \text{ $i$ is a given filter} \\ -& \text{ $j$ is the stage} \\ -& \text{ If $x_{i,j}$ is equal to 1, the filter is selected} \\ -\end{align*} -\paragraph{Constants} -\begin{align*} -\mathcal{F} = \lbrace F_1 ... F_p \rbrace & \text{ All possible filters}\\ -& \text{ $p$ is the number of different filters} \\ -% N(i) & \text{ % Constant to let the -% number of coefficients %} \\ & \text{ -% for filter $i$}\\ -% C(i) & \text{ % Constant to let the -% number of bits of %}\\ & \text{ -% each coefficient for filter $i$}\\ -\mathcal{S}_{\max} & \text{ Total space available inside the FPGA} -\end{align*} -\paragraph{Constraints} -\begin{align} -1 \leq i \leq p & \nonumber\\ -1 \leq j \leq q & \text{ $q$ is the max of filter stage} \nonumber \\ -\forall j, \mathlarger{\sum_{i}} x_{i,j} = 1 & \text{ At most one filter by stage} \nonumber\\ -\mathcal{S}_0 = 0 & \text{ initial occupation} \nonumber\\ -\forall j, \mathcal{S}_j = \mathcal{S}_{j-1} + \mathlarger{\sum_i (x_{i,j} \times \mathcal{A}_i)} \label{cstr_size} \\ -\mathcal{S}_j \leq \mathcal{S}_{\max}\nonumber \\ -\mathcal{N}_0 = 0 & \text{ initial rejection}\nonumber\\ -\forall j, \mathcal{N}_j = \mathcal{N}_{j-1} + \mathlarger{\sum_i (x_{i,j} \times \mathcal{R}_i)} \label{cstr_rejection} \\ -\mathcal{N}_q \geqslant 160 & \text{ an user defined bound}\nonumber\\ -& \text{ (e.g. 160~dB here)}\nonumber\\\nonumber -\end{align} -\paragraph{Goal} -\begin{align*} -\min \mathcal{S}_q -\end{align*} +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/custom_criterion} +\caption{Custom criterion comparison between monolithic filter and cascade filters} +\label{fig:custom_criterion} +\end{figure} -The constraint \ref{cstr_size} means the occupation for the current stage $j$ depends on -the previous occupation and the occupation of current selected filter (it is possible -that no filter is selected for this stage). And the second one \ref{cstr_rejection} -means the same thing but for the rejection, the rejection depends the previous rejection -plus the rejection of selected filter. +Although we have a efficient criterion to estimate the rejection of one set of coefficient +we have a problem when we sum two or more criterion. If the FIR filter coefficients are the same +between the stage, we have: +$$F_{total} = F_1 + F_2$$ +But when we choose two different set of coefficient, the previous equality are not +true. The figure~\ref{fig:sum_rejection} illustrates the problem. The red and blue curves +are two different filter coefficient and we can see that their maximum on the stopband +are not at the same frequency. So when we sum the rejection criteria (the dotted yellow line) +we do not meet the dashed yellow line. Define the rejection of cascaded filters +is more difficult than just take the summation between all the rejection criteria of each filter. +However this summation gives us an upper bound for rejection although in fact we obtain +better rejection than expected. + +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/sum_rejection} +\caption{Rejection of two cascaded filters} +\label{fig:sum_rejection} +\end{figure} -\subsection{Low bandpass ripple and maximum rejection criteria} +\section{Experiments with fixed area space} -The MILP solver provides a solution to the problem by selecting a series of small FIR with -increasing number of bits representing data and coefficients as well as an increasing number -of coefficients, instead of a single monolithic filter. +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/max_rejection/prn_500} +\caption{Experimental results for design with PRN as data input and 500 a.u. as max arbitrary space} +\label{fig:prn_500} +\end{figure} -\begin{figure}[h!tb] -% \includegraphics[width=\linewidth]{images/compare-fir.pdf} -\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-noise-fixe-jmf-light.pdf} -\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR -with a cutoff frequency set at half the Nyquist frequency.} -\label{compare-fir} +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/max_rejection/prn_1000} +\caption{Experimental results for design with PRN as data input and 1000 a.u. as max arbitrary space} +\label{fig:prn_1000} \end{figure} -Fig. \ref{compare-fir} exhibits the -performance comparison between one solution and a monolithic FIR when selecting a cutoff -frequency of half the Nyquist frequency: a series of 5 FIR and a series of 10 FIR with the -same space usage are provided as selected by the MILP solver. The FIR cascade provides improved -rejection than the monolithic FIR at the expense of a lower cutoff frequency which remains to -be tuned or compensated for. - - -The resource occupation when synthesizing such FIR on a Xilinx FPGA is summarized as Tab. \ref{t1}. -We have considered a set of resources representative of the hardware platform we work on, -Avnet's Zedboard featuring a Xilinx XC7Z020-CLG484-1 Zynq System on Chip (SoC). The results reported in -Tab. \ref{t1} emphasize that implementing the monolithic single FIR is impossible due to -the insufficient hardware resources (exhausted LUT resources), while the FIR cascading 5 or 10 -filters fit in the available resources. However, in all cases the DSP resources are fully -used: while the design can be synthesized using Xilinx proprietary Vivado 2016.2 software, -implementing the design fails due to the excessive resource usage preventing routing the signals -on the FPGA. Such results emphasize on the one hand the improvement prospect of the optimization -procedure by finding non-trivial solutions matching resource constraints, but on the other -hand also illustrates the limitation of a model with an abstraction layer that does not account -for the detailed architecture of the hardware. - -\begin{table}[h!tb] -\caption{Resource occupation on a Xilinx Zynq-7000 series FPGA when synthesizing the FIR cascade -identified as optimal by the MILP solver within a finite resource criterion. The last line refers -to available resources on a Zynq-7020 as found on the Zedboard.} -\begin{center} -\begin{tabular}{|c|cccc|}\hline -FIR & BlockRAM & LookUpTables & DSP & rejection (dB)\\\hline\hline -1 (monolithic) & 1 & 76183 & 220 & -162 \\ -5 & 5 & 18597 & 220 & -160 \\ -10 & 8 & 24729 & 220 & -161 \\\hline\hline -\textbf{Zynq 7020} & \textbf{420} & \textbf{53200} & \textbf{220} & \\\hline -%\begin{tabular}{|c|ccccc|}\hline -%FIR & BRAM36 & BRAM18 & LUT & DSP & rejection (dB)\\\hline\hline -%1 (monolithic) & 1 & 0 & {\color{Red}76183} & 220 & -162 \\ -%5 & 0 & 5 & {\color{Green}18597} & 220 & -160 \\ -%10 & 0 & 8 & {\color{Green}24729} & 220 & -161 \\\hline\hline -%\textbf{Zynq 7020} & \textbf{140} & \textbf{280} & \textbf{53200} & \textbf{220} & \\\hline +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/max_rejection/prn_2000} +\caption{Experimental results for design with PRN as data input and 2000 a.u. as max arbitrary space} +\label{fig:prn_2000} +\end{figure} + +\begin{table} +\centering +\begin{tabular}{|c|c|ccc|c|c|} +\hline +\multicolumn{2}{|c|}{\multirow{2}{*}{Stage}} & \multicolumn{3}{c|}{Stage} & \multirow{2}{*}{Rejection} & \multirow{2}{*}{Area} \\ \cline{3-5} +\multicolumn{2}{|c|}{} & i = 1 & i = 2 & i = 3 & & \\ \hline + & C & 19 & - & - & & \\ +n = 1 & $pi^C$ & 7 & - & - & 33 dB & 437 a.u. \\ + & $pi^S$ & 0 & - & - & & \\ \hline + & C & 11 & 19 & - & & \\ +n = 2 & $pi^C$ & 5 & 7 & - & 53 dB & 478 a.u. \\ + & $pi^S$ & 16 & 0 & - & & \\ \hline + & C & 9 & 15 & 11 & & \\ +n = 3 & $pi^C$ & 4 & 6 & 5 & 57 dB & 499 a.u. \\ + & $pi^S$ & 16 & 3 & 0 & & \\ \hline \end{tabular} -\end{center} -%\vspace{-0.7cm} -\label{t1} +\caption{Solver results for design with PRN as data input and 500 a.u. as max arbitrary space} +\label{tbl:prn_500} \end{table} -\subsection{Alternate criteria}\label{median} +\begin{table} +\centering +{\scalefont{0.85} +\begin{tabular}{|c|c|ccccc|c|c|} +\hline +\multicolumn{2}{|c|}{\multirow{2}{*}{Stage}} & \multicolumn{5}{c|}{Stage} & \multirow{2}{*}{Rejection} & \multirow{2}{*}{Area} \\ \cline{3-7} +\multicolumn{2}{|c|}{} & i = 1 & i = 2 & i = 3 & i = 4 & i = 5 & & \\ \hline + & C & 37 & - & - & - & - & & \\ +n = 1 & $pi^C$ & 11 & - & - & - & - & 56 dB & 999 a.u. \\ + & $pi^S$ & 0 & - & - & - & - & & \\ \hline + & C & 11 & 39 & - & - & - & & \\ +n = 2 & $pi^C$ & 5 & 13 & - & - & - & 82 dB & 972 a.u. \\ + & $pi^S$ & 16 & 0 & - & - & - & & \\ \hline + & C & 9 & 31 & 19 & - & - & & \\ +n = 3 & $pi^C$ & 7 & 8 & 7 & - & - & 93 dB & 990 a.u. \\ + & $pi^S$ & 19 & 2 & 0 & - & - & & \\ \hline + & C & 9 & 19 & 17 & 11 & - & & \\ +n = 4 & $pi^C$ & 4 & 7 & 7 & 5 & - & 99 dB & 992 a.u. \\ + & $pi^S$ & 16 & 3 & 3 & 0 & - & & \\ \hline + & C & 9 & 15 & 11 & 11 & 11 & & \\ +n = 5 & $pi^C$ & 4 & 7 & 5 & 5 & 5 & 99 dB & 998 a.u. \\ + & $pi^S$ & 16 & 3 & 2 & 1 & 1 & & \\ \hline +\end{tabular} +} +\caption{Solver results for design with PRN as data input and 1000 a.u. as max arbitrary space} +\label{tbl:prn_1000} +\end{table} -Fig. \ref{compare-fir} provides FIR solutions matching well the targeted transfer -function, namely low ripple in the bandpass defined as the first 40\% of the frequency -range and maximum rejection of 160~dB in the last 40\% stopband. We illustrate now, for -demonstrating the need to properly select the optimization criterion, two cases of poor -filter shapes obtained by selecting the mean value and median value of the rejection, -with no consideration for the ripples in the bandpass. The results of the optimizations, -in these cases, are shown in Figs. \ref{compare-mean} and \ref{compare-median}. +\begin{table} +\centering +{\scalefont{0.85} +\begin{tabular}{|c|c|ccccc|c|c|} +\hline +\multicolumn{2}{|c|}{\multirow{2}{*}{Stage}} & \multicolumn{5}{c|}{Stage} & \multirow{2}{*}{Rejection} & \multirow{2}{*}{Area} \\ \cline{3-7} +\multicolumn{2}{|c|}{} & i = 1 & i = 2 & i = 3 & i = 4 & i = 5 & & \\ \hline + & C & 39 & - & - & - & - & & \\ +n = 1 & $pi^C$ & 13 & - & - & - & - & 61 dB & 1131 a.u. \\ + & $pi^S$ & 0 & - & - & - & - & & \\ \hline + & C & 37 & 39 & - & - & - & & \\ +n = 2 & $pi^C$ & 11 & 13 & - & - & - & 117 dB & 1974 a.u. \\ + & $pi^S$ & 17 & 0 & - & - & - & & \\ \hline + & C & 15 & 35 & 35 & - & - & & \\ +n = 3 & $pi^C$ & 9 & 11 & 11 & - & - & 138 dB & 1985 a.u. \\ + & $pi^S$ & 19 & 3 & 0 & - & - & & \\ \hline + & C & 11 & 27 & 27 & 23 & - & & \\ +n = 4 & $pi^C$ & 5 & 9 & 9 & 9 & - & 148 dB & 1993 a.u. \\ + & $pi^S$ & 16 & 3 & 2 & 0 & - & & \\ \hline + & C & 11 & 27 & 31 & 11 & 11 & & \\ +n = 5 & $pi^C$ & 5 & 9 & 8 & 5 & 5 & 153 dB & 2000 a.u. \\ + & $pi^S$ & 16 & 3 & 1 & 0 & 1 & & \\ \hline +\end{tabular} +} +\caption{Solver results for design with PRN as data input and 2000 a.u. as max arbitrary space} +\label{tbl:prn_2000} +\end{table} -\begin{figure}[h!tb] -\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-noise-fixe-mean-light.pdf} -\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR -with a cutoff frequency set at half the Nyquist frequency.} -\label{compare-mean} -\end{figure} +\begin{table} +\centering +\begin{tabular}{|c|c|c|c|c|}\hline +Input & Stages & Computation time & Vivado time & Redpitaya time \\\hline\hline + & 1 & 0.02~s & $\approx$ 20 min & $\approx$ 1 min \\ +PRN & 2 & 1.70~s & $\approx$ 20 min & $\approx$ 1 min \\ + & 3 & 19~s & $\approx$ 20 min & $\approx$ 1 min \\\hline +\end{tabular} +\caption{Time to compute and deploy the designs for PRN 500} +\label{tbl:time_prn_500} +\end{table} -In the case of the mean value criterion (Fig. \ref{compare-mean}), the solution is not -acceptable since the notch at the end of the transition band compensates for some unacceptable -rise in the rejection close to the Nyquist frequency. Applying such a filter might yield excessive -high frequency spurious components to be aliased at low frequency when decimating the signal. -Similarly, the lack of criterion on the bandpass shape induces a shape with poor flatness and -and slowly decaying transfer function starting to attenuate spectral components well before the -transition band starts. Such issues are partly aleviated by replacing a mean rejection value with -a median rejection value (Fig. \ref{compare-median}) but solutions remain unacceptable for -the reasons stated previously and much poorer than those found with the maximum rejection criterion -selected earlier (Fig. \ref{compare-fir}). +\begin{table} +\centering +\begin{tabular}{|c|c|c|c|c|}\hline +Input & Stages & Computation time & Vivado time & Redpitaya time \\\hline\hline + & 1 & 0.07~s & $\approx$ 20 min & $\approx$ 1 min \\ + & 2 & 1.31~s & $\approx$ 20 min & $\approx$ 1 min \\ +PRN & 3 & 119~s ($\approx$ 2~min) & $\approx$ 20 min & $\approx$ 1 min \\ + & 4 & 270~s ($\approx$ 5~min) & $\approx$ 20 min & $\approx$ 1 min \\ + & 5 & 5998~s ($\approx$ 2~h) & $\approx$ 20 min & $\approx$ 1 min \\\hline +\end{tabular} +\caption{Time to compute and deploy the designs for PRN 1000} +\label{tbl:time_prn_1000} +\end{table} -\begin{figure}[h!tb] -\includegraphics[width=\linewidth]{images/fir-mono-vs-fir-series-noise-fixe-median-light.pdf} -\caption{Comparison of the rejection capability between a series of FIR and a monolithic FIR -with a cutoff frequency set at half the Nyquist frequency.} -\label{compare-median} -\end{figure} +\begin{table} +\centering +\begin{tabular}{|c|c|c|c|c|}\hline +Input & Stages & Computation time & Vivado time & Redpitaya time \\\hline\hline + & 1 & 0.07~s & $\approx$ 20 min & $\approx$ 1 min \\ + & 2 & 0.75~s & $\approx$ 20 min & $\approx$ 1 min \\ +PRN & 3 & 36~s & - & - \\ + & 4 & 14500~s ($\approx$ 4~h) & $\approx$ 20 min & $\approx$ 1 min \\ + & 5 & 74237~s ($\approx$ 20~h) & $\approx$ 20 min & $\approx$ 1 min \\\hline +\end{tabular} +\caption{Time to compute and deploy the designs for PRN 2000} +\label{tbl:time_prn_2000} +\end{table} -\section{Filter coefficient selection} +\section{Experiments with fixed rejection target} -The coefficients of a single monolithic filter are computed as the impulse response -of the filter transfer function, and practically approximated by a multitude of methods -including least square optimization (Matlab's {\tt firls} function), Hamming or Kaiser windowing -(Matlab's {\tt fir1} function). +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/min_area/prn_50} +\caption{Results for design with PRN as data input and 50 dB as aimed rejection level} +\label{fig:prn_500} +\end{figure} -\begin{figure}[h!tb] -\includegraphics[width=\linewidth]{images/fir1-vs-firls} -\caption{Evolution of the rejection capability of least-square optimized filters and Hamming -FIR filters as a function of the number of coefficients, for floating point numbers and 8-bit -encoded integers.} -\label{2} +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/min_area/prn_100} +\caption{Results for design with PRN as data input and 50 dB as aimed rejection level} +\label{fig:prn_100} \end{figure} -Cascading filters opens a new optimization opportunity by -selecting various coefficient sets depending on the number of coefficients. Fig. \ref{2} -illustrates that for a number of coefficients ranging from 8 to 47, {\tt fir1} provides a better -rejection than {\tt firls}: since the linear solver increases the number of coefficients along -the processing chain, the type of selected filter also changes depending on the number of coefficients -and evolves along the processing chain. +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/min_area/prn_150} +\caption{Results for design with PRN as data input and 2000 a.u. as max arbitrary space} +\label{fig:prn_150} +\end{figure} \section{Conclusion} -We address the optimization problem of designing a low-pass filter chain in a Field Programmable Gate -Array for improved noise rejection within constrained resource occupation, as needed for -real time processing of radiofrequency signal when characterizing spectral phase noise -characteristics of stable oscillators. The flexibility of the digital approach makes the result -best suited for closing the loop and using the measurement output in a feedback loop for -controlling clocks, e.g. in a quartz-stabilized high performance clock whose long term behavior -is controlled by non-piezoelectric resonator (sapphire resonator, microwave or optical -atomic transition). - \section*{Acknowledgement} This work is supported by the ANR Programme d'Investissement d'Avenir in progress at the Time and Frequency Departments of the FEMTO-ST Institute (Oscillator IMP, First-TF and Refimeve+), and by R\'egion de Franche-Comt\'e. -The authors would like to thank E. Rubiola, F. Vernotte, and G. Cabodevila +The authors would like to thank E. Rubiola, F. Vernotte, and G. Cabodevila for support and fruitful discussions. \bibliographystyle{IEEEtran} \balance \bibliography{references,biblio} \end{document} - - \section{Contexte d'ordonnancement} - Dans cette partie, nous donnerons des d\'efinitions de termes rattach\'es au domaine de l'ordonnancement - et nous verrons que le sujet trait\'e se rapproche beaucoup d'un problème d'ordonnancement. De ce fait - nous pourrons aller plus loin que les travaux vus pr\'ec\'edemment et nous tenterons des approches d'ordonnancement - et d'optimisation. - - \subsection{D\'efinition du vocabulaire} - Avant tout, il faut d\'efinir ce qu'est un problème d'optimisation. Il y a deux d\'efinitions - importantes à donner. La première est propos\'ee par Legrand et Robert dans leur livre \cite{def1-ordo} : - \begin{definition} - \label{def-ordo1} - Un ordonnancement d'un système de t\^aches $G\ =\ (V,\ E,\ w)$ est une fonction $\sigma$ : - $V \rightarrow \mathbb{N}$ telle que $\sigma(u) + w(u) \leq \sigma(v)$ pour toute arête $(u,\ v) \in E$. - \end{definition} - - Dit plus simplement, l'ensemble $V$ repr\'esente les t\^aches à ex\'ecuter, l'ensemble $E$ repr\'esente les d\'ependances - 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 - chacune des t\^aches. La d\'efinition dit que si une t\^ache $v$ d\'epend d'une t\^ache $u$ alors - 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 - temps d'ex\'ecution. - - Une autre d\'efinition importante qui est propos\'ee par Leung et al. \cite{def2-ordo} est : - \begin{definition} - \label{def-ordo2} - L'ordonnancement traite de l'allocation de ressources rares à des activit\'es avec - l'objectif d'optimiser un ou plusieurs critères de performance. - \end{definition} - - Cette d\'efinition est plus g\'en\'erique mais elle nous int\'eresse d'avantage que la d\'efinition \ref{def-ordo1}. - 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. - Dans les faits les dates de d\'ebut ne nous int\'eressent pas r\'eellement. - - En revanche la d\'efinition \ref{def-ordo2} sera au c\oe{}ur du projet. Pour se convaincre de cela, - il nous faut d'abord d\'efinir quel est le type de problème d'ordonnancement qu'on traite et quelles - sont les m\'ethodes qu'on peut appliquer. - - Les problèmes d'ordonnancement peuvent être class\'es en diff\'erentes cat\'egories : - \begin{itemize} - \item T\^aches ind\'ependantes : dans cette cat\'egorie de problèmes, les t\^aches sont complètement ind\'ependantes - les unes des autres. Dans notre cas, ce n'est pas le plus adapt\'e. - \item Graphe de t\^aches : la d\'efinition \ref{def-ordo1} d\'ecrit cette cat\'egorie. La plupart du temps, - 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 - des t\^aches qui ont un certain nombre de d\'ependances. On pourra même dire que dans certain cas, - on a des anti-arbres, c'est à dire que nous avons une multitude de t\^aches d'entr\'ees qui convergent vers une - t\^ache de fin. - \item Workflow : cette cat\'egorie est une sous cat\'egorie des graphes de t\^aches dans le sens où - 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 - que nous traitons ici. - \end{itemize} - - Bien entendu, cette liste n'est pas exhaustive et il existe de nombreuses autres classifications et sous-classifications - de ces problèmes. Nous n'avons parl\'e ici que des cat\'egories les plus communes. - - Un autre point à d\'efinir, est le critère d'optimisation. Il y a là encore un grand nombre de - critères possibles. Nous allons donc parler des principaux : - \begin{itemize} - \item Temps de compl\'etion total (ou Makespan en anglais) : ce critère est l'un des critères d'optimisation - les plus courant. Il s'agit donc de minimiser la date de fin de la dernière t\^ache de l'ensemble des - t\^aches à ex\'ecuter. L'enjeu de cette optimisation est donc de trouver l'ordonnancement optimal permettant - la fin d'ex\'ecution au plus tôt. - \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 - et d'optimiser ce r\'esultat. - \item Le d\'ebit : ce critère quant à lui, vise à augmenter au maximum le d\'ebit de traitement des donn\'ees. - \end{itemize} - - En plus de cela, on peut avoir besoin de plusieurs critères d'optimisation. Il s'agit dans ce cas d'une optimisation - multi-critères. Bien entendu, cela complexifie d'autant plus le problème car la solution la plus optimale pour un - 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 - de faire le meilleur compromis entre tous les critères. - - \subsection{Formalisation du problème} - \label{formalisation} - Maintenant que nous avons donn\'e le vocabulaire li\'e à l'ordonnancement, nous allons pouvoir essayer caract\'eriser - formellement notre problème. En effet, nous allons reprendre les contraintes \'enonc\'ees dans la sections \ref{def-contraintes} - et nous essayerons de les formaliser le plus finement possible. - - Comme nous l'avons dit, une t\^ache est un bloc de traitement. Chaque t\^ache $i$ dispose d'un ensemble de paramètres - que nous nommerons $\mathcal{P}_{i}$. Cet ensemble $\mathcal{P}_i$ est propre à chaque t\^ache et il variera d'une - t\^ache à l'autre. Nous reviendrons plus tard sur les paramètres qui peuvent composer cet ensemble. - - Outre cet ensemble $\mathcal{P}_i$, chaque t\^ache dispose de paramètres communs : - \begin{itemize} - \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. - 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. - 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 - 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 - et de sa date d'entr\'ee. Nous nommerons cette dur\'ee $\delta_i$. % Je devrais la nomm\'ee w comme dans la def2 - \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 - 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^+$. - \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). - Selon les t\^aches, les fr\'equences varieront. En effet, certains blocs ralentissent le flux c'est pourquoi on distingue la fr\'equence du - 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^+$. - \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. - est capable de produire). Les t\^aches peuvent avoir à traiter des gros volumes de donn\'ees et n'en ressortir qu'une partie. Cette - 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^-$ - et la quantit\'e de donn\'ees sortantes $q_i^+$ pour une t\^ache $i$. - \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 - 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 - t\^ache $i$ comme $d_i^-\ =\ q_i^-\ *\ f_i^-$ et le d\'ebit sortant comme $d_i^+\ =\ q_i^+\ *\ f_i^+$. - \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. - Nous nommerons $\mathcal{A}_i$ cette taille. - \item Les pr\'ed\'ecesseurs et successeurs d'une t\^ache : cela nous permet de connaître les t\^aches requises pour pouvoir traiter - la t\^ache $i$ ainsi que les t\^aches qui en d\'ependent. Ces ensemble sont not\'es $\Gamma _i ^-$ et $ \Gamma _i ^+$ \\ - %TODO Est-ce vraiment un paramètre ? - \end{itemize} - - Ces diff\'erents paramètres communs sont fortement li\'es aux \'el\'ements de $\mathcal{P}_i$. Voici quelques exemples de relations - que nous avons identifi\'ees : - \begin{itemize} - \item $ \delta _i ^+ \ = \ \mathcal{F}_{\delta}(\pi_i^-,\ \pi_i^+,\ d_i^-,\ d_i^+,\ \mathcal{P}_i) $ donne le temps d'ex\'ecution - de la t\^ache en fonction de la pr\'ecision voulue, du d\'ebit et des paramètres internes. - \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 - et les paramètres internes de la t\^ache. - \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 - sortant et des variables internes de la t\^ache. - \item $A_i^+\ =\ \mathcal{F}_A(\pi_i^-,\ \pi_i^+,\ d_i^-,\ d_i^+, \mathcal{P}_i)$ - \end{itemize} - Pour le moment, nous ne sommes pas capables de donner une d\'efinition g\'en\'erale de ces fonctions. Mais en revanche, - sur quelques exemples simples (cf. \ref{def-contraintes}), nous parvenons à donner une \'evaluation de ces fonctions. - - Maintenant que nous avons donn\'e toutes les notations utiles, nous allons \'enoncer des contraintes relatives à notre problème. Soit - un DGA $G(V,\ E)$, on a pour toutes arêtes $(i, j)\ \in\ E$ les in\'equations suivantes : - - \paragraph{Contrainte de pr\'ecision :} - Cette in\'equation traduit la contrainte de pr\'ecision d'une t\^ache à l'autre : - \begin{align*} - \pi _i ^+ \geq \pi _j ^- - \end{align*} - - \paragraph{Contrainte de d\'ebit :} - Cette in\'equation traduit la contrainte de d\'ebit d'une t\^ache à l'autre : - \begin{align*} - d _i ^+ = q _j ^- * (f_i + (1 / s_j) ) & \text{ où } s_j \text{ est une valeur positive de temporisation de la t\^ache} - \end{align*} - - \paragraph{Contrainte de synchronisation :} - Il s'agit de la contrainte qui impose que si à un moment du traitement, le DAG se s\'epare en plusieurs branches parallèles - et qu'elles se rejoignent plus tard, la somme des latences sur chacune des branches soit la même. - Plus formellement, s'il existe plusieurs chemins disjoints, partant de la t\^ache $s$ et allant à la t\^ache de $f$ alors : - \begin{align*} - \forall \text{ chemin } \mathcal{C}1(s, .., f), - \forall \text{ chemin } \mathcal{C}2(s, .., f) - \text{ tel que } \mathcal{C}1 \neq \mathcal{C}2 - \Rightarrow - \sum _{i} ^{i \in \mathcal{C}1} \delta_i = \sum _{i} ^{i \in \mathcal{C}2} \delta_i - \end{align*} - - \paragraph{Contrainte de place :} - Cette in\'equation traduit la contrainte de place dans le FPGA. La taille max de la puce FPGA est nomm\'e $\mathcal{A}_{FPGA}$ : - \begin{align*} - \sum ^{\text{t\^ache } i} \mathcal{A}_i \leq \mathcal{A}_{FPGA} - \end{align*} - - \subsection{Exemples de mod\'elisation} - \label{exemples-modeles} - Nous allons maintenant prendre quelques blocs de traitement simples afin d'illustrer au mieux notre modèle. - Pour tous nos exemple, nous prendrons un d\'ebit en entr\'ee de 200 Mo/s avec une pr\'ecision de 16 bit. - - 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 - que certaines donn\'ees à intervalle r\'egulier. Cet intervalle est appel\'e le facteur de d\'ecimation, on le notera $N$. - - Donc d'après notre mod\'elisation : - \begin{itemize} - \item $N \in \mathcal{P}_i$ - %TODO N ou 1 ? - \item $\delta _i = N\ c.h.$ (coup d'horloge) - \item $\pi _i ^+ = \pi _i ^- = 16 bits$ - \item $f _i ^+ = f _i ^-$ - \item $q _i ^+ = q _i ^- / N$ - \item $d _i ^+ = q _i ^- / N / f _i ^-$ - \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\ - %TODO Je ne sais pas trouver la taille... - \end{itemize} - - 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 - simple qui permet de dupliquer un flux. On peut donc donner un nombre de sorties à cr\'eer, on note ce paramètre - %TODO pas très inspir\'e... - $X$. Voici ce que donne notre mod\'elisation : - \begin{itemize} - \item $X \in \mathcal{P}_i$ - \item $\delta _i = 1\ c.h.$ - \item $\pi _i ^+ = \pi _i ^- = 16 bits$ - \item $f _i ^+ = f _i ^-$ - \item $q _i ^+ = q _i ^-$ - \item $d _i ^+ = d _i ^-$ - \item $\Gamma _i ^- = 1$ - \item $\Gamma _i ^+ = X$\\ - \end{itemize} - - 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 - donn\'ees afin d'acc\'el\'erer les traitement sur les blocs suivants. On peut donc donner le nombre de bits à shifter, - on note ce paramètre $S$. Voici ce que donne notre mod\'elisation : - \begin{itemize} - \item $S \in \mathcal{P}_i$ - \item $\delta _i = 1\ c.h.$ - \item $\pi _i ^+ = \pi _i ^- - S$ - \item $f _i ^+ = f _i ^-$ - \item $q _i ^+ = q _i ^-$ - \item $d _i ^+ = d _i ^-$ - \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\ - \end{itemize} - - Nous allons traiter un dernier exemple un peu plus complexe, le cas d'un filtre d\'ecimateur (ou FIR). Ce bloc - est compos\'e de beaucoup de paramètres internes. On peut d\'efinir un nombre d'\'etages $E$, qui repr\'esente le nombre - d'it\'erations à faire avant d'arrêter le traitement. Afin d'effectuer son filtrage, on doit donner au bloc un ensemble - de coefficients $C$ et par cons\'equent ces coefficients ont leur propre pr\'ecision $\pi _C$. Pour finir, le dernier - paramètre à donner est le facteur de d\'ecimation $N$. Si on applique notre mod\'elisation, on peut obtenir cela : - \begin{itemize} - \item $E \in \mathcal{P}_i$ - \item $C \in \mathcal{P}_i$ - \item $\pi _C \in \mathcal{P}_i$ - \item $N \in \mathcal{P}_i$ - \item $\delta _i = E * |C| * q_i^-\ c.h.$ %Trop simpliste - \item $\pi _i ^+ = \pi _i ^- * \pi _C$ - \item $f _i ^+ = f _i ^-$ - \item $q _i ^+ = q _i ^- / N$ - \item $d _i ^+ = q _i ^- / N / f _i ^-$ - \item $\Gamma _i ^+ = \Gamma _i ^- = 1$\\ - \end{itemize} - - Ces exemples ne sont que des modèles provisoires; pour s'assurer de leur performance, il faudra les - confronter à des simulations. - - -Bien que les articles sur les skeletons, \cite{gwen-cogen}, \cite{skeleton} et \cite{hide}, nous aient donn\'e des indices sur une possible - mod\'elisation, ils \'etaient encore trop focalis\'es sur l'optimisation spatiale des blocs. Nous nous sommes donc inspir\'es de ces travaux - pour proposer notre modèle, en faisant abstraction des optimisations bas niveau. diff --git a/images/custom_criterion.pdf b/images/custom_criterion.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a5063ccc9d682306dcdc5cfad12865206df136bd GIT binary patch literal 17710 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 N=2$LORabvEE&wa5zKj3> literal 0 HcmV?d00001 diff --git a/images/max_rejection/prn_1000.pdf b/images/max_rejection/prn_1000.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2210c34da49586392832546c5313452669122e4e GIT binary patch literal 26680 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 RXk&~CT72I=dsheX{{W1uy#W9K literal 0 HcmV?d00001 diff --git a/images/max_rejection/prn_2000.pdf b/images/max_rejection/prn_2000.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6131030d77228600d424fec1ef98831143e5d6ed GIT binary patch literal 21691 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 Q04qGOX7gq@FT$Gt0RV`_mjD0& literal 0 HcmV?d00001 diff --git a/images/max_rejection/prn_500.pdf b/images/max_rejection/prn_500.pdf new file mode 100644 index 0000000000000000000000000000000000000000..80cfdc39976333fcdbb5c215dcb0196f374ce681 GIT binary patch literal 17055 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 literal 0 HcmV?d00001 diff --git a/images/mean_criterion.pdf b/images/mean_criterion.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2757a73639432a43a4eab646ff160e9e09fce070 GIT binary patch literal 17713 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 Wh@i=@0|IVhhFHI6kG+e-`u_rImZJjz literal 0 HcmV?d00001 diff --git a/images/min_area/prn_150.pdf b/images/min_area/prn_150.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d5764188ac4e809115d469421c2430747578b4e7 GIT binary patch literal 11885 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 literal 0 HcmV?d00001 diff --git a/images/min_area/prn_50.pdf b/images/min_area/prn_50.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d6e5b8f2f16e517a157706192c1df7f953eb20c1 GIT binary patch literal 17098 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 literal 0 HcmV?d00001 diff --git a/images/sum_rejection.pdf b/images/sum_rejection.pdf new file mode 100644 index 0000000000000000000000000000000000000000..663146cdb24df3d176859012d4ee249f0fbc8167 GIT binary patch literal 13175 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