FR 2753031 A1 19980306 FR 9710439 A 19970818 La présente invention se rapporte au traitement de données par des ordinateurs et, plus particulièrement, au traitement de données vidéo par des ordinateurs. Les ordinateurs ont été utilisés pour comprimer et décomprimer les données de systèmes. Les données de systèmes comprennent les données vidéo qui comprennent des images à l'arrêt et/ou des images mobiles. Les données de systèmes peuvent également comprendre des données audio, par exemple une piste sonore d'une image en mouvement. I1 est souhaitable de prévoir des méthodes et des circuits qui permettent un traitement rapide des données vidéo. La présente invention procure des méthodes et circuits qui permettent un traitement rapide des données vidéo. Dans certains modes de réalisation, un système d'ordinateur de la présente invention comprend trois processeurs capables de fonctionner concurremment : un processeur scalaire, un processeur vectoriel et un processeur du train de bits. Dans le codage ou le décodage des données vidéo, le processeur vectoriel effectue des opérations qui peuvent être efficacement accomplies par un processeur de données multiples à une; seule instruction (SIMD). De telles opérations comprennent : 1) une transformation de données linéaires comme une transformation cosinusoïdale discrète (DCT) et 2) une compensation du mouvement. Le processeur du train de bits accomplit des opérations qui comprennent des opérations sur des bits particuliers plutôt que sur des mots ou des demi-mots. De telles opérations comprennent un codage ou un décodage de Huffman et RLC utilisés, par exemple, avec les standards MPEG-1, MPEG-2, H.261 et H.263. Le processeur scalaire accomplit un traitement vidéo de haut niveau (par exemple, traitement du niveau de l'image), synchronise le fonctionnement des processeurs vectoriel et du train de bits et contrôle l'interface avec des dispositifs externes. Dans certains modes de réalisation, le système d'ordinateur peut traiter plusieurs courants de données concurremment. Par suite, l'utilisateur du système d'ordinateur peut avoir une conférence vidéo avec deux correspondants ou plus. Des trains de données multiples peuvent être traités concurremment parce que le processeur du train de bits peut commuter des contextes pour coder ou décoder différents trains de données concurremment en temps réel. Dans certains modes de réalisation, les processeurs scalaire et vectoriel sont programmables dans le sens que chacun des deux processeurs peut être programmé pour exécuter une seule instruction arithmétique ou booléenne. Le processeur du train de bits n'est pas programmable dans le sens que le processeur du train de bits ne peut être programmé pour exécuter une instruction arithmétique ou booléenne. Par ailleurs, le processeur du train de bits peut être programmé pour accomplir une opération de traitement total des données vidéo sur un groupe de données vidéo. En rendant incapable le processeur du train de bits d'être programmé pour exécuter une seule instruction arithmétique ou booléenne, cela permet au processeur du train de bits d'être plus rapide. La programmabilité des processeurs scalaire et vectoriel facilite l'adaptation du systeme à des changements des standards de codage et de décodage de données vidéo. L'invention sera mieux comprise et d'autres buts, caractéristiques, détails et avantages de celle-ci apparaîtront plus clairement au cours de la description explicative qui va suivre faite en référence aux dessins schématiques annexés donnés uniquement à titre d'exemple illustrant plusieurs modes de réalisation de l'invention et dans lesquels - la figure 1 donne un schéma bloc d'une carte de support selon la présente invention; - la figure 2 donne un schéma bloc d'un processeur multimédia selon la présente invention - la figure 3 donne un schéma bloc d'un processeur du train de bits qui fait partie du processeur de la figure 2 - les figures 4-6 sont des schémas blocs de systèmes d'ordinateurs selon la présente invention - la figure 7 illustre une architecture de microprogrammation dans le processeur de la figure 9 - les figures 8-9 montrent des topographies d'adresses pour le système de la figure 1 - la figure 10 donne un schéma bloc du noyau de DSP du processeur de la figure 2 - la figure 11 illustre un pipeline employé dans un processeur vectoriel qui fait partie du processeur de la figure 2 - la figure 12 est un schéma bloc fonctionnel du processeur vectoriel de la figure 11 ; - la figure 13 illustre des trajets de données d'exécution dans le processeur vectoriel de la figure 11; - la figure 14 illustre des trajets de données de charge et d'enregistrement dans le processeur vectoriel de la figure 11 ; - la figure 15 est un schéma bloc d'un système d'antémémoire du processeur de la figure 2 - la figure 16 illustre l'antémémoire des données d'instructions dans le système d'antémémoire de la figure 15 - la figure 17 illustre un pipeline du trajet de données dans une unité de contrôle d'antémémoire dans le processeur de la figure 2 - la figure 18 illustre des trajets de données pour un pipeline de traitement d'adresse dans une unité de contrôle d'antémémoire dans le système de la figure 2 - les figures 19-22 illustrent des machines d'état dans le processeur de la figure 2 - la figure 23 illustre des formats d'adresse utilisés dans le système d'antémémoire de la figure 15 - la figure 24 illustre un bus dans le processeur de la figure 2 - la figure 25 illustre une unité de contrôle d'arbitrage dans le processeur de la figure 2 - les figures 26-29 sont des diagrammes des temps pour le processeur de la figure 2 - les figures 30-32 montrent des signaux de demande de mémoire dans le processeur de la figure 2 - la figure 33 illustre une unité de contrôle d'arbitrage de bus dans le processeur de la figure 2 - les figures 34-36 sont des diagrammes des temps pour le processeur de la figure 2 - les figures 37-38 illustrent un ensemble de circuits d'interface de bus dans le processeur de la figure 2 - les figures 39-40 illustre une mémoire tampon de blocs virtuels (VFB) pour le système de la figure 1 - la figure 41 illustre un ensemble de circuits d'interface de bus pour le système de la figure 1 - les figures 42-43 illustrent un contrôleur de mémoire pour le système de la figure 1 - la figure 44 illustre un contrôleur d'adresse pour le système de la figure 1 - les figures 45 et 46 illustrent des formats utilisés dans le système de la figure 1 - la figure 47 illustre une machine d'état dans le système de la figure 1 - la figure 48 est un schéma bloc d'un contrôleur de données pour le système de la figure 1 - les figures 49-51 sont des diagrammes des temps pour le système de la figure 1 - les figures 52-53 illustrent un ensemble de circuits d'interface de dispositifs dans le processeur de la figure 2 - les figures 54-56 sont des schémas blocs de portions du système de la figure 1 - les figures 57-59 illustrent des registres dans le système de la figure 1 - la figure 60 illustre des tampons de blocs et des fenêtres vidéo dans le système de la figure 1 - la figure 61 est un diagramme des temps pour le système de la figure 1 - la figure 62 illustre un registre dans le système de la figure 1 - la figure 63 est un diagramme des temps pour le systeme de la figure 1 ; et - les figures 64-66 illustrent des tampons utilisés dans le système de la figure 1. La figure 1 montre une carte de support 100 comprenant un processeur multimédia 110. Dans certains modes de réalisation, le processeur 110 est un processeur du type MSP-lEX (marque déposée) dont la description est produite par Samsung Semiconductor Corporation de San Jose, Californie. Le processeur MSP-lEX est décrit dans l'Appendice A ci-dessous. Le processeur 110 communique avec un système d'ordinateur hôte (non représenté) via un bus local 105. Dans certains modes de réalisation, le bus 105 est un bus PCI de 32 bits, 33 MHz. Une sortie de données vidéo numériques du processeur 110 est connectée au convertisseur numérique/analogique 112. En plus de la portion vidéo, les données vidéo numériques peuvent inclure une portion audio, par exemple une piste sonore d'un film. La sortie du convertisseur 112 est appropriée pour une connexion à un téléviseur (non représenté) ou un autre système qui traite des données analogiques. Dans certains modes de réalisation, le processeur 110 comporte également un port d'accès d'entrée pour recevoir les données vidéo numériques d'un convertisseur analogique/numérique (voir figures 4-6). Le processeur 110 est connecté au Codec 114. Le Codec 114 reçoit les données audio analogiques d'un enregistreur sur bande (non représenté) ou un autre dispositif. Le Codec 114 reçoit des données téléphoniques analogiques de lignes téléphoniques (non représentées). Le Codec 114 met les données analogiques sous forme numérique et les transmet au processeur 110. Le Codec 114 reçoit les données numériques du processeur 110, convertit ces données en une forme analogique et transmet les données analogiques selon la nécessité. Le processeur 110 est connecté à une mémoire 120 par un bus 122. Sur la figure 1, la mémoire 120 est une mémoire SDRAM (mémoire à accès aléatoire numérique synchrone) et le bus 122 est un bus à 64 bits, 80 MHz. D'autres mémoires, largeurs de bus, et vitesses de bus sont utilisées dans d'autres modes de réalisation. Des mémoires et bus asynchrones sont utilisés dans certains modes de réalisation. Certains modes de réalisation de la carte 100 sont décrits dans la demande de brevet US "Multiprocessor Operation in a Multimedia Signal Processor"(dossier numéro M-4354 US) déposée par Le Nguyen le même jour que la présente demande et incorporée ici par référence. La figure 2 donne un schéma bloc d'un mode de réalisation du processeur 110. Le processeur 110 comprend un processeur scalaire 210, un coprocesseur vectoriel ("VP") 220, et un processeur du train de bits ("BP") 245. Dans certains modes de réalisation, le processeur 210 est un processeur RISC à 32 bits qui fonctionne à 40 MHz et se conforme au groupe d'instructions standards de ARM7 connu. Le processeur vectoriel 220 est un processeur de données multiples à une seule instruction (SIMD) fonctionnant à 80 MHz et ayant des registres vectoriels de 288 bits. Un mode de réalisation du VP 220 est décrit dans la demande de brevet US "Efficient Context Saving and Restoring in a Multitasking Computing System Environment" (dossier numéro M-4365 US) déposée par Song et al. à la même date que la présente demande et incorporée ici par référence. Les processeurs 210 et 220 peuvent être programmés pour exécuter une seule instruction arithmétique ou booléenne ou bien une séquence de telles instructions. Dans certains modes de réalisation, afin d'obtenir une haute vitesse de traitement des données vidéo, le processeur 245 du train de bits est rendu incapable d'être programmé pour exécuter une seule instruction arithmétique ou booléenne. En particulier, BP 245 ne peut être programmé pour exécuter une seule instruction telle que ADDITION, OU, "ADDITION ET ACCUMULATION" et ainsi de suite. Par ailleurs, BP 245 peut recevoir l'instruction d'accomplir l'opération de traitement de données vidéo comme décrit dans l'Appendice A, Chapitre 10. En même temps, le processeur scalaire 210 et le processeur vectoriel 220 peuvent être programmés pour exécuter une seule instruction arithmétique ou booléenne. Par conséquent, le processeur 110 peut être adapté à des changements des standards vidéo. Comme le montre la figure 2, le processeur scalaire 210 et le processeur vectoriel 220 sont connectés au sous-système d'antémémoire 230. Le sous-système d'antémémoire 230 est connecté au bus 240 ("IOBUS") et au bus 250 (1,FBUS"). Dans certains modes de réalisation, IOBUS 240 est un bus à 32 bits, 40 MHz et FBUS 250 est un bus à 64 bits, 80 MHz. IOBUS 240 est connecté au processeur du train de bits 245, au contrôleur d'interruption 248, à l'unité UART en duplex intégral 243 et aux quatre temporisateurs 242. FBUS 250 est connecté au contrôleur de mémoire 258 qui à son tour est connecté au bus de mémoire 122 (figure 1). FBUS 250 est connecté au circuit d'interface 255 du bus PCI qui est connecté au bus PCI 105. FBUS 250 est également connecté au circuit d'interface de dispositifs 252 (appelé également "ASIC Client") qui comporte un ensemble de circuits pour une interface avec le convertisseur numérique/analogique vidéo 112 (figure 1), le Codec 114 et peut être un convertisseur analogique/numérique vidéo (tel que montré aux figures 46). Le processeur 110 comporte également un appareil de transfert de données de mémoire 290. Le processeur 110 peut traiter plusieurs trains de données en une fois. Par exemple, si un utilisateur du processeur 110 est en conférence vidéo avec deux correspondants ou plus, le processeur 110 produit un traitement vidéo et audio qui permet à l'utilisateur de voir et d'entendre les multiples correspondants. Pour traiter des trains de données vidéo multiples, le processeur 110 supporte un changement de contexte. Cela signifie que BP 245 change entre des trains de données multiples. Dans une conférence vidéo, chaque train de données peut provenir d'un correspondant éloigné séparé. Alternativement, des trains additionnels de données peuvent provenir de canaux de film pour permettre à l'utilisateur de participer à la conférence vidéo et de regarder une ou plusieurs présentations de films en même temps. Un changement de contexte est décrit à l'Appendice A, Section 10.12. Quand les contextes doivent être changés, le processeur scalaire 210 sauvegarde les contextes courants et initialise BP 245 pour traiter un contexte différent. BP 245 peut traiter les formats de données vidéo qui suivent 1. MPEG-1 décrit dans la norme ISO/IEC 11172 (1992); 2. MPEG-2 décrit dans le document ISO/IEC JTC 1/SC 29 N 0981 Révision (31 mars 1995) 3. H.261 décrit dans "ITU-T Recommendation H.261" (mars 1993) ; et 4. H.263 décrit dans "Draft ITU-T Recommendation H.263" (2 mai 1996). Le traitement des données vidéo est divisé entre le processeur scalaire 210, le processeur vectoriel 220 et le processeur du train de bits 245 afin d'obtenir une vitesse élevée de traitement. plus particulièrement, le processeur vectoriel 220 accomplit des transformations linéaires (comme DCT-transformation cosinusoïdale discrète - ou son inverse IDCT) et accomplit une compensation du mouvement. Ces opérations sont appropriées pour un processeur vectoriel parce que ces opérations nécessitent fréquemment d'accomplir la même instruction sur des pièces multiples de données. Le processeur de train de bits 245 accomplit un décodage et un codage de HUFFMAN et un traitement de train de bits en zigzag. Le processeur scalaire 210 accomplit des tâches de démultiplexage et de synchronisation vidéo et audio, et de mise en interface E/O (entrée/sortie). Des exemples des opérations de codage et de décodage sont donnés à l'Appendice A, Sections 10.6.1 et 10.6.2. Dans une opération de codage, les données numériques non comprimées arrivent de la mémoire 120 ou du système hôte (non représenté) par le bus 105. Dans certains modes de réalisation, le circuit d'interface 252 des dispositifs comprend un convertisseur analogique/numérique vidéo et les données non compriées arrivent du convetisseur. Le processeur vectoriel 220 accomplit une quantification, DCT et une compensation du mouvement. Le processeur du train de bits 245 reçoit la sortie de VP 220 et produit des GOB (GROUPES DE BLOCS) ou tranches. En particulier, BP 245 accomplit un codage de HUFFMAN et RLC et un traitement du train de bits en zigzag. Le processeur scalaire 210 reçoit la sortie de BP 245 et accomplit un codage en couches de l'image, un codage GOP (groupe d'images) et un codage en couches de séquences. Le processeur scalaire 210 multiplexe alors les données audio et vidéo et transfère les données codées à un dispositif d'enregistrement (via le bus 105 ou 122) ou un réseau. Le transfert à un réseau implique le transfert au circuit d'interface de dispositifs 252 qui est connecté à un réseau dans certains modes de réalisation. Dans le décodage, le procédé est inversé. Le processeur scalaire 210 démultiplexe les données du système en composantes audio et vidéo et accomplit un décodage en couches de séquences, GOP, et de l'image des données vidéo. Les GOB résultants ou tranches sont appliqués au processeur 245 de train de bits. Le processeur 245 accomplit un traitement en zigzag et un décodage de HUFFMAN et RLC. VP 220 reçoit la sortie de BP 245 et accomplit une quantification, IDCT et une compensation du mouvement. VP 220 accomplit tout posttraitement qui peut être nécessaire (par exemple, pour lisser les bords des images) et produit des images numériques reconstruites pour le circuit d'interface de dispositifs 252 ou un dispositif d'enregistrement. Le processeur scalaire 210, le processeur vectoriel 220 et le processeur de train de bits 245 peuvent fonctionner sur différents blocs de données en parallèle. Le fait que le processeur scalaire 210 traite la couche d'image et les couches supérieures réduit une communication entre processeurs. Cela est du au fait que la couche d'image et les couches supérieures contiennent une information qui est utilisée par le processeur scalaire 210 pour le contrôle et les fonctions E/S mais qui n'est pas utilisé par le processeur vectoriel 220 ou le processeur 245 de train de bits. Un exemple d'une telle information est une fréquence d'image utilisée par le processeur scalaire 210 pour transmettre les images au circuit d'interface de dispositifs 252. La figure 3 est un schéma bloc d'un mode de réalisation du processeur 245 du train de bits. Les signaux montrés à la figure 3 sont décrits à l'Appendice A, Section 10.5. Ces signaux permettent une interface entre le processeur de train de bits 245 et IOBUS 240 (figure 2). Dans BP 245, ces signaux sont traités par l'Unité d'Interface de IOBUS 310 qui comprend SRAM 320. BP 345 comporte également l'unité FIFO (ler entré, premier sorti) de VLC 330, la mémoire morte ou rombe LUT 340 VLC, la machine d'état de contrôle 250 et l'unité de noyau de BP 360 qui comporte un fichier de registres et une SRAM. Les blocs de la figure 3 sont décrits à l'Appendice A, Section 10.4. La ROM 340 contient des tables de consultation utilisées pour le codage et le décodage de HUFFMAN pour les 4 standards : MPEG 1, MPEG2 H.261 et H.263. Malgré la grande quantité d'informations stockées dans les tables, la ROM 340 est de petite dimension de 768 x 12 bits. La petite dimension est obtenue en partageant les tables et par d'autres techniques décrites à l'Appendice B, Section 4. L'invention n'est pas limitée par les modes de réalisation décrits ci-dessus et les appendices cidessous. En particulier, l'invention n'est pas limitée par un ensemble de circuits, des fréquences d'horloge ou des temporisations de ces modes de réalisation. APPENDICE A DESCRIPTION SYSTEME MSP-1 EX CHAPITRE 1 -- VUE GENERALE TECHNIQUE Ce chapitre décrit une vue générale technique du Processeur de Signaux Multimédia ("MSP-x") vu par les concepteurs de matériel et de logiciel. 1.1 FONCTIONNALITE Les Processeurs de Signaux Multimédia (MSP-x) forment une famille de dispositifs VLSI monopuce conçus pour produire une large gamme de fonctionnalité intégrée pour des ordinateurs personnels et des applications de produuits de consommation. La famille MSP est basée sur une architecture puissante du Processeur Vectoriel employant un modèle de calcul à Données Multiples à Simple Instruction (SIMD) pour de meilleurs prix/performance. Ses caractéristiques comprennent Pleine programmabilité Basé sur l'Architecture du Groupe d'Instructions de ARM Noyau CPU RISC ARM 7 40 MHz Intégré Processeur Vectoriel 80 MHz pour traitement de signaux numériques haute performance 2,56 Gop pour opérations ALU sur entiers 9 bits 2,56 Gop pour opérations Accumululation Multiplication sur entiers 16 bits 640 Mflop pour addition point flottant IEEE 32 bits 1280 Mflop pour multiplication et addition point flottant IEEE 32 bits 10 k.portes non utilisées pour personnalisation ou fonctionnalité graphique facultatives A base de technologie CMOS 0,65 pm 3,3 v/5v Module 128 broches à 256 broches MSP supportera initialement 4 fonctionnalités majeures Vidéo Audio/son Télécommunications Graphique 2D/3D (factulatif) 1.1.1 Vidéo Toute fonctionnalité est programmable en micro programmation Décodage et codage MPEG-1 en temps réel Décodage MPEG-2 en temps réel Codage MPEG-2 presqu'en temps réel Décodage et codage H.324 en temps réel Cadrage de l'image pour toute grandeur de l'écran ou résolution Conversion espace couleur entre RGB et YUV Filtration de l'image pour enrichissement du modèle et réduction du bruit Conversion appel 4/3 1.1.2 Audio/Son Toute fonctionnalité est programmable en micro programmation Décodage et codage audio MPEG-I en temps réel Décodage et codage audio MPEG-2 en temps réel Décodage et codage audio H.320 et H.324 en temps réel Codage parole G.728 et le G.723 en temps réel Emulation programmateur son en temps réel Synthèse table d'ondes Synthèse FM 1. 1.3 Télécommunications 1.1.3.1 Modem Interface port COM asynchrone standard (compatible NS 16550A UART) V.34 de 28,8 K A 2,4 k pb CCITT-V 32 bits avec fréquences des données de 4800, 9600 sans codage et 9600 pb en codage Trellis Compatiblité ensemble commande AT de Hayes Moniteur progression appel Appel automatique V.25bis DTMF et appel pulsé Protocole récupération erreur asynchrone Correction erreur V.42 1.1.3.2 Fac similé e V.29 à 9600 pb ou 7200 pb V.27ter à 4800 pb ou 2400 pb Moniteur progression appel Appel automatique DTMF et appel pulsé Transferts G3 Opérations T.4/T.30 1.1.3.3 Réponse par téléphone Enregistrement des salutations via l'appareil téléphonique ou le microphone e Réponse automatique au téléphone et réponse avec message pré-enregistré Enregistrement d'un message d'une personne qui appelle Restitution des messages laissés par une personne ayant appelé 1.1.4 Graphique2D/3D (facultatif) BITBLT Dessin et ombrage lignes et polygones 2D Calcul géométrie et éclairage pour point, lignes et triangles 3D Calcul couleur 3D avec topographie texture Mélange 1.2 Architecture du matériel 1.1.2 Vue générale La famille des Coprocesseurs Multimédia MSP-1 est conçue pour répondre à diverses conditions comprenant le niveau d'intégration, le prix et la performance. Un schéma bloc d'un système comprenant un processeur MSP-1 apparaît à la figure 4. La famile de MSP-1 comporte les options suivantes MSP-1 est conçu pour être utilisé en tant que niveau d'entrée sans SDRAM externe MSP-lEX comporte un bus de mémoire à 32 bits pour une mise en interface avec SDRAM externe MSP-lF comporte un bus de mémoire à 64 bits pour une mise en interface avec SDRAM externe MPS-lG comporte un contrôleur SVGA intégré, RAMDAC plus accélération graphique 3D assez rapide. La figure 5 montre un schéma bloc d'un système comprenant un processeur MSP-1E 1.2.2 CODEC externes La figure 6 montre un schéma bloc d'un système comprenant un processeur MSP-1 avec codec externes 1.2.2.1 Nomenclature MSP-lEX Une nomenclature suggérée pour MSP-lEX est donnée ci-dessous MSP-lEX DRAM synchrone 512 K x 32 bits Codeur NTSC/PAL (KS0119 DE SAMSUNG) Codec Audio et Télécommunications (AD1843 de ANALOG DEVICES) Divers (condensateurs, résistances, amplificateurs, connecteurs etc..) Planche de Circuit Imprimé 1.3 MICRO ARCHITECTURE 1.3.1 Vue générale La micro-architecture de MSP se compose à la base d'un NOYAU très puissant de DSP et d'une Mémoire spécifique du client et de sous-systèmes E/S. Voir figure 2. Le NOYAU de DSP comporte Une CPU RISC de ARM7 de 32 bits fonctionnant à 40 MHz et qui est utilisée pour un traitement général et Un Processeur Vectoriel fonctionnant à 80 MHz et qui est utilisé pour le traitement des signaux Un sous-Système Antémémoire partagé fonctionnant à 80 MHz et qui contient une antémémoire d'instructions de 2 KB, une antémémoire de données de 5 KB et une antémémoire de ROM de 16 KB. L'antémémoire de données peut être contrôlée par le matériel ou le logiciel. Un bus 64-bit rapide (FBUS) fonctionnant à 80 MHz et qui est en interface avec un certain nombre de périphériques de FBUS interne. Un bus plus lent de 32-bit (IOBUS) fonctionnant à 40 MHz et en interface avec un certain nombre de périphériques de IOBUS. Les périphériques de FBUS interne comprennent Une interface bus PCI 32-bit 33 MHz Un contrôleur de mémoire SDRAM 64-bit Un contrôleur de DMA 8 canaux Un bloc logique ASIC Client. Le bloc logique ASIC Client produit un total de 10 k-portes qui comporte à la fois les interfaces vers divers CODEC analogiques et dispositifs E/S spécifiques du client. la logique d'interface supporte le Codeur NTSC KS1019 de SAMSUNG et les CODEC AD183 de ANALOG DEVICES. Un Appareil de Transfert de Données de Mémoire qui est utilisé pour les données DMA de la mémoire hôte (Pentlure) à la mémoire SDRAM locale de MSP Les périphériques de 1'IOBUS interne comprennent Un Processeur du Train de Bits responsable du traitement du train de bits vidéo Une Ligne en Série UART 16450 Un temporisateur compatible 8254 e Un Contrôleur d'Interruption compatible 8259 MSP comporte également un registre spécial (Registre Contrôle MSP) qui est utilisé pour l'initialisation et les interruptions contrôlées par le logiciel. 1.4 DESCRIPTION DES BROCHES DE MSP-lEX 1.4.1 Total : 256 broches 1.4.2 Interface Bus PCI (53 broches) CLK Broche d'Entrée d'Horloge RSTL Broche Entrée Remise à l'Etat Initial, Bas actif. AD[31:0] Broche Bus Adresses et Données C~BEOL Broche Validation Contrôle et Octet 0, Bas actif. C BEL Broche Validation Contrôle et Octet 1, Bas actif. C~BE2L Broche Validation Contrôle et Octet 2, Bas actif. C~BE3L Broche Validation Contrôle et Octet 3, Bas actif. PAR Broche Parité FRAMEL Broche Bloc Cycle, Bas actif. IRDYL Broche Initiateur Prêt, Bas actif. TRDYL Broche Cible Prête, Bas actif. STOPL Broche Arrêt Transaction, Bas actif. LOCKL Broche Blocage Transaction, Bas actif. IDSEL Broche Entrée Sélection Initialisation Dispositif DEVSEL Broche Sélection Dispositif, Bas actif. REQL Broche Demande Bus, Bas actif. GNTL Broche Accord Bus, Bas actif. PERRL Broche Erreur Parité, Bas actif. SERRL Broche Erreur Système, Bas actif. INTAL Broche Interruption A, Bas actif. 1.4.3 Divers (6 broches) TCK Broche Entrée Horloge Test JTAG TD1 Broche Entrée Données Test JTAG TD0 Broche Sortie Données Test JTAG TMS Broche Entrée Sélection Mode Test JTAG TRSTL Broche Entrée Remise Etat Initial Test JTAG CLK Entrée Horloge. C'est la broche d'entrée d'horloge à 40 MHz 1.4.4 Interface NTSC K0119/Codeur PAL (24 broches) SFRS Sortie synchronisation bloc vers KS0119 pour interface hôte 3 fils SCLK Sortie horloge en série vers KS0119 SDAT Données série E/S BGHS Signal Synchronisation Horizontale, entrée vers MSP BGVS Signal Synchronisation Verticale, entrée vers MSP MSSEL Sélection Pilote PD[15:0] Sortie Données Elément d'Image vers KS0119 BGCLK Sortie Horloge Elément d'Image vers KS0119 PROMCSL Sélection Puce PROM BIOS 1.4.5 InterfaceCODEC audio et télécommunications AD1843 (6 broches) A43SCLK Horloge en série, entrée/sortie. SCLK est un signal bidirectionnel qui fournit l'horloge comme sortie au bus en série quand la broche du Bus Maître (BM) est entrainée vers le haut et accepte l'horloge comme entrée quand la broche de BM est entrainée vers le bas. A43SDFS Synchronisation Trame Données Série, entrée/sortie. SDFS est un signal bidirectionnel qui fournit le signal de synchronisation de trame comme sortie vers le bus série quand la borne du Bus Maître (BM) est entrainée vers le haut et accepte le signal de synchronisation de trame comme entrée quand la broche de BM est entrainée vers le bas. A43SDI Entrée Données Série vers AD1843, sortie de MSP. Tous les transferts de contrôle et de réstitution ont 16-bit de lont, MSB d'abord. A43SDO Sortie Données Série de AD1843, entrée vers MSP. Tout les transferts de lecture et de restitution des registres d'état et de contrôle ont 16-bit de long, MSB premier 1.4.6 InterfaseBus Mémoire (87 broches) RAS1L Broche de sortie (Bas actif). Ce sont des Echantillons d'Adresse de Rangée pour verrouiller les adresses de rangée MA [11:0] dans le tampon d'adresses de rangée interne de la rangée de SDRAM sélectionnée. CAS 1L Broche de sortie (Bas actif). Ce sont des échantillons d'adresse de colonne pour verrouiller les adresses de colonne de MA [11:0] dans le tampon d'adresse de colonne interne de la rangée de SDRAM sélectionnée. MWEL Broche de sortie (Bas actif) c'est une Validation d'Ecriture vers la SDRAM MAI[11:0] Broche de sortie. Signaux multiplexés d'adresse de rangée et de colonne vers SDRAM MD [63:0] Broche de données de SDRAM d'entrée/sortie. MA23 Broche de sortie. Bit Adresse Mémoire MDA24 Broche de sortie. Bit d'Adresse de Mémoire DQM Broche de sortie. Donne à la sortie de données de SDRAM une haute impédance après l'horloge et masque la sortie (cette broche est utilisée pour interface DRAM synchrone uniquement) MCKE Broche de sortie. Masque l'horloge du système de la SDRAM pour geler l'opération à partir du cycle d'horloge suivant. MCSOL Broche de sortie (Bas actif). Sélection Puce SDRAM pour 32-bits Bas MCS1L Broche de sortie (Bas actif). Sélection Puce SDRAM 32-bit hauts MR.DYH Broche de sortie. Signal SDRAM prête. MEMCLK Broche de sortie c'est la broche de sortie d'horloge vers la SDRAM 1.4.7 Alimentations en courant VDD Broches Puissance 3,3 volts VCC Broches Puissance 5 volts VSS Broches masse Tableau 1 Assignation Broches MSP-1 EX Plot Broche Type Nom Description Puce N Module N 1 202 EN VDD Alimentation en Courant 3,3 V 2 1 E/S AD31 Adresse et Données pour bus PCI 3 2 E/S AD30 4 3 E/S AD29 5 4 E/S AD28 6 ~ 5 E/S AD27 7 205 EN GND Terre 8 6 EN VCC Alimentation en courant S V 9 7 E/S AD26 Adresse et Données pour bus PCI 10 S E/S AD25~S09 Adresse et Données pour bus PCI/test Série sortie 11 9 E/S AD24~SO8 Adresse et données pour bus PCI/test Série sortie 12 10 E/S C BE3L Validation contrôl/octet pour PCI 13 208 EN VDD Alimentation en Courant 3,3 V 14 11 EN IDSEL Initialisation Sélection pour PCI 15 12 ; E/S AD23 SP7 Adresse et Données pour bus PCI/Test Série sortie 16 13 E/S AD22 506 17 14 E/S AD21 SO5 18 15 E/S AD20 S04 19 209 EN GND Terre 20 16 EN VCC Alimentation en Courant S V 21 17 E/S AD19~SO3 Adresse et Données pour bus PCI/Test Série sortie 22 18 E/S AD18~SO2 23 19 E/S AD17~SO1 24 210 EN VDD Alimentation en Courant 3,3 V 25 20 E/S AD16~SO0 Adresse et données pour bus PCI/Test Serie sortie Plot Broche Type Nom Description Puce N Module N 26 21 E/S C BE2t Validation Contrôle/Octet pour PCI 27 22 E/S FRAMEL Début du cycle du bus PCI 28 23 E/S IRDYL Initiateur prêt sur PCI (Pilote) 29 211 EN GND Terre 30 24 E/S TRDYL Cible prête sur PCI (Esclave) 31 25 EN VCC Alimentation en Courant 32 26 E/S DVSELL Sélection Dispositif sur PCI 33 27 E/S STOPL Arrêt Transaction Courante sur PCI 34 28 E/S LOCKL Bloquage Transaction Courante sur PCI 35 214 EN VDD Alimentation en Courant 3,3 V 36 29 E/S PERRL Erreur Parité sur PCI 37 30 E/S SERRL Erreur Système sur PCI 38 31 EN TCA Horloge Test A 39 32 E/S PAR Parité sur PCI 40 215 EN GND Terre 41 33 E/S C BEIL Validation Contrôle/Octet pour PCI 42 34 E/S AD15 S19 Adresse et Données pour bus PCI/Test Série entrée 43 35 EN VCC Alimentation en Courant 5 V 44 36 E/S AD14 S18 Adresse et Données pour bus PCI/Test de Série Entrée PCI 45 37 E/S AD13 S17 46 38 E/S AD12@S16 47 218 EN VDD Alimentation en Courant 3.3 V 48 39 E/S AD11~S15 Adresse et données pour bus PCI/test serie entrée 49 40 E/S AD10 S14 50 41 E/S AD09 S13 51 42 E/S AD08 S12 52 221 EN GND Terre 53 43 E/S C BEOL Validation Contrle/Octet pour PCI Plot Broche Type Nom Description Puce N Module N 54 44 EN TCB Horloge Test B 55 45 EN VCC Alimentation en Courant 5 V 56 46 EN TM Mode de Test 57 47 E/S AD07~511 Adresse et données pour bus PCI/Test Série entrée 58 48 E/S AD06 S10 Adresse et données pour bus PCI/Test Série Entrée 59 222 EN VDD Alimentation Courant 3,3 V 60 49 E/S AD05~MT5 Adresse et données pour bus PCI/Données Test Mem 61 50 E/s AD04~MT4 Adresse et données pour bus PCI/données Test Mem 62 226 EN VDD Alimentation en Courant 3,3 V 63 227 EN GND Terre 64 51 EN VCC Alimentation en Courant 5 v 65 52 E/S AD03~MT3 Adresse et données pour bus PCI/Données Test Mem 66 53 E/S AD02 MT2 Adresse et données pour bus PCI/Données Test Mem 67 227 EN GND Terre 68 54 E/S AD01~MT1 Adresse et données pour bus PCI/Données Test Mem 69 55 E/S AD00~MT0 Adresse et données pour bus PCI/Données Test Mem 70 228 EN VDD Alimentation en Courant 3,3 V 71 229 EN GND Terre 72 56 SOR HA11 Bus Adresse SDRAM 73 57 SOR MA10 74 58 SOR MA9 75 59 SOR MA8 76 60 SOR MA7 Plot Broche Type Nom Description Puce N0 Module N0 77 230 EN VDD Alimentation en Courant 3,3 V 78 231 EN GND Terre 79 61 SOR MA6 bus Adresse SDRAM 80 62 SOR MA5 81 63 SOR MA4 82 64 SOR MA3 83 232 EN VDD Alimentation en Courant 3,3 V 84 233 EN GND Terre 85 65 SOR MA2 Bus Adresse SDRAM 86 66 SOR MA1 87 67 SOR MAO 88 68 SOR RASIL Echantillon Adresse Rangée SDRAM 1 89 234 EN VDD Alimentation en Courant 3,3 V 90 235 EN GND Terre 91 69 SOR CASIL Echantillon Colonne SDRAM 1 92 70 SOR MEMCLK Horloge SDRAM (80 MHz) 93 71 SOR MWEL Validation Ecriture SDRAM 94 72 SOR DQM DQM SDRAM 95 73 SOR MCSOL Sélection Puce SDRAM (Mot Bas) 96 74 SOR MCSIL Sélection Puce SDRAM (Mot Haut) 97 236 EN VDD Alimentation en Courant 3,3 V 98 237 EN GND Terre 99 75 SOR MCKE Validation Horloge SDRAM 100 76 EN MRDYH SDRAM Prête 101 238 EN VDD Alimentation en Courant 3,3 V 102 239 EN GND Terre 103 77 E/S MDC Bus Données SDRAM 104 78 E/S Mol Bus Données SDRAM 105 ~ 79 E/S MD2 106 80 E/S LD3 107 240 EN VDD 108 241 EN GND Terre Plot Broche Type Nom Description Puce N Module N 109 81 E/S MD4 Bus Données SDRAM 110 82 E/S MD5 111 83 E/S MD6 112 84 E/S MD7 113 242 EN VDD Alimentation en Courant 3,3 V 114 243 EN GND Terre 115 85 E/S MD8 116 86 E/S MD9 117 87 E/S MD10 Bus Données SDRAM 118 88 E/S MD11 119 244 EN VDD Alimentation en Courant 3,3 V 120 245 EN GND Terre 121 89 E/S MD12 122 90 E/S MD13 Bus Données SDRAM 123 91 E/S MD14 124 92 E/S MD15 125 246 EN VDD Alimentation en courant 3,3 V 126 247 EN GND Terre 127 93 E/S MD16 128 94 E/S MD17 Bus Données SDRAM 129 95 E/S MD18 130 96 E/S MD19 131 248 EN VDD Alimentation en Courant 3,3 V 132 249 EN GND Terre 133 97 E/S MD20 Bus Données SDRAM 134 98 E/S MD21 135 99 E/S MD22 136 100 E/S MD23 137 250 EN VDD Alimentation en Courant 3,3 V 138 251 EN GND Terre 139 101 E/S MD24 140 102 E/S MD25 Bus Données SDRAM Plot Broche Type Nom Description Puce N Module N 141 103 E/S MD26 Bus Données SDRAM 142 104 E/S MD27 143 254 EN VDD Alimentation en Courant 3,3 V 144 255 EN GND Terre 145 105 E/S MD28 146 106 E/S MD29 Bus Données SDRAM 147 107 E/S ND30 148 108 E/S MD31 149 256 EN VDD Alimentation en Courant 3,3 V 150 257 EN GND Terre 151 109 E/S MD32 152 110 E/S ND33 Bus Données SDRAM 153 111 E/S MD34 154 112 E/S MD35 155 258 EN VDD Alimentation en Courant 3,3 V 156 259 EN GND Terre 157 113 E/S MD36 158 114 E/S MD37 Bus Données SDRAN 159 115 E/S MD38 160 116 E/S MD39 161 260 EN VDD Alimentation en Courant 3,3 V 162 261 EN GND Terre 163 117 E/S MD40 164 118 E/S MD41 Bus Données SDRAM 165 119 E/S MD42 166 120 EN MSPCK Horloge Système MSP 167 262 EN VDD Alimentation en Courant 3,3 V 168 263 EN GND Terre 169 121 E/S MD43 170 122 E/S MD44 Bus Données SDRAM 171 123 E/S MD45 172 124 E/S MD46 Plot Broche Type Nom Description Puce N Module N 173 264 EN VDD Alimentation en Courant 3,3 V 174 265 EN GND Terre 175 125 E/S MD47 176 126 E/S MD48 Bus Données SDRAM 177 127 E/S MD49 178 128 E/S MD50 179 266 EN VDD Alimentation en Courant 3,3 V 180 267 EN GND Terre 181 129 E/S MD51 182 130 E/S MD52 Bus Données SDRAM 183 131 E/S MD53 184 132 E/S MD54 185 269 EN GND Terre 186 133 E/S MD55 187 134 E/S MD56 Bus Données SDRAM 188 135 E/S MD57 189 136 E/S MD58 190 270 EN VDD Alimentation en Courant 3,3 V 191 271 EN GND Terre 192 137 OUT MD59 193 138 E/S MD60 Bus Données SDRAM 194 139 E/S MD61 195 140 E/S MD62 196 141 E/S MD63 197 273 EN GND Terre 198 142 SOR MA23 Bit Adresse Mémoire 199 143 SOR MA24 Bit Adresse Mémoire 200 144 SOR RESETO Remise à l'Etat Initial du Système vers l'autre Puce 201 145 SOR TCSOL Sélection Puce 0 202 146 SOR TCSIL Sélection Puce 1 Plot Broche Type Nom Description Puce N Module N 203 147 SOR PD15 PA15 204 148 SOR PD14 PA14 Sortie Données Eléments Image KS119 205 149 SOR PD13 PA13 Adresse PROM Bus BIOS 206 150 SOR PD12 PA12 207 276 EN VDD Alimentation en Courant 3,3 V 208 277 EN GND Terre 209 151 SOR PD11 PA11 210 152 SOR PD10 PA10 Sortie Données Elêments Image KS119 211 153 SOR PD9 PA9 Adresse PROM Bus BIOS 212 154 SOR PD8 PA8 213 278 EN VDD Alimentation en Courant 3,3 V 214 279 EN GND Terre 215 155 SOR PD7 PA7 216 156 SOR PD6 PA6 Sortie Données Elêments Image KS119 217 157 SOR PD5 PAS Adresse PROM Bus BIOS 218 158 SOR PD4 PA4 219 281 EN GND Terre 220 159 SOR PD3 PA3 221 160 SOR PD2 PA2 Sortie Données Elêments Image KS119 222 161 SOR PD1 PA1 Adresse PROM Bus BIOS 223 162 SOR PDO PAO 224 282 EN VDD Alimentation en Courant 3,3 V 225 163 EN VCC Alimentation en Courant 5 V 226 164 EN C7 227 165 EN C6 Données EPROM BIOS 228 166 EN C5 229 167 EN C4 230 283 EN GND Terre 231 168 EN C3 232 169 EN C2 Données EPROM BIOS 233 170 EN C1 234 171 EN CO Plot Broche Type Nom Description Puce N Module N 235 286 EN VDD Alimentation en Courant 3,3 V 236 172 SOR PROMCSL Sélection Puce PROM BIOS 237 173 EN BGVS Synchronisation Verticale KS119 238 174 EN BGHS Synchronisation Horizontale KS119 239 175 SOR MSSEL Sélection Maître KS119 240 176 EN BGCLK Entrée Horloge Elément Image 241 177 Réservé 242 178 EN VCC Alimentation en Courant 5 V 243 289 EN GND Terre 244 179 SOR SCLK Horloge Série KS119 245 180 E/S SDAT Données Série KS119 246 181 SOR SFRS Synchronisation Image KS119 247 182 Réservé 248 183 EN SERIAL EN Entrée Série 249 184 SOR SERIAL 0 Sortie Série 250 185 EN A43SDFS Synchronisation Image CODEC 1843 251 292 EN VDD Alimentation en Courant 3.3 V 252 293 EN GND Terre 253 186 EN A43SCLK Horloge CODEC 1843 254 187 SOR A43SDI Sortie Données Série CODEC 1843 255 188 EN A43SDI Entrée Données Série CODEC 1843 256 189 EN VCC Alimentation en Courant 5 V 257 190 EN TDI Entrée Données Test JTAG 258 297 EN GND Terre 259 191 EN TCK Horloge Test JTAG 260 192 SOR TDO Sortie Données Test JTAG 261 193 EN TRSTL Remise Etat Initial Test JTAG 262 194 EN TMS Mode Test JTAG 263 195 SOR INTAL Interruption A pour PCI 264 196 EN RSTL | Remise Etat Initial PCI 265 298 EN ~ VDD Alimentation en Courant 3,3 V Plot Broche Type Nom Description Puce NO Module NO 266 197 EN PCICLK Horloge PCI 267 198 EN GNTL Accord Bus PCI 268 199 SOR REQL Demande Bus PCI 269 299 EN GND Terre 270 200 Réservé 1.5 ARCHITECTURE DE LA MICROPROGRAMMATION 1.5.1 vUE GENERALE MSP offre la plus grande partie de ses environnements puissants en application ouverte par une combinaison fortement optimisée de bibliothèques de microprogrammation vectorisées-DSP (exécutée par le processeur vectoriel) et les fonctions de gestion du système (exécutées par ARM7). MSP sépare la réalisation du traitement de signaux de la réalisation de l'application à l'haute de façon à pouvoir obtenir une performance cadrable, des multimédia et une communication au meilleur prix et une facilité d'utilisation et une bonne possibilité de gestion. De meme, il réduira les frais de réalisation des applications et d'entretien. 1.5.2 ARCHITECTURE DE LA MICROPROGRAMMATION L'architecture du système de microprogrammation MSP est illustrée à la figure 7. Les zones teintées représentent les composants du système MSP. Les zones blanches sont les applications PC résident et le système de fonctionnement. 1.5.2.1 MOSA (Architecture système Exploitation Multimédia) Le noyau du système d'Exploitation en Temps Réel de MSP est nomme "MOSA" qui est un sous-groupe du Noyau en Temps Réel de Microsoft MMOSA. MOSA est un système d'exploitatin en temps réel robuste, multitâches à préemption, optimisé pour des applications multimédia réalisées sur MSP. I1 accomplira les fonctions majeures suivantes Mise en interface avec Windows 95 et Windows NT comme hôtes. Téléchargement de microprogrammation d'applications sélectionnées par l'hôte Plannification des tâches de MSP pour une exécution dans le Processeur Vectoriel et de ARM7 Gestion de toutes les ressources du système MSP comprenant les dispositifs de mémoire et E/S. Synchronisation de la communication entre les tâches de MSP Reportage des conditions de l'interruption en rapport avec MSP d'exception et d'état MOSA fonctionne exclusivement sur ARM7. Veuillez vous référer à la spécification du Noyau en Temps Réel MMOSA pour plus de détails. 1.5.2.2 MODULE BIBLIOTHEQUE MULTIMEDIA Le Module Bibliothèque Multimédia offre une large gamme de modules qui accomplissent des fonctions telles qu'une communication de données, vidéo et audio MPEG, codage et synthèse de la parole, audio compatible avec la programmation, etc. Chaque module est optimisé pour l'environnement de MSP et il est conçu pour exécuter dans un environnement multi-tâches. 1.5.3 BIBLIOTHEQUE DE TELECOMMUNICATIONS 1.5.3.1 Vue générale Avec microprogrammation DSP appropriée, on peut utiliser MSP pour supporter des applications vocales avec interception, réponse aux appels téléphoniques reçus et stockage des messages sur disque dur. Le haut-parleur du système peut également être utilisé avec un microphone pour offrir le service d'un haut-parleur téléphonique en semi-duplex sans utiliser le combiné téléphonique. La progressin des appels d'entrée et sortie est détectée et utilisée par le système. Les sons de progression des appels peuvent également être entendus à travers le combiné téléphonique, le haut- parleur du système, les écouteurs stéréo ou les canaux de sortie audio, selon la sélection sous le contrôle du programme. 1.6 MODELE DE PROGRAMMATION 1.6.1 VUE GENERALE D'un point de vue matériel, MSP est une solution mono- puce contenant deux CPU et un certain nombre de dispositifs périphériques intégrés. D'un point de vue logiciel, MSP est un dispositif de Traitement de Signaux Numériques haute performance (DSP) résidant sur le Bus PCI. Le contrôle de MSP par CPU hôte est obtenu soit par lecture et écriture des registres de Contrôle et d'Etat de MSP par le Bus CPI ou structure de données partagées résidant dans la mémoire du système hôte structure de données partagées résidant dans la mémoire locale de MSP. L'exécution du programme de MSP commence toujours par la CPU de ARM7 qui à son tour peut initialiser un second courant in Processeur Vectoriel est responsable de la totalité du traitement de signaux numériques et de certaines interruptions spéciales comme une Interruption du Coprocesseur (émise par ARM7 vers le Processeur Vectoriel) ou un Débordement de la Pile du Matériel (dans le Processeur Vectoriel). MSP comporte également un certain nombre de périphériques intégrés pour une mise en interface avec divers dispositifs E/S. Toutes les adresses des dispositifs périphériques sont topographices en mémoire et par conséquent on peut y accéder avec des instructions standards de Charge et d'Enregistrement dans la mémoire (soit par CPU de ARM7 ou bien le Processeur Vectoriel). 1.6.2 MISE SOUS TENSION, REMISE A L'ETAT INITIAL ET INITIALISATION Après mise sous tension, MSP entrera automatiquement en séquence d'auto-test pour vérifier totalement sa fonctionnalité. La séquence d'auto-test comprend initialisation de tous les registes internes de MSP exécution des diagnostics d'auto-test sur puce pour vérifier tous les composants de MSP et on peut s'attendre à ce que cela dure eviron secondes. A la fin de la séquence d'autotest, MSP sera prêt à exécuter la microprogrammation de MSP qui comprendra charge et exécution du logiciel d'initialisation de MSP charge et exécution de MMOSA du noyau du système de fonctionnement en temps réel de MSP MSP supporte 3 types de remises à l'état initial remise à l'état initial du système controlée par le matériel par l'intermédiaire du Bus de PCI remise à l'état initial du système contrôlée par le logiciel par l'intermédiaire du bit de Remise à l'Etat Initial du Système PCI dans le Registre de Contrôle de MSP redémarrage commandé par le logiciel par l'intermédiaire de ARM7 et du bit de Redémarrage Vectoriel également dans le registre de contrôle de MSP. 1.6.3 REGISTRES DE CONFIGURATION PCI Comme dispositif E/S sur le Bus PCI, MSP contient un groupe de registres de configuration tels que définis par la spécification de la Révision 2.1 de PCI et comme cela est illustré au Tableau 2. TABLEAU 2: REGISTRES DE CONFIGURATION DE PCI DECALAGE | DESCRIPTIONS 0x00 Identificateur du Dispositif et du Vendeur 0x04 Etat et Commande 0x08 Code Classe et Identificateur Révision 0x0C Registre Divers 0x10 Registre Adresse Base MSP (MSP BASE) 0x14 Registre Adresse Base Tampon Bloc Virtuel 0x18 Registre Adresse Base 2 (non utilisé) 0xlC Registre Adresse Base 3 (non utilisé) 0x20 Registre Adresse Base 4 (non utilisé) 0x24 Registre Adresse Base 5 (non utilisé) 0x28 Réservé 0x2C Réservé 0x30 Adresse Base ROM Expansion 0x3C Ligne Interruption 1.6.3.1 Registre Identificateur du Dispositif et du Vendeur Veuillez vous référer à la spécification du Bus PCI Rev 2.1 pour plus de détails. 1.6.3.2 Registre Etat et Commande Veuillez vous référer à la spécification du Bus PCI Rev. 2.1 pour plus de détails. 1.6.3.3 Registre Code Classe et Identificateur Révision Veuillez vous référer à la spécification du Bus PCI Rev. 2.1 pour plus de détails. Pour MSP-lEX le Code Classe est défini comme étant de 03, et la sous-classe est 0. 1.6.3.4 Registre divers Veuillez vous référer à la spécification du Bus PCI Rev. 2.1 pour plus de détails. 1.6.3.5 Registre Adresse Base MSP(MSP BASE) Ce registre contient l'adresse de base pour le dispositif MSP. Elle est écrite par le logiciel du système hôte (Windows 95/NT) et est utilisée par le matériel de MSP pour l'adressage de la mémoire. 1.6.3.6 Registre Adresse Base VFB Ce registre contient l'adresse de base pour le tampon des trames virtuelles de VGA. Elle est écrite par le logiciel du système hôte (Windows 95/NT) et est utilisée par le matériel de MSP pour l'émulation des tampons des trames de VGA. 1.6.3.7 Adresse Base ROM en expansion Veuillez vous référer à la spécification du Bus PCI Rev. 2.1 pour plus de détails. 1.6.3.8 Registre Ligne Interruption Veuillez vous référer à la spécification du Bus PCI Rev. 2.1 pour plus de détails. 1.6.4 CPU de ARM7 CPU RISC de ARM7 est le processeur maître de MSP. I1 contient des trajets de données à 32 bits et se conforme à l'architecture de l'ensemble d'instructions de ARM7 standard. ARM7 comporte également des instructions spéciales de coprocesseur pour une mise en interface avec le Processeur Vectoriel. 1.6.5 Processeur Vectoriel Le Processeur Vectoriel est le moteur de DSP de MSP. I1 contient des trajets de données de 288 bits et fonctionne en tant que coprocesseur pour ARM7. Sa fonctionnalité est telle que décrite dans le document d'Architecture du Processeur Vectoriel. Le Processeur Vectoriel fonctionne à 80 MHz et contient 6 étages de pipeline : recherche, décodage, émetteur, accès registre, exécution et écriture. I1 est optimisé pour un traitement en rapport avec DSP. 1.6.6 Gestion Mémoire Virtuelle MSP-lEX NE supporte PAS la gestion de la mémoire virtuelle. 1.6.7 Traitement d'Interruptions et d'Exceptions Le traitement d'interruptions et d'exceptions dans MSP est pour la plus grande part effectué par ARM7. Toutes les interruptions des dispositifs internes d'entrée/sortie passent par le Contrôleur d'Interruptions interne 8254 qui les met en priorité et envoie l'interruption de la plus grande priorité à ARM7 pour un plus ample traitement. 1.6.8 Topographie d'Adresses de Mémoire Physique Les programmes de ARM7 et du Processeur Vectoriel voient également tous les dispositifs d'entrée/sortie de MSP en tant que topographies en mémoire selon la mémoire physique telle qu'illustrée à la figure 8 ci-dessous. Veuillez noter que la topographie d'adresses de MSP telle que vue par ARM7 (ou le Processeur Vectoriel) part de zéro et s'étend jusqu'à 4 GB. Dans la région de 2 GB à 4 GB, les adresses sont topographiées aux adresses de PCI de l'hâte (Pentium) de 0 à 2 GB selon la relation suivante Adresse PCI hôte = adresse ARM7 - 8000 0000 (en hexa -décimal) Cette topographie permet à ARM7 (ou au Processeur Vectoriel) d'utiliser les adresses comprises entre 2 GB et 4 GB pour accéder à l'adresse de la mémoire hôte de PCI allant de 0 à 2 GB. Toutes les adresses de mémoire hôte de PCI au-delà de 2 GB ne sont pas accessibles par ARM7. Les programmes hôtes (Pentium) voient également tous les dispositifs d'entrée/sortie de MSP topographiés en mémoire mais selon une carte d'adresses physiques plus limitée comme cela est illustré à la figure 9. Veuillez noter que dans les programmes vues de l'hôte (Pentium) MSP~BASE est le début de la carte d'adresses de MSP. MSP~BASE + 7DFFFFF est la fin de la carte adresse de MSP. la carte d'adresses de MSP est simplement définie dans cette gamme de 128 MB. TABLEAU 3 TOPOGRAPHIE D'ADRESSES DU DISPOSITIF E/S DE MSP Adrese ARM7 Adresse hôte Dispositif [31:0] [26 : 0] (en hex) (en hex) 0000 0000 000 0000 ROM interne 0040 0000 040 0000 SRAM Zone de Travail Interne 0080 0000 080 0000 DRAM Synchrone Externe 0480 0000 480 0000 Contrôleur Memoire DRAM interne 0490 0000 490 0000 Contrôleur Tampon Trames virtuelles interne 04A0 0000 4A0 0000 contrôleur DMA Interne 04B0 0000 4B0 0000 Ligne Série CODEC KS0119 04C0 0000 4C0 0000 Ligne Série CODEC RS0122 04C0 0200 4C0 0200 Ligne Série CODEC 1843 DA 04D0 0000 4D0 0000 Appareil transfert Données Mémoire 04D0 A000 4D0 A000 à à Réservé 07BF FFFF 7BF FFFF 07C0 0000 ~ 7C0 0000 Processeur Train Bits interne 07D0 0000 7D0 0000 Contrôleur Interruption Interne 8259 07D0 0010 7D0 0010 Temporisateurs Internes 8254 07D0 0020 7D0 0020 UART Interne 16450 07E0 0000 7E0 0000 à à Réservé 07DF FFFF 7DF FFFF 07DF FFF0 7DF FFF0 Registre Contrôle Hôte MSP 07DF FFF4 7DF FFF4 Registre Contrôle ARM7 de MSP 07DF FFF8 7DF FFF8 Réservé 07DF FFFB 7DF FFFB Réservé 07E0 0000 à Réservé 7FFF FFFF 8000 0000 Autres dispositifs Hôte de PCI à (topographies de 0 jusqu'à 7FFF FFFF de FFFF FFFF de la mémoire de PCI Hôte 1.6.9 Registre Contrôle Hôte MSP MSP-lEX contient un registre spécial qui est utilisé pour l'initialisation et les interruptions par l'hôte (processeur Pentium). TABLEAU 4 DEFINITION REGISTRE CONTRÔLE HOTE MSP BIT N Description O Remis à l'Etat Initial Système PCI 1 Remise en Marche ARM7 et Vecteur 2 Demande Interruption MSP par Hôte (Pentium) 3 Demande Interruption Hôte PCI par MSP 4 Interruption hôte PCI Reconnue 31:5 Réservé bit Remise à Etat initial Système PCI. Ce bit est utilisé par l'hôte (Pentium) pour remettre complètement à l'état initial tout le matériel du sytème MSP comprenant tous les dispositifs internes et externes d'entrée/sortie en rapport avec MSP. Après Remise à l'état initial d'un système PCI, MSP passera par sa séquence standard de remise à l'état initial, comprenant l'exécution de tous les diagnostics d'autotest sur puce pour ARM7, le processeur vectoriel et les dispositifs E/S. Cette remsie à l'état initial a l'effet équivalent d'une remise à l'état initial du système du matériel. bit Remise en marche de ARM7 et du Processeur Vectoriel. Ce bit est utilisé par l'hôte (Pentium) pour remettre en marche à la fois ARM7 et le Processeur Vectoriel. Cette remsie en marche est différente de la remise à l'état initial complète du système PCI dans le sens que MSP ne passe pas par toute sa séquence normale de remise à l'état initial et n'exécute aucun des diagnostics d'auto test sur puce. Quand ce bit est établi, ARM7 commence l'exécution à l'adresse 0 et le Processeur Vectoriel entre en mode d'inactivité. Aucun dispositif interne ou externe E/S n'est affecté. bit Demande d'Interruption de MSP par l'Hôte (Pentium). Ce bit est utilisé par l'hôte (Pentium) pour interrompre directement MSP et il est connecté à l'une des entrées du Contrôleur d'Interruption Programmable interne 8259 (PIC), qui, à son tour est utilisé pour interrompre ARM7. Ce bit a été établi par l'hôte (Pentium) et il est effacé par ARM7. bit Reconnaissance Interruption Hôte PCI. Ce bit est utilisé par l'hôte (Pentium) pour reconnaître une demande d'Interruption de l'Hôte de PCI produite par MSP. Ce bit est établi par l'hôte (Pentium) et il est effacé par ARM7. bit Réservé 1.6.10 Registre contrôle ARM7 de MSP MSP-lEX contient un registre spécial qui est utilisé pour l'interruption de l'hôte par le processeur de ARM7. TABLEAU 5 DEFINITION REGISTRE CONTROLE ARM7 DE MSP Bit NO I Description O Demande d'interruption hôte PCI par MSP 31 : 1 Réservé bit Interruption Hôte PCI par MSP. Ce bit est utilisé par MSP pour interrompre l'hôte par assertion active de la broche INTA&num; de PCI sur le bus PCI. Ce bit est établi par ARM7 et il est effacé par l'hôte (Pentium) par le bus PCI. bit Réservé 1.6.11 La uROM interne de MSP Un ROM interne contient un total de 16 K octets et comporte : logiciel d'Initialisation de uROM logiciel de diagnostic d'auto-test divers logiciels gestion système diverses sous-routines bibliothèques Antémémoire pour certaines instructions et constantes de données Sa topographie d'adresses est illustrée au Tableau 6 ci-dessous. TABLEAU 6 TOPOGRAPHIE ADRESSES uROM INTERNE Décalage Description Adresse (hex) Adresse Remise à l'état Initial et Initialisation ARM7 Adresse Remise a l'état initial et Initialisation Processeur Vectoriel Diagnostic Auto-test Macro-cellule FALU Diagnostic Auto-test Macro-cellule SRAM Diagnostic Auto-test Noyau Processeur Vectoriel Diagnostic Auto-test Contrôleur Antémémoire Diagnostic Auto-test Contrôleur Mémoire Diagnostic Auto-test Bus PCI Diagnostic Auto-test Processeur Train de bits Diagnostic Auto-test Contrôleur DMA Diagnostic Auto-test Intervalle T-mère 8254 Diagnostic Auto-test contrôleur Interruption 8259 Diagnostic Auto-test Registre UART 16450 Diagnostic Auto-test Ligne en série KS0122 Diagnostic Auto-test Ligne en série KS0119 Diagnostic Auto-test Ligne en série AD 1843 Programme de Traitement O Interruption Dispositif Entrée et Sortie ARM7 Programme de Traitement 1 Interruption Dispositif Entrée et Sortie ARM7 Programme de Traitement 2 Interruption Dispositif Entrée et Sortie ARM7 Programme de Traitement 3 Interruption Dispositif Entrée et Sortie ARM7 Programme de Traitement Exception Instruction ARM7 Interruption Processeur Vectoriel (par ARM7) Décalage Description Adresse (hex) Exception Point de rupture Processeur Vectoriel Sous-routines Bibliothèque DSP Processeur Vectoriel Sous-routines Bibliothèque Vidéo MPEG-1 Sous-routines Bibliothèque Audio MPEG-1 Sous-routines Bibliothèque Vidéo MPEG-2 Sous-routines Bibliothèque Audio MPEG-2 Sous-routines Bibliothèque Programmation Sous-routines Bibliothèque DSP V.34 Sous-routines Bibliothèque Service public Téléphone Sous-routines Bibliothèque graphiques 2D Sous-routines Bibliothèque graphiques 3D Sous-routines Bibliothèque H.261 Sous-routines Bibliothèque H.263 Sous-routines Bibliothèque G.728 Sous-routines Bibliothèque G.723 Constantes Données ARM7 Constantes Données Processeur Vectoriel 1.6.12 SRAM interne de MSP La SRAM interne peut fonctionner soit comme antémémoire ou mémoire locale selon les sélections spécifiées par le registre Vectoriel et de Contrôle et d'Etat de MSP (VCSR). En mode de mémoire locale, son espace d'adresse est topographié sur la section de SRAM interne, en partant à l'emplacement : 040 0000. 1.6.13 Périphériques internes MSP MSP contient également un certain nombres de périphériques résidants sur ses 2 bus internes : Fbus 64 bits 80 MHz et IObus 32 bit, 40 MHz. Les dispositifs sur le Fbus comprennent Contrôleur mémoire pour DRAM synchrone externe Interface tampon trames virtuelles Contrôleur Bus PCI pour bus PCI externe Interface ASIC client Contrôleur DMA 8 caneaux Appareil de transfert de Données de Mémoire (pour le transfert de données de la mémore hôte vers/de SDRAM) Ligne Série CODEC KS0122 Ligne Série CODEC KSll9 Ligne Série CODEC AD1843 Les dispositifs sur le IObus comprennent Un Temporisateur d'Intervalle programmable compatible-8254 Un contrôleur d'Interruption Programmable Compatible 8259 (8 niveaux) Une ligne Série UART compatible-16450 Un Processeur de Train de bits pour le décodage et le codage du train de bits vidéo de MPEG La topographie dans le registre de ces périphériques est illustrée au Tableau 7. TABLEAU 7 TOPOGRAPHIE D'ADRESSES REGISTRE PERIPHERIQUE INTERNE Dispositif Décalage Description Adresse (en hex) 4AO 0000 Registre Adresse Courante O (bits : 3 > ) 4A0 0008 Registre Adresse Courante 1 (bits : 3 > ) Contrôleur 4AO 0010 Registre Adresse Courante 2 (bits : 3 > ) DMA 4A0 0018 Registre Adresse Courante 3 (bits : 3 > ) MSP 4A0 0020 Registre Adresse Courante 4 (bits : 3 > ) 4A0 0028 Registre Adresse Courante 5 (bits : 3 > ) 4A0 0030 Registre Adresse Courante 6 (bits : 3 > ) 4A0 0038 Registre Adresse Courante 7 (bits : 3 > ) 4A0 0050 Registre Adresse Arrêt O (bits : 3 > ) 4A0 0058 Registre Adresse Arrêt 1 (bits : 3 > ) 4A0 0060 Registre Adresse Arrêt 2 (bits : 3 > ) 4A0 0068 Registre Adresse Arrêt 3 (bits : 3 > ) 4A0 0070 Registre Adresse Arrêt 4 (bits : 3 > ) 4A0 0078 Registre Adresse Arrêt 5 (bits : 3 > ) 4A0 0080 Registre Adresse Arrêt 6 (bits : 3 > ) 4A0 0088 Registre Adresse Arrêt 7 (bits : 3 > ) 4A0 00A0 Registre d'Etat 4A0 00A8 Registe Contrôle A 4AO OOBO Registre Masque 4DO 0000 Registre Adresse Courante MSP Dispositif 4D0 0008 Registre Adresse Courante Hôte Transfert 4DO 0010 Registre Adresse Arrêt MSP Données 4D0 0018 Registre Adresse Arrêt Hôte Mémoire 4D0 0020 Registre Etat 4D0 0028 Registre Contrôle VFB Dispositif Décalage Description Adresse (en hex) 04C0 2000 Registre Grandeur Bloc 04C0 2001 DI 04C0 2002 Octet Contrôle/DATA Ligne 04cO 2003 IDEX/DATAO Série 04cO 2004 DATA 1 KS0122 04C0 2005 DATA 2 04C0 2006 DATA 3 04C0 2007 Réservé 04C0 2008 Lire Interface Série DATA 04C0 2009 Réservé 04C0 200A Registre Contrôle Logique 04C0 200B Réservé 04C0 200C Réservé 04cO 200D Réservé 04C0 200E Registre Etat 04C0 200F Réservé 04BO 0000 Registre Grandeur Bloc 04B0 0001 DI 04B0 0002 Octet Contrôle/DATA 04B0 0003 IDEX/DATA O 04B0 0004 DATA 1 04B0 0005 DATA 2 04B0 0006 DATA 3 Ligne 04B0 0007 Registre Etat Série 04B0 0008 Lire Interface Série DATA KS0119 04BO 0009 Lire Données PROM 04B0 OOOA Registre Contrôle Logique 04B0 000B Polarité HS, VS 04B0 OOOC Décalage HS 04B0 000D Décalage VS 04cO 200E Réservé 04C0 200F Réservé Dispositif Décalage Description adresse (en hex) 040C0 4000 (écriture seulement) Entrée Données Ecriture Registre Contrôle DAC1 Interface 04 (70 5000 (écriture seulement) Entrée Données Ecriture Registre Contrôle CODEC DAC2 AD1843 04C0 6000 (écriture seulement) Entrée Données Ecriture Registre Contrôle ADC gauche 04C0 7000 (écriture seulement) Entrée Données Ecriture Registre Contrôle ADC droit 04C0 4000 + 2 Entrée Mot Contrôle DAC 1 04 (20 5000 + 2 Entrée Mot Contrôle DAC 2 04 (20 6000 + 2 Entrée Mot Contrôle ADC gauche 04C0 7000 + 2 Entrée Mot Contrôle ADC droit 04C0 4000 (lecture seulement) Sortie Données Registre Contrôle DAC1 04C0 5000 (lecture seulement) Sortie Données Registre Contrôle DAC2 04C0 6000 (lecture seulement) Sortie Données Registre Contrôle ADC gauche 04C0 7000 (lecture seulement) Sortie Données Registre Controle ADC droit 04C0 6000 + 2 Registre Drapeau ADC gauche 04C0 7000 + 2 Registre Drapeau ADC droit 04 (20 6000 + 10 Données ler ADC gauche 04C0 6000 + 12 Données 2ème ADC gauche 04C0 6000 + 14 Données 3ème ADC gauche 04C0 6000 + 16 Données 4ème ADC gauche 0400 7000 + 10 Données ler ADC droit 0400 7000 + 12 Données 2ème ADC droit 0400 7000 + 14 Données 3ème ADC droit 0400 7000 + 16 Données 4ème ADC droit 0400 4000 + 20 Registre Drapeau Contrôle DAC1 0400 5000 + 20 Registre Drapeau Contrôle DAC2 04 (20 6000 + 20 Registre Drapeau Contrôle ADC gauche 0400 7000 + 20 Registre Drapeau Contrôle ADC droit Dispositif Décalage Description adresses (en hex) 7D0 0000 mot d'ordre Initialisation 1 Non défini mot d'ordre Initialisation 2 (non utilisé) Contrôleur Non défini mot d'ordre Initialisation 3 (non utilisé) Interruption 7D0 0004 mot d'ordre Initialisation 4 8259 7D0 0004 Mot de contrôle Opération 1 7D0 0000 Mot de contrôle Opération 2 7D0 0000 Mot de contrôle Opération 3 7D0 0010 Registre compteur n 0 (L/E) Temporisateur 7D0 0014 Registre compteur n 1 (L/E) 8254 7D0 0018 Registre compteur n 2 (L/E) 7D0 001C Registre Mot Contrôle (e) 7D0 0020 Registre Récepteur Registre Transmetteur Registre Diviseur 7D0 0024 Registre Identificateur Interruption 7D0 0028 Registre diviseur UART validation interruption 16450 7D0 002C Registre contrôle Ligne 7D0 0030 Registre contrôle Modem 7D0 0034 Registre état Ligne 7D0 0038 Registre état Modem 700 0030 Dispositif Décalage Description adresse (en hex) 7C0 0008 à Adresse départ tampon entrée 0 7C0 000B 7C0 000C à Adresse fin tampon entrée 0 7C0 000F 7C0 0010 à Adresse depart tampon entrée 1 7C0 0013 7C0 0014 à Adresse fin tampon entrée 1 7C0 0017 7C0 0018 à Adresse départ tampon entrée 0 7C0 001B Processeur 7C0 001C à Adresse fin tampon sortie 0 train de bits 7C0 001F 7C0 0020 à Adresse départ tampon sortie 1 7C0 0023 7C0 0024 à Adresse fin tampon sortie 1 7C0 0027 7C0 0028 à Adresse début sauvegarde contexte 7C0 002B 7C0 002C à Adresse octet des dernières données utilisées dans le tampon double d'entrée 7C0 002F ou de sortire de ligne 7C0 0030 LSB du registre d'état de BP 7C0 0031 Second bit de poids faible 7C0 004E Second bit de poids fort 7C0 004F MSB du registre d'état de BP 7C0 0050 à Registre d'état de BP 7C0 0053 Dispositif Décalage Description adresse (en hex) 7C0 0054 à Registre masque interruption BP et grandeurs verticale et horizontale de 7C0 0057 l'image en nombres de macroblocs 7C0 0058 Broche demande interruption ARM7 7C0 0059 Réservé pour extension future 7C0 005F Dispositif Adresse Description Offset (en hex) 7C0 0060 à Région Antémémoire BP 7C0 19F Processeur 7C0 01A0 train de bits à Réservé pour extension future 7CF FFFF 1.6.14 Périphériques IOBUS 1.6.14.1 Temporisateur intervalle programmable compatible 8254 Le MSP comporte un Temporisateur d'Intervalle Programmable compatible 8254 standard à utiliser par le logiciel avec la fonctionnalité suivante Contient 3 compteurs indépendants de 16 bits Supporte 6 modes de compteur programmable Tous les compteurs sont programmés par écriture dans le registre de Mots de Contrôle et du compte initial. Registre Mots de Contrôle Ce registre contient diverses informations de contrôle pour le Temporisateur. Sa définition des bits est décrite au Tableau 8 ci-dessous. TABLEAU 8 REGISTRE MOTS DE CONTROLE Bit N Description 0 Sélection comptage BCD (défault : binaire) 3:1 Modes de comptage 000 : Mode O 001 : Mode 1 xlO : Mode 2 xll : Mode 3 100 : Mode 4 101 : Mode 5 5:4 Sélection Lecture/Ecriture 00: Ordre Verrouillage Compteur 01: Octets de moindre poids seulement en Lecture/Ecriture 10: Octets de poids fort seulement de Lecture/Ecriture 11: Octet de moindre poids d'abord puis octet de poids fort de Lecture/Ecriture 7:6 Compteur Sélection : 00: Sélection Compteur O 01: Sélection Compteur 1 10: Sélection Compteur 2 11: Sélection Compteur 3 Registre d'Etat Ce registre contient l'information d'état du Temporisateur. Compteur 0, 1 et 2 Ces 3 registres sont les éléments principaux de comptage du Temporisateur. Chaque compteur a 16 bits de large, il peut être préétabli et il décompte en mode binaire ou BCD. Son entrée, sa porte et sa sortie sont configurées par la sélection des MODES stockés dans le Registre de Mots de Contrôle. Les 3 compteurs sont totalement indépendants. 1.6.14.2 Contrôleur d'Interruption Programmable Compatible 8259 (PIC) Le contrôleur d'Interruption Programmable de MSP est le standard 8259 qui est si courant dans tous les ordinateurs personnels de base x86. Sa fonctionnalité comprend Supporte 8 niveaux de priorité Modes programmables d'interruption Capacité de masque de demande individuelle Dans MSP-lEX, les 8 niveaux des entrées d'interruption sont assignés expérimentalement à divers dispositifs îdO comme suit Le niveau 0 (le plus haut) est assigné au Temporisateur 8254 Le niveau 1 est assigné au Tampon de trames virtuelles (VFB) e Le niveau 2 est assigné au Bloc Logique ASIC du Client comprenant le contrôleur DMA Le niveau 3 est assigné au Processeur du Train de Bits Le niveau 4 est assigné au Bus PCI Le niveau 5 est assigné à Le niveau 6 est assigné à Le niveau 7 est assigné à UART 16550 Le signal à la sortie du Contrôleur d'Interruption est connecté à la ligne de demande d'interruption (nFIQ) de la CPU RISC de ARM7. Description des registres I1 y trois registres à 8 bits qui sont utilisés pour initialiser le fonctionnement du PIC Mot d'Ordre d'Initialisation 1 (ICW1) Mot d'Ordre d'Initialisation 2 (ICW2) : non utilisé dans MSP-lEX Mot d'Ordre d'Initialisation 3 (ICW3) : non utilisé dans MSP-lEX Mot d'Ordre d'Initialisation 4 (ICW4) I1 y a trois autres registres à 8 bits qui sont utilisés pour contrôler le fonctionnement de PCI : Opération Il Mot de Contrôle 1 (OCW1) Mot de Contrôle d'Opération 2 (OCW2) Mot de Contrôle d'Opération 3 (OCW3) Veuillez noter que l'adressage de tous ces registres est spécialement codé dans la portion d'adresse (bit ) et la portion de données. Veuillez vous référer à la spécification standard 8259 pour plus de détails. TABLEAU 9 DESCRIPTION DU REGISTRE 8259 Nom Description ICW1 Mot d'Ordre d'Initialisation 1 bit : ICW4 est nécessaire bit : doit être un "1" (8259 simple seulement) bit : non défini (Intervalle Adresses Appel) bit : doit être un 11111 (Mode Déclenché au Niveau) bit : doit être un "1" bit : non défini (Adresse Vecteur Interruption) ICW2 Mot d'Ordre d'Initialisation 2 (non utilisé) ICW3 Mot d'Ordre d'Initialisation 3 (non utilisé) ICW4 Mot d'Ordre d'Initialisation 4 bit : doit être un "1" (Mode 8086) bit : Fin Automatique de l'Interruption bit : non défini bit : doit être un "0" (Mode non Tamponné) bit : mode spécial complètement emboîté bit : doit être un ll0l' OCWl Mot Contrôle Opération 1: interrupte validation masque bit : permet l'interruption pour demande d'entrée pour &num;n OCW2 Mot de Contrôle d'opération 2 bit : I1 faut agir sur le Niveau d'Interruption bit doit être "0" bit 001: Ordre EOI no spécique 011: Ordre EOI spécifique 101: permutation circulaire Ordre EOI non spécifique 100: permutation circulaire Mode EOI automatique (établir) 000: permutation circulaire Mode EOI automatique (effacer) 111: permutation spécifique Ordre EOI spécifique 110: établir Ordre de Priorité 010: pas d'opération Nom Description OCW3 Mot Contrôle Opération 3 bit 10: Lire Registre Demande Interruption (IRR) 11: Lire Registre en Service (ISR) 00: pas d'action 01: pas d'action bit : Ordre Interrogation bit : doit être "0" bit : Mode Masque Spécial bit : Validation Mode Masque Spécial bit : doit être "0" 1.6.14.3 Ligne Série UART compatible 16450 MSP comporte une ligne série UART compatible 16450 qui est utilisée comme interface vers des dispositifs E/S externes en série. Veuillez vous référer à la spécification standard du 16450 pour plus de détails. 1.6.14.4 Processeur du train de bits Le processeur du train de bits est un bloc logique spécialisé qui traite des données de train de bits vidéo. Sa fonctionnalité comprend Décodage et codage de HUFFMAN de longueur variable Décompression et compression des données vidéo en format de stockage en ZIGZAG Divers autres traitements au niveau des bits Le processeur du train de bits travaille en tant qu'unité concurrente de traitement et est sous le contrôle du logiciel soit par le Processeur Vectoriel soit par ARM7. Pour plus de détails, veuillez vous référer au chapitre du Processeur du Train de Bits. 1.6.15 PERIPHERIQUES FBUS Les périphériques de Fbus comprennent Interface Logique ASIC client Contrôleur DMA 8 canaux Interface Ligne Série Codeur vidéo vers KS0119 de SAMSUNG Interface Ligne Série Audio et Télécommunications vers AD1843 de ANALOG DEVICES 1.6.15.1 Interface Logique interface ASIC Cette section contient la logique d'interface vers tous les CODEC externes et les blocs logiques ASIC spécifiques du client. Ce bloc est totalement réalisé en matériel et il n'y a pas de registre à programme visible. Veuillez vous référer au chapitre de l'interface ASIC pour plus de détails de conception. 1.6.15.2 Contrôleur de DMA MSP-lEX contient un contrôleur de DMA sur puce ayant la fonctionnalité suivante 8 canaux DMA indépendants Contrôle validation/inhibition des canaux individuels de DMA Dispositif ES vers transfert de mémoire ou vice versa Incrément ou des decrément d'adresse Veuillez vous référer au chapitre de l'Interface ASIC pour plus de détails de conception. 1.6.15.3 Appareil de transfert de données en mémoire MSP-lEX contient également un autre appareil spécial de Transfert de Données en Mémoire qui est utilisé pour déplacer le données entre la mémoire hôte (Pentium) et la mémoire SDRAM locale de MSP. L'appareil de Transfert de Données en mémoire est à la base un contrôleur spécial de DMA qui contient les registres suivants Registre d'Adresse Courante de MSP : ce registre de 32 bits définit l'adresse dans la mémoire SDRAM au début du transfert des données en mémoire. Ce registre peut être lu ou écrit par ARM7 et la valeur initiale doit être chargée par ARM7. L'adresse sera augmentée en se basant sur la grandeur du transfert de données. Registre Adresses Courante Hôte : ce registre de 32 bits définit l'adresse de la mémoire hôte au début du transfert de données en mémoire. Ce registre peut être lu ou écrit par ARM7 et la valeur initiale doit être chargée par ARM7. L'adresse sera augmentée en se basant sur la grandeur du transfert de données. Registre Adresses Arrêt MSP : ce registre de 32 bits définit l'adresse de la mémoire SDRAM à la fin du transfert de données en mémoire. Ce registre peut être lu ou écrit par ARM7 et sera utilisé pour un comparaison avec le Registre d'Adresse Courante de MSP. S'il y a une correspondance, l'appareil de transfert de données en mémoire générera un signal Fin de Traitement de MSP. Registre Adresse Arrêt Hôte : ce registre de 32 bits définit l'adresse de la mémoire hôte à la fin du transfert de données en mémoire. Ce registre peut être lu ou écrit par ARM7 et sera utilisé pour une comparaison avec le Registre d'Adresse Courante de l'Hôte. S'il y a une correspondance, l'appareil de transfert de données en mémoire générera un signal Fin de Traitement de l'Hôte. Registre d'Etat : ce registre contient un information d'état se rapportant à l'appareil de Transfert de Données en Mémoire. Le codage des bits sera comme suit : EOP de MSP. Ce bit spécifie si l'appareil de Transfert de Données en Mémoire a atteint l'adresse d'arrêt de MSP ou non. I1 sera remis à l'état initial à 0080 0000 (hex) si ARM7 initialise le Registre d'Adresse Courante de Source. Ce bit doit simplement être lu et NON pas écrit par ARM7. * : EOP Hôte. Ce bit spécifie si l'appareil de Transfert de Données en Mémoire a atteint l'Adresse d'Arrêt de l'Hôte ou non. I1 sera remise à l'état initial à 8000 000 (hex) si ARM7 initialise le Registre d'Adresse Courante de l'Hôte. Ce bit doit seulement être lu et NON pas écrit par ARM7. Registre de contrôle : ce registre contient une information se rapportant à l'appareil de Transfert de Données en Mémoire. Le codage des bits sera comme suit : Direction. Ce bit spécifie la direction du transfert de données. Si c'est un "0" (défaut), la direction du transfert de données sera de la mémoire hôte (Pentium) à la mémoire SDRAM de MSP. Si c'est un "1" la direction sera de SDRAM à la mémoire hôte. Ce bit doit être écrit par ARM7. : Validation Interruption. Ce bit spécifie si l'appareil de Transfert de Données en Mémoire doit interrompre ARM7 à la fin du transfert de données ou non. Ce bit doit être écrit par ARM7. : Validation DMA. Ce bit permet à l'appareil de Transfert de Données en Mémoire de fonctionner. Ce bit doit être ecrit par ARM7. : Grandeur Transfert de Données. Si c'est un "O" (défaut), la grandeur de chaque transfert de donnée en mémoire sera de 32 octets. Si c'est "1", la grandeur sera de 64 octets. Ce bit doit être écrit par ARM7. 1.6.15.4 Interface Ligne Série Codeur Vidéo KS0119 L'interface Ligne Série Codeur Vidéo KS0119 comporte un registre Tampon Données Réception à double tampon qui contient les données lues du CODEC. Un Registre Tampon Données Transmission à double tampon qui contient les données écrites dans le CODEC. Un Registre de Contrôle et d'Etat qui contient diverses informations de contrôle et d'état pour la ligne en série. TABLEAU 10 REGISTES INTERFACE LIGNE SERIE CODEUR VIDEO KS0119 Décalage Largeur Description Adresse Bit (heu) oo 8 Registre Tampon Données Réception (RBUF) 01 8 Registre Tampon Données Transmission (CTBUF) 02 8 Registre Contrôle et Etat (CSR) Le codage des bits du registre de Contrôle et d'Etat est comme suit Bit Tampon Données Réception est plein. Ce bit est établi quand la ligne en série a reçu 8 bits de donnée du Codec KS0119. Si Validation Interruption (bit ) est établi, une demande d'interruption sera également émise vers ARM7. Bit Tampon Transmission Données est vide. Ce bit est établi quand la ligne en série est prête à transmettre les données vers le Codec KS0119. Si Validation Interruption (bit ) est établi, une demande d'interruption sera également émise vers ARM7. Bit Validation Interruption. Ce bit est utilisé pour valider la demande d'interruption pour ARM7. 1.6.15.5 Interface Ligne série Audio et Télécom AD1843 L'interface Ligne Série AD1843 comprend Un ensemble d'un Registre à double tampon qui contient les données lues du Codec. Un ensemble d'un Registre à double tampon qui contient les données écrites dans le Codec. Un registre de Contrôle et d'Etat qui contient diverses informations de contrôle et d'état pour la ligne en série. Veuillez vous référer au chapitre Interface CODEC AD 1843 pour plus de détails. 1.6.16 PERFORMANCE INSTRUCTIONS Le Tableau 11 montre la performance d'instructions dans le compte des cycles du Processeur Vectoriel où chaque cycle est égal à 12,5ns. La largeur du bus de mémoire externe est supposée être de 64 bits avec une horloge de mode de page de 40 MHz. Toutes les performances d'instructions sont données en mode Vectoriel à 32 octets. La convention est comme suit ras : nombre de cycles requis par la mémoire externe pour le premier accès. I1 est typiquement égal à 75ns ou 6 cycles. Latence : nombre de cycles pour l'exécution de la première instruction. Fréquence : nombre de cycles entre l'exécution d'instructions consécutives similaires. Quand la latence est la même que la fréquence, un seul nombre est montré. TABLEAU 11 PERFORMANCE D'EXECUTION DES INSTRUCTIONS Mnémonique Octet demi-mot Mot flottant (8/9 bits) (16 bits) (32 bits) (32 bits) VCACHE VLCB latence = 4, fréquence = 2 VLCB hors circuit latence = ras + 9, fréquence = ras VLR latence = 3, fréquence = 1 VLR hors circuit latence = ras + 8, fréquence = ras VL latence = 3, fréquence = 1 VL hors circuit latence = ras + 8, fréquence = ras VLD latence = 4, fréquence = 2 VLD hors circuit latence = ras + 12, fréquence = 8 VLQ latence = 6, fréquence = 16 VLQ hors circuit latence = ras + 20, fréquence = 16 VPFFCH ras + (&num; de lignes antémémoire) x 4 Mnémonique Octet demi-mot Mot flottant (8/9 bits) (16 bits) (32 bits) (32 bits) VLWS latence = 4, fréquence = 1 VLWS hors circuit latence = ras + 8, fréquence = ras VLI 1 VSTCB latence = 4, fréquence = 2 VSTCB hors circuit latence = ras + 9, fréquence = ras VST latence = 4, fréquence = 1 VST hors circuit latence = ras + 8, fréquence = ras VSTD latence = 5, fréquence = 2 VSTD hors circuit latence = ras + 12, fréquence = 8 VSTQ latence = 7, fréquence = 4 VSTQ hors circuit latence = ras + 20, fréquence = 16 VSTR latence = 4, fréquence = 1 VSTR hors circuit latence = ras + 7, fréquence = ras VWBACK ras + &num; de lignes antémémoire) x 4 CFC CTC MCR Non défini latence = 2 Non défini MCRS fréquence = 1 MRC MRCS VMOV VCMOV VCMOVM latence = 2 fréquence = 1 VEXTRT VINSERT Mnémonique Octet demi-mot Mot flottant (8/9 bits) (16 bits) (32 bits) (32 bits) CPINT non défini 10 non défini FOURCHETTE 6 REPRISE 6 SYNCH 4 VCBR 2 VCBRI 2 VD1CBR 2 VD2CBR 2 VD3CBR 2 VCJSR 2 VCJSRI 2 VCRSR 2 VCINT 4 VCJOIN 4 VCCS 2 VADD 2 (latence) 1 (fréquence) VADDH VET VASL 1 VASA non défini VAAS3 VAAS3 VASUB 2 (latence) VAVG 1 (cadence) VAVGH VAVGQ VCVTIF non défini 2 (latence) non défini 1 (fréquence) VCMPV 2 (latence) 1 (fréquence) VCNTLZ 1 non défini VCVTB9 VCVTFF non défini 2 (latence) 1 (fréquence) Mnémonique Octet demi-mot Mot Battement (8/9 bits) (16 bits) (32 bits) | (32 bits) VDIVI VDIVS VSATU 1 non défini VEXTSGN2 VESL VESR VEXTSGN3 VSATL VASR VLSL VDIV2N VLSR VMAC VMACF VMACL 2 (latence) 3 (latence) VMAS 1 (fréquence) 1 (fréquence) VMASF VMASL VMAX 1 2 (latence) 1 (fréquence) VMUL VMULA 2 (latence) 3 (latence) VMULF 1 (fréquence) 1 (fréquence) VMULL VON 1 non défini VOU VARRONDI non défini 2 (latence) 1 (fréquence) Mnemonique Octet demi-mot Mot flottant (8/9 bits) (16 bits) (32 bits) (32 bits) VSHFL VSHFLH VSHFLL VUNSHFL non défini VUNSHFLH VUNSHFLL VSUB 1 2 (latence) 1 (fréquence) VUsB2 vsUBs VXNON VXOU non défini VX OU UNIVERSEL CHAPITRE 2 NOYAU DE DSP Ce chapitre décrit la spécification du NOYAU de DSP vu par les concepteurs de matériel et de logiciel. 2.1 Vue générale Le NOYAU de DSP est le bloc de construction de base de MCP et il est entièrement responsable de tous les calculs. I1 consiste en Une CPU RISC de ARM7 de 32 bits fonctionnant à 40 MHz que l'on utilise pour le traitement des données d'utilité générale comme OS en temps réel, manipulation d'interruptions et d'exception, gestion des dispositifs d'entrée/sortie, etc. @ Un Processeur Vectoriel fonctionnant à 80 MHz et qui est utilisé pour le traitement des signaux numériques comme la Transformation Cosinusoïdale Discrète, la filtration FIR, la convolution, l'estimation du mouvement vidéo etc. Le Processeur Vectoriel est initialisé par ARM7, peut fonctionner concurremment avec ARM7 et de synchroniser sur ARM7 pendant toutes les instructions de contrôle spécial. Un Sous-système d'Antémémoire fonctionnant à 80 MHz et qui contient 1 KB d'antémémoire d'instructions et 1 KB de données pour ARM7, 1 KB d'antémémoire d'instructions et 4 KB de données pour le Processeur Vectoriel et 16 KB partagés de ROM d'antémémoire intégrée pour instructions et données pour ARM7 et le Processeur Vectoriel. L'antémémoire de données pour le Processeur Vectoriel peut être contrôlée par le matériel ou le logiciel. Le Sous système d'Antémémoire est en interface avec ARM7 par des bus de données de 32 bits et avec le Processeur Vectoriel par des bus de données de 128 bits. Un bus d'Entrée et de Sortie de 32 bits, 40 MHz (IOBUS) qui est en interface avec divers périphériques internes comme le Processeur du Train de Bits, le Contrôleur d'Interruption, le Temporisateur et UART. Un bus d'entrée/sortie rapide de 64 bits, 80 MHZ (FBUS) qui est en interface avec le Contrôleur du Bus PCI le Contrôleur de Mémoire, le Contrôleur de DMA et le bloc logique ASIC du Client. Un schéma bloc du NOYAU de DSP est montré à la figure 10. 2.2 CPU RISC de ARM7 2.2.1 Vue générale La CPU RISC de ARM7 est un noyau de processeur d'utilisation générale RISC à 32 bits. Elle est en interface avec le Processeur Vectoriel via l'interface standard de coprocesseur et on l'utilise pour traiter la plus grande partie des fonctions intensives qui ne sont pas de calcul dans MCP comme OS en temps réel, traitement de l'interruption du dispositif UO, communication avec CPU hôte. CPU de ARM7 présente Un fonctionnement totalement statique, idéal pour une application sensible à la puissance. Une faible consommation de puissance : 0.6 mA/MHz à 3 V de fabrication. Haute performance : 25 MIP à 40 MHz (pic 40 MIP) à 3 V. Modes de fonctionnement Grand et Petit Endien. Réponse Interruption rapide pour application en temps réel (22 cycles d'horloge à 40 MHz). Ensemble simple mais puissant d'instructions. Disposition très compacte. Environ 6 mm2. 2.2.2 Registres ARM7 a un total de 37 registres qui comprennent 31 registres d'utilité générale et 6 registres d'état. En tout moment il y a 16 registres d'utilité générale et un ou deux registres d'état qui sont visibles par le programmeur. Dans tous les modes de processeur d'Utilisateur, Supervi TABLEAU 12 REGISTRES D'UTILITE GENERALE ET COMPTEUR PROGRAMME Mode Mode Mode Mode Mode Mode Utilisateur FIQ Superviseur Arrêt IRQ Non défini RO RO RO RO RO RO R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R8 R8~fiq R8 R8 R8 R8 R9 R9~fiq R9 R9 R9 R9 R10 R10~fiq R10 R10 R10 R10 R11 Rll~fiq R11 R11 R11 R11 R12 R12~fiq R12 R12 R12 R12 R13 R13~fiq R13~arr R13~irq R13~irq R13~nd R14 R14~fiq R14~arr R14~irq R14~irq R14~nd R15 (PC) R15 (PC) R15 (PC) R15 (PC) R15 (PC) R15 (PC) TABLEAU 13 REGISTRES ETAT PROGRAMME Mode Mode Mode Mode Mode Mode Utilisateur FIQ Superviseur Arrêt IRQ Non défini CPSR CPSR CPSR CPSR CPSR CPSR SPSR~fiq SPSRsvc SPSR~arr SPSR~irq SPSRnd 2.2.3 Exception Les exceptions sont des conditions anormales qui se produisent pendant le traitement d'instructions, provoquant une modification de la circulation de contrôle. I1 y a sept types d'exceptions de ARM7 dont la liste est donnée cidessous, de la plus haute priorité à la plus basse priorité Remise à l'état initial (plus haute priorité) Arrêt (données) FIQ IRQ Arrêt (pré-extraction) Piégeage instruction non définie, interruption logiciel (plus faible priorité) TABLEAU 14 TABLEAU VECTEURS EXCEPTION Adresse Exception Mode à l'entrée 0000 0000 Remise à l'état initial Superviseur 0000 0004 Piégeage instruction non définie Non défini 0000 0008 Interruption logiciel Superviseur 0000 000C Arrêt (pré-extraction) Arrêt 0000 0010 Arrêt (données) Arrêt 0000 0014 Réservé par ARM7 -0000 0018 IRQ IRQ 0000 001c FIQ FIQ 2.2.4 Groupe instructions Toutes les instructions de ARM7 sont conditionnellement exécutées, ce qui signifie que leur exécution peut ou non avoir lieu selon les valeurs des drapeaux N, Z, C, V dans le registre CPSR. Les instructions de ARM7 peuvent être divisées en plusieurs catégories Branchement et branchement avec Liaison (B, BL) Traitement de Données (ET, OU exclusif, SUB, RSB, ADD, ADC, SBC, RSC, TST, TEQ, CMP, CMN, OUR, MOV, BIC, MNV) Transfert PSR (MRS, MSR) Multiplier et Multiplier-accumuler (MUL, MLA) Transfert Donnée Simple (LDR, STR) Transfert Données en bloc (LDM, STM) Bascule Donnée Simple (SWP) Interruption Logiciel (SWI) Opération données Coprocesseur (CDP) (c'est un groupe d'instructions) Transfert Données Coprocesseur (LDC, STC) Transfert Registre Coprocesseur (MRC, MCR) 2.3 PROCESSEUR VECTORIEL 2.3.1 Vue générale Le Processeur Vectoriel est un processeur de signaux numériques puissant employant l'architecture de données multiples à une Seule Instruction (SIMD) pour une performance maximale. I1 consiste en un moteur RISC à pipeline qui opère sur des éléments de données multiples en parallèle pour obtenir la plus haute performance. Les éléments de données multiples sont rassemblés dans un vecteur de 576 bits que l'on peut calculer à raison de Trente opérations arithmétiques à point fixe sur 8/9 bits pour chaque cycle de 12,5ns ou Seize opérations arithmétiques à point fixe de 16 bits pour chaque cycle de 12,5ns ou Huit opérations arithmétiques à point fixe ou à point flottant de 32 bits chaque cycle de 12,5ns. 2.3.2 Pipelines d'exécution Le Processeur Vectoriel emploie un pipeline à 6 étages pour l'exécution des instructions comme cela est illustré à la figure 11. La plupart des opérations scalaires sur 32 bits sont transmises par pipeline à raison d'une instruction par cycle tandis que la plupart des opérations vectorielles sur 576 bits sont transmises par pipeline à raison d'une instruction tous les deux cycles. La totalité des Charges et Enregistrements est recouverte par des opérations arithmétiques avec exécution indépendante par un matériel séparé de charges et d'enregistrements. Pour un équilibre entre la complexité de la conception et la performance, le Processeur Vectoriel peut émettre et exécuter des instructions déclassées en utilisant des verrouillages matériels pour la vérification de la dépendance des ressources et des données. Cette caractéristique améliore fortement la performance en particulier pendant des absences d'antémémoire de données du fait des charges et des enregistrements. 2.3.3 Microarchitecture du matériel Le Processeur Vectoriel consiste en 4 blocs fonctionnels majeurs comme illustré à la figure 12 Unité Extraction Instructions (IFU) Décodeur et Emetteur d'Instructions Trajet de Données d'Exécution des Instructions Unité de charge et d'enregistrement (LSU) L'Unité d'extraction d'Instructions est responsable de la pré-extraction des instructions et du traitement des instructions de circulation de contrôle comme Branchement et Saut à Sous-routine. L'IFU contient une file d'attente à 16 entrées d'instructions pré-extraites pour le courant d'exécutions courantes et une file d'attente à 8 entrées d'instructions pré-extraites pour le courant cible de Branchement. L'IFU peut recevoir 8 instructions de l'antémémoire d'instructions à chaque cycle. Le Décodeur et Emetteur d'Instructions est responsable du décodage et de la planification de toutes les instructions. Le Décodeur peut traiter une instruction par cycle et toujours dans l'ordre d'arrivée des instructions (de IFU), bien que l'Emetteur puisse planifier la plupart des instructions non dans l'ordre, selon la ressource d'exécution et la disponibilité des données d'opérande. Le Processeur Vectoriel atteint la plus grande partie de sa performance par divers trajets de données à 288 bits (figure 13) fonctionnant à 12,5ns/cycle, qui comprennent Fichier de registres à 4 ports qui peut supporter 2 lectures et 2 écritures par cycle. Huit multiplicateurs 32 x 32 en parallèle qui peuvent produire, toutes les 12,5ns, soit huit multiplications de 32 bits (en format entier ou à point flottant), ou bien seize multiplications de 16 bits ou trente deux multiplications de 8 bits. Huit ALU à 36 bits qui peuvent produire, toutes les 12,5ns soit huit opérations de ALU à 36 bits (en format entier ou à point flottant) ou seize opérations de ALU à 16 bits ou trente deux opérations de 8 bits. L'Unité de Charge et d'Enregistrement est conçue pour être en interface avec l'Antémémoire de Données par des bus séparés de données de Lecture et d'Ecriture dont chacun a 288 bits de large, comme cela est illustré à la figure 14. 2.3.4 Interruption et Exception Le Processeur Vectoriel ne reconnaît que deux conditions spéciales e Instruction CPINT (Interruption Coprocesseur) exécutée par les programmes de ARM7 Débordement Pile Matériel par suite d'instructions multiples et nichées de Saut à Sous-Routine exécutées par les programmes du Processeur Vectoriel. Veuillez vous référer au document de l'Achitecture du Processeur Vectoriel pour plus de détails sur la façon dont le Processeur Vectoriel traite ces deux conditions uniques. Toutes les autres conditions d'interruption et d'exception générées dans MCP sont exclusivement traitées par ARM7. 2.4 SOUS-SYSTÈME D'ANTÉMÉMOIRE 2.4.1 Vue générale L'Unité de Contrôle d'Antémémoire (CCU) est en interface avec le noyau de ARM7, l'Unité d'Exécution Vectorielle (LSU, IFU), la mémoire (MCU, PCI, DMA, CODEC) et les dispositifs ES (BP, UART, Temporisateur, contrôleur d'interruption). Elle est en interface à la fois avec un FBUS rapide (80 MHz) et un IOBUS lent (20 MHz). Elle devient en réalité l'unité centrale de transfert de données entre toutes les unités du noyau interne de la CPU et les dispositifs ES périphériques. Pour une meilleur image de CCU dans la puce de MSP, veuillez vous référer au schéma bloc (pages 1-10) dans la Spécification du Système MSP-lE. Afin de supporter un système d'antémémoire de très haute performance, la conception de CCU a utilisé un protocole basé sur des transactions pour supporter toutes les opérations de lecture et d'écriture. Chaque unité, si elle nécessite un accès à la mémoire, peut le demander à l'unité de contrôle de CCU. L'arbitre dans l'unité de contrôle peut accorder la demande en se basant sur une priorité fixe et retourner une transaction~id au demandeur. Le demandeur doit maintenir cette transaction~id, afin de reconnaître les données retournées quand la donnée arrive réellement. Alors que le contrôle de CCU traite la demande d'une unité (qui peut prendre plusieurs cycles s'il arrive une absence d'antémémoire), une nouvelle demande d'une autre unité peut être accordée au cycle suivant avec une transaction~id différente. De cette façon, une demande en cours ne bloquera jamais une demande subséquente d'une autre unité et on obtient une haute performance. Actuellement, CCU peut accepter et accorder une demande de lecture et une demande d'écriture simultanément dans un cycle. L'unité d'interface vers la mémoire (FBUS) se compose d'une file d'attente d'adresses à quatre entrées et d'un verrouillage de réécriture à une entrée. Au mieux, elle peut supporter une demande de regarnissage en cours (lecture) de l'antémémoire d'instructions de ARM une demande de regarnissage en cours (lecture) de l'antémémoire d'instructions de VEC, une demande d'écriture de l'antémémoire de données de VEC et une demande de réécriture de l'antémémoire de données de VEC du fait de la ligne sale d'antémémoire. L'antémémoire elle-même est également optimisée pour une haute performance. Le système d'antémémoire de MSP contient à la fois une SRAM d'antémémoire sur puce et une ROM d'antémémoire. La SRAM d'antémémoire est de plus divisée en quatre rangées différentes afin d'éviter un choc des données entre la CPU de ARM et le noyau vectoriel ou entre les instructions et les données. La ROM de l'antémémoire offre une zone d'enregistrement des données à vitesse rapide et de haute densité pour ARM7 et le noyau vectoriel. Bien que l'étiquette ne puisse être changée pour la ROM de l'antémémoire, le bit correct peut être inhibé, donc les données peuvent être reportées de la mémoire externe. En résumé, l'antémémoire sur puce contient les blocs suivants Une antémémoire d'instructions à topographie directe de lkB et une antémémoire de données de réécriture à topographie directe de lkB avec une interface de bus de données de 32 bits vers ARM7 Une antémémoire d'instructions à topographie directe de lkB avec une interface de bus à 256 bits vers l'unité d'Extraction d'Instructions de Vecteur Une antémémoire de données de réécriture à topographie de 4kB avec une interface de bus à 256 bits vers l'Unité d'Exécution Vectorielle. L'antémémoire de données est à deux ports : elle peut produire 256 bits de données de Lecture et supporter 256 bits de données d'Ecriture à chaque cycle à 80 MHz. L'antémémoire de données de VEC à 4 kB peut être configurée comme une opération dans la zone de travail sous le contrôle du logiciel. Une antémémoire à ROM d'instructions et de données intégrée et partagée à utiliser par ARM7 et le Processeur Vectoriel. L'interface vers ARM7 se fait par le même bus de 32 bits que son antémémoire d'instructions et l'interface vers le Processeur Vectoriel se fait par les mêmes 256 bits que son son antémémoire d'instructions. Cinq ports - Port de Lecture/Ecriture pour ARM7 - Port de Lecture pour l'Unité d'Extraction d'Instructions de Vecteur - Port de Lecture/Ecriture pour l'Unité de Charge/Enregistrement de Vecteur - Port de Lecture/Ecriture pour Bus ES du vecteur - Port de Lecture/Ecriture pour FBUS e SRAM de 32 x 256 bits (environ lkB) pour l'Antémémoire d'Instructions de la CPU de ARM7 SRAM de 32 x 256 bits (environ lkB) pour l'Antémémoire de Données de la CPU de ARM7 SRAM de 128 x 256 bits (environ 4kB) pour l'Antémémoire de Données du Processeur Vectoriel SRAM de 32 x 256 bits (environ lkB) pour l'Antémémoire d'Instructions du Processeur Vectoriel ROM de 512 x 256 bits (environ 16 kB) pour l'Antémémoire de Données et d'Instructions. Le contrôle de l'Antémémoire des Données de Vecteur peut se faire soit sous le contrôle du matériel ou sous le contrôle du logiciel. 2.4.2 Organisation du sous-système d'antémémoire La figure 15 donne un schéma bloc du système d'antémémoire de MSP. Elle se compose des blocs suivants IDC (antémémoire Données Instructions), ROM antémémoire, CCU~DATA~DP, CCU~ADR~DP, CCU~CTL et CCU~SM. Chaque sous-bloc sera décrit en plus de détails. 2.4.2.2 IDC L'antémémoire d'instructions et de données (IDC ; voir figure 16) est la mémoire SRAM mono puce que l'on utilise pour desservir les accès d'antémémoire d'instructions et de données. Elle se compose de quatre blocs de mémoire en une rangée : ARMIC (lkB), ARMCDC(lkB), VECIC (lkB), et VEC~DC (4kB). Dans tout cycle, elle peut accepter une demande de lecture et une demande d'écriture. La RAM d'étiquette a deux ports de lecture. L'adresse du port de lecture et l'adresse du port d'écriture peuvent être comparées avec les étiquettes d'antémémoire internes pour une condition de correspondance ou d'absence d'information dans l'antémémoire. La RAM de données n'a qu'un port de lecture, auquel on accède par l'adresse du port de lecture. La RAM d'étiquette et la RAM des données peuvent également être écrites en utilisant un ensemble différent d'adresse d'écriture. Par conséquent, quatre groupes de signaux de sélection de rangée d'antémémoire et trois groupes d'index de ligne sont nécessaires pour accéder à la série d'antémémoires. IDC a les caractéristiques suivantes Topographie directe dans le but de réécriture Grandeur d'une ligne d'antémémoire de 64B mais la largeur des données n'est que de 32B, ce qui est également la grandeur des données vectorielles de la puce de MSP Chaque ligne a deux bits corrects, un pour le vecteur haut et un pour le vecteur bas. De plus, l'antémémoire de données a deux bits sales, un pour chaque vecteur. La grandeur de l'étiquette est de 22 bits (bit adresse 10 - bit 31) pour ARM~IC, ARM~DC, et VEC~IC. Elle a 20 bits (bit adresse 12 - bit 31) pour VEC~DC. Les bits d'index de ligne sont 5 bits (bit adresse 5 - bit 9)pour ARM~IC, ARM~DC et VEC~IC. Il y a 7 bits (bit adresse 5 - bit 11) pour VEC~DC. On peut reconfigurer VECoC (4kB) en tant que zone de travail sous le contrôle du logiciel. Le signal V~CLEAR est utilisé pour remettre globalement à l'état initial le bit correct de la ligne d'antémémoire en une fois. Dans le futur, V~CLEAR remettra sélectivement à l'état initial uniquement des rangées individuelles. 2.4.2.3 Pipeline trajet de données Voir figure 17 2.4.2.4 Pipeline trajet d'adresses Les trajets des données (DP) pour le pipeline de traitement d'adresses sont montrés à la figure 18. DP ADRESSES CCU 2.4.3 Interface 2.4.3.1 Type données CCU traite différents types de données de diverses unités demandantes comme cela est illustré au Tableau 15. TABLEAU 15 OPERATION DE CCU DANS LE TRAITEMENT DE DIVERS TYPES DE DONNEES Unité Type donnée Lecture/ opération CCU Ecriture ARM octet, mot lecture Adresse octet sur limite octet, adresse mot sur limite mot. I1 y a ui~cache et ud cache entre ARM et IDC. Toute absence d'information dans u cache reportera toujours les données de 32B (alignées) pour regarnir les u~caches. Une absence d'information dans IDC aura pour résultat un regarnissage de IDC par SDRAM externe. Deux opérations de réécriture (double) sont possibles si les deux vecteurs sont sales. Seule une donnée de 32B est reportée pour le regarnissage (simple regarnissage) de l'antémémoire de ARM. Unité Type donnée Lecture/ opération CCU Ecriture ARM octet, mot écriture L'alignement des adresses est le même que dans le cas de la lecture. Toute écriture dans ARM qui frappe ud~cache invalidera toujours ud~cache. Les données resteront bien alignées, avec la validation de l'octet approprié revendiquée avant écriture dans IDC. Pour une absence d'écriture avec antémémoire en circuit, la donnée d'écriture sera enregistrée dans wr~data~bufl. Des opérations double WB sont possibles si les deux vecteurs sont sales. Après avoir reporté les données de 32B de la mémoire, CCU initialisera une écriture vers IDC et marquera le vecteur comme étant sale. Pour une écriture avec 1'antémémoire hors circuit, les données seront enregistrées dans mem wr fat (64B). La demande sera postée à l'un des emplacements de la file d'attente d'adresses. Comme la donnée est plus faible que 8B, on utilisera un protocole d'écriture partielle par Fbus. IFU vecteur lecture L'adresse de IFU est toujours alignée par les mots. Chaque demande ramènera les données de 32B (en alignement) soit de IDC ou de SRAM externe. LSU scalaire lecture (octet, demi-mot, mot) ES 2.4.3.2 Interface ARM Le noyau de la CPU de ARM7 fonctionne à la moitié de la fréquence (40 MHz) tandis que CCU fonctionne à la pleine fréquence (80 MHz) de la puce de MSP. La synchronisation entre ces deux horloges est importante dans la conception. En règle générale, une unité génératrice de signaux d'horloge ne commutera MCLK qu'au flanc montant de CLKI. De même, le signal global de remise à l'état initiale, qui est lié à ARM7, ne sera plus revendiqué uniquement quand CLKI et MCLK seront à l'état bas. De cette manière, les deux unités seront bien synchronisées. Bien que ARM7 n'ait qu'un bus d'entrée (ARMDATA ) pour l'instruction et la donnée, la puce rasp est équipée d'une antémémoire d'instructions spécialisée (ARM~IC, IkB) et d'une antémémoire de données (ARM~DC~, lkB). CCU peut faire la distinction entre ces deux types de demande en utilisant ARM~NOPC. Pour mieux améliorer la performance, à CCU est ajoutée une micro antémémoire d'instructions (UI~CACHE, 32B) et une micro-antémémoire de données (UD~CACHE, 32B) devant se trouver entre l'antémémoire principale et le noyau de ARM7. Ces antémémoires contiennent chacune 8 mots de code et données séquentiels. Chacune de ces micro-antémémoires contient sa propre étiquette (27 bits), ses comparateurs d'étiquettes et son bit correct. Pendant la remise à l'état initial du système, ces bits corrects sont tous effacés. Les micro-antémémoires de ARM7 fonctionnent plus comme un tampon de pré-extraction qu'une antémémoire réelle. Pendant une lecture de ARM7, l'adresse (ARM~A ) est toujours comparée à l'étiquette. Une correspondance relira l'instruction ou la donnée à travers ARM~DATA . Une absence d'informations dans la micro antémémoire enverra alors la demande à CCU, en même temps que l'information d'adresse, du type de donnée et autre information de contrôle. La logique d'arbitrage de CCU accordera la demande de toutes les unités formulant une demande de lecture. Actuellement, ARM7 a la plus forte priorité par rapport à d'autres blocs pour obtenir l'accord. Cela est dû au fait que ARM7 formule des demandes relativement rarement à moins que sa micro-antémémoire n'ait une absence d'information. Cependant, CCU pourrait avoir des cycles internes de maintien pour desservir des conditions demande de cycles multiples ou de file d'adresses pleine. Pendant cette période, aucune demande extérieure ne sera accordée. L'écriture à partir de ARM7 invalidera toujours UD~CACHE si l'adresse atteint UD~TAG. Aucune tentative n'est faite pour concevoir UD~CACHE comme une antémémoire d'écriture ou de réécriture. En forçant l'invalidation dans la correspondance d'écriture de UD~CACHE, la constance des données est maintenue entre ARM~DC et UD~CACHE. CCU contrôle arm~nwait tout en effectuant la demande de lecture ou d'écriture pour ARM~IC ou ARM~DC. En général, CCU ne retient pas arm~nwait pendant l'écriture. Quand la demande d'écriture est accordée sans voir ccu~write~hold2, ARM7 entraîne simplement la donnée dans ARM~DATA dans le cycle suivant. CCU a un tampon d'écriture interne pour contenir les données. ARM7 peut continuer l'exécution des instructions. Cependant, CCU maintient toujours arm~nwait pendant un cycle, même si la donnée réside dans l'antémémoire principale. Si la demande de lecture manque dans l'antémémoire principale plus de cycles seront maintenus jusqu'à ce que les données retournent de la mémoire extérieure principale. La machine d'état d'interface ARM~CCU que l'on peut voir à la figure 19 illustre la condition selon laquelle CCU contrôle arm~nwait. Sur la figure 19 DEPART : Etat de départ pour la machine d'état si aucune demande ou bien aucune donnée de lecture n'est retournée, ou une donnée d'écriture sans maintien. MAINTIEN : CCU accorde la demande de ARM7 pour la lecture ou l'écriture mais révoque l'accord avec le signal de maintien. ETIQUETTE : CCU vérifie l'étiquette avec l'adresse de lecture. ABSENCE : Adresse de lecture a une absence et CCU envoie une demande de regarnissage à une DRAM externe. DONNEES : La donnée de lecture revient et CCU la mène à la micro-antemémoire de données. 2.4.3.3 Interface FBUS La Machine d'Etat d'Interface CCU~FBUS (F SM) est montrée à la figure 20. Sur la figure 20 INACTIVITE : Etat d'inactivité REQ : Demande d'écriture ou de lecture vers arbitre FBUS GRTl : Grandeur accord plus grande que 8B GRT2: Grandeur accord plus grande que 16B GRT3 : Grandeur accord plus grande que 24 GRT4 : Données d'entraînement pour le dernier cycle La Machine d'Etat de Récepteur de Données (D SM) est montrée à la figure 21. Sur la figure 21 INACTIVITE : Etat d'inactivité UN : Recevoir la 1ère donnée de 8B de Fdata DEUX : Recevoir la 2ème donnée de 8B de Fdata TROIS : Recevoir la 3ème donnée de 8B de Fdata QUATRE : Recevoir la 4ème donnée de 8B de Fdata REGARNISSAGE : Regarnir IDC avant retour des données au demandeur. PRET : Prêt pour retourner la donnée au demandeur 2.4.4 Opérations DE LECTURE et D'ECRITURE Les machines d'état de lecture et d'écriture sont montrées à la figure 22. 2.4.4.1 Opération de lecture IDC (Antémémoire d'Instructions et de Données) dans MSP fonctionne en 3 stades de cycles du pipeline Cycle de Demande, cycle d'Etiquettes et cycle de Données. Dans le cas d'une correspondance d'antémémoire, DC peut retourner l'instruction ou la donnée dans chaque cycle. L'Unité de Contrôleur d'Antémémoire (CCU) accomplit un arbitrage parmi ARM7, l'unité du Processeur Vectoriel, Fbus et IObus pour l'accès à SRAM de l'antémémoire. CCU surveille les demandes du bus de ces quatre maîtres et accorde le bus au gagnant avec un numéro ID spécifique. CCU génère également les signaux de contrôle du bus d'adresses d'antémémoire et de lecture/écriture pour accéder à l'antémémoire et faire la comparaison des étiquettes. S'il y a une correspondance dans l'antémémoire, le bus maître qui gagne l'arbitrage est capable d'accéder à l'antémémoire pour une opération de lecture/écriture. S'il y a une absence d'information dans l'antémémoire, CCU servira le bus maître suivant qui a fait une demande sans attendre que les données manquantes reviennent de la mémoire principale. Ainsi, le bus maître qui a une absence dans l'antémémoire doit maintenir le numéro ID. Ultérieurement, si la donnée demandée est dans l'antémémoire, CCU enverra le signal ACCORD au bus maître de données absentes avec le même numéro ID. Ce bus maître peut recevoir les données ou ignorer les données. Quand il y a une absence d'information dans l'antémémoire, une extraction de ligne est accomplie pour obtenir la donnée de la mémoire principale. La grandeur d'une ligne est définie comme 64 octets, donc CCU exécutera 8 accès consécutifs dans la mémoire (64 bits chacun), pour obtenir les données de la mémoire principale vers l'antémémoire. Cycle de demande CCU acceptera la demande de lecture de diverses unités (ARM, IFU, LSO, ES) dans CLK1. Le demandeur revendiquera le signal de demande (lsu~req) et le signal de lecture/écriture (lsurw) au début de CLKî. A la fin de CLK1, CCU accordera l'une de ces demandes de lecture en sortant ccugrant~id[9:0]. Si ccu~grantid [9:6] correspond à unit~id du demandeur, la demande est accordée. Le demandeur doit verrouiller ccu~grant id[5:0] car c'est id de la transaction en association avec la demande. Si la demande est accordée, le demandeur doit entraîner l'adresse (lsuadr[3 1:01) et autres informations de contrôle vers CCU, comme une opération cache~off (antémémoire~hors circuit) (lsu~ccu~off) et le type de donnée (lsu~vec~type[1:0], lsu~data~type[2:0]) dans CLK2. Si ccu~rd~hold~2 n'est pas revendiqué à la fin de CLK2, la demande est totalement prise par CCU et les données demandées sont retournées un peu plus tard. Cependant, si ccu~rd~hold~2 est revendiqué, le demandeur doit continuer à entraîner les informations d'adresse et de contrôle comme si la demande accordée dans CLK1 était révoquée. Au cycle suivant, il n'est pas nécessaire d'effectuer de nouveau la même demande de lecture car toute l'information précédente grand~id est encore correcte. ccu-rd hold 2 restera constant dans CLK1 jusqu'à suppression de la revendication par CCU dans CLK2. ccu~rd~hold~2 est un signal de temporisation critique. On l'utilise pour informer le demandeur que CCU est occupée à traiter d'autres choses dans le cycle présent et que la demande accordée ne peut être traitée à ce moment. Cycle d'étiquettes Si la demande est accordée et n'est pas révoqué CCU ne traitera aucune nouvelle demande de lecture mais retentera la comparaison d'étiquettes avortée. Comme chaque ligne d'antémémoire (64B) contient deux vecteurs, le bit correct du vecteur accédant doit être correct afin d'obtenir une correspondance des étiquettes. Pour une lecture de données à vecteur double (64B), les deux bits corrects doivent être corrects afin d'obtenir la correspondance des étiquettes. Une opération cc~off provoquera toujours une absence d'étiquette et la demande sera postée dans la file d'attente d'adresses. Cycle de données C'est le cycle où CCU retourne les données au demandeur. Les données seront placées sur ccu dout[127:0] avec les 16B bas entraînés dans CLK1 et les 16B hauts entraînés dans CLK2. Pour la demande de donnée de 64B, un cycle additionnel est utilisé pour finir le transfert. CCU entraînera toujours ccu dataid[9:0] un demi-cycle plus tôt (CLK2) pour informer le demandeur que les données seront retournées à CLK1 qui suit. Le demandeur doit toujours comparer ccu~data~id[9:0] pour la donnée bien retournée. De plus, une correspondance des étiquettes est toujours utilisée comme indication des données retournées. S'il y a une absence d'étiquette dans le cycle d'étiquettes et que la file d'attente d'adresses n'est pas pleine, CCU commence une extraction de ligne d'antémémoire en postant l'adresse absente, l'information id et autre information de contrôle dans la file d'attente d'adresses à quatre entrées dans CLK1. Actuellement, chaque file d'attente d'adresses contient environ 69 bits d'information. Dans CLK2, le verrouillage d'adresse de mémoire sera chargé de façon que la demande de FBUS puisse être faite dans CLK1 suivant. 2.4.4.2 Opération d'écriture L'opération d'écriture dans IDC s'effectue également en trois stades de cycles du pipeline : cycle de Demande, cycle d'Etiquettes et cycle d'Ecriture de Données. Dans le cas d'une correspondance d'adresses d'écriture, IDC est capable d'écrire les données dans la série de données d'antémémoire dans chaque cycle. Cycle de Demande CCU acceptera la demande d'écriture de diverses unités (ARM, LSU, ES) dans CLKî. Le demandeur revendiquera le signal de demande (lsureq), le signal de lecture/écriture (lsu~rw), et le type du vecteur (lsu~vec~type[1:0]) au début de CLKî. A la fin de CLK1, CCU accordera l'une de ces demandes d'écriture. L'accord d'écriture vers différentes unités se fait en revendiquant un signal d'accord (ccu~lsu~wr~accord) directement à l'unité demandant. Il n'est pas nécessaire que l'unité de demande reçoive transaction~id de CCU, car aucune donnée n'est retournée. Dans CLK2, le demandeur doit fournir l'adresse (lsu~adr~[31:0]), le signal cl off (lsu~cc~off), et le type de donnée (lsutype~Donnée[2:0]). Comme dans le cas de la lecture, CCU peut revendiquer ccu wr hold~2 à proximité de la fin de CLK2 pour informer le demandeur que bien que l'accord ait été donné, il ne peut être traité dans ce cycle. Le demandeur doit maintenir l'adresse d'entraînement signal cc~off, et l'information du type de donnée jusqu'à fin de la revendication de ccu wr hold-2. Alors, au cycle suivant, le demandeur fournira la donnée d'écriture à ccu~dout[127:0]. Cycle d'étiquettes Si la demande est accordée et n'est pas révoquée ultérieurement dans le cycle de demande, elle entrera au stade de comparaison d'étiquettes de l'accès d'antémémoire. C'est la comparaison d'étiquettes d'adresse du port d'écriture. CCU utilisera l'adresse (lsu~adr[11:53) et le signal de sélection de bloc (demandeur) pour effectuer la sélection de ligne pour l'antémémoire. Le signal de la correspondance d'étiquettes (ccu lsu hit~2) sera connu vers la fin de CLK2. cc~off~write provoquera toujours une absence d'étiquette et la donnée d'écriture sera placée sur FBUS pour une écriture externe. Le demandeur doit commencer à entraîner la donnée vers ccu~din[143:0] avec les 16B bas dans CLK1 et les 16B supérieurs dans CLK2. Pour un transfert de données de 64B, le demandeur prendra un cycle additionnel pour entraîner les données. Il faut noter que CCU a un verrouillage de données d'écriture interne pour maintenir cette donnée. Que cette écriture atteigne l'antémémoire (prenne un ou deux cycles pour écrire réellement les données dans l'antémémoire) ou manque l'antémémoire (cela peut prendre quelques cycles pour écrire les données), le demandeur doit maintenant considérer que l'écriture est finie. Cycle d'écriture de données C'est le cycle où CCU écrit réellement la donnée dans l'antémémoire pour le cas de correspondance d'antémémoire. S'il y a une absence d'étiquette dans le cycle d'étiquettes, CCU la traitera différemment selon le type de donnée. Si le type de donnée est de 32B et que la ligne est propre (les deux vecteurs sont propres), CCU réécrira simplement sur la ligne existante avec la nouvelle étiquette et la nouvelle donnée. Elle marquera également le vecteur précédent comme étant correct et sale tout en laissant l'autre vecteur sur la même ligne comme non correct. Si le type de la donnée est de moins de 32B, cela devient l'écriture de donnée partielle. Ces données partielles seront maintenues sur un registre temporaire. CCU sortira pour extraire la demi-ligne manquante (32B) de la mémoire et la recharger dans l'antémémoire. La donnée partielle s'écrira alors dans la ligne d'antémémoire avec les signaux appropriés de validation d'octet. Pour toute absence d'écriture avec une ligne d'antémémoire sale, CCU retirera d'abord la ligne sale. Comme la donnée sale n'est pas encore disponible, CCU revendiquera le maintien à la logique d'accord de façon qu'aucune demande de lecture ou d'écriture ne soit accordée. Elle commencera alors une lecture interne en utilisant l'adresse de la ligne sale pour extraire la donnée de ligne sale d'antémémoire. Eventuellement, l'adresse de réécriture et la donnée sortiront de la mémoire. 2.4.5 Modèle de Programmation Le Sous-système d'Antémémoire est totalement contrôlé en matériel par l'utilisation des instructions de Charge et d'Enregistrement et, par conséquent, ne nécessite aucun registre visible du logiciel. 2.4.6 Format d'adresse de IDC et ROM montré à la figure 23 CHAPITRE 3 Description de IO BUS Ce chapitre décrit la spécification de IOBUS vue par les concepteurs du matériel. 3.1 Vue générale IOBus est conçu pour des dispositifs "Périphériques Standards" lents à utiliser par le système. Ce bus servira d'interface principale entre l'Unité de Contrôle d'Antémémoire de MSP (CCU), le Processeur du Train de Bits (BSP) et tous les autres dispositifs Périphériques ES comme le Temporisateur/contrôleur d'interruptions et UART. Le format du bus est très similaire au bus ES de Intel. Il y a une logique de contrôle arbitre du bus qui surveille constamment le bus pour des demandes et génère un accord approprié de demande en utilisant un schéma à tour de rôle. Un bus maître potentiel doit toujours revendiquer la demande du bus et attendre que l'accord du bus soit revendiqué avant de prendre la relève du bus. Le bus maître doit toujours entraîner les lignes d'adresse et de contrôle pendant la durée du cycle selon le protocole. IObus est un bus TOTALEMENT synchrone fonctionnant à 40 MHz. Tous les accords sur IOBUS de MSP se produisent un cycle après échantillonnage de la demande comme étant active. Ce bus peut traiter des transferts jusqu a 16 octets de données sur quatre cycles (salve de quatre). Cela est accompli en utilisant les deux bits de grandeur qui indiquent à l'arbitre du bus la grandeur de transfert requise par le bus maître. IOBus a un multiplexeur d'adresse et de donnée de 32 bits. L'adresse apparaît toujours avant la donnée. Le signal ION ALE (validation verrouillage adresse) est utilisé par les dispositifs récepteurs pour verrouiller l'adresse. Tout bus sollicitant prendra un transfert de 32 bits, même si un dispositif de 8 bits est connecté au bus. Par convention normale, un dispositif de 8 bits utilisera les 8 bits inférieurs [7:0] du bus et un dispositif de 16 bits utilisera les 16 bits inférieurs [15:01] du bus. Si un dispositif de 16 bits veut communiquer avec un dispositif de 8 bits, il doit placer les données correctes sur les 8 bits inférieurs du bus pour que le dispositif à 8 bits voit et verrouille les données et ainsi de suite. S'il y a des demandes multiples dans la même période, les demandeurs qui n'ont pas l'accord doivent toujours maintenir leur demande jusqu'à ce qu'elle soit accordée par l'arbitre de l'IOBus. Il y a de nombreux "cycle de sollicitation du bus" par demande qui sont permis dans ce schéma, jusqu'à un maximum de transfert de 4*32bits (16 octets). Un transfert de bloc doit toujours se répartir en des transferts multiples de 32 bits. Tous les accords de Bus sont générés par l'arbitre de IO Bus. Cependant, il y a une logique de décodage en parallèle qui surveille constamment l'adresse (quand elle est Correcte) et génère les sélections appropriées de puce (au Cycle d'Horloge suivant) vers la destination. La sélection de puce sera TOUJOURS correcte pour un seul cycle et quand l'adresse est revendiquée pour TOUTES les demandes de Lecture et d'Ecriture. Chaque noeud de IO bus aura une sélection spécialisée de puce comme entrée. Veuillez vous référer à la description des Broches et aux Diagrammes des Temps. L'information de Grandeur de 2bits doit être générée par le maître après avoir été ACCORDEE par l'arbitre du bus et doit être CORRECTE pour deux cycles de bus qui suivent. L'esclave sélectionné DOIT capturer l'Information de Grandeur quand CS est revendiqué pour déterminer les cycles de transfert du bus. Que ce soit Lecture ou Ecriture, l'Arbitre de IOBus garde également une trace de la grandeur du transfert pour déterminer le moment où le cycle du bus est fait avant de commencer à rechercher une(des) nouvelle(s) demande(s). Veuillez noter qu'il n'y a pas de "ESPACE" entre les données d'un transfert de bus par Salve (que ce soit lecture ou écriture). Pour des transferts de lecture de donnée, un signal PRET est utilisé pour indiquer au demandeur le moment où la donnée est correcte et pour commencer son verrouillage. Cet état prêt est produit par le bus maître et les esclaves. Afin d'être en accord avec ce protocole, tous les noeuds de IO Bus doivent former une interface de IO Bus avant traitement de la demande. Cette interface doit être en accord avec les spécifications. GRANDEUR DESCRIPTION 2'b00 Défaut - Grandeur transfert = 4 octets (1 cycle de 32 bits) 2'b01 Grandeur transfert = 8 octets (deux cycles de 32 bits) 2'b10 Grandeur transfert = 12 octets (trois cycles de 32 bits) 2'b1 1 Grandeur transfert = 16 octets (grandeur maximale pour 4 cycles) 3.2 Description des broches Dans ce qui suit, on donne la définition des signaux d'adresse, de données, et de contrôle pour IOBus du système, comme cela est vu par le bus maître. Voir également figure 24 montrant la définition de la structure de IOBUS. Comme mentionné précédemment, IOBus est un bus de données d'adresses en Multiplex. "xxx" est un code à trois lettres identifiant le nom du demandeur (ccu, bsp,urt, tmr, int). Définition signaux lOBus du système Nom signal Grandeur Direction Commentaires IOBus IOBus [31:0] 32 Bi-direction Bus adresses et données en multiplex et bi-direction 32 bits IOB~rd~1 1 Entrée/sortie Bas actif. Maître sortie esclave entrée IOB~wr~1 1 Entrée/sortie Bas actif. Maître sortie esclave entrée IOB~ready~1 1 Entrée/sortie Bas actif. Notifie au maître quand la donnée est disponible pour une lecture (en mode esclave). Maître entrée esclave sortie IOB cs xxx~1 1 Entrée Sélection dispositif, bas actif. Cela est utilisé pour traiter la demande quand l'ardresse est verrouillée IOB~ale~1 1 Entrée Bas actif, spécifie quand l'adresse est stable. Arbitre sortie maître/esclave entrée IOB~req~xxx~1 Sortie Bas actif, Demande pour prendre le contrôle de IOBus pour devenir maître IOB~tsize(1:0) 1 Entrée/sortie Grandeur transfert : 4/8112116 octets. Maître sortie, esclave entrée IOB~grant~xxx~1 2 Entrée Accord IOBus de l'arbitre de l'IOBus, permet à ce dispositif de demande de devenir maître de l'IOBus. Bas actif. Remise à l'état 1 Entrée Bas actif, remise à l'état initial initial du système CIK40M 1 Entrée Horloge bus 40MHz 3.3 Description logique L'Unité de Contrôle d'Arbitrage de IOBus est montrée à la figure 25. 3.4 Temporisations IOBus La temporisation de Lecture de IOBus (grandeur transfert = 1 mot (4 octets)) est montrée à la figure 27. La temporisation d'Ecriture de IOBus (grandeur transfert = 1 mot (4 octets)) est montrée à la figure 2. La temporisation de Lecture de IOBus (grandeur transfert = 4 mots (16 octets)) est montrée à la figure 28. La temporisation d'Ecriture de IOBus (grandeur transfert : 4 mots (16 octets)) est montrée à la figure 29. CHAPITRE 4 Description de FBUS Ce chapitre décrit la spécification de =BUS vu par les concepteurs du matériel. 4.1 Vue générale Le contrôleur de mémoire, PCI, Asic du Client et le sous-système d'Antémémoire seront en interface avec le bus du système "Fbus" via une ligne non multiplexée de bus d'adresses et de données. Il y aura une logique de contrôle d'arbitrage de Fbus Central qui surveillera les demandes et générera les accords en utilisant un certain schéma de priorité. Les Bus maîtres (source adresse et donnée) revendiqueront toujours la demande du bus et attendront l'accord. NORMALEMENT, l'accord se produira pendant le MEME cycle que la demande si le bus n'est pas utilisé par un autre maître/esclave (tous les accords sont générés combinatoirement). Quand l'accord du bus est reçu par le maître, les lignes adresses/données/contrôle sont envoyées au cycle suivant. Un signal "donnée prête" suivra toujours la donnée réelle pour indiquer au récepteur qu'il doit commencer à verrouiller le cycle suivant. Pour utiliser la largeur de bande maximale du bus, QUATRE (4) demandes consécutives peuvent être reçues/envoyées dans un pipeline, dos à dos, et afin de desservir les quatre demandes, une "FIFO de demande" sera nécessaire. Le contrôleur de mémoire aura une FIFO de demande profonde de quatre (4) et une FIFO de demande profonde de deux (2). Du fait de cette nature du protocole, un signal "AF~FULL" et "DF~FULL" sera nécessaire. Ce sont, respectivement : FIFO Adresses Pleine et FIFO Données Pleine. La largeur des données de Fbus sera de 8 octets (64 bits) et d'adresse de 32 bits. Fbus supportera le transfert de données de 8,16 et 32 octets en utilisant les bus Grant COUNT et Req Size. Chaque unité de Fbus aura une logique de contrôle pour demander le bus. Cette logique diffèrera d'une unité à l'autre, selon les applications (Mémoire/PCI/Antémémoire etc..). Cependant, l'unité réelle d'arbitrage du bus sera la même dans chaque unité et sera dupliquée dans tous les sousmodules. Cette unité servira d'agent entre les Maîtres/Esclaves de bus externes et la logique d'unité interne. Par exemple, dans le cas du contrôleur de mémoire, quand CAS est tombé "activé", le contrôleur de mémoire revendique une demande interne via la logique d'arbitrage de Fbus via un signal interne indiquant la nécessité d'utiliser Fbus. En réponse à cette demande, le contrôleur de Fbus revendiquera une demande pour le système, externe à la logique du contrôleur de mémoire, et attendra l'accord. Après réception de l'accord, Adresse/Données/Contrôle sera envoyé de la première entrée des FIFO de réponse et de données dans le contrôleur de mémoire. Des demandes du système vers le contrôleur de mémoire peuvent être partout entre un Octet et la grandeur maximale de 32 Octets. Pour des grandeurs de demande au-delà de 32 octets, le demandeur/source initialisera des demandes multiples en utilisant les bits "GRANDEUR" de Fbus. Cela sera réalisé du fait de la limite du bus de mémoire SDRAM (1 ou 2 SDRAM SAMSUNG de 1M x 16). Les SDRAM seront programmées pour une longueur de bouclage de huit (8) pour obtenir la totalité des 32 octets requis par le reste du système. Pour des demandes de moins de 32 octets, TOUS les 32 octets seront extraits de SDRAM mais seul le nombre souhaité d'octets sera envoyé à destination. I1 y aura également un bus ID du Demandeur de dix (10) bits qui sera correct avec le signal "sélection puce" (même cycle que adresse/donnée). Tout les noeuds de Fbus généreront un "ID destination" de 3 bits pour l'arbitre de Fbus. Ces 3 bits seront corrects avec la demande et indiqueront la destination de la demande. Les bits de destination ID [1:0] sont décodés à partir de ID du demandeur entrant comme suit ID Demandeur [9:6] Source Destination (ID9I:0) 0000 Réservé N/A 0001 ARM7 N/A 0010 FU N/A 0011 LSU N/A 0100 CCU 00 0101 ASIC 11 0110 MEM 01 0111 PCI 10 lxxx Réserve Le bit ID de destination [2] sera utilisé pour indiquer un état de demande de LECTURE/ECRITURE. Cela aidera l'arbitre de Fbus à faire la différence entre les demandes d'adresse seule (lecture) et les demandes d'adresse/donnée (écriture). Normalement, les bits de Compte d'Accord "grCNT[1:O]" indiquent le nombre de cycles de Fbus où le demandeur a besoin du bus. Pour des demandes dos à dos, les demandes indiqueront pour le bus maître la longueur de la demande. Le contrôleur de Fbus maître revendiquera les accords selon les 2 bits de Compte d'Accord. Fbus est un bus à transaction divisée qui supporte des lectures inscrites. Cela signifie que le demandeur demande le bus et une fois accordé, il entraînera l'adresse et finira la transaction. Un peu tard, la source esclave/donnée retournera la donnée en utilisant ID de destination et retournera la même demande 112) vers le demandeur. Cette caractéristique améliore la largeur de bande du bus de façon significative et permet à d'autres maîtres d'utiliser plus rapidement le Fbus. Veuillez vous référer aux diagrammes des temps pour plus de détails. 4.2 Description des broches Ce qui suit donne les signaux d'adresse, de données et de contrôle de Fbus du système. Comme mentionné précédemment, Fbus est un bus d'adresses/données NON multiplex. "xxx" est un code à trois lettres identifiant le nom du demandeur (mem, pci, asc, ccu). TABLEAU 16 : DEFINITION DES SIGNAUX DE FBUS DU SYSTEME Nom signal Grandeur Direction Commentaires Fbus Faddr[31:0] 32 Bi-direction Bus adresses 32 bits sur lignes séparées d'adresses Fdata[63:0] 64 Bi-direction Bus données 64 bits double pompage Frd wr 1 1 Bi-direction "1" # lecture, "0" # écriture Fxxx cs 1 1 Entrée Sélection puce, bas actif Fdrdy i 1 Bi-direction Signal donnée prête, correct un cycle avant donnée réelle. Seulement revendiqué par source de données. Bas actif Freq~ID 10 Bi-direction Demande ID qui précède la donne. Ces signaux ont la même cadence que les bits du signal Fd ~rdy [9:6] # bits ID demandeur [5:0) # ID transaction Fxxx reg 1 1 Sortie Demande Fbus source. Bas actif Fxxx~grCNT 2 Sortie Compte accord Fbus qui est correct avec demande pour indiquer les cycles pour lesquels un accord est nécessaire. Fxxx~grant~1 1 Entrée Accord Fbus de l'unité Arb Central. Bas actif Nom signal Grandeur Direction Commentaires Fbus Fxxx~did 3 Sortie ID destination Fbus. Ce signal est entrainé avec la demande pour indiquer à l'arbitre de Fbus Principal quel CS il faut produire Fxxx~did[1:0] ==ID destination Fxxx~did[2]==état lecture/écriture (0#écriture, 1# lecture) Fxxx~afull 1 Sortie FIFO adresses est pleine. Ce signal sera revendiqué quand il y aura (n-1) entrées correctes dans la FIFO. Haut actif Fxxx~dfull 1 Sortie FIFO données est pleine. Ce signal sera revendiqué quand il y aura (n-l) entrées correctes dans la FIFO. Haut actif f~reset~1 1 Entrée Remise état initial Fbus synchrone bas actif Fclk 1 Entrée Horloge bus 80 MHz Fpr wr 1 1 Entrée Indicateur écriture partielle. En utilisant ce signal, le récepteur peut déterminer la grandeur de l'octet dans chacun des 8 octets. Ce signal est utilisé en conjonction avec Freq sizel7 0l Freq~size 8 Bi-direction Grandeur Transfert ( octets, 32 octets, 64 octets, 128 octets)* * doit décoder la définition de la table pour RMW. La figure 30 illustre la circulation dans Fbus de Demande de Lecture en Mémoire. La figure 31 illustre la circulation dans Fbus de Demande d'Ecriture en Mémoire. La figure 32 illustre la circulation dans Fbus de Demande Maître/Esclave "Non Mémoire". La figure 33 illustre l'unité de contrôle d'arbitrage centralisée de Fbus. Les figures 34, 36 sont un Diagramme des Temps de Fbus. La figure 34 illustre la temporisation de Fbus de demande d'écriture en mémoire. (un transfert de données de 8 octets est montré. Pour 16/32/64/128 octets, des cycles de données multiples seront utilisés). La fig. 35 illustre la temporisation de Fbus de demande de lecture en mémoire (grandeur transfert : 8 octets). La figure 36 illustre les demandes d'écriture en mémoire dos à dos (grandeur transfert 32 octets). CHAPITRE 5 Bus PCI Ce chapitre décrit la spécification du NOYAU de PCI et de la logique de colle de PCI qui est en interface avec Fbus interne. 5.1 Vue Générale Le contrôleur de PCI de MSP-IE est conçu pour être en accord avec la spécification du Bus PCI, Révision 2.1. Veuillez vous référer à cette spécification standard pour plus de détails. L'unité de PCI contient deux sections principales : le noyau de PCI et la logique de "colle" de Fbus. Le noyau de PCI est principalement une interface avec les dispositifs externes de PCI fonctionnant à la vitesse du bus PCI qui est de 33 MHz. La logique de "colle" de Fbus est en interface avec Fbus de SAMSUNG qui fonctionnera à 80 MHz. Cette logique de colle est en interface entre le noyau de PCI et Fbus. La synchronisation des vitesses est obtenue en utilisant des FIFO aux deux extrémités des sous-blocs. Le noyau de PCI de SAMSUNG contient également la logique de Tampon de Trames Virtuelles et tous les registres de VFB requis pour une interface avec ARM7 via Fbus. Une caractéristique spéciale qui est unique à cette unité de PCI est la manipulation de l'Interruption à partir de la puce de MSP de CPU de l'Hôte et de la puce de MSP à CPU de l'Hôte. Cela est décrit plus amplement dans ce chapitre. 5.1.1 Schéma bloc du noyau de PCI de SAMSUNG montré à la figure 37 5.2 Logique d'Interface de FBUS de PCI (figure 38) Ce sous-bloc du noyau de PCI est en interface avec Fbus interne de MSP et le noyau des micro-PCI de SAND. L'adresse et les données sont stockées dans les FIFO aux deux extrémités (ie du noyau de PCI et de FBUS). Ce sous-bloc est également responsable de la synchronisation des signaux de PCI avecl'Horloge de Fbus et vice versa. La logique du noyau de PCI peut être un FBUS maître et un dispositif esclave. La plus grande partie des accès sera dirigée vers la mémoire SDRAM locale via FBUS à 64 bits. Veuillez vous référer au chapitre de FBUS pour une description du protocole de FBUS. La logique de contrôle de FBUS de PCI contient également les registres du tampon de trames virtuelles et le contrôle. Ces registres sont programmés par ARM7 via le FBUS. Veuillez vous référer aux schémas blocs. 5.3 Logique de VFB de PCI La figure 39 est un schéma bloc de VFB. La figure 40 montre les registres de FFB. 5.4 Logique du noyau de PCI Le noyau de PCI de MSP est totalement en accord avec les spécifications 2.1 de PCI. Les seules additions qui ont été effectuées étaient le nombre de registres ajoutés pour l'Interruption et la remise à l'état initial de MSP du Logiciel. Le logiciel dans ARM7 peut interrompre la CPU de l'Hôte en établissant la Demande d'Interruption de l'Hôte de PCI à partir de MSP (bit ) du Registre de Contrôle de MSP. Cela forcera la logique du noyau de PCI à interrompre la CPU de l'HOTE en revendiquant la broche d'interruption dans le bus de PCI (INTA&num;). La CPU de l'hôte reconnaîtra alors l'interruption par la Reconnaissance de l'Interruption de l'Hôte de PCI (bit ) dans le Registre de Contrôle de MSP. Cela forcera la ligne d'interruption à passer à l'état inactif. Le noyau de PCI de MSP peut également accepter une interruption de CPU de l'HOTE, qui est à la base une interruption pour ARM7. Comme la spécification de PCI ne supporte aucune broche d'entrée d'interruption, la Demande d'Interruption de MSP de l'Hôte (bit ) dans le Registre de Contrôle de MSP est utilisée pour produire cette fonction. La CPU de l'HOTE peur établir ce bit pour initialiser une interruption à ARM7. ARM7 effacera alors ce registre après reconnaissance de l'interruption de l'HOTE. Voir le schéma bloc de la figu grandeur des blocs de mémoire sera limitée à deux (2) blocs externes qui pourront être imbriqués. Le contrôleur de la mémoire DRAM Synchrone initiale aura les caractéristiques minimales qui devront être requises pour faire fonctionner les DRAM. Ce qui suit sont les caractéristiques de "base" du contrôleur de mémoire au premier passage Support des DRAM Synchrones de SAMSUNG Un (1) Bloc de mémoire utilisant deux puces de SDRAM (1mu16) Support de régénération Cas-Avant-ras (CBR) Support Ecritures Partielles qui initialisent les opérations Lecture-Modification-Ecriture Support de l'imbrication des blocs internes (ping pong via MA[111) e Adaptation fréquence mémoire et bus processeur (1:1) à 80 MHz. Fréquence régénération programmable Mise en file d'attente adresses et données pour mieux utiliser le bus du système Support du Manuel "Précharge deux Blocs" Le contrôleur de mémoire de MSP aura deux sous Composants principaux contrôleur de Données et contrôleur d'Adresses. Le contrôleur de Données aura des files d'attente de données de lecture et d'écriture pour enregistrer les données de lecture de la DRAM et les données d'écriture du bus du processeur. Le contrôleur de Données contiendra également toute la logique de RMW pour les écritures d'octets. Tous les contrôles du contrôleur de données seront générés à partir du contrôleur d'Adresses. Le contrôleur d'Adresses aura la file d'attente de Demande, la file d'attente de réponse ID, la logique de décodage d'adresse de Mémoire, la logique du comparateur de pages, la machine d'état RAS/CAS, la machine d'état de régénération et tous les signaux nécessaires de contrôle utilisés par le contrôleur de Données. L'horloge de la mémoire SRAM sera la même que l'horloge du système. SDRAM recevra une copie de chacun des signaux de contrôle. 6.2.1 Schéma bloc du contrôleur de mémoire montré à la figure 42 6.2.2 Circulation dans le contrôleur de mémoire montrée à la figure 43 6.3 Contrôleur d'adresse (AC) La section de contrôleur d'adresse du contrôleur de mémoire sera responsable de la production de tous les contrôles de la DRAM ainsi que de la gestion du contrôleur de Données. Cette section du contrôleur de mémoire de MSP sera également responsable du trajet d'Adresse et de Contrôle de l'interface de Fbus. Le schéma bloc qui suit décrit les diverses sous-sections de l'unité du contrôleur d'adresse. 6.3.1 Schéma bloc du contrôleur d'adresse montré à la figure 44 6.3.2 FIFO Demande Contrôleur Mémoire Le contrôleur de mémoire de MSP aura une FIFO de demande profonde de quatre qui enregistrera la totalité des informations d'adresse et de contrôle de Fbus pour une distribution ultérieure vers la machine d'état de contrôleur de mémoire réelle. Chaque entrée de la FIFO de demande aura un bit "correct" pour indiquer la validité de cette entrée particulière. La machine d'état du contrôleur de mémoire desservira toujours la plus basse entrée dans la FIFO qui est l'ENTREE~0. Quand cette demande est desservie et que l'Echantillonnage d'Adresse de Colonne (CAS) est tombé le contrôleur de la mémoire revendique un signal d'effaceur pour vider cette entrée. Selon l'état PLEIN/VIDE de la FIFO, un décalage peut être amorcé pour décaler les contenus CORRECTS vers l'entrée 0. Le format de la FIFO de demande du contrôleur de mémoire de MSP est montré à la figure 45. 6.3.3 Décodage Adresse Contrôleur Mémoire/Topographie La logique de décodage d'adresse sera principalement responsable de la production de l'Adresse de la Rangée de la SDRAM de 11 bits MA[10:0] et de l'Adresse de la Colonne de 8 bits MA[7:0]. Ces lignes d'adresse seront entraînées directement aux entrées d'adresse des SDRAM [11:0]. Un bit d'adresse de mémoire [11] sera utilisé pour basculer entre des blocs internes de la SDRAM pour une performance et une meilleure utilisation du bus de la Mémoire. Cette adresse de mémoire sera produite en utilisant des Multiplexeurs programmables qui sont alimentés via des registres indiquant - Grandeur ligne antémémoire système courant - Nombre de blocs internes - Imbrication blocs internes Le décalage de la Ligne de l'Antémémoire du système sera de cinq (5) bits pour une ligne d'antémémoire de 32 octets. La figure 46 montre un format d'adresse de mémoire suggéré, produit à partir de l'adresse du système du Fbus pour des DRAM à 16Mbits. Cette adresse de mémoire multiplexée sera correcte pour un cycle avec les échantillons de RAS et CAS indiqués par la machine d'état du contrôleur de Mémoire. MCU a la capacité d'accomplir des écritures de 8 octets sans initialiser une opération de Lecture-Modification Ecriture. Cependant, le Bit [2] de l'adresse de Fbus doit TOUJOURS être zéro, pour l'adresse de départ paire SEULEMENT. Ce bit est topographié au bit [0] de l'adresse de la SDRAM qui est l'un des trois bits qui indiquent l'adresse de départ comme suit Faddr[4:2] Séquence écriture (BOUCLAGE=8) 000 0-1-2-3-4-5-6-7 010 2-3-4-5-6-7-0-1 100 4-5-6-7-0-1-2-3 110 6-7-0-1-2-3-4-5 Ce sont les séquences supportées par la MCU qui sont toutes les adresses paires de départ. Toutes les opérations de lecture supposeront xfers de 32 octets et l'adresse de départ devra être (000) - rna[2:01=faddr[4:2]. 6.3.4 Machine d'Etat du Contrôleur de Mémoire Le contrôleur de mémoire de MSP aura une machine d'état de contrôleur maître . Cette machine d'état sera responsable de la production de toute la temporisation pour les signaux de Contrôle de la SDRAM (RAS/CAS/WE/CS/DQM). La machine d'état surveillera constamment la FIFO de demande pour une entrée correcte à l'Entrée 0. Quand un bit correct est détecté ; la machine d'état fait débuter la séquence de la SDRAM. Elle surveillera également le signal Page~hit du comparateur de pages pour déterminer si le précharge de RAS est nécessaire. La précharge de RAS sera accomplie sur le bloc courant actif/ouvert. Une séquence manuelle de précharge comprend la revendication de CS, RAS, WE et MA[10] à l'état actif qui est zéro. Le bit de sélection de bloc interne MA [11] sera utilisé pour sélectionner le bloc pour la Précharge. Pour les cas de lecture : l'ordre de Précharge sera revendiqué après avoir reçu la donnée de la SDRAM pour éviter une corruption de la donnée. Pour les cas d'écriture : la Précharge sera émise après avoir écrit le dernier bit de données dans la mémoire. Quand l'ordre de précharge est terminé, ce bloc particulier est à un état d'inactivité, prêt à l'opération de mémoire suivante. Selon les spécification de la SDRAM, l'ordre de précharge peut être émis en tout moment après avoir satisfait tRAS (min) (dans ce cas, c'est 60ns). *Cependant, du fait de notre longueur de bouclage de quatre (4), la machine d'état du contrôleur de mémoire C mettra un ordre de précharge APRES lecture/écriture de la donnée vers la mémoire. Ce qui suit indique les paramètres de la SDRAM utilisés avec le contrôleur de mémoire de MSP. TABLEAU 17: PARAMETRES DE SDRAM DRAM tRAS tRRD tCCD tRCD tCAC tRP 80 MHZ 6 cycles 2 cycles 1 CyCle 2 cycles 3 cycles 3 cycles (12,5ns) 75ns CAS Laten. -10 Partie 83 MHZ 6 cycles 2 cycles 1 cycle 2 cycles 3 cycles 3 cycles (12ns) CAS Laten. -12 Partie * tRAS pourrait être utilisé en tant que 5 cycles pour obtenir le temps d'accès RANGEE de 60ns des DRAM synchrones. Veuillez vous référer aux diagrammes des temps du contrôleur de mémoire. 6.3.4.1 Diagramme Machine d'Etat La figure 47 est un diagramme de la machine d'état RAS/CAS du contrôleur de mémoire de SDRAM. 6.4 Régénération du Contrôleur de Mémoire Les DRAM synchrones doivent être régénérées toutes les 32ms (15,6,us) pour maintenir les données dans chacune des cellules d'enregistrement. Les DRAM synchrones supportent également deux modes de régénération : REGENERATION AUTOMATIQUE ET AUTO REGENERATION. 6.4.1 "Régénération automatique" de la SDRAM En utilisant la Régénération AUTOMATIQUE Standard, les deux blocs internes sont régénérés alternativement par un compteur interne. Comme le nombre de rangées est de 4096, par conséquent, une régénération automatique nécessitera 2048 cycles de régénération automatique pour régénérer toute la DRAM. L'ordre de régénération automatique est émis en revendiquant un état bas sur CS, RAS et CAS avec l'état haut sur CKE et WE. Cette ordre ne sera revendiqué que quand les deux blocs internes seront à l'état inactivé1. 1SDRAM Samsung spec REV.5 Le temps requis pour accomplir la régénération automatique est tRC(min) lOOns (Spec) = ------ - 8 cycles (80MHz) temps d'un cycle 12,5ns 6.4.2 "Auto-Régénération" de la SDRAM L'auto-régénération est un autre mode disponible dans les SDRAM de SAMSUNG. Cela est généralement le mode préféré de régénération pour la rétention des données et le fonctionnement à faible puissance. Là, les SDRAM inhiberont l'horloge interne et tous les tampons d'entrée à l'exception de CKE. Le mode d'auto-régénération est introduit quand CS, RAS, CAS et CKE sont bas et que WE est haut. Le contrôleur de mémoire de MSP n'utilisera PAS ce mode de régénération car il faut arrêter l'horloge de la SDRAM et la remettre en marche en utilisant le signal CKE. 6.4.3 Régénération manuelle Ce troisième choix de régénération nécessite une conception de machine d'état/compteur. Le compteur se déclenchera toutes les 15,6fis et revendiquera un échantillon de régénération pour la logique du contrôleur de mémoire. Le contrôleur de mémoire terminera alors la demande courante et initialisera immédiatement le cycle de régénération de la SDRAM. Ce cycle ressemblera exactement au cycle de régénération automatique sans avoir la restriction de devoir être à l'état INACTIF. 6.5 Contrôleur de Données (DC) La section de contrôleur de données de contrôleur de mémoire servira principalement de file d'attente de données pour écrire les données du processeur ou lire les données de la SDRAM. Ce contrôleur aura également la logique de fusion d'écriture pour tous les cas d'écriture partielle (écritures d'octets). Il faut noter que les écritures partielles donnent le départ d'une lecture dans la DRAM d'abord puis fusionnent les données et enfin écrivent tout le mot modifié de nouveau dans la mémoire. Par conséquent, toute demande suivant la séquence d'écriture partielle devra tenir compte de la performance. 6.5.1 Schéma Bloc du Contrôleur de Données montré à la figure 48 6.6 Description des broches Ce contrôleur a contribué aux broches suivantes RAS~1 Broche de sortie (Bas Actif). Ce sont les Echantillons d'Adresses de Rangée pour verrouiller l'adresse de rangée à partir de MA[11:0] dans le tampon d'adresses de rangée interne du bloc de DRAM sélectionné. CAS~I Broche de sortie (Bas Actif). C'est un échantillon d'adresse de colonne pour verrouiller l'adresse de colonne à partir de MA[11:0] dans le tampon d'adresses de colonne interne du bloc de DRAM sélectionné. WE~1 Broche de sortie (Bas Actif pour écritures). Pour entraîner la broche d'entrée de validation d'écriture de la DRAM. MA[11:0] Broches de sortie. Signaux multiplexés d'adresses de rangée et de colonne vers la DRAM. DQM Broche de sortie. Donne à la sortie de données de la SDRAM une haute impédance après l'horloge et masque la sortie. (Cette broche est utilisée uniquement pour une interface de DRAM synchrone). CS~I Broche de sortie (Bas Actif). Pour inhiber ou valider un fonctionnement sélectionné de la SDRAM. (Cette broche est utilisée uniquement pour une interface de la SDRAM synchrone). CLK Broche de sortie. C'est la broche de sortie d'horloge uniquement vers la DRAM synchrone. Elle n'est utilisée que par la SDRAM et elle a la même phase que l'horloge du système de MSP. 6.7 Diagrammes des Temps du Contrôleur de Mémoire montrés aux figures. 49-51. Notes concernant la figure 49 - On suppose une des SDRAM Samsung - Mémoire et système fonctionnant à 80 MHz - Une ou deux SDRAM externes (1M x 16) - Longueur bouclage programmable de 4/8 pour extraire une ligne de la mémoire. - tRCD = 3 - TCAS = 3 - Retard interne = 2 horloges - Latence mémoire = 8 cycles (8x12,5 = 100 ns) - Les Données du système de la mémoire seront retardées de deux cycles pour l'arbitrage (donnée de lecture). 6.8 Modèle de Programmation Les registres de contrôle en rapport avec le contrôleur de mémoire, tels que vus par la programmateur sont 6.8.1 Registre Mise à l'Etat Initial SDRAM (R/W) Ce registre doit être remis à l'état initial après chaque remise à l'état initial du système. C'est un registre à un bit qui porte le signal reset~sdram qui débute la séquence d'alimentation de la SDRAM. A la remise à l'état initial du système, ce registre est mis à un. Le logiciel DOIT vider ce registre pour mettre la SDRAM en marche. Bit 0 est établi avec une remise à l'état initial du système et est effacé en un point ultérieur pour mettre la SDRAM en marche. Adresse de Programmation Faddr [31:20] = 12'h010 Faddr[3:0] = 4'b1011 6.8.2 Registre TYPE SALVE SDRAM (L/E) Ce registre programme le Type de Salve de la SDRAM. C'est un registre à 1 bit qui devra être programmé à ZERO pour le type de salve SEQUENTIELLE. Adresse de Programmation Faddr [31:20] = 12'h010 Faddr [3:0] = 4'b1010 Bit 0 est remis à l'état initial avec la remise à l'état initial et est établi en un point ultérieur pour mettre la SDRAM en marche. 6.8.3 Registre REGENERATION SDRAM (L/E) Ce registre programme la VALEUR de la REGENERATION de la SDRAM. C'est un registre à 12 bits qui devra être programmé via Fbus également. Adresse de programmation Faddr [31:20] = 12'hO10 Faddr[3:0] = 4'b1001 Bit 11-0 est remis à l'état initial avec la remise à l'état initial du système et est programmé à une valeur de régénération de 4EO 6.8.4 Registre (L/E) PRECHARGE RAS de SDRAM (tRP) Ce registre programme la VALEUR DE PRECHARGE DE RAS DE SDRAM. C'est un registre à 3 bits qui devra être programmé via Fbus également. Adresse de programmation Faddr [31:20] = 12'h010 Faddr[3:0] = 4'b1000 Bit 2-0 est remis à l'état initial avec la remise à l'état initial du système et est programmé à 1 ou 2 ou 3 6.8.5 Registre (PJW) LATENCE CAS SDRAM (tCAC) Ce registre programme la latence de CAS de SDRAM. C'est un registre à 3 bits qui devra être programmé via Fbus également. Adresse de programmation Faddr [31:20] = 12'h010 Faddr[3:0] = 4'b0011 Bit 2-0 est remis à l'état avec la remise à l'état initial du système et programmé à 1 ou 2 ou 3. 6.8.6 Registre (L/E) de RETARD de CAS de RAS de SDRAM (tRCD) Ce registre programme la latence de RCD de SDRAM. C'est un registre à 3 bits qui devra être programmé via Fbus également. Adresse de programmation Faddr [31:20] = 12'h010 Faddr[3:0] = 4'b0010 Bit 2-0 est remis à l'état initial avec la remise à l'état initial du système et est programmé à 1 ou 2 ou 3. 6.8.7 Registre LONGUEUR BOUCLAGE SDRAM (L/E) Ce registre programme la LONGUEUR DE BOUCLAGE de SDRAM pour les DONNEES. C'est un registre à 3 bits qui devra être programmé via Fbus également. Adresse de programmation Faddr [31:20] = 12'h010 Faddr[3:0] = 4'b0001 Bit 2-0 est remis à l'état initial avec la remise à l'état initial du système et programmé à 1, 2 ,4 ou 8. 6.8.8 Registre TEMPS NOP SDRAM (L/E) Ce registre programme le TEMPS NOP de la SDRAM pour la séquence de mise en circuit. C'est un registre à 16 bits qui devra être programmé également via Fbus. Adresse de programmation Faddr [31:20] = 12'h010 Faddr[3:0] = 4'b0000 Bit 15-0 est remis à l'état initial avec la remise à l'état initial du système et est programmé à 200vs selon la fréquence d'horloge. CHAPITRE 7 Interface ASIC Ce chapitre décrit la spécification de l'unité d'interface ASIC. 7.1 Vue générale l'unité d'interface ASIC (figure 52) aura une DMA programmable de 32 bits, plusieurs FIFO et des blocs de contrôle. Le bloc d'interface de ASIC sera en interface entre : le bus du système principal (FBUS) qui fonctionne à 80 MHz et les blocs d'interface de CODEC qui seront en interface entre MSP, AD1843 (audio, téléphone), KS0122 (capture vidéo), KS0119 et VGA. La supposition courante est que toutes les interfaces du CODEC et du contrôleur de DMA fonctionnent à la pleine vitesse de FBUS pour éviter tous les problèmes de synchronisation. Le bloc ASIC du Client aura trois sections majeures interface Fbus maltre/esclave, contrôleur DMA de MSP à 8 canaux et CODEC réels. Les données circuleront de Fbus aux CODEC et vice versa. Cependant, l'adresse NE sera produite QUE par le contrôleur de DMA. Cette adresse sera alors topographiée par Fbus dans la logique d'interface de Fbus. TOUTES les écritures des autres noeuds de Fbus NE seront QUE pour programmer les registres dans la section du CODEC. Tout le reste du trafic devra être des répliques lues avec grandeur et information ID. Veuillez voir la spécification de Fbus. Ce qui suit donne des caractéristiques pour l'unité d'interface ASIC Support fonction de DMA de base de 32 bits (8 canaux 1 pour chaque CODEC) Deux FIFO de données profondeur 4 x 64 bits Un FIFO DEMANDE profondeur 1 x 52 bits Un FIFO REPONSE profondeur 2 x 52 bits Support maître/esclave pour bloc interface Fbus et CODEC Support d'arbitrage interne pour huit blocs interface CODEC Fréquence de fonctionnement : jusqu'à 80 MHz Support d'acces entre ES à MEMOIRE, MEMOIRE à ES Support initialisation CODEC Support plus haute priorité pour CANAL 0 que l'on utilise pour KS0119 Support bus spécial d'adresses pour obtenir une haute performance pour KS0119 Cette logique d'interface du client supportera trois CODEC différents CODEC Audio et Téléphone (AD1843). Ce CODEC aura un bus de données bidirectionnel à 64 bits qui communiquera avec le contrôleur de DMA (Canal 4 # DAC1, Canal 5 =: > DAC2, Canal 6 # ADC gauche, Canal 7 # ADC droit) CODEC capture vidéo (KS0122). Ce CODEC aura également un bus de données de 64 bits bidirectionnel et il est capable d'initialiser les demandes M # ES et ES =: > M vers le DMA (Canal 2). CODEC vidéo principal (KS0119) ce CODEC recevra les données du contrôleur de mémoire directement (Canal o); BLOC INTERFACE ASIC 7.2 Contrôleur Accès Direct Mémoire (DMA) Le contrôleur de DMA aura des registres utilisés pour la production et la traduction des adresses. Ce contrôleur de DMA aura 8 canaux indépendants. Chaque canal aura un registre d'adresses Courantes et un registre d'adresses d'Arrêt. Les registres d'adresses de départ et d'arrêt seront préprogrammés via le bloc de configuration. Le registre d'adresses courantes sera chargé à chaque fois qu'il y aura une demande de DMA de l'un des huit CODECs. QUAND Fbus accorde l'accès, cette adresse de DMA est incrémentée à chaque cycle jusqu'à ce que l'adresse courante corresponde avec le registre d'adresses d'arrêt. A ce moment, le contrôleur de DMA produira un signal "EOP" (Fin du Procédé) Ce signal provoquera une interruption du procédé. Les huit canaux de DMA auront une unité commune d'arbitrage qui contrôlera les multiplexeurs et les blocs de comparaison d'adresses. Ce contrôleur de DMA supportera l'accès entre ES et MEMOIRE, MEMOIRE et ES et MEMOIRE à MEMOIRE. A chaque fois qu'un CODEC doit parler à DMA, il revendique un signal DMA~REQ et attend pour la reconnaissance par DMA "DACK" de DMA. UNE FOIS reconnu, il entraînera les signaux de contrôle M-ES et les données. Le contrôleur de DMA sélectionnera le canal approprié selon DAC accordé. Veuillez voir le schéma bloc. 7.3 Description Registres DMA 7.3.1 Registre Adresses Courantes Chaque canal a un registre d'Adresses courantes de 29 bits (bits ) qui nécessite que toutes les adresses soient alignées à 8 octets. En réalité, ce registre est un compteur de 29 bits. Ce registre peut être lu par ARM7. La valeur initiale sera chargée de ARM7 par l'intermédiaire de FBUS. Cette adresse sera incrémentée en se basant sur la grandeur du transfert de données. L'adresse dans le registre d'Adresses Courantes sera envoyée au bloc de Production d'Adresses pour charger l'adresse sur le FBUS par l'intermédiaire du multiplexeur. Le registre d'Adresses Courantes contiendra la valeur de l'adresse pendant l'état d'inactivité. 7.3.2 Registre Adresses Arrêt Chaque canal a un registre d'Adresses d'Arrêt de 29 bits (bits ) qui nécessite que toutes les adresses soient alignées à 8 octets. Ce registre est écrit par ARM7 par l'intermédiaire de FBUS. Ces valeurs seront utilisées pour une comparaison avec l'adresse courante dans le bloc de comparaison. Si l'adresse courante correspond à l'adresse d'arrêt, le contrôleur de DMA produira un signal "EOP" pour chaque canal. 7.3.3 Registre d'Etat Ce registre contient une information indiquant si chaque canal a atteint l'adresse d'arrêt ou non. Le bit spécifie quel canal atteint l'adresse d'arrêt, il sera remis à l'état initial si ARM7 initialise le Registre d'Adresses courantes par CCU. Ce registre peut être lu par ARM7 mais ARM7 ne peut écrire dans ce registre. 7.3.4 Registre de Contrôle Ce registre contient l'information de contrôle pour le fonctionnement du contrôleur de DMA. Le bit spécifie quel canal de DMA est validé pour une opération. Ces bits sont remis à l'état initial à chaque fois que le canal correspondant atteint une adresse d'arrêt et ARM7 peut établir ces bits pour recommencer l'opération. Si un bit de validation de canal est "0", DMA ne donne pas DMA~ACK au CODEC correspondant, même si le CODEC envoie DMA~REQ à DMA. Le bit spécifie quelle paire de canaux de DMA est reliée pour agir comme un double tampon. Par exemple, si le canal 0 et le canal 1 sont liés l'un à l'autre en tant que double tampon, le contrôleur de DMA passera automatiquement au canal 1 quand l'adresse courante du canal 0 atteindra son adresse d'arrêt et passera au canal 0 quand l'adresse courante du canal 1 atteindra son adresse d'arrêt. Le bit contient une information concernant le mode de lecture/écriture pour chaque canal. Si un bit d'entre eux est établi à "1" par ARM7, le canal correspondant sera utilisé pour l'opération de LECTURE. Les autres seront utilisés pour l'opération d'ECRITURE. Le bit spécifie si DMA envoie le signal EOP au Contrôleur d'Interruption ou non. Si ce bit est "O", DMA n'envoie pas EOP, même si un canal atteint l'adresse d'arrêt. 7.3.5 Registre de masque Chaque bit dans le Registre de Contrôle est associé à un bit de masque dans le Registre de Masque. Si le bit de masque est "0", il empêche la remise au point du bit correspondant dans le Registre de Contrôle. Initialement, ce registre sera établi a Ffffffff(hex). 7.3.6 Programmation L'Adresse de Départ et d'Arrêt sera programmée par ARM7 par l'intermédiaire de FBUS. Les valeurs topographiées de FBUS sont comme suit CCU = > 0040~0000 - 007F~FFFF, MCU # 0080~0000 - 047F~FFFF, PCI # 0800~0000 - FFFF~FFFF. Pour la programmation des adresses, il faut établir Adresse [26:0] en se basant sur le Tableau 18. TABLEAU 18 : TOPOGRAPHIE ADRESSES REGISTRE DMA Décalage Adresse &num; de Bits Description (hex) 4A0 0000 29 Registre Adresse Courante 0 4A0 0008 29 Registre Adresse Courante 1 4A0 0010 29 Registre Adresse Courante 2 4A0 0008 29 Registre Adresse Courante 3 4A0 0020 29 Registre Adresse Courante 4 4A0 0028 29 Registre Adresse Courante 5 4A0 0030 29 Registre Adresse Courante 6 4A0 0038 29 Registre Adresse Courante 7 4A0 0040 Réservé 4A0 0048 Réservé 4A0 0050 29 Registre Adresse Arrêt 0 4A0 0058 29 Registre Adresse Arrêt 1 4A0 0060 29 Registre Adresse Arrêt 2 4A0 0068 29 Registre Adresse Arrêt 3 4A0 0070 29 Registre Adresse Arrêt 4 4A0 0078 29 Registre Adresse Arrêt 5 4A0 0080 29 Registre Adresse Arrêt 6 4A0 0088 29 Registre Adresse Arrêt 7 4A0 0090 Réservé 4A0 0098 Réservé 4A0 00A0 32 Registre d'Etat 4A0 00A8 32 Registre de Contrôle 4A0 00B0 32 Registre de Masque TABLEAU 19: CODAGE DU REGISTRE D'ETAT Bit &num; Description 0 Canal 0 a atteint l'adresse d'arrêt 1 Canal 1 a atteint l'adresse d'arrêt 2 Canal 2 a atteint l'adresse d'arrêt 3 Canal 3 a atteint l'adresse d'arrêt 4 Canal 4 a atteint l'adresse d'arrêt 5 Canal 5 a atteint l'adresse d'arrêt 6 Canal 6 a atteint l'adresse d'arrêt 7 Canal 7 a atteint l'adresse d'arrêt 8 Réservé 9 Réservé 10-31 Réservé TABLEAU 20 : CODAGE DU REGISTRE DE CONTROLE Bit &num; Description 0 Valider canal 0 pour transfert DMA 1 Valider canal 1 pour transfert DMA 2 Valider canal 2 pour transfert DMA 3 Valider canal 3 pour transfert DMA 4 Valider canal 4 pour transfert DMA 5 Valider canal 5 pour transfert DMA 6 Valider canal 6 pour transfert DMA 7 Valider canal 7 pour transfert DMA 8 Réservé 9 Réservé 15: 10 Réservé 16 Sélectionner double tampon pour canal 0 et canal 1 17 Sélectionner double tampon pour canal 2 et canal 3 18 Sélectionner double tampon pour canal 4 et canal 5 19 Sélectionner double tampon pour canal 6 et canal 7 20 Réservé Bit &num; Description 21 Canal 0 est utilisé pour la lecture (si ce bit est "1") 22 Canal 1 est utilisé pour la lecture (si ce bit est "1") 23 Canal 2 est utilisé pour la lecture (si ce bit est "1") 24 Canal 3 est utilisé pour la lecture (si ce bit est "1") 25 Canal 4 est utilisé pour la lecture (si ce bit est "1") 26 Canal 5 est utilisé pour la lecture (si ce bit est "1") 27 Canal 6 est utilisé pour la lecture (si ce bit est "1") 28 Canal 7 est utilisé pour la lecture (si ce bit est "1") 29 Réservé 30 Réservé 31 Validation interruption DMA 7.4 Initialisation CODEC L'unité de ASIC du Client supportera l'initialisation pour chaque CODEC. En réalité, ARM7 est en charge de l'initialisation du CODEC par l'unité ASIC du client. L'unité ASIC du client aura le décodeur d'adresse pour générer le signal de demande pour chaque CODEC. A chaque fois que l'unité ASIC du client doit parler à un CODEC, elle envoie un signal de demande au CODEC et attend le signal de RECONNAISSANCE du CODEC. Après avoir reçu le signal de RECONNAISSANCE, l'unité ASIC du client envoie la donnée et l'adresse au CODEC. Quand ARM7 veut lire la donnée de configuration dans un CODEC quelconque par l'intermédiaire de CCU, l'unité ASIC du client envoie l'adresse au CODEC. Si l'unité ASIC du client reçoit la donnée du CODEC, elle renvoie TRANSACTION IX) à CCU. A ce moment, la donnée de configuration est envoyée à ARM7 par l'intermédiaire de CCU. TABLEAU 21 : CARTE ADRESSES FBUS REGISTRE CONFIGURATION CODEC Adresse (hex) Description 04B0 0000 é 04BF FFFF Registre Configuration CODEC 0 04c0 1000 à 04c0 iFFF Registre Configuration CODEC 1 04c0 2000 à 04C0 2FFF Registre Configuration CODEC 2 04C0 3000 à 04c0 3FFF Registre Configuration CODEC 3 04C0 4000 à 04C0 4FFF Registre Configuration CODEC 4 04C0 5000 à 04C0 5FFF Registre Configuration CODEC 5 04c0 6000 à 04c0 6FFF Registre Configuration CODEC 6 04C0 7000 à 04C0 7FFF Registre Configuration CODEC 7 04C0 8000 à 04C0 8FFF Réservé 04C0 9000 à 04C0 9FFF Réservé La figure 53 illustre l'ensemble de circuits ASIC du client. 4. Définition des broches E/S TABLEAU 22 : DEFINITION DES BROCHES E/S POUR L'UNITE ASIC DU CLIENT Nom broche Direction Description clk1 Entrée Entrée horloge système 80 MHz f~reset~1 Entrée Signal remise l'état initial Fbus (Bas Actif) Fasc~grant~1 Entrée Accord Fbus de Arbitre Fbus pour unité ASIC (Bas Actif) Fasc cs 1 Entrée Signal s 6lection puce ASIC (Bas Actif) co~size[7:0] - Entrée Grandeur transfert de données CODEC : 8'h08# c9~size[7:0] 8 octets, 8'h10#16 octets, 8'h18#24 octets, 8'h20#32 octets DMA~REQO - Entrée Signaux demande DMA proviennent des CODEC DMA~REQ7 CODEC~ACKO - Entrée Signaux reconnaissance CODEC proviennent des CODEC~ACK7 CODEC ref~full Entrée FIFO utilisée pour cribler signal complet régénération (provient de MCU) Fdrdy~1 Entrée/ Signal donnée Fbus prête, valable un cycle Sortie avant donnée réelle Fdata[63:0] Entrée/ Données Fbus Sortie Faddr[31:0] Entrée/ Adresse Fbus Sortie Freq~ID[9:0] Entrée/ ID Demande Fbus : [9:6] # ID Demandeur, Sortie [5:0]#ID Transaction Freq~size[7:0] Entrée/ Grandeur transfert données Fbus Sortie Frd~wr~1 Entrée/ Indication Lecture/Ecriture : "1"#lecture Sortie "0"#écriture Fpr~wr~1 Entrée/ Indication écriture partielle (Bas Actif) Sortie Nom broche Direction Description CO~DATA[63:0] Entrée/ Données du CODEC C9 DATA[63:0] Sortie Fasc~dfull Sortie FIFO données unité ASIC pleine (passe à arbitre Fbus) Fasc~afull Sortie FIFO réponse unité ASIC pleine (passe à arbitre Fbus) Fasc~grCNT[1:0] Sortie Compteur accord Fbus qui est correct avec la demande pour indiquer le nombre de cycles où l'accord est nécessaire (va à l'arbitre de Fbus) Fasc~did[2:0] Sortie ID destination Fbus pour demande de unité ASIC Fasc~rec1~1 Sortie Signal demande Fbus de unité ASIC Actif) CODEC Sortie Adresses CODEC qui ne sont utilisées que ADDR[31/0] pour lecture/écriture du registre de configuration du CODEC (va aux CODEC) DMA~ACKO - Sortie Signal de reconnaissance DMA (va aux CODEC) DMA ACK7 Crd~wr~1 Sortie Indication Lecture/Ecriture pour accès registre configuration CODEC CODEC~REQO - Sortie Signaux demande CODEC CODEC REQ7 EOP Sortie Fin du Procédé. Ce signal va au contrôleur d'interruption Ref addr[31:0] Sortie Adresse pour CANALO (va à MCU) addr valid Sortie Signal adresse canal 0 correcte (va à MCU) Fmem~grant~1 Entrée Signal accord MCU provient de l'arbitre de Fbus CHAPITRE 8 Interface CODEC AD1843 8.1 Ce chapitre décrit l'interface CODEC AD1843 8.2 Vue générale Le bloc d'interface CODEC AD1843 est pour l'interface entre le bus série AD1843 et le module DMA de DSP. AD1843 transmet et reçoit à la fois les données et l'information de contrôle/état par ses ports en série. AD1843 a 4 broches vouées à l'interface série : SDI, SDO, SCLK, SDFS. La broche SDI est pour l'entrée de données en série vers AD1843 et la broche SDO est pour la sortie de données en série de AD1843. La broche SCLK est l'horloge d'interface en série. La communication d'entrée et de sortie de AD1843 nécessite que les bits de données soient transmis après un flanc montant de SCLK et échantillonnés à un flanc tombant de SCLK. La broche SDFS est pour la synchronisation des blocs d'interface en série. L'interface CODEC AD1843 est basée sur le mode maître. Cela signifie que le signal de SCLK et ADFS est généré par AD1843. La fréquence de SCLK de défaut sera de 12,288MHz et un cycle de blocs sera de 48 KHz. L'architecture de base pour l'interface du CODEC est basée sur DMA. L'interface AD1843 assigne 4 canaux différents de DMA : Canal 4 à DAC1, canal 5 à DAC2, canal 6 à ADC gauche et canal 7 à ADC droit. la grandeur du transfert des canaux vers ou de DMA est de 64 bits à la fois. par conséquent le canal 4 et le canal 5 de DMA envoient deux données différentes de 32 bits - 16 bits pour la gauche et 16 bits pour la droite - de la SDRAM à l'interface de CODEC. D'autre part, les canaux 6 et 7 de DMA envoient 4 données différentes de 16 bits en un temps de l'interface du CODEC à SDRAM. L'interface de DAC1 et DAC2 sait que la donnée est disponible quand le bit de drapeau de chaque canal est établi. L'interface de DAC1 et DAC2 demande DMA après vérification du bit de drapeau. Si le bit drapeau est remis à l'état initial, l'interface de DAC1 et DAC2 ne produit pas la demande de DMA. L'opération réelle du bit drapeau est contrôlée par le bloc de DMA. Le bloc de DMA ne produit pas le signal de reconnaissance de DMA si le bit drapeau est remis à l'état initial. Si FIFO de ADC gauche et droit n'est pas pleine, la demande de DMA n'est pas produite. Le logiciel doit vérifier le registre de drapeau de ADC et lire les données restantes à travers le bus de données. Après lecture de ces données à travers le bus de données, FIFO est vide et produit la demande de DMA quand FIFO est pleine. Les registres de contrôle de AD1843 sont lus et écrits par transmission d'un bit de demande de lecture/écriture en même temps que l'adresse du registre de contrôle dans l'entrée de mots de contrôle. Quand une lecture est demandée, les contenus du registre de contrôle adressé sont transmis pendant la trame suivante. Quand une écriture est demandée, les données à écrire doivent être transmises à AD1848 fente 1. Pour améliorer la performance de MSP, le programmeur doit vérifier le registre de drapeau de contrôle avant lecture ou écriture du registre de contrôle dans le CODEC. Si le bit drapeau du registre de drapeau de contrôle est établi, l'opération de lecture et d'écriture pour le registre du CODEC est disponible. 8.3 Affectation Canaux DMA Canal DMA 4 DAC1 gauche, droite Canal DMA 5 DAC2 gauche, droite Canal DMA 6 DAC gauche Canal DMA 7 DAC droite. 8.4 Format Données vers et de DMA La grandeur du transfert de données est de 64 bits organisés comme suit bits bits bits bits DMA CAN4 DA1 DROITE 2EME DA1 GAUCHE 1ER DA1 DROITE 1ER DA1 GAUCHE 1ER DMA CAN5 DA2 GAUCHE 2EME DA2 DROITE 2EME DA2 GAUCHE 1ER DA2 DROITE 1ER DMA CAN6 ADC GAUCHE 4EME ADC GAUCHE 3EME ADC GAUCHE 2EME ADC GAUCHE 1ER DMA CAN7 ADC DROITE 4EME ADC DROITE 3EME ADC DROITE 2EME ADC DROITE 1ER 8.5 Adresses de base BASE 04C0~4000 DAC1 BASE 04C0~5000 DAC2 BASE 04cl6000 ADCL (Canal Gauche) BASE 04C0~7000 ADCR (Canal Droit) 8.6 Topographie Registres Décalage Adresses Description Lecture (hex) ou Ecriture BASE DAC1 + 0 Entrée Donnée Ecriture Registre E BASE DAC2 + 0 Contrôle BASE ADCL + 0 BASE ADCR + 0 BASE DAC1 + 2 Entrée Mot Contrôle E BASE DAC2 + 2 BASE ADCL + 2 BASE ADCR + 2 BASE DAC1 + 0 Sortie Donnée Registre Contrôle L BASE DAC2 + 0 BASE ADCL + 0 BASE ADCR + 0 BASE ADCL + 2 Registre Drapeau ADC L BASE ADCR + 2 BASE ADCL + 10 Données 1er ADC gauche L BASE ADCL + 12 Données 2ème ADC gauche L BASE ADCL + 14 Données 3ème ADC gauche L BASE ADCL + 16 Données 4ème ADC gauche L BASE ADCR + 10 Données 1er ADC droite L BASE ADCR + 12 Données 2ème ADC droite L BASE ADCR + 14 Données 3ème ADC droite L BASE ADCR + 16 Données 4ème ADC droite L BASE DAC1 + 20 Registre Drapeau Contrôle L BASE DAC2 + 20 BASE ADCL + 20 BASE ADCR + 20 8.7 Définition des Registres 8.7.1 Entrée Données Ecriture Registre Contrôle 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 Le Bit de Poids Fort (MSB) est le premier bit d'entrée de donnée à transmettre. 8.7.2 Entrée Mot de Contrôle 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 L/E ia4 ia3 ia2 ia1 ia0 L/E demande Lecture/Ecriture. Soit une lecture de ou une écriture vers un Registre de Contrôle se produit à chaque Trame. La mise à "1" indique une lecture du Registre de Contrôle tandis que la remise ce ce bit à "0" initialise une écriture du Registre de Contrôle. ia4:0 Registre Adresses Contrôle pour lecture ou écriture. 8.7.3 Sortie Données Registre de Contrôle 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 Contenu du registre de contrôle adressé dans le bloc précédent. 8.7.4 Registre Drapeau ADC 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 r4v r3v r2v rîv 14v 13v 12v 11v r4v - rlv Données ADC Droite Correcte est dans le tampon. indique quelle donnée est disponible dans le tampon. 14v - 11v Données ADC Gauche Correcte est dans le tampon Indique quelle donnée est disponible dans le tampon. 8.7.5 Donnée ler ADC Gauche 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 Première donnée ADC gauche dans le tampon. 8.7.6 Donnée 2ème ADC Gauche 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 Deuxième donnée ADC Gauche dans le tampon. 8.7.7 Donnée 3ème ADC Gauche 15 14 13 12 li 1O 9 8 7 J 6 5 4 3 2 1 0 dl5 d14 d13 d12 d11 d10 d9 d8 d7 d6d5 d4 d3 d2 d1 d0 Troisième donnée ADC Gauche dans le tampon. 8.7.8 Donnée 4ème ADC Gauche 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 Quatrième donnée ADC Gauche dans le tampon. 8.7.9 Registre Drapeau Contrôle 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 wf1 rf1 wfl Drapeau écriture Registre Contrôle. S'il est établi, le CODEC est prêt à recevoir la donnée du registre Contrôle. rfl Drapeau lecture Registre Contrôle. S'il est établi, le CODEC est prêt à envoyer la donnée du registre de contrôle. CHAPITRE 9 CODEC Vidéo 9.1 Vue Générale la logique du CODEC vidéo est en interface avec les puces de KS0119 et KS0122 sur le panneau d'évaluation et est en interface avec le module de DMA dans la puce de MSP. Le CODEC KS0119 peut également produire une opération de régénération sur l'écran. Pour cette opération, un trajet de données directes vers le module MCU est réalisé comme le montre la figure 54. 9.2 définition module du Haut le Module du Haut contient 3 sous-modules comme montré à la figure 55 e Le module de régénération de l'Ecran KS0119 Le module de capteur de données vidéo KS0122 et Le module d'interface hôte Série 3 Fils qui a accès aux registres de configuration des puces de KS0199 et KS0122. 9.3 Affectations Canaux DMA DMA CANO CODEC KS 0119 DMA CAN1 Réservé DMA CAN2 CODEC KS 0122 DMA CAN3 Réservé DMA CAN4 CODEC audio AD1843 DMA CAN5 CODEC audio AD1843 DMA CAN6 CODEC audio AD1843 DMA CAN7 CODEC audio AD1843 DMA CAN8 Réservé DMA CAN9 Réservé 9.4 Module Interface Hôte à Trois Fils Ce module est en interface avec les puces de KS0119 et KS0122, tous les registres à l'intérieur de ces puces peuvent être atteints via l'interface série. Le module d'interface série à trois fils supporte les fonctions du protocole de communication vers les puces et contient les registres pour la logique d'interface de KS 0119 et KS0122. Se référer à la figure 3. 9.5 Interface EPROM Les broches ES de KS0119 sont également utilisées comme interface vers une EPROM externe qui est utilisée pour charger les données du programme immédiatement après Remise à l'état initial du système et fait partie de l'initialisation de la séquence d'instructions initiales de MSP-1 EX. Veuillez vous référer à l'affectation des broches pour plus de détails. EPROM est topographiée en mémoire avec les adresses allant de CO OOH à DF FFFH. 9.6. Description des Registres de KS0119 KSO119 a une Adresse de Base CODEC~REQO égale à 04B0 0000 et s'étend jusqu'à 04BF FFFF. 9.6.1 Topographie Adresses Registres de KSOll9 Topographie Adresses Registres de KS0119 Décalage Nom du registre (hex) 0 Registre grandeur Trames 1 ID 2 Octet DATA/Contrôle 3 IDEX/DATAO 4 DATA1 5 DATA2 6 DATA3 7 Registre d'Etat 8 Interface Série DATA Lecture 9 Données PROM lecture A Registre Contrôle Logique B Polarité HS, VS c C Décalage HS D D Décalage VS 9.6.2 Registre Grandeur Trames Ce registre contrôle la grandeur des trames à transmettre à la puce du CODEC comme cela est défini à la figure 57. La longueur minimale d'une trame est de 3 octets. 9.6.3 Registre ID Puce Ce registre doit contenir la valeur ID de la puce du CODEC et doit contenir 03H pour l'Ecriture dans KS0199 et 83H pour la Lecture de KS0119. 9.6.4 Registre Contrôle/DATA Ce registre informe la puce de KS0119 du CODEC que l'OCTET transmis suivant sera un INDEX du registre ou un Octet de DATA. Pour KS0119 = 08H, cela signifie que L'INDEX est l'Octet suivant et 09H signifie que DATA est l'Octet suivant. 9.6.5 Registre INDEX/DATAO Ce registre contiendra la valeur d'INDEX pour le registre de configuration de la puce du CODEC ou l'Octet DATAO selon la valeur transmise dans l'octet précédent. Veuillez vous référer au protocole de communication dans la section de référence de programmation. 9.6.6 Registre DATA1 Ce registre contient la donnée à écrire dans le registre du CODEC, Index+1. 9.6.7 Registre DATA2 Ce registre contient la donnée à écrire dans le registre du CODEC, Index+2. 9.6.8 Registre DATA3 Ce registre contient la donnée à écrire dans le registre du CODEC, Index+3. 9.6.9 Registre Contrôle logique KSOll9 Les affectations des bits pour le registre de contrôle de KS0119 sont montrés à la figure 58. 9.6.10 Polarité HS et VS Ce registre définit la polarité du signal de Synchronisation Horizontale et de Synchronisation Verticale. Une valeur de 0 est définie comme étant une BAS actif tandis qu'une valeur de 1 est définie comme étant HAUT actif. L'affectation des bits est comme suit Bit : Polarité VS Bit : polarité HS 9.6.11 Décalage HS Le signal Actif est généré après cette valeur de décalage. Défini comme étant OOH. 9.6.12 Décalage VS Le signal actif est généra après cette valeur de décalage. Défini comme étant OOH. 9.6.13 Registre d'Etat est montré à la figure 59 9.6.14 Registre interface Série DATA Lecture Ce registre contiendra les données correctes du port en série après que le Drapeau de Lecture a fait la transition d'Occupé à Etat Prêt. 9.6.15 Registre Données PROM Lecture Ce registre contiendra la donnée de PROM correcte si le Drapeau de PROM est à l'état prêt. 9.6.16 Référence de Programmation 9.6.16.1 Configuration et Initialisation Le matériel d'affichage vidéo peut être configuré pour fonctionner en deux modes différents e Mode recouvrement VGA Mode émulation VGA Ce mode de fonctionnement est contrôlé par la mise à un d'un bit dans le registre de contrôle logique. MSSEL =0 pour mode recouvrement VGA =1 pour mode émulation VGA. Dans le mode de recouvrement VGA, l'existence d'une carte de VGA sur le systeme PC est requise. Le câble du Moniteur se connectera à la carte de MSP Les résolutions de VGA supportées peuvent atteindre 800x600. Le Tampon d'affichage doit être de la même grandeur que les ajustements de VGA. Pour établir une fenêtre vidéo, le Logiciel doit remplir une Zone rectangulaire de Touche couleur dans le Tampon de trames de VGA, la donnée vidéo dans SDRAM de MSP doit être écrite dans une zone rectangulaire de la même grandeur et du même emplacement que la zone rectangulaire dans le Tampon de trames de VGA. Se référer à la figure 60. La Puce de KS0119 reconnaîtra la touche couleur et commutera du port d'entrée de VGA au port d'entrée vidéo. Le Logiciel doit établir l'adresse de départ du canal 0 de DMA au coin supérieur gauche du Tampon de Sortie vidéo de la SDRAM, la longueur d'enregistrement de DMA doit être établie selon la résolution établie dans la carte de VGA et le bit par élément d'image utilisé dans la donnée vidéo (4:2;2 =16 bits par élément d'image). 9.6.16.2 Interface 3-FILS Protocole Série vers KS0119 Pour l'ajustement des registres de Configuration dans la puce de KS0119, le protocole est comme suit Un minimum de deux trames doit être transmis aux puces périphériques La première Trame est pour positionner l'index du registre de configuration La seconde Trame est pour lire ou écrire la donnée (contenu du registre). Le Logiciel doit établir le registre de grandeur des Trames à la bonne longueur et établir le bit d'accès Série =1. Alors, le Logiciel doit charger tous les Octets requis pour la Trame avant de changer la grandeur de la Trame. La logique d'interface du CODEC des registres attendra jusqu'à ce que tous les Octets soient chargés avant de commencer la mise en série de la Trame. Le premier transmis est pour établir l'index. Grandeur Trame =3 Octets. Se référer à la figure 61. La deuxième trame bloc est pour établir le registre. Grandeur de la trame =3 Après chaque octet de donnée, la puce auto-incrémentera l'index de un, cela permet d'établir des registres consécutifs en envoyant des octets multiples des supports logiques d'interface du CODEC des données jusqu'à 4 octets de donnée. Quand une opération en série de lecture ou d'écriture est accomplie, le LOGICIEL doit vérifier le Drapeau de Lecture et d'Ecriture du registre d'Etat pour une DATA correcte dans l'opération de lecture ou bien un Drapeau d'Ecriture = prêt avant d'envoyer la trame suivante. L'exemple qui suit montre, étape par étape, l'établissement du registre de configuration de KS0119. Pour établir la valeur pour l'Octet 0 et l'Octet 1 de la Touche de Chrominance, l'index pour ce registre est 6AH pour l'Octet 0 et 6BH pour l'Octet 1, se référer aux feuilles de données de KS0119. Comme les deux registres ont un index consécutif ces deux Octets peuvent être chargés dans une seule trame. D'abord, l'index doit être établi comme suit Charger le registre de grandeur des trames (adresse = 04B0~0000h) avec la valeur 83H (grandeur Trame=3 et bit accès série à 1). Charger le registre ID (Adresse=04B0~0001h) avec la valeur 03H. Charger l'Octet de données/contrle : (Adresse=04B0~0002H) avec la valeur 08H cela indique à un KS0119 que l'Octet suivant est l'Index. @ Charger le registre d'Index (adresse=04B0~0003H) avec la valeur 6AH. L'interface en série détectera une correspondance avec le contenu du registre de grandeur des trames et commencera à envoyer la trame, également le Drapeau d'Ecriture dans le registre d'état sera établi à l'état Occupé. Le Logiciel doit vérifier les Drapeaux dans le registre d'Etat avant de charger la Trame suivante. Quand les Drapeaux sont à l'état prêt, alors le Logiciel peut charger les valeurs pour la Trame suivante. 9.7 Description Registres de KS0122 KS0122 a une Adresse de Base CODEC~REQ2 égale à 04C0 2000 et qui s'étend jusqu'à 04C0 2FFF. 9.7.1 Topographie Adresses Registre KS0122 Décalage Nom Registre t(hex) 0 Registre Grandeur Trames 1 ID 2 2 Octet Contrôle/DATA 3 IDEX/DATAO 4 DATA1 5 DATA2 6 DATA3 7 Réservé 8 Interface série DATA lecture 9 Réservé A A Registre Contrôle Logique B Réservé C Réservé D Réservé E Registre d'Etat 9.7.2 Registre Grandeur Trames Ce registre contrôle la grandeur des trames à transmettre à la Puce du CODEC comme défini à la figure 62. La longueur minimale d'une trame est de 3 Octets. 9.7.3 Registre ID Puce Ce registre doit contenir la valeur ID de la puce du CODEC et doit contenir 04H pour Ecriture de KS0122 et 84H pour Lecture de KS0122. 9.7.4 Registre Contrôle/DATA Ce registre informe les puces KS0122 du CODEC que l'OCTET transmis suivant sera un INDEX du registre ou un Octet de DATA. KS0122 = OOH signifie que l'INDEX est l'Octet suivant et 01H signifie que DATA est l'Octet suivant. 9.7.5 Registre INDEX/DATAO Ce registre contiendra la valeur d'INDEX pour le registre de configuration de la puce du CODEC ou l'Octet DATAO, selon la valeur transmise dans l'octet précédent. Veuillez vous référer au protocole de communication dans la section de référence de programmation. 9.7.6 Registre DATA1 Ce registre contient la donnée à écrire dans le registre du CODEC, Index+l. 9.7.7 Registre DATA2 Ce registre contient la donnée à écrire dans le registre du CODEC, Index+2. 9.7.8 Registre DATA3 Ce registre contient la donnée à écrire dans le registre du CODEC, Index+3. 9.7.9 Registre Contrôle Logique KS0122 Les affectations des bits pour le registre de Contrôle de KS0122 sont comme suit bits 00 Format 4:2:2 01 Format 4:1:1 10 Format CCIR656 9.7.10 Registre d'Etat Bit : Etat Zone O:Zone Paire l:Zone Impaire Bit : Etat VS O:VS de 1 à 0 l:Vs de O à 1 9.7.11 Registre Interface Série DATA Lecture Ce registre contiendra la donnée correcte du port en série après que le Drapeau de Lecture aura effectué la transition d'Occupé à Etat Prêt. 9.7.12 Interface 3-FILS Protocole Série vers KS0122 Pour l'ajustement des registres de Configuration dans la Puce de KS0122 le protocole est comme suit Un minimum de deux trames doit être transmis aux puces périphériques, La première Trame est pour établir l'index du registre de configuration La seconde Trame est pour la lecture ou l'écriture de la donnée (contenu du registre). Le Logiciel doit établir le registre de grandeur des Trames la bonne longueur et mettre le bit d'accès en série =1. Alors, le Logiciel doit charger tous les Octets requis pour la Trame avant de changer le registre de grandeur des Trames. La logique d'interface du CODEC attendra jusqu'à ce que tous les Octets soient chargés avant de commencer la mise en série de la Trame. Le premier transmis est pour établir l'index. Grandeur Trame = 3 Octets. Se référer à la figure 63. La seconde Trame est pour établir le registre. Grandeur Trame = 3. Après chaque octet de donnée, la puce autoincrémentera l'index de un, cela permet d'établir des registres consécutifs en envoyant des octets multiples des supports logiques d'interface du CODEC de données jusqu'à quatre octets de donnée. Quand une opération en série de lecture ou d'écriture est accomplie, le LOGICIEL doit vérifier le Drapeau de Lecture et d'Ecriture du Registre d'Etat pour une DATA correcte dans l'opération de lecture ou bien Drapeau Ecriture = prêt avant d'envoyer la trame suivante. L'exemple qui suit montre, étape par étape, l'établissement du registre de configuration de KS0122. Pour établir la valeur pour l'Octet 0 et l'Octet 1 de la Touche de Chrominance, l'index pour ce registre est 6AH pour l'Octet 0 et 6BH pour l'Octet 1, se référer aux feuilles de données de KS0122. Comme les deux registres ont un index consécutif, ces deux Octets peuvent être chargés dans une seule trame. D'abord l'index doit être établi comme suit Charger le registre de grandeur des trames (adresse - 04BO 0000h) de la valeur 83H (grandeur Trame = 3 et bit accès série à 1). Charger le registre ID : (Adresse = 04BO 0001h) de la valeur 03H. Charger l'Octet de données/contrôle : (Adresse - 04BO 0002H) de la valeur 08H, cela indique à KS0122 que l'Octet suivant est l'index. Charger le registre d'Index (Adresse = 04BO 0003H) de la valeur 6AH. L'interface série détectera une correspondance avec le contenu du registre de grandeur des trames et commencera à envoyer la trame, et le Drapeau d'Ecriture dans le registre d'état sera établi à l'état Occupé. Le Logiciel doit vérifier les Drapeaux dans le registre d'Etat avant de charger la Trame suivante. Quand les Drapeaux sont à l'état prêt, alors le Logiciel peut charger les valeurs pour la Trame suivante. CHAPITRE 10 PROCESSEUR DU TRAIN DE BITS 10.1 Ce chapitre décrit les conditions fonctionnelles pour la conception du Processeur du Train de Bits (BP) qui est l'un des moteurs clé du traitement de MSP pour des applications de compression et décompression de données vidéo. 10.2 Abréviations A/V Audio et vidéo BP Processeur du Train de Bits (Bloc MSP) CCU Unité Contrôle d'Antémémoire (Bloc MSP) CIF Format Intermédiaire commun qui a une résolution d'échantillonnage de luminance de 352 x 288 à 29,97 Hz DCT Transformation Cosinusoïdale Discrète DMA Accès Direct Mémoire DSM Support d'Information Numérique FBUS Bus Rapide (Bus Données Internes MSP) GOB Groupe de Blocs GSTN Réseau Téléphonique Commuté Général (également connu sous le nom de PSTN). HDD Entraîneur Disque Dur I/F Interface IOBUS Bus Entrée Sortie (Bus Périphérique Interne MSP) ISDN Réseau Numérique Intégré Commutation et Transmission ITU-T-601 Standard pour le codage numérique des signaux de télévision en couleurs qui a une résolution d'échantillonnage de luminance de 720 x 480 à 29,97 Hz et 720 x 576 à 25Hz, respectivement (appelé précédemment CCIR 601) mais la résolution affichage peut être soit 720 x 480 ou 704 x 480. LSB Bit le Moins Significatif LUT Table de Consultation MPEG Groupe d'Experts d'Images Mobiles MSB Bit le Plus Significatif MSP Processeur de Signaux Multimédia Samsung QCIF Quart-CIF qui a une résolution d'échantillonnage de luminance de 176 x 144 à 29,97 Hz RLC Code Longueur Déroulement et Niveau SDRAM Mémoire à Accès Aléatoire Dynamique Synchrone SIF Format Entrée Source pour standard vidéo MPEG-1 qui a une résolution d'échantillonnage de la luminance de 352 x 240 à 29,97 Hz pour NTSC et 352 x 288 à 25 Hz pour PAL TBD A Définir VLC Code Longueur Variable VP Processeur Vectoriel (Bloc MSP) 10.3 Caractéristiques Clés Supporte l'analyse syntaxique et la mise en forme pour la couche des tranches (ou GOB) et en-dessous dans les applications de codage et de décodage de MPEG-1, MPEG-2, H.261, et H.263. Accomplit le traitement de RLC en temps réel Accomplit le traitement du code de HUFFMAN en temps réel pour toutes les tables de HUFFMAN dont la liste est donnée dans les standards vidéo MPEG-1, MPEF-2, H.261, et H.263 Supporte deux règles de conversion du balayage en zig-zag aller/retour Interface IOBUS avec fréquence maximale transfert de 731,4 Mbits/sec (32 bits à 40 MHz) La fréquence maximale d'horloge de fonctionnement est de 40 MHz comprend une ROM de 9.2 kbits pour les tables de consultation du CODEC de HUFFMAN Comprend une SRAM interne de 320 octets Supporte des modes de changement de contexte de préemption et de coopération Le nombre de portes cibles pour le trajet de contrôle est de 6Kportes plus la RAM et la ROM. 10.4 Vue Générale Le Processeur du Train de Bits (BP) est l'un des quatre périphériques internes de MSP. C'est un bloc logique matériel spécialisé pour supporter divers trains de bits de divers standards de compression et de décompression vidéo. L'unité est particulièrement conçue pour un traitement du niveau des bits car VP et ARM7 à l'intérieur de MSP n'ont pas une architecture efficace pour de telles manipulations des bits. BP envoie et reçoit les données par un bus de 32 bits appelé lOBUS qui a une fréquence maximale de transfert de 732,4Mbits/sec. BP fonctionne en tant qu'unité indépendante de traitement et est sous le contrôle du logiciel soit par ARM7 ou VP. Plus particulièrement, BP code et décode toute information contenue dans une tranche ou couche de GOB et endessous et reçoit et transmet la donnée de/vers CCU. BP accomplit également une conversion en zig-zag aller et retour et code et décode le coefficient différentiel Cd. par ailleurs, BP récupère un vecteur de mouvement en utilisant le vecteur de mouvement différentiel dans le décodage et accomplit l'opération inverse dans le codage, à l'exception des deux modes spéciaux qui suivent, le mode double prime dans le codage de MPEG2 et le mode de prédiction de progression dans le codage et le décodage de H.263. BP est supposé fonctionner en mode simplex, c'est à dire que, quand BP a commencé à traiter une tranche ou GOB, BP ne sera par interrompu jusqu'à ce que le traitement de la tranche ou GOB soit terminé. Cela implique qu'un mode duplex intégral puisse être accompli en imbriquant le codage et le décodage de tranches ou de GOB. Si ARM7 veut que BP passe instantanément à une autre tâche, cependant, BP supportera le mode de changement de contexte de préemption qui peut terminer le traitement de BP avant que la tranche courante ou GOB ne soit terminée. La figure 3 montre un schéma bloc de BP. Comme on peut le voir de la figure 3, BP comprend cinq blocs, l'Unité d'Interface de IOBUS, l'unité FIFO de VLC, la ROM de LUT de VLC, la Machine d'Etat de Contrôle, et l'Unité de Noyau de BP. Les données d'entrée et de sortie sont toutes manipulées par l'Unité d'Interface de IOBUS qui comprend une RAM à 16 x 32 bits. Elle supporte tous les mouvements de données et la demande d'interruption. L'Unité FIFO de VLC est prévue pour préparer le mot suivant de donnée pour l'opération de décodage des données et accomplir un tassement des données de sortie pour l'opération de codage des données. La ROM de la Table de consultation de VLC a une grandeur de 768 x 12 bits qui enregistre toute information nécessaire pour tout le traitement en code de HUFFMAN. La Machine d'Etat de Contrôle contrôle toutes les activités de codage et de décodage dans cette forme. L'Unité du Noyau de BP est un petit processeur qui comprend des additionneurs, un comparateur, un décaleur, un fichier de registres et une RAM de 128 x 16 bits. La manipulation des bits est possible du fait de ce noyau. 10.5 Définitions des Signaux Les signaux requis pour l'interface externe de BP sont indiqués au Tableau 23. Le signal qui se termine par les lettres " 1" signifie bas actif. Il faut noter que dans la colonne "direction" du Tableau 23, "B", "E", et "S" impliquent le signal bidirectionnel, le signal d'entrée et le signal de sortie, respectivement. TABLEAU 23 DEFINITIONS DES SIGNAUX DE BP Signaux Grandeur Direction Descriptions iOBUS[31:0] 32 B Bus adresses et données bidirectionnel multiplexé a 32 bits. Le maître doit libérer le signal en tant que à trois états si l'opération est terminée. IOB~rd~1 1 B Validation lecture à bas actif qui est la sortie du maître et l'entrée pour l'esclave pour toutes les transactions de lecture/écriture. Le maître doit libérer le signal en tant que trois états si l'opération est terminée. IOB~wr~1 1 B Validation écriture bas actif qui est la sortie du maître et l'entrée pour l'esclave pour toutes les transactions de lecture/ecriture. Le maître doit libérer le signal à trois états si l'opération est terminée. IOB~ready~1 1 B Signal bas actif qui est la sortie de l'esclave et l'entrée pour le maître pour notifier au maître le moment où la donnée est disponible pour une lecture en mode esclave. L'esclave doit libérer le signal à trois états si les opérations sont terminées. IOB~cs~bsp~1 1 E Signal sélection dispositif bas actif de l'arbitre vers BP pour traiter la demande quand l'adresse est verrouillée. Signaux Grandeur Direction Descriptions IOB~ale~1 1 E Echantillonnage d'adresse bas actif qui est la sortie de l'arbitre et l'entrée pour BP pour des opérations maître/esclave IOB~req~bap~1 1 S Demande bas actif de BP à l'arbitre pour devenir le maître d'une transaction de lecture ou d'écriture dans un bus. lOB~tsize[1:0] 2 B Données du maître à l'esclave pour dénoter la grandeur du transfert qui est égale à l'un des 4, 8, 12, et 16 octets. IOB~grant~bsp~ 1 E Signal d'accord bas actif de 1 l'arbitre à BP. Reset~1 1 E Remise à l'état initial système bas actif. CLK40M 1 E Horloge 40 MHz ARM7 IRQ 1 S Signal demande Interruption de BP pour ARM7 qui doit être effacé par ARM7. En réalité, ce signal d'interruption requis par BP est envoyé au Contrôleur d'Interruption qui est également un dispositif IOBUS. 10.6 Circulation de Données pour le Codage/Décodage Cette section comprend un exemple de circulation des données pour des applications typiques de codage et de décodages vidéo. Il faut noter que ce document ne décrit pas la circulation des données audio en détail. 10.6.1 Cas du Codage Etape El : Entrée Données A/V Brutes Il est courant de supposer que les signaux audio et vidéo reçus sont échantillonnés et mis sous forme numérique par des CODEC externes puis fournis au ASIC du client. Dans un environnement PC multimédia, cependant, un panneau de contrôleur de VGA comprend également un preneur de trames et une capture du son. Par conséquent, on suppose que la donnée A/V brute est fournie soit de ASIC du client ou bien de l'interface du Bus PCI. Aussi bien ASIC du client que l'interface du bus PCI comprennent un tampon de petite taille de 32 octets. La donnée dans ce tampon est transférée à la SDRAM externe par FBUS en utilisant la logique de DMA. Il faut noter que ce type de mouvement de données doit être initialisé par ARM7 après remise à l'état initial de l'alimentation en courant. Etape E2 : Préfiltration par VP D'abord, VP extrait la donnée d'image brute stockée dans la SDRAM dans l'antémémoire de données de VP (normalement, la région de Zone de Travail). Alors, VP accomplit une filtration temporelle et un cadrage spatial pour ces éléments d'image. En utilisant une préfiltration, la résolution de l'image est normalement convertie de la grandeur ITU-T-601 à la grandeur pour CIF ou QCIF. VP est également responsable de l'écriture du résultat préfiltré dans la SDRAM externe. Etape E3 : Compression des données par VP VP extrait la donnée préfiltrée de la SDRAM dans l'antémémoire de données de VP, de nouveau, pour accomplir une compression selon la règle suggérée par le standard correspondant. Normalement, VP accomplit DCT en direct, une quantification adaptive directe, une estimation du mouvement, une décision du type de macro bloc et ainsi de suite. A l'accomplissement de ces fonctions, VP doit écrire le résultat, comprenant une information appropriée d'en-tête dans l'antémémoire de données de VP, de nouveau. En réalité, cette région d'antémémoire de données de VP peut être utilisée en tant que tampon d'entrée de BP. Pour vérifier l'état du tampon, un signal drapeau est utilisé. Etape E4: Initialisation de BP par ARM7 Avant que BP ne commence réellement son opération, ARM7 doit initialiser les registres internes de BP. Il faut noter que cette initialisation ne doit pas être accomplie pendant les 128 cycles après avoir revendiqué le signal de remise à l'état initial de l'alimentation en courant. Plus particulièrement, ARM7 doit initialiser les adresses des tampons d'entrée et de sortie et les registres d'ordre de BP et désigner le nombre de macro-blocs à coder dans cette tranche ou GOB. Après initialisation de ces registres, ARM7 doit établir le drapeau de validation de BP pour activer le traitement de BP. Etape E5 : Traitement du train de bits par BP Si une rangée du double tampon d'entrée est pleine, BP commence à lire la donnée par IOBUS. BP peut lire la donnée uniquement si le tampon est plein. Alors BP convertit la donnée des 8 x 8 blocs en formant en zigzag et le résultat est directement codé par RLC et HUFFMAN. Le résultat codé par HUFFMAN peut être transmis soit à l'antémémoire de données de ARM7 ou bien à la SDRAM. BP doit écrire dans le tampon de sortie seulement si le tampon est vide pour empêcher un débordement du tampon. Quand la fin du traitement est atteinte (i.e., le nombre de macro-blocs traités est égal au nombre de macro-blocs désignés par ARM7), BP doit interrompre ARM7 avec la position des octets et des bits de la dernière donnée et le traitement de la tranche courante ou de GOB. Etape E6 : Formation du train de bits et multiplexage A/V par ARM7. ARM7 forme le train de bits final en combinant la donnée codée selon HUFFMAN et les paramètres de syntaxe et en répétant le procédé. ARM7 est également responsable de la manipulation des couches supérieures de la tranche ou de GOB et des trains de bits vidéo et audio en multiplex. Le résultat est écrit dans la SDRAM par ARM7. Etape E7 : Interface du Réseau par VP (option pour conférence vidéo) Pour des applications de vidéophone ou de conférence vidéo, le résultat jusqu'à l'Etape E6 peut encore être traité par VP pour accomplir une fonction d'interface de réseau comme le modem V.34 pour le vidéophone GSTN H.324 ou l'interface série 1.400 pour le terminal de conférence vidéo H.320 ISDN. Etape E8 : Sortie train final de bits Le train final de bits enregistré dans la SDRAM sera transféré soit au ASIC du client ou à l'interface du bus PCI. Normalement, le bloc de ASIC du client sera utilisé pour l'interface du réseau et l'interface du bus PCI sera utilisée pour l'enregistrement des données dans un dispositif d'enregistrement (e.g., HDD). Ce mouvement de données utilise le transfert de données de DMA qu'il faut initialiser par ARM7. 10.6.2 Cas du Décodage Etape Dol : Extraction du train de bits Dans un environnement de PC multimédia, le train de bits comprimé sera fourni soit de l'entraîneur de CD-ROM, de HDD ou de l'interface du réseau. Par conséquent, on suppose que la source du train de bits pourrait être soit ASIC du client ou bien l'interface du bus PCI. La donnée enregistrée dans le tampon de 32 octets de ASIC du client ou l'interface du bus PCI sera transférée à la SDRAM en utilisant DMA. Etape D2 : Interface Réseau par VP (option pour conférence vidéo). Dans la conférence vidéo, la donnée est d'abord traitée par VP pour accomplir des routines d'interface de réseau série V.34 ou 1.400. VP écrira le résultat dans la SDRAM. Etape D3 Démultiplexage A/V et analyse syntaxique de l'en-tête par ARM7 ARM7 déplace la donnée dans la SDRAM vers l'antémémoire de données de ARM7 et accomplit un démultiplexage des trains de bits A/V. Pour le train de bits vidéo, ARM7 est également responsable de la recherche de tous les codes de départ et des en-têtes d'analyse syntaxique jusqu'à ce qu'une tranche ou GOB soit détecté. Les paramètres de syntaxe du train de bits décodé peuvent être stockés dans la région spéciale de la SDRAM par ARM7. Les trains de bits audio et vidéo démultiplexés sont transférés à chacun des tampons de fréquence dans la SDRAM. Chaque application peut avoir une grandeur différente pour le tampon de fréquence. Par exemple MPEG-1 recommande 370 Kbits et MPEG-2 MP&commat;ML recommande 1,835 Mbits pour la grandeur du tampon de fréquence vidéo. Etape D4 : Initialisation de BP par ARM7 Le processus pour cette étape est le même qu'à l'Etape E4 dans la sous section précédente, à l'exception du fait que l'initialisation du registre pour le nombre de macro-blocs à coder n'est pas requise. De nouveau, l'initialisation ne doit pas être accomplie pendant les 128 cycles après revendication du signal de remise à l'état initial de mise en circuit. Etape D5 : Traitement du train de bits par BP Après initialisation de BP pour la tranche particulière ou GOB, le restant des données à décomprimer est transmis au tampon double d'entrée. BP est responsable de la lecture de la donnée par le fait que IOBUS vérifie l'état des drapeaux complets. BP doit analyser les paramètres de syntaxe si la donnée d'entrée contient le mot d'en-tête. Si BP reconnaître que les bits suivants sont en code de Huffman, il accomplit le décodage de Huffman sur au plus quatre cycles pour chaque code de Huffman. Si les codes de Huffman sont pour des coefficients AC de DCT, le résultat décodé de Huffman est décodé en RLC pour générer 64 composants d'éléments d'image. Les éléments reconstruits d'image sont inversement convertis en zigzag et finalement transmis au double tampon de sortie pour laisser VP accomplir la quantification directe. BP doit continuer le traitement jusqu'à ce qu'un code de départ non tranche ou non GOB soit détecté. S'ils sont détectés, BP doit interrompre ARM7 avec l'information de position de l'octet et du bit pour la dernière donnée utilisée et terminer le traitement. ARM7 doit alors rechercher le code de départ de la tranche ou de GOB suivant et répéter le processus. Etape D6 : Décompression des données de VP En utilisant le résultat de l'Etape D5, VP doit accomplir une quantification inverse, DCT inverse et une reconstruction de l'image en utilisant des vecteurs de mouvement. Après accomplissement du décodage, VP enregistrera le résultat dans la SDRAM. Etape D7 : Post-traitement de VP Avant que la donnée vidéo et audio ne soit finalement transmise aux convertisseurs numériques-analogiques, les éléments d'image seront post-traités par VP pour obtenir la résolution de sortie et la qualité de l'image souhaitées. Le résultat sera de nouveau enregistré dans la SDRAM. Etape D8 : Sortie Données A/V brutes Enfin, la donnée audio et vidéo reconstruite dans la SDRAM sortira en utilisant DMA. De nouveau, ce type de mouvement de donnée doit être initialisé par ARM7. Comme la technique de recouvrement vidéo récente permet au bus PCI de transmettre la donnée de source vidéo, la donnée brute finale sera transférée soit à ASIC du client ou à l'interface du bus PCI. 10.7 Modèle de programmation 10.7.1 Adresse Dispositif de Base de BP BP a l'adresse du dispositif de base à 32 bits qui suit: où est 5 bits qui est spécifié par l'adresse du dispositif PCI de base DE MSP est 7 bits qi est égal à 7'blllllOO, et est 20 bits qui est assigné pour les registres internes de BP. Par conséquent, la gamme d'adresses assignée pour BP dans la totalité de la carte d'adresses des dispositifs E/S de MSP est de 27'h 7ci 0000 à 27'h 7CF~FFFF. 10.7.2 Description Registres Internes L'ensemble des registres internes est décrit au Tableau 24. Tous les registres donnés au Tableau 24 peuvent être lus et écrits par ARM7 ou VP. TABLEAU 24 REGISTRES INTERNES DE BP Adress~Offset Nom du Registre Grandeur Description (Hex) 0 0000 BP MODE[31:0] 32 Registre mode traitement BP 0 0004 BP CONTROL(31:0] 32 Registre contrôle BP 0 0008 IBUFO START[31:0] 32 Adresse départ tampon entrée 0 0 000C IBUFO END[31:0] 32 Adresse fin tampon entrée 0 0 0010 IBUF1 START[31:0] 32 Adresse départ tampon entrée 1 0 0014 IBUFi END[31:0] 32 ~ Adresse fin tampon entrée 1 0 0018 OBUFO START[31:0] 32 Adresse départ tampon sortie 0 0 001C OBUFO END[31:0] 32 Adresse fin tampon sortie 0 0 0020 OBUF1 START[31:0] 32 Adresse départ tampon sortie 1 o 0024 OBUF1 END[31:0] 32 Adresse fin tampon sortie 1 0~0028 SAVE~ADR[31:0] 32 Adresse départ réserve contexte 0~002C VALID~BYTE~ADR 32 Adresse octet dernière donnée [31:0] utilisée dans le double tampon d'entrée ou de sortie de ligne 0~0030 BP STATUS[O] 1 LSB du registre d'état de BP 0~0031 BP~STATUS[1] 1 Deuxième bit le moins significatif Oo04E BP~STATUS[30] 1 Deuxième bit le plus significatif 0 004F BP STATUS[31] 1 NSB du registre d'état de BP 0 0050 BP STATUS[31:O] 32 Registre d'état de BP O~0054 BP~INT~MASK[15: 0] 32 Registre masque interruption BP V~MB~SIZE[7:0] grandeurs verticale et H~MB~SIZE[7:0] horizontale de l'image en nombres de macro-blocs Adress~Offset Nom du Registre Grandeur Description (Hex) 0~0058 ARM7~IRQ[0] 1 Broche demande d'interruption ARM7 0~0059 - - - Réservé pour extension future 0~005F 0~0060 BP~CACHE 8 8 Région antémémoire BP 0~019F [Address] 0~01A0 - - - Réservé pour extension future F~FFFF BP~MODE [31:0] (lecture seulement, pas de valeur de défaut) - Ce registre est pour dénoter le type de standard vidéo et diverses informations du niveau de l'image. Des détails peuvent être trouvés dans la sous section 10.8.1 BP~CONTROL[31:0] (lecture/écriture, valeur de défaut "32'hOOOO~OOOO") - Ce registre comprend divers paramètres de contrôle pour les opérations de BP. ARM7 ou VP établira chaque drapeau dans ce registre et certains drapeaux seront remis à l'état initial par BP. La description des bits peut être trouvée dans la sous-section 10.8.2 IBUFO START[31:O] (lecture/écriture, pas de valeurs de défaut) - Ce registre est initialisé par ARM7 pour notifier l'adresse de départ pour le tampon d'entrée O du double tampon d'entrée de BP. Il faut noter que la valeur d'initialisation pour IBUFO~START doit toujours être plus petite que IBUFO~END et IBUFO~START[3:0] doit être égale à 4'b0000. L'usage est décrit à la section 10.11 IBUFO END[31:O] (lecture seulement, pas de valeurs de défaut) - ce registre est pour dénoter les adresses de fin pour le tampon d'entrée 0 du double tampon d'entrée de BP. L'usage est décrit à la section 10.11 IBUF1~START[31:0] (lecture/écriture, pas de valeurs de défaut) - ce registre est initialisé par ARM7 pour notifier l'adresse de départ pour le tampon d'entrée 1 du double tampon d'entrée de BP. Il faut noter que la valeur d'initialisation pour IBUF1~START doit toujours être plus petite que IBUF1~END et IBUF1~START[3:0] doit être égale à 4'b0000. L'usage est décrit à la section 10.11 IBUF1 END[31:O] (lecture seulement, pas de valeurs de défaut) - ce registre est pour dénoter les adresses de fin pour le tampon d'entrée 1 du double tampon d'entrée de BP. L'usage est décrit à la section 10.11 OBUFO~START[31:0] (lecture/écriture pas de valeurs de défaut) - ce registre est initialisé par ARM7 pour notifier l'adresse de départ pour le tampon de sortie O du double tampon de sortie de BP. Noter que la valeur d'initialisation pour OBUFO~START doit toujours être plus petite que OBUFO~END et OBUFoSTART[3:O] doit être égale à 4'bOOOO. L'usage est décrit à la section 10.11. OBUFO END[31:O] (lecture seulement, pas de valeurs de défaut) - ce registre est pour dénoter les adresses de fin pour le tampon de sortie O du double tampon de sortie de BP. L'usage est décrit à la section 10.11. * OBUF1~START[31:O] (lecture/écriture, pas de valeurs de défaut) - ce registre est initialisé par ARM7 pour notifier l'adresse de départ pour le tampon de sortie 1 du double tampon de sortie de BP. Il faut noter que la valeur d'initialisation pour OBUF1~START doit toujours être plus petite que OBUF1~END et OBUF1 START[3:O] doit être égale à 4'b0000. L'usage est décrit à la section 10.11. OBUF1~END[31:0] (lecture seulement, pas de valeurs de défaut) - ce registre est pour dénoter les adresses de fin pour le tampon de sortie 1 du double tampon de sortie de BP. L'usage est décrit à la section 10.11. SAVE ADR[31:O] (lecture seulement, pas de valeur de défaut) - ce registre est pour dénoter l'adresse de départ de la SDRAM pour conserver le contexte interne de BP quand le mode de commutation de contexte avec préemption est requis. Une description en rapport peut être trouvée dans la sous-section 10.12.1. VALID~BYTE~ADR[31:0] (lecture/écriture, pas de valeur de défaut) - ce registre est pour indiquer la position du dernier octet valable de données du double tampon d'entrée dans le décodage ou du double tampon de sortie dans le codage. Le but de ce registre est pour l'établissement d'une liaison de travail entre ARM7 et BP. En général, une information additionnelle pour la position du bit correcte de la donnée d'octet correcte est également requise, qui est incorporée dans le registre de BP~CONTROL[31:O]. Des détails peuvent être trouvés à la section 10.13. BP~STATUS[31:0] (lecture/écriture, la valeur de défaut est de "32'h0000~0000") - ce registre est pour dénoter divers états internes de BP. Chaque position de bits dans les deux octets inferieurs (i.e., BP~STATUS[15:0]) est une condition d'interruption qui peut établir ARM7~IRQ à "1". On peut accéder à ce registre de deux façons. ARM7 ou VP peut lire ou écrire par rapport à ce registre plein de 32 bits en utilisant l'adresse 27'h7C0~0050. Cependant, en général, ARM7 et VP préféreront écrire (ou remettre à l'état initial) le contenu du registre de BP~STATUS, bit par bit. BP supporte également cette caractéristique par affectation de l'adresse comprise entre 27'h7C0~0030 et 27'h7C0~004F pour chaque bit de BP~STATUS. La description détaillée des bits peut être trouvée à la sous-section 10.8.3. BP~INT~MASK[l5:0] (lecture seulement, valeur de défaut : "16hFFFF") - chaque bit dans ce registre correspond à une condition d'interruption donnée par BP~STATUS[15:0] et est traité dans une porte logique ET avec cette condition avant son chargement dans BP~STATUS[15:0]. Si un bit de masque est établi à "O", la condition d'interruption correspondante est établie inconditionnellement à "0" (i.e., inhibée). Des détails pour l'interruption peuvent être trouvés à la section 10.9. V~MB~SIZE[7:0] (lecture seulement, pas de valeur de défaut) - ce registre est pour désigner la grandeur verticale de l'image à coder ou à décoder. Il faut noter que la valeur doit être décrite en nombre de macro-blocs. par exemple si la grandeur vecticale est de 288 éléments d'image, V MB SIZE[7:O] = 288/16=18. AMR7 est responsable pour établir cette valeur avant tout départ de l'opération de codage ou de décodage de BP. H~MB~SIZE[7:0] (lecture seulement, pas de valeur de défaut) - ce registre est pour désigner la grandeur horizontale de l'image à coder ou à décoder. I1 faut noter que la valeur doit être décrite en nombre de macro-blocs. Par exemple, si la grandeur horizontale est de 352 éléments d'image, on a H~MB~SIZE[7:0] = 352 / 16 = 22. ARM7 est responsable pour établir cette valeur avant tout départ de l'opération de codage ou de décodage de BP. ARM7 IRQ[O] (écriture seulement, valeur de défaut est "O") - ce registre est un drapeau à 1 bit pour demander l'interruption à ARM7 et est directement connecté au port de sortie ARM7~IRQ. Ce drapeau sera établi si un bit de BP~STATUS[15:0] est établi à "1". ARM7 est responsable pour remettre ce drapeau à l'état initial. 10.8 Format Mot d'Entrée/Sortie de BP Cette section couvre le format des mots de données de macro-bloc et de données d'ordre pour l'entrée et la sortie de BP. 10.8.1 Format Registre BP-Mode Le registre BP~MODE de 32 bits à l'adresse de 27'h7C0~0000 a le format suivant donné au Tableau 25. I1 faut noter que BP~MODE[31] = PARAM~SET2(7) et BP~MODE[0] = SF[O]. TABLEAU 25 FORMAT REGISTRE BP~MODE Octet/Bit 7 6 5 4 3 2 i 1 O Octet 0 PS PT - SF Octet 1 PARAM~SET0 Octet 2 PARAM~SET1 Octet 3 PARAM~SET2 # Format~standard (SF) - standard vidéo à utiliser qui est défini au Tableau 26. SF doit toujours être spécifié par ARM7 avant que BP ne soit validé pour toute les applications de codage et de décodage vidéo. TABLEAU 26 DEFINITION DE SF Octet0 [2:0] Format Standard 3'b000 Codage vidéo MPEG-1 3'b001 Décodage vidéo MPEG-1 3'b010 Codage vidéo MPEG-2 3'b011 Décodage vidéo MPEG-2 3'b100 Codage H.261 3'blO1 Décodage H.261 3'bllO Codage H.263 3'blll Décodage H.263 # picture~type (PT) - Type de codage d'image qui est défini au Tableau 27. Il faut noter que la valeur 00 pour PT signifie des cas spéciaux pour des applications de MPEG-1, MPEG-2 et H.263. En particulier, l'image D est assignée en tant que type d'image pour MPEG-2 bien qu'on ne doive pas l'utiliser dans MPEG-2. Cela est dû au fait que le train de bits de MPEG-1 est un sous-groupe du train de bits de MPEG-2. TABLEAU 27 DEFINITION DE PT Octet0 MPEG-1 MPEG-2 H.261 H.263 [5:4] 2'b00 Image D Image D interdit bloc-PB 2'b01 intra intra interdit intra 2'b10 prédictif prédictif toujours inter 2'b11 bidirectionnel bidirectionnel interdit interdit # picture~structure (PS) - Information de structure de l'image qui est définie au Tableau 28. De nouveau, la valeur 00 pour PS est interdite et a pour résultat une erreur. TABLEAU 28 DEFINITION DE PS OctetO MPEG-1 MPEG-2 H.261 H.263 [7:6] 2'b00 interdit interdit interdit interdit 2'b01 interdit zone interdit interdit supérieure 2'b10 interdit zone interdit interdit inférieure 2'bll trame trame trame trame parameter~setO, 1 et 2 (PARAM~SETO, PARAM~SETl, PARAM~SET2) - ces trois octets sont pour dénoter divers paramètres nécessaires pour des applications de MPEG-1, MPEG-2 et H.263. Les définitions pour chaque groupe de paramètres sont décrites aux Tableaux 29 et 30. TABLEAU 29 DEFINITION DE PARAM~SETO Octet / 7 6 5 4 3 2 1 0 Bit Octetl VSF AS IVF CMV FPFD TFF IDP CPM AP # intra~dc~precision (IDP) - paramètre précision intra~cd à 2 bits défini dans MPEG-2 qui doit être établi à 00 dans une application de MPEG-1. top~field~first (TFF) - drapeau pour MPEG-2 utilisé dans le codage et le décodage du vecteur de mouvement. frame~pred~frame~dct (FPFD) - drapeau pour MPEG-2 pour indiquer qu'on utilise DCT de trame et prédiction de trame. concealment~motion~vectors (CMV) ou advanced~predic tion~mode (AP) - dans MPEG-2, ce drapeau est utilisé pour indiquer que les vecteurs de mouvement sont utilisés dans les macro-blocs intra. Dans H.263, ce drapeau est établi à 1 s'il y a un mode de prédiction avancée, autrement il doit être établi à 0. Pour d'autres standards, ce drapeau doit être établi à 0. intra~vlc~format (IVF) - un drapeau pour MPEG-2 pour déterminer le type de table de VLC pour les macro blocs intra. alternate~scan (AS) - un drapeau pour MPEG-2 pour déterminer l'ordre des coefficients à coder et à décoder. vertical size flag (VSF) ou continuous~presence~multipoint (CPM) - dans MPEG-1 et MPEG-2, ce drapeau est établi à 1 quand la grandeur verticale de l'image dépasse 2 800 lignes autrement il doit être établi à 0. Dans H.263, ce drapeau est établi à 1 quand on utilise un mode multipoints de présence continue, autrement il doit être établi à 0. TABLEAU 30 DEFINITION DE PARAM~SET1 et PARAM~SET2 MPEG-1 Octet / Bit 7 6 5 4 3 2 1 0 Octet 2 Réservé full pel forward vector forward f code Octet 3 Réservé full pel~backward~vector backward f code MPEG-2 Octet / Bit 7 [ 6 5 4 3 2 1 O Octet 2 forward vertical f code forward horizontal f code octet 3 backward vertical f code backward horizontal f code 10.8.2 Format Registre BP-CONTROL La description des bits pour le registre de BP~CONTROL [31:0] (adresse 27'h 7C0~0004) est montrée au Tableau 31. TABLEAU 31 FORMAT REGISTRE BP~CONTROL Position Nom Lecture / Description Bit Drapeau Ecriture o BP EN L/E Validation traitement BP 1 SOFTPESET L Remise à l'état initial logiciel BP 2 PAUSE L Gel traitement BP 3 DETECT~START~ L Détecter code départ suivant CODE 4 STEP L Traitement mode étape BP 5 CTX 5WITCH L Demande changement contexte 6 CTX MODE L Mode changement contexte 7 CTX RELOAD L Demande rechargement contexte 8 ERR HANDLE MODE L Mode manipulation erreur 9 - - Réservé 10 Réservé 15 16 NO~MBS [0] L Nombre de macro-blocs à coder dans la tranche courante ou GOB 31 NO MBS(15) BP~enable (BP EN) - quand ce drapeau est établi à "1" par ARM7 ou VP, BP commence le traitement. Par conséquent, toutes les autres combinaisons des registres doivent être effectuées avant que ce drapeau ne soit établi. Si BP termine le traitement, ce drapeau est effacé par BP. software~reset (SOFT~RESET) - quand ce drapeau est établi à "1" par ARM7 ou VP, BP arrête le traitement courant, remet tous les registres internes à l'état de défaut et tombe en état d'inactivité. ARM7 peut redébuter le traitement de BP en établissant le drapeau BP~EN. Le signal de remise à l'état initial du matériel de BP est bas actif. pause (PAUSE) - quand ce drapeau est établi à "1" par ARM7 ou VP, BP gèle le déroulement du processus courant. Les utilisateurs peuvent reprendre l'opération de pause en établissant le drapeau BP~EN. detect~start~code (DETECT~START~CODE) - quand ce drapeau est établi à "1" par ARM7 ou VP, BP trouve le code de départ sivant parmi les données dans IBUFO. Ainsi, l'utilisateur doit établir les adresses appropriées pour IBUFO~START et IBUFO~END. Il faut que cet ordre fonctionne bien uniquement si BP est à un état d'inactivité. Ainsi ARM7 doit envoyer l'odre de remise à l'état initial du logiciel d'abord à BP avant d'envoyer cet ordre si BP n'est pas inactif. step (STEP) - quand ce drapeau est établi à "1" par ARM7 ou VP, BP saute une étape d'un état du déroulement du processus courant. Cela est une caractéristique très utile pour la mise au point. ARM7 doit envoyer l'odre de pause d'abord pour valider l'opération de saut. context switchingrequest (CTX~SWITCH) - quand ce drapeau est établi à "1" par ARM7, BP accomplit soit un changement de contexte avec préemption ou avec coopération selon le contenu de CTX~MODE. Des détails peuvent être trouvés à la section 10.12. context~switching~mode (CTX~MODE) - qand ce drapeau est établi à "1" par ARM7 ou VP avec l'établissement de CTX~SWITCH à "1", BP accomplit le mode de changement de contexte avec préemption. S'il est établi à "O" avec ajustement de CTX~SWITCH à "1", BP accomplit le mode de changement de contexte avec coopération. Il faut noter que l'établissement de CTX~MODE sans établissement de CTX~SWITCH à "1" n'affecte pas le traitement de BP. Des détails pour le changement de contexte peuvent être trouvés à la section 10.12. context~reload~request (CTXRELOAD) - quand ce drapeau est établi à "1" par ARM7 ou VP, BP recharge le contexte précédemment conservé dans la SDRAM. BP est responsable de la lecture du contexte qui est enregistré à l'adresse SAVE~ADR[31:0]. Des détails pour le changement du contexte peuvent être trouvés à la section 10.12. error~handle~mode (ERRHANDLEMODE) - ce drapeau est utilisé pour accélérer le processus de redressement d'erreur de BP quand une erreur se produit dans le train de bits comprimé transmis. Quand le train de bits reçu a une donnée incorrecte, BP doit interrompre ARM7 et vérifier le contenu de ce drapeau. Quand ce drapeau est établi à "1", BP trouve automatiquement le code de départ suivant. Si le code de départ est pour une tranche ou GOB, BP reprend le traitement. Quand ce drapeau est établi à "O", BP doit tomber à l'état d'inactivité sans chercher le code de départ suivant. Des détails pour cet établissement d'une liaison de travail entre BP et ARM7 sont décrits à la section 10.13. number~of~macroblocks~to~be~encoded (NO~MBS[15:0]) - ce registre comprend l'entier sans signe de 16 bits qui indique le nombre de macro blocs à coder dans cette tranche ou GOB. En utilisant cette résolution binaire, on peut coder, en une tranche ou GOB, jusqu'à 65535 macro-blocs. Là, la valeur "0", nest pas permise en tant que nombre de macro-blocs. 10.8.3 Format Registre BP STATUTS La description des bits du registre BP~STATUS[31:0] (adresse 27'h 7C0~0050) est montrée au Tableau 32. TABLEAU 32 FORMAT REGISTRE BP~STATUTS Position Nom Lecture / Description Bit Drapeau Ecriture 0 IBUFO~DONE E IBUFO vide 1 IFUB1 DONE E IBUF1 vide 2 OBUFO FULL E IBUFO plein 3 OBUF1 FULL E IBUF1 plein 4 BP DONE E Traitement BP effectué 5 CTx SW DONE E Prêt pour changement contexte 6 CTx RELOAD DONE E Rechargement contexte effectué 7 - - réservé 8 BP ERR E Conditions erreur BP 9 - - - réservé 15 16 IBUF0 FULL L/E Tampon 0 entrée BP plein 17 IBUF1 FULL L/E Tampon 1 entrée BP plein 18 OBUF0 DONE L/E Tampon 0 sortie BP vide 19 OBUF1 DONE L/E Tampon 1 sortie BP vide 20 VALID~BIT~POS[2:0] L/E Position Bit parmi données - stockées à VALID~BYTE~ADR d'où 22 le traitement suivant débute 23 - - réservé 24 E - BP~ERR~CODE!7:O] Code erreur BP 31 input buffer Obone (IBUFO~DONE) - un drapeau pour notifier que la donnée dans le tampon O est totalement consommée par BP. Ce drapeau est établi par BP et est effacé par ARM7 ou VP. I1 faut noter que ce drapeau est une condition d'interruption. # input~buffer~1~done (IBUF1~DONE) - un drapeau pour notifier que la donnée dans le tampon d'entrée 1 est totalement consommée par BP. Ce drapeau est établi par BP et est effacé par ARM7 ou VP. I1 faut noter que ce drapeau est une condition à d'interruption. e output~buffer~O~full (OBUFO~FULL) - un drapeau pour notifier que le tampon de sortie O est rempli par BP. Ce drapeau est établi par BP et est effacé par ARM7 ou VP. I1 faut noter que ce drapeau est une condition d'interruption. output buffer 1 full (OBUF1~FULL) - un drapeau pour notifier que le tampon de sortie 1 est rempli par BP. Ce drapeau est établi par BP et est effacé par ARM7 ou VP. Noter que ce drapeau est une condition d'interruption. BP~processingdone (BP~DONE) - un drapeau pour notifier que BP a terminé le codage d'une tranche ou GOB ou bien a détecté un code de départ non tranche ou non GOB dans le cas du décodage. Ce drapeau est établi BP et est effacé par ARM7 ou VP. Noter que ce drapeau est une condition d'interruption. # context~switching~done (CTX~SW~DONE) - un drapeau pour notifier que BP est prêt à passer à une autre tâche en mode de changement de contexte. Ce drapeau est établi par BP et est effacé par ARM7 ou VP. I1 faut noter que ce drapeau est une condition d'interruption. context~reload~done (CTX~RELOAD~DONE) - un drapeau pour notifier que BP a terminé l'opération de rechargement pour le contexte conservé de l'adresse SAV~ADR[3:O]. Ce drapeau est établi par BP et est effacé par ARM7 ou VP. Noter que ce drapeau est une condition d'interruption. BP erroyflag (BPERR) - un drapeau pour notifier qu'une erreur s'est produite dans BP lors du traitement de la donnée. Ce drapeau est établi quand BP~ERR~CODE[7:0] (=BP~STATUS[31:24] n'est pas égal à zéro. Des détails peuvent être trouvés à la sous section 10.9.2. input~buffer~0~full (IBUFO~FULL) - un drapeau pour indiquer que la donnée dans le tampon d'entrée est introduite par ARM7 ou VP. Ce drapeau est établi par ARM7 ou VP et est effacé par BP. input~buffer~1~full (IBUF1~FULL) -un drapeau pour indiquer que la donnée dans le tampon d'entrée 1 est produite par ARM7 ou VP. Ce drapeau est établi par ARM7 ou VP et est effacé par BP. output~buffer~O~done (OBUFO~DONE) - un drapeau pour indiquer que la donnée dans le tampon de sortie 0 est totalement consommée par ARM7 ou VP. Ce drapeau est établi par ARM7 ou VP et est effacé par BP. e outputbu f feylbone (OBUF1~DONE) - un drapeau pour indiquer que la donnée dans le tampon de sortie 1 est totalement consommée par ARM7 ou VP. Ce drapeau est établi par ARM7 ou VP et est effacé par BP. valid~bit~position (VALID~BIT~POS[2:0]) - Information de 3 bits pour indiquer la position de bits corrects dans l'octet de données stocké à VALID~BYTE~ADR[31:0] pour le traitement suivant. Dans le codage vidéo, BP doit établir la valeur et ARM7 doit commencer le processus suivant à partir de cette position de bit. Dans le décodage vidéo, ARM7 doit établir cette valeur et BP doit commencer le traitement à partir de cette position de bit. BP BP~error~code (BP~ERR~CODE[7:0]) - Information de 8 bits pour notifier quel type d'erreur s'est produite dans BP. La valeur zéro signifie qu'aucune erreur ne s'est produite. Des détails peuvent être trouvés à la section 10.9.2. 10.8.4 Format Donnée d'Entrée pour le Décodage et Format donnée de Sortie pour le codage Dans ce cas, la donnée consiste en réalité en le train de bits comprimé. La donnée peut indiquer les codes de départ, les paramètres d'en-tête et la donnée comprimée selon le standard correspondant. Ce traint de bits est tassé octet par octet mais ne nécessite par un alignement des octets dans certaines applications. Il faut noter que le train de bits peut inclure la donnée pour plusieurs tranches ou GOB. 10.8.5 Format Donnée d'Entrée pour le Codage et Format Donnée de Sortie pour le décodage Dans ce cas, la donnée se compose en réalité d'une information d'en-tête de macro-blocs, d'une donnée de mouvement et d'une donnée de coefficients d'éléments d'images. Le format pour chaque type de donnée est défini dans ce qui suit. 10.8.5.1 Mot d'en-Tête du Macro-bloc L'en-tête du macro-bloc doit toujours consister en 6 octets et avoir le format de donnée qui suit donné au Tableau 33. TABLEAU 33 FORMAT MOT D'EN-TÊTE DU MACRO-BLOC Octet / 7 6 5 4 3 3 2 1 0 Bit Octet 0 VMA GRNO Octet 1 HMA MBPS Octet 2 MT DT MB MF Q P I LF M4 Octet 3 Réservé Q SCALE Octet 4 CBP 1 CBP 0 Octet 5 Réservé CBP 1 Octet 6 Réservé FID | LCI Octet 7 Réservé Octet 8 MBA~INC Octet 9 sortie seulement) Octet 10 PRE~DC~Y Octet 11 (sortie seulement) Octet 12 PRE~DE~Cb Octet 13 (sortie seulement) Octet 14 PRE~DC~Cr octet 15 (sortie seulement) Là, les paramètres donnés dans le tableau ci-dessus sont défininis comme suit Adresse verticale macro-bloc (VMA) ou group~number (GRNO) - cet octet indique la position verticale du macro-bloc qui peut avoir une valeur de 1 à 255. I1 faut noter que la première position verticale est numérotée 1 et non pas 0. Dans un cas exceptionnel, dans le codage de H.261, cette zone désigne l'information de nombre de groupes (group~number) qui dit la position du groupe des blocs. Adresse horizontale macro-bloc (HMA) ou macroblock~~position (MBPS) - cette zone indique la position horizontale du macro bloc qui peut avoir une valeur de 1 à 255. Il faut noter que la première position horizontale est numérotée par 1 et non 0. Dans un cas exceptionnel, le codage de H.261, cette zone désigne l'une des 33 positions possibles du macro-bloc parmi les GOB. macroblock~intra (I) - Si le macro-bloc courant est codé intra, il est établi à 1. Autrement, il est établi à 0. macroblock~pattern (P) - si le macro bloc courant comprend des blocs codés, il est établi à 1. Autrement, il est établi à 0. macroblock~quant (Q) - si le macro bloc courant a un nouveau paramètre de cadrage de quantification, il est établi à 1. Autrement, il est établi à 0. e macroblock~motion~forward (MF) - si le macro-bloc courant est prédit vers l'avant, il est établi à 1. Autrement, il est établi à 0. macroblock~motion~backward (MB) - si le macro-bloc courant est prédit vers l'arrière ou comprend B~blocs dans H.263, il est établi à 1. Autrement, il est établi à 0. est DCT codé par bloc, il est établi à 0. Dans H.261 ce drapeau est établi si le filtre en boucle est utilisé dans le macro-bloc courant. Autrement, il est établi à 0. Dans H.263, si le macro-bloc courant utilise le mode de prédiction avancée, il est établi à 1. Autrement il est établi à 0. # motion~type (MT) - cette zone à 2 bits indique le frame~motion~type ou field~motion~type (type de mouvement de bloc ou type de mouvement de zone) utilisé dans MPEG-2, qui a la signification suivante comme aux Tableaux 34 et 35. Il faut noter que la valeur 00 est réservée. TABLEAU 34 Signification de frame~motion~type Code Type motion~vector~count mv~format dmv Prédiction 00 Réservé 01 base zone 2 zone 0 10 base trame 1 trame 0 10 base trame 1 trame O 11 prime double 1 zone 1 TABLEAU 35 Signification de field~motion~type Code Type motion~vector~count mv~format dmv Prédiction 00 Réservé 01 base zone 1 zone 0 10 16x8 MC 2 zone O 11 prime double 1 zone = 1 quantizer~scale (QSCALE) - un entier sans signe compris entre 1 et 31 utilisé pour le cadrage du niveau de reconstruction des niveaux de coefficient de DCT. Toute en-tête de macro-bloc doit inclure une valeur appropriée pour ce paramètre, bien que la valeur soit la même que celle du macro-bloc précédent (c'est à dire, macroblock quant est zéro). Dans le codage, l'utilisateur est responsable de l'écriture de la bonne valeur dans cette zone. Dans le décodage, BP écrit la valeur de quantizer~scale décodée selon Huffman dans cette zone. Si le macro bloc courant n'inclut pas le code de Huffman pour cette zone, BP écrit la valeur de cadrage du macro bloc précédent. # coded~block~pattern~0 (CBP~0) - un code de configuration à 6 bits utilisé pour dénoter les blocs codés dans le macro-bloc courant, où CBP~0[5] # bloc luminance (Y) 0 CBP~O[4] # bloc luminance (Y) 1 CBP~O[3] # bloc luminance (Y) 2 CBP~0[2] # bloc luminance (Y) 3 CBP~0[1] # bloc chrominance bleu (Cb) CBP~0[0] # bloc chrominance rouge (Cr) # coded~block~pattern~1 (CBP~1) - Additionnal coded~block~pattern pour les B-blocks des blocs PM dans l'application de H.263, ou CBP~1[5] # bloc luminance (Y) O CBP~1[4] # bloc luminance (Y) 1 CBP 1[3] # bloc luminance (Y) 2 CBP 1[2] # bloc luminance (Y) 3 CBP~1[1] # bloc chrominance bleu (Cb) CBP 1[0] # bloc chrominance rouge (Cr) logical~channel~indicator (LCI) - une information de 2 bits pour le numéro du canal logique de GOB utilisée uniquement en mode multipoints en présence continue de H.263. frameid (FID) - une information de 2 bits pour ID du bloc de GOB pour H.263. macroblock adress increment (MBA INC) - information de 2 octets pour les valeurs d'incrément de l'adresse de macro-bloc du macro-bloc courant. Cette information est toujours produite par BP en tant qu'information additionnelle, donc les utilisateurs ne doivent pas nécessairement l'établir au format d'entrée. Toute valeur spécifiée dans le mot d'en tête du macro-bloc d'entrée sera ignorée par BP. previous~dc~luminance (PRE~DC~Y) - Information de 2 octets pour la valeur dc du bloc de luminance du macro-bloc précédent. S'il y a un macro-bloc sauté, une valeur de remise à l'état initial est transmise. Cette information est toujours produite par BP en tant qu'information additionnelle, donc les utilisateurs ne doivent pas nécessairement la mettre au format d'entrée. Toute valeur spécifiée dans le mot d'en-tête du macro-bloc d'entrée sera ignorée par BP. previous dc~chrominance blue (PRE~~DCCb)-Information de 2 octets pour la valeur dc et du bloc de chrominance du bleu du macro-bloc précédent. S'il y a un macro-bloc sauté, une valeur de remise à l'état initial est transmise. Cette information est toujours produite par BP en tant qu'information additionnelle, donc les utilisateurs ne doivent pas nécessairement la mettre au format d'entrée. Toute valeur spécifiée dans le mot d'en tête du macro bloc d'entrée sera ignorée par BP. # previous~dc~chrominance~red (PRE~DC~Cr)-Information de 2 octets pour la valeur dc du bloc de chrominance du rouge du macro bloc précédent. S'il y a un macro bloc sauté, une valeur de remise à l'état initial est transmise. Cette information est toujours produite par BP en tant qu'information additionnelle, donc les utilisateurs ne doivent pas nécessairement l'établir au format d'entrée. Toute valeur spécifiée dans le mot d'en-tête du macro-bloc d'entrée sera ignorée par BP. 10.8.5.2 Mot de Donnée de Mouvement Chaque en-tête de macro-bloc doit avoir des mots additionnels d'en-tête si le macro-bloc comprend des vecteurs de mouvement. On considère d'abord les cas de MPEG-1 et MPEG-2. Ces standards auront le format du mot d'en tête additionnel montré au Tableau 36 pour les vecteurs de mouvement quand l'un des cas suivants se produira condition 1) quant MF= 1 ou ( I = 1 et CMV = 1) condition 2) quand MB = 1 TABLEAU 36 - FORMAT DONNEES VECTEURS MOWEMENT GENERAL POUR MPEG-1 ET MPEG-2 Octet / 7 6 5 4 3 2 1 0 Bit Octet 0 Premier vecteur mouvement avance FS0 Octet 1 Composante horizontale Octet 2 Premier vecteur mouvement avance Octet Composante verticale Octet 4 Premier vecteur mouvement recul FS1 Octet 5 Composante horizontale Octet 6 Premier vecteur mouvement recul Octet 7 Composante verticale Octet 8 Second vecteur mouvement avance FS2 octet 9 Composante horizontale Octet 10 Second vecteur mouvement avance Octet 11 Composante verticale Octet 12 Second vecteur mouvement recul FS3 Octet 13 Composante horizontale Octet 14 Second vecteur mouvement recul Octet 15 Composante verticale Dans le Tableau 36, toutes les valeurs des composantes sont à la précision du demi-élément d'image. FSO, FS1, FS, et FS3 sont des drapeaux de 1 bit pour notifier la sélection de zone pour chaque vecteur de mouvement. Si aucune sélection de zone n'existe, le drapeau doit être établi à 0. Comme MPEG-1 n'utilise pas l'information de sélection de zone, ces drapeaux doivent être établis à 0. Un cas exceptionnel se présente dans MPEG-2 codant pour des vecteurs de mouvement double prime. Dans ce cas, le vecteur de mouvement d'avance se compose de 16 octets (en réalisté les 8 octets sont utilisés) et le format doit être comme au Tableau 37. Normalement, BP convertira la valeur du vecteur de mouvement en une valeur différentielle dans l'application de codage vidéo. Cependant, la composante du vecteur de mouvement au Tableau 37 doit être la valeur différentielle qui est exactement à l'entrée du codeur de Huffman. Les vecteurs de mouvement double prime sont tous traités par BP dans le cas d'une application de décodage de MPEG-2. TABLEAU 37 - FORMAT DONNEES VECTEURS DE MOUVEMENT EN MODE PRIME DOUBLE POUR LE CODAGE DE MPEG-2 Octet / 7 6 5 4 3 2 1 0 Bit Octet 0 Vecteur mouvement avance octet 1 Composante horizontale Octet 2 Vecteur mouvement avance Octet 3 Composante verticale Octet 4 non utilisé DMV H Octet 5 Octet 6 non utilisé DP:V V Octet 7 Octets Réservé 8-15 H.261 et H.263 auront un format de données de vecteurs de mouvement quelque peu différent. Principalement, un seul octet sera suffisant pour toute valeur d'une composante de vecteur de mouvement. Selon les contenus des drapeaux MF et M4, le macro-bloc composé en mouvement correspondant aura au moins 2 et au plus 10 composantes de vecteur de mouvement. Le format de donnée pour la donnée de vecteur de mouvement est montré au Tableau 38. TABLEAU 38 - FORMAT DONNEE VECTEUR MOUVEMENT POUR H.261 ET H.263 Ordre MF = 1 et M4 = 0 MF = 1 et M1 = 1 Octet Octet O Vecteur mouvement avance Vecteur mouvement premier bloc Composante horizontale Composante horizontale Octet 1 Vecteur mouvement avance Vecteur mouvement premier bloc Composante verticale Composante verticale Octet 2 Vecteur mouvement B-Blocs Vecteur mouvement deuxième bloc Composante horizontale Composante horizontale (existe si MB = 1) Octet 3 Vecteur mouvement B-Blocs Vecteur mouvement deuxième bloc Composante verticale Composante verticale (existe si MB = 1) Octet 4 Réservé Vecteur mouvement troisième bloc Composante horizontale Octet 5 Réservé Vecteur mouvement troisième bloc Composante verticale Octet 6 Réservé Vecteur mouvement quatrième bloc Composante horizontale Octet 7 Réservé Vecteur mouvement quatrième bloc Composante verticale Octet 8 Réservé Vecteur mouvement B-Bloc Composante horizontale (existe si MB = 1) Octet 9 Réservé Vecteur mouvement B-Bloc Composante verticale (existe si MB = 1) Octets Réservé Réservé 10-15 10.8.5.3 Mot de Donnée des Coefficients d'Elément d'image Les quatre standards de compression vidéo ont une longueur maximale d'élément d'image binaire différente pour le niveau de quantification. La comparaison est faite au Tableau 39. TABLEAU 39 - RESOLUTION DES BITS DES ELEMENTS D'IMAGE D'ENTREE ET DE SORTIE Standard Longueur maximale Nombre d'octets pour Nombre d'éléments des bits pour le un cycle de d'image pour un niveau de | lecture/écriture de cycle de quantification | IOBUS lecture/écriture de IOBUS MPEG-1 9 bits 2 2 MPEG-2 12 bits 2 2 H.261 8 bits 1 4 H.263 8 bits 1 4 Donc, le format de donnée d'élément d'image pour les standards de MPEG et de conférence vidéo sont différents, comme ont peut le voir au Tableau 40. TABLEAU 40 - FORMAT DONNEE DES COEFFICIENTS D'ELEMENT D'IMAGE Ordre MPEG-1 et MPEG-2 H.261 et H.263 Octet Octet 0 Coefficient 0 Coefficient 0 Octet 1 Coefficient 1 Octet 2 Coefficient 1 Coefficient 2 Octet 3 Coefficient 3 Octet 4 Coefficient 2 Coefficient 4 Octet 5 Coefficient 5 Octet 6 Coefficient 3 Coefficient 6 Octet 7 Coefficient 7 Octet 8 Coefficient 4 Coefficient 8 Octet 9 Coefficient 9 octet 10 Coefficient 5 Coefficient 10 Octet 11 Coefficient 11 Octet 12 Coefficient 6 Coefficient 12 Octet 13 Coefficient 13 Octet 14 Coefficient 7 Coefficient 14 Octet 15 Coefficient 15 10.9 Conditions d'interruption BP interrompt ARM7 en revendiquant le drapeau ARM7~IRQ s'il rencontre les conditions d'interruption décrites dans cette section. BP a deux groupes de conditions d'interruption, conditions de défaut et d'erreur. Ces conditions sont toutes enregistrées dans BP~STATUS[15:O]. Si un bit est établi par BP, il activera le signal ARM7~IRQ. Ces conditions peuvent toutes être masquées en établissant le bit correspondant du registre BP~INT~MASK[15:0]. 10.9.1 Conditions Interruption par Défaut Condition défaut 0 (BP~STATUS[O]) - quand le traitement du tampon d'entrée 0 est fini, BP doit revendiquer ARM7~IRQ, établissant également le drapeau IBUFO~DONE Condition défaut 1 (BP~STATUS[1]) - quand le traitement du tampon d'entrée 1 est fini, BP doit revendiquer ARM7~IRQ, établissant également le drapeau IBUF1~DONE Condition défaut 2 (BP~STATUS[2]) - quand le traitement du tampon d'entrée O est fini, BP doit revendiquer ARM7~IRQ, établissant ausi le drapeau OBUFO~FULL Condition défaut 3 (BP~STATUS[3]) - quand le traitement du tampon de sortie 1 est fini, BP doit revendiquer ARM7~IRQ, établissant également le drapeau OBUF1~FULL Condition défaut 4 (BP~STATUS[4]) - quand la tranche ou GOB désigné par ARM7 est fini dans le cas d'un codage vidéo ou lors de l'atteinte de codes de départ non tranche ou non GOB dans le cas d'un décodage vidéo, BP doit revendiquer ARM7~IRQ,établissant également le drapeau BP DONE Condition défaut 5 (BP~STATUS[5])-quand l'opération de mise en réserve du contexte est finie dans le mode de changement de contexte avec préemption ou bien quand la tranche courante ou GOB dans le mode de changement de contexte avec coopération est fini, BP doit revendiquer ARM7~IRQ, établissant également le drapeau CTX SW DONE Condition défaut 6 (BP~STATUS[6]) - quand l'opération de rechargement du contexte est finie, BP doit revendiquer ARM7~IRQ, établissant également le drapeau CTX~RELOAD~DONE Condition défaut 7 (BP~STATUS[7]) - Généralement, BP~STATUS[7] est réservé. Donc ce bit doit être établi à "0". Normalement, il n'est pas recommandé de masquer ces conditions d'interruption par défaut en utilisant BP~INT~MASK[7:0]. Cependant, dans certaines applications, les utilisateurs peuvent vouloir masquer la condition de défaut 1. 10.9.2 Conditions d'Interruption par Erreur Si une erreur s'est produite dans BP, BP établit le drapeau BP~ERR qui aura pour résultat une demande d'interruption de ARM7. Simultanément, BP établit la donnée appropriée de valeur non nulle dans la zone BP~ERR~CODE dans le registre BP~STATUS. Ce BP ERR CODE de 8 bits a la signification suivante BP~ERR~CODE = 8 'b0000 0000 : pas d'erreur s'est produite BP~ERR~CODE = 8'b0000 0001 : ajustement interdit du registre BP~MODE BP~ERR~CODE = 8'b0000 0010 : position horizontale interdite macro-bloc est établie BP~ERR~CODE = 8'b0000 0011 : position verticale interdite macro-bloc est établie BP~ERR~CODE = 8'b0000 0100 : VLC interdit pour incrément adresse macro-bloc PB~ERR~CODE = 8'b0000 0101 : VLC interdit pour type macro-bloc BP~ERR~CODE = 8'b0000~0110 : VLC interdit pour code mouvement macro-bloc BP~ERR~CODE = 8'b0000 0111 : dissimulation interdite bit marqueur vecteur mouvement BP~ERR~CODE = 8'b0000 1000 : VLC interdit pour configuration bloc codé BP~ERR~CODE = 8'bO000~1001 : VLC interdit pour grandeur dc bloc DCT BP~ERR~CODE = 8'b0000 1010 : valeur DCT dc interdite BP~ERR~CODE = 8'b0000 1011 : VLC interdit pour coefficient DCT bloc ac BP~ERR~CODE = 8'b0000 1100 : nombre de blocs dans un macro-bloc dépasse 64 BP~ERR~CODE = 8'b0000 1101 : valeur f~code interdite (i.e., la valeur est zéro) BP~ERR~CODE = 8'b0000 1110 : VLC interdit pour coefficient DCT bloc ac BP~ERR~CODE = 8'b0000 1111 : Ajustement adresse IBUF et OBUF interdit BP~ERR~CODE = 8'b0001~0000 : Les 4 bits les moins significatifs d'une adresse de départ pour le tampon d'entrée ou de sortie de BP ne sont pas égaux à zéro Les autre valeurs de BP~ERR~CODE sont conservées. 10.10 Conditions Fonctionnelles Détaillées 10.10.1 Interface IOBUS Tout mouvement de données entre BP et CCU se fait par IOBUS. IOBUS est un bus synchrone à 32 bits à 40 MHz contenant l'adresse et la donnée multiplexées. Comme au moins 7 cycles sont requis pour transférer des données de 16 octets à travers IOBUS, cependant, la fréquence maximale de transfert de IOBUS sera de 91,4 Moctets/sec (=731.4 Mbits/sec). BP peut être soit maître soit esclave pour toutes des transactions de lecture et d'écriture de IOBUS. Quand BP fonctionne comme maître, il doit envoyer un signal de demande à l'arbitre de IOBUS. Si IOBUS est libre, l'arbitre enverra un accord et une sélection de dispositif à BP. Le contenu des données à travers IOBUS peut être l'une des trois catégories suivantes : donnée d'également d'image à 32 bits contenant deux ou quatre composantes d'élément d'image, mot à train de bits comprimé à 32 bits et paramètre de syntaxe/contrôle pour les opérations de codage et de décodage. Pour une plus ample information comme les diagrames de temporisation concernant l'interface de IOBUS, on recommande au lecteur de revoir la spécificaion de IOBUS de MSP; 10.10.2 Traitement des Couches des Blocs 10.10.2.1 Convention de Balayage en zigzag BP supporte les deux matrices de conversion de balayage en zigzag qui sont suggérées dans le standard vidéo de MPEG. Les 8 x 8 données du bloc qui sont transférées entre VP et BP doivent contenir les 64 composantes. 10.10.2.2 Code RLC Pour le décodage RLC, BP génère des données zéro et de niveau selon le résultat décodé de Huffman des coefficients ac de DCT. Si le signal end of block (fin de bloc) est détecté avant d'avoir généré les 64 éléments d'image pour un bloc de 8 x 8, le décodeur de RLC est responsable de la production de la donnée zéro restante. Pour le codage RLC, BP compte le nombre de données zéro contigües et produit le code de niveau et de longueur courante en combinant avec la donnée non nulle suivante. Si les données restantes sont toutes égales à zéro, il faut produire le signal endof~block (fin de bloc) au lieu de la production de RLC pour les données restantes. Le cycle de traitement pour un code RLC est le même que le nombre de zéros à produire. 10.10.2.3 Code de Huffman Le code de Huffman de BP supporte toutes les tables de Huffman qui sont recommandées dans les standards vidéo MPEG-1, MPEG-2, H.261 et H.263. On suppose que la plupart des tables sont réalisées dans la ROM des tables de consultation où chaque mot de la ROM a 12 bits de large. Cependant certaines tables de Huffman que l'on trouve être simples ou assez compliquées sont réalisées en utilisant des logiques cablées. Les tables du décodeur qu'il faut réaliser en utilisant la ROM des tables de consultation sont résumées au Tableau 41. TABLEAU 41 - GRANDEUR DE LA ROM REQUISE POUR TABLES DE CONSULTATION DECODEUR HUFFMAN N Standard Description Grandeur ROM Table (bits) 1 MPEG-1 & 2, det~coeff~next, TCOEFF 144 X 12 H.261 2 H.263 TCOEFF 102 x 12 3 MPEG-1 & 2, motion vector code 17 x 12 H.261, H.263 macroblock address increment 4 MPEG-1 & 2, coded blockgattern 32 x 12 H.261 5 MPEG-1 & 2, macroblock~type et MCBPC 18 x 12 H.261, H.263 6 MPEG-1 & 2 dct dc size for y et CbCr 12 x 12 7 H.263 CBPY pour trames intra et 8 x 12 inter Total 333 x 12 Les tables du codeur sont résumées au Tableau 42, lesquelles nécessitent une plus grande ROM que les tables du décodeur. TABLEAU 42 - GRANDEUR DE LA ROM REQUISE POUR LES TABLES DE CONSULTATION DU CODEUR DE HUFFMAN N Standard Description Grandeur de ROM de Table (bits) 1 MPEG1 & 2, dct~coeff~next, TCOEFF 156 x 12 H. 261 2 H.263 TCOEFF 98 x 12 3 MPEG1 & 2, motion~vector~code, 35 x 12 H.261, H.263 macroblock~adress~increment 4 MPEG1 & 2, coded~block~pattern 64 x 12 H.261 5 MPEG1 & 2, macroblock~type 22 x 12 H.261 6 H.263 MCBPC 28 x 12 7 MPEG1 & 2 dct dc size pour Y and CbCr 16 x 12 8 H.263 CBPY for trames intra et 16 x 12 inter Total 435 x 121 Des Tableaux 41 et 42. nous voyons que la grandeur total requise de la ROM pour le codeur et le décodeur de Huffman est de 768 x 12 bits. Les tables ci-dessus ne comprennent par le code de bourage, le code d'échappement, le bit de signe de coefficient de DCT et le code de fin de bloc qui sont traités par la machine d'état. Les cycles de traitement pour chacun des codes de Huffman sont indiqués au Tableau 43. TABLEAU 43 - CYCLES DE TRAITEMENT POUR LES CODES DE HUFFMAN Type code de Huffman Cycles Traitement Cycles Traitement Horloge pour MPEG-1 & 2 pour H.261 & Traitement H.263 dct 4-5 5-6 40 MHz coefficient dc différentiel dct ac 1 2 coefficient avec complément Code échappement 2 3 plus code longueur fixe Code end of block 1 2 Autres codes de 1 1 Huffman Enfin, il faut noter que la réalisation des tables de décodage de JPEG ne peut se faire si nous utilisons cette approche. Cependant, il faut noter que la table dc~coeff~next~O peut être utilisée pour des applications de codage de JPEG. 10.10.2.4 Valeurs dc Différentiel Dans le cas des blocs intra, BP calcule également le coefficient dc différentiel pour la première composante des 8 x 8 données du bloc et reconstruit la valeur de dc avec le coefficient dc différentiel transmis. 10.10.2.5 Blocs non codés BP ne supporte pas les blocs qui ne sont pas codés. VP et ARM7 sont responsables du traitement du bloc non codé. Pour permettre à VP et ARM7 de traiter ce type de bloc, BP indique les blocs non codés dans le coded~block~pattern qui apparaît dans les mots d'en-tête du macro-bloc. 10.10.2.6 Ordre de Transmission des Blocs Il faut noter que l'ordre des blocs dans un macro-bloc transmis pour le codage et le décodage est égal à ce qui suit : bloc luminance (Y) O, 1, 2, et 3, bloc chrominance bleu (Cb), et bloc chrominance rouge (Cr). 10.10.3 Traitement en Couches Macro-bloc 10.10.3.1 Vecteurs Mouvement différentiel BP calcule le vecteur de mouvement différentiel à partir du résultat de l'estimation du mouvement et reconstruit le vecteur de mouvement avec le vecteur de mouvement différentiel transmis à l'exception des cas suivants Le premier cas est le mode prime double de cas du codage vidéo de MPEG-2. Dans ce cas, les vecteurs de mouvement transmis à BP doivent être sous forme de vecteur / [0] [0] [1:0] et non pas vecteur / [r] [O] [1:0] (veuillez voir Clause 7.6.3.6 du standard vidéo de MPEG-2.) 2. Le second cas est le mode de prédiction avancée de H.263. Dans ce mode, nous pouvons avoir quatre vecteurs de mouvement et ces valeurs doivent être transmises de/à BP en tant que valeurs différentielles. 10.10.3.2 Macro-blocs sautés BP ne supporte pas les macro-blocs sautés. VP et ARM7 sont responsables du traitement de ces macro-blocs sautés. Afin que VP et ARM7 traitent les macro-blocs sautés, BP écrit les adresses horizontale et verticale du macro-bloc dans les mots d'en-tête du macro-bloc. 10.10.3.3 Codes Bourrage Macro-bloc Dans le décodage de MPEG-1, BP rejette le code de bourrage du macro-bloc dans un cycle s'il existe. Dans le codage de MPEG-1, cependant, BP ne permet pas aux utilisateurs d'inclure les codes de bourrage du macro-bloc dans l'en tête de couche de macro-bloc. En général, ce code de bourrage est utilisé pour contrôler le tampon de fréquence vidéo de sortie.Ainsi, il est recommandé d'insérer des bits zéro de bourrage entre les codes de départ au lieu d'insérer les codes de bourrage du macro-bloc. 10.10.4 Traitement en Couche de Tranches ou de GOB 10.10.4.1 Alignement des Octets Pour les applications de MPEG-1 et MPEG-2, la sortie du train de bits jusqu'à la couche de tranches doit être alignée par les octets. Pour une application de H.263, la sortie du train de bits jusqu'à la couche de GOB peut être alignée par les octets bien que la sortie du train de bits jusqu'à la couche d'image doivent être en alignement par les octets. Cep 10.10.4.3 Intra-Slice Dans MPEG-2, le train de bits de la couche de tranches, un paramètre appelé intra~slice, est utilisé pour notifier que la tranche courante se compose uniquement de macro-blocs intra. Cette information n'est pas utilisée dans le processus de décodage et elle est destinée à aider une application de DSM à accomplir des fonctions d'avance rapide ou de recul rapide. Donc, BP rejette cette information dans l'application de décodage et insère intra~slice en tant que O dans l'en tête de couche de tranches dans l'application de codage. 10.10.4.4 Codes Départ Tranche ou GOB Dans MPEG-1, MPEG-2, et H.261, chaque image doit avoir au moins un code de départ de tranche ou de GOB; Cependant, une image en H.263 peut ne pas avoir le code de départ de GOB ni l'information d'en-tête. En particulier, le premier GOB dans toute image de H.263 ne devra pas inclure le code de départ ni l'information d'en-tête. Par conséquent, la machine d'état de BP doit traiter la couche du macro-bloc directement si le train de bits reçu est pour H.263. De plus, si un code de départ de GOB est trouvé alors que le train de bits est décodé, BP doit décoder le code de départ et continuer son traitement sans interrompre ARM7. 10.11 Interface Tampons Doubles Entrée/Sortie 10.11.1 Description Générale Les tampons d'entrée et de sortie doivent être réalisés par un tampon double. Ainsi, en réalité nous avons quatre tampons de mémoire appelés IBUFO, IBUF1, OBUFO, et OBUF1 comme montré aux figures 64 et 65. Comme nous pouvons le voir des figures 64 et 65, chaque tampon a des adresses de départ et de fin et des drapeaux plein et fait. Pour déterminer la grandeur de chaque tampon, les utilisateurs doivent écrire les valeurs appropriées dans les registres d'adresses de départ et de fin pour chaque tampon. Quand le processeur de source pour le tampon termine l'écriture dans le tampon, il doit établir un drapeau plein et commencer à écrire dans l'autre rangée. Si le processeur collecteur de données pour la rangée trouve que la rangée à laquelle il faut accéder est pleine, il lit la donnée. Si la rangée se trouve vide, le collecteur doit établir le drapeau fait et vérifier le drapeau plein de l'autre rangée. Les quatre adresses de départ sont remises au point par BP comme décrit à la sous section 10.7.2. Chaque registre pour l'adresse de départ contiendra l'adresse du dernier octet à laquelle on accède par BP à chaque fois que BP accède au tampon d'entrée ou de sortie. Par conséquent, ARM7 doit de nouveau établir l'adresse correspondante de départ si l'on trouve que l'un des drapeaux IBUF6~DONE, IBUFloONE, OBUFO~FULL, et OBUF1~FULL est établi. I1 faut également noter que les quatre derniers bits pour l'adresse de départ doivent toujours être tous établis à zéro par ARM7. Cela est dû à une structure d'alignement interne des données entre FBUS, CCU et IOBUS. I1 faut également établir chacune des adresses de fin de manière que le nombre total des octets pour toute grandeur de tampon puisse être un multiple de 16. De plus, il est recommandé que la grandeur minimale du tampon soit de 64 octets pour MPEG-1 et MPEG-2 et de 128 octets pour H.261 et H.263. Cela est pour empêcher la dégradation de la performance due à une demande fréquente d'interruption à ARM7 par BP. 10.11.2 Traitement de l'Etat de Tampon Anormal Si les deux tampons de sortie sont pleins, BP doit arrêter son traitement et tomber à un état d'inactivité quel que soit l'état du double tampon d'entrée. BP doit automatiquement s'éveiller de cet état d'inactivité si le drapeau OBUFO~DONE ou OBUF1 DONE est établi. si les deux tampons d'entrée sont vides, BP ne doit pas s'arrêter immédiatement et il peut continuer son traitement jusqu'à ce qu'il ait terminé le traitement de la donnée intérieurement restante. Cepandant, BP interrompra immédiatement ARM7 si les deux tampons d'entrée sont vides. Après accomplissement du traitement des données restantes et si les tampons d'entrée se révèlent être toujours vides, BP doit tomber à l'état d'inactivité. De nouveau BP doit automatiquement s'éveiller si UBUFO~FULL ou IBUF1 FULL est établi. L'état d'inactivité décrit dans cette sous section est différent des autres états d'inactivité décrits dans cette description car l'éveil des autres états d'inactivité en général nécessite un ordre de contrôle de ARM7. 10.11.3 Réalisation Physique des tampons E/S : Exemple Pour la plus grande part, il est de la responsabilité de l'utilisateur de décider de l'emplacement et de la grandeur des tampons d'entrée et de sortie de BP. L'utilisateur peut réaliser les tampons dans la région de Zone de Travail de l'antémémoire de données de VP, de l'antémémoire de données de ARM7 ou de SDRAM. Bien que la réalisation des doubles tampons d'entrée et de sortie de BP semble quelque peu restreinte, il peut y avoir un mode efficace de réaliser les tampons ci-dessus. On considère maintenant un exemple spécial pour la réalisation d'un tampon de fréquence dans une application de décodage vidéo. Dans ce cas, les utilisateurs peuvent vouloir réaliser un tampon circulaire pour le tampon d'entrée de BP. Là, on suppose que nous utilisons SDRAM et le tampon pleine fréquence sera réparti en quatre blocs comme montré à la figure 66. Initialement, l'utilisateur peut établir les Rate Buffer Block O et Rate~Buffer~Block~1 en tant que IBUFO et IBUF1, respectivement. Cela peut se faire comme suit IBUFO~START = Rate Buffer~AddressO ; IBUFO END = Rate~Buffer~Address~1 IBUF1 START = Rate~Buffer~Address~2 IBUF1 END = Rate~Buffer~Address~3 Après consommation par BP de toutes les données dans IBUFO (i.e., les données dans le Rate BuffeyBlock~O) BP interrompt ARM7. Alors, ARM7 peut établir le Rate~Buffer~Block~2 en tant que IBUFO comme suit IBUFO~START = Rate~Buffer~Address~4 IBUFO~END = Rate~Buffer~Address~5 Après consommation de la totalité des données dans le Rate Buffer Blockl par BP, il y a une nouvelle interruption et ARM7 peut établir le Rate~Buffer~Block~3 en tant que IBUF1 comme suit IBUF1 START = Rate Buffer Address 6 ; IBUF1 END = Rate~Buffer~Address~7 Après consommation de la totalité des données dans le Rate~Buffer Block 2 par BP, ARM7 peut établir Rate Buffer Block O en tant que IBUFO, de nouveau, en établissant l'adresse comme à la première étape. Ainsi, la réalisation du tampon circulaire peut se faire en répétant simplement ce processus complet. Cet exemple montre que l'usage du double tampon de BP peut être assez flexible selon l'intention de l'utilisateur. 10.12 Changement de Contexte Si plus d'une application doit se passer sur MSP, le système d'exploitation de ARM7 ordonnera à BP de terminer la tâche courante et de passer à une autre tâche. Ce processus est normalement appelé "changement du contexte". BP supporte deux types de modes de changement de contexte qui seront décrits dans ce qui suit. 10.12.1 Changement de Contexte avec Préemption Le changement du contexte avec préemption implique que BP accomplisse le traitement du bloc courant de 8 x 8 éléments d'image puis termine le traitement normal. ARM7 peut ordonner le mode de changement de contexte avec préemption en établissement les drapeaux CTX~SWITCH et CTX~MODE dans le registre BP~CONTROL[6:5] comme étant "11". Quand le traitement du bloc courant est terminé, BP doit envoyer le contexte interne à la SDRAM externe pour un traitement futur. Quand BP termine la sauvegarde du contexte, il doit interrompre ARM7 avec établissement du drapeau CTX~SW~DONE placé à BP~STATUS[5]. Alors, ARM7 doit sauvegarder tous les contenus des tampons d'entrée et de sortie de BP et initialiser BP pour une autre tâche. Ce mode consiste à laisser BP répondre à la demande de changement de contexte de ARM7 dès que possible. Dans le pire des cas BP nécessitera environ 150 cycles (= 3,75 psec) pour terminer le traitement du bloc courant. Dans les cas normaux, cependant, il est raisonnable de supposer que quelques douzaines de cycles seront requis pour terminer le traitement du bloc. 10.12.2 Changement de Contexte avec Coopération La changement du contexte avec coopération consiste à éliminer le processus de sauvegarde du contexte pour BP. Cela peut être obtenu grâce au fait que tout traitement de couche de GOB ou de tranche doit initialiser les états internes de BP plein. Dans ce mode, BP continue son traitement normal de la tranche courante GOB puis termine le traitement. ARM7 peut ordonner le mode de changement de contexte avec coopération en mettant les drapeaux CTX~SWITCH et CTX~MODE dans BP~CONTROL[6:5] à "10". Quand le traitement de la tranche courante ou GOB est terminé, BP interrompt ARM7 avec établissement du drapeau CTX~SW~DONE placé à BP~STATUS[5]. Alors, ARM7 doit sauvegarder tous les contenus des tampons d'entrée et de sortie de BP et initialiser BP pour une autre tâche. 10.12.3 Rechargement du contexte Pour passer à la tâche précédente, BP doit recharger le contexte sauvegardé dans la SDRAM, de l'adresse SAVE ADR[31:O]. Pour demander ce rechargement du contexte, il est requis que BP soit à l'état d'inactivité. Les situations possibles pour cette demande seront quand BP~DONE est établi, quand CTX~DONE est établi ou quand ARM7 remet BP à l'état initial avec du logiciel. Là, si ARM7 établit le drapeau CTX~RELOAD dans BP~CONTROL[7], BP s'éveille de l'état d'inactivité et commence à lire le contexte sauvegardé. Quand BP a fini l'opération de rechargement du contexte, BP interrompt ARM7 avec ajustement du drapeau CTX~RELOAD DONE. Alors, ARM7 doit initialiser les registes internes de BP et valider BP pour le traitement de la tache précédente. 10.13 Etablissement d'une Liaison de Travail Cette section couvre le processus détaillé pour l'établissement d'une liaison de travail quand BP termine le traitement. Là, la "mise au point de l'indicateur pour la dernière donnée" signifie que BP écrit les valeurs appropriées à VALIoBYTEADRC31:O] et VALIoBITPOS[2:O], respectivement. 10.13.1 Cas du codage Normalement, la donnée d'entrée pour le codage sera fournie par VP. Si l'un du double tampon d'entrée est rempli par VP, BP commence la lecture de la donnée par IOBUS. Quand la fin du traitement est atteinte (i.e., le nombre de macroblocs traités est égal au nombre des macro-blocs désignés par ARM7), BP doit interrompre ARM7 par l'établissement du drapeau BP~DONE et tomber à l'état d'inactivité. L'indicateur pour la donnée correcte doit indiquer la "fin du train de bits comprimé" pour la tranche ou GOB. De plus, VALID~BYTE~ADR[31:0] doit indiquer une position dans l'un du double tampon de sortie. ARM7 forme le train de bits final en combinant ce train de bits comprimé et les en-têtes des couches supérieures et répétition du procédé. Si ARM7 veut redémarrer BP avant pleine consommation des données dans les doubles tampons de sortie, cela peut être obtenu par consommation d'au moins un double tampon de sortie et sauvegarde de l'indicateur pour la dernière donnée car l'indicateur sera remis au point par BP lors de sa remise en marche. 10.13.2 Cas du Décodage D'abord, ARM7 cherche le code de départ de la tranche ou de GOB (s'il existe). Si le code de départ est trouvé, ARM7 initialise et valide BP. Quand BP a accompli le décodage de Huffman, le décodage de RLC et la conversion de balayage en zigzag inverse, la donnée est transmise au tampon de sortie pour le traitement par VP. BP continue cette routine de traitement jusqu'à ce qu'un code de départ de non tranche ou non GOB soit détecté. S'ils sont détectés, BP interrompt ARM7 avec ajustement de l'indicateur pour la dernière donnée utilisée jusqu'à "la fin du code de départ non tranche ou non GOB". ARM7 doit alors décoder le code de départ et accomplir l'analyse syntaxique de l'en-tête jusqu'à ce que le code de départ de la tranche ou de GOB qui suit soit trouvé. 10.13.3 Erreur Trouvée dans le Train de Bits Comprimé Dans une application de conférence vidéo où la donnée réelle sera transmise par la ligne de téléphone et le réseau public commuté, il sera très probable qu'une certaine donnée incorrecte soit incorporée dans le train de bits reçu. Dans ce cas, BP doit interrompre ARM7 et vérifier le contenu du drapeau ERR~HANDLE~MODE. I1 serait plus sûr que les utilisateurs décident le mode de traitement de l'erreur avant que BP ne soit validé pour l'application spécifique. Quand le drapeau ERR~HANDLE~MODE est établi à "1", BP trouve automatiquement le code de départ suivant. Si le code de départ est pour une tranche ou GOB, BP continue son traitement normal. Ce mode est assez efficace parce que BP peut trouver un code de départ plus rapide que ARM7 et que ARM7 peut accomplir une autre routine de traitement alors que BP trouve le code de départ suivant. Cependant, si un code de départ autre qu'une couche de tranche ou de GOB est trouvé, BP doit interrompre de nouveau ARM7 avec établissement du drapeau BP~DONE et tomber à l'état d'inactivité. Dans ce cas, l'indicateur pour la dernière donnée utilisée doit indiquer la fin du code de départ suivant. Si le drapeau ERR~HANDLE~MODE est établi à "O", BP doit tomber à l'état d'inactivité sans chercher le code de départ suivant. Dans ce cas, l'indicateur pour la dernière donnée utilisée doit indiquer la position à laquelle l'erreur est trouvée. Ce mode sera utile si les utilisateurs veulent mettre au point un courant de bits contaminé en utilisant les instructions de ARM7. APPENDICE B PROCESSEUR DU TRAIN DE BITS DE MPC Le Processeur du Train de bits (BP) est l'un des noyaux clés du traitement de MSP pour des applications de codage et de décodage de données vidéo. BP couvre le codage et le décodage de couches de tranche de MPEG et le codage et le décodage de couches de bloc de groupes (GOB) H.261/H.263. Dans les applications de décodage, BP donne la pleine information contenue dans chaque macro-bloc soit au Processeur Vectoriel ou au noyau de ARM7. Le matériel du Processeur du Train de bits est divisé en 4 blocs fonctionnels Interface port IOBus comprenant les unités de Contrôle ES et de Décodage Machine d'état de contrôle de BP Noyau de Codec comprenant le Multiplexeur de Registres de BP et les Registres, l'Unité de Logique Arithmétique et le Multiplexeur et l'Unité de Contrôle FIFO Unité FIFO de VLC Codec de VLC comprenant une ROM de consultation avec générateur d'adresses du Codec La ROM 340 de LUT de VLC (figure 3) est décrite juste cidessous. 1.0 Méthodologie L'unité de Table de Consultation est le noyau du codage et du décodage de Huffman. Cette unité supporte toutes les tables de VLC qui sont incorporées dans les spécifications de MPEG-1, MPEG-2, H.261 et H.263 et qui sont supportées par MSP de SAMSUNG. La plupart de ces tables sont réalisées en une ROM qui a 12 bits de large. Cependant, si le processus de consultation est trop simple ou ne s'adapte pas à la grandeur de la table de la ROM, alors un codage/décodage spécial sera appliqué. Les quatre spécifications dans cette couche contiennent beaucoup de codes de longueur variable jusqu'à 17 bits. Outre la valeur codée ou décodée, l'indicateur de grandeur du code et de code correct doit être prévu pour le codage et le décodage afin de correctement mettre en oeuvre le procédé. Si nous utilisons la méthode traditionnelle pour coder ou décoder les tables de VLC, la table de ROM et le générateur d'adresses seront tous deux très grands. 1.1 La stratégie de réalisation peut être décrite comme : Partager les tables de ROM autant que possible, si cela ne rend pas le générateur d'adresses difficile Réarranger les tables de VLC en se basant sur le codage ou le décodage Comptes zéro ou comptes un, qui sont basés sur le code de Huffman, décodage d'abord Réduire la grandeur des tables en utilisant des drapeaux de 1 bit comme signe ou pair/impair Diviser un emplacement dans une ROM et haut et bas si cela est possible Utiliser des LSB de VLC pour générer l'adresse de la table de la ROM afin de simplifier le générateur d'adresses. Cette méthode est très efficace. La grandeur finale de la table de la ROM est de 768 x12 bits, ce qui est bien plus petit que nécessité par le problème. La consultation est accomplie par un générateur d'adresses de tables de la ROM et un procédé de consultation de tables de la ROM. Le générateur d'adresses décode les signaux d'entrée comme le type de table, le mode et la valeur/VLC et génère l'adresse de la table de la ROM. Alors, la donnée codée ou décodée peut être dérivée de la valeur de la table de la ROM et autre information. Les tables de décodage ont deux formats. Le premier s'applique aux coefficients de DCT qui ont un emplacement dans la ROM par code de VLC. L'autre format s'applique à d'autres tables dans lesquelles chaque emplacement de la ROM est divisé en 6 bits supérieurs et 6 bits inférieurs. Par conséquent, chaque emplacement contient deux codes de VLC. La table de codage a deux formats. L'un est pour TCOEF de H.263. L'autre est pour 5 les autres tables. Chaque emplacement de la ROM contient un code de Huffman pour des applications de codage. la grandeur de la table de la ROM est de 768 x 12 bits. La table peut être décrite comme suit Spec Table Description Gamme Bits MPEG 14,15 Coefficients DCT OxOOO-Ox08F 144x12 H.261 5 TCOEF 0x000-Ox06E H.263 12 TCOEF OxO9A-Ox0FF 102x12 H.263 9 CBPY 0x090-0x097 8x12 MPEG 2, 3, 4 Type macro-bloc 0x000-0x10F 19,5x12 H.261 2 MTYPE 0xl00-OxlOF H.263 3,4 MCBPC 0x098-OxO99, Ox100-0xlOF, Ox6F-OxlBO (BAS) MPEG 1,10 MB reçu, Code mouvement 0x1l0-0xllF, 17x12 0x0E2 H.261 1,3 ADR MB, Code mouvement OxllO-OxllF, 0x0E2 H.263 10 MVD 0x110-OxlîF, OxOE2 MPEG 9 configuration MB Ox120-0x13F 32x12 H.261 4 CBP 0x120-Ox13F MPEG 12,13 Grandeur DC DCT 0X140-OX14B 12x12 Total = 332x12 Tableau 1 : Topographie tables ROM décodage VLC Spec Table Description Gamme Bits MPEG 14,15 Coefficients DCT 0x1ED-0x288 156x12 H.261 5 TCOEF 0x1ED-0x25E H.263 12 TCOEF 0x289-0x2E9, 98x12 0x1EC Spec Table Description Gamme Bits H.263 9 CBPY 0x19B-0x1AA 16x12 MPEG 2, 3, 4 Type macro-bloc 0x2EA-0x2FF 22x12 H.261 2 MTYPE 0x2EA-0x2FF H.263 3,4 MCBPC 0x14C-0x167 28x12 MPEG 1,10 MB re u, Code mouvement 0x178-0x19A 35x12 H.261 1,3 ADR MB,Mouvement Code 0x178-0x19A H.263 10 MVD 0x178-0x19A MPEG 9 Configuration MB 0x1AB-0x1EA 64x12 H.261 4 CBP 0x1AB-0x1EA MPEG 12,13 Grandeur DC DCT 0x168-0x177 16x12 Total 423x12 Notes 1) Table 12/H.263 a un codage spécial pour 4 codes de VLC 2) Trois emplacements sont réservés Tableau 2 : Topographie tables ROM codage VLC 1.2 Décodage Toutes les tables pour le décodeur sont réarrangées en se basant sur des comptes de zéro ou de un. Si MSB d'un code de VLC est "0", alors le compte zéro est appliqué. Autrement, le compte un est utilisé. Par exemple, si nous avons un code de "00001xxx", alors nous avons 4 zéros. si nous avons "1110xxx", alors nous avons un compte de 3 uns. Le processus de décodage décodera a d'abord le compte zéro/un, sortant le compte zéro/un du code VLC vers le générateur d'adresses de la table de la ROM. Alors, le générateur d'adresses décode le reste du code pour générer l'adresse. L'adresse comprend deux parties : l'une est le décalage ; l'autre, que nous appelons l'adresse masquée, peut être dérivée de la table de VLC. L'adresse est le OU logique des deux parties. L'autre information donnée par le générateur d'adresses peut être décrite comme suit grandeur code VLC Drapeau spécial : drapeau 2 bits indique à la machine d'état de décodage "ECHAPPEMENT", "FIN DE BLOC", "BOURRAGE", ou "DEPART CODE" DE H.261. Validation extraire donnée haute : la donnée correcte a 6 bits hauts Validation signe/pair : ce drapeau indique que le décodage doit extraire LSB de VLC en tant que bit de signe ou pair en se basant sur la table VLC correct Bits de décalage de masque et masque : ces deux signaux sont appliqués pour générer l'adresse masquée. Pour la table de la ROM, chaque emplacement est enregistré avec la donnée en format de bits hauts et bas, à l'exception de la table 14, 15 de MPEG-2 et de la table 12/H.263. La grandeur de la table de la ROM pour le décodage est de 332 x 12 bits. 1.2.1 Table 14/MPEG-2 Cette table est la même que la Table 2-B.5c/MPEG-l et la Table 5/H.261. Format table ROM : BIT 10-6 DEROULEMENT ; BIT 5-O NIVEAU 1.2.2 Table 15/MPEG-2 La plus grande partie de la table est partagée avec la Table 14/MPEG-2 parce qu'elles ont le même code DEROULEMENT, NIVEAU ET VLC. Format table ROM : BIT 10-6 ; DEROULEMENT ; BIT 5-O NIVEAU 1.2.3 Table 12/h.263 Cette table a une valeur de sortie de plus "DERNIER" en comparaison avec la Table 14, 15 de MPEG-2. Format table ROM BIT 11 ; DERNIER ; BIT 10-4 DEROULEMENT : BIT 3-0 : NIVEAU 1.2.4 Code Mouvement/Incrément Macro-bloc Cette section couvre Table 1/MPEG-2, Table 1O/MPEG-2, Table 2-B.l/MPEG-l, Table 2-B.4/MPEG-1, Table 1/H.261, Table 3/H.261 and Table 10/H.263. I1 faut noter, que pour le code de mouvement LSB est le bit de signe à l'exception de VLC=1. Pour l'Incrément du Macro-bloc, LSB est un drapeau de valeur paire à l'exception de VLC=1. Par conséquent, nous ne décodons que la moitié de la table seulement. Les deux types de tables ont la même valeur de VLC et la même valeur décodée à l'exception de la partie haute de la table 10/H.263 si nous ignorons le bit de signe/pair de la tuile. La valeur décodée atteint 6 bits ce qui signifie que nous plaçons deux valeurs de donnée dans un emplacement. Bien que la valeur décodée de la partie inférieure de la table 10/h.263 soit différente des autres, la valeur binaire de la tuile est la même à cause du point fixe i.e, nous utilisons 16 emplacements et demi pour couvrir toutes ces tables. Nous utilisons une simple FSM pour générer l'adresse de la ROM. Dans l'application, si le code de mouvement est décodé, la table de la ROM donne la valeur absolue. D'autre part, si le générateur d'adresses valide le bit de signe, le décodeur extrait LSB en tant que signe, auquel cas "1" signifie négatif, et "0" positif. L'algorithme peut être décrit comme suit si (sign~enable == 1) increment~value = sign * ROM~table~value [(validation~signe ==1) valeur~incrément = signe * valeur~table~ROM] autrement increment~value = ROM table value (valeur~incrément = valeur table ROM) Si la table d'incréments d'adresses du macro-bloc est décodée, nous dérivons le résultat de la valeur de la table de la ROM et du drapeau pair. Par exemple, la table de la ROM nous donne une 'valeur de "5". @ Si le drapeau pair est haut, alors nous obtenons le résultat de "10". Si le drapeau pair est bas, alors nous obtenons "11". L'algorithme peur être décrit comme suit si (even~enable == 1) increment~value = (ROM~table~value |(-even~bit) ; (validation~pair == 1) valeur~incrément = (Valeur~table~ROM |(-bit~pair) ; autrement increment~value = ROM~table value (valeur~incrément = valeur table~ROM) Format table ROM BIT 11-6 ; donnée haute BIT 5-0 ; donnée basse. 1.2.5 Configuration Macro-bloc Cette section couvre Table 9/MPEG-2, Table 2-B.3/MPEG1, Table 4/H.261 (CBP). La valeur décodée atteint 6 bits ce qui signifie que nous pouvons placer deux données dans un emplacement, i.e, 32 emplacements sont utilisés pour couvrir toutes ces tables. Format table ROM : BIT 11-6 : donnée haute ; BIT 5-O donnée basse. 1.2.6 Type Macro-bloc Cette section couvre Table 2,3,4/MPEG-2, Table 2 B.2/MPEG-1, Table 2/H.261 (MTYPE), and Table 3, 4/H.263 (MCBPC). La valeur décodée atteint 5 bits. Nous utilisons toujours le concept de donnée haute/basse. Une simple FSM est utilisée pour générer l'adresse de la ROM. Format table ROM : BIT 11-6 : donnée haute ; BIT 5-O donnée basse. Le format du type de macro-bloc est défini universellement pour chaque spécification, en se basant sur MPEG, bien que certains bits aient une signification différente pour la spécification différente. I1 faut noter que H.263 nécessite un décodage en 2 stades en se basant sur sa condition d'information, que l'on peut décrire comme suit Décodage MCBPC ce qui obtient le type de macro-bloc à 3 bits. Consultation type macro-bloc en se basant sur le type du macro-bloc, le drapeau PB et le type d'image. Les formats du type de macro-bloc dans la table de VLC peuvent être décrits comme suit BIT 5 BIT 4 J BIT 3 BIT 2 J BIT 1 BIT 0 Réservé Q FMV BMV P 1 Table 3 : Format type de macro-bloc de MPEG BIT 4-2 J BIT 1 J BIT 0 TYPE MB CR CB Table 4: Format MCBPC de H.263 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0 FIL Q MVD Réservé CBP INTRA Table 5 : Format type de macro-bloc de H.261 Du Tableau 4, nous obtenons non seulement le type de macro-bloc à 3 bits mais également la configuration de chrominance à 2 bits. Le type de macro-bloc est ici une valeur à 3 bits qui a une gamme comprises entre 0 et 4. Comme mentionné ci-dessus, l'information détaillée du type du macro-bloc doit être décodée au second stade. La table de consultation de décodage peut être décrite comme suit PT TYPE MB PB M4 Q MF MODE P(Y) INTRA INTER 3 0 0 0 0 O 1 1 INTER 4 0 0 1 0 0 1 1 INTER O 0 0 0 1 0 1 0 INTER 1 0 0 1 1 0 1 0 INTER 2 0 1 O 1 0 1 0 INTER 3 0 0 O 0 0 1 1 INTER 4 0 0 1 O 0 1 1 INTER O 1 O 0 1 1 1 O INTER 1 1 0 1 1 1 1 0 INTER 2 1 1 0 1 1 1 0 INTER 3 1 0 0 1 1 1 1 INTER 4 1 O 1 1 1 1 1 Tableau 6 : Table décodage type rnacrobloc pour H.263 1.2.7 Grandeur DC DE DCT Cette section couvre la Table 12, 13/MPEG-2 et la Table, 2-B.5/MPEG-1. Noter que à cause de la structure de VLC, le compte un est utilisé au lieu du compte zéro. Format table ROM : BIT 10-6 : donnée haute chrominance ; BIT 4-0 : donnée basse : luminance. Bit 11 et Bit 5 sont réservés. 1.2.8 CBPY Cette section couvre la Table 9/H.263. Il faut noter que cette table contient deux groupes de données, une pour image inter, et l'autre pour image intra. Un groupe de valeurs est l'inversion de l'autre groupe, ce qui permet l'enregistrement d'un groupe de données dans la ROM. Là, la donnée intra est placée dans la ROM. Une valeur de 4 bits est utilisée pour décrire la valeur de CBPY. Format table ROM : BIT 9-6 : donnée haute ; BIT 3-0 donnée basse. Bit 11-10 and Bit 5-4 sont réservés. 1.2.9 Prime double et mode Cette section couvre la Table 11/MPEG et la Table 7/H.263. Ces deux tables sont très simples et petites, elles sont donc directement décodées. 1.3 Codage Comme la section de décodage, le processus de codage utilise l'idée du compte zéro/un. La table de la ROM comprend l'information du compte zéro/un, la grandeur du code suivant le premier "1" lors d'un compte de zéro ou de un et le compte de VLC suivant le premier/dernier "1". Selon ce format, la grandeur de la table de la ROM peut être limitée à 12 bits par emplacement avec 4 exceptions à la Table 12/H.263 qui sont résolues par un codage spécial. Le format peut être décrit comme suit Bit 11-Bit 8 I Bit 7-Bit 5 | Bit 4-Bit O J Compte zéro/un Grandeur code VLC Code VLC Tableau 7 :Format général de codage Bit 11-Bit 8 I Bit 7-Bit 5 Bit 4-Bit O J Compte zéro/un Grandeur code VLC Code VLC Tableau 8 :Format du codage Table 12/H.623 Dans les tables ci-dessus, la grandeur du code de VLC est la grandeur du code du VLC suivant le premier/dernier "1". Le code de VLC est le code de VLC suivant le premier/dernier "1". Dans le cas du compte zéro, le code de VLC suivant le premier "1" est extrait. Autrement, le code de VLC doit être extrait des bits suivant le dernier "1". I1 faut noter que l'application du compte un dans le codage est différente du décodage. Le compte un s'applique si et uniquement si le drapeau compte un est validé par le générateur d'adresse. Par conséquent, si MSB du VLC est 1 mais que le drapeau de compte un est bas, alors la section de compte zéro/un de la table de la ROM est 0 ce qui signifie qu'un compte zéro est appliqué. Les exemples qui suivent couvrent tous les cas possibles de codage. Exemple 1 : VLC = 0000011001, one~count~enable = 0 Résultat pour cas général : 0101 100 01001 Résultat pour table 12/H.263 : 101 100 001001 Exemple 2 : VLC = 11001, one~count~enable = 0 Résultat pour cas général : 0000 100 01001 Résultat pour table 12/H.263 : 000 100 001001 Exemple 3 : VLC = 11001, one~count~enable = 1 Résultat pour cas général : 0010 011 0001 Résultat pour table 12/H.263 L'adresse générale est produite en tant que valeur d'addition d'un décalage et d'entrée. 1.3.1 Table 14/MPEG-2 Cette table est la même que la table 2-B.5c/MPEG et la table 5/H.261. Le codage traite les entrées de DEROULEMENT, PREMIER DC, ECHAPPEMENT et FIN DE BLOC. Résultat du codage : décalage d'adresse qui est appliqué pour s'ajouter à NIVEAU ou DEROULEMENT pour produire l'adresse. 1.3.2 Table 15/MPEG-2 La plus grande partie de la table est partagée avec la Table 14/MPEG-2 parce qu'elles ont le même code de DEROULEMENT, NIVEAU et VLC. Dans certains cas spéciaux, un compte est appliqué. Le code traite les entrées de DEROULEMENT, NIVEAU, PREMIER DC, ECHAPPEMENT et FIN DE BLOC. Résultat du codage : Décalage adresse et indicateur du compte un. 1.3.3. Table 12/H.263 Comme nous l'avons mentionné ci-dessus, cette table est très spéciale. Nous utilisons un format différent pour la traiter. Malheureusement, nous avons certaines exceptons où nous ne pouvons utiliser 12 bits pour décrire le code de VLC. Les exceptions sont décrites au Tableau 9. *Ces exceptions peuvent être spécialement codées sans utiliser la table de la ROM. DERNIER DEROULEMENT NIVEAU O O 10 O O 11 1 0 3 1 1 2 Tableau 9 : Exception du codage à la Table 12/H.263 Le codage traite les entrées de DEROULEMENT et ECHAPPEMENT. Résultat du codage : Décalage d'Adresse qui est appliqué pour s'ajouter à NIVEAU ou DEROULEMENT pour produire l'adresse. 1.3.4 Code Mouvement/Incrément Macro-bloc Cette section couvre la Table 1/MPEG-2, la Table 1O/MPEG-2, la Table 2-Bl/MPEG-l, la Table 2-B.4/MPEG-1, la Table 1/H.261, la Table 3/H.261 and la Table 10/H.263. Comme mentionné dans la section de décodage, nous pouvons partager une table de ROM et une FSM pour toutes ces tables. Le code de VLC dérivé de la table de la ROM doit se combiner avec le bit de signe/pair pour obtenir le code de VLC complet. Par conséquent, la valeur d'entrée que nous traitons dans ce codage de FSM est la valeur absolue pour le code de mouvement, dont la valeur de LSB est le bit de fraction, et un incrément d'adresse de macro-bloc décalé de un bit vers la droite. Le codage traite les entrées de BOURRAGE, et ECHAPPEMENT. 1.3.5 Configuration Macro-bloc Cette section couvre la Table 9/MPEG-2, la Table 2 B.3/MPEG-1. L'adresse est l'addition de la valeur du décalage et de configuration. 1.3.6 Type Macro-bloc Cette section couvre la Table 2, 3, 4/MPEG-2, la Table 2-B.2/MPEG-1. 1.3.7 Table 3, 4/H.263 (MCBPC) L'information du type d'image, du type de macro-bloc et du drapeau de bourrage est prévue pour générer le décalage de l'adresse de la table de la ROM. L'adresse est la somme de l'adresse de décalage et de CBPC. 1.3.8 Table 2/H.261 (MTYPE) Le générateur d'adresses est très compliqué. Nous ne pensons pas qu'il soit valable de le faire. 1.3.9 CBPY comme nous l'avons décrit dans la section de décodage, nous codons juste la donnée d'image intra. Si le type d'image est image inter, la donnée doit être d'abord inversée. L'adresse est l'addition de la valeur de décalage et de CBPY. 1.3.10 Grandeur DC de DCT Cette section couvre la Table 12, 13/MPEG-2, et la Table 2-B.5/MPEG-1. Comme certains codes de VLC de la luminance et de la chrominance sont les mêmes, nous partageons une partie de la table de la ROM pour eux. Le drapeau de chrominance et certains bits de valeur sont utilisés pour générer l'adresse de décalage. Nous pouvons obtenir l'adresse de la ROM par addition du décalage à la valeur réelle. 1.3.11 PRIME DOUBLE et MODE Cette section couvre la Table 11/MPEG-2 et la Table 7/H.263. Ces deux tables sont très simples et petites, donc nous les codons directement. 2.0 Description du matériel Le matériel de codage/décodage de VLC est inclus dans le bloc de "VLC". Ce bloc contient 3 sous-blocs. Ces blocs sont appliqués pour générer l'adresse de la table de la ROM ou les données de codage/décodage elles-mêmes. On utilise "VLC-DEC" pour décoder VLC et générer l'adresse de la table de la ROM. "VLC-ENC" est un bloc pour coder VLC, qui soit génère l'adresse de la table de la ROM ou un codage spécial pour la table de TCOEF de H.263. "CONSULTATION" émet les données de VLC en se basant sur la valeur de la table de la ROM ou une valeur codée spéciale. 2.1 Générateur d'adresse de décodage de VLC Le noyau de VLC~DEC est FSM décodeur. Ce FSM décode l'information d'entrée et contrôle la génération de l'adresse. Les entrées et la définition de FSM peuvent être décrites comme suit Compte ZERO/UN (15 bits) : donne une valeur de compte zéro/un. Compte ZERO/UN (4 bits) : donne une valeur de compte zéro/un. Le but de l'utilisation de deux signaux de comptes binaires différents est de forcer l'économie et de données d'entrée à réduire les portes. Dans la plupart des cas, on utilise celui de 15 bits. Validation Compte UN (1 bit) : Indicateur compte un. Type Table (6 bits) : Type table BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT O Grandeur DCT MB reçu/MC Configura- CBPY Type MB COEF DC tion MB Tableau 10 : Format Type Table VLC~DEC FSM Mode (9 bits) : Mode d'opération BIT 8 BIT 7 | BIT 6 BIT 5 | BIT 4 BIT 3 BIT 2 BIT 1 BIT O H.263 Spécification Type image Chromi- ler DC Table MB nance 15 reçu Tableau 11 : Format Mode VLC~DEC FSM La définition de la Spécification et du Type de Image sont expliquées dans les définitions des Broches. Un algorithme spécial est utilisé pour générer l'adresse de la table de la ROM de décodage afin de simplifier le matériel et d'assurer le temps d'accès à la ROM. Le processus est comme suit Etape 1: Générer adresse décalage (OFFSET) Etape 2 : Générer quantité décalage 4 bits (MASK~SHFT) et décaler vers la droite FIFO~DATA de 6 bits de cette quantité. Extraire alors les 4 bits les moins significatifs (FOL~DATA). Etape 3 : Inverser les 4 bits obtenus à l'Etape 2 Etape 4 : Générer un signal de masque à 4 bits pour masquer la donnée obtenue à l'Etape 3 (MASK) Etape 5 : OU logique du résultat de l'Etape 4 avec l'adresse du décalage. Le résultat est l'adresse de la table de la ROM. La combinaison de ces étapes donne Address = OFFSET I (BITREVERSE (Bit (3-0) de (FIFO~DATA > > MASK~SHFT)) & MASK) (Adresse = DECALAGE I INVERSION BIT (BIT 3-0) de (FIFO DATA > > MASKSHFT)) & MASK) La sortie de FSM est comme ci-dessous MASK (4 bits) : Donnée Masque DECALAGE (9 bits) : adresse décalage table ROM MASK~SHFT (4 bits) : Quantité décalage Grandeur (5 bits) : Grandeur VLC SPECIAL~FLAG (3 bits) : Information supplémentaire pour le décodage EMPLACEMENT VALER DEFINITION BIT 2 EXTRAIRE LSB DE VLC BIT 1-0 01 ECHAPPEMENT 10 FIN DE BOURRAGE 11 CODE DE DEPART H.263 Tableau 12 : Définition du Drapeau Spécial de VLC~DEC VALID~VLC (1 bit) :Drapeau code VLC correct HIGH~DATA~INDICATOR (1 bit) :Extraire 6 bits hauts des données de la ROM Broches d'entrée FOL~DATA (4 bits) : FIFO~DATA décalée (voir Etape 2 ci dessus) CNT (4 bits) : Compte zéro/un ONE~CNT~EN (1 bit) : Indicateur compte un MODE (14 bits) : Type table et autre information. La définition est comme suit BIT 13 BIT 12 BIT 11 BIT 10 BIT 9 BIT 8 BIT 7 GRANDEUR DCT MC MB REÇU CONFIGU- CBPY TYPE MB COEF DCT RATION MB BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0 SPECIFICATION TYPE IMAGE CHROMINANCE ler DC TABLE 15 Tableau 13 : Format du MODE dans VLC~DEC SPECIFICATION : 00 = MPEG-1 ; 01 = MPEG-2 ; 10 = H.261 11 = h.263 TYPE IMAGE : 00 = RESERVE ; 01 = INTRA ; 10 = PREDIT ; 11 = BIDIRECTIONNEL FIFO~DATA (16 bits) : Donnée comprend VLC Broches de sortie ROM~ADR (10 bits) : Adresse table ROM MASK~SHFT (4 bits) : Quantité décalage pour FIFO~DATA (voir Etape 2 ci-dessus) GRANDEUR (5 bits) : Grandeur VLC SPECIAL~O (3 bits) : Drapeau spécial (voir sortie FSM) VALID~VLC (1 bit) : drapeau VLC correct HIGH~DATA (1 bit) : Indicateur d'extraction de LSB de VLC en tant que signe de drapeau pair FULL~DATA (1 bit) : Structure donnée 12 bits complète qui est haute lors du décodage du coefficient de DCT TABLE (6 bits) : Définie à l'entrée de FSM T MODE (9 bits) : Défini à l'entrée de FSM en tant que MODE. 2.2 VLC ENC Comme avec la section de noyau de codage de VLC, VLC~ENC code le code de longueur variable. La sortie de cette section est soit une adresse dans la table de la ROM ou bien un codage spécial de VLC. Comme décrit à la section 1.0, la structure des données de codage suit le format de données de 12 bits, à l'exception de certains cas spéciaux du TCOEF pour H.263. D'un point de vue matériel, elle est bien plus simple que la section de VLC~DEC, bien qu'un additionneur de 10 bits soit utilisé pour générer l'adresse de la table de la ROM. Comme VLC~DEC, le noyau de cette section est un FSM appelé VLC~ENC. Un autre FSM, ENC~SP, est utilisé pour un codage spécial. Les signaux d'entrée de VLC~ENC de FSM sont les mêmes que les broches d'entrée de cette section DERNIERE (1 bit) : Valeur de la DERNIERE pour la table de TCOEF de H.263 VALEUR/DEROULEMENT (6 bits) : Si la Table de Coefficients de DCT est codée, cette entrée signifie DEROULEMENT. Autrement, c'est une valeur générale, e.g. CONFIGURATION NIVEAU (6 bits) NIVEAU du coefficient de DCT SPECIAL~FLAG (2 bits) : Drapeau spécial qui est défini dans la section de VLC~DEC TABLE (6 bits) : même que VLC~DEC MODE (9 bits) : même que VLC~DEC La génération de l'adresse de la ROM est très directe. FSM produit une adresse de décalage, qui est ajoutée à VALEUR (DEROULEMENT) ou NIVEAU ou 0, pour former l'adresse. Pour le codage spécial, comme ces VLC ont les mêmes grandeurs et les mêmes comptes de zéro, la sortie est les 2 bits les moins significatifs, reconstruits en code. Les Broches de sortie peuvent êtres décrites comme suit ONE~CNT~FLG (1 bit) : Notifie que la section de construction de VLC utilise le compte "1" e SIGN~EN~BIT : Notifie que la section de construction de VLC place le bit signe/pair en tant que LSB de VLC. SPECIAL~ENCODE (1 bit) : Drapeau codage spécial VLC (2 bits) : Code les LSB VLC codage spécial ADR A (16 bits) : Adresse décalage. Noter que les 6 bits hauts sont 0 ADRB (16 bits) : Une autre partie de l'adresse. I1 faut noter que 10 bits hauts sont toujours 0. 2.3 CONSULTATION Cette section produit les données de codage/décodage de VLC. Ce bloc traite les situations suivantes Sortie valeur table ROM codage/décodage 12 bits réguliers Sortie données décodage bits haut/bas Reconstruction données codage spécial Comme requis, les données de sortie sont traitées avec des zéros. Broches d'entrée D~ADR (10 bits) : Adresse ROM décodage E~ADR (10 bits) : Adresse ROM codage ENCODE (1 bit) : 1 : Codage ; 0 : Décodage HIGH (1 bit) : Extraire drapeau 6 bits haut ENABLE (1 bit) : Remplir drapeau donnée 12 bits VLC (2 bits) : Coder codage spécial e SPECIAL~ENCODE (1 bit) : Drapeau codage spécial Broches de sortie CONSULTATION (16 bits) : Code VLC REVENDICATIONS 1. Système pour le codage ou le décodage de données vidéo, du type comprenant un processeur vectoriel pour accomplir une transformation linéaire sur des données vidéo ; un processeur de train de bits pour comprimer une sortie du processeur vectoriel ou décomprimer les données vidéo pour une entrée au processeur vectoriel ; et un circuit de contrôle pour synchroniser le fonctionnement du processeur vectoriel et du processeur du train de bits caractérisé en ce que le processeur de train de bits (245) peut être interrompu par le circuit de contrôle (248) pour arrêter le traitement d'un train de données vidéo et commencer le traitement d'un train de données vidéo différent de manière que le processeur de train de bits soit capable de traiter les deux trains de données vidéo sensiblement concurremment pour permettre au système de coder ou de décoder deux trains de données vidéo en temps réel. 2. Système selon la revendication 1, caractérisé en ce que chaque train de données vidéo représente une image mobile 3. Système pour le codage ou le décodage de données vidéo, du type comprenant un processeur vectoriel pour accomplir une transformation linéaire sur des données vidéo ; et un processeur de train de bits pour comprimer une sortie du processeur vidéo ou décomprimer les données vidéo pour une entrée au processeur vectoriel caractérisé en ce que le processeur vectoriel (220) peut être programmé pour exécuter une seule instruction arithmétique ou booléenne et en ce que le processeur du train de bits (245) ne peut être programmé pour exécuter une seule instruction arithmétique ou booléenne. 4. Procédé pour le codage ou le décodage de données vidéo, du type Où un processeur vectoriel accomplit une transformation linéaire sur des données vidéo un processeur de train de bits comprime un sortie du processeur vectoriel ou décomprime les données vidéo pour une entrée au processeur vectoriel ; et un circuit de contrôle synchronise le fonctionnement du processeur vectoriel et du processeur de train de bits caractérisé en ce que le processeur de train de bits est interrompu par le circuit de contrôle pour arrêter le traitement d'un train de données vidéo et commencer le traitement d'un train différent de données vidéo de manière que le processeur de train de bits traite les deux trains de données vidéo concurremment pour permettre au système de coder ou de décoder le système de train de données vidéo en temps réel. 5. Procédé selon la revendication 4, caractérisé en ce que chaque train de données vidéo représente une image mobile 6. Procédé pour le codage ou le décodage de données vidéo, du type où un processeur vectoriel accomplit une transformation linéaire sur des données vidéo ; et un processeur de train de bits comprime une sortie du processeur vectoriel ou décomprime les données vidéo pour une entrée au processeur vectoriel caractérisé en ce que le processeur vectoriel peut être programmé pour exécuter une seule instruction arithmétique ou booléenne et en ce que le processeur du train de bits n'est pas capable d'être programmé pour exécuter une seule instruction arithmétique ou booléenne.