FR2753031A1 - Procedes et dispositifs pour le traitement de donnees video - Google Patents

Procedes et dispositifs pour le traitement de donnees video Download PDF

Info

Publication number
FR2753031A1
FR2753031A1 FR9710439A FR9710439A FR2753031A1 FR 2753031 A1 FR2753031 A1 FR 2753031A1 FR 9710439 A FR9710439 A FR 9710439A FR 9710439 A FR9710439 A FR 9710439A FR 2753031 A1 FR2753031 A1 FR 2753031A1
Authority
FR
France
Prior art keywords
sep
data
address
register
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9710439A
Other languages
English (en)
Other versions
FR2753031B1 (fr
Inventor
Cliff Reader
Jae Cheol Son
Amjad Qureshi
Le Trong Nguyen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of FR2753031A1 publication Critical patent/FR2753031A1/fr
Application granted granted Critical
Publication of FR2753031B1 publication Critical patent/FR2753031B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/008Vector quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

L'invention concerne un système pour le codage ou le décodage de données vidéo. Selon l'invention, le système comprend un processeur vectoriel (220) pour accomplir une transformation linéaire sur des données vidéo, un processeur de train de bits (245) 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 (248) pour synchroniser le fonctionnement du processeur vectoriel et du processeur du train de bits, le processeur du train de bits (245) pouvant ê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 différent de données vidéo de façon 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. L'invention s 'applique notamment aux télécommunications.

Description

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 < 23 >
MDA24 Broche de sortie. Bit d'Adresse de Mémoire < 24 >
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
Figure img00200001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> N <SEP> Module
<tb> <SEP> N
<tb> <SEP> 1 <SEP> 202 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 2 <SEP> 1 <SEP> E/S <SEP> AD31 <SEP> Adresse <SEP> et <SEP> Données <SEP> pour <SEP> bus <SEP> PCI
<tb> <SEP> 3 <SEP> 2 <SEP> E/S <SEP> AD30
<tb> <SEP> 4 <SEP> 3 <SEP> E/S <SEP> AD29
<tb> <SEP> 5 <SEP> 4 <SEP> E/S <SEP> AD28
<tb> <SEP> 6 <SEP> ~ <SEP> 5 <SEP> E/S <SEP> AD27
<tb> <SEP> 7 <SEP> 205 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 8 <SEP> 6 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> courant <SEP> S <SEP> V
<tb> <SEP> 9 <SEP> 7 <SEP> E/S <SEP> AD26 <SEP> Adresse <SEP> et <SEP> Données <SEP> pour <SEP> bus <SEP> PCI
<tb> <SEP> 10 <SEP> S <SEP> E/S <SEP> AD25~S09 <SEP> Adresse <SEP> et <SEP> Données <SEP> pour <SEP> bus <SEP> PCI/test
<tb> <SEP> Série <SEP> sortie
<tb> <SEP> 11 <SEP> 9 <SEP> E/S <SEP> AD24~SO8 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus <SEP> PCI/test
<tb> <SEP> Série <SEP> sortie
<tb> <SEP> 12 <SEP> 10 <SEP> E/S <SEP> C <SEP> BE3L <SEP> Validation <SEP> contrôl/octet <SEP> pour <SEP> PCI
<tb> <SEP> 13 <SEP> 208 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 14 <SEP> 11 <SEP> EN <SEP> IDSEL <SEP> Initialisation <SEP> Sélection <SEP> pour <SEP> PCI
<tb> <SEP> 15 <SEP> 12 <SEP> ; <SEP> E/S <SEP> AD23 <SEP> SP7 <SEP> Adresse <SEP> et <SEP> Données <SEP> pour <SEP> bus <SEP> PCI/Test
<tb> <SEP> Série <SEP> sortie
<tb> <SEP> 16 <SEP> 13 <SEP> E/S <SEP> AD22 <SEP> 506
<tb> <SEP> 17 <SEP> 14 <SEP> E/S <SEP> AD21 <SEP> SO5
<tb> <SEP> 18 <SEP> 15 <SEP> E/S <SEP> AD20 <SEP> S04
<tb> <SEP> 19 <SEP> 209 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 20 <SEP> 16 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> Courant <SEP> S <SEP> V
<tb> <SEP> 21 <SEP> 17 <SEP> E/S <SEP> AD19~SO3 <SEP> Adresse <SEP> et <SEP> Données <SEP> pour <SEP> bus <SEP> PCI/Test
<tb> <SEP> Série <SEP> sortie
<tb> <SEP> 22 <SEP> 18 <SEP> E/S <SEP> AD18~SO2
<tb> <SEP> 23 <SEP> 19 <SEP> E/S <SEP> AD17~SO1
<tb> <SEP> 24 <SEP> 210 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 25 <SEP> 20 <SEP> E/S <SEP> AD16~SO0 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus <SEP> PCI/Test
<tb> <SEP> Serie <SEP> sortie
<tb>
Figure img00210001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> <SEP> Puce <SEP> N <SEP> Module
<tb> <SEP> N
<tb> <SEP> 26 <SEP> 21 <SEP> E/S <SEP> C <SEP> BE2t <SEP> Validation <SEP> Contrôle/Octet <SEP> pour <SEP> PCI
<tb> <SEP> 27 <SEP> 22 <SEP> E/S <SEP> FRAMEL <SEP> Début <SEP> du <SEP> cycle <SEP> du <SEP> bus <SEP> PCI
<tb> <SEP> 28 <SEP> 23 <SEP> E/S <SEP> IRDYL <SEP> Initiateur <SEP> prêt <SEP> sur <SEP> PCI <SEP> (Pilote)
<tb> <SEP> 29 <SEP> 211 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 30 <SEP> 24 <SEP> E/S <SEP> TRDYL <SEP> Cible <SEP> prête <SEP> sur <SEP> PCI <SEP> (Esclave)
<tb> <SEP> 31 <SEP> 25 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> Courant
<tb> <SEP> 32 <SEP> 26 <SEP> E/S <SEP> DVSELL <SEP> Sélection <SEP> Dispositif <SEP> sur <SEP> PCI
<tb> <SEP> 33 <SEP> 27 <SEP> E/S <SEP> STOPL <SEP> Arrêt <SEP> Transaction <SEP> Courante <SEP> sur <SEP> PCI
<tb> <SEP> 34 <SEP> 28 <SEP> E/S <SEP> LOCKL <SEP> Bloquage <SEP> Transaction <SEP> Courante <SEP> sur
<tb> <SEP> PCI
<tb> <SEP> 35 <SEP> 214 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 36 <SEP> 29 <SEP> E/S <SEP> PERRL <SEP> Erreur <SEP> Parité <SEP> sur <SEP> PCI
<tb> <SEP> 37 <SEP> 30 <SEP> E/S <SEP> SERRL <SEP> Erreur <SEP> Système <SEP> sur <SEP> PCI
<tb> <SEP> 38 <SEP> 31 <SEP> EN <SEP> TCA <SEP> Horloge <SEP> Test <SEP> A
<tb> <SEP> 39 <SEP> 32 <SEP> E/S <SEP> PAR <SEP> Parité <SEP> sur <SEP> PCI
<tb> <SEP> 40 <SEP> 215 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 41 <SEP> 33 <SEP> E/S <SEP> C <SEP> BEIL <SEP> Validation <SEP> Contrôle/Octet <SEP> pour <SEP> PCI
<tb> <SEP> 42 <SEP> 34 <SEP> E/S <SEP> AD15 <SEP> S19 <SEP> Adresse <SEP> et <SEP> Données <SEP> pour <SEP> bus <SEP> PCI/Test
<tb> <SEP> Série <SEP> entrée
<tb> <SEP> 43 <SEP> 35 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 5 <SEP> V
<tb> <SEP> 44 <SEP> 36 <SEP> E/S <SEP> AD14 <SEP> S18 <SEP> Adresse <SEP> et <SEP> Données <SEP> pour <SEP> bus <SEP> PCI/Test
<tb> <SEP> de <SEP> Série <SEP> Entrée <SEP> PCI
<tb> <SEP> 45 <SEP> 37 <SEP> E/S <SEP> AD13 <SEP> S17
<tb> <SEP> 46 <SEP> 38 <SEP> E/S <SEP> AD12@S16
<tb> <SEP> 47 <SEP> 218 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3.3 <SEP> V
<tb> <SEP> 48 <SEP> 39 <SEP> E/S <SEP> AD11~S15 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus <SEP> PCI/test <SEP>
<tb> <SEP> serie <SEP> entrée
<tb> <SEP> 49 <SEP> 40 <SEP> E/S <SEP> AD10 <SEP> S14
<tb> 50 <SEP> 41 <SEP> E/S <SEP> AD09 <SEP> S13 <SEP>
<tb> <SEP> 51 <SEP> 42 <SEP> E/S <SEP> AD08 <SEP> S12
<tb> <SEP> 52 <SEP> 221 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 53 <SEP> 43 <SEP> E/S <SEP> C <SEP> BEOL <SEP> Validation <SEP> Contrle/Octet <SEP> pour <SEP> PCI
<tb>
Figure img00220001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> N <SEP> Module
<tb> <SEP> N
<tb> <SEP> 54 <SEP> 44 <SEP> EN <SEP> TCB <SEP> Horloge <SEP> Test <SEP> B
<tb> <SEP> 55 <SEP> 45 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 5 <SEP> V
<tb> <SEP> 56 <SEP> 46 <SEP> EN <SEP> TM <SEP> Mode <SEP> de <SEP> Test
<tb> <SEP> 57 <SEP> 47 <SEP> E/S <SEP> AD07~511 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus <SEP> PCI/Test
<tb> <SEP> Série <SEP> entrée
<tb> <SEP> 58 <SEP> 48 <SEP> E/S <SEP> AD06 <SEP> S10 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus <SEP> PCI/Test
<tb> <SEP> Série <SEP> Entrée
<tb> <SEP> 59 <SEP> 222 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 60 <SEP> 49 <SEP> E/S <SEP> AD05~MT5 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus
<tb> <SEP> PCI/Données <SEP> Test <SEP> Mem
<tb> <SEP> 61 <SEP> 50 <SEP> E/s <SEP> AD04~MT4 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus
<tb> <SEP> PCI/données <SEP> Test <SEP> Mem
<tb> <SEP> 62 <SEP> 226 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 63 <SEP> 227 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 64 <SEP> 51 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 5 <SEP> v
<tb> <SEP> 65 <SEP> 52 <SEP> E/S <SEP> AD03~MT3 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus
<tb> <SEP> PCI/Données <SEP> Test <SEP> Mem
<tb> <SEP> 66 <SEP> 53 <SEP> E/S <SEP> AD02 <SEP> MT2 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus
<tb> <SEP> PCI/Données <SEP> Test <SEP> Mem
<tb> <SEP> 67 <SEP> 227 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 68 <SEP> 54 <SEP> E/S <SEP> AD01~MT1 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus
<tb> <SEP> PCI/Données <SEP> Test <SEP> Mem
<tb> <SEP> 69 <SEP> 55 <SEP> E/S <SEP> AD00~MT0 <SEP> Adresse <SEP> et <SEP> données <SEP> pour <SEP> bus
<tb> <SEP> PCI/Données <SEP> Test <SEP> Mem
<tb> <SEP> 70 <SEP> 228 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 71 <SEP> 229 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 72 <SEP> 56 <SEP> SOR <SEP> HA11 <SEP> Bus <SEP> Adresse <SEP> SDRAM
<tb> <SEP> 73 <SEP> 57 <SEP> SOR <SEP> MA10 <SEP>
<tb> <SEP> 74 <SEP> 58 <SEP> SOR <SEP> MA9 <SEP>
<tb> <SEP> 75 <SEP> 59 <SEP> SOR <SEP> MA8 <SEP>
<tb> <SEP> 76 <SEP> 60 <SEP> SOR <SEP> MA7 <SEP>
<tb>
Figure img00230001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> N0 <SEP> Module
<tb> <SEP> N0 <SEP>
<tb> <SEP> 77 <SEP> 230 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 78 <SEP> 231 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 79 <SEP> 61 <SEP> SOR <SEP> MA6 <SEP> bus <SEP> Adresse <SEP> SDRAM <SEP>
<tb> <SEP> 80 <SEP> 62 <SEP> SOR <SEP> MA5 <SEP>
<tb> <SEP> 81 <SEP> 63 <SEP> SOR <SEP> MA4
<tb> <SEP> 82 <SEP> 64 <SEP> SOR <SEP> MA3
<tb> <SEP> 83 <SEP> 232 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 84 <SEP> 233 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 85 <SEP> 65 <SEP> SOR <SEP> MA2 <SEP> Bus <SEP> Adresse <SEP> SDRAM
<tb> <SEP> 86 <SEP> 66 <SEP> SOR <SEP> MA1 <SEP>
<tb> <SEP> 87 <SEP> 67 <SEP> SOR <SEP> MAO <SEP>
<tb> <SEP> 88 <SEP> 68 <SEP> SOR <SEP> RASIL <SEP> Echantillon <SEP> Adresse <SEP> Rangée <SEP> SDRAM <SEP> 1
<tb> <SEP> 89 <SEP> 234 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 90 <SEP> 235 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 91 <SEP> 69 <SEP> SOR <SEP> CASIL <SEP> Echantillon <SEP> Colonne <SEP> SDRAM <SEP> 1
<tb> <SEP> 92 <SEP> 70 <SEP> SOR <SEP> MEMCLK <SEP> Horloge <SEP> SDRAM <SEP> (80 <SEP> MHz)
<tb> <SEP> 93 <SEP> 71 <SEP> SOR <SEP> MWEL <SEP> Validation <SEP> Ecriture <SEP> SDRAM
<tb> <SEP> 94 <SEP> 72 <SEP> SOR <SEP> DQM <SEP> DQM <SEP> SDRAM
<tb> <SEP> 95 <SEP> 73 <SEP> SOR <SEP> MCSOL <SEP> Sélection <SEP> Puce <SEP> SDRAM <SEP> (Mot <SEP> Bas) <SEP>
<tb> <SEP> 96 <SEP> 74 <SEP> SOR <SEP> MCSIL <SEP> Sélection <SEP> Puce <SEP> SDRAM <SEP> (Mot <SEP> Haut) <SEP>
<tb> <SEP> 97 <SEP> 236 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 98 <SEP> 237 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 99 <SEP> 75 <SEP> SOR <SEP> MCKE <SEP> Validation <SEP> Horloge <SEP> SDRAM
<tb> <SEP> 100 <SEP> 76 <SEP> EN <SEP> MRDYH <SEP> SDRAM <SEP> Prête
<tb> <SEP> 101 <SEP> 238 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 102 <SEP> 239 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 103 <SEP> 77 <SEP> E/S <SEP> MDC <SEP> Bus <SEP> Données <SEP> SDRAM <SEP>
<tb> <SEP> 104 <SEP> 78 <SEP> E/S <SEP> Mol <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 105 <SEP> ~ <SEP> 79 <SEP> E/S <SEP> MD2
<tb> <SEP> 106 <SEP> 80 <SEP> E/S <SEP> LD3
<tb> <SEP> 107 <SEP> 240 <SEP> EN <SEP> VDD
<tb> <SEP> 108 <SEP> 241 <SEP> EN <SEP> GND <SEP> Terre
<tb>
Figure img00240001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> N <SEP> Module
<tb> N
<tb> <SEP> 109 <SEP> 81 <SEP> E/S <SEP> MD4 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 110 <SEP> 82 <SEP> E/S <SEP> MD5
<tb> <SEP> 111 <SEP> 83 <SEP> E/S <SEP> MD6
<tb> <SEP> 112 <SEP> 84 <SEP> E/S <SEP> MD7
<tb> <SEP> 113 <SEP> 242 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 114 <SEP> 243 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 115 <SEP> 85 <SEP> E/S <SEP> MD8
<tb> <SEP> 116 <SEP> 86 <SEP> E/S <SEP> MD9
<tb> <SEP> 117 <SEP> 87 <SEP> E/S <SEP> MD10 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 118 <SEP> 88 <SEP> E/S <SEP> MD11
<tb> <SEP> 119 <SEP> 244 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 120 <SEP> 245 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 121 <SEP> 89 <SEP> E/S <SEP> MD12
<tb> <SEP> 122 <SEP> 90 <SEP> E/S <SEP> MD13 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 123 <SEP> 91 <SEP> E/S <SEP> MD14
<tb> <SEP> 124 <SEP> 92 <SEP> E/S <SEP> MD15
<tb> <SEP> 125 <SEP> 246 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> courant <SEP> 3,3 <SEP> V
<tb> <SEP> 126 <SEP> 247 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 127 <SEP> 93 <SEP> E/S <SEP> MD16
<tb> <SEP> 128 <SEP> 94 <SEP> E/S <SEP> MD17 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 129 <SEP> 95 <SEP> E/S <SEP> MD18
<tb> <SEP> 130 <SEP> 96 <SEP> E/S <SEP> MD19
<tb> <SEP> 131 <SEP> 248 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 132 <SEP> 249 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 133 <SEP> 97 <SEP> E/S <SEP> MD20 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 134 <SEP> 98 <SEP> E/S <SEP> MD21
<tb> <SEP> 135 <SEP> 99 <SEP> E/S <SEP> MD22
<tb> <SEP> 136 <SEP> 100 <SEP> E/S <SEP> MD23
<tb> <SEP> 137 <SEP> 250 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 138 <SEP> 251 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 139 <SEP> 101 <SEP> E/S <SEP> MD24
<tb> <SEP> 140 <SEP> 102 <SEP> E/S <SEP> MD25 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb>
Figure img00250001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> N <SEP> Module
<tb> N
<tb> <SEP> 141 <SEP> 103 <SEP> E/S <SEP> MD26 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 142 <SEP> 104 <SEP> E/S <SEP> MD27
<tb> <SEP> 143 <SEP> 254 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 144 <SEP> 255 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 145 <SEP> 105 <SEP> E/S <SEP> MD28 <SEP>
<tb> <SEP> 146 <SEP> 106 <SEP> E/S <SEP> MD29 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 147 <SEP> 107 <SEP> E/S <SEP> ND30
<tb> <SEP> 148 <SEP> 108 <SEP> E/S <SEP> MD31
<tb> <SEP> 149 <SEP> 256 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 150 <SEP> 257 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 151 <SEP> 109 <SEP> E/S <SEP> MD32
<tb> <SEP> 152 <SEP> 110 <SEP> E/S <SEP> ND33 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 153 <SEP> 111 <SEP> E/S <SEP> MD34
<tb> <SEP> 154 <SEP> 112 <SEP> E/S <SEP> MD35
<tb> <SEP> 155 <SEP> 258 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 156 <SEP> 259 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 157 <SEP> 113 <SEP> E/S <SEP> MD36
<tb> <SEP> 158 <SEP> 114 <SEP> E/S <SEP> MD37 <SEP> Bus <SEP> Données <SEP> SDRAN <SEP>
<tb> <SEP> 159 <SEP> 115 <SEP> E/S <SEP> MD38
<tb> <SEP> 160 <SEP> 116 <SEP> E/S <SEP> MD39 <SEP>
<tb> <SEP> 161 <SEP> 260 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 162 <SEP> 261 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 163 <SEP> 117 <SEP> E/S <SEP> MD40 <SEP>
<tb> <SEP> 164 <SEP> 118 <SEP> E/S <SEP> MD41 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 165 <SEP> 119 <SEP> E/S <SEP> MD42 <SEP>
<tb> <SEP> 166 <SEP> 120 <SEP> EN <SEP> MSPCK <SEP> Horloge <SEP> Système <SEP> MSP
<tb> <SEP> 167 <SEP> 262 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 168 <SEP> 263 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 169 <SEP> 121 <SEP> E/S <SEP> MD43
<tb> <SEP> 170 <SEP> 122 <SEP> E/S <SEP> MD44 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 171 <SEP> 123 <SEP> E/S <SEP> MD45
<tb> <SEP> 172 <SEP> 124 <SEP> E/S <SEP> MD46
<tb>
Figure img00260001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> N <SEP> Module
<tb> <SEP> N
<tb> <SEP> 173 <SEP> 264 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 174 <SEP> 265 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 175 <SEP> 125 <SEP> E/S <SEP> MD47
<tb> <SEP> 176 <SEP> 126 <SEP> E/S <SEP> MD48 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 177 <SEP> 127 <SEP> E/S <SEP> MD49
<tb> <SEP> 178 <SEP> 128 <SEP> E/S <SEP> MD50
<tb> <SEP> 179 <SEP> 266 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 180 <SEP> 267 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 181 <SEP> 129 <SEP> E/S <SEP> MD51
<tb> <SEP> 182 <SEP> 130 <SEP> E/S <SEP> MD52 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 183 <SEP> 131 <SEP> E/S <SEP> MD53
<tb> <SEP> 184 <SEP> 132 <SEP> E/S <SEP> MD54
<tb> <SEP> 185 <SEP> 269 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 186 <SEP> 133 <SEP> E/S <SEP> MD55
<tb> <SEP> 187 <SEP> 134 <SEP> E/S <SEP> MD56 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 188 <SEP> 135 <SEP> E/S <SEP> MD57
<tb> <SEP> 189 <SEP> 136 <SEP> E/S <SEP> MD58
<tb> <SEP> 190 <SEP> 270 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 191 <SEP> 271 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 192 <SEP> 137 <SEP> OUT <SEP> MD59
<tb> <SEP> 193 <SEP> 138 <SEP> E/S <SEP> MD60 <SEP> Bus <SEP> Données <SEP> SDRAM
<tb> <SEP> 194 <SEP> 139 <SEP> E/S <SEP> MD61
<tb> <SEP> 195 <SEP> 140 <SEP> E/S <SEP> MD62
<tb> <SEP> 196 <SEP> 141 <SEP> E/S <SEP> MD63
<tb> <SEP> 197 <SEP> 273 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 198 <SEP> 142 <SEP> SOR <SEP> MA23 <SEP> Bit <SEP> Adresse <SEP> Mémoire <SEP> < 23 >
<tb> <SEP> 199 <SEP> 143 <SEP> SOR <SEP> MA24 <SEP> Bit <SEP> Adresse <SEP> Mémoire <SEP> < 24 >
<tb> <SEP> 200 <SEP> 144 <SEP> SOR <SEP> RESETO <SEP> Remise <SEP> à <SEP> l'Etat <SEP> Initial <SEP> du <SEP> Système
<tb> <SEP> vers <SEP> l'autre <SEP> Puce
<tb> <SEP> 201 <SEP> 145 <SEP> SOR <SEP> TCSOL <SEP> Sélection <SEP> Puce <SEP> 0
<tb> <SEP> 202 <SEP> 146 <SEP> SOR <SEP> TCSIL <SEP> Sélection <SEP> Puce <SEP> 1
<tb>
Figure img00270001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> N <SEP> Module
<tb> N
<tb> <SEP> 203 <SEP> 147 <SEP> SOR <SEP> PD15 <SEP> PA15
<tb> <SEP> 204 <SEP> 148 <SEP> SOR <SEP> PD14 <SEP> PA14 <SEP> Sortie <SEP> Données <SEP> Eléments <SEP> Image <SEP> KS119
<tb> <SEP> 205 <SEP> 149 <SEP> SOR <SEP> PD13 <SEP> PA13 <SEP> Adresse <SEP> PROM <SEP> Bus <SEP> BIOS
<tb> <SEP> 206 <SEP> 150 <SEP> SOR <SEP> PD12 <SEP> PA12
<tb> <SEP> 207 <SEP> 276 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 208 <SEP> 277 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 209 <SEP> 151 <SEP> SOR <SEP> PD11 <SEP> PA11
<tb> <SEP> 210 <SEP> 152 <SEP> SOR <SEP> PD10 <SEP> PA10 <SEP> Sortie <SEP> Données <SEP> Elêments <SEP> Image <SEP> KS119
<tb> <SEP> 211 <SEP> 153 <SEP> SOR <SEP> PD9 <SEP> PA9 <SEP> Adresse <SEP> PROM <SEP> Bus <SEP> BIOS
<tb> <SEP> 212 <SEP> 154 <SEP> SOR <SEP> PD8 <SEP> PA8
<tb> <SEP> 213 <SEP> 278 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 214 <SEP> 279 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 215 <SEP> 155 <SEP> SOR <SEP> PD7 <SEP> PA7
<tb> <SEP> 216 <SEP> 156 <SEP> SOR <SEP> PD6 <SEP> PA6 <SEP> Sortie <SEP> Données <SEP> Elêments <SEP> Image <SEP> KS119
<tb> <SEP> 217 <SEP> 157 <SEP> SOR <SEP> PD5 <SEP> PAS <SEP> Adresse <SEP> PROM <SEP> Bus <SEP> BIOS
<tb> <SEP> 218 <SEP> 158 <SEP> SOR <SEP> PD4 <SEP> PA4
<tb> <SEP> 219 <SEP> 281 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 220 <SEP> 159 <SEP> SOR <SEP> PD3 <SEP> PA3
<tb> <SEP> 221 <SEP> 160 <SEP> SOR <SEP> PD2 <SEP> PA2 <SEP> Sortie <SEP> Données <SEP> Elêments <SEP> Image <SEP> KS119 <SEP>
<tb> <SEP> 222 <SEP> 161 <SEP> SOR <SEP> PD1 <SEP> PA1 <SEP> Adresse <SEP> PROM <SEP> Bus <SEP> BIOS
<tb> <SEP> 223 <SEP> 162 <SEP> SOR <SEP> PDO <SEP> PAO
<tb> <SEP> 224 <SEP> 282 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 225 <SEP> 163 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 5 <SEP> V
<tb> <SEP> 226 <SEP> 164 <SEP> EN <SEP> C7
<tb> <SEP> 227 <SEP> 165 <SEP> EN <SEP> C6 <SEP> Données <SEP> EPROM <SEP> BIOS
<tb> <SEP> 228 <SEP> 166 <SEP> EN <SEP> C5
<tb> <SEP> 229 <SEP> 167 <SEP> EN <SEP> C4
<tb> <SEP> 230 <SEP> 283 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 231 <SEP> 168 <SEP> EN <SEP> C3
<tb> <SEP> 232 <SEP> 169 <SEP> EN <SEP> C2 <SEP> Données <SEP> EPROM <SEP> BIOS <SEP>
<tb> <SEP> 233 <SEP> 170 <SEP> EN <SEP> C1 <SEP>
<tb> <SEP> 234 <SEP> 171 <SEP> EN <SEP> CO
<tb>
Figure img00280001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> N <SEP> Module
<tb> <SEP> N
<tb> <SEP> 235 <SEP> 286 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb> <SEP> 236 <SEP> 172 <SEP> SOR <SEP> PROMCSL <SEP> Sélection <SEP> Puce <SEP> PROM <SEP> BIOS
<tb> <SEP> 237 <SEP> 173 <SEP> EN <SEP> BGVS <SEP> Synchronisation <SEP> Verticale <SEP> KS119 <SEP>
<tb> <SEP> 238 <SEP> 174 <SEP> EN <SEP> BGHS <SEP> Synchronisation <SEP> Horizontale <SEP> KS119
<tb> <SEP> 239 <SEP> 175 <SEP> SOR <SEP> MSSEL <SEP> Sélection <SEP> Maître <SEP> KS119
<tb> <SEP> 240 <SEP> 176 <SEP> EN <SEP> BGCLK <SEP> Entrée <SEP> Horloge <SEP> Elément <SEP> Image
<tb> <SEP> 241 <SEP> 177 <SEP> Réservé
<tb> <SEP> 242 <SEP> 178 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 5 <SEP> V
<tb> <SEP> 243 <SEP> 289 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 244 <SEP> 179 <SEP> SOR <SEP> SCLK <SEP> Horloge <SEP> Série <SEP> KS119 <SEP>
<tb> <SEP> 245 <SEP> 180 <SEP> E/S <SEP> SDAT <SEP> Données <SEP> Série <SEP> KS119 <SEP>
<tb> <SEP> 246 <SEP> 181 <SEP> SOR <SEP> SFRS <SEP> Synchronisation <SEP> Image <SEP> KS119
<tb> <SEP> 247 <SEP> 182 <SEP> Réservé
<tb> <SEP> 248 <SEP> 183 <SEP> EN <SEP> SERIAL <SEP> EN <SEP> Entrée <SEP> Série
<tb> <SEP> 249 <SEP> 184 <SEP> SOR <SEP> SERIAL <SEP> 0 <SEP> Sortie <SEP> Série
<tb> <SEP> 250 <SEP> 185 <SEP> EN <SEP> A43SDFS <SEP> Synchronisation <SEP> Image <SEP> CODEC <SEP> 1843
<tb> <SEP> 251 <SEP> 292 <SEP> EN <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3.3 <SEP> V
<tb> <SEP> 252 <SEP> 293 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 253 <SEP> 186 <SEP> EN <SEP> A43SCLK <SEP> Horloge <SEP> CODEC <SEP> 1843
<tb> <SEP> 254 <SEP> 187 <SEP> SOR <SEP> A43SDI <SEP> Sortie <SEP> Données <SEP> Série <SEP> CODEC <SEP> 1843
<tb> <SEP> 255 <SEP> 188 <SEP> EN <SEP> A43SDI <SEP> Entrée <SEP> Données <SEP> Série <SEP> CODEC <SEP> 1843
<tb> <SEP> 256 <SEP> 189 <SEP> EN <SEP> VCC <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 5 <SEP> V
<tb> <SEP> 257 <SEP> 190 <SEP> EN <SEP> TDI <SEP> Entrée <SEP> Données <SEP> Test <SEP> JTAG
<tb> <SEP> 258 <SEP> 297 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 259 <SEP> 191 <SEP> EN <SEP> TCK <SEP> Horloge <SEP> Test <SEP> JTAG
<tb> <SEP> 260 <SEP> 192 <SEP> SOR <SEP> TDO <SEP> Sortie <SEP> Données <SEP> Test <SEP> JTAG
<tb> <SEP> 261 <SEP> 193 <SEP> EN <SEP> TRSTL <SEP> Remise <SEP> Etat <SEP> Initial <SEP> Test <SEP> JTAG
<tb> <SEP> 262 <SEP> 194 <SEP> EN <SEP> TMS <SEP> Mode <SEP> Test <SEP> JTAG
<tb> <SEP> 263 <SEP> 195 <SEP> SOR <SEP> INTAL <SEP> Interruption <SEP> A <SEP> pour <SEP> PCI
<tb> <SEP> 264 <SEP> 196 <SEP> EN <SEP> RSTL <SEP> | <SEP> Remise <SEP> Etat <SEP> Initial <SEP> PCI
<tb> <SEP> 265 <SEP> 298 <SEP> EN <SEP> ~ <SEP> VDD <SEP> Alimentation <SEP> en <SEP> Courant <SEP> 3,3 <SEP> V
<tb>
Figure img00290001
<tb> <SEP> Plot <SEP> Broche <SEP> Type <SEP> Nom <SEP> Description
<tb> Puce <SEP> NO <SEP> Module
<tb> <SEP> NO <SEP>
<tb> <SEP> 266 <SEP> 197 <SEP> EN <SEP> PCICLK <SEP> Horloge <SEP> PCI
<tb> <SEP> 267 <SEP> 198 <SEP> EN <SEP> GNTL <SEP> Accord <SEP> Bus <SEP> PCI
<tb> <SEP> 268 <SEP> 199 <SEP> SOR <SEP> REQL <SEP> Demande <SEP> Bus <SEP> PCI
<tb> <SEP> 269 <SEP> 299 <SEP> EN <SEP> GND <SEP> Terre
<tb> <SEP> 270 <SEP> 200 <SEP> Réservé
<tb> 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 < tbd > 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
Figure img00330001
<tb> <SEP> DECALAGE <SEP> | <SEP> DESCRIPTIONS
<tb> 0x00 <SEP> Identificateur <SEP> du <SEP> Dispositif <SEP> et <SEP> du <SEP> Vendeur
<tb> 0x04 <SEP> Etat <SEP> et <SEP> Commande
<tb> 0x08 <SEP> Code <SEP> Classe <SEP> et <SEP> Identificateur <SEP> Révision
<tb> 0x0C <SEP> Registre <SEP> Divers
<tb> 0x10 <SEP> Registre <SEP> Adresse <SEP> Base <SEP> MSP <SEP> (MSP <SEP> BASE)
<tb> 0x14 <SEP> Registre <SEP> Adresse <SEP> Base <SEP> Tampon <SEP> Bloc <SEP> Virtuel
<tb> 0x18 <SEP> Registre <SEP> Adresse <SEP> Base <SEP> 2 <SEP> (non <SEP> utilisé)
<tb> 0xlC <SEP> Registre <SEP> Adresse <SEP> Base <SEP> 3 <SEP> (non <SEP> utilisé)
<tb> 0x20 <SEP> Registre <SEP> Adresse <SEP> Base <SEP> 4 <SEP> (non <SEP> utilisé)
<tb> 0x24 <SEP> Registre <SEP> Adresse <SEP> Base <SEP> 5 <SEP> (non <SEP> utilisé)
<tb> 0x28 <SEP> Réservé
<tb> 0x2C <SEP> Réservé
<tb> 0x30 <SEP> Adresse <SEP> Base <SEP> ROM <SEP> Expansion
<tb> 0x3C <SEP> Ligne <SEP> Interruption
<tb> 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
Figure img00370001
<tb> Adrese <SEP> ARM7 <SEP> Adresse <SEP> hôte <SEP> Dispositif
<tb> <SEP> [31:0] <SEP> [26 <SEP> : <SEP> 0]
<tb> <SEP> (en <SEP> hex) <SEP> (en <SEP> hex)
<tb> <SEP> 0000 <SEP> 0000 <SEP> 000 <SEP> 0000 <SEP> ROM <SEP> interne
<tb> <SEP> 0040 <SEP> 0000 <SEP> 040 <SEP> 0000 <SEP> SRAM <SEP> Zone <SEP> de <SEP> Travail <SEP> Interne
<tb> <SEP> 0080 <SEP> 0000 <SEP> 080 <SEP> 0000 <SEP> DRAM <SEP> Synchrone <SEP> Externe
<tb> <SEP> 0480 <SEP> 0000 <SEP> 480 <SEP> 0000 <SEP> Contrôleur <SEP> Memoire <SEP> DRAM <SEP> interne
<tb> <SEP> 0490 <SEP> 0000 <SEP> 490 <SEP> 0000 <SEP> Contrôleur <SEP> Tampon <SEP> Trames <SEP> virtuelles
<tb> <SEP> interne
<tb> <SEP> 04A0 <SEP> 0000 <SEP> 4A0 <SEP> 0000 <SEP> contrôleur <SEP> DMA <SEP> Interne
<tb> <SEP> 04B0 <SEP> 0000 <SEP> 4B0 <SEP> 0000 <SEP> Ligne <SEP> Série <SEP> CODEC <SEP> KS0119 <SEP>
<tb> <SEP> 04C0 <SEP> 0000 <SEP> 4C0 <SEP> 0000 <SEP> Ligne <SEP> Série <SEP> CODEC <SEP> RS0122 <SEP>
<tb> <SEP> 04C0 <SEP> 0200 <SEP> 4C0 <SEP> 0200 <SEP> Ligne <SEP> Série <SEP> CODEC <SEP> 1843 <SEP> DA
<tb> <SEP> 04D0 <SEP> 0000 <SEP> 4D0 <SEP> 0000 <SEP> Appareil <SEP> transfert <SEP> Données <SEP> Mémoire
<tb> <SEP> 04D0 <SEP> A000 <SEP> 4D0 <SEP> A000
<tb> <SEP> à <SEP> à <SEP> Réservé
<tb> <SEP> 07BF <SEP> FFFF <SEP> 7BF <SEP> FFFF
<tb> <SEP> 07C0 <SEP> 0000 <SEP> ~ <SEP> 7C0 <SEP> 0000 <SEP> Processeur <SEP> Train <SEP> Bits <SEP> interne
<tb> <SEP> 07D0 <SEP> 0000 <SEP> 7D0 <SEP> 0000 <SEP> Contrôleur <SEP> Interruption <SEP> Interne <SEP> 8259
<tb> <SEP> 07D0 <SEP> 0010 <SEP> 7D0 <SEP> 0010 <SEP> Temporisateurs <SEP> Internes <SEP> 8254
<tb> <SEP> 07D0 <SEP> 0020 <SEP> 7D0 <SEP> 0020 <SEP> UART <SEP> Interne <SEP> 16450
<tb> <SEP> 07E0 <SEP> 0000 <SEP> 7E0 <SEP> 0000
<tb> <SEP> à <SEP> à <SEP> Réservé
<tb> <SEP> 07DF <SEP> FFFF <SEP> 7DF <SEP> FFFF
<tb> <SEP> 07DF <SEP> FFF0 <SEP> 7DF <SEP> FFF0 <SEP> Registre <SEP> Contrôle <SEP> Hôte <SEP> MSP
<tb> <SEP> 07DF <SEP> FFF4 <SEP> 7DF <SEP> FFF4 <SEP> Registre <SEP> Contrôle <SEP> ARM7 <SEP> de <SEP> MSP
<tb> <SEP> 07DF <SEP> FFF8 <SEP> 7DF <SEP> FFF8 <SEP> Réservé
<tb> <SEP> 07DF <SEP> FFFB <SEP> 7DF <SEP> FFFB <SEP> Réservé
<tb> <SEP> 07E0 <SEP> 0000
<tb> <SEP> à <SEP> Réservé
<tb> <SEP> 7FFF <SEP> FFFF
<tb> <SEP> 8000 <SEP> 0000 <SEP> Autres <SEP> dispositifs <SEP> Hôte <SEP> de <SEP> PCI
<tb> <SEP> à <SEP> (topographies <SEP> de <SEP> 0 <SEP> jusqu'à <SEP> 7FFF <SEP> FFFF <SEP> de
<tb> <SEP> FFFF <SEP> FFFF <SEP> de <SEP> la <SEP> mémoire <SEP> de <SEP> PCI <SEP> Hôte
<tb> 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
Figure img00380001
<tb> BIT <SEP> N <SEP> Description
<tb> <SEP> O <SEP> Remis <SEP> à <SEP> l'Etat <SEP> Initial <SEP> Système <SEP> PCI
<tb> <SEP> 1 <SEP> Remise <SEP> en <SEP> Marche <SEP> ARM7 <SEP> et <SEP> Vecteur
<tb> <SEP> 2 <SEP> Demande <SEP> Interruption <SEP> MSP <SEP> par <SEP> Hôte <SEP> (Pentium)
<tb> <SEP> 3 <SEP> Demande <SEP> Interruption <SEP> Hôte <SEP> PCI <SEP> par <SEP> MSP
<tb> <SEP> 4 <SEP> Interruption <SEP> hôte <SEP> PCI <SEP> Reconnue
<tb> <SEP> 31:5 <SEP> Réservé
<tb> bit < 0 > 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 < 1 > 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 < 2 > 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 < 3 > 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 < 31 : 4 > 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
Figure img00390001
<tb> Bit <SEP> NO <SEP> I <SEP> <SEP> Description
<tb> <SEP> O <SEP> Demande <SEP> d'interruption <SEP> hôte <SEP> PCI <SEP> par <SEP> MSP
<tb> 31 <SEP> : <SEP> 1 <SEP> Réservé
<tb> bit < 0 > 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 < 31 : 1 > 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
Figure img00410001
<tb> Décalage <SEP> Description
<tb> Adresse
<tb> <SEP> (hex)
<tb> <SEP> Adresse <SEP> Remise <SEP> à <SEP> l'état <SEP> Initial <SEP> et <SEP> Initialisation <SEP> ARM7
<tb> <SEP> Adresse <SEP> Remise <SEP> a <SEP> l'état <SEP> initial <SEP> et <SEP> Initialisation
<tb> <SEP> Processeur <SEP> Vectoriel
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Macro-cellule <SEP> FALU
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Macro-cellule <SEP> SRAM
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Noyau <SEP> Processeur <SEP> Vectoriel
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Contrôleur <SEP> Antémémoire
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Contrôleur <SEP> Mémoire
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Bus <SEP> PCI
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Processeur <SEP> Train <SEP> de <SEP> bits
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Contrôleur <SEP> DMA
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Intervalle <SEP> T-mère <SEP> 8254
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> contrôleur <SEP> Interruption <SEP> 8259
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Registre <SEP> UART <SEP> 16450
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Ligne <SEP> en <SEP> série <SEP> KS0122
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Ligne <SEP> en <SEP> série <SEP> KS0119
<tb> <SEP> Diagnostic <SEP> Auto-test <SEP> Ligne <SEP> en <SEP> série <SEP> AD <SEP> 1843 <SEP>
<tb> <SEP> Programme <SEP> de <SEP> Traitement <SEP> O <SEP> Interruption <SEP> Dispositif
<tb> <SEP> Entrée <SEP> et <SEP> Sortie <SEP> ARM7
<tb> <SEP> Programme <SEP> de <SEP> Traitement <SEP> 1 <SEP> Interruption <SEP> Dispositif
<tb> <SEP> Entrée <SEP> et <SEP> Sortie <SEP> ARM7
<tb> <SEP> Programme <SEP> de <SEP> Traitement <SEP> 2 <SEP> Interruption <SEP> Dispositif
<tb> <SEP> Entrée <SEP> et <SEP> Sortie <SEP> ARM7
<tb> <SEP> Programme <SEP> de <SEP> Traitement <SEP> 3 <SEP> Interruption <SEP> Dispositif
<tb> <SEP> Entrée <SEP> et <SEP> Sortie <SEP> ARM7
<tb> <SEP> Programme <SEP> de <SEP> Traitement <SEP> Exception <SEP> Instruction <SEP> ARM7
<tb> <SEP> Interruption <SEP> Processeur <SEP> Vectoriel <SEP> (par <SEP> ARM7)
<tb>
Figure img00420001
<tb> Décalage <SEP> Description
<tb> Adresse
<tb> <SEP> (hex)
<tb> <SEP> Exception <SEP> Point <SEP> de <SEP> rupture <SEP> Processeur <SEP> Vectoriel
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> DSP <SEP> Processeur <SEP> Vectoriel
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> Vidéo <SEP> MPEG-1
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> Audio <SEP> MPEG-1
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> Vidéo <SEP> MPEG-2
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> Audio <SEP> MPEG-2
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> Programmation
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> DSP <SEP> V.34
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> Service <SEP> public <SEP> Téléphone
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> graphiques <SEP> 2D
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> graphiques <SEP> 3D
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> H.261
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> H.263
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> G.728
<tb> <SEP> Sous-routines <SEP> Bibliothèque <SEP> G.723
<tb> <SEP> Constantes <SEP> Données <SEP> ARM7
<tb> <SEP> Constantes <SEP> Données <SEP> Processeur <SEP> Vectoriel
<tb> 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 < MCP~BASE > : 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
Figure img00440001
<tb> <SEP> Dispositif <SEP> Décalage <SEP> Description
<tb> <SEP> Adresse
<tb> <SEP> (en <SEP> hex)
<tb> <SEP> 4AO <SEP> 0000 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> O <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0008 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 1 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> Contrôleur <SEP> 4AO <SEP> 0010 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 2 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> DMA <SEP> 4A0 <SEP> 0018 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 3 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> MSP <SEP> 4A0 <SEP> 0020 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 4 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0028 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 5 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0030 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 6 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0038 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 7 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0050 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> O <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0058 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 1 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0060 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 2 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0068 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 3 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0070 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 4 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0078 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 5 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0080 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 6 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 0088 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 7 <SEP> (bits <SEP> < 31 <SEP> : <SEP> 3 > )
<tb> <SEP> 4A0 <SEP> 00A0 <SEP> Registre <SEP> d'Etat
<tb> <SEP> 4A0 <SEP> 00A8 <SEP> Registe <SEP> Contrôle <SEP> A
<tb> <SEP> 4AO <SEP> OOBO <SEP> Registre <SEP> Masque
<tb> <SEP> 4DO <SEP> 0000 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> MSP
<tb> Dispositif <SEP> 4D0 <SEP> 0008 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> Hôte
<tb> Transfert <SEP> 4DO <SEP> 0010 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> MSP
<tb> Données <SEP> 4D0 <SEP> 0018 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> Hôte
<tb> Mémoire <SEP> 4D0 <SEP> 0020 <SEP> Registre <SEP> Etat
<tb> <SEP> 4D0 <SEP> 0028 <SEP> Registre <SEP> Contrôle
<tb>
Figure img00450001
<tb> VFB
<tb> <SEP> Dispositif <SEP> Décalage <SEP> Description
<tb> <SEP> Adresse
<tb> <SEP> (en <SEP> hex)
<tb> <SEP> 04C0 <SEP> 2000 <SEP> Registre <SEP> Grandeur <SEP> Bloc
<tb> <SEP> 04C0 <SEP> 2001 <SEP> DI
<tb> <SEP> 04C0 <SEP> 2002 <SEP> Octet <SEP> Contrôle/DATA
<tb> Ligne <SEP> 04cO <SEP> 2003 <SEP> IDEX/DATAO
<tb> Série <SEP> 04cO <SEP> 2004 <SEP> DATA <SEP> 1
<tb> KS0122 <SEP> 04C0 <SEP> 2005 <SEP> DATA <SEP> 2
<tb> <SEP> 04C0 <SEP> 2006 <SEP> DATA <SEP> 3
<tb> <SEP> 04C0 <SEP> 2007 <SEP> Réservé
<tb> <SEP> 04C0 <SEP> 2008 <SEP> Lire <SEP> Interface <SEP> Série <SEP> DATA
<tb> <SEP> 04C0 <SEP> 2009 <SEP> Réservé
<tb> <SEP> 04C0 <SEP> 200A <SEP> Registre <SEP> Contrôle <SEP> Logique
<tb> <SEP> 04C0 <SEP> 200B <SEP> Réservé
<tb> <SEP> 04C0 <SEP> 200C <SEP> Réservé
<tb> <SEP> 04cO <SEP> 200D <SEP> Réservé
<tb> <SEP> 04C0 <SEP> 200E <SEP> Registre <SEP> Etat
<tb> <SEP> 04C0 <SEP> 200F <SEP> Réservé
<tb> <SEP> 04BO <SEP> 0000 <SEP> Registre <SEP> Grandeur <SEP> Bloc
<tb> <SEP> 04B0 <SEP> 0001 <SEP> DI
<tb> <SEP> 04B0 <SEP> 0002 <SEP> Octet <SEP> Contrôle/DATA
<tb> <SEP> 04B0 <SEP> 0003 <SEP> IDEX/DATA <SEP> O
<tb> <SEP> 04B0 <SEP> 0004 <SEP> DATA <SEP> 1
<tb> <SEP> 04B0 <SEP> 0005 <SEP> DATA <SEP> 2
<tb>
Figure img00460001
<tb> <SEP> 04B0 <SEP> 0006 <SEP> DATA <SEP> 3
<tb> Ligne <SEP> 04B0 <SEP> 0007 <SEP> Registre <SEP> Etat
<tb> Série <SEP> 04B0 <SEP> 0008 <SEP> Lire <SEP> Interface <SEP> Série <SEP> DATA
<tb> KS0119 <SEP> 04BO <SEP> 0009 <SEP> Lire <SEP> Données <SEP> PROM
<tb> <SEP> 04B0 <SEP> OOOA <SEP> Registre <SEP> Contrôle <SEP> Logique
<tb> <SEP> 04B0 <SEP> 000B <SEP> Polarité <SEP> HS, <SEP> VS
<tb> <SEP> 04B0 <SEP> OOOC <SEP> Décalage <SEP> HS
<tb> <SEP> 04B0 <SEP> 000D <SEP> Décalage <SEP> VS
<tb> <SEP> 04cO <SEP> 200E <SEP> Réservé
<tb> <SEP> 04C0 <SEP> 200F <SEP> Réservé
<tb>
Figure img00470001
<tb> <SEP> Dispositif <SEP> Décalage <SEP> Description
<tb> <SEP> adresse
<tb> <SEP> (en <SEP> hex)
<tb> <SEP> 040C0 <SEP> 4000 <SEP> (écriture <SEP> seulement) <SEP> Entrée <SEP> Données <SEP> Ecriture <SEP> Registre <SEP> Contrôle
<tb> <SEP> DAC1
<tb> Interface <SEP> 04 <SEP> (70 <SEP> 5000 <SEP> (écriture <SEP> seulement) <SEP> Entrée <SEP> Données <SEP> Ecriture <SEP> Registre <SEP> Contrôle
<tb> CODEC <SEP> DAC2
<tb> AD1843 <SEP> 04C0 <SEP> 6000 <SEP> (écriture <SEP> seulement) <SEP> Entrée <SEP> Données <SEP> Ecriture <SEP> Registre <SEP> Contrôle
<tb> <SEP> ADC <SEP> gauche
<tb> <SEP> 04C0 <SEP> 7000 <SEP> (écriture <SEP> seulement) <SEP> Entrée <SEP> Données <SEP> Ecriture <SEP> Registre <SEP> Contrôle
<tb> <SEP> ADC <SEP> droit
<tb> <SEP> 04C0 <SEP> 4000 <SEP> + <SEP> 2 <SEP> Entrée <SEP> Mot <SEP> Contrôle <SEP> DAC <SEP> 1
<tb> <SEP> 04 <SEP> (20 <SEP> 5000 <SEP> + <SEP> 2 <SEP> Entrée <SEP> Mot <SEP> Contrôle <SEP> DAC <SEP> 2
<tb> <SEP> 04 <SEP> (20 <SEP> 6000 <SEP> + <SEP> 2 <SEP> Entrée <SEP> Mot <SEP> Contrôle <SEP> ADC <SEP> gauche
<tb> <SEP> 04C0 <SEP> 7000 <SEP> + <SEP> 2 <SEP> Entrée <SEP> Mot <SEP> Contrôle <SEP> ADC <SEP> droit
<tb> <SEP> 04C0 <SEP> 4000 <SEP> (lecture <SEP> seulement) <SEP> Sortie <SEP> Données <SEP> Registre <SEP> Contrôle <SEP> DAC1
<tb> <SEP> 04C0 <SEP> 5000 <SEP> (lecture <SEP> seulement) <SEP> Sortie <SEP> Données <SEP> Registre <SEP> Contrôle <SEP> DAC2
<tb> <SEP> 04C0 <SEP> 6000 <SEP> (lecture <SEP> seulement) <SEP> Sortie <SEP> Données <SEP> Registre <SEP> Contrôle <SEP> ADC <SEP> gauche
<tb> <SEP> 04C0 <SEP> 7000 <SEP> (lecture <SEP> seulement) <SEP> Sortie <SEP> Données <SEP> Registre <SEP> Controle <SEP> ADC <SEP> droit
<tb> <SEP> 04C0 <SEP> 6000 <SEP> + <SEP> 2 <SEP> Registre <SEP> Drapeau <SEP> ADC <SEP> gauche
<tb> <SEP> 04C0 <SEP> 7000 <SEP> + <SEP> 2 <SEP> Registre <SEP> Drapeau <SEP> ADC <SEP> droit
<tb> <SEP> 04 <SEP> (20 <SEP> 6000 <SEP> + <SEP> 10 <SEP> Données <SEP> ler <SEP> ADC <SEP> gauche
<tb> <SEP> 04C0 <SEP> 6000 <SEP> + <SEP> 12 <SEP> Données <SEP> 2ème <SEP> ADC <SEP> gauche
<tb> <SEP> 04C0 <SEP> 6000 <SEP> + <SEP> 14 <SEP> Données <SEP> 3ème <SEP> ADC <SEP> gauche
<tb> <SEP> 04C0 <SEP> 6000 <SEP> + <SEP> 16 <SEP> Données <SEP> 4ème <SEP> ADC <SEP> gauche
<tb> <SEP> 0400 <SEP> 7000 <SEP> + <SEP> 10 <SEP> Données <SEP> ler <SEP> ADC <SEP> droit
<tb> <SEP> 0400 <SEP> 7000 <SEP> + <SEP> 12 <SEP> Données <SEP> 2ème <SEP> ADC <SEP> droit
<tb> <SEP> 0400 <SEP> 7000 <SEP> + <SEP> 14 <SEP> Données <SEP> 3ème <SEP> ADC <SEP> droit
<tb> <SEP> 0400 <SEP> 7000 <SEP> + <SEP> 16 <SEP> Données <SEP> 4ème <SEP> ADC <SEP> droit
<tb> <SEP> 0400 <SEP> 4000 <SEP> + <SEP> 20 <SEP> Registre <SEP> Drapeau <SEP> Contrôle <SEP> DAC1
<tb> <SEP> 0400 <SEP> 5000 <SEP> + <SEP> 20 <SEP> Registre <SEP> Drapeau <SEP> Contrôle <SEP> DAC2
<tb> <SEP> 04 <SEP> (20 <SEP> 6000 <SEP> + <SEP> 20 <SEP> Registre <SEP> Drapeau <SEP> Contrôle <SEP> ADC <SEP> gauche
<tb> <SEP> 0400 <SEP> 7000 <SEP> + <SEP> 20 <SEP> Registre <SEP> Drapeau <SEP> Contrôle <SEP> ADC <SEP> droit
<tb>
Figure img00480001
<tb> <SEP> Dispositif <SEP> Décalage <SEP> Description
<tb> <SEP> adresses
<tb> <SEP> (en <SEP> hex)
<tb> <SEP> 7D0 <SEP> 0000 <SEP> mot <SEP> d'ordre <SEP> Initialisation <SEP> 1
<tb> <SEP> Non <SEP> défini <SEP> mot <SEP> d'ordre <SEP> Initialisation <SEP> 2 <SEP> (non
<tb> <SEP> utilisé)
<tb> Contrôleur <SEP> Non <SEP> défini <SEP> mot <SEP> d'ordre <SEP> Initialisation <SEP> 3 <SEP> (non
<tb> <SEP> utilisé)
<tb> Interruption <SEP> 7D0 <SEP> 0004 <SEP> mot <SEP> d'ordre <SEP> Initialisation <SEP> 4
<tb> 8259 <SEP> 7D0 <SEP> 0004 <SEP> Mot <SEP> de <SEP> contrôle <SEP> Opération <SEP> 1
<tb> <SEP> 7D0 <SEP> 0000 <SEP> Mot <SEP> de <SEP> contrôle <SEP> Opération <SEP> 2
<tb> <SEP> 7D0 <SEP> 0000 <SEP> Mot <SEP> de <SEP> contrôle <SEP> Opération <SEP> 3
<tb> <SEP> 7D0 <SEP> 0010 <SEP> Registre <SEP> compteur <SEP> n <SEP> 0 <SEP> (L/E)
<tb> Temporisateur <SEP> 7D0 <SEP> 0014 <SEP> Registre <SEP> compteur <SEP> n <SEP> 1 <SEP> (L/E) <SEP>
<tb> 8254 <SEP> 7D0 <SEP> 0018 <SEP> Registre <SEP> compteur <SEP> n <SEP> 2 <SEP> (L/E)
<tb> <SEP> 7D0 <SEP> 001C <SEP> Registre <SEP> Mot <SEP> Contrôle <SEP> (e)
<tb> <SEP> 7D0 <SEP> 0020 <SEP> Registre <SEP> Récepteur
<tb> <SEP> Registre <SEP> Transmetteur
<tb> <SEP> Registre <SEP> Diviseur
<tb> <SEP> 7D0 <SEP> 0024 <SEP> Registre <SEP> Identificateur <SEP> Interruption
<tb> <SEP> 7D0 <SEP> 0028 <SEP> Registre <SEP> diviseur
<tb> UART <SEP> validation <SEP> interruption
<tb> 16450 <SEP> 7D0 <SEP> 002C <SEP> Registre <SEP> contrôle <SEP> Ligne
<tb> <SEP> 7D0 <SEP> 0030 <SEP> Registre <SEP> contrôle <SEP> Modem
<tb> <SEP> 7D0 <SEP> 0034 <SEP> Registre <SEP> état <SEP> Ligne
<tb> <SEP> 7D0 <SEP> 0038 <SEP> Registre <SEP> état <SEP> Modem
<tb> <SEP> 700 <SEP> 0030 <SEP>
Figure img00490001
<tb> <SEP> Dispositif <SEP> Décalage <SEP> Description
<tb> <SEP> adresse
<tb> <SEP> (en <SEP> hex)
<tb> <SEP> 7C0 <SEP> 0008 <SEP> à <SEP> Adresse <SEP> départ <SEP> tampon <SEP> entrée <SEP> 0
<tb> <SEP> 7C0 <SEP> 000B
<tb> <SEP> 7C0 <SEP> 000C <SEP> à <SEP> Adresse <SEP> fin <SEP> tampon <SEP> entrée <SEP> 0
<tb> <SEP> 7C0 <SEP> 000F
<tb> <SEP> 7C0 <SEP> 0010 <SEP> à <SEP> Adresse <SEP> depart <SEP> tampon <SEP> entrée <SEP> 1
<tb> <SEP> 7C0 <SEP> 0013
<tb> <SEP> 7C0 <SEP> 0014 <SEP> à <SEP> Adresse <SEP> fin <SEP> tampon <SEP> entrée <SEP> 1
<tb> <SEP> 7C0 <SEP> 0017
<tb> <SEP> 7C0 <SEP> 0018 <SEP> à <SEP> Adresse <SEP> départ <SEP> tampon <SEP> entrée <SEP> 0
<tb> <SEP> 7C0 <SEP> 001B <SEP>
<tb> Processeur <SEP> 7C0 <SEP> 001C <SEP> à <SEP> Adresse <SEP> fin <SEP> tampon <SEP> sortie <SEP> 0
<tb> train <SEP> de <SEP> bits <SEP> 7C0 <SEP> 001F
<tb> <SEP> 7C0 <SEP> 0020 <SEP> à <SEP> Adresse <SEP> départ <SEP> tampon <SEP> sortie <SEP> 1
<tb> <SEP> 7C0 <SEP> 0023
<tb> <SEP> 7C0 <SEP> 0024 <SEP> à <SEP> Adresse <SEP> fin <SEP> tampon <SEP> sortie <SEP> 1
<tb> <SEP> 7C0 <SEP> 0027
<tb> <SEP> 7C0 <SEP> 0028 <SEP> à <SEP> Adresse <SEP> début <SEP> sauvegarde <SEP> contexte
<tb> <SEP> 7C0 <SEP> 002B
<tb> <SEP> 7C0 <SEP> 002C <SEP> à <SEP> Adresse <SEP> octet <SEP> des <SEP> dernières <SEP> données
<tb> <SEP> utilisées <SEP> dans <SEP> le <SEP> tampon <SEP> double <SEP> d'entrée
<tb> <SEP> 7C0 <SEP> 002F <SEP> ou <SEP> de <SEP> sortire <SEP> de <SEP> ligne
<tb> <SEP> 7C0 <SEP> 0030 <SEP> LSB <SEP> du <SEP> registre <SEP> d'état <SEP> de <SEP> BP
<tb> <SEP> 7C0 <SEP> 0031 <SEP> Second <SEP> bit <SEP> de <SEP> poids <SEP> faible
<tb> <SEP> 7C0 <SEP> 004E <SEP> Second <SEP> bit <SEP> de <SEP> poids <SEP> fort
<tb> <SEP> 7C0 <SEP> 004F <SEP> MSB <SEP> du <SEP> registre <SEP> d'état <SEP> de <SEP> BP
<tb> <SEP> 7C0 <SEP> 0050 <SEP> à <SEP> Registre <SEP> d'état <SEP> de <SEP> BP
<tb> <SEP> 7C0 <SEP> 0053
<tb>
Figure img00500001
<tb> <SEP> Dispositif <SEP> Décalage <SEP> Description
<tb> <SEP> adresse
<tb> <SEP> (en <SEP> hex)
<tb> <SEP> 7C0 <SEP> 0054 <SEP> à <SEP> Registre <SEP> masque <SEP> interruption <SEP> BP <SEP> et
<tb> <SEP> grandeurs <SEP> verticale <SEP> et <SEP> horizontale <SEP> de
<tb> <SEP> 7C0 <SEP> 0057 <SEP> l'image <SEP> en <SEP> nombres <SEP> de <SEP> macroblocs
<tb> <SEP> 7C0 <SEP> 0058 <SEP> Broche <SEP> demande <SEP> interruption <SEP> ARM7
<tb> <SEP> 7C0 <SEP> 0059 <SEP> Réservé <SEP> pour <SEP> extension <SEP> future
<tb> <SEP> 7C0 <SEP> 005F
<tb> Dispositif <SEP> Adresse <SEP> Description
<tb> <SEP> Offset
<tb> <SEP> (en <SEP> hex)
<tb> <SEP> 7C0 <SEP> 0060 <SEP> à <SEP> Région <SEP> Antémémoire <SEP> BP
<tb> <SEP> 7C0 <SEP> 19F
<tb> Processeur <SEP> 7C0 <SEP> 01A0
<tb> train <SEP> de <SEP> bits <SEP> à <SEP> Réservé <SEP> pour <SEP> extension <SEP> future
<tb> <SEP> 7CF <SEP> FFFF
<tb> 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
Figure img00510001
<tb> <SEP> Bit <SEP> N <SEP> Description
<tb> 0 <SEP> Sélection <SEP> comptage <SEP> BCD <SEP> (défault <SEP> : <SEP> binaire)
<tb> 3:1 <SEP> Modes <SEP> de <SEP> comptage
<tb> <SEP> 000 <SEP> : <SEP> Mode <SEP> O
<tb> <SEP> 001 <SEP> : <SEP> Mode <SEP> 1
<tb> <SEP> xlO <SEP> : <SEP> Mode <SEP> 2
<tb> <SEP> xll <SEP> : <SEP> Mode <SEP> 3
<tb> <SEP> 100 <SEP> : <SEP> Mode <SEP> 4
<tb> <SEP> 101 <SEP> : <SEP> Mode <SEP> 5
<tb> 5:4 <SEP> Sélection <SEP> Lecture/Ecriture
<tb> <SEP> 00: <SEP> Ordre <SEP> Verrouillage <SEP> Compteur
<tb> <SEP> 01: <SEP> Octets <SEP> de <SEP> moindre <SEP> poids <SEP> seulement <SEP> en <SEP> Lecture/Ecriture
<tb> <SEP> 10: <SEP> Octets <SEP> de <SEP> poids <SEP> fort <SEP> seulement <SEP> de <SEP> Lecture/Ecriture
<tb> <SEP> 11: <SEP> Octet <SEP> de <SEP> moindre <SEP> poids <SEP> d'abord <SEP> puis <SEP> octet <SEP> de <SEP> poids
<tb> <SEP> fort <SEP> de <SEP> Lecture/Ecriture
<tb> 7:6 <SEP> Compteur <SEP> Sélection <SEP> :
<tb> <SEP> 00: <SEP> Sélection <SEP> Compteur <SEP> O
<tb> <SEP> 01: <SEP> Sélection <SEP> Compteur <SEP> 1
<tb> <SEP> 10: <SEP> Sélection <SEP> Compteur <SEP> 2
<tb> <SEP> 11: <SEP> Sélection <SEP> Compteur <SEP> 3
<tb>
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é à < tbd >
Le niveau 6 est assigné à < tbd >
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 < 0 > ) 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
Figure img00540001
<tb> <SEP> Nom <SEP> Description
<tb> ICW1 < 7:O > <SEP> Mot <SEP> d'Ordre <SEP> d'Initialisation <SEP> 1
<tb> <SEP> bit <SEP> < 0 > : <SEP> ICW4 <SEP> est <SEP> nécessaire
<tb> <SEP> bit <SEP> < 1 > : <SEP> doit <SEP> être <SEP> un <SEP> "1" <SEP> (8259 <SEP> simple <SEP> seulement)
<tb> <SEP> bit <SEP> < 2 > : <SEP> non <SEP> défini <SEP> (Intervalle <SEP> Adresses <SEP> Appel)
<tb> <SEP> bit <SEP> < 3 > : <SEP> doit <SEP> être <SEP> un <SEP> 11111 <SEP> (Mode <SEP> Déclenché <SEP> au <SEP> Niveau)
<tb> <SEP> bit <SEP> < 4 > : <SEP> doit <SEP> être <SEP> un <SEP> "1"
<tb> <SEP> bit <SEP> < 7:5 > <SEP> : <SEP> non <SEP> défini <SEP> (Adresse <SEP> Vecteur <SEP> Interruption)
<tb> ICW2 < 7:0 > <SEP> Mot <SEP> d'Ordre <SEP> d'Initialisation <SEP> 2 <SEP> (non <SEP> utilisé)
<tb> ICW3 < 7:0 > <SEP> Mot <SEP> d'Ordre <SEP> d'Initialisation <SEP> 3 <SEP> (non <SEP> utilisé)
<tb> ICW4 < 7:0 > <SEP> Mot <SEP> d'Ordre <SEP> d'Initialisation <SEP> 4
<tb> <SEP> bit <SEP> < 0 > : <SEP> doit <SEP> être <SEP> un <SEP> "1" <SEP> (Mode <SEP> 8086)
<tb> <SEP> bit <SEP> < 1 > : <SEP> Fin <SEP> Automatique <SEP> de <SEP> l'Interruption
<tb> <SEP> bit <SEP> < 2 > : <SEP> non <SEP> défini
<tb> <SEP> bit <SEP> < 3 > : <SEP> doit <SEP> être <SEP> un <SEP> "0" <SEP> (Mode <SEP> non <SEP> Tamponné)
<tb> <SEP> bit <SEP> < 4 > : <SEP> mode <SEP> spécial <SEP> complètement <SEP> emboîté
<tb> <SEP> bit <SEP> < 7:5 > : <SEP> doit <SEP> être <SEP> un <SEP> ll0l' <SEP>
<tb> OCWl < 7:0 > <SEP> Mot <SEP> Contrôle <SEP> Opération <SEP> 1: <SEP> interrupte <SEP> validation <SEP> masque
<tb> <SEP> bit <SEP> < n > : <SEP> permet <SEP> l'interruption <SEP> pour <SEP> demande <SEP> d'entrée <SEP> pour <SEP> &num;n
<tb> OCW2 < 7:0 > <SEP> Mot <SEP> de <SEP> Contrôle <SEP> d'opération <SEP> 2
<tb> <SEP> bit <SEP> < 2:0 > : <SEP> I1 <SEP> faut <SEP> agir <SEP> sur <SEP> le <SEP> Niveau <SEP> d'Interruption
<tb> <SEP> bit <SEP> < 4:3 > <SEP> doit <SEP> être <SEP> "0"
<tb> <SEP> bit <SEP> < 7:5 >
<tb> <SEP> 001: <SEP> Ordre <SEP> EOI <SEP> no <SEP> spécique
<tb> <SEP> 011: <SEP> Ordre <SEP> EOI <SEP> spécifique
<tb> <SEP> 101: <SEP> permutation <SEP> circulaire <SEP> Ordre <SEP> EOI <SEP> non <SEP> spécifique
<tb> <SEP> 100: <SEP> permutation <SEP> circulaire <SEP> Mode <SEP> EOI <SEP> automatique <SEP> (établir)
<tb> <SEP> 000: <SEP> permutation <SEP> circulaire <SEP> Mode <SEP> EOI <SEP> automatique <SEP> (effacer)
<tb> <SEP> 111: <SEP> permutation <SEP> spécifique <SEP> Ordre <SEP> EOI <SEP> spécifique
<tb> <SEP> 110: <SEP> établir <SEP> Ordre <SEP> de <SEP> Priorité
<tb> <SEP> 010: <SEP> pas <SEP> d'opération
<tb>
Figure img00550001
<tb> Nom <SEP> Description
<tb> OCW3 < :0 > <SEP> Mot <SEP> Contrôle <SEP> Opération <SEP> 3
<tb> <SEP> bit <SEP> < 1:0 >
<tb> <SEP> 10: <SEP> Lire <SEP> Registre <SEP> Demande <SEP> Interruption <SEP> (IRR)
<tb> <SEP> 11: <SEP> Lire <SEP> Registre <SEP> en <SEP> Service <SEP> (ISR) <SEP>
<tb> <SEP> 00: <SEP> pas <SEP> d'action
<tb> <SEP> 01: <SEP> pas <SEP> d'action
<tb> <SEP> bit <SEP> < 2 > : <SEP> Ordre <SEP> Interrogation
<tb> <SEP> bit <SEP> < 4:3 > : <SEP> doit <SEP> être <SEP> "0"
<tb> <SEP> bit <SEP> < 5 > : <SEP> Mode <SEP> Masque <SEP> Spécial
<tb> <SEP> bit <SEP> < 6 > : <SEP> Validation <SEP> Mode <SEP> Masque <SEP> Spécial
<tb> <SEP> bit <SEP> < 7 > : <SEP> doit <SEP> être <SEP> "0"
<tb> 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
< 0 > : 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.
* < 1 > : 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
< 0 > : 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.
< 1 > : 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.
< 2 > : Validation DMA. Ce bit permet à l'appareil de
Transfert de Données en Mémoire de fonctionner.
Ce bit doit être ecrit par ARM7.
< 3 > : 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
Figure img00590001
<tb> Décalage <SEP> Largeur <SEP> Description
<tb> Adresse <SEP> Bit
<tb> <SEP> (heu) <SEP>
<tb> <SEP> oo <SEP> 8 <SEP> Registre <SEP> Tampon <SEP> Données <SEP> Réception <SEP> (RBUF) <SEP>
<tb> <SEP> 01 <SEP> 8 <SEP> Registre <SEP> Tampon <SEP> Données <SEP> Transmission <SEP> (CTBUF)
<tb> <SEP> 02 <SEP> 8 <SEP> Registre <SEP> Contrôle <SEP> et <SEP> Etat <SEP> (CSR)
<tb>
Le codage des bits du registre de Contrôle et d'Etat est comme suit
Bit < 0 > 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 < 7 > )
est établi, une demande d'interruption sera également
émise vers ARM7.
Bit < 1 > 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 < 7 > ) est établi, une
demande d'interruption sera également émise vers
ARM7.
Bit < 7 > 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
Figure img00610001
<tb> <SEP> Mnémonique <SEP> Octet <SEP> demi-mot <SEP> Mot <SEP> flottant
<tb> <SEP> (8/9 <SEP> bits) <SEP> (16 <SEP> bits) <SEP> (32 <SEP> bits) <SEP> (32 <SEP> bits)
<tb> VCACHE
<tb> VLCB <SEP> latence <SEP> = <SEP> 4, <SEP> fréquence <SEP> = <SEP> 2
<tb> VLCB <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 9, <SEP> fréquence <SEP> = <SEP> ras
<tb> VLR <SEP> latence <SEP> = <SEP> 3, <SEP> fréquence <SEP> = <SEP> 1
<tb> VLR <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 8, <SEP> fréquence <SEP> = <SEP> ras
<tb> VL <SEP> latence <SEP> = <SEP> 3, <SEP> fréquence <SEP> = <SEP> 1
<tb> VL <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 8, <SEP> fréquence <SEP> = <SEP> ras
<tb> VLD <SEP> latence <SEP> = <SEP> 4, <SEP> fréquence <SEP> = <SEP> 2
<tb> VLD <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 12, <SEP> fréquence <SEP> = <SEP> 8
<tb> VLQ <SEP> latence <SEP> = <SEP> 6, <SEP> fréquence <SEP> = <SEP> 16
<tb> VLQ <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 20, <SEP> fréquence <SEP> = <SEP> 16
<tb> VPFFCH <SEP> ras <SEP> + <SEP> (&num; <SEP> de <SEP> lignes <SEP> antémémoire) <SEP> x <SEP> 4
<tb> <SEP> Mnémonique <SEP> Octet <SEP> demi-mot <SEP> Mot <SEP> flottant
<tb> <SEP> (8/9 <SEP> bits) <SEP> (16 <SEP> bits) <SEP> (32 <SEP> bits) <SEP> (32 <SEP> bits)
<tb> VLWS <SEP> latence <SEP> = <SEP> 4, <SEP> fréquence <SEP> = <SEP> 1
<tb> VLWS <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 8, <SEP> fréquence <SEP> = <SEP> ras
<tb> VLI <SEP> 1
<tb> VSTCB <SEP> latence <SEP> = <SEP> 4, <SEP> fréquence <SEP> = <SEP> 2
<tb> VSTCB <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 9, <SEP> fréquence <SEP> = <SEP> ras
<tb> VST <SEP> latence <SEP> = <SEP> 4, <SEP> fréquence <SEP> = <SEP> 1
<tb> VST <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 8, <SEP> fréquence <SEP> = <SEP> ras
<tb> VSTD <SEP> latence <SEP> = <SEP> 5, <SEP> fréquence <SEP> = <SEP> 2
<tb>
Figure img00620001
<tb> VSTD <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 12, <SEP> fréquence <SEP> = <SEP> 8
<tb> VSTQ <SEP> latence <SEP> = <SEP> 7, <SEP> fréquence <SEP> = <SEP> 4
<tb> VSTQ <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 20, <SEP> fréquence <SEP> = <SEP> 16
<tb> VSTR <SEP> latence <SEP> = <SEP> 4, <SEP> fréquence <SEP> = <SEP> 1
<tb> VSTR <SEP> hors <SEP> circuit <SEP> latence <SEP> = <SEP> ras <SEP> + <SEP> 7, <SEP> fréquence <SEP> = <SEP> ras
<tb> VWBACK <SEP> ras <SEP> + <SEP> &num; <SEP> de <SEP> lignes <SEP> antémémoire) <SEP> x <SEP> 4
<tb> CFC
<tb> CTC
<tb> MCR <SEP> Non <SEP> défini <SEP> latence <SEP> = <SEP> 2 <SEP> Non <SEP> défini
<tb> MCRS <SEP> fréquence <SEP> = <SEP> 1
<tb> MRC
<tb> MRCS
<tb> VMOV
<tb> VCMOV
<tb> VCMOVM <SEP> latence <SEP> = <SEP> 2 <SEP> fréquence <SEP> = <SEP> 1
<tb> VEXTRT
<tb> VINSERT
<tb> Mnémonique <SEP> Octet <SEP> demi-mot <SEP> Mot <SEP> flottant
<tb> (8/9 <SEP> bits) <SEP> (16 <SEP> bits) <SEP> (32 <SEP> bits) <SEP> (32 <SEP> bits)
<tb> <SEP> CPINT <SEP> non <SEP> défini <SEP> 10 <SEP> non <SEP> défini
<tb>
Figure img00630001
<tb> <SEP> FOURCHETTE <SEP> 6
<tb> <SEP> REPRISE <SEP> 6
<tb> <SEP> SYNCH <SEP> 4
<tb> <SEP> VCBR <SEP> 2
<tb> <SEP> VCBRI <SEP> 2
<tb> <SEP> VD1CBR <SEP> 2
<tb> <SEP> VD2CBR <SEP> 2
<tb> <SEP> VD3CBR <SEP> 2
<tb> <SEP> VCJSR <SEP> 2
<tb> <SEP> VCJSRI <SEP> 2
<tb> <SEP> VCRSR <SEP> 2
<tb> <SEP> VCINT <SEP> 4
<tb> <SEP> VCJOIN <SEP> 4
<tb> <SEP> VCCS <SEP> 2
<tb> <SEP> VADD <SEP> 2 <SEP> (latence)
<tb> <SEP> 1 <SEP> (fréquence)
<tb> <SEP> VADDH
<tb> <SEP> VET
<tb> <SEP> VASL <SEP> 1
<tb> VASA <SEP> non <SEP> défini
<tb> <SEP> VAAS3
<tb>
Figure img00640001
<tb> <SEP> VAAS3
<tb> <SEP> VASUB <SEP> 2 <SEP> (latence)
<tb> <SEP> VAVG <SEP> 1 <SEP> (cadence)
<tb> <SEP> VAVGH
<tb> <SEP> VAVGQ
<tb> <SEP> VCVTIF <SEP> non <SEP> défini <SEP> 2 <SEP> (latence) <SEP> non <SEP> défini
<tb> <SEP> 1 <SEP> (fréquence)
<tb> <SEP> VCMPV <SEP> 2 <SEP> (latence)
<tb> <SEP> 1 <SEP> (fréquence)
<tb> <SEP> VCNTLZ <SEP> 1 <SEP> non <SEP> défini
<tb> <SEP> VCVTB9
<tb> <SEP> VCVTFF <SEP> non <SEP> défini <SEP> 2 <SEP> (latence)
<tb> <SEP> 1 <SEP> (fréquence)
<tb> Mnémonique <SEP> Octet <SEP> demi-mot <SEP> Mot <SEP> Battement
<tb> <SEP> (8/9 <SEP> bits) <SEP> (16 <SEP> bits) <SEP> (32 <SEP> bits) <SEP> | <SEP> (32 <SEP> bits)
<tb> <SEP> VDIVI <SEP>
<tb> <SEP> VDIVS
<tb> <SEP> VSATU <SEP> 1 <SEP> non <SEP> défini
<tb> <SEP> VEXTSGN2
<tb> <SEP> VESL
<tb> <SEP> VESR
<tb>
Figure img00650001
<tb> <SEP> VEXTSGN3
<tb> <SEP> VSATL
<tb> <SEP> VASR
<tb> <SEP> VLSL
<tb> <SEP> VDIV2N
<tb> <SEP> VLSR
<tb> <SEP> VMAC
<tb> <SEP> VMACF
<tb> <SEP> VMACL <SEP> 2 <SEP> (latence) <SEP> 3 <SEP> (latence)
<tb> <SEP> VMAS <SEP> 1 <SEP> (fréquence) <SEP> 1 <SEP> (fréquence)
<tb> <SEP> VMASF
<tb> <SEP> VMASL
<tb> <SEP> VMAX <SEP> 1 <SEP> 2 <SEP> (latence)
<tb> <SEP> 1 <SEP> (fréquence)
<tb> <SEP> VMUL
<tb> <SEP> VMULA <SEP> 2 <SEP> (latence) <SEP> 3 <SEP> (latence)
<tb> VMULF <SEP> 1 <SEP> (fréquence) <SEP> 1 <SEP> (fréquence)
<tb> <SEP> VMULL
<tb> <SEP> VON <SEP> 1 <SEP> non <SEP> défini
<tb> <SEP> VOU
<tb>
Figure img00660001
<tb> <SEP> VARRONDI <SEP> non <SEP> défini <SEP> 2 <SEP> (latence)
<tb> <SEP> 1 <SEP> (fréquence)
<tb> <SEP> Mnemonique <SEP> Octet <SEP> demi-mot <SEP> Mot <SEP> flottant
<tb> <SEP> (8/9 <SEP> bits) <SEP> (16 <SEP> bits) <SEP> (32 <SEP> bits) <SEP> (32 <SEP> bits)
<tb> <SEP> VSHFL
<tb> <SEP> VSHFLH
<tb> <SEP> VSHFLL
<tb> <SEP> VUNSHFL <SEP> non <SEP> défini
<tb> <SEP> VUNSHFLH
<tb> <SEP> VUNSHFLL
<tb> <SEP> VSUB <SEP> 1 <SEP> 2 <SEP> (latence)
<tb> <SEP> 1 <SEP> (fréquence)
<tb> <SEP> VUsB2 <SEP>
<tb> vsUBs <SEP>
<tb> <SEP> VXNON
<tb> <SEP> VXOU <SEP> non <SEP> défini
<tb> VX <SEP> OU <SEP> UNIVERSEL
<tb>
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
Figure img00790001
<tb> Unité <SEP> Type <SEP> donnée <SEP> Lecture/ <SEP> opération <SEP> CCU
<tb> <SEP> Ecriture
<tb> ARM <SEP> octet, <SEP> mot <SEP> lecture <SEP> Adresse <SEP> octet <SEP> sur <SEP> limite <SEP> octet, <SEP> adresse <SEP> mot
<tb> <SEP> sur <SEP> limite <SEP> mot. <SEP> I1 <SEP> y <SEP> a <SEP> ui~cache <SEP> et <SEP> ud <SEP> cache <SEP>
<tb> <SEP> entre <SEP> ARM <SEP> et <SEP> IDC. <SEP> Toute <SEP> absence
<tb> <SEP> d'information <SEP> dans <SEP> u <SEP> cache <SEP> reportera
<tb> <SEP> toujours <SEP> les <SEP> données <SEP> de <SEP> 32B <SEP> (alignées) <SEP> pour
<tb> <SEP> regarnir <SEP> les <SEP> u~caches. <SEP> Une <SEP> absence
<tb> <SEP> d'information <SEP> dans <SEP> IDC <SEP> aura <SEP> pour <SEP> résultat
<tb> <SEP> un <SEP> regarnissage <SEP> de <SEP> IDC <SEP> par <SEP> SDRAM <SEP> externe.
<tb>
<SEP> Deux <SEP> opérations <SEP> de <SEP> réécriture <SEP> (double) <SEP>
<tb> <SEP> sont <SEP> possibles <SEP> si <SEP> les <SEP> deux <SEP> vecteurs <SEP> sont
<tb> <SEP> sales. <SEP> Seule <SEP> une <SEP> donnée <SEP> de <SEP> 32B <SEP> est <SEP> reportée
<tb> <SEP> pour <SEP> le <SEP> regarnissage <SEP> (simple <SEP> regarnissage)
<tb> <SEP> de <SEP> l'antémémoire <SEP> de <SEP> ARM.
<tb>
Figure img00800001
<tb>
Unité <SEP> Type <SEP> donnée <SEP> Lecture/ <SEP> opération <SEP> CCU
<tb> <SEP> Ecriture
<tb> <SEP> ARM <SEP> octet, <SEP> mot <SEP> écriture <SEP> L'alignement <SEP> des <SEP> adresses <SEP> est <SEP> le <SEP> même <SEP> que
<tb> <SEP> dans <SEP> le <SEP> cas <SEP> de <SEP> la <SEP> lecture. <SEP> Toute <SEP> écriture
<tb> <SEP> dans <SEP> ARM <SEP> qui <SEP> frappe <SEP> ud~cache <SEP> invalidera
<tb> <SEP> toujours <SEP> ud~cache. <SEP> Les <SEP> données <SEP> resteront
<tb> <SEP> bien <SEP> alignées, <SEP> avec <SEP> la <SEP> validation <SEP> de
<tb> <SEP> l'octet <SEP> approprié <SEP> revendiquée <SEP> avant
<tb> <SEP> écriture <SEP> dans <SEP> IDC. <SEP> Pour <SEP> une <SEP> absence
<tb> <SEP> d'écriture <SEP> avec <SEP> antémémoire <SEP> en <SEP> circuit, <SEP> la
<tb> <SEP> donnée <SEP> d'écriture <SEP> sera <SEP> enregistrée <SEP> dans
<tb> <SEP> wr~data~bufl. <SEP> Des <SEP> opérations <SEP> double <SEP> WB <SEP> sont
<tb> <SEP> possibles <SEP> si <SEP> les <SEP> deux <SEP> vecteurs <SEP> sont <SEP> sales.
<tb>
<SEP> Après <SEP> avoir <SEP> reporté <SEP> les <SEP> données <SEP> de <SEP> 32B <SEP> de
<tb> <SEP> la <SEP> mémoire, <SEP> CCU <SEP> initialisera <SEP> une <SEP> écriture
<tb> <SEP> vers <SEP> IDC <SEP> et <SEP> marquera <SEP> le <SEP> vecteur <SEP> comme <SEP> étant
<tb> <SEP> sale. <SEP> Pour <SEP> une <SEP> écriture <SEP> avec <SEP> 1'antémémoire
<tb> <SEP> hors <SEP> circuit, <SEP> les <SEP> données <SEP> seront
<tb> <SEP> enregistrées <SEP> dans <SEP> mem <SEP> wr <SEP> fat <SEP> (64B). <SEP> La
<tb> <SEP> demande <SEP> sera <SEP> postée <SEP> à <SEP> l'un <SEP> des <SEP> emplacements
<tb> <SEP> de <SEP> la <SEP> file <SEP> d'attente <SEP> d'adresses. <SEP> Comme <SEP> la
<tb> <SEP> donnée <SEP> est <SEP> plus <SEP> faible <SEP> que <SEP> 8B, <SEP> on <SEP> utilisera
<tb> <SEP> un <SEP> protocole <SEP> d'écriture <SEP> partielle <SEP> par <SEP> Fbus.
<tb>
<SEP> IFU <SEP> vecteur <SEP> lecture <SEP> L'adresse <SEP> de <SEP> IFU <SEP> est <SEP> toujours <SEP> alignée <SEP> par
<tb> <SEP> les <SEP> mots. <SEP> Chaque <SEP> demande <SEP> ramènera <SEP> les
<tb> <SEP> données <SEP> de <SEP> 32B <SEP> (en <SEP> alignement) <SEP> soit <SEP> de <SEP> IDC
<tb> <SEP> ou <SEP> de <SEP> SRAM <SEP> externe.
<tb>
<SEP> LSU <SEP> scalaire <SEP> lecture
<tb> <SEP> (octet,
<tb> <SEP> demi-mot,
<tb> <SEP> mot) <SEP>
<tb> <SEP> ES
<tb> 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 < 31:0 > ) 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 < 31:0 > ) est toujours comparée à l'étiquette. Une correspondance relira l'instruction ou la donnée à travers ARM~DATA < 31:0 > . 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 < 31:0 > 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 < 63:0 >
DEUX : Recevoir la 2ème donnée de 8B de Fdata < 63:0 >
TROIS : Recevoir la 3ème donnée de 8B de Fdata < 63:0 >
QUATRE : Recevoir la 4ème donnée de 8B de Fdata < 63:0 >
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.
Figure img00910001
<tb>
GRANDEUR <SEP> DESCRIPTION
<tb> 2'b00 <SEP> Défaut <SEP> - <SEP> Grandeur <SEP> transfert <SEP> = <SEP> 4 <SEP> octets <SEP> (1 <SEP> cycle <SEP> de <SEP> 32 <SEP> bits)
<tb> 2'b01 <SEP> Grandeur <SEP> transfert <SEP> = <SEP> 8 <SEP> octets <SEP> (deux <SEP> cycles <SEP> de <SEP> 32 <SEP> bits)
<tb> 2'b10 <SEP> Grandeur <SEP> transfert <SEP> = <SEP> 12 <SEP> octets <SEP> (trois <SEP> cycles <SEP> de <SEP> 32 <SEP> bits)
<tb> 2'b1 <SEP> 1 <SEP> Grandeur <SEP> transfert <SEP> = <SEP> 16 <SEP> octets <SEP> (grandeur <SEP> maximale <SEP> pour <SEP> 4
<tb> <SEP> cycles)
<tb> 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
Figure img00920001
<tb> <SEP> Nom <SEP> signal <SEP> Grandeur <SEP> Direction <SEP> Commentaires
<tb> <SEP> IOBus
<tb> IOBus <SEP> [31:0] <SEP> 32 <SEP> Bi-direction <SEP> Bus <SEP> adresses <SEP> et <SEP> données <SEP> en
<tb> <SEP> multiplex <SEP> et <SEP> bi-direction <SEP> 32
<tb> <SEP> bits
<tb> IOB~rd~1 <SEP> 1 <SEP> Entrée/sortie <SEP> Bas <SEP> actif. <SEP> Maître <SEP> sortie <SEP> esclave
<tb> <SEP> entrée
<tb> IOB~wr~1 <SEP> 1 <SEP> Entrée/sortie <SEP> Bas <SEP> actif. <SEP> Maître <SEP> sortie <SEP> esclave
<tb> <SEP> entrée
<tb> IOB~ready~1 <SEP> 1 <SEP> Entrée/sortie <SEP> Bas <SEP> actif. <SEP> Notifie <SEP> au <SEP> maître
<tb> <SEP> quand <SEP> la <SEP> donnée <SEP> est <SEP> disponible
<tb> <SEP> pour <SEP> une <SEP> lecture <SEP> (en <SEP> mode
<tb> <SEP> esclave). <SEP> Maître <SEP> entrée <SEP> esclave
<tb> <SEP> sortie
<tb> IOB <SEP> cs <SEP> xxx~1 <SEP> 1 <SEP> Entrée <SEP> Sélection <SEP> dispositif, <SEP> bas <SEP> actif.
<tb>
<SEP> Cela <SEP> est <SEP> utilisé <SEP> pour <SEP> traiter <SEP> la
<tb> <SEP> demande <SEP> quand <SEP> l'ardresse <SEP> est
<tb> <SEP> verrouillée
<tb> IOB~ale~1 <SEP> 1 <SEP> Entrée <SEP> Bas <SEP> actif, <SEP> spécifie <SEP> quand
<tb> <SEP> l'adresse <SEP> est <SEP> stable. <SEP> Arbitre
<tb> <SEP> sortie <SEP> maître/esclave <SEP> entrée
<tb> IOB~req~xxx~1 <SEP> Sortie <SEP> Bas <SEP> actif, <SEP> Demande <SEP> pour <SEP> prendre
<tb> <SEP> le <SEP> contrôle <SEP> de <SEP> IOBus <SEP> pour
<tb> <SEP> devenir <SEP> maître
<tb> IOB~tsize(1:0) <SEP> 1 <SEP> Entrée/sortie <SEP> Grandeur <SEP> transfert <SEP> : <SEP> 4/8112116
<tb> <SEP> octets. <SEP> Maître <SEP> sortie, <SEP> esclave
<tb> <SEP> entrée
<tb> IOB~grant~xxx~1 <SEP> 2 <SEP> Entrée <SEP> Accord <SEP> IOBus <SEP> de <SEP> l'arbitre <SEP> de
<tb> <SEP> l'IOBus, <SEP> permet <SEP> à <SEP> ce <SEP> dispositif
<tb> <SEP> de <SEP> demande <SEP> de <SEP> devenir <SEP> maître <SEP> de
<tb> <SEP> l'IOBus. <SEP> Bas <SEP> actif.
<tb>
Remise <SEP> à <SEP> l'état <SEP> 1 <SEP> Entrée <SEP> Bas <SEP> actif, <SEP> remise <SEP> à <SEP> l'état
<tb> initial <SEP> initial <SEP> du <SEP> système
<tb> CIK40M <SEP> 1 <SEP> Entrée <SEP> Horloge <SEP> bus <SEP> 40MHz
<tb> 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
Figure img00970001
<tb> <SEP> Nom <SEP> signal <SEP> Grandeur <SEP> Direction <SEP> Commentaires
<tb> <SEP> Fbus
<tb> Faddr[31:0] <SEP> 32 <SEP> Bi-direction <SEP> Bus <SEP> adresses <SEP> 32 <SEP> bits <SEP> sur <SEP> lignes
<tb> <SEP> séparées <SEP> d'adresses
<tb> Fdata[63:0] <SEP> 64 <SEP> Bi-direction <SEP> Bus <SEP> données <SEP> 64 <SEP> bits <SEP> double
<tb> <SEP> pompage
<tb> Frd <SEP> wr <SEP> 1 <SEP> 1 <SEP> Bi-direction <SEP> "1" <SEP> # <SEP> lecture, <SEP> "0" <SEP> # <SEP> écriture
<tb> Fxxx <SEP> cs <SEP> 1 <SEP> 1 <SEP> Entrée <SEP> Sélection <SEP> puce, <SEP> bas <SEP> actif
<tb> Fdrdy <SEP> i <SEP> 1 <SEP> Bi-direction <SEP> Signal <SEP> donnée <SEP> prête, <SEP> correct <SEP> un
<tb> <SEP> cycle <SEP> avant <SEP> donnée <SEP> réelle.
<tb>
<SEP> Seulement <SEP> revendiqué <SEP> par <SEP> source
<tb> <SEP> de <SEP> données. <SEP> Bas <SEP> actif
<tb> Freq~ID <SEP> 10 <SEP> Bi-direction <SEP> Demande <SEP> ID <SEP> qui <SEP> précède <SEP> la
<tb> <SEP> donne. <SEP> Ces <SEP> signaux <SEP> ont <SEP> la <SEP> même
<tb> <SEP> cadence <SEP> que <SEP> les <SEP> bits <SEP> du <SEP> signal
<tb> <SEP> Fd <SEP> ~rdy <SEP> [9:6] <SEP> # <SEP> <SEP> bits <SEP> ID
<tb> <SEP> demandeur <SEP> [5:0) <SEP> # <SEP> <SEP> ID
<tb> <SEP> transaction
<tb> Fxxx <SEP> reg <SEP> 1 <SEP> 1 <SEP> Sortie <SEP> Demande <SEP> Fbus <SEP> source. <SEP> Bas <SEP> actif
<tb> Fxxx~grCNT <SEP> 2 <SEP> Sortie <SEP> Compte <SEP> accord <SEP> Fbus <SEP> qui <SEP> est
<tb> <SEP> correct <SEP> avec <SEP> demande <SEP> pour
<tb> <SEP> indiquer <SEP> les <SEP> cycles <SEP> pour
<tb> <SEP> lesquels <SEP> un <SEP> accord <SEP> est
<tb> <SEP> nécessaire.
<tb>
Fxxx~grant~1 <SEP> 1 <SEP> Entrée <SEP> Accord <SEP> Fbus <SEP> de <SEP> l'unité <SEP> Arb
<tb> <SEP> Central. <SEP> Bas <SEP> actif
<tb>
Figure img00980001
<tb> <SEP> Nom <SEP> signal <SEP> Grandeur <SEP> Direction <SEP> Commentaires
<tb> <SEP> Fbus
<tb> Fxxx~did <SEP> 3 <SEP> Sortie <SEP> ID <SEP> destination <SEP> Fbus. <SEP> Ce <SEP> signal
<tb> <SEP> est <SEP> entrainé <SEP> avec <SEP> la <SEP> demande
<tb> <SEP> pour <SEP> indiquer <SEP> à <SEP> l'arbitre <SEP> de
<tb> <SEP> Fbus <SEP> Principal <SEP> quel <SEP> CS <SEP> il <SEP> faut
<tb> <SEP> produire
<tb> <SEP> Fxxx~did[1:0] <SEP> ==ID <SEP> destination
<tb> <SEP> Fxxx~did[2]==état
<tb> <SEP> lecture/écriture
<tb> <SEP> (0#écriture, <SEP> <SEP> 1# <SEP> <SEP> lecture)
<tb> Fxxx~afull <SEP> 1 <SEP> Sortie <SEP> FIFO <SEP> adresses <SEP> est <SEP> pleine. <SEP> Ce
<tb> <SEP> signal <SEP> sera <SEP> revendiqué <SEP> quand <SEP> il
<tb> <SEP> y <SEP> aura <SEP> (n-1) <SEP> entrées <SEP> correctes
<tb> <SEP> dans <SEP> la <SEP> FIFO. <SEP> Haut <SEP> actif
<tb> Fxxx~dfull <SEP> 1 <SEP> Sortie <SEP> FIFO <SEP> données <SEP> est <SEP> pleine. <SEP> Ce
<tb> <SEP> signal <SEP> sera <SEP> revendiqué <SEP> quand <SEP> il
<tb> <SEP> y <SEP> aura <SEP> (n-l) <SEP> entrées <SEP> correctes
<tb> <SEP> dans <SEP> la <SEP> FIFO. <SEP> Haut <SEP> actif
<tb> f~reset~1 <SEP> 1 <SEP> Entrée <SEP> Remise <SEP> état <SEP> initial <SEP> Fbus
<tb> <SEP> synchrone <SEP> bas <SEP> actif
<tb> Fclk <SEP> 1 <SEP> Entrée <SEP> Horloge <SEP> bus <SEP> 80 <SEP> MHz
<tb> Fpr <SEP> wr <SEP> 1 <SEP> 1 <SEP> Entrée <SEP> Indicateur <SEP> écriture <SEP> partielle.
<tb>
<SEP> En <SEP> utilisant <SEP> ce <SEP> signal, <SEP> le
<tb> <SEP> récepteur <SEP> peut <SEP> déterminer <SEP> la
<tb> <SEP> grandeur <SEP> de <SEP> l'octet <SEP> dans <SEP> chacun
<tb> <SEP> des <SEP> 8 <SEP> octets.
<tb>
<SEP> Ce <SEP> signal <SEP> est <SEP> utilisé <SEP> en
<tb> <SEP> conjonction <SEP> avec <SEP> Freq <SEP> sizel7 <SEP> 0l <SEP>
<tb> Freq~size <SEP> 8 <SEP> Bi-direction <SEP> Grandeur <SEP> Transfert <SEP> ( < 32 <SEP> octets,
<tb> <SEP> 32 <SEP> octets, <SEP> 64 <SEP> octets, <SEP> 128
<tb> <SEP> octets)*
<tb> <SEP> * <SEP> doit <SEP> décoder <SEP> la <SEP> définition <SEP> de
<tb> <SEP> la <SEP> table <SEP> pour <SEP> RMW. <SEP>
<tb>
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 < 3 > ) 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 < 4 > ) 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 < 2 > ) 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
Figure img01060001
<tb> <SEP> DRAM <SEP> tRAS <SEP> tRRD <SEP> tCCD <SEP> tRCD <SEP> tCAC <SEP> tRP
<tb> 80 <SEP> MHZ <SEP> 6 <SEP> cycles <SEP> 2 <SEP> cycles <SEP> 1 <SEP> CyCle <SEP> 2 <SEP> cycles <SEP> 3 <SEP> cycles <SEP> 3 <SEP> cycles
<tb> (12,5ns) <SEP> 75ns <SEP> CAS <SEP> Laten.
<tb>
-10 <SEP> Partie
<tb> 83 <SEP> MHZ <SEP> 6 <SEP> cycles <SEP> 2 <SEP> cycles <SEP> 1 <SEP> cycle <SEP> 2 <SEP> cycles <SEP> 3 <SEP> cycles <SEP> 3 <SEP> cycles
<tb> (12ns) <SEP> CAS <SEP> Laten.
<tb>
-12 <SEP> Partie
<tb> * 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 < 31:3 > ) 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 < 31:3 > ) 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 < 7:0 > 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 < 7:0 > 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 < 19:16 > 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 < 28:21 > 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 < 31 > 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 < 31:0 > 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
Figure img01160001
<tb> <SEP> Décalage <SEP> Adresse <SEP> &num; <SEP> de <SEP> Bits <SEP> Description
<tb> <SEP> < 26:0 > <SEP> (hex)
<tb> 4A0 <SEP> 0000 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 0
<tb> 4A0 <SEP> 0008 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 1
<tb> 4A0 <SEP> 0010 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 2
<tb> 4A0 <SEP> 0008 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 3
<tb> 4A0 <SEP> 0020 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 4
<tb> 4A0 <SEP> 0028 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 5
<tb> 4A0 <SEP> 0030 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 6
<tb> 4A0 <SEP> 0038 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Courante <SEP> 7
<tb> 4A0 <SEP> 0040 <SEP> Réservé
<tb> 4A0 <SEP> 0048 <SEP> Réservé
<tb> 4A0 <SEP> 0050 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 0
<tb> 4A0 <SEP> 0058 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 1
<tb> 4A0 <SEP> 0060 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 2
<tb> 4A0 <SEP> 0068 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 3
<tb> 4A0 <SEP> 0070 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 4
<tb> 4A0 <SEP> 0078 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 5
<tb> 4A0 <SEP> 0080 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 6
<tb> 4A0 <SEP> 0088 <SEP> 29 <SEP> Registre <SEP> Adresse <SEP> Arrêt <SEP> 7
<tb> 4A0 <SEP> 0090 <SEP> Réservé
<tb> 4A0 <SEP> 0098 <SEP> Réservé
<tb> 4A0 <SEP> 00A0 <SEP> 32 <SEP> Registre <SEP> d'Etat
<tb> 4A0 <SEP> 00A8 <SEP> 32 <SEP> Registre <SEP> de <SEP> Contrôle
<tb> 4A0 <SEP> 00B0 <SEP> 32 <SEP> Registre <SEP> de <SEP> Masque
<tb>
TABLEAU 19: CODAGE DU REGISTRE D'ETAT
Figure img01170001
<tb> <SEP> Bit <SEP> &num; <SEP> Description
<tb> 0 <SEP> Canal <SEP> 0 <SEP> a <SEP> atteint <SEP> l'adresse <SEP> d'arrêt
<tb> 1 <SEP> Canal <SEP> 1 <SEP> a <SEP> atteint <SEP> l'adresse <SEP> d'arrêt
<tb> 2 <SEP> Canal <SEP> 2 <SEP> a <SEP> atteint <SEP> l'adresse <SEP> d'arrêt
<tb> 3 <SEP> Canal <SEP> 3 <SEP> a <SEP> atteint <SEP> l'adresse <SEP> d'arrêt
<tb> 4 <SEP> Canal <SEP> 4 <SEP> a <SEP> atteint <SEP> l'adresse <SEP> d'arrêt
<tb> 5 <SEP> Canal <SEP> 5 <SEP> a <SEP> atteint <SEP> l'adresse <SEP> d'arrêt
<tb> 6 <SEP> Canal <SEP> 6 <SEP> a <SEP> atteint <SEP> l'adresse <SEP> d'arrêt
<tb> 7 <SEP> Canal <SEP> 7 <SEP> a <SEP> atteint <SEP> l'adresse <SEP> d'arrêt
<tb> 8 <SEP> Réservé
<tb> 9 <SEP> Réservé
<tb> 10-31 <SEP> Réservé
<tb>
TABLEAU 20 : CODAGE DU REGISTRE DE CONTROLE
Figure img01170002
<tb> <SEP> Bit <SEP> &num; <SEP> Description
<tb> 0 <SEP> Valider <SEP> canal <SEP> 0 <SEP> pour <SEP> transfert <SEP> DMA
<tb> 1 <SEP> Valider <SEP> canal <SEP> 1 <SEP> pour <SEP> transfert <SEP> DMA
<tb> 2 <SEP> Valider <SEP> canal <SEP> 2 <SEP> pour <SEP> transfert <SEP> DMA
<tb> 3 <SEP> Valider <SEP> canal <SEP> 3 <SEP> pour <SEP> transfert <SEP> DMA
<tb> 4 <SEP> Valider <SEP> canal <SEP> 4 <SEP> pour <SEP> transfert <SEP> DMA
<tb> 5 <SEP> Valider <SEP> canal <SEP> 5 <SEP> pour <SEP> transfert <SEP> DMA
<tb> 6 <SEP> Valider <SEP> canal <SEP> 6 <SEP> pour <SEP> transfert <SEP> DMA
<tb> 7 <SEP> Valider <SEP> canal <SEP> 7 <SEP> pour <SEP> transfert <SEP> DMA
<tb> 8 <SEP> Réservé
<tb> 9 <SEP> Réservé
<tb> 15: 10 <SEP> Réservé
<tb> 16 <SEP> Sélectionner <SEP> double <SEP> tampon <SEP> pour <SEP> canal <SEP> 0 <SEP> et <SEP> canal <SEP> 1
<tb> 17 <SEP> Sélectionner <SEP> double <SEP> tampon <SEP> pour <SEP> canal <SEP> 2 <SEP> et <SEP> canal <SEP> 3
<tb> 18 <SEP> Sélectionner <SEP> double <SEP> tampon <SEP> pour <SEP> canal <SEP> 4 <SEP> et <SEP> canal <SEP> 5
<tb> 19 <SEP> Sélectionner <SEP> double <SEP> tampon <SEP> pour <SEP> canal <SEP> 6 <SEP> et <SEP> canal <SEP> 7
<tb> 20 <SEP> Réservé
<tb>
Figure img01180001
<tb> <SEP> Bit <SEP> &num; <SEP> Description
<tb> 21 <SEP> Canal <SEP> 0 <SEP> est <SEP> utilisé <SEP> pour <SEP> la <SEP> lecture <SEP> (si <SEP> ce <SEP> bit <SEP> est <SEP> "1")
<tb> 22 <SEP> Canal <SEP> 1 <SEP> est <SEP> utilisé <SEP> pour <SEP> la <SEP> lecture <SEP> (si <SEP> ce <SEP> bit <SEP> est <SEP> "1")
<tb> 23 <SEP> Canal <SEP> 2 <SEP> est <SEP> utilisé <SEP> pour <SEP> la <SEP> lecture <SEP> (si <SEP> ce <SEP> bit <SEP> est <SEP> "1")
<tb> 24 <SEP> Canal <SEP> 3 <SEP> est <SEP> utilisé <SEP> pour <SEP> la <SEP> lecture <SEP> (si <SEP> ce <SEP> bit <SEP> est <SEP> "1")
<tb> 25 <SEP> Canal <SEP> 4 <SEP> est <SEP> utilisé <SEP> pour <SEP> la <SEP> lecture <SEP> (si <SEP> ce <SEP> bit <SEP> est <SEP> "1")
<tb> 26 <SEP> Canal <SEP> 5 <SEP> est <SEP> utilisé <SEP> pour <SEP> la <SEP> lecture <SEP> (si <SEP> ce <SEP> bit <SEP> est <SEP> "1")
<tb> 27 <SEP> Canal <SEP> 6 <SEP> est <SEP> utilisé <SEP> pour <SEP> la <SEP> lecture <SEP> (si <SEP> ce <SEP> bit <SEP> est <SEP> "1")
<tb> 28 <SEP> Canal <SEP> 7 <SEP> est <SEP> utilisé <SEP> pour <SEP> la <SEP> lecture <SEP> (si <SEP> ce <SEP> bit <SEP> est <SEP> "1")
<tb> 29 <SEP> Réservé
<tb> 30 <SEP> Réservé
<tb> 31 <SEP> Validation <SEP> interruption <SEP> DMA
<tb> 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
Figure img01190001
<tb> Adresse <SEP> < 31:0 > <SEP> (hex) <SEP> Description
<tb> 04B0 <SEP> 0000 <SEP> é <SEP> 04BF <SEP> FFFF <SEP> Registre <SEP> Configuration <SEP> CODEC <SEP> 0
<tb> 04c0 <SEP> 1000 <SEP> à <SEP> 04c0 <SEP> iFFF <SEP> Registre <SEP> Configuration <SEP> CODEC <SEP> 1
<tb> 04c0 <SEP> 2000 <SEP> à <SEP> 04C0 <SEP> 2FFF <SEP> Registre <SEP> Configuration <SEP> CODEC <SEP> 2
<tb> 04C0 <SEP> 3000 <SEP> à <SEP> 04c0 <SEP> 3FFF <SEP> Registre <SEP> Configuration <SEP> CODEC <SEP> 3
<tb> 04C0 <SEP> 4000 <SEP> à <SEP> 04C0 <SEP> 4FFF <SEP> Registre <SEP> Configuration <SEP> CODEC <SEP> 4
<tb> 04C0 <SEP> 5000 <SEP> à <SEP> 04C0 <SEP> 5FFF <SEP> Registre <SEP> Configuration <SEP> CODEC <SEP> 5
<tb> 04c0 <SEP> 6000 <SEP> à <SEP> 04c0 <SEP> 6FFF <SEP> Registre <SEP> Configuration <SEP> CODEC <SEP> 6
<tb> 04C0 <SEP> 7000 <SEP> à <SEP> 04C0 <SEP> 7FFF <SEP> Registre <SEP> Configuration <SEP> CODEC <SEP> 7
<tb> 04C0 <SEP> 8000 <SEP> à <SEP> 04C0 <SEP> 8FFF <SEP> Réservé
<tb> 04C0 <SEP> 9000 <SEP> à <SEP> 04C0 <SEP> 9FFF <SEP> Réservé
<tb>
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
Figure img01200001
<tb> <SEP> Nom <SEP> broche <SEP> Direction <SEP> Description
<tb> clk1 <SEP> Entrée <SEP> Entrée <SEP> horloge <SEP> système <SEP> 80 <SEP> MHz
<tb> f~reset~1 <SEP> Entrée <SEP> Signal <SEP> remise <SEP> l'état <SEP> initial <SEP> Fbus <SEP> (Bas
<tb> <SEP> Actif)
<tb> Fasc~grant~1 <SEP> Entrée <SEP> Accord <SEP> Fbus <SEP> de <SEP> Arbitre <SEP> Fbus <SEP> pour <SEP> unité <SEP> ASIC
<tb> <SEP> (Bas <SEP> Actif)
<tb> Fasc <SEP> cs <SEP> 1 <SEP> Entrée <SEP> Signal <SEP> s <SEP> 6lection <SEP> puce <SEP> ASIC <SEP> (Bas <SEP> Actif)
<tb> co~size[7:0] <SEP> - <SEP> Entrée <SEP> Grandeur <SEP> transfert <SEP> de <SEP> données <SEP> CODEC <SEP> : <SEP> 8'h08#
<tb> c9~size[7:0] <SEP> 8 <SEP> octets, <SEP> 8'h10#16 <SEP> <SEP> octets, <SEP> 8'h18#24 <SEP> <SEP> octets,
<tb> <SEP> 8'h20#32 <SEP> <SEP> octets
<tb> DMA~REQO <SEP> - <SEP> Entrée <SEP> Signaux <SEP> demande <SEP> DMA <SEP> proviennent <SEP> des <SEP> CODEC
<tb> DMA~REQ7
<tb> CODEC~ACKO <SEP> - <SEP> Entrée <SEP> Signaux <SEP> reconnaissance <SEP> CODEC <SEP> proviennent <SEP> des
<tb> CODEC~ACK7 <SEP> CODEC
<tb> ref~full <SEP> Entrée <SEP> FIFO <SEP> utilisée <SEP> pour <SEP> cribler <SEP> signal <SEP> complet
<tb> <SEP> régénération <SEP> (provient <SEP> de <SEP> MCU)
<tb> Fdrdy~1 <SEP> Entrée/ <SEP> Signal <SEP> donnée <SEP> Fbus <SEP> prête, <SEP> valable <SEP> un <SEP> cycle
<tb> <SEP> Sortie <SEP> avant <SEP> donnée <SEP> réelle
<tb> Fdata[63:0] <SEP> Entrée/ <SEP> Données <SEP> Fbus
<tb> <SEP> Sortie
<tb> Faddr[31:0] <SEP> Entrée/ <SEP> Adresse <SEP> Fbus
<tb> <SEP> Sortie
<tb> Freq~ID[9:0] <SEP> Entrée/ <SEP> ID <SEP> Demande <SEP> Fbus <SEP> : <SEP> [9:6] <SEP> # <SEP> <SEP> ID <SEP> Demandeur,
<tb> <SEP> Sortie <SEP> [5:0]#ID <SEP> <SEP> Transaction
<tb> Freq~size[7:0] <SEP> Entrée/ <SEP> Grandeur <SEP> transfert <SEP> données <SEP> Fbus
<tb> <SEP> Sortie
<tb> Frd~wr~1 <SEP> Entrée/ <SEP> Indication <SEP> Lecture/Ecriture <SEP> : <SEP> "1"#lecture
<tb> <SEP> Sortie <SEP> "0"#écriture
<tb> Fpr~wr~1 <SEP> Entrée/ <SEP> Indication <SEP> écriture <SEP> partielle <SEP> (Bas <SEP> Actif)
<tb> <SEP> Sortie
<tb>
Figure img01210001
<tb> <SEP> Nom <SEP> broche <SEP> Direction <SEP> Description
<tb> CO~DATA[63:0] <SEP> Entrée/ <SEP> Données <SEP> du <SEP> CODEC
<tb> C9 <SEP> DATA[63:0] <SEP> Sortie
<tb> Fasc~dfull <SEP> Sortie <SEP> FIFO <SEP> données <SEP> unité <SEP> ASIC <SEP> pleine <SEP> (passe <SEP> à
<tb> <SEP> arbitre <SEP> Fbus)
<tb> Fasc~afull <SEP> Sortie <SEP> FIFO <SEP> réponse <SEP> unité <SEP> ASIC <SEP> pleine <SEP> (passe <SEP> à
<tb> <SEP> arbitre <SEP> Fbus)
<tb> Fasc~grCNT[1:0] <SEP> Sortie <SEP> Compteur <SEP> accord <SEP> Fbus <SEP> qui <SEP> est <SEP> correct <SEP> avec <SEP> la
<tb> <SEP> demande <SEP> pour <SEP> indiquer <SEP> le <SEP> nombre <SEP> de <SEP> cycles <SEP> où
<tb> <SEP> l'accord <SEP> est <SEP> nécessaire <SEP> (va <SEP> à <SEP> l'arbitre <SEP> de
<tb> <SEP> Fbus) <SEP>
<tb> Fasc~did[2:0] <SEP> Sortie <SEP> ID <SEP> destination <SEP> Fbus <SEP> pour <SEP> demande <SEP> de <SEP> unité
<tb> <SEP> ASIC
<tb> Fasc~rec1~1 <SEP> Sortie <SEP> Signal <SEP> demande <SEP> Fbus <SEP> de <SEP> unité <SEP> ASIC <SEP> < Bas <SEP>
<tb> <SEP> Actif)
<tb> CODEC <SEP> Sortie <SEP> Adresses <SEP> CODEC <SEP> qui <SEP> ne <SEP> sont <SEP> utilisées <SEP> que
<tb> ADDR[31/0] <SEP> pour <SEP> lecture/écriture <SEP> du <SEP> registre <SEP> de
<tb> <SEP> configuration <SEP> du <SEP> CODEC <SEP> (va <SEP> aux <SEP> CODEC)
<tb> DMA~ACKO <SEP> - <SEP> Sortie <SEP> Signal <SEP> de <SEP> reconnaissance <SEP> DMA <SEP> (va <SEP> aux <SEP> CODEC)
<tb> DMA <SEP> ACK7
<tb> Crd~wr~1 <SEP> Sortie <SEP> Indication <SEP> Lecture/Ecriture <SEP> pour <SEP> accès
<tb> <SEP> registre <SEP> configuration <SEP> CODEC
<tb> CODEC~REQO <SEP> - <SEP> Sortie <SEP> Signaux <SEP> demande <SEP> CODEC
<tb> CODEC <SEP> REQ7
<tb> EOP <SEP> Sortie <SEP> Fin <SEP> du <SEP> Procédé. <SEP> Ce <SEP> signal <SEP> va <SEP> au <SEP> contrôleur
<tb> <SEP> d'interruption
<tb> Ref <SEP> addr[31:0] <SEP> Sortie <SEP> Adresse <SEP> pour <SEP> CANALO <SEP> (va <SEP> à <SEP> MCU)
<tb> addr <SEP> valid <SEP> Sortie <SEP> Signal <SEP> adresse <SEP> canal <SEP> 0 <SEP> correcte <SEP> (va <SEP> à <SEP> MCU)
<tb> Fmem~grant~1 <SEP> Entrée <SEP> Signal <SEP> accord <SEP> MCU <SEP> provient <SEP> de <SEP> l'arbitre <SEP> de
<tb> <SEP> Fbus
<tb>
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
Figure img01230001
<tb> <SEP> bits < 63:48 > <SEP> bits < 47:32 > <SEP> bits <SEP> < 31:16 > <SEP> bits < 15:0 >
<tb> DMA <SEP> CAN4 <SEP> DA1 <SEP> DROITE <SEP> 2EME <SEP> DA1 <SEP> GAUCHE <SEP> 1ER <SEP> DA1 <SEP> DROITE <SEP> 1ER <SEP> DA1 <SEP> GAUCHE <SEP> 1ER
<tb> DMA <SEP> CAN5 <SEP> DA2 <SEP> GAUCHE <SEP> 2EME <SEP> DA2 <SEP> DROITE <SEP> 2EME <SEP> DA2 <SEP> GAUCHE <SEP> 1ER <SEP> DA2 <SEP> DROITE <SEP> 1ER
<tb> DMA <SEP> CAN6 <SEP> ADC <SEP> GAUCHE <SEP> 4EME <SEP> ADC <SEP> GAUCHE <SEP> 3EME <SEP> ADC <SEP> GAUCHE <SEP> 2EME <SEP> ADC <SEP> GAUCHE <SEP> 1ER
<tb> DMA <SEP> CAN7 <SEP> ADC <SEP> DROITE <SEP> 4EME <SEP> ADC <SEP> DROITE <SEP> 3EME <SEP> ADC <SEP> DROITE <SEP> 2EME <SEP> ADC <SEP> DROITE <SEP> 1ER
<tb> 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
Figure img01240001
<tb> <SEP> Décalage <SEP> Adresses <SEP> Description <SEP> Lecture
<tb> <SEP> (hex) <SEP> ou
<tb> <SEP> Ecriture
<tb> BASE <SEP> DAC1 <SEP> + <SEP> 0 <SEP> Entrée <SEP> Donnée <SEP> Ecriture <SEP> Registre <SEP> E
<tb> BASE <SEP> DAC2 <SEP> + <SEP> 0 <SEP> Contrôle
<tb> BASE <SEP> ADCL <SEP> + <SEP> 0
<tb> BASE <SEP> ADCR <SEP> + <SEP> 0
<tb> BASE <SEP> DAC1 <SEP> + <SEP> 2 <SEP> Entrée <SEP> Mot <SEP> Contrôle <SEP> E
<tb> BASE <SEP> DAC2 <SEP> + <SEP> 2
<tb> BASE <SEP> ADCL <SEP> + <SEP> 2
<tb> BASE <SEP> ADCR <SEP> + <SEP> 2
<tb> BASE <SEP> DAC1 <SEP> + <SEP> 0 <SEP> Sortie <SEP> Donnée <SEP> Registre <SEP> Contrôle <SEP> L
<tb> BASE <SEP> DAC2 <SEP> + <SEP> 0
<tb> BASE <SEP> ADCL <SEP> + <SEP> 0
<tb> BASE <SEP> ADCR <SEP> + <SEP> 0
<tb> BASE <SEP> ADCL <SEP> + <SEP> 2 <SEP> Registre <SEP> Drapeau <SEP> ADC <SEP> L
<tb> BASE <SEP> ADCR <SEP> + <SEP> 2
<tb> BASE <SEP> ADCL <SEP> + <SEP> 10 <SEP> Données <SEP> 1er <SEP> ADC <SEP> gauche <SEP> L
<tb> BASE <SEP> ADCL <SEP> + <SEP> 12 <SEP> Données <SEP> 2ème <SEP> ADC <SEP> gauche <SEP> L
<tb> BASE <SEP> ADCL <SEP> + <SEP> 14 <SEP> Données <SEP> 3ème <SEP> ADC <SEP> gauche <SEP> L
<tb> BASE <SEP> ADCL <SEP> + <SEP> 16 <SEP> Données <SEP> 4ème <SEP> ADC <SEP> gauche <SEP> L
<tb> BASE <SEP> ADCR <SEP> + <SEP> 10 <SEP> Données <SEP> 1er <SEP> ADC <SEP> droite <SEP> L
<tb> BASE <SEP> ADCR <SEP> + <SEP> 12 <SEP> Données <SEP> 2ème <SEP> ADC <SEP> droite <SEP> L
<tb> BASE <SEP> ADCR <SEP> + <SEP> 14 <SEP> Données <SEP> 3ème <SEP> ADC <SEP> droite <SEP> L
<tb> BASE <SEP> ADCR <SEP> + <SEP> 16 <SEP> Données <SEP> 4ème <SEP> ADC <SEP> droite <SEP> L
<tb> BASE <SEP> DAC1 <SEP> + <SEP> 20 <SEP> Registre <SEP> Drapeau <SEP> Contrôle <SEP> L
<tb> BASE <SEP> DAC2 <SEP> + <SEP> 20
<tb> BASE <SEP> ADCL <SEP> + <SEP> 20
<tb> BASE <SEP> ADCR <SEP> + <SEP> 20
<tb> 8.7 Définition des Registres 8.7.1 Entrée Données Ecriture Registre Contrôle
Figure img01250001
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> 11 <SEP> 10 <SEP> 9 <SEP> 8 <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> d15 <SEP> d14 <SEP> d13 <SEP> d12 <SEP> d11 <SEP> d10 <SEP> d9 <SEP> d8 <SEP> d7 <SEP> d6 <SEP> d5 <SEP> d4 <SEP> d3 <SEP> d2 <SEP> d1 <SEP> d0
<tb>
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
Figure img01250002
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> 11 <SEP> 10 <SEP> 9 <SEP> 8 <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> <SEP> L/E <SEP> ia4 <SEP> ia3 <SEP> ia2 <SEP> ia1 <SEP> ia0
<tb>
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
Figure img01250003
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> 11 <SEP> 10 <SEP> 9 <SEP> 8 <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> d15 <SEP> d14 <SEP> d13 <SEP> d12 <SEP> d11 <SEP> d10 <SEP> d9 <SEP> d8 <SEP> d7 <SEP> d6 <SEP> d5 <SEP> d4 <SEP> d3 <SEP> d2 <SEP> d1 <SEP> d0
<tb>
Contenu du registre de contrôle adressé dans le bloc précédent.
8.7.4 Registre Drapeau ADC
Figure img01250004
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> 11 <SEP> 10 <SEP> 9 <SEP> 8 <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> <SEP> r4v <SEP> r3v <SEP> <SEP> r2v <SEP> rîv <SEP> 14v <SEP> 13v <SEP> 12v <SEP> 11v <SEP>
<tb> 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
Figure img01260001
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> 11 <SEP> 10 <SEP> 9 <SEP> 8 <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> d15 <SEP> d14 <SEP> d13 <SEP> d12 <SEP> d11 <SEP> d10 <SEP> d9 <SEP> d8 <SEP> d7 <SEP> d6 <SEP> d5 <SEP> d4 <SEP> d3 <SEP> d2 <SEP> d1 <SEP> d0
<tb>
Première donnée ADC gauche dans le tampon.
8.7.6 Donnée 2ème ADC Gauche
Figure img01260002
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> 11 <SEP> 10 <SEP> 9 <SEP> 8 <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> d15 <SEP> d14 <SEP> d13 <SEP> d12 <SEP> d11 <SEP> d10 <SEP> d9 <SEP> d8 <SEP> d7 <SEP> d6 <SEP> d5 <SEP> d4 <SEP> d3 <SEP> d2 <SEP> d1 <SEP> d0
<tb>
Deuxième donnée ADC Gauche dans le tampon.
8.7.7 Donnée 3ème ADC Gauche
Figure img01260003
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> li <SEP> <SEP> 1O <SEP> <SEP> 9 <SEP> 8 <SEP> 7 <SEP> J <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0 <SEP>
<tb> dl5 <SEP> d14 <SEP> d13 <SEP> d12 <SEP> d11 <SEP> d10 <SEP> d9 <SEP> d8 <SEP> d7 <SEP> d6d5 <SEP> d4 <SEP> d3 <SEP> d2 <SEP> d1 <SEP> d0 <SEP>
<tb>
Troisième donnée ADC Gauche dans le tampon.
8.7.8 Donnée 4ème ADC Gauche
Figure img01260004
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> 11 <SEP> 10 <SEP> 9 <SEP> 8 <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> d15 <SEP> d14 <SEP> d13 <SEP> d12 <SEP> d11 <SEP> d10 <SEP> d9 <SEP> d8 <SEP> d7 <SEP> d6 <SEP> d5 <SEP> d4 <SEP> d3 <SEP> d2 <SEP> d1 <SEP> d0
<tb>
Quatrième donnée ADC Gauche dans le tampon.
8.7.9 Registre Drapeau Contrôle
Figure img01260005
<tb> 15 <SEP> 14 <SEP> 13 <SEP> 12 <SEP> 11 <SEP> 10 <SEP> 9 <SEP> 8 <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> wf1 <SEP> rf1
<tb> 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
Figure img01280001
<tb> Décalage <SEP> Nom <SEP> du <SEP> registre
<tb> <SEP> (hex)
<tb> 0 <SEP> Registre <SEP> grandeur <SEP> Trames
<tb> <SEP> 1 <SEP> ID
<tb> <SEP> 2 <SEP> Octet <SEP> DATA/Contrôle
<tb> <SEP> 3 <SEP> IDEX/DATAO
<tb> <SEP> 4 <SEP> DATA1
<tb> <SEP> 5 <SEP> DATA2
<tb> <SEP> 6 <SEP> DATA3
<tb> <SEP> 7 <SEP> Registre <SEP> d'Etat
<tb> <SEP> 8 <SEP> Interface <SEP> Série <SEP> DATA <SEP> Lecture
<tb> <SEP> 9 <SEP> Données <SEP> PROM <SEP> lecture
<tb> <SEP> A <SEP> Registre <SEP> Contrôle <SEP> Logique
<tb> <SEP> B <SEP> Polarité <SEP> HS, <SEP> VS
<tb> <SEP> c <SEP> C <SEP> Décalage <SEP> HS
<tb> <SEP> D <SEP> D <SEP> Décalage <SEP> VS
<tb> 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 < O > : Polarité VS
Bit < 1 > : 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
Figure img01330001
<tb> Décalage <SEP> Nom <SEP> Registre
<tb> t(hex) <SEP>
<tb> <SEP> 0 <SEP> Registre <SEP> Grandeur <SEP> Trames
<tb> <SEP> 1 <SEP> ID
<tb> <SEP> 2 <SEP> 2 <SEP> Octet <SEP> Contrôle/DATA
<tb> <SEP> 3 <SEP> IDEX/DATAO
<tb> <SEP> 4 <SEP> DATA1
<tb> <SEP> 5 <SEP> DATA2
<tb> <SEP> 6 <SEP> DATA3
<tb> <SEP> 7 <SEP> Réservé
<tb> <SEP> 8 <SEP> Interface <SEP> série <SEP> DATA <SEP> lecture
<tb> <SEP> 9 <SEP> Réservé
<tb> <SEP> A <SEP> A <SEP> Registre <SEP> Contrôle <SEP> Logique
<tb> <SEP> B <SEP> Réservé
<tb> <SEP> C <SEP> Réservé
<tb> <SEP> D <SEP> Réservé
<tb> <SEP> E <SEP> Registre <SEP> d'Etat
<tb> 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 < 1:0 >
00 Format 4:2:2
01 Format 4:1:1
10 Format CCIR656 9.7.10 Registre d'Etat
Bit < 0 > : Etat Zone
O:Zone Paire
l:Zone Impaire
Bit < 1 > : 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
Figure img01410001
<tb> <SEP> Signaux <SEP> Grandeur <SEP> Direction <SEP> Descriptions
<tb> iOBUS[31:0] <SEP> 32 <SEP> B <SEP> Bus <SEP> adresses <SEP> et <SEP> données
<tb> <SEP> bidirectionnel <SEP> multiplexé <SEP> a <SEP> 32 <SEP> bits.
<tb>
<SEP> Le <SEP> maître <SEP> doit <SEP> libérer <SEP> le <SEP> signal <SEP> en
<tb> <SEP> tant <SEP> que <SEP> à <SEP> trois <SEP> états <SEP> si
<tb> <SEP> l'opération <SEP> est <SEP> terminée.
<tb>
IOB~rd~1 <SEP> 1 <SEP> B <SEP> Validation <SEP> lecture <SEP> à <SEP> bas <SEP> actif <SEP> qui
<tb> <SEP> est <SEP> la <SEP> sortie <SEP> du <SEP> maître <SEP> et <SEP> l'entrée
<tb> <SEP> pour <SEP> l'esclave <SEP> pour <SEP> toutes <SEP> les
<tb> <SEP> transactions <SEP> de <SEP> lecture/écriture. <SEP> Le
<tb> <SEP> maître <SEP> doit <SEP> libérer <SEP> le <SEP> signal <SEP> en
<tb> <SEP> tant <SEP> que <SEP> trois <SEP> états <SEP> si <SEP> l'opération
<tb> <SEP> est <SEP> terminée.
<tb>
IOB~wr~1 <SEP> 1 <SEP> B <SEP> Validation <SEP> écriture <SEP> bas <SEP> actif <SEP> qui
<tb> <SEP> est <SEP> la <SEP> sortie <SEP> du <SEP> maître <SEP> et <SEP> l'entrée
<tb> <SEP> pour <SEP> l'esclave <SEP> pour <SEP> toutes <SEP> les
<tb> <SEP> transactions <SEP> de <SEP> lecture/ecriture. <SEP> Le
<tb> <SEP> maître <SEP> doit <SEP> libérer <SEP> le <SEP> signal <SEP> à <SEP>
<tb> <SEP> trois <SEP> états <SEP> si <SEP> l'opération <SEP> est
<tb> <SEP> terminée.
<tb>
IOB~ready~1 <SEP> 1 <SEP> B <SEP> Signal <SEP> bas <SEP> actif <SEP> qui <SEP> est <SEP> la <SEP> sortie
<tb> <SEP> de <SEP> l'esclave <SEP> et <SEP> l'entrée <SEP> pour <SEP> le
<tb> <SEP> maître <SEP> pour <SEP> notifier <SEP> au <SEP> maître <SEP> le
<tb> <SEP> moment <SEP> où <SEP> la <SEP> donnée <SEP> est <SEP> disponible
<tb> <SEP> pour <SEP> une <SEP> lecture <SEP> en <SEP> mode <SEP> esclave.
<tb>
<SEP> L'esclave <SEP> doit <SEP> libérer <SEP> le <SEP> signal <SEP> à
<tb> <SEP> trois <SEP> états <SEP> si <SEP> les <SEP> opérations <SEP> sont
<tb> <SEP> terminées.
<tb>
IOB~cs~bsp~1 <SEP> 1 <SEP> E <SEP> Signal <SEP> sélection <SEP> dispositif <SEP> bas
<tb> <SEP> actif <SEP> de <SEP> l'arbitre <SEP> vers <SEP> BP <SEP> pour
<tb> <SEP> traiter <SEP> la <SEP> demande <SEP> quand <SEP> l'adresse
<tb> <SEP> est <SEP> verrouillée.
<tb>
Figure img01420001
<tb> <SEP> Signaux <SEP> Grandeur <SEP> Direction <SEP> Descriptions
<tb> IOB~ale~1 <SEP> 1 <SEP> E <SEP> Echantillonnage <SEP> d'adresse <SEP> bas <SEP> actif
<tb> <SEP> qui <SEP> est <SEP> la <SEP> sortie <SEP> de <SEP> l'arbitre <SEP> et
<tb> <SEP> l'entrée <SEP> pour <SEP> BP <SEP> pour <SEP> des <SEP> opérations
<tb> <SEP> maître/esclave
<tb> IOB~req~bap~1 <SEP> 1 <SEP> S <SEP> Demande <SEP> bas <SEP> actif <SEP> de <SEP> BP <SEP> à <SEP> l'arbitre
<tb> <SEP> pour <SEP> devenir <SEP> le <SEP> maître <SEP> d'une
<tb> <SEP> transaction <SEP> de <SEP> lecture <SEP> ou <SEP> d'écriture
<tb> <SEP> dans <SEP> un <SEP> bus.
<tb> lOB~tsize[1:0] <SEP> 2 <SEP> B <SEP> Données <SEP> du <SEP> maître <SEP> à <SEP> l'esclave <SEP> pour
<tb> <SEP> dénoter <SEP> la <SEP> grandeur <SEP> du <SEP> transfert <SEP> qui
<tb> <SEP> est <SEP> égale <SEP> à <SEP> l'un <SEP> des <SEP> 4, <SEP> 8, <SEP> 12, <SEP> et <SEP> 16
<tb> <SEP> octets.
<tb> IOB~grant~bsp~ <SEP> 1 <SEP> E <SEP> Signal <SEP> d'accord <SEP> bas <SEP> actif <SEP> de
<tb> 1 <SEP> l'arbitre <SEP> à <SEP> BP.
<tb> Reset~1 <SEP> 1 <SEP> E <SEP> Remise <SEP> à <SEP> l'état <SEP> initial <SEP> système <SEP> bas
<tb> <SEP> actif.
<tb> CLK40M <SEP> 1 <SEP> E <SEP> Horloge <SEP> 40 <SEP> MHz
<tb> ARM7 <SEP> IRQ <SEP> 1 <SEP> S <SEP> Signal <SEP> demande <SEP> Interruption <SEP> de <SEP> BP
<tb> <SEP> pour <SEP> ARM7 <SEP> qui <SEP> doit <SEP> être <SEP> effacé <SEP> par
<tb> <SEP> ARM7. <SEP> En <SEP> réalité, <SEP> ce <SEP> signal
<tb> <SEP> d'interruption <SEP> requis <SEP> par <SEP> BP <SEP> est
<tb> <SEP> envoyé <SEP> au <SEP> Contrôleur <SEP> d'Interruption
<tb> <SEP> qui <SEP> est <SEP> également <SEP> un <SEP> dispositif
<tb> <SEP> IOBUS. <SEP>
<tb>
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: < MSP BASE > < BP BASE > < Address Offset >

