
Nous concluons notre épopée avec la traduction de la documentation propriétaire de Cypress sur UDB. Le dernier numéro - sur l'adressage de l'UDB - est devant vous.
Le contenu général du cycle «UDB. Qu'est-ce que c'est? "
Partie 1. Introduction. Pld.Partie 2. Chemin de données.Partie 3. Datapath FIFO.Partie 4. Datapath ALU.Partie 5. Chemin de données. Petites choses utiles.Partie 6. Module de gestion et d'état.Partie 7. Module de commande de temporisation et de réinitialisationPartie 8. Adressage UDB. (Article actuel)
21.3.5 Adressage UDB
La paire UDB possède trois espaces d'adressage uniques:
- Registres de travail 8 bits - un contrôleur de bus qui n'a accès qu'à 8 bits de données par cycle de bus peut utiliser cet espace d'adressage pour lire ou écrire n'importe quel registre de travail UDB. Il s'agit notamment des registres avec lesquels le CPU et le DMA interagissent pendant le fonctionnement normal.
- Registres de travail 16 bits - Un contrôleur de bus 16 bits, tel qu'un DMA ou PSoC 5LP Cortex-M3, peut accéder à 16 bits en un cycle de bus pour permettre le transfert de données vers des fonctions qui nécessitent 16 bits ou plus. Malgré le fait que cet espace d'adressage n'est pas lié à la zone à laquelle l'espace 8 bits est lié, il a accès aux mêmes registres, uniquement à une paire à la fois.
- Registres de configuration 8 ou 16 bits - ces registres configurent UDB pour exécuter une fonction. Après la configuration, les registres sont généralement définis sur un état statique pendant le fonctionnement UDB. Ces registres conservent leur état après le mode veille.
Note du traducteurD'une manière ou d'une autre, tout est formulé de manière compliquée. À mon avis, pour les deux premiers points, il est plus facile d'introduire le concept d'adressage de méthodes avec différentes profondeurs de bits du registre de travail. Via des registres de travail 8 bits et 16 bits respectivement. Si vous êtes confus en lisant ces paragraphes, essayez de considérer le texte de cette façon. Différentes fenêtres dans l'espace d'adressage de la CPU, fournissant l'adressage de la même à travers les registres de travail de différents bits. C’est tout.21.3.5.1 Espace d'adressage du registre de travail
Les registres de travail sont utilisés pendant le fonctionnement normal et comprennent des batteries, des registres de données, des FIFO, des registres de contrôle et d'état, un registre de chevauchement de masques et un registre de contrôle auxiliaire.
La figure 21-43 montre une carte de registre d'un UDB.
Sur la droite de la figure 21-43 se trouve une adresse 16 bits qui est toujours paire. Dans ce cas, le numéro UDB a une dimension de 5 bits, et non 4, en raison de l'emplacement égal des adresses. Les 4 bits supérieurs définissent toujours le numéro de registre.
Figure 21-43. Registres de travail UDB.Accès au registre de travail 8 bitsDans ce mode, l'accès à tous les registres UDB se fait via des adresses alignées sur la limite d'octets. En mode d'accès pour les registres 8 bits, comme le montre la figure 21-44, tous les octets de données écrits dans UDB sont alignés avec l'octet bas du bus UDB 16 bits.
Dans ce mode, l'accès à tout moment ne peut être accédé qu'à un octet.
Figure 21-44. Accès au registre de travail 8 bits.Espace d'adressage du registre de travail 16 bitsUn espace d'adressage 16 bits conçu pour un accès DMA efficace et fournissant un accès CPU programmé aux processeurs qui le prennent en charge, comme le Cortex-M3 dans PSoC 5LP. Il existe deux modes d'accès aux registres 16 bits: le mode par défaut et le mode de concaténation. Comme le montre la figure 21-45, en mode par défaut, il accède au registre spécifié dans UDB 'i' via l'octet bas et au même registre dans UDB 'i + 1' via l'octet haut. Cela rend le traitement des données 16 bits efficace dans les UDB voisins (par ordre d'adresses) configurés en tant que fonctions 16 bits.
Figure 21-45. Accès aux registres de travail 16 bits en mode par défaut.En mode concaténation, les registres d'un UDB sont combinés pour former des registres 16 bits, comme le montre la figure 21-46. Dans ce mode, le bus de données 16 bits de la matrice UDB doit accéder à une paire de registres dans l'UDB au format indiqué sur la figure. Par exemple, lors de l'accès au registre A0, l'accès à A0 via l'octet bas et à A1 via l'octet haut se produira réellement.
Figure 21-46. Accès à un registre de travail 16 bits en mode concaténationL'utilisation de DMA est limitée par la profondeur de bits du registre de travail 16 bits. Cela ne suffit pas lorsque vous travaillez avec des fonctions supérieures à 16 bits. Cela est dû aux superpositions d'adresses, comme indiqué dans
tableau 21-25.
Tableaux 21-25. Espace d'adressage optimisé pour les fonctions UDB 16 bits.
Lorsque le DMA transmet 16 bits à l'adresse 0, les octets bas et hauts sont écrits respectivement dans UDB0 et UDB1. Dans la transmission DMA 16 bits suivante à l'adresse 2, la valeur dans UDB1 est écrasée par l'octet de poids faible de cette transmission.
Pour éviter les problèmes associés à une telle organisation de la mémoire, il est recommandé pour les fonctions dont la profondeur de bits est supérieure à 16 bits de démarrer le processus DMA pour une zone avec des registres de travail 8 bits.
21.3.5.2 Espace d'adressage du registre de configuration
La configuration se fait au niveau de la paire UDB. Une paire UDB se compose de deux UDB et d'un canal traceur associé, comme le montre la figure 21-47.

