UDB. Qu'est-ce que c'est? Partie 2. Chemin de données



Nous continuons à considérer UDB sur la base de la documentation Cypress. Et cette fois, nous étudierons en détail Datapath, un automate opérationnel.

Le contenu général du cycle «UDB. Qu'est-ce que c'est? "
Partie 1. Introduction. Pld.
Partie 2. Chemin de données. (Article actuel)
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éinitialisation
Partie 8. Adressage UDB

21.3.2 Machine opérationnelle (Datapath)


Le chemin de données représenté sur la figure 21-6 contient une ALU à cycle unique de 8 bits et sa comparaison et génération associées d'indicateurs de condition. Les blocs de chemin de données des UDB voisins peuvent être chaînés ensemble pour augmenter la profondeur de bits. Datapath comprend une petite RAM de configuration dynamique qui peut sélectionner dynamiquement l'opération à effectuer dans un cycle spécifique.

Datapath est optimisé pour l'implémentation de fonctions embarquées typiques telles que les temporisateurs, compteurs, PWM, PRS, CRC, registres à décalage et générateurs de bande morte. L'ajout de fonctions d'addition et de soustraction prend en charge les opérations numériques delta-sigma.


Figure 21-6. Chemin de données de niveau supérieur.

21.3.2.1 Présentation


Les chapitres suivants donnent un aperçu des principales fonctionnalités de Datapath.

Configuration dynamique

Configuration dynamique - la possibilité de modifier le travail et les communications internes de Datapath à chaque cycle sous le contrôle d'un séquenceur. Ceci est implémenté à l'aide de la mémoire de configuration (RAM de configuration), qui stocke huit configurations uniques. L'adresse d'entrée de cette mémoire peut être transmise à partir de n'importe quel bloc connecté aux ressources de trace, généralement à partir de la logique PLD, des broches d'E / S ou d'autres chemins de données.

Alu

ALU peut effectuer huit fonctions générales: incrémenter, décrémenter, ajouter, soustraire et également effectuer des opérations logiques ET, OU, XOR et PASS. Le choix des fonctions est déterminé par la mémoire de configuration pour chaque cycle. Des opérations de décalage indépendantes (gauche, droite, permutation de quartet), ainsi que des opérations de masquage sont disponibles à la sortie ALU.

Constructions conditionnelles

Chaque chemin de données possède deux comparateurs masqués au niveau du bit qui peuvent être configurés pour sélectionner plusieurs entrées de registre de chemin de données comme arguments. D'autres conditions identifiables peuvent être des zéros, des uns et un débordement. Ces conditions constituent les principales sorties de Datapath et peuvent être transmises aux lignes de trace numériques ou aux entrées d'autres fonctions.

CRC / PRS intégré

Datapath prend en charge les calculs CRC à cycle unique et la génération de séquences pseudo-aléatoires (English Pseudo Random Sequence, PRS) avec une profondeur de bits donnée et un polynôme générateur. Pour atteindre une profondeur de bits supérieure à 8 bits, les signaux peuvent être chaînés entre Datapath. Cette fonctionnalité est contrôlée dynamiquement, ce qui signifie qu'elle peut alterner avec d'autres fonctions.

Nombre de bits élevé personnalisé

Le nombre du bit le plus significatif (bit le plus significatif anglais, MSB) de la fonction arithmétique et de la fonction de décalage peut être défini par programme. Cela prend en charge les fonctions CRC / PRS de longueur variable et, en conjonction avec la sortie de masquage ALU, permet l'implémentation de temporisations de longueurs arbitraires, de compteurs et de blocs de décalage.

Tampons d'entrée / sortie FIFO

Chaque Datapath possède deux tampons FIFO de 4 octets, chacun pouvant être configuré pour fonctionner comme un tampon d'entrée (CPU ou DMA écrit des données dans FIFO, Datapath lit FIFO), ou comme un tampon de sortie (Datapath écrit dans FIFO et CPU ou DMA en lit). Ces tampons FIFO génèrent un état qui peut être transmis pour interagir avec les séquenceurs, les interruptions ou les demandes DMA.

Enchaînement

Le chemin de données peut être configuré pour chaîner des conditions et des signaux dans une chaîne vers des chemins de données voisins. Le décalage, le transfert, la capture et d'autres signaux conditionnels peuvent être combinés en chaînes pour créer des fonctions arithmétiques de plus grande profondeur de bits, ainsi que des fonctions de décalage et des fonctions CRC / PRS.

