Fixed-Point Designer

Principales fonctionnalités

  • Spécification des types de données à virgule fixe dans MATLAB, Simulink et Stateflow
  • Simulation accélérée exacte au bit près d’algorithmes virgule fixe
  • Recommandations pour les types de données sur la longueur des mots et la mise à l’échelle
  • Comparaison des résultats en virgule flottante et en virgule fixe
  • Remplacement des types de données à virgule fixe par le type double ou simple précision
  • Support de la génération de code C, HDL et PLC
Using Fixed-Point Designer to specify and view data types and scaling for MATLAB, Simulink, and Stateflow.
Fixed-Point Designer permet de spécifier et d’afficher les mises à l’échelle et les types de données pour MATLAB, Simulink et Stateflow.

Spécification en virgule fixe

Fixed-Point Designer vous permet de spécifier toutes les propriétés virgule fixe de votre code MATLAB, de vos modèles Simulink et de vos diagrammes Stateflow. Il offre un contrôle intégral de la définition du signe des données, de la longueur des mots et de la mise à l’échelle. Il supporte des longueurs de mots allant de 1 bit à 128 bits suivant l’application. Les mises à l’échelle par emplacement du point binaire et par pente et ;biais arbitraires requises par les capteurs et les actionneurs sont également supportées. Vous pouvez contrôler les détails de l’arithmétique, comme la manière dont sont gérés l’arrondi et le dépassement de capacité.

Simulink model demonstrating the effect of limited range and precision on a signal.
Modèle Simulink illustrant l’effet d’une dynamique et d’une précision limitées sur un signal, comme indiqué sur l’affichage (en haut à droite). La boîte de dialogue des paramètres (en haut à gauche) permet un contrôle complet des paramètres du bloc, y compris de tous les attributs virgule fixe.

Pour supporter les calculs en virgule fixe, Fixed-Point Designer offre un grand nombre de fonctions comme les opérations mathématiques et binaires, les opérateurs sur tableaux et matrices, les implémentations CORDIC et les fonctions trigonométriques.

Le Fixed-Point Designer vous laisse contrôler l’arithmétique virgule fixe. Les variables à virgule fixe peuvent soit partager un ensemble unique d’attributs arithmétiques, soit disposer de leurs propres attributs arithmétiques.

A data-type-independent MATLAB algorithm that provides both a floating-point response and a fixed-point response.
Un algorithme MATLAB indépendant des types de données qui propose à la fois une réponse en virgule flottante et une réponse en virgule fixe. Le tracé indique la sortie de l’algorithme avec les types de données à virgule fixe de 16 bit et les types de données à virgule flottante double précision.

Processus de conception exact au bit près

Fixed-Point Designer fournit une conformité au bit près tout au long du processus utilisant le Model-Based Design. La réponse d’un algorithme virgule fixe est exacte au bit près pour toutes les formes de simulation et de génération de code, y compris l’accélération et les tests software-in-the-loop. L’analyse et la vérification d’un algorithme virgule fixe reposent sur les représentations exactes au bit près. La conformité au bit près maximise les avantages du Model-Based Design, tels que la possibilité de détecter des erreurs au début du processus, lorsque leur correction est plus simple et moins coûteuse.

Comparison of output with original baseline output using Fixed-Point Designer.
Comparaison entre la sortie avec des types de données qui utilisent une longueur de mots de 16 bits et une longueur de fraction proposée et la sortie de la configuration de base en virgule flottante. À gauche, les deux signaux se superposent, et les différences sont de l’ordre de 10-6 (à droite).

Pour les modèles Simulink, une fois qu’un modèle a été configuré avec des types de données à virgule fixe, vous pouvez simuler son comportement pour étudier les compromis d’implémentation entre une dynamique et une précision limitées pour les systèmes embarqués en virgule fixe.

Les outils de Fixed-Point Designer vous permettent d’accéder à ces valeurs et de modifier les types de données des signaux, en optimisant la précision tout en vérifiant que leur dynamique est couverte. Vous pouvez indiquer la dynamique des types de données à l’aide des valeurs minimum et maximum du modèle, des résultats de simulation, ou des résultats dérivés des valeurs minimum et maximum. Vous pouvez verrouiller les types de données en sortie pour éviter qu’ils soient modifiés.

Fixed-point simulation of a fuel rate control system designed using Simulink and Stateflow.
La simulation en virgule fixe d’un système de contrôle de débit de carburant conçu avec Simulink et Stateflow. Le Fixed-Point Tool vous permet de trouver un compromis entre la dynamique et la précision pour les données des modèles Simulink (en bas).

Conversion de virgule flottante en virgule fixe