Figure 21-47. Schéma d'adresse pour configurer une paire UDB.
21.3.5.3 Espace d'adressage de configuration UDB
La figure 21-48 montre le diagramme de configuration d'adresse d'un UDB spécifique. Comme vous pouvez le voir, cet espace de configuration est dupliqué sur les deux UDB par paires. Au total, 128 octets (adresses à 7 bits) sont réservés pour chaque configuration UDB, qui sont divisés en segments de 16 bits. Il convient de noter que l'accès 16 bits aux bordures impaires n'est pas pris en charge. La lecture renvoie toujours 16 bits dans l'espace de configuration et les octets inutiles peuvent être ignorés.

Figure 21-48. L'espace d'adressage de la configuration UDB.
21.3.5.4 Espace d'adressage de configuration de routage
La configuration de trace UDB se compose de bits de RAM intégrés pour contrôler l'état des commutateurs de passerelle, de la segmentation et des tampons d'entrée / sortie.
21.3.6 Cohérence d'accès au bus système
Les registres UDB ont un mode d'accès double:
- accès au bus système, dans lequel la CPU ou le DMA lit ou écrit dans le registre UDB;
- Accès interne UDB, dans lequel la fonction UDB met à jour ou utilise le contenu du registre
.
21.3.6.1 Accès simultané au bus système
Le tableau ci-dessous contient une liste des événements d'accès simultané possibles et le comportement requis.
Tableau 21-26. Accès simultané au bus système.
a. Les registres Ax peuvent être lus en toute sécurité à l'aide de la fonction de capture du logiciel FIFO.
b. Dans les registres Dx, les FIFO ne peuvent être écrits que dynamiquement. Dans ce mode, la lecture directe des registres Dx n'est pas disponible.
c. Le registre CNT ne peut être lu en toute sécurité que lorsqu'il est désactivé. Une alternative pour lire dynamiquement la valeur CNT est de tracer la sortie vers le registre SC (en mode transparent).
d. Les bits du registre MC peuvent être retracés jusqu'aux entrées du registre d'état (en mode transparent) pour une lecture sûre.
21.3.6.2 Accès cohérent à l'accumulateur (lectures et écritures atomiques)
Les batteries UDB sont l'objectif principal du traitement des données. Par conséquent, la lecture de ces registres directement pendant le fonctionnement normal donne un résultat indéfini, comme indiqué dans le tableau ci-dessus. Cependant, il existe un support intégré pour les lectures atomiques sous la forme d'une capture de programme implémentée sur des blocs connectés en chaîne. Dans un tel modèle d'utilisation, la lecture de la dernière batterie significative transfère les données de tous les blocs connectés dans la chaîne aux FIFO associés. L'enregistrement atomique dans FIFO peut être implémenté par programme. Des opérations d'écriture individuelles peuvent être effectuées à l'entrée FIFO, puis le signal d'état FIFO auquel le dernier enregistrement a été effectué peut être transmis à tous les blocs liés, tandis que les données FIFO seront transférées vers les registres Dx ou Ax.
Mot du traducteur
Ce cycle de traduction a été fait en réponse au commentaire de l' article , où il a été proposé d'abord de décrire brièvement ce qu'est l'UDB. Maintenant, il est clair que pour une réponse brève, il serait nécessaire de citer au moins la moitié des documents présentés ici, sinon la réponse serait encore incomplète. Mais maintenant, tous les documents sont traduits et compilés. La tâche est terminée.
Pendant que le travail se poursuivait, nous avons également attiré l'attention sur un autre bloc PSoC intéressant, qui est mal connu de tout le monde, mais il est chargé d'une puissance énorme. C'est DFB, Digital Filter Block. C'est vrai, ça fait peur de se précipiter dans la traduction. D'après la traduction sur UDB, il est clair qu'une seule documentation ne suffit pas, oh, la pratique est nécessaire. Le problème est qu'il existe peu d'exemples prêts à l'emploi sur UDB, mais ils le sont. Il n'a pas encore été possible de trouver quelque chose d'utile à partir des exemples sur DFB (Cypress lui-même a fait un filtre numérique sous la forme d'une boîte noire, cela fonctionne, mais on ne sait pas encore comment). Une traduction sans exemple n'aura aucun sens. Par conséquent, en saisissant cette opportunité, nous attirons l'attention des lecteurs sur ce bloc. Peut-être que quelqu'un dans les commentaires fournira des liens vers de bons exemples. Si nous parvenons à gérer ce bloc, il sera possible de faire un cycle de traductions et d'articles pratiques dessus. En attendant, c'est tout.