Multiplexage temporel

Dans les applications de suréchantillonnage ou lorsque des vitesses d'horloge élevées ne sont pas nécessaires, une ALU dans Datapath peut être efficacement divisée entre deux ensembles de registres et de générateurs de conditions. Les sorties de l'ALU et du registre à décalage sont verrouillées et peuvent être utilisées comme entrée dans les cycles suivants. Des exemples d'utilisation incluent la prise en charge des fonctions 16 bits dans un seul chemin de données (8 bits) ou l'alternance des opérations de génération CRC avec des opérations de décalage de données.

Entrées de chemin de données

Datapath dispose de quatre types d'entrées: configuration, contrôle et entrées de données (série et parallèle). Les entrées de configuration sélectionnent l'adresse RAM de la configuration dynamique. Les entrées de commande chargent les registres de données du FIFO et téléchargent la sortie de la batterie dans le FIFO. Les entrées de données série incluent les entrées shift et carry. Le port d'entrée de données parallèle vous permet de recevoir jusqu'à 8 bits de données des ressources de trace.

Sorties de chemin de données

Au total, 16 signaux sont générés dans Datapath. Certains d'entre eux sont des signaux conditionnels (par exemple, des comparaisons), d'autres sont des signaux d'état (par exemple, le statut FIFO) et les autres sont des signaux de données (par exemple, la sortie du registre à décalage). Ces 16 signaux sont multiplexés en 6 sorties de chemin de données et acheminés vers la matrice de trace. Par défaut, les sorties sont synchronisées avec la fréquence d'horloge, ce qui crée un pipeline avec un retard de 1 cycle d'horloge. De plus, leurs (sorties) peuvent être commutées en mode asynchrone (combinatoire) (voir les notes du traducteur).

Note du traducteur

J'ai longtemps cherché à savoir quel était le timing des sorties Datapath. D'après mon expérience, tout est là de manière asynchrone. Il s'est avéré que ce n'est pas tellement l'état des sorties, mais cet éditeur qui définit les variables basées sur celles-ci.



Cela forcera l'éditeur à générer le code Verilog suivant:
/* ==================== Assignment of Registered Variables ==================== */ always @ (posedge clock) begin : register_assignments var1 <= (decr_finished); end 

Si vous passez en mode combinatoire



le code deviendra comme ceci:

 assign var1 = (decr_finished); 

Mais tout cela s'applique aux variables générées à partir des sorties Datapath. Et les sorties elles-mêmes sont toujours asynchrones. Et leurs noms (dans cet exemple decr_finished ) peuvent être utilisés sans entrer de variables supplémentaires.

Registres de travail Datapath

Chaque module Datapath possède six registres de travail 8 bits. La CPU ou le DMA a un accès en lecture et en écriture à tous les registres.

Tableau 21-1
TapezPrénomLa description
La batterieA0, A1Les batteries peuvent être soit une source soit un récepteur
pour ALU. Ils peuvent également être chargés à partir du registre de données.
ou FIFO. Les batteries contiennent généralement la valeur de fonction actuelle.
(par exemple, compteur, CRC ou décalage). Ces registres perdent leur
valeurs lors de l'entrée en mode veille et lors de la réinitialisation prendre
valeur 0x00.
Les donnéesD0, D1Les registres de données contiennent généralement des constantes de fonction,
par exemple, une valeur de comparaison PWM, une période de temporisation ou un polynôme CRC.
Ces registres conservent leurs valeurs en mode veille.
mode.
FIFOF0, F1Deux tampons FIFO de 4 octets fournissent comme source,
et un récepteur pour les données tamponnées. FIFO peut être
configurés comme tampons d'entrée et tampons de sortie, ou comme un
tampon d'entrée et un tampon de sortie. Les signaux d'état montrent
lire et écrire l'état de ces tampons. Vers des exemples d'utilisation
peut inclure des données TX et RX tamponnées dans SPI ou UART,
ainsi que les données PWM tamponnées et les données tamponnées
sur la période de la minuterie. Ces registres n'enregistrent pas leurs valeurs.
en mode veille et lors de la réinitialisation, ils prennent la valeur 0x00.

Dans le prochain article, nous allons commencer à traiter du FIFO.

Source: https://habr.com/ru/post/fr433018/


All Articles