< MSP~BASE > est 5 bits qui est spécifié par l'adresse du dispositif PCI de base DE MSP
< BP~BASE > est 7 bits qi est égal à 7'blllllOO,
et
< Address~Offset > 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
Figure img01490001
<tb> Adress~Offset <SEP> Nom <SEP> du <SEP> Registre <SEP> Grandeur <SEP> Description
<tb> <SEP> (Hex)
<tb> 0 <SEP> 0000 <SEP> BP <SEP> MODE[31:0] <SEP> 32 <SEP> Registre <SEP> mode <SEP> traitement <SEP> BP
<tb> 0 <SEP> 0004 <SEP> BP <SEP> CONTROL(31:0] <SEP> 32 <SEP> Registre <SEP> contrôle <SEP> BP
<tb> 0 <SEP> 0008 <SEP> IBUFO <SEP> START[31:0] <SEP> 32 <SEP> Adresse <SEP> départ <SEP> tampon <SEP> entrée <SEP> 0
<tb> 0 <SEP> 000C <SEP> IBUFO <SEP> END[31:0] <SEP> 32 <SEP> Adresse <SEP> fin <SEP> tampon <SEP> entrée <SEP> 0
<tb> 0 <SEP> 0010 <SEP> IBUF1 <SEP> START[31:0] <SEP> 32 <SEP> Adresse <SEP> départ <SEP> tampon <SEP> entrée <SEP> 1
<tb> 0 <SEP> 0014 <SEP> IBUFi <SEP> END[31:0] <SEP> 32 <SEP> ~ <SEP> Adresse <SEP> fin <SEP> tampon <SEP> entrée <SEP> 1
<tb> 0 <SEP> 0018 <SEP> OBUFO <SEP> START[31:0] <SEP> 32 <SEP> Adresse <SEP> départ <SEP> tampon <SEP> sortie <SEP> 0
<tb> 0 <SEP> 001C <SEP> OBUFO <SEP> END[31:0] <SEP> 32 <SEP> Adresse <SEP> fin <SEP> tampon <SEP> sortie <SEP> 0
<tb> 0 <SEP> 0020 <SEP> OBUF1 <SEP> START[31:0] <SEP> 32 <SEP> Adresse <SEP> départ <SEP> tampon <SEP> sortie <SEP> 1
<tb> o <SEP> 0024 <SEP> OBUF1 <SEP> END[31:0] <SEP> 32 <SEP> Adresse <SEP> fin <SEP> tampon <SEP> sortie <SEP> 1
<tb> 0~0028 <SEP> SAVE~ADR[31:0] <SEP> 32 <SEP> Adresse <SEP> départ <SEP> réserve
<tb> <SEP> contexte
<tb> 0~002C <SEP> VALID~BYTE~ADR <SEP> 32 <SEP> Adresse <SEP> octet <SEP> dernière <SEP> donnée
<tb> <SEP> [31:0] <SEP> utilisée <SEP> dans <SEP> le <SEP> double <SEP> tampon
<tb> <SEP> d'entrée <SEP> ou <SEP> de <SEP> sortie <SEP> de <SEP> ligne
<tb> 0~0030 <SEP> BP <SEP> STATUS[O] <SEP> 1 <SEP> LSB <SEP> du <SEP> registre <SEP> d'état <SEP> de <SEP> BP
<tb> 0~0031 <SEP> BP~STATUS[1] <SEP> 1 <SEP> Deuxième <SEP> bit <SEP> le <SEP> moins
<tb> <SEP> significatif
<tb> Oo04E <SEP> BP~STATUS[30] <SEP> 1 <SEP> Deuxième <SEP> bit <SEP> le <SEP> plus
<tb> <SEP> significatif
<tb> 0 <SEP> 004F <SEP> BP <SEP> STATUS[31] <SEP> 1 <SEP> NSB <SEP> du <SEP> registre <SEP> d'état <SEP> de <SEP> BP
<tb> 0 <SEP> 0050 <SEP> BP <SEP> STATUS[31:O] <SEP> 32 <SEP> Registre <SEP> d'état <SEP> de <SEP> BP
<tb> O~0054 <SEP> BP~INT~MASK[15: 0] <SEP> 32 <SEP> Registre <SEP> masque <SEP> interruption
<tb> <SEP> BP
<tb> <SEP> V~MB~SIZE[7:0] <SEP> grandeurs <SEP> verticale <SEP> et
<tb> <SEP> H~MB~SIZE[7:0] <SEP> horizontale <SEP> de <SEP> l'image <SEP> en
<tb> <SEP> nombres <SEP> de <SEP> macro-blocs
<tb>
Figure img01500001
<tb> <SEP> Adress~Offset <SEP> Nom <SEP> du <SEP> Registre <SEP> Grandeur <SEP> Description
<tb> <SEP> (Hex)
<tb> 0~0058 <SEP> ARM7~IRQ[0] <SEP> 1 <SEP> Broche <SEP> demande <SEP> d'interruption
<tb> <SEP> ARM7
<tb> 0~0059
<tb> - <SEP> - <SEP> - <SEP> Réservé <SEP> pour <SEP> extension <SEP> future
<tb> 0~005F
<tb> 0~0060 <SEP> BP~CACHE
<tb> 8 <SEP> 8 <SEP> Région <SEP> antémémoire <SEP> BP
<tb> 0~019F <SEP> [Address]
<tb> 0~01A0
<tb> - <SEP> - <SEP> - <SEP> Réservé <SEP> pour <SEP> extension <SEP> future
<tb> F~FFFF
<tb>
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
Figure img01550001
<tb> Octet/Bit <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> i <SEP> 1 <SEP> O <SEP>
<tb> Octet <SEP> 0 <SEP> PS <SEP> PT <SEP> - <SEP> SF
<tb> Octet <SEP> 1 <SEP> PARAM~SET0
<tb> Octet <SEP> 2 <SEP> PARAM~SET1
<tb> Octet <SEP> 3 <SEP> PARAM~SET2
<tb> # 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
Figure img01550002
<tb> <SEP> Octet0 <SEP> [2:0] <SEP> Format <SEP> Standard
<tb> 3'b000 <SEP> Codage <SEP> vidéo <SEP> MPEG-1
<tb> 3'b001 <SEP> Décodage <SEP> vidéo <SEP> MPEG-1
<tb> 3'b010 <SEP> Codage <SEP> vidéo <SEP> MPEG-2
<tb> 3'b011 <SEP> Décodage <SEP> vidéo <SEP> MPEG-2
<tb>
Figure img01560001
<tb> 3'b100 <SEP> Codage <SEP> H.261
<tb> 3'blO1 <SEP> Décodage <SEP> H.261
<tb> 3'bllO <SEP> Codage <SEP> H.263
<tb> 3'blll <SEP> Décodage <SEP> H.263
<tb> # 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
Figure img01560002
<tb> Octet0 <SEP> MPEG-1 <SEP> MPEG-2 <SEP> H.261 <SEP> H.263
<tb> [5:4]
<tb> 2'b00 <SEP> Image <SEP> D <SEP> Image <SEP> D <SEP> interdit <SEP> bloc-PB
<tb> 2'b01 <SEP> intra <SEP> intra <SEP> interdit <SEP> intra
<tb> 2'b10 <SEP> prédictif <SEP> prédictif <SEP> toujours <SEP> inter
<tb> 2'b11 <SEP> bidirectionnel <SEP> bidirectionnel <SEP> interdit <SEP> interdit
<tb> # 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
Figure img01560003
<tb> OctetO <SEP> MPEG-1 <SEP> MPEG-2 <SEP> H.261 <SEP> H.263
<tb> [7:6]
<tb> 2'b00 <SEP> interdit <SEP> interdit <SEP> interdit <SEP> interdit
<tb>
Figure img01570001
<tb> 2'b01 <SEP> interdit <SEP> zone <SEP> interdit <SEP> interdit
<tb> <SEP> supérieure
<tb> 2'b10 <SEP> interdit <SEP> zone <SEP> interdit <SEP> interdit
<tb> <SEP> inférieure
<tb> 2'bll <SEP> trame <SEP> trame <SEP> trame <SEP> trame
<tb> 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
Figure img01570002
<tb> Octet <SEP> / <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> <SEP> 0 <SEP>
<tb> <SEP> Bit
<tb> Octetl <SEP> VSF <SEP> AS <SEP> IVF <SEP> CMV <SEP> FPFD <SEP> TFF <SEP> IDP
<tb> <SEP> CPM <SEP> AP
<tb> # 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
Figure img01580001
<tb> <SEP> MPEG-1
<tb> Octet <SEP> / <SEP> Bit <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> <SEP> Octet <SEP> 2 <SEP> Réservé <SEP> full <SEP> pel <SEP> forward <SEP> vector <SEP> forward <SEP> f <SEP> code
<tb> <SEP> Octet <SEP> 3 <SEP> Réservé <SEP> full <SEP> pel~backward~vector <SEP> backward <SEP> f <SEP> code
<tb> <SEP> MPEG-2
<tb> Octet <SEP> / <SEP> Bit <SEP> 7 <SEP> [ <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> O <SEP>
<tb> Octet <SEP> 2 <SEP> forward <SEP> vertical <SEP> f <SEP> code <SEP> forward <SEP> horizontal <SEP> f <SEP> code
<tb> octet <SEP> 3 <SEP> backward <SEP> vertical <SEP> f <SEP> code <SEP> backward <SEP> horizontal <SEP> f <SEP> code
<tb> 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
Figure img01590001
<tb> Position <SEP> Nom <SEP> Lecture <SEP> / <SEP> Description
<tb> <SEP> Bit <SEP> Drapeau <SEP> Ecriture
<tb> <SEP> o <SEP> BP <SEP> EN <SEP> L/E <SEP> Validation <SEP> traitement <SEP> BP
<tb> <SEP> 1 <SEP> SOFTPESET <SEP> L <SEP> Remise <SEP> à <SEP> l'état <SEP> initial <SEP> logiciel
<tb> <SEP> BP
<tb> <SEP> 2 <SEP> PAUSE <SEP> L <SEP> Gel <SEP> traitement <SEP> BP
<tb> <SEP> 3 <SEP> DETECT~START~ <SEP> L <SEP> Détecter <SEP> code <SEP> départ <SEP> suivant
<tb> <SEP> CODE
<tb> <SEP> 4 <SEP> STEP <SEP> L <SEP> Traitement <SEP> mode <SEP> étape <SEP> BP
<tb> <SEP> 5 <SEP> CTX <SEP> 5WITCH <SEP> L <SEP> Demande <SEP> changement <SEP> contexte
<tb> <SEP> 6 <SEP> CTX <SEP> MODE <SEP> L <SEP> Mode <SEP> changement <SEP> contexte
<tb> <SEP> 7 <SEP> CTX <SEP> RELOAD <SEP> L <SEP> Demande <SEP> rechargement <SEP> contexte
<tb> <SEP> 8 <SEP> ERR <SEP> HANDLE <SEP> MODE <SEP> L <SEP> Mode <SEP> manipulation <SEP> erreur
<tb> <SEP> 9 <SEP> - <SEP> <SEP> - <SEP> <SEP> Réservé
<tb> <SEP> 10 <SEP> Réservé
<tb> <SEP> 15
<tb> <SEP> 16 <SEP> NO~MBS <SEP> [0] <SEP> L <SEP> Nombre <SEP> de <SEP> macro-blocs <SEP> à <SEP> coder <SEP> dans
<tb> <SEP> la <SEP> tranche <SEP> courante <SEP> ou <SEP> GOB
<tb> <SEP> 31 <SEP> NO <SEP> MBS(15)
<tb>
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
Figure img01620001
<tb> Position <SEP> Nom <SEP> Lecture <SEP> / <SEP> Description
<tb> <SEP> Bit <SEP> Drapeau <SEP> Ecriture
<tb> <SEP> 0 <SEP> IBUFO~DONE <SEP> E <SEP> IBUFO <SEP> vide
<tb> <SEP> 1 <SEP> IFUB1 <SEP> DONE <SEP> E <SEP> IBUF1 <SEP> vide
<tb> <SEP> 2 <SEP> OBUFO <SEP> FULL <SEP> E <SEP> IBUFO <SEP> plein
<tb> <SEP> 3 <SEP> OBUF1 <SEP> FULL <SEP> E <SEP> IBUF1 <SEP> plein
<tb> <SEP> 4 <SEP> BP <SEP> DONE <SEP> E <SEP> Traitement <SEP> BP <SEP> effectué
<tb> <SEP> 5 <SEP> CTx <SEP> SW <SEP> DONE <SEP> E <SEP> Prêt <SEP> pour <SEP> changement <SEP> contexte
<tb> <SEP> 6 <SEP> CTx <SEP> RELOAD <SEP> DONE <SEP> E <SEP> Rechargement <SEP> contexte <SEP> effectué
<tb> <SEP> 7 <SEP> - <SEP> <SEP> - <SEP> réservé
<tb> <SEP> 8 <SEP> BP <SEP> ERR <SEP> E <SEP> Conditions <SEP> erreur <SEP> BP
<tb> <SEP> 9
<tb> <SEP> - <SEP> - <SEP> - <SEP> réservé
<tb> <SEP> 15
<tb> <SEP> 16 <SEP> IBUF0 <SEP> FULL <SEP> L/E <SEP> Tampon <SEP> 0 <SEP> entrée <SEP> BP <SEP> plein
<tb> <SEP> 17 <SEP> IBUF1 <SEP> FULL <SEP> L/E <SEP> Tampon <SEP> 1 <SEP> entrée <SEP> BP <SEP> plein
<tb> <SEP> 18 <SEP> OBUF0 <SEP> DONE <SEP> L/E <SEP> Tampon <SEP> 0 <SEP> sortie <SEP> BP <SEP> vide
<tb> <SEP> 19 <SEP> OBUF1 <SEP> DONE <SEP> L/E <SEP> Tampon <SEP> 1 <SEP> sortie <SEP> BP <SEP> vide
<tb> <SEP> 20 <SEP> VALID~BIT~POS[2:0] <SEP> L/E <SEP> Position <SEP> Bit <SEP> parmi <SEP> données
<tb> <SEP> - <SEP> stockées <SEP> à <SEP> VALID~BYTE~ADR <SEP> d'où
<tb> <SEP> 22 <SEP> le <SEP> traitement <SEP> suivant <SEP> débute
<tb> <SEP> 23 <SEP> - <SEP> - <SEP> réservé
<tb> <SEP> 24 <SEP> E
<tb> <SEP> - <SEP> BP~ERR~CODE!7:O] <SEP> Code <SEP> erreur <SEP> BP
<tb> <SEP> 31
<tb>
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
Figure img01660001
<tb> Octet <SEP> / <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> <SEP> Bit
<tb> Octet <SEP> 0 <SEP> VMA
<tb> <SEP> GRNO
<tb> Octet <SEP> 1 <SEP> HMA
<tb> <SEP> MBPS
<tb> Octet <SEP> 2 <SEP> MT <SEP> DT <SEP> MB <SEP> MF <SEP> Q <SEP> P <SEP> I
<tb> <SEP> LF
<tb> <SEP> M4
<tb> Octet <SEP> 3 <SEP> Réservé <SEP> Q <SEP> SCALE
<tb> Octet <SEP> 4 <SEP> CBP <SEP> 1 <SEP> CBP <SEP> 0 <SEP>
<tb> Octet <SEP> 5 <SEP> Réservé <SEP> CBP <SEP> 1
<tb> Octet <SEP> 6 <SEP> Réservé <SEP> FID <SEP> | <SEP> LCI
<tb> Octet <SEP> 7 <SEP> Réservé
<tb> Octet <SEP> 8 <SEP> MBA~INC
<tb> Octet <SEP> 9 <SEP> sortie <SEP> seulement)
<tb> Octet <SEP> 10 <SEP> PRE~DC~Y
<tb> Octet <SEP> 11 <SEP> (sortie <SEP> seulement)
<tb> Octet <SEP> 12 <SEP> PRE~DE~Cb
<tb> Octet <SEP> 13 <SEP> (sortie <SEP> seulement)
<tb> Octet <SEP> 14 <SEP> PRE~DC~Cr
<tb> octet <SEP> 15 <SEP> (sortie <SEP> seulement)
<tb>
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
Figure img01680001
<tb> <SEP> Code <SEP> Type <SEP> motion~vector~count <SEP> <SEP> mv~format <SEP> <SEP> dmv <SEP>
<tb> <SEP> Prédiction
<tb> 00 <SEP> Réservé
<tb> <SEP> 01 <SEP> base <SEP> zone <SEP> 2 <SEP> zone <SEP> 0
<tb> <SEP> 10 <SEP> base <SEP> trame <SEP> 1 <SEP> trame <SEP> 0
<tb> <SEP> 10 <SEP> base <SEP> trame <SEP> 1 <SEP> trame <SEP> O <SEP>
<tb> <SEP> 11 <SEP> prime <SEP> double <SEP> 1 <SEP> zone <SEP> 1
<tb>
TABLEAU 35
Signification de field~motion~type
Figure img01680002
<tb> Code <SEP> Type <SEP> motion~vector~count <SEP> mv~format <SEP> dmv
<tb> <SEP> Prédiction <SEP>
<tb> 00 <SEP> Réservé
<tb> 01 <SEP> base <SEP> zone <SEP> 1 <SEP> zone <SEP> 0
<tb> 10 <SEP> 16x8 <SEP> MC <SEP> 2 <SEP> zone <SEP> O <SEP>
<tb> 11 <SEP> prime <SEP> double <SEP> 1 <SEP> zone <SEP> = <SEP> 1
<tb> 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
Figure img01720001
<tb> Octet <SEP> / <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> <SEP> Bit
<tb> Octet <SEP> 0 <SEP> Premier <SEP> vecteur <SEP> mouvement <SEP> avance <SEP> FS0
<tb> Octet <SEP> 1 <SEP> Composante <SEP> horizontale
<tb> Octet <SEP> 2 <SEP> Premier <SEP> vecteur <SEP> mouvement <SEP> avance
<tb> Octet <SEP> Composante <SEP> verticale
<tb> Octet <SEP> 4 <SEP> Premier <SEP> vecteur <SEP> mouvement <SEP> recul <SEP> FS1
<tb> Octet <SEP> 5 <SEP> Composante <SEP> horizontale
<tb> Octet <SEP> 6 <SEP> Premier <SEP> vecteur <SEP> mouvement <SEP> recul
<tb> Octet <SEP> 7 <SEP> Composante <SEP> verticale
<tb> Octet <SEP> 8 <SEP> Second <SEP> vecteur <SEP> mouvement <SEP> avance <SEP> FS2
<tb> octet <SEP> 9 <SEP> Composante <SEP> horizontale
<tb> Octet <SEP> 10 <SEP> Second <SEP> vecteur <SEP> mouvement <SEP> avance
<tb> Octet <SEP> 11 <SEP> Composante <SEP> verticale
<tb> Octet <SEP> 12 <SEP> Second <SEP> vecteur <SEP> mouvement <SEP> recul <SEP> FS3
<tb> Octet <SEP> 13 <SEP> Composante <SEP> horizontale
<tb> Octet <SEP> 14 <SEP> Second <SEP> vecteur <SEP> mouvement <SEP> recul
<tb> Octet <SEP> 15 <SEP> Composante <SEP> verticale
<tb>
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
Figure img01730001
<tb> Octet <SEP> / <SEP> 7 <SEP> 6 <SEP> 5 <SEP> 4 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 0
<tb> <SEP> Bit
<tb> Octet <SEP> 0 <SEP> Vecteur <SEP> mouvement <SEP> avance
<tb> octet <SEP> 1 <SEP> Composante <SEP> horizontale
<tb> Octet <SEP> 2 <SEP> Vecteur <SEP> mouvement <SEP> avance
<tb> Octet <SEP> 3 <SEP> Composante <SEP> verticale
<tb> Octet <SEP> 4 <SEP> non <SEP> utilisé <SEP> DMV <SEP> H
<tb> Octet <SEP> 5
<tb> Octet <SEP> 6 <SEP> non <SEP> utilisé <SEP> DP:V <SEP> <SEP> V
<tb> Octet <SEP> 7
<tb> Octets <SEP> Réservé
<tb> <SEP> 8-15
<tb>
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
Figure img01740001
<tb> <SEP> Ordre <SEP> MF <SEP> = <SEP> 1 <SEP> et <SEP> M4 <SEP> = <SEP> 0 <SEP> MF <SEP> = <SEP> 1 <SEP> et <SEP> M1 <SEP> = <SEP> 1
<tb> <SEP> Octet
<tb> Octet <SEP> O <SEP> Vecteur <SEP> mouvement <SEP> avance <SEP> Vecteur <SEP> mouvement <SEP> premier <SEP> bloc
<tb> <SEP> Composante <SEP> horizontale <SEP> Composante <SEP> horizontale
<tb> Octet <SEP> 1 <SEP> Vecteur <SEP> mouvement <SEP> avance <SEP> Vecteur <SEP> mouvement <SEP> premier <SEP> bloc
<tb> <SEP> Composante <SEP> verticale <SEP> Composante <SEP> verticale
<tb> Octet <SEP> 2 <SEP> Vecteur <SEP> mouvement <SEP> B-Blocs <SEP> Vecteur <SEP> mouvement <SEP> deuxième <SEP> bloc
<tb> <SEP> Composante <SEP> horizontale <SEP> Composante <SEP> horizontale
<tb> <SEP> (existe <SEP> si <SEP> MB <SEP> = <SEP> 1)
<tb> Octet <SEP> 3 <SEP> Vecteur <SEP> mouvement <SEP> B-Blocs <SEP> Vecteur <SEP> mouvement <SEP> deuxième <SEP> bloc
<tb> <SEP> Composante <SEP> verticale <SEP> Composante <SEP> verticale
<tb> <SEP> (existe <SEP> si <SEP> MB <SEP> = <SEP> 1)
<tb> Octet <SEP> 4 <SEP> Réservé <SEP> Vecteur <SEP> mouvement <SEP> troisième
<tb> <SEP> bloc
<tb> <SEP> Composante <SEP> horizontale
<tb> Octet <SEP> 5 <SEP> Réservé <SEP> Vecteur <SEP> mouvement <SEP> troisième
<tb> <SEP> bloc
<tb> <SEP> Composante <SEP> verticale
<tb> Octet <SEP> 6 <SEP> Réservé <SEP> Vecteur <SEP> mouvement <SEP> quatrième
<tb> <SEP> bloc
<tb> <SEP> Composante <SEP> horizontale
<tb> Octet <SEP> 7 <SEP> Réservé <SEP> Vecteur <SEP> mouvement <SEP> quatrième
<tb> <SEP> bloc
<tb> <SEP> Composante <SEP> verticale
<tb> Octet <SEP> 8 <SEP> Réservé <SEP> Vecteur <SEP> mouvement <SEP> B-Bloc
<tb> <SEP> Composante <SEP> horizontale
<tb> <SEP> (existe <SEP> si <SEP> MB <SEP> = <SEP> 1)
<tb> Octet <SEP> 9 <SEP> Réservé <SEP> Vecteur <SEP> mouvement <SEP> B-Bloc
<tb> <SEP> Composante <SEP> verticale
<tb> <SEP> (existe <SEP> si <SEP> MB <SEP> = <SEP> 1)
<tb> Octets <SEP> Réservé <SEP> Réservé
<tb> <SEP> 10-15
<tb> 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
Figure img01750001
<tb> Standard <SEP> Longueur <SEP> maximale <SEP> Nombre <SEP> d'octets <SEP> pour <SEP> Nombre <SEP> d'éléments
<tb> <SEP> des <SEP> bits <SEP> pour <SEP> le <SEP> un <SEP> cycle <SEP> de <SEP> d'image <SEP> pour <SEP> un
<tb> <SEP> niveau <SEP> de <SEP> | <SEP> lecture/écriture <SEP> de <SEP> cycle <SEP> de
<tb> <SEP> quantification <SEP> | <SEP> IOBUS <SEP> lecture/écriture <SEP> de
<tb> <SEP> IOBUS
<tb> <SEP> MPEG-1 <SEP> 9 <SEP> bits <SEP> 2 <SEP> 2
<tb> <SEP> MPEG-2 <SEP> 12 <SEP> bits <SEP> 2 <SEP> 2
<tb> <SEP> H.261 <SEP> 8 <SEP> bits <SEP> 1 <SEP> 4
<tb> <SEP> H.263 <SEP> 8 <SEP> bits <SEP> 1 <SEP> 4
<tb>
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
Figure img01760001
<tb> <SEP> Ordre <SEP> MPEG-1 <SEP> et <SEP> MPEG-2 <SEP> H.261 <SEP> et <SEP> H.263
<tb> <SEP> Octet
<tb> Octet <SEP> 0 <SEP> Coefficient <SEP> 0 <SEP> Coefficient <SEP> 0 <SEP>
<tb> Octet <SEP> 1 <SEP> Coefficient <SEP> 1
<tb> Octet <SEP> 2 <SEP> Coefficient <SEP> 1 <SEP> Coefficient <SEP> 2
<tb> Octet <SEP> 3 <SEP> Coefficient <SEP> 3
<tb> Octet <SEP> 4 <SEP> Coefficient <SEP> 2 <SEP> Coefficient <SEP> 4
<tb> Octet <SEP> 5 <SEP> Coefficient <SEP> 5
<tb> Octet <SEP> 6 <SEP> Coefficient <SEP> 3 <SEP> Coefficient <SEP> 6
<tb> Octet <SEP> 7 <SEP> Coefficient <SEP> 7
<tb> Octet <SEP> 8 <SEP> Coefficient <SEP> 4 <SEP> Coefficient <SEP> 8
<tb> Octet <SEP> 9 <SEP> Coefficient <SEP> 9
<tb> octet <SEP> 10 <SEP> Coefficient <SEP> 5 <SEP> Coefficient <SEP> 10
<tb> Octet <SEP> 11 <SEP> Coefficient <SEP> 11
<tb> Octet <SEP> 12 <SEP> Coefficient <SEP> 6 <SEP> Coefficient <SEP> 12
<tb> Octet <SEP> 13 <SEP> Coefficient <SEP> 13
<tb> Octet <SEP> 14 <SEP> Coefficient <SEP> 7 <SEP> Coefficient <SEP> 14
<tb> Octet <SEP> 15 <SEP> Coefficient <SEP> 15
<tb> 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
Figure img01810001
<tb> <SEP> N <SEP> Standard <SEP> Description <SEP> Grandeur <SEP> ROM
<tb> <SEP> Table <SEP> (bits)
<tb> 1 <SEP> MPEG-1 <SEP> & <SEP> 2, <SEP> det~coeff~next, <SEP> <SEP> TCOEFF <SEP> 144 <SEP> X <SEP> 12
<tb> <SEP> H.261
<tb> 2 <SEP> H.263 <SEP> TCOEFF <SEP> 102 <SEP> x <SEP> 12
<tb> 3 <SEP> MPEG-1 <SEP> & <SEP> 2, <SEP> motion <SEP> vector <SEP> code <SEP> 17 <SEP> x <SEP> 12
<tb> <SEP> H.261, <SEP> H.263 <SEP> macroblock <SEP> address <SEP>
<tb> <SEP> increment
<tb> 4 <SEP> MPEG-1 <SEP> & <SEP> 2, <SEP> coded <SEP> blockgattern <SEP> 32 <SEP> x <SEP> 12
<tb> <SEP> H.261
<tb> 5 <SEP> MPEG-1 <SEP> & <SEP> 2, <SEP> macroblock~type <SEP> et <SEP> MCBPC <SEP> 18 <SEP> x <SEP> 12
<tb> <SEP> H.261, <SEP> H.263
<tb> 6 <SEP> MPEG-1 <SEP> & <SEP> 2 <SEP> dct <SEP> dc <SEP> size <SEP> for <SEP> y <SEP> et <SEP> CbCr <SEP> 12 <SEP> x <SEP> 12
<tb> 7 <SEP> H.263 <SEP> CBPY <SEP> pour <SEP> trames <SEP> intra <SEP> et <SEP> 8 <SEP> x <SEP> 12
<tb> <SEP> inter
<tb> Total <SEP> 333 <SEP> x <SEP> 12
<tb>
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
Figure img01820001
<tb> <SEP> N <SEP> Standard <SEP> Description <SEP> Grandeur <SEP> de <SEP> ROM
<tb> <SEP> de <SEP> Table <SEP> (bits)
<tb> 1 <SEP> MPEG1 <SEP> & <SEP> 2, <SEP> dct~coeff~next, <SEP> TCOEFF <SEP> 156 <SEP> x <SEP> 12
<tb> <SEP> H. <SEP> 261
<tb> 2 <SEP> H.263 <SEP> TCOEFF <SEP> 98 <SEP> x <SEP> 12
<tb> 3 <SEP> MPEG1 <SEP> & <SEP> 2, <SEP> motion~vector~code, <SEP> 35 <SEP> x <SEP> 12
<tb> <SEP> H.261, <SEP> H.263 <SEP> macroblock~adress~increment
<tb> 4 <SEP> MPEG1 <SEP> & <SEP> 2, <SEP> coded~block~pattern <SEP> 64 <SEP> x <SEP> 12
<tb> <SEP> H.261
<tb> 5 <SEP> MPEG1 <SEP> & <SEP> 2, <SEP> macroblock~type <SEP> 22 <SEP> x <SEP> 12
<tb> <SEP> H.261
<tb> 6 <SEP> H.263 <SEP> MCBPC <SEP> 28 <SEP> x <SEP> 12
<tb> 7 <SEP> MPEG1 <SEP> & <SEP> 2 <SEP> dct <SEP> dc <SEP> size <SEP> pour <SEP> Y <SEP> and <SEP> CbCr <SEP> 16 <SEP> x <SEP> 12
<tb> 8 <SEP> H.263 <SEP> CBPY <SEP> for <SEP> trames <SEP> intra <SEP> et <SEP> 16 <SEP> x <SEP> 12
<tb> <SEP> inter
<tb> Total <SEP> 435 <SEP> x <SEP> 121
<tb>
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
Figure img01830001
<tb> Type <SEP> code <SEP> de <SEP> Huffman <SEP> Cycles <SEP> Traitement <SEP> Cycles <SEP> Traitement <SEP> Horloge
<tb> <SEP> pour <SEP> MPEG-1 <SEP> & <SEP> 2 <SEP> pour <SEP> H.261 <SEP> & <SEP> Traitement
<tb> <SEP> H.263
<tb> dct <SEP> 4-5 <SEP> 5-6 <SEP> 40 <SEP> MHz
<tb> coefficient <SEP> dc
<tb> différentiel
<tb> dct <SEP> ac <SEP> 1 <SEP> 2
<tb> coefficient
<tb> avec <SEP> complément
<tb> Code <SEP> échappement <SEP> 2 <SEP> 3
<tb> plus <SEP> code <SEP> longueur
<tb> fixe
<tb> Code <SEP> end <SEP> of <SEP> block <SEP> 1 <SEP> 2
<tb> Autres <SEP> codes <SEP> de <SEP> 1 <SEP> 1
<tb> Huffman
<tb>
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
Figure img01960001
<tb> Spec <SEP> Table <SEP> Description <SEP> Gamme <SEP> Bits
<tb> MPEG <SEP> 14,15 <SEP> Coefficients <SEP> DCT <SEP> OxOOO-Ox08F <SEP> 144x12
<tb> H.261 <SEP> 5 <SEP> TCOEF <SEP> 0x000-Ox06E
<tb> H.263 <SEP> 12 <SEP> TCOEF <SEP> OxO9A-Ox0FF <SEP> 102x12
<tb> H.263 <SEP> 9 <SEP> CBPY <SEP> 0x090-0x097 <SEP> 8x12
<tb> MPEG <SEP> 2, <SEP> 3, <SEP> 4 <SEP> Type <SEP> macro-bloc <SEP> 0x000-0x10F <SEP> 19,5x12
<tb> H.261 <SEP> 2 <SEP> MTYPE <SEP> 0xl00-OxlOF <SEP>
<tb> H.263 <SEP> 3,4 <SEP> MCBPC <SEP> 0x098-OxO99, <SEP>
<tb> <SEP> Ox100-0xlOF, <SEP>
<tb> <SEP> Ox6F-OxlBO <SEP>
<tb> <SEP> (BAS)
<tb> MPEG <SEP> 1,10 <SEP> MB <SEP> reçu, <SEP> Code <SEP> mouvement <SEP> 0x1l0-0xllF, <SEP> 17x12 <SEP>
<tb> <SEP> 0x0E2
<tb> H.261 <SEP> 1,3 <SEP> ADR <SEP> MB, <SEP> Code <SEP> mouvement <SEP> OxllO-OxllF, <SEP>
<tb> <SEP> 0x0E2
<tb> H.263 <SEP> 10 <SEP> MVD <SEP> 0x110-OxlîF, <SEP>
<tb> <SEP> OxOE2
<tb> MPEG <SEP> 9 <SEP> configuration <SEP> MB <SEP> Ox120-0x13F <SEP> 32x12
<tb> H.261 <SEP> 4 <SEP> CBP <SEP> 0x120-Ox13F
<tb> MPEG <SEP> 12,13 <SEP> Grandeur <SEP> DC <SEP> DCT <SEP> 0X140-OX14B <SEP> 12x12
<tb> Total <SEP> = <SEP> <SEP> 332x12
<tb>
Tableau 1 : Topographie tables ROM décodage VLC
Figure img01960002
<tb> Spec <SEP> Table <SEP> Description <SEP> Gamme <SEP> Bits
<tb> MPEG <SEP> 14,15 <SEP> Coefficients <SEP> DCT <SEP> 0x1ED-0x288 <SEP> 156x12
<tb> H.261 <SEP> 5 <SEP> TCOEF <SEP> 0x1ED-0x25E
<tb> H.263 <SEP> 12 <SEP> TCOEF <SEP> 0x289-0x2E9, <SEP> 98x12
<tb> <SEP> 0x1EC
<tb>
Figure img01970001
<tb> Spec <SEP> Table <SEP> Description <SEP> Gamme <SEP> Bits
<tb> H.263 <SEP> 9 <SEP> CBPY <SEP> 0x19B-0x1AA <SEP> 16x12
<tb> MPEG <SEP> 2, <SEP> 3, <SEP> 4 <SEP> Type <SEP> macro-bloc <SEP> 0x2EA-0x2FF <SEP> 22x12
<tb> H.261 <SEP> 2 <SEP> MTYPE <SEP> 0x2EA-0x2FF
<tb> H.263 <SEP> 3,4 <SEP> MCBPC <SEP> 0x14C-0x167 <SEP> 28x12
<tb> MPEG <SEP> 1,10 <SEP> MB <SEP> re <SEP> u, <SEP> Code <SEP> mouvement <SEP> 0x178-0x19A <SEP> 35x12
<tb> H.261 <SEP> 1,3 <SEP> ADR <SEP> MB,Mouvement <SEP> Code <SEP> 0x178-0x19A
<tb> H.263 <SEP> 10 <SEP> MVD <SEP> 0x178-0x19A
<tb> MPEG <SEP> 9 <SEP> Configuration <SEP> MB <SEP> 0x1AB-0x1EA <SEP> 64x12
<tb> H.261 <SEP> 4 <SEP> CBP <SEP> 0x1AB-0x1EA <SEP>
<tb> MPEG <SEP> 12,13 <SEP> Grandeur <SEP> DC <SEP> DCT <SEP> 0x168-0x177 <SEP> 16x12
<tb> Total <SEP> 423x12
<tb> Notes <SEP> 1) <SEP> Table <SEP> 12/H.263 <SEP> a <SEP> un <SEP> codage <SEP> spécial <SEP> pour <SEP> 4 <SEP> codes <SEP> de <SEP> VLC
<tb> <SEP> 2) <SEP> Trois <SEP> emplacements <SEP> sont <SEP> réservés
<tb>
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 < < 1)
|(-even~bit) ;
(validation~pair == 1)
valeur~incrément = (Valeur~table~ROM < < 1)
|(-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
Figure img02010001
<tb> BIT <SEP> 5 <SEP> BIT <SEP> 4 <SEP> J <SEP> BIT <SEP> 3 <SEP> BIT <SEP> 2 <SEP> J <SEP> BIT <SEP> 1 <SEP> BIT <SEP> 0 <SEP>
<tb> Réservé <SEP> Q <SEP> FMV <SEP> BMV <SEP> P <SEP> 1
<tb>
Table 3 : Format type de macro-bloc de MPEG
Figure img02010002
<tb> BIT <SEP> 4-2 <SEP> J <SEP> BIT <SEP> 1 <SEP> J <SEP> BIT <SEP> 0 <SEP>
<tb> TYPE <SEP> MB <SEP> CR <SEP> CB
<tb>
Table 4: Format MCBPC de H.263
Figure img02010003
<tb> BIT <SEP> 5 <SEP> BIT <SEP> 4 <SEP> BIT <SEP> 3 <SEP> BIT <SEP> 2 <SEP> BIT <SEP> 1 <SEP> BIT <SEP> 0
<tb> <SEP> FIL <SEP> Q <SEP> MVD <SEP> Réservé <SEP> CBP <SEP> INTRA
<tb>
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
Figure img02020001
<tb> <SEP> PT <SEP> TYPE <SEP> MB <SEP> PB <SEP> M4 <SEP> Q <SEP> MF <SEP> MODE <SEP> P(Y) <SEP> INTRA
<tb> INTER <SEP> 3 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> O <SEP> 1 <SEP> 1
<tb> INTER <SEP> 4 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1
<tb> INTER <SEP> O <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0
<tb> INTER <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0
<tb> INTER <SEP> 2 <SEP> 0 <SEP> 1 <SEP> O <SEP> <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0
<tb> INTER <SEP> 3 <SEP> 0 <SEP> 0 <SEP> O <SEP> <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1
<tb> INTER <SEP> 4 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> O <SEP> <SEP> 0 <SEP> 1 <SEP> 1
<tb> INTER <SEP> O <SEP> 1 <SEP> O <SEP> <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> O <SEP>
<tb> INTER <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0
<tb> INTER <SEP> 2 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0
<tb> INTER <SEP> 3 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1
<tb> INTER <SEP> 4 <SEP> 1 <SEP> O <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1
<tb>
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
Figure img02030001
<tb> <SEP> Bit <SEP> 11-Bit <SEP> 8 <SEP> I <SEP> Bit <SEP> 7-Bit <SEP> 5 <SEP> | <SEP> Bit <SEP> 4-Bit <SEP> O <SEP> J
<tb> Compte <SEP> zéro/un <SEP> Grandeur <SEP> code <SEP> VLC <SEP> Code <SEP> VLC
<tb>
Tableau 7 :Format général de codage
Figure img02030002
<tb> Bit <SEP> 11-Bit <SEP> 8 <SEP> I <SEP> Bit <SEP> 7-Bit <SEP> 5 <SEP> Bit <SEP> 4-Bit <SEP> O <SEP> J
<tb> <SEP> Compte <SEP> zéro/un <SEP> Grandeur <SEP> code <SEP> VLC <SEP> Code <SEP> VLC
<tb>
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.
Figure img02050001
<tb>
DERNIER <SEP> DEROULEMENT <SEP> NIVEAU
<tb> <SEP> O <SEP> O <SEP> 10
<tb> <SEP> O <SEP> O <SEP> 11
<tb> <SEP> 1 <SEP> 0 <SEP> 3
<tb> <SEP> 1 <SEP> 1 <SEP> 2
<tb>
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
Figure img02080001
<tb> <SEP> BIT <SEP> 5 <SEP> BIT <SEP> 4 <SEP> BIT <SEP> 3 <SEP> BIT <SEP> 2 <SEP> BIT <SEP> 1 <SEP> BIT <SEP> O
<tb> Grandeur <SEP> DCT <SEP> MB <SEP> reçu/MC <SEP> Configura- <SEP> CBPY <SEP> Type <SEP> MB <SEP> COEF <SEP> DC
<tb> <SEP> tion <SEP> MB
<tb>
Tableau 10 : Format Type Table VLC~DEC FSM
Mode (9 bits) : Mode d'opération
Figure img02080002
<tb> BIT <SEP> 8 <SEP> BIT <SEP> 7 <SEP> | <SEP> BIT <SEP> 6 <SEP> BIT <SEP> 5 <SEP> | <SEP> BIT <SEP> 4 <SEP> BIT <SEP> 3 <SEP> BIT <SEP> 2 <SEP> BIT <SEP> 1 <SEP> BIT <SEP> O
<tb> H.263 <SEP> Spécification <SEP> Type <SEP> image <SEP> Chromi- <SEP> ler <SEP> DC <SEP> Table <SEP> MB
<tb> <SEP> nance <SEP> 15 <SEP> reçu
<tb>
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
Figure img02090001
<tb> EMPLACEMENT <SEP> VALER <SEP> DEFINITION
<tb> <SEP> BIT <SEP> 2 <SEP> EXTRAIRE <SEP> LSB <SEP> DE <SEP> VLC
<tb> <SEP> BIT <SEP> 1-0 <SEP> 01 <SEP> ECHAPPEMENT
<tb> <SEP> 10 <SEP> FIN <SEP> DE <SEP> BOURRAGE
<tb> <SEP> 11 <SEP> CODE <SEP> DE <SEP> DEPART <SEP> H.263
<tb>
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
Figure img02090002
<tb> BIT <SEP> 13 <SEP> BIT <SEP> 12 <SEP> BIT <SEP> 11 <SEP> BIT <SEP> 10 <SEP> BIT <SEP> 9 <SEP> BIT <SEP> 8 <SEP> BIT <SEP> 7
<tb>
Figure img02100001
<tb> GRANDEUR <SEP> DCT <SEP> MC <SEP> MB <SEP> REÇU <SEP> CONFIGU- <SEP> CBPY <SEP> TYPE <SEP> MB <SEP> COEF <SEP> DCT
<tb> <SEP> RATION
<tb> <SEP> MB
<tb> BIT <SEP> 6 <SEP> BIT <SEP> 5 <SEP> BIT <SEP> 4 <SEP> BIT <SEP> 3 <SEP> BIT <SEP> 2 <SEP> BIT <SEP> 1 <SEP> BIT <SEP> 0
<tb> <SEP> SPECIFICATION <SEP> TYPE <SEP> IMAGE <SEP> CHROMINANCE <SEP> ler <SEP> DC <SEP> TABLE <SEP> 15
<tb>
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

Claims (6)

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.
FR9710439A 1996-08-19 1997-08-18 Procedes et dispositifs pour le traitement de donnees video Expired - Fee Related FR2753031B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US69930396A 1996-08-19 1996-08-19

Publications (2)

Publication Number Publication Date
FR2753031A1 true FR2753031A1 (fr) 1998-03-06
FR2753031B1 FR2753031B1 (fr) 2004-08-20

Family

ID=24808741

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9710439A Expired - Fee Related FR2753031B1 (fr) 1996-08-19 1997-08-18 Procedes et dispositifs pour le traitement de donnees video

Country Status (1)

Country Link
FR (1) FR2753031B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035897B1 (en) * 1999-01-15 2006-04-25 California Institute Of Technology Wireless augmented reality communication system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0606674A1 (fr) * 1992-12-04 1994-07-20 Koninklijke Philips Electronics N.V. Processeur réalisant des opérations uniformes sur des suites de données successives dans des flux de données parallèles
EP0719055A2 (fr) * 1994-12-22 1996-06-26 AT&T Corp. Accomodation du taux de la transmission vidéo dans systèmes de communication multimédia

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0606674A1 (fr) * 1992-12-04 1994-07-20 Koninklijke Philips Electronics N.V. Processeur réalisant des opérations uniformes sur des suites de données successives dans des flux de données parallèles
EP0719055A2 (fr) * 1994-12-22 1996-06-26 AT&T Corp. Accomodation du taux de la transmission vidéo dans systèmes de communication multimédia

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DILEEP BHANKARKAR ET AL: "VAX VECTOR ARCHITECTURE", PROCEEDINGS OF THE ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE. SEATTLE, MAY 28 - 31, 1990, LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, vol. SYMP. 17, 28 May 1990 (1990-05-28), pages 204 - 215, XP000144782, ISBN: 0-8186-2047-1 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035897B1 (en) * 1999-01-15 2006-04-25 California Institute Of Technology Wireless augmented reality communication system

Also Published As

Publication number Publication date
FR2753031B1 (fr) 2004-08-20

Similar Documents

Publication Publication Date Title
JP4290775B2 (ja) ビデオデータ処理方法及び装置
AU2006244646B2 (en) Integrated architecture for the unified processing of visual media
EP1431887A2 (fr) Système et méthode de composition d&#39;un diaporama
US8660181B2 (en) Method of compressing video data and a media player for implementing the method
US20070206682A1 (en) Method And Apparatus For Coding Information
FR2728089A1 (fr) Procede et appareil pour la commande de synchronisation d&#39;objets multimedia dans un moteur mheg
CN101106770A (zh) 一种手机上制作带背景音乐的拍照动画的方法
FR2724243A1 (fr) Systeme de traitement multitaches
CN101262612A (zh) 一种多媒体文件音视频同步播放的系统及方法
FR2707779A1 (fr) Appareil et procédé de traitement de données d&#39;image capables de traiter des données d&#39;image à vitesse élevée.
FR2753031A1 (fr) Procedes et dispositifs pour le traitement de donnees video
FR2780184A1 (fr) Procede et dispositif de decodage d&#39;images, permettant un nombre reduit d&#39;ouvertures de pages-memoire dans le traitement de prediction
FR2780186A1 (fr) Procede et dispositif de decodage d&#39;une image, comprimee notamment selon les normes mpeg, en particulier une image bidirectionnelle
Kim et al. A real-time MPEG encoder using a programmable processor
Ling et al. An efficient controller scheme for MPEG-2 video decoder
EP0747856B1 (fr) Décodeur MPEG
EP1594089A2 (fr) Echelonnage d&#39;un signal vidéo
EP0395507B1 (fr) Système d&#39;émission-réception pour la transmission d&#39;images couleur animées et du son à partir de canaux indépendants
EP0967577B1 (fr) Procédé et dispositif de traitement d&#39;images, comprimées notamment selon les normes MPEG
US6614437B1 (en) Apparatus and method for efficient memory utilization in an electronic system
EP0666537B1 (fr) Circuit de traitement numérique comportant des registres de test
KR20040003148A (ko) 실시간 데이터 전송시스템 및 방법
KR100987252B1 (ko) 비트스트림 데이터 처리를 위한 인터페이스 장치 및 방법
Lee et al. A memory-efficient progressive jpeg decoder
WO2009067528A1 (fr) Procédé et système pour diffuser en continu et restituer des données vidéo sur des unités de traitement de dispositifs mobiles qui ont des capacités de segmentation limitées

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20130430