Tuesday 10 January 2017

Filtre À Moyenne Mobile Mobile À Point Fixe

Le guide des scientifiques et ingénieurs sur le traitement du signal numérique Par Steven W. Smith, Ph. D. Chapitre 28: Processeurs de signaux numériques Traitement du signal numérique fixe ou flottant peut être divisé en deux catégories: point fixe et point flottant. Elles se rapportent au format utilisé pour stocker et manipuler des nombres dans les périphériques. Les DSP à point fixe représentent généralement chaque nombre avec un minimum de 16 bits, bien qu'une longueur différente puisse être utilisée. Par exemple, Motorola fabrique une famille de DSP à point fixe qui utilisent 24 bits. Il existe quatre façons communes que ces 2 16 65536 motifs de bits possibles peuvent représenter un nombre. En entier non signé. Le nombre stocké peut prendre n'importe quelle valeur entière de 0 à 65.535. De même, l'entier signé utilise le complément de deux pour que la gamme inclue des nombres négatifs, de -32 768 à 32 767. Avec une notation de fraction non signée, les 65 536 niveaux sont répartis uniformément entre 0 et 1. Enfin, le format de fraction signé permet des nombres négatifs, également espacés entre -1 et 1. En comparaison, les DSP à virgule flottante utilisent généralement un minimum de 32 bits pour stocker chacun valeur. Il en résulte beaucoup plus de modèles de bits que pour le point fixe, 2 32 4 294 967 296 pour être exact. Une caractéristique clé de la notation à virgule flottante est que les nombres représentés ne sont pas uniformément espacés. Dans le format le plus courant (ANSIIEEE Std. 754-1985), les nombres les plus grands et les plus petits sont plusmn3.4x10 38 et 1.210 -38. respectivement. Les valeurs représentées sont espacées de façon inégale entre ces deux extrêmes, de sorte que l'écart entre deux nombres quelconques est environ dix millions de fois plus petit que la valeur des nombres. Cela est important car il place de grands écarts entre un grand nombre, mais de petits écarts entre les petits nombres. La notation à virgule flottante est discutée plus en détail au chapitre 4. Tous les DSP à virgule flottante peuvent également gérer des nombres à virgule fixe, une nécessité d'implémenter des compteurs, des boucles et des signaux venant du convertisseur analogique-numérique et allant au DAC. Cependant, cela ne signifie pas que les mathématiques à point fixe seront effectuées aussi rapidement que les opérations en virgule flottante, cela dépend de l'architecture interne. Par exemple, les DSP SHARC sont optimisés pour les opérations à virgule flottante et à virgule fixe et les exécute avec une efficacité équivalente. Pour cette raison, les périphériques SHARC sont souvent appelés DSP 32 bits, plutôt que simplement Floating Point. La figure 28-6 illustre les compromis primaires entre les DSP à virgule fixe et à virgule flottante. Dans le chapitre 3, nous avons souligné que l'arithmétique à point fixe est beaucoup plus rapide que la virgule flottante dans les ordinateurs à usage général. Cependant, avec les DSP, la vitesse est à peu près la même, le résultat du matériel étant très optimisé pour les opérations mathématiques. L'architecture interne d'un DSP à virgule flottante est plus compliquée que pour un dispositif à point fixe. Tous les registres et bus de données doivent avoir une largeur de 32 bits au lieu de seulement 16, le multiplicateur et l'ALU doivent être en mesure d'effectuer rapidement des opérations arithmétiques à virgule flottante, le jeu d'instructions doit être plus grand (pour pouvoir gérer des nombres flottants et fixes) bientôt. Le point flottant (32 bits) offre une meilleure précision et une dynamique plus élevée que le point fixe (16 bits). En outre, les programmes à virgule flottante ont souvent un cycle de développement plus court, car le programmeur ne doit généralement pas se soucier de problèmes tels que le dépassement de capacité, le sous-débit et l'erreur d'arrondi. D'autre part, DSP à point fixe ont été traditionnellement moins chers que les dispositifs à virgule flottante. Rien ne change plus rapidement que le prix de l'électronique tout ce que vous trouverez dans un livre sera périmé avant son impression. Néanmoins, le coût est un facteur clé dans la compréhension de la façon dont les DSP évoluent, et nous devons vous donner une idée générale. Lorsque ce livre a été achevé en 1999, les DSP à point fixe se vendent entre 5 et 100, tandis que les dispositifs à virgule flottante se situent entre 10 et 300. Cette différence de coût peut être considérée comme une mesure de la complexité relative entre les appareils. Si vous voulez savoir ce que les prix sont aujourd'hui. Vous avez besoin de regarder aujourd'hui. Maintenant, nous allons tourner notre attention sur la performance ce que peut faire un système à virgule flottante 32 bits faire un point fixe 16 bits cant La réponse à cette question est le rapport signal / bruit. Supposons que nous stockons un nombre dans un format 32 bits en virgule flottante. Comme mentionné précédemment, l'écart entre ce nombre et son voisin adjacent est d'environ un dix millionième de la valeur du nombre. Pour stocker le nombre, il doit être arrondi vers le haut ou vers le bas d'un maximum de la moitié de la taille de l'espace. En d'autres termes, chaque fois que nous stockons un nombre en notation à virgule flottante, nous ajoutons du bruit au signal. La même chose se produit quand un nombre est stocké comme une valeur de point fixe de 16 bits, sauf que le bruit ajouté est bien pire. C'est parce que les écarts entre les nombres adjacents sont beaucoup plus grands. Par exemple, supposons que nous stockons le nombre 10 000 comme un entier signé (de -32 768 à 32 767). L'écart entre les nombres est un dix-millième de la valeur du nombre que nous stockons. Si nous voulons stocker le nombre 1000, l'écart entre les nombres est seulement un un millième de la valeur. Le bruit dans les signaux est généralement représenté par son écart type. Cela a été discuté en détail au chapitre 2. Car ici, le fait important est que l'écart-type de ce bruit de quantification est d'environ un tiers de la taille de l'intervalle. Cela signifie que le rapport signal / bruit pour stocker un nombre à virgule flottante est d'environ 30 millions à un, tandis que pour un nombre de points fixes il est seulement environ dix mille à un. En d'autres termes, le point flottant a environ 30 000 fois moins de bruit de quantification que le point fixe. Ceci soulève une importante façon dont les DSP sont différents des microprocesseurs traditionnels. Supposons que nous mettions en œuvre un filtre FIR en point fixe. Pour ce faire, nous parcourons chaque coefficient, le multiplions par l'échantillon approprié à partir du signal d'entrée et ajoutez le produit à un accumulateur. Voilà le problème. Dans les microprocesseurs traditionnels, cet accumulateur n'est qu'une autre variable à point fixe de 16 bits. Pour éviter le débordement, nous avons besoin d'escalader les valeurs ajoutées, et nous ajouterons en conséquence le bruit de quantification à chaque étape. Dans le pire des cas, ce bruit de quantification va simplement ajouter, abaissant fortement le rapport signal sur bruit du système. Par exemple, dans un filtre FIR de 500 coefficients, le bruit sur chaque échantillon de sortie peut être 500 fois le bruit sur chaque échantillon d'entrée. Le rapport signal / bruit de dix mille à un a chuté à un affreux vingt à un. Bien que ce soit un cas extrême, il illustre le point principal: quand beaucoup d'opérations sont effectuées sur chaque échantillon, c'est mauvais, vraiment mauvais. Voir le chapitre 3 pour plus de détails. Les DSP gèrent ce problème en utilisant un accumulateur de précision étendu. Il s'agit d'un registre spécial qui a 2 à 3 fois plus de bits que les autres emplacements mémoire. Par exemple, dans un DSP de 16 bits, il peut avoir de 32 à 40 bits, tandis que dans les DSP de SHARC il contient 80 bits pour une utilisation à point fixe. Cette gamme étendue élimine pratiquement tout bruit de ronde alors que l'accumulation est en cours. La seule erreur d'arrondi a été subie lorsque l'accumulateur est mis à l'échelle et stocké dans la mémoire 16 bits. Cette stratégie fonctionne très bien, bien qu'elle limite la façon dont certains algorithmes doivent être effectués. En comparaison, la virgule flottante a un tel bruit de quantification que ces techniques ne sont généralement pas nécessaires. En plus d'avoir un bruit de quantification plus faible, les systèmes à virgule flottante sont également plus faciles à développer des algorithmes pour. La plupart des techniques DSP sont basées sur des multiplications et des ajouts répétés. En point fixe, la possibilité d'un débordement ou d'un sous-débit doit être considérée après chaque opération. Le programmeur doit continuellement comprendre l'amplitude des nombres, comment les erreurs de quantification s'accumulent, et ce que l'échelle doit avoir lieu. En comparaison, ces questions ne se posent pas en virgule flottante les numéros prennent soin d'eux-mêmes (sauf dans de rares cas). Pour mieux comprendre ce problème, la Fig. 28-7 montre une table du manuel d'utilisation de SHARC. Cela décrit les façons dont la multiplication peut être effectuée pour les formats à virgule flottante et fixe. Tout d'abord, regardez comment les nombres en virgule flottante peuvent être multipliés il n'y a qu'une seule voie C'est-à-dire, Fn Fx Fy, où Fn, Fx et Fy sont l'un des 16 registres de données. Il ne pouvait pas être plus simple. En comparaison, regardez toutes les commandes possibles pour la multiplication de points fixes. Ce sont les nombreuses options nécessaires pour traiter efficacement les problèmes d'arrondi, de mise à l'échelle et de format. Dans la Fig. 28-7, Rn, Rx et Ry se réfèrent à l'un quelconque des 16 registres de données, et MRF et MRB sont des accumulateurs de 80 bits. Les lignes verticales indiquent les options. Par exemple, l'entrée en haut à gauche de ce tableau signifie que toutes les commandes suivantes sont valides: Rn Rx Ry, MRF Rx Ry et MRB Rx Ry. En d'autres termes, la valeur de deux registres quelconques peut être multipliée et placée dans un autre registre, ou dans l'un des accumulateurs de précision étendus. Ce tableau indique également que les nombres peuvent être signés ou non signés (S ou U), et peuvent être fractionnaires ou entiers (F ou I). Les options RND et SAT sont des manières de contrôler l'arrondissement et le débordement de registre. Il ya d'autres détails et options dans le tableau, mais ils ne sont pas importants pour notre discussion actuelle. L'idée importante est que le programmeur de point fixe doit comprendre des dizaines de façons d'accomplir la tâche très fondamentale de la multiplication. En revanche, le programmeur à virgule flottante peut passer son temps à se concentrer sur l'algorithme. Compte tenu de ces compromis entre le point fixe et le point flottant, comment choisissez-vous les utiliser Voici quelques points à considérer. Tout d'abord, regardez combien de bits sont utilisés dans le ADC et DAC. Dans de nombreuses applications, 12-14 bits par échantillon est le croisement pour l'utilisation de point fixe ou flottant. Par exemple, la télévision et d'autres signaux vidéo utilisent généralement ADC 8 bits et DAC, et la précision du point fixe est acceptable. En comparaison, les applications audio professionnelles peuvent échantillonner avec jusqu'à 20 ou 24 bits, et presque certainement besoin de virgule flottante pour capturer la grande plage dynamique. La prochaine chose à regarder est la complexité de l'algorithme qui sera exécuté. Si elle est relativement simple, pensez point fixe si elle est plus compliquée, pensez point flottant. Par exemple, le filtrage FIR et d'autres opérations dans le domaine temporel ne nécessitent que quelques dizaines de lignes de code, ce qui les rend aptes au point fixe. En revanche, les algorithmes de domaine fréquentiel, comme l'analyse spectrale et la convolution FFT, sont très détaillés et peuvent être beaucoup plus difficiles à programmer. Bien qu'ils puissent être écrits en point fixe, le temps de développement sera grandement réduit si le point flottant est utilisé. Enfin, pensez à l'argent: l'importance du coût du produit et l'importance du coût du développement. Lorsqu'un point fixe est choisi, le coût du produit sera réduit, mais le coût du développement sera probablement plus élevé en raison de Les algorithmes les plus difficiles. Inversement, la virgule flottante aboutira généralement à un cycle de développement plus rapide et moins coûteux, mais à un produit final plus coûteux. La figure 28-8 montre quelques-unes des grandes tendances des DSP. La figure (a) illustre l'impact que les processeurs de signaux numériques ont eu sur le marché embarqué. Ce sont des applications qui utilisent un microprocesseur pour diriger et commander directement un système plus grand, tel qu'un téléphone cellulaire, un four à micro-ondes ou un panneau d'affichage pour instruments automobiles. Le microcontrôleur nom est souvent utilisé dans la référence à ces dispositifs, pour les distinguer des microprocesseurs utilisés dans les ordinateurs personnels. Comme indiqué en (a), environ 38 des concepteurs embarqués ont déjà commencé à utiliser DSP, et 49 autres envisagent le commutateur. Le rendement élevé et la puissance de calcul des DSP en font souvent un choix idéal pour les conceptions intégrées. Comme illustré dans (b), environ deux fois plus d'ingénieurs utilisent actuellement le point fixe que l'utilisation des DSP à virgule flottante. Cependant, cela dépend beaucoup de l'application. Fixed point est plus populaire dans les produits de consommation concurrentiels où le coût de l'électronique doit être maintenu très faible. Un bon exemple de cela est les téléphones cellulaires. Lorsque vous êtes en concurrence pour vendre des millions de votre produit, une différence de coût de seulement quelques dollars peut être la différence entre le succès et l'échec. En comparaison, la virgule flottante est plus courante lorsqu'une plus grande performance est nécessaire et que le coût n'est pas important. Par exemple, supposons que vous conceviez un système d'imagerie médicale, tel un scanner de tomodensitométrie. Seules quelques centaines de modèles seront vendus, à un prix de plusieurs centaines de milliers de dollars chacun. Pour cette application, le coût du DSP est insignifiant, mais la performance est critique. Malgré le nombre accru de DSP à point fixe utilisé, le marché à virgule flottante est le segment à plus forte croissance. Comme indiqué en (c), plus de la moitié des ingénieurs utilisant des périphériques 16 bits prévoient migrer vers un point flottant à un moment donné dans un proche avenir. Avant de quitter ce sujet, nous devrions souligner à nouveau que le point flottant et le point fixe utilisent habituellement 32 bits et 16 bits, respectivement, mais pas toujours. Par exemple, la famille SHARC peut représenter des nombres en point fixe 32 bits, un mode qui est commun dans les applications audio numériques. Ceci fait que les 2 32 niveaux de quantification sont espacés uniformément sur une plage relativement petite, par exemple entre -1 et 1. En comparaison, la notation en virgule flottante place les 2 32 niveaux de quantification logarithmiquement sur une large plage, typiquement plusmn3,4x10 38. Cela donne 32 - bit point fixe une meilleure précision. C'est-à-dire que l'erreur de quantification sur un échantillon quelconque sera inférieure. Cependant, le point flottant 32 bits a une plage dynamique plus élevée. Ce qui signifie qu'il ya une plus grande différence entre le plus grand nombre et le plus petit nombre qui peut être représenté. Document dfilt. latticearma Le plus important est la position de l'étiquette dans le diagramme, qui identifie où le format s'applique. Par exemple, regardez l'étiquette LatticeProdFormat, qui suit toujours un élément de multiplication de coefficients dans le flux de signal. L'étiquette indique que les coefficients du réseau quittent l'élément de multiplication avec la longueur du mot et la longueur de fraction associés aux opérations de produit qui incluent des coefficients. Après avoir examiné le tableau, vous voyez que LatticeProdFormat fait référence aux propriétés ProductWordLength. LatticeProdFracLength. Et ProductMode qui définissent entièrement le format de coefficient après des opérations multipliées (ou produit). Propriétés Dans ce tableau, vous voyez les propriétés associées à l'implémentation de réseau latéral mobile autorégressif des objets dfilt. Remarque Le tableau répertorie toutes les propriétés qu'un filtre peut avoir. Beaucoup de propriétés sont dynamiques, ce qui signifie qu'elles n'existent qu'en réponse aux paramètres des autres propriétés. Vous ne pouvez pas voir toutes les propriétés répertoriées tout le temps. Pour afficher toutes les propriétés d'un filtre à tout moment, utilisez où hd est un filtre. Pour plus d'informations sur les propriétés de ce filtre ou de tout objet dfilt, reportez-vous à Propriétés du filtre à point fixe. Définit le mode utilisé pour répondre aux conditions de débordement dans l'arithmétique à point fixe. Choisissez entre saturer (limiter la sortie à la plus grande valeur positive ou négative représentable) ou envelopper (définir les valeurs débordantes à la valeur représentable la plus proche en utilisant l'arithmétique modulaire). Le choix que vous faites affecte seulement l'accumulateur et l'arithmétique de rendement. L'arithmétique des coefficients et des intrants est toujours saturée. Enfin, les produits ne se déversent jamais, ils maintiennent une grande précision. Pour la sortie d'une opération de produit, elle définit la longueur de fraction utilisée pour interpréter les données. Cette propriété devient accessible en écriture (vous pouvez modifier la valeur) lorsque vous définissez ProductMode sur SpecifyPrecision. Détermine comment le filtre gère la sortie des opérations du produit. Choisissez entre la précision totale (FullPrecision) ou si vous souhaitez conserver le bit le plus significatif (KeepMSB) ou le bit le moins significatif (KeepLSB) dans le résultat lorsque vous devez raccourcir les mots de données. Pour que vous puissiez définir la précision (la longueur de fraction) utilisée par la sortie des multiplicateurs, vous définissez ProductMode sur SpecifyPrecision. Spécifie la longueur du mot à utiliser pour les résultats de l'opération de multiplication. Cette propriété devient accessible en écriture (vous pouvez modifier la valeur) lorsque vous définissez ProductMode sur SpecifyPrecision. Spécifie s'il faut réinitialiser les états du filtre et la mémoire avant chaque opération de filtrage. Permet de décider si votre filtre conserve les états des filtres précédents. False est le paramètre par défaut. Définit le mode utilisé par le filtre pour quantifier les valeurs numériques lorsque les valeurs se situent entre des valeurs représentables pour le format de données (longueur des mots et des fractions). Ceil - Ronde vers l'infini positif. Convergent - Redonne à l'entier représentable le plus proche. Les liens se rapprochent de l'entier même le plus proche. C'est le moins partial des méthodes disponibles dans ce logiciel. Fix - Ronde vers zéro. Floor - Ronde vers l'infini négatif. Plus proche - Ronde vers la plus proche. Les liens tournent vers l'infini positif. Round - Round vers le plus proche. Les liens tournent vers l'infini négatif pour les nombres négatifs, et vers l'infini positif pour les nombres positifs. Le choix que vous faites affecte seulement l'accumulateur et l'arithmétique de rendement. Coefficient et arithmétique d'entrée toujours ronde. Enfin, les produits ne débordent jamais 8212 ils maintiennent la précision complète. Spécifie si le filtre utilise des coefficients de point fixe signés ou non signés. Seuls les coefficients reflètent ce paramètre de propriété. Sélectionnez votre pays


No comments:

Post a Comment