Brevet FR2761550A1 — publié le 19981002

La présente invention concerne les dispositifs de traitement de signaux numériques qui réalisent des opérations de retard fractionnaire dans un contexte de traitement linéaire. On connaît le principe de tels dispositifs. De manière classique et comme représenté à la figure 1, ces dispositifs comprennent en amont une rangée de filtres d'interpolation à Réponse Impulsionnelle Finie qui réalisent chacun une opération de retard fractionnaire spécifique à chaque signal d'entrée. Chaque filtre d'interpolation à Réponse Impulsionnelle Finie est une approximation d'un filtre de retard fractionnaire idéal. Les coefficients des filtres d'interpolation à Réponse Impulsionnelle Finie sont calculés, soit par des méthodes classiques de minimisation de l'erreur quadratique, soit par la méthode de Lagrange. Dans un deuxième temps, les signaux ainsi retardés subissent chacun un traitement linéaire spécifique, puis sont additionnés. On connait également les dispositifs similaires utilisés dans une disposition inverse à celle qui vient d'être mentionnée. Dans ce cas, un même signal d'entrée est dupliqué en plusieurs signaux qui lui sont identiques, ces signaux subissant ensuite un traitement linéaire spécifique et une opération de retard fractionnaire spécifique elle aussi. Ces dispositifs sont par exemple utilisés dans le cas des codeurs de parole à résolution fractionnaire du pas, ou du pitch en anglais. On a représenté, sur les figures 1 à 3, un dispositif numérique connu, dans lequel un nombre M de signaux d'entrée ul, u2,..., uM sont retardés avant de subir un traitement linéaire réalisé par un filtre T1 à TM et d'être additionnés par un sommateur S. Ce type de dispositif est utilisé dans des applications classiques, comme par exemple le traitement d'antenne, o les retards sont choisis en fonction de l'angle de pointage de l'antenne. Le retard rk souhaité est rarement un multiple entier de la période d'échantillonnage. Ce retard rk est donc constitué d'un nombre entier de périodes d'échantillonnage auquel s'ajoute une fraction de période T non nulle. Dans la suite, nous ne considérons pas les retards d'une durée multiple de la période d'échantillonnage, qui sont particulièrement faciles à réaliser. On considérera que les retards à réaliser sont réduits à cette fraction de période d'échantillonnage supplémentaire. Le dispositif des figures 1 à 3 est alimenté par un nombre M de signaux d'entrée uk,o k varie entre 1 et M. Chacun des M signaux d'entrée uk est, comme représenté sur la figure 1, retardé d'un retard fractionnaire rk qui lui est propre. Il existe donc un nombre fini de retards fractionnaires rk à réaliser. On peut trouver un plus grand commun diviseur ro de ces retards fractionnaires rk. On réalise en pratique un filtre d'interpolation pour chaque multiple de ro compris entre 0 et la valeur de la période d'échantillonnage Te. Comme représenté sur la figure 2, on réalise ainsi D filtres d'interpolation hi, référencés R0, R1,..., RD-1, réalisant des retards de i valeur D xTc, o i varie entre 0 et (D - 1). Un même nombre L de coefficients étant choisi pour chacun des filtres, on réalise donc D filtres hi(n), o i varie entre 0 et (D - 1) et n varie entre 0 et (L - 1). Comme représenté sur la figure 3, à chaque signal d'entrée Uk, o k varie entre 1 et M, est appliqué un filtre d'interpolation hk(n), référencé RFk, qui est l'un des D filtres hi(n) référencés Ri sur la figure 2, i étant compris entre 0 et (D - 1). On va maintenant rappeler brièvement les formules et les critères utilisés pour calculer les coefficients hi(n) des D filtres d'interpolation R0 à RD-1- Soit tk la valeur du retard fractionnaire rk normalisé, c'est-à-dire X k 8 T, o rk est le retard fractionnaire désiré pour ce signal et Te la période d'échantillonnage. Soit uk(n) le signal d'entrée obtenu par échantillonnage d'un signal analogique uko(t). En supposant que l'échantillonnage a été correctement réalisé, on peut en théorie, à partir de uk(n), obtenir le signal numérique retardé, défini comme l'échantillonnage du signal analogique retardé uko(t-TkTe). En effet, l'homme de l'art sait qu'à partir du signal uk(n), dont on connaît tous les échantillons, on retrouve le signal analogique uk0(t) correspondant par la formule d'interpolation sin(( T( - ni)) I (/(t)_ _ _ _) =_ t'= k t(tn)sinc( -tt)- u@)= u(i)314-- 11) -n m - -'e le signal analogique retardé de rk est alors t-rk u (t- rk)= i uk(m)sinc( Tm), uk(m)sinc(T - - n) m- - m- c On obtient ensuite le signal numérique retardé ukret(n) par: ukret(n) = uk0 (nTe rk) soit: Uk (n) = uk(m)sinc(n- Tk- m) = hida.l.k(n) * Uk(n) m - -ae o le signe * symbolise l'opération de convolution et o hidéal,tk(n) = sinc (ntk) La fonction de transfert fréquentielle du filtre -j2xift hidéal,-rxk est HidaLk(0 (= c. En théorie, il existe donc un filtre idéal hidéal,xk permettant d'obtenir le signal échantillonné retardé à partir du signal échantillonné Uk. Un tel filtre n'est pas réalisable en pratique, parce que: - la sommation est infinie - le filtre est non causal, c'est-à-dire qu'il faudrait connaître les futurs échantillons pour calculer le résultat. La non-causalité entraîne qu'on peut seulement approcher une version ayant un retard constant supplémentaire To, noté hidéal,t+,(n). En pratique, et comme représenté à la figure 3, on réalise de manière connue un filtre h, ayant un nombre L fini de coefficients et réalisant une bonne approximation du filtre hidéal,t+,-3 Dans les applications les plus répandues, on se limite à des filtres à Réponse Impulsionnelle Finie. En effet, la conception des filtres à Réponse Impulsionnelle Infinie est plus difficile et demande une meilleure précision de calcul parce que les données sont rebouclées et les erreurs de calcul peuvent s'accumuler. De plus, dans un environnement non stationnaire, comme le traitement d'antenne, la mémoire longue des filtres peut être gênante: il est par exemple difficile de changer brusquement la direction de pointage d'une antenne. Les filtres passe-tout, un sous-ensemble des filtres à Réponse Impulsionnelle Infinie, ont la propriété favorable d'avoir un module constant. L'absence d'erreur d'amplitude est malheureusement accompagnée d'une augmentation de l'erreur de phase comparée avec des filtres à Réponse Impulsionnelle Finie ayant la même complexité. Pour éviter ces problèmes, on se limite aux filtres à Réponse Impulsionnelle Finie. Pour calculer les coefficients b.(n) d'un filtre à Réponse Impulsionnelle Finie h. approximant hidéal,t+O,on connaît différentes méthodes. Un nombre fini L de coefficients du filtre RIF étant choisi, une première méthode consiste à choisir un jeu de coefficients h,(n) avec n variant entre 0 et (L - 1) qui permette de minimiser l'erreur quadratique IlEs(f) 12df,o L- I -j2x n E,(0 = h(n)c ' -Hio(O n-O fe étant la fréquence d'échantillonnage et l'intégration étant réalisée sur une bande utile de fréquences. El(f) est souvent utilisée pour définir des fonctions de coût servant à juger la qualité d'un filtre. Cette méthode est appelée méthode M1. Elle donne comme résultat une version tronquée et retardée du filtre idéal hN,,I(n)= sinc(n--r0--u) Une seconde méthode consiste à calculer d'abord les coefficients h,(n) par la méthode précédente, puis à les multiplier par une fenêtre d'apodisation w(n). Cette méthode est appelée méthode M2. Elle a pour effet de lisser la réponse fréquentielle du filtre. Si hMl,,(n) sont les coefficients du filtre obtenus par la méthode précédente, les coefficients hM2,,(n) sont obtenus par la formule hM2, x(n) = hMl,x(n).w(n) o par 23rn exemple w(n)= 0,54 - 0,46cos(L_--) w(n) est connue sous le nom de fenêtre de Hamming. Une troisième méthode consiste à adopter le jeu de coefficients hx(n) permettant de minimiser l'erreur quadratique généralisée C, = fW(f) lE(f) 2df, o W(f) est une fonction de pondération fréquentielle pouvant être modulée de façon itérative jusqu'à obtenir une fonction h (n) M T 3. satisfaisante et o l'intégration est réalisée sur une bande utile de fréquences. Cette méthode est appelée méthode M3. Elle mène à un système linéaire d'équations. Une quatrième méthode consiste à adopter les coefficients h(n) pour lesquels on a - f = O, o m ú-o varie entre 0 et (L - 1). Cette méthode est appelée méthode M4. On obtient les coefficients hM4,[(n) par: L-I n-k hM14'(n) = i n- k-O k#n On trouvera de nombreux exemples de filtres à réponse impulsionnelle infinie et à réponse impulsionnelle finie de retard fractionnaire, ainsi qu'une comparaison entre ces différents filtres dans l'article du IEEE signal processing magazine, janvier 1996, "Splitting the unit delay, tools for fractional delay filter design", de Laakso, Vâlimâki, Karjalainen, Laine. Comme représenté sur la figure 3, on applique donc à chaque signal d'entrée Uk un filtre de retard h,(n), référencé RFk, o tk est le retard normalisé spécifique au signal uk et compris parmi les valeurs D ou i varie entre 0 et (D - 1). Le dispositif des figures 1 à 3 réalise donc des opérations de retard sur M signaux avec des filtres d'interpolation RFl,...RFM de longueur L, ce qui représente Cl = M x L opérations, o l'on définit une opération comme étant une multiplication suivie d'une addition. En outre, la mémoire nécessaire pour stocker les L coefficients des D filtres est C2 = D x L mots. De tels dispositifs ne donnent pas totalement satisfaction. Si le nombre de signaux à retarder est important, la charge de calcul C1 et le volume de mémoire nécessaire C2 pour stocker les coefficients des filtres d'interpolation sont tellement importants qu'ils rendent les dispositifs extrêmement couteux à réaliser et compromettent par là leur succès économique. L'objet de l'invention est de proposer un dispositif de traitement numérique qui réalise les mêmes traitements avec la même précision et dont la charge de calcul et la mémoire nécessaires soient nettement diminuées. Ces buts sont atteints selon l'invention grâce à un dispositif de traitement de signaux numériques véhiculés entre un port commun et M ports particuliers comportant un module de traitement linéaire, et comportant des filtres particuliers qui assurent à la fois un déphasage et une accentuation d'amplitude choisie à chacun des M ports particuliers, ledit déphasage étant spécifique de chaque port particulier et l'accentuation d'amplitude étant sensiblement la même pour tous les ports particuliers, et comportant au dit port commun un filtre d'inversion commun qui réalise une accentuation d'amplitude inverse de la dite accentuation d'amplitude choisie. Selon l'invention, le port commun peut être un port d'entrée ou de sortie. D'autres caractéristiques, buts et avantages de la présente invention apparaîtront à la lecture de la description détaillée qui va suivre, et en regard des dessins annexés, donnés à titre d'exemple non limitatif et sur lesquels: la figure 1 est une vue schématique sous forme de blocs fonctionnels d'un système numérique connu réalisant sur des signaux d'entrée des opérations de retard fractionnaire et de traitement linéaire spécifiques; - la figure 2 représente le même dispositif o l'on a mis en évidence le fait que les filtres de retard fractionnaire sont réalisés avec des retards incrémentaux. - la figure 3 représente le même dispositif que celui de la figure 1, o l'on a mis en évidence les fonctions de transfert fréquentielles des filtres de retard idéaux qui ont été approchés dans ce dispositif connu; la figure 4 est une vue schématique sous forme de blocs fonctionnels d'un dispositif de traitement numérique conforme à la présente invention; - la figure 5 représente le même dispositif que celui de la figure 4 o l'on a mis en évidence des filtres-cibles ayant été approchés. - la figure 6 représente un dispositif selon l'invention, similaire au dispositif des figures 4 et 5, comportant des filtres de déphasage à quatre coefficients. Sur les figures 4 et 5, on a représenté un dispositif selon l'invention qui réalise un traitement de M signaux d'entrée ul,...,uM dont le résultat US est le même que celui fourni par le dispositif des figures 1 à 3, et avec la même précision de calcul. Dans ce dispositif, chacun des M signaux d'entrée uk passe d'abord par un premier filtre de déphasage h (n) référencé FPk sur les figures 4 et 5. Ces filtres de déphasage FP1,...FPM sont des filtres à Réponse Impulsionnelle Finie de longueur L1, approximant chacun un filtre-cible, et dont les coefficients sont calculés par une méthode classique comme M3 indiquée précédemment. Les filtres-cibles ainsi approchés ne sont pas des filtres de retard idéaux comme dans le cas précédent. Les filtres-cibles sont définis - j2c (t + t) dans le domaine fréquentiel par Hb,.eT(t) = IHcible(mIe, o (T+to) est le retard normalisé, non entier, voulu, T0 étant un retard constant supplémentaire, égal à un nombre entier de périodes d'échantillonnage, et o Hcible(f) ne dépend que de la fréquence. Dans la suite, on appellera retard fractionnaire normalisé la partie non entière du retard normalisé effectivement introduit. La fonction IHcible(f)l est la même pour tous les filtres de déphasage FP1 à FPM. La fonction IHcible(f)l introduit donc sur chaque signal d'entrée une même accentuation d'amplitude d'entrée. Chaque signal d'entrée Uk, après être passé par le filtre de déphasage hdk référencé FPk sur les figures 4 et , correspondant au retard fractionnaire tk souhaité pour ce signal Uk, subit un traitement linéaire TT(k) réalisé par un filtre de traitement linéaire Tk spécifique du signal d'entrée uk. Les signaux sont ensuite sommés. En aval direct de cette sommation est placé un filtre d'égalisation d'amplitude I, appelé également dans la suite filtre d'inversion commun. Le rôle de ce filtre I est de réaliser l'opération inverse de l'accentuation d'amplitude IHcible(f)l introduite par les filtres de déphasage hd référencé FPk. Dans un mode de réalisation préférentiel de l'invention, il est réalisé en approximant un filtre de fonction de transfert fréquentielle Hégal(f) = i Hcible(0f' Dans de nombreux cas, le rôle principal du dispositif est de remettre un signal en phase ou un bruit en opposition de phase pour renforcer le signal utile et diminuer le bruit. Dans ces cas, la relation à la fois des phases et des modules des différentes branches entre elles est importante. Cependant, la non-distorsion globale n'est pas toujours nécessaire. En outre, le filtre d'égalisation I peut être inclus dans un autre filtre qui est nécessaire pour d'autres objectifs, comme l'égalisation d'une fonction de transfert, par exemple celle des capteurs. Ce filtre d'inversion commun I est ici un filtre RIF. Ses coefficients peuvent être calculés par une des méthodes M1 à M3 décrites précédemment, ou par tout algorithme classique de conception de filtre. Un filtre linéaire comme le filtre d'inversion commun I produit les mêmes effets sur le signal de sortie US s'il est appliqué à chacun des signaux en amont de la sommation S o s'il est appliqué au signal sommé. On obtient donc, d'une part, un même traitement des signaux entre les M ports d'entrée P1 à PM et le port commun de sortie C si un filtre d'inversion commun I unique est placé après la sommation S, ou si M filtres identiques à ce filtre d'inversion commun I sont placés avant la sommation S. On sait en outre qu'à signal d'entrée donné, un couple de deux filtres linéaires placés en série fournissent un même signal de sortie quel que soit l'ordre dans lequel ils sont placés. Un filtre d'inversion commun tel que celui des figures 4 à 6 précédemment décrites a donc, d'autre part, les mêmes effets sur le signal de sortie US du dispositif entier s'il est placé juste avant ou juste après chacun des traitements linéaires T1 à TM spécifiques. On comprend donc que le filtre d'inversion d'amplitude I commun, placé après la sommation S, produit les mêmes résultats que si M filtres identiques avaient été placés entre chaque filtre particulier de déphasage hd référencé FPk et le filtre de traitement linéaire TT(k) référencé Tk correspondant. A la lumière de ces deux explications, on comprend donc que chaque couple filtre de déphasage FPk/ filtre d'inversion commun I disposé selon le schéma de la figure 4 a donc la même incidence sur le signal de sortie US que si chaque couple était placé de manière accolée, à l'emplacement de chaque filtre de déphasage FPk, de manière accolée. La fonction de transfert de chacun des couples accolés étant égale au produit des fonctions de transfert du filtre de déphasage FP et du filtre d'inversion d'amplitude I, chaque couple constitue donc un filtre dont la fonction de transfert fréquentielle est proche de celle du filtre de retard idéal de fonction de transfert f - j2:_(,+lo) HibT.() = e Selon une variante de l'invention, le filtre d'inversion I peut également être un filtre à Réponse Impulsionnelle Infinie. Le filtre d'égalisation ou filtre d'inversion d'amplitude I ne variant pas dans le temps, il n'y a pas ici de problème de non-stationnarité. Si L1 est le nombre de coefficients des filtres de déphasage FP1 à FPM, L2 le nombre de coefficients du filtre d'égalisation I, le dispositif selon l'invention réalise donc C1 = M. L1 + L2 opérations, une opération étant une multiplication suivie d'une addition. Le dispositif stocke en mémoire les coefficients de D filtres de longueur L1 et d'un filtre de longueur L2, ce qui représente un volume de mémoire de C2 = D. L1 + L2 mots. Le nombre M de signaux d'entrée est en pratique très élevé. Pour un filtre de retard fractionnaire h,(n) de référence donné, de longueur L, les inventeurs ont constaté après de longues recherches qu'on peut réaliser un couple filtre de déphasage FPM/filtre d'inversion d'amplitude I dont le filtre de déphasage FPk a un nombre L1 de coefficients qui est inférieur à L, voire très petit devant L, et tel que la précision de calcul de ce couple de filtres soit similaire à celle du filtre h,(n) de référence. On choisit pour cela, de préférence, une fonction d'accentuation IHcible(f)l lisse et qui a des valeurs faibles à la demi fréquence d'échantillonnage. Ces fonctions IHcible(f)l sont avantageusement choisies parmi les fonctions de la forme 2xf IHCibIc(fl=X+Y(' + cos()) le rapport X/Y étant préférentiellement compris entre 0 et 0,3. Afin de normaliser la valeur de IHcible(f) à f = 0, X et Y vérifient de préférence la relation X + 2Y = 1. Un choix préférentiel de fonction IHcible(f)j est 2of IHcible(f)I = 0,06 + 0,47 (1 + cos(- -)). Avec cette fonction C I Hcible(f)I, on calcule avantageusement les coefficients des filtres avec la méthode M3 et la fonction W(f) =1 pour 6 67 f >"1, ce qui implique: M.L1 + L2 " M.L et D.L1 + L2 La charge de calcul et le volume de mémoire nécessaire sont donc fortement réduits. La charge de calcul et le volume de mémoire nécessaire peuvent être réduits encore lorsque, comme représenté à la figure 4, plusieurs signaux d'entrée ul', ulr'', ult'' sont à retarder avec un même retard fractionnaire -I. On place dans ce cas un sommateur S2 de ces signaux en amont d'un filtre de déphasage FP1 qui réalise un même déphasage x1 sur la somme des signaux. S'il y a besoin d'un traitement linéaire individuel TT(1'), TT(1''), TT(1'') respectivement pour chaque signal d'entrée ul', ul'', ul'', il est alors nécessaire de placer des filtres de traitement linéaire Ti', T1'', T1''' en amont de ce sommateur S2, appliqués à chaque signal d'entrée ul', ul'', ul''' Cette disposition permet d'obtenir un dispositif dans lequel on ne trouve pas de filtres de déphasage identiques en double. On ne réalise-donc pas les mêmes opérations en deux endroits différents et on ne stocke pas deux fois le même jeu de coefficients. On présente ici un exemple de réalisation pratique d'un tel dispositif représenté schématiquement sur la figure 6. Dans cet exemple numérique, la bande utile des signaux d'entrée est 0 - 7 kHz. La fréquence d'échantillonnage fe est prise égale à 16 kHz. Le nombre D de filtres à réaliser, appelé aussi résolution, est égal à 20. Le nombre d'entrées est M = 32. La longueur des filtres de déphasage est L1 = 4 coefficients, la longueur du filtre RIF d'inversion commun est L2 = 11 coefficients. On calcule les quatre coefficients de chaque filtre de déphasage par l'algorithme des moindres carrés généralisé, ou méthode M3, et les sept coefficients du filtre d'inversion d'amplitude par un algorithme classique de conception de filtres à Réponse Impulsionnelle Finie à phase linéaire. Les coefficients des filtres sont normalisés pour un calcul sur un DSP virgule fixe 16 bits. On trouve les coefficients suivants: i i i- D hi(0) hi(l) hi(2) hi(3) 0 0 14520 32767 14513 -19 1 0.05 13290 32697 15779 198 2 0.1 12089 32504 17067 449 3 0.15 10926 32189 18368 741 4 0.2 9806 31756 19672 1078 0.25 8737 31208 20968 1466 6 0.3 7723 30550 22246 1909 7 0.35 6769 29789 23494 2410 8 0.4 5878 28931 24703 2973 9 0.45 5052 27985 25861 3600 0.5 4293 26958 26958 4293 Les valeurs pour i = 11,...,19 sont calculées par une relation de symétrie hi (n) = hDi(Ll-l-n) dans le cas présent o le retard supplémentaire To est égal à (L1-2) /2. On va maintenant démontrer cette propriété Un filtre RIF de longueur L1 peut prendre des valeurs non nulles pour n = 0,...,L1-1. Le point au milieu de la réponse impulsionnelle est donc (L1-1)/2. Les retards proches de cette valeur sont plus faciles à obtenir que d'autres. C'est la raison pour laquelle on cherche dans un mode de réalisation préférentiel de l'invention à approcher un déphasage idéal normalisé de t±o0 O T0est fixé à (L1-2)/2 et le retard fractionnaire normalisé t varie entre 0 et 1, ce qui donne une plage de retards normalisés qui varie de (L1-2)/2 à L1/2, et qui est symétrique par rapport au centre(Ll-1)/2. On sait de plus que si h(n) = h(Ll-l-n), on a H(0=H*(f)e-j2xf(Ll-1) o H*(f) est le conjugué complexe de H(f) Or HT(f) approche IHcible(f) I Hidéal,+o0(f) = IHcible(f) Ie-j2f (t+o) ao= |Hól(=f)e e-j2xf(T+(LI- 2)/2) alors H,(0 =H*(f)e-j2tf(Ll-1) approche I Hcible ( f) H*idéal,-+, O (f)e-j2'f (Ll-1) = IHcible(f) I e+Jil'f(t+to)e-iJ-f (Ll-1) = IlHcible(f) I e-j2tf(L1-1 -(L1-2)/2 -t) - IHcible(f) I. e-j2tf((Ll- 2)/2 + 1 -t) IHcible(f)HidCéal,(1 _-)+ To(f) donc H () approche H1 _-(f) et H,.,(f) approche H,(f) d'o hlr sensiblement égal à h-,, c'est-à-dire h,(n) = hl-.(Ll-1-n) quel que soit n compris entre 0 et Ll-1. Cette relation de symétrie permet de ne stocker en mémoire que les coefficients de la moitié des filtres nécessaires. Il suffit pour cela de ne stocker, comme dans l'exemple exposé ici, que les coefficients des filtres h correspondant à des retards normalisés (-±0) situés entre (kL -2) (hL - 1) et. Les filtres hl-,.correspondant à des retards normalisés 1-T+T0 symétriques de ces retards T+T( par rapport à (L1-1)/2 sont déduits par la relation de symétrie hx(n) = hlT..(Ll-1- n). De cette façon, pour deux filtres de déphasage dont les retards fractionnaires normalisés respectifs sont symétriques par rapport à un retard fractionnaire égal à la demi-période d'échantillonnage, les coefficients d'un des deux filtres sont déduits de ceux de l'autre par la relation ci-dessus mentionnée. Pour le filtre d'inversion d'amplitude à Réponse Impulsionnelle Finie, on trouve pour hegal(n) variant entre 0 et L2-1 = 10: -217, 747, -2914, 8225, -18117, 32767,- 18117, 8225, -2914, 747, -217. Si la phase ne doit pas être strictement linéaire, on peut utiliser un filtre à Réponse Impulsionnelle Infinie d'ordre 3 avec L2 = 7 coefficients dont les zéros sont: -0.655 et 0.0016 + 0.0383i, et dont les pôles sont: -0.7089, et -0.5891 + 0.2122i. Ce filtre est par exemple calculé par l'algorithme de Yule-Walker connu en soi. La nouvelle structure est équivalente à une structure classique avec des filtres d'interpolation htotal, o htotal(n) = hi(n)*hégal(n), * étant l'opération convolution. Dans le cas de ce dispositif, la charge de calcul est donc C1 = M.L1 + L2 = 32 x 4 + 7 = 135 opérations et la mémoire nécessaire est C2 = D.L1 + L2 = 20 x 4 + 7 = 87 mots. La structure de ce filtre est représentée sur la figure 6 sous forme d'un ensemble de blocs fonctionnels. Dans le cas d'un traitement d'antenne, on choisit les retards Ri, avec i variant entre 1 et M, par exemple en fonction de l'angle de pointage de l'antenne. Ensuite, les retards sont normalisés et quantifiés. On obtient les parties entières di et les parties fractionnaires ri des retards normalisés par: round(D.Ri.fe) rnqi D, d= floor(rq.)et ri =rnq.i- di,o les fonctions round et floor sont respectivement les fonctions approximation entière et partie entière. Le dispositif numérique ainsi réalisé a été comparé avec un filtre de structure connue telle que représentée sur les figures 1 à 3, o les coefficients des filtres de retard fractionnaire ont été calculés avec: * la méthode M1 et avec L=20 (C1 = 640 opérations, C2 = 400 mots) * la méthode M2, avec une fenêtre de Hamming et avec L=18 (Cl = 576, C2 = 360) * la méthode M2, avec une fenêtre de Blackman et avec L=24 (C1 = 768, C2 = 480) * la méthode M3, avec L=12 et avec W(f)=1 dans la bande utile 0-7kHz (Cl = 384, C2 = 240) la méthode M3, avec L=13 et avec W(f)=1 dans la bande utile 0-7kHz (Cl = 416, C2 = 260) * la méthode M4, avec L=30 (Cl = 960, C2 = 600) On a également représenté les résultats obtenus avec un dispositif selon l'invention, dont les filtres de déphasage ont six coefficients et dont les coefficients sont calculés avec les mêmes méthodes que pour le filtre selon l'invention à quatre coefficients précédemment décrit. Les filtres idéaux ont une phase y qui décroît -T linéairement avec la fréquence f. la fraction, nommée (2.3nf "retard de phase" est donc dans le cas idéal une constante. La figure 7 montre les différences maximales entre les modules, c'est-à-dire maxh(I HtI-(0Ol- Hh(0) pour D=20 retards fractionnaires. Elle permet de juger la qualité des filtres déphaseurs de la nouvelle méthode. En effet, le filtre d'inversion d'amplitude ne modifie pas la différence des modules, c'est-à-dire qu'on obtient les mêmes résultats pour Htotal(f) = Hd(0H,8g(0 et pour Hd(0 tout seul. Cette figure sert donc à juger la qualité des filtres de déphasage hi. L'ordre des autres filtres a été choisi pour avoir une erreur d'amplitude maximale d'environ ldB, ce qui correspond à un facteur de 1. 12. Dans le pire des cas, on risque donc d'avoir un résidu dû à l'erreur de l'amplitude de 0.12 (-18dB) au lieu d'une annulation pour une interférence destructive. On peut constater que les performances de tous les filtres sont excellentes pour les basses fréquences jusqu'à 6kHz à l'exception de la méthode Ml. L'erreur maximale se situe toujours à la fréquence maximale de7kHz. Les deux exemples de la nouvelle méthode ont les erreurs maximales les plus faibles. Les performances globales sont satisfaisantes pour le filtre à quatre coefficients et excellentes pour le filtre à six coefficients qui montre les meilleurs résultats de tous les filtres. La figure 8 montre les retards de phase f 2nf o y,(f) est la phase du filtre hd et fe est la fréquence d'échantillonnage. Il est difficile de juger la qualité de la phase à l'aide de cette figure, parce que les erreurs dans les basses fréquences sont accentuées par le dénominateur et parce qu'il n'est pas facile de comparer deux méthodes. Elle est incluse ici pour montrer qu'un filtre de longueur paire peut être exact pour la phase pour des retards entiers et entier et demi (nommés filtres à phase linéaire) tandis qu'un filtre de longueur impaire ne peut pas être exact pour un retard entier et demi. C'est la raison principale pour laquelle les filtres de longueur impaire sont rarement utilisés. La figure 8 montre aussi qu'à la fréquence maximale les retards tendent vers les valeurs entières à l'exception du retard entier et demi. Ce comportement est dû à l'effet que la transformation de Fourier discrète d'une suite réelle est toujours réelle pour la fréquence maximale. Il en suit que la phase est soit zéro soit a soit indéfinie parce que le module est zéro. Ceci explique pourquoi la phase des filtres s'éloigne de la valeur cible pour les hautes fréquences. La figure 9 montre l'erreur de phase [q)(f) - (P,idéal(f)], c'est-à-dire une autre représentation du déphasage. Elle est bien adaptée pour comparer la qualité de la phase des filtres. Les plus grandes erreurs de phase se produisent toujours à la fréquence utile maximale de 7kHz. Le filtre avec quatre coefficients montre des erreurs de phase un peu plus grandes que la plupart des autres filtres. En revanche, la nouvelle méthode présente les deux erreurs maximales les plus faibles. La figure 9 permet aussi d'évaluer à quelle précision quantifier le retard. Il est inutile de stocker un grand nombre de filtres si les filtres ne sont pas suffisamment exacts. A la fréquence maximale, un retard d'un échantillon correspond à un déphasage de 180 degrés. Vu l'erreur maximale de phase d'environ 3 degrés, il est donc raisonnable de stocker plus que 60 filtres pour que l'erreur de quantification du retard soit inférieure à l'erreur introduite par le filtre. Si la mémoire libre ne permet pas de stocker autant de filtres, on dégrade les performances. Ce cas peut se produire dans des environnements temps réel typiques, par exemple pour la mémoire interne d'un DSP. La nouvelle structure permet dans ce cas d'obtenir de meilleurs résultats avec une complexité réduite. On peut constater que les filtres de Lagrange ont des excellentes performances pour les basses fréquences, mais le nombre de coefficients croît rapidement avec la bande utile de fréquence. Pour assurer un bon comportement pour la bande 0-7kHz, un nombre excessif de coefficients est nécessaire. Dans le pire des cas (hormis Lagrange), la différence maximale de phase est égale à 7 degrés, ce qui entraîne le même résidu de 0.12 (-18dB) que celui dû à l'erreur de l'amplitude. On constate donc que même le cas critique d'une interférence destructive peut être traité avec seulement quatre opérations par entrée et quatre coefficients à stocker pour chaque retard fractionnaire. La comparaison avec les filtres d'interpolation classiques (méthodes 1 à 3) montre qu'on peut obtenir simultanément: * une réduction d'un facteur entre 3 et 8 de la charge de calcul * une réduction d'un facteur entre 3 et 8 de la mémoire nécessaire avec une erreur maximale plus petite et des bonnes performances globales. La méthode est particulièrement adaptée à la formation de lobes pour le traitement d'antenne, car l'interpolation est souvent l'opération la plus coûteuse du traitement. Les figures avec L1=6 montrent que cette méthode est également très efficace pour des applications qui demandent une très haute précision. On notera que ces deux exemples de filtres couvrent une majeure partie des applications actuelles des filtres à retard fractionnaire. En effet, il est rare d'une part de chercher à obtenir des filtres de retard ayant moins de quatre coefficients, et on a rarement besoin d'une meilleure précision que celle obtenue avec le deuxième exemple o L1 = 6. On donne à la suite de la description un exemple de réalisation d'un filtre numérique selon l'invention et conforme à celui décrit ci-dessus, o les paramètres L1, L2 et D sont respectivement égaux à 4, 19 et 60. Cet exemple est donné à titre illustratif, sous forme de programme en langage C. Les coefficients de la routine filter 1.C ont été calculés par avance avec les fonctions lHcible(f)l et W(f) mentionnées précédemment. Le dispositif connu de la figure 10 a pour objet de fournir M signaux de sortie, référencés Vk o k varie entre 1 et M, spécifiques, résultant chacun d'un traitement linéaire TT(k) réalisé par un filtre Tk suivi d'un retard fractionnaire réalisé par un filtre RFk, à partir du même signal d'entrée VE. Ce problème se pose par exemple pour les codeurs de parole à résolution fractionnaire du pitch. Plusieurs codeurs de parole utilisent les équations suivantes pour déterminer le pitch P: x = (x(n),x(n-1),...,x(nN+l)), y = (x(n-P),x(n-P-1),...,x(n-P-N+l)) P = argmax l'y Il Y112 pour obtenir une résolution fractionnaire du pitch P, on doit retarder le signal x d'un retard fractionnaire. Comme représenté à la figure 10, ce dispositif comporte en amont un dispositif D qui duplique d'abord le signal d'entrée VE en M signaux VE' qui lui sont identiques, puis chacun de ces signaux VE' passe par un filtre de traitement linéaire Tk réalisant un traitement linéaire TT(k), suivi d'un filtre de retard fractionnaire RFk introduisant un retard fractionnaire rk. La figure 11 représente un dispositif de traitement numérique conforme à la présente invention, dans lequel un unique signal d'entrée VE est traité pour fournir M signaux de sortie V1 à VM similaires à ceux obtenus avec le dispositif de la figure 10. On retrouve les éléments similaires à ceux du dispositif des figures 4 à 6 c'est-à-dire des filtres de déphasage h,(n), o k varie entre 1 et M, référencés FP1, FP2, ., FPM, des filtres de traitement linéaire Tk, o k varie entre 1 et M, et un filtre d'inversion d'amplitude I. Le filtre d'inversion d'amplitude I est appliqué au signal d'entrée VE, sur lequel il réalise une préaccentuation d'amplitude. Plus précisément, la fonction de transfert de ce filtre I a un module non constant, et une phase nulle. Le signal ainsi obtenu, référencé VE", est ensuite dupliqué par un dispositif D en M signaux identiques VE'''. Chacun de ces signaux VE''' subit un traitement linéaire spécifique TT(k) (k varie entre 1 et M), réalisé par un filtre Tk, puis passe par un filtre de..DTD: déphasage spécifique h, référencé FPk. Ces filtres de déphasage FPk sont chacun une approximation d'un filtrecible dont la fonction de transfert a les caractéristiques suivantes: sa phase est proche de celle du filtre de retard fractionnaire idéal introduisant le retard rk voulu pour le signal de sortie, c'est-à-dire que sa phase est proche de -2nrkf. Son module est la fonction inverse du module du filtre d'inversion d'amplitude I placé en amont du dispositif. Comme dans le cas du dispositif des figures 3 et 4, on comprend que le filtre d'inversion d'amplitude I a les mêmes effets que s'il était appliqué à chaque signal dupliqué, juste avant les filtres de déphasage 1 d'inversion d'amplitude. De la même façon que précédemment, on peut obtenir un couple filtre de préaccentuation d'amplitude I/filtre de déphasage FPk ayant les mêmes performances qu'un filtre de retard fractionnaire RFk de longueur L, et dont la longueur L1 du filtre de déphasage FPk soit inférieure, voire très petite devant la longueur L du filtre de retard RFk. Le dispositif de la figure 11 produit alors les mêmes résultats, avec la même précision que le dispositif de la figure 10 et avec une charge de calcul et un volume de mémoire nécessaire nettement diminués. Bien sûr, l'invention n'est pas limitée aux exemples de réalisation décrits. Elle s'étend à toute variante conforme à son esprit. Notamment, le filtre d'accentuation d'amplitude commun I pourra en même temps servir pour égaliser une fonction de transfert, par exemple celle d'un capteur. Plus généralement, l'invention n'est pas limitée aux filtres d'interpolation mais peut servir pour d'autres traitements linéaires avec soit un grand nombre d'entrées soit un grand nombre de sorties. Programme en C programme main.c page 1 /* application to beamforming algorithm ** #include "cons.h" #include #include t* antenna geometrie */ const float xposition[l={O,.1,.2,.3,.4,.5,.6,. 7,.8,.9}; const float xmin=O; const float xmnax=.9; /* filterl for phase shift introducing amplitude distortion */ /* filter2 for amplitude egalisation */ long filterl(short*, int, struct delay*, float*); int filter2(long*); struct delay *calcdelay(float,int); int main(int argc, char*argv[]) /**********************************************************/ /* declaration */ struct delay *del; /* integer and fract. part*/ char *infile,*outfile,*parfile;/* file names */ int i,m; /* loop variables */ int delmax,base; /* max. delay, address offset */ int neof, /* notendof file */ long outl; /* output filter 1 */ short out2; /* output filter 2 */ float phi /* steering angle */ float shaping[M}; /* microphone weighting */ short indata[INBUFFER][M]; /*input buffer */ long outdata[L2]; /* buffer for second filter */ FILE *infpt,*outfpt,*parfpt; /*file pointer */ /*********************************************************/ /* get command line parameters infile, outfile, parameter file*/ if (argcl=4) { printf("use frac in file out file parameterfile\n"); return(-l); } infile=argv[1];outfile=argv[2]; parfile=argv[3]; infpt=fopen(infile, "rb");outfpt=fopen(outfile,"wb");parfpt=fope n (parfile,rb"); if ((infpt==NULL) I (outfpt==NULL) I (parfile==NULL)) { printf("unable to open input or output or parameter file"); return(-2); } I************************************************************* /* maximum delay */ delmax =(int) ((xmax-xmin)*Fs/c); if (delmax+ L1 >INBUFFER) { printf("Input Buffer too small"); return(-3); } programme main.c page 2 /***************************************************/ /* get multiplexed input data from infile and put into indata */ fread(indata,M*sizeof(short),(delmax+L1),infpt); base=delmax+LI; /***************************************************/ /* main loop for each sample */ for (neof= 1;neof>O;) { /* read input data and steering paramneters */ base=( (base+1)%INBUFFER); fread(&indata[base][O],M*sizeof(short),l,infpt); neof=fread(&phi,sizeof(float),l,parfpt); fread(shaping,sizeof(float),M, parfpt); /* compute integer and fractionnal delay for each microphone */ del=calcdelay(phi,delmax); /* beamforming by delay-weighting- sum */ outl=filterl(&indata[O][O],base,del,shaping); /* the second filter shift loop */ for (i=O;i { {14520,32767,14513,-19}, {14108,32757,14932,50}, {13697,32734,15354,122}, {13290 32697 15779,198}, {12886 32646 16206,277}, {12486,32582 16636,361}, {12089,32504 17067,449}, {11697,32412 17500,541}, {11309,32307 17934,639}, {10926 32189 18368,741}, {10547 32058 18803,848}, {10174,31913,19238,960}, {9806,31756,19672,1078}, {9444,31586,20106,1202}, {9087,31403,20538,1331}, {8737,31208,20968,1466}, {8392,31001,21397,1607}, {8055,30781,21823,1755}, {7723,30550,22246,1909}, {7398,30308,22666,2069}, {7080,30054,23082,2236}, {6769,29789,23494,2410}, {6465,29514,23902,2590}, {6168,29228,24305,2778}, {5878,28931,24703,2973}, {5596,28625,25095,3174}, {5320,28310,25481,3384}, {5052,27985 25861,3600}, {4792,27651 26234,3823}, {4539,27309 26600,4054}, {4293,26958 26958,4293}, *{4054,26600 27309,4539} {3823,26234,27651,4792}, {3600,25861,27985,5052}, {3384,25481,28310,5320}, {3174,25095,28625,5596}, {2973,24703,28931,5878}, {2778,24305,29228,6168}, {2590,23902 29514,6465}, {2410,23494 29789,6769}, {2236,23082 30054,7080}, {2069,22666 30308,7398}, {1909,22246 30550,7723}, {1755,21823,30781,8055}, {1607,21397,31001,8392}, {1466,20968,31208,8737}, {1331,20538,31403,9087}, {1202,20106,31586,9444}, {1078,19672,31756 9806}, {960,19238,31913 10174}, {848,18803,32058 10547}, {741,18368,32189 10926}, {639,17934,32307 11309}, {541,17500,32412 11697}, {449,17067,32504 12089}, {361,16636,32582,12486}, {277,16206,32646,12886}, {198,15779,32697,13290} {122,15354,32734,13697} {50,14932,32757,14108} ; programme filterl.c page 2 long filtout, /* integer calculation for fast exact results no overflow for a single microphone since sum_over_i(abs(fl coeff[r][i])) /******************************************************/ /* delay - weighting - sum */ for (m=O;m filtout+=flcoeff[del[m]l.frac][i]*indata [(firstel- i+INBUFFER)%INBUFFER] [m]; sumout=sumout+shaping[m]*filtout; /******************************************************** /* normalisation and saturation if necessary (does not occur if sum(abs(shaping)) 32767) { printf("\nsumout filter 1 exceeds 16 bits: %f ",sumout); printf("\nlimited to saturation value "); if (sumout>O) sumout=32767; else sumout=-32767; end getchar(); } return( (long) sumout); } programmes calcdelay.c, filter2.c et cons.h /* calculate integer and fractionnal delay for plane wave */ /* impinging on a linear array under an angle phi */ /* can be adapted to other arrays and/or nearfield equations */ /* Wolfgang Tager, 28.10.96 */ #include "cons.h" #include #include struct delay *calcdelay(float phi,int delmax) { extern float xposition[]; extern float xmax; static struct delay del[M]; int m; float tmp; for (m=0;m /RESOL; del[m].integer=(int) tmp; del [m].frac=(int) (RESOL*(tmp-del[m].integer)); } return del; } /* amplitude egalisation filter */ /* Wolfgang Tager, 28.10.96 */ #include "cons.h" int filter2(long* outdata) { static int f2coeff[L2]= { -30,66,-189,512,-1246,2760,-5649, 10760,-19311,32767,-19311, 10760,-5639,2760,-1246,512,-189,66,-30}; char shift=17; /* sum(abs(f2coeff)) #define c 340. struct delay { int integer, int frac; }; REVENDICATIONS 1. Dispositif de traitement de signaux numériques véhiculés entre un port commun (C) et M ports particuliers (P1,..,PM) comportant un module de traitement linéaire (T1,..., TM) caractérisé par le fait qu'il comporte des filtres particuliers (FP1,...,FPM) qui assurent à la fois un déphasage et une accentuation d'amplitude choisie à chacun des M ports particuliers (P1,...,PM), ledit déphasage étant spécifique de chaque port particulier (P1,...,PM) et l'accentuation d'amplitude étant sensiblement la même pour tous les ports particuliers (P1,... PM), et par le fait qu'il comporte au dit port commun (C) un filtre d'inversion (I) commun qui réalise une accentuation d'amplitude inverse de la dite accentuation d'amplitude choisie. 2. Dispositif selon la revendication 1, caractérisé en ce que le port commun (C) est un port de réception d'un signal d'entrée (VE) et en ce que les M ports particuliers (P1,..,PM) sont des ports de transmission de signaux de sortie particuliers (Vl,...,VM). 3. Dispositif selon la revendication 1, caractérisé en ce que les M ports particuliers (P1,...,PM) sont des ports de réception de signaux d'entrée (Ul,...,UM) particuliers et en ce que le port commun (C) est un port de transmission d'un signal de sortie (US). 4. Dispositif selon l'une des revendications 1 à 3, caractérisé en ce que chacun des M filtres particuliers (FP1,...,FPM) a une fonction de transfert fréquentielle qui approche une fonction dont la phase est 2nfr et o f est la fréquence et o r est un retard comportant une partie fractionnaire, spécifique à chacun des ports particuliers (P1,...,PM)- 5. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce que chacun des M filtres particuliers (FP1,...,FPM) a une fonction de transfert fréquentielle dont le module approche une fonction d'accentuation d'amplitude qui est une fonction lisse ayant des valeurs faibles aux alentours de la demi- fréquence d'échantillonnage desdits signaux véhiculés. 6. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce que chacun des M filtres particuliers (FPl,...,FPM) a une fonction de transfert fréquentielle dont le module approche une fonction d'accentuation d'amplitude lHCible(f)l de la forme: IHcible(f) I = X + Y 1 + cos[ o le rapport X/Y est compris entre 0 et 0,3. 7. Dispositif selon la revendication 6, o X est pris égal à 0,06 et Y est pris égal à 0,47. 8. Dispositif selon l'une des revendications 1 à 7, caractérisé en ce que le module de traitement linéaire comporte des filtres de traitement linéaire (T1,...,TM) particuliers adjacents aux dits filtres particuliers (FP1,..., FPM). 9. Dispositif selon la revendication 3 et l'une des revendications 4 à 8 en combinaison, caractérisé en ce qu'il comporte un dispositif de sommation (S) de signaux en amont du filtre d'inversion commun (I). 10. Dispositif selon les revendications 8 et 9 en combinaison, caractérisé en ce que le dispositif de sommation (S) est en aval direct de chacun desdits filtres de traitement linéaire particuliers (T1,...,TM). 11. Dispositif selon la revendication 2 et une des revendications 4 à 8 en combinaison, caractérisé en ce qu'il comporte un dispositif de duplication (D) d'un signal en plusieurs signaux qui lui sont identiques en aval du filtre d'inversion commun (I). 12. Dispositif d'égalisation selon les revendications 8 et 11 en combinaison, caractérisé en ce que le dispositif de duplication (D) d'un signal en plusieurs signaux qui lui sont identiques est en amont direct de chacun desdits filtres de traitement linéaire particuliers (Tî,...,TM). 13. Dispositif selon l'une des revendications 1 à 12, caractérisé en ce que le filtre d'inversion (I) commun est un filtre à réponse impulsionnelle finie. 14. Dispositif selon l'une des revendications 1 à 12, caractérisé en ce que le filtre d'inversion commun (I) est un filtre à réponse impulsionnelle infinie. 15. Dispositif selon l'une des revendications 1 à 14, caractérisé en ce que chacun des filtres particuliers (FPî,...,FPM) a un même nombre de coefficients L1. 16. Dispositif selon la revendication 15, caractérisé en ce que pour deux filtres particuliers hl et h2 dont les retards fractionnaires normalisés respectifs sont symétriques par rapport à un retard égal à la demi- période d'échantillonnage, les coefficients hl(n) d'un seul de ces deux filtres sont stockés en mémoire, les coefficients h2(n) de l'autre filtre étant déduits par la relation h2(n) = hl (L1 - 1 - n), n variant entre 0 et (L1- 1). 17. Dispositif selon la revendication 9 et l'une quelconque des revendications 10, 13 à 16, en combinaison, caractérisé en ce que des dispositifs de sommation supplémentaires (S2) sont disposés en amont de certains filtres particuliers (FP1), chacun recevant plusieurs signaux d'entrée devant être retardés d'un même retard fractionnaire, de sorte que le dispositif ne présente pas de filtres particuliers (FP,-...,FPM) identiques en double.