Fixed-Point Designer propose des outils d’analyse qui permettent la conversion efficace d’une représentation virgule flottante en une représentation virgule fixe. Les outils vous permettent d’enregistrer les valeurs minimum et maximum des données et de signaler le moment où le dépassement de capacité se produit pendant les opérations en virgule fixe. La fonctionnalité de remplacement des types de données vous permet d’analyser un algorithme en virgule fixe en échangeant les types de données virgule fixe et virgule flottante. Avec cette analyse, vous pouvez observer la plage dynamique des variables utilisées dans votre modèle et vous assurer que l’algorithme se comporte de façon cohérente dans les représentations virgule flottante et virgule fixe.

Dans MATLAB, vous pouvez instrumenter votre code pour la journalisation afin de collecter les valeurs minimum et maximum de la simulation, et d’obtenir des types de données proposés. Les fonctions d’instrumentation peuvent générer des histogrammes log2. Un histogramme est généré pour chaque variable nommée et intermédiaire, et pour chaque expression dans votre code. Vous pouvez utiliser cet histogramme pour déterminer les longueurs de mot et de fraction pour vos valeurs à virgule fixe.

Fixed-Point Converter app showing range of proposed data type and percentage of simulation values.
Rapport de génération de code MATLAB d’un filtre à réponse impulsionnelle finie (RIF) converti en virgule fixe. Vous pouvez instrumenter votre code pour la journalisation, pour collecter les valeurs minimum et maximum, pour tracer un histogramme à partir de la simulation, et pour obtenir les types de données proposés.

Pour les modèles Simulink, vous pouvez convertir automatiquement un modèle virgule flottante conçu dans Simulink, Stateflow, et dans les boîtes à outils système comme Communications System Toolbox™ et DSP System Toolbox™ en un modèle virgule fixe à l’aide du Fixed-Point Tool.

Passage de la virgule flottante à la virgule fixe avec le Fixed-Point Advisor
Enregistrement et dimensionnement fournis avec Fixed-Point Advisor permet d’optimiser le choix de la virgule fixe pour des résultats plus précis

Fixed-Point Designer offre des fonctionnalités de débogage qui vous permettent de basculer vers une représentation de votre modèle en virgule flottante pour effectuer un test de performance, identifier les erreurs de modélisation et déterminer les valeurs minimum et maximum idéales.

Optimisation de la virgule fixe avec le Fixed-Point Tool
Fixed-Point Tool est utilisé pour faciliter le passage d’un modèle virgule flottante en virgule fixe et aider à choisir un typage initial

Simulation accélérée

Fixed-Point Designer vous permet d’accélérer les algorithmes virgule fixe par la génération de fichier MEX. Cette accélération est rendue possible grâce à la fonction fiaccel qui permet de convertir le code MATLAB en une fonction MEX, augmentant la vitesse d’exécution de vos algorithmes virgule fixe.

Code showing how to accelerate a numerical filter fixed-point algorithm.
Exemple de code montrant comment accélérer un algorithme de filtre numérique virgule fixe à l’aide de la fonction fiaccel.

Génération de code

L’utilisation de Fixed-Point Designer combinée à MATLAB Coder™ ou Embedded Coder® vous permet de générer un code C utilisant le format entier à partir de votre code MATLAB virgule fixe.

Fixed-point MATLAB code for a FIR filter and efficient C code generated using MATLAB Coder with Fixed-Point Designer.
Code MATLAB virgule fixe pour un filtre RIF (en haut) et code C efficace généré à l’aide de MATLAB Coder avec Fixed-Point Designer (en bas).

L’utilisation de Fixed-Point Designer combinée à Simulink Coder™ ou Embedded Coder vous permet de générer un code C utilisant le format entier à partir de vos modèles Simulink et de vos diagrammes Stateflow virgule fixe.

Model incorporating wide integer and fixed-point operations and generated multiword C code.
Modèle qui incorpore des opérations virgule fixe sur de grands entiers (en haut), et code C généré utilisant plusieurs mots (en bas). Le code à plusieurs mots est normalement déclenché lors de l’utilisation de paramètres ou de signaux avec des types de données plus larges que le type C « long ».

Le code généré est en conformité au bit près avec votre modèle, lui permettant de se comporter exactement comme lors de la simulation. Le code généré prend automatiquement en charge tous les détails de l’implémentation des modèles en virgule fixe, comme les ajustements de la mise à l’échelle, l’arrondi et les calculs avancés en virgule fixe. Vous pouvez générer un code pour des signaux et des paramètres avec des tailles de mot allant de 1 à 128 bits. Vous pouvez utiliser le code généré pour une grande variété d’applications, y compris une simulation accélérée, un prototypage rapide et le déploiement en production.

L’utilisation de Fixed-Point Designer combinée à HDL Coder™ vous permet de générer un code Verilog® et VHDL® synthétisable exact au bit près à partir de votre code MATLAB, de vos modèles Simulink et de vos diagrammes Stateflow.

Génération de code optimisé pour ARM Cortex-A, -R, -M avec MATLAB et Simulink

Visionner le webinar