
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éinitialisationPartie 8. Adressage UDB21.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 dynamiqueConfiguration 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.
AluALU 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 conditionnellesChaque 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 FIFOChaque 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înementLe 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 temporelDans 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éesDatapath 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éesAu 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 traducteurJ'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 DatapathChaque 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-1Dans le prochain article, nous allons commencer à traiter du FIFO.