Commit 5c78fa3b0c427bb9d3953e1a435170fa7065e8ed
1 parent
6dfba800f9
Exists in
master
FIFO et HLS
Showing 1 changed file with 13 additions and 56 deletions Side-by-side Diff
ifcs2018_proceeding.tex
... | ... | @@ -67,7 +67,8 @@ |
67 | 67 | the non-linear behavior of the downconverter introduces noise or spurious signal aliasing as |
68 | 68 | well as the generation of the frequency sum signal in addition to the frequency difference. |
69 | 69 | These unwanted spectral characteristics must be rejected before decimating the data stream |
70 | -for the phase noise spectral characterization. The characteristics introduced between the downconverter | |
70 | +for the phase noise spectral characterization. The characteristics introduced between the | |
71 | +downconverter | |
71 | 72 | and the decimation processing blocks are core characteristics of an oscillator characterization |
72 | 73 | system, and must reject out-of-band signals below the targeted phase noise -- typically in the |
73 | 74 | sub -170~dBc/Hz for ultrastable oscillator we aim at characterizing. The filter blocks will |
74 | 75 | |
... | ... | @@ -81,13 +82,20 @@ |
81 | 82 | \section{Finite impulse response filter} |
82 | 83 | |
83 | 84 | We select FIR filter for their unconditional stability and ease of design. A FIR filter is defined |
84 | -by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the outputs $y_k$ | |
85 | +by a set of weights $b_k$ applied to the inputs $x_k$ through a convolution to generate the | |
86 | +outputs $y_k$ | |
85 | 87 | $$y_n=\sum_{k=0}^N b_k x_{n-k}$$ |
86 | 88 | |
87 | 89 | As opposed to an implementation on a general purpose processor in which word size is defined by the |
88 | 90 | processor architecture, implementing such a filter on an FPGA offer more degrees of freedom since |
89 | -not only the coefficient values and number of taps must be defined, but also the number of bits defining | |
90 | -the coefficients and the sample size. | |
91 | +not only the coefficient values and number of taps must be defined, but also the number of bits | |
92 | +defining the coefficients and the sample size. For this reason, and because we consider pipeline | |
93 | +processing (as opposed to First-In, First-Out memory batch processing) of radiofrequency | |
94 | +signals, High Level Synthesis (HLS) languages \cite{kasbah2008multigrid} are not considered but | |
95 | +the problem is tackled at the Very-high-speed-integrated-circuit Hardware Description Language (VHDL). | |
96 | +Since latency is not an issue in a openloop phase noise characterization instrument, the large | |
97 | +numbre of taps in the FIR, as opposed to the shorter Infinite Impulse Response (IIR) filter, | |
98 | +is not considered as an issue as would be in a closed loop system. | |
91 | 99 | |
92 | 100 | The coefficients are classically expressed as floating point values. However, this binary |
93 | 101 | number representation is not efficient for fast arithmetic computation by an FPGA. Instead, |
94 | 102 | |
95 | 103 | |
96 | 104 | |
... | ... | @@ -242,63 +250,14 @@ |
242 | 250 | fruitful discussions. |
243 | 251 | |
244 | 252 | |
253 | +XXX | |
245 | 254 | |
246 | 255 | \subsubsection{Contraintes} |
247 | - \label{def-contraintes} | |
248 | - Maintenant que nous avons d\'efini ce qu'\'etait une chaine de traitement, nous allons voir | |
249 | - quelles sont les contraintes li\'ees à celles-ci. | |
250 | 256 | |
251 | - Le temps d'ex\'ecution des t\^aches se compte en front montant d'horloge souvent appel\'e | |
252 | - coup d'horloge. On a donc une unit\'e de temps discr\'etis\'ee car un coup d'horloge est indivisible. | |
253 | - les dates sont donc cadenc\'ees par l'horloge du FPGA. | |
254 | - | |
255 | - Chaque t\^ache doit pouvoir traiter chaque donn\'ee qui arrive, ce qui impose une contrainte | |
256 | - forte de d\'ebit d'entr\'ee. En effet, dans le cadre du traitement du signal, il est primordial | |
257 | - d'avoir toutes les donn\'ees de manière cons\'ecutive. Si la moindre donn\'ee est perdue, le r\'esultat | |
258 | - obtenu n'est plus valide. Cette contrainte se traduit la plupart du temps par de m\'ecanisme de | |
259 | - FIFO qui bufferise les donn\'ees entrantes (dans le cas où la t\^ache n\'ecessite en tableau de donn\'ees, | |
260 | - par exemple). Ou cela peut aussi se mettre en place par un m\'ecanisme de pipeline ou de parall\'elisme | |
261 | - à l'int\'erieur du bloc. Mais cela relève de l'impl\'ementation bas niveau du bloc. | |
262 | - | |
263 | - Le temps d'ex\'ecution d'une t\^ache correspond à la latence d'un bloc. Il s'agit donc du | |
264 | - temps que passe une donn\'ee brute dans le bloc avant de ressortir trait\'ee. Dans notre contexte | |
265 | - la latence n'est pas importante. En effet, puisqu'on a un flux de donn\'ees continu, après un court laps | |
266 | - de temps toutes les t\^aches ont d\'epass\'e leur temps de latence et elles produisent les donn\'ees | |
267 | - r\'egulièrement. | |
268 | - | |
269 | - Il y a tout de même une exception à cela, c'est lors d'un traitement parallèle. Dans l'exemple de la | |
270 | - figure \ref{exemple-chaine-traitement}, on voit un bloc qui divise le flux en deux branches. Dans le | |
271 | - cas où on resynchronise le flux, il est imp\'eratif que la somme des latences des deux branches soit la | |
272 | - même. Cela peut donc imposer la pr\'esence de blocs qui ajoutent de la latence sans faire de traitements utiles. | |
273 | - | |
274 | - En revanche, une t\^ache se caract\'erise par un d\'ebit de sortie et celui-ci doit rester fixe. | |
275 | - Cela s'explique par la contrainte du d\'ebit d'entr\'ee du bloc de traitement suivant. Si un bloc a un d\'ebit de sortie | |
276 | - fluctuant, il est \'evident que la contrainte d'entr\'ee ne sera pas possible à formaliser. | |
277 | - | |
278 | - Une autre contrainte li\'ee de manière plus globale est la consommation de ressources. Comme nous l'avons | |
279 | - dit dans la section \ref{def-fpga}, le FPGA dispose d'un nombre de portes logiques limit\'e. | |
280 | - Il faut donc que la chaine de traitement ne d\'epasse pas le nombre de ressources dont dispose la puce | |
281 | - FPGA. | |
282 | - | |
283 | - La consommation de ressources est influenc\'ee par les blocs de traitement. En effet, pour pouvoir | |
284 | - tenir les d\'ebits d'entr\'ee \'elev\'ees, cela consomme \'enorm\'ement de ressources. Plus le d\'ebit est rapide, plus | |
285 | - la consommation de ressources sera grande. | |
286 | - | |
287 | - \subsection{Travaux traitant du sujet} | |
288 | - Nous avons commenc\'e notre recherche en lisant des articles traitant de l'optimisation dans un FPGA. | |
289 | - Dans sa thèse, S. Mirzaei \cite{these-dsp-fpga} donne surtout des bonnes pratiques pour d\'evelopper | |
290 | - des composants FPGA bas niveau. Ce n'est pas exactement ce que nous cherchions. | |
291 | - | |
292 | 257 | Dans les r\'ef\'erences \cite{zhuo2007scalable, olariu1993computing, pan1999improved}, les auteurs |
293 | 258 | proposent tous des optimisations hardware uniquement. Cependant ces articles sont focalis\'es sur des optimisations mat\'erielles |
294 | 259 | or notre objectif est de trouver une formalisation math\'ematique d'un FPGA. |
295 | 260 | |
296 | - Une autre approche est propos\'ee par S. Kasbah et al. dans leur article \cite{kasbah2008multigrid}. | |
297 | - En effet, ils utilisent une approche HLS de leur problème. Ils ont utilis\'e un synth\'etiseur optimis\'e et | |
298 | - un langage d\'eriv\'e du C++ pour d\'ecrire leur algorithme. Bien qu'ils obtiennent de bons r\'esultats, | |
299 | - leur m\'ethode n'est pas exploitable dans notre cas, car ils n'ont pas les mêmes contraintes de d\'ebit et | |
300 | - de temps r\'eel que nous. | |
301 | - | |
302 | 261 | Une dernière approche que nous avons \'etudi\'ee est l'utilisation de \emph{skeletons}. D. Crookes et A. Benkrid |
303 | 262 | ont beaucoup parl\'e de cette m\'ethode dans leur articles \cite{crookes1998environment, crookes2000design, benkrid2002towards}. |
304 | 263 | L'id\'ee essentielle est qu'ils r\'ealisent des composants très optimis\'es et param\'etrables. Ainsi lorsqu'ils |
... | ... | @@ -317,8 +276,6 @@ |
317 | 276 | ces blocs en Prolog pour faire un langage descriptif permettant d'assembler les blocs de manière |
318 | 277 | optimale. En partant de cette description, ils arrivent à g\'en\'erer directement le code VHDL. |
319 | 278 | |
320 | - G. Goavec-Merou, dans sa thèse\cite{gwen-cogen}, pr\'esente un outil, CoGen, bas\'e sur l'approche en skeletons. Son id\'ee | |
321 | - est de caract\'eriser des blocs \'ecrits en VHDL, en donnant diff\'erents caract\'eristiques : | |
322 | 279 | \begin{itemize} |
323 | 280 | \item la latence du bloc repr\'esente, en coups d'horloge, le temps entre l'entr\'ee de la donn\'ee |
324 | 281 | et le temps où la même donn\'ee ressort du bloc. |