FR 2756071 A1 19980522 FR 9705377 A 19970430 PROCEDE DE COMPENSATION POUR UNE MEMOIRE DEFECTUEUSE ASSOCIEE A UN DECODEUR Cette invention concerne des procédés de compensation pour des mémoires défectueuses, et elle concerne plus particulièrement un procédé de compensation pour une mémoire défectueuse consistant à sauter des blocs défectueux dans une unité de mémoire vive, telle qu'une mémoire tampon associée au décodage dans un système de lecteur de disque optique, de façon que l'écriture de données dans la mémoire tam- pon soit dirigée seulement vers des blocs non défectueux et saute les blocs qui ont des cellules défectueuses. La figure 1 montre un système de lecteur de disque optique 100 classique, qui est utilisé pour entraîner un disque optique 60 et pour lire des données enregistrées sur ce disque, qui peut être par exemple un disque compact du type CD-Audio enregistrant de l'information audio nu- mérique, ou un disque du type CD-ROM (mémoire morte à disque com- pact) qui enregistre divers logiciels et diverses données. Ce système de lecteur 100 comprend un processeur de signal analogique 40 et un pro- cesseur de signal numérique 50 qui sont utilisés pour la commande de la vitesse du moteur qui entraîne le disque optique 60, et pour le décodage de premier étage et le décodage de second étage des données qui sont lues sur le disque optique 60. En outre, un décodeur 10 est utilisé dans le décodage de troisième étage des données, et également pour la com- mande d'une interface 80 assurant la liaison avec un ordinateur hôte (non représenté). Le décodeur 10 est en outre connecté à une mémoire tampon 20 qui remplit à la fois la fonction d'une zone d'enregistrement temporaire pour les données décodées, et la fonction d'une antémémoire pour l'ordinateur hôte. Un microcontrôleur 30 et un module de micropro- gramme 70, en combinaison, commandent l'ensemble de l'opération de lecture et de décodage des données sur le disque optique 60. Si le dis- que optique 60 est un disque CD-Audio, les données sont décodées après avoir été traitées par le processeur de signal analogique 40 et le processeur de signal numérique 50; les données décodées sont ensuite transférées vers un convertisseur numérique-analogique 90 pour être converties sous une forme analogique qui peut être diffusée par un haut- parleur (non représenté). Si le disque optique 60 est un disque CD-ROM, l'information de sortie du processeur de signal numérique 50 doit subir un traitement supplémentaire par le décodeur 10, pour un processus de dé- codage de troisième étage, pour décoder les données. L'information de sortie du décodeur 10 est ensuite émise vers un ordinateur hôte qu'un ordinateur personnel ou un ordinateur portable au format "agenda" (non représenté). Dans un procédé classique, lorsque l'ordinateur hôte émet un signal de demande de données, le décodeur 10 émet un signal d'inter- ruption et il dirige simultanément le signal de demande de données vers le microcontrôleur 30. Le signal de demande de données indique au mi- crocontrôleur 30 l'emplacement (secteurs) et la longueur des données qui sont demandées. Le microcontrôleur 30 commande ensuite l'opération de lecture sur le disque optique 60 pour lire sur ce dernier les données de- mandées. Les données qui sont lues sur le disque optique 60 sont en- suite émises vers le décodeur 10, par l'intermédiaire du processeur de signal analogique 40 et du processeur de signal numérique 50. A ce mo- ment, le microcontrôleur 30 émet un signal de demande vers le décodeur 10 pour demander à ce dernier d'accepter les données. Le décodeur 10 dirige tout d'abord les données vers la mémoire tampon 20, et il effectue ensuite un processus de décodage sur ces données. Les données déco- dées sont ensuite réenregistrées dans la mémoire tampon 20. Après ceci, le microcontrôleur 30 émet un signal de demande de transfert vers le dé- codeur 10, pour demander au décodeur 10 de transférer les données dé- codées vers l'ordinateur hôte (non représenté), par l'intermédiaire de l'interface 80. Ce qui précède décrit un processus classique pour décoder les données qui sont lues sur le disque optique 60. Dans ce système de lec- teur 100, la mémoire tampon 20 peut être une mémoire vive dynamique (ou DRAM) ou une mémoire vive statique (ou SRAM). Il est nécessaire que la mémoire DRAM ou SRAM ait une fiabilité élevée, pour que les données décodées soient exactes. Cependant, les mémoires DRAM et SRAM présentent occasionnellement des cellules défectueuses (chaque cellule enregistrant un bit de données), ce qui fait que les données déco- dées seront enregistrées de manière erronée dans ces mémoires. Les données qui sont reçues par l'ordinateur hôte pourraient ainsi être erro- nées et impropres au traitement. Un but principal de la présente invention est donc de procurer un procédé de compensation pour une mémoire défectueuse associée au décodage dans un système de lecteur de disque optique. Conformément au but précédent et à d'autres buts de la pré- sente invention, cette dernière procure un nouveau procédé pour accep- ter une mémoire défectueuse associée au décodage dans un système de lecteur de disque optique. Selon un aspect de l'invention, le procédé comprend les étapes suivantes: (1) on effectue un balayage de l'unité de mémoire pour contrôler si des blocs quelconques dans celle-ci sont défectueux; (2) on enregistre les blocs défectueux dans une table de blocs dé- fectueux; (3) on contrôle si des données quelconques doivent être écrites dans la mémoire tampon; dans l'affirmative, on sélectionne un bloc dans la mémoire tampon pour sauvegarder les données; (4) on effectue un contrôle pour déterminer si le bloc sélectionné au moment présent est l'un des blocs défectueux dans la table de blocs dé- fectueux; dans l'affirmative, on saute à l'étape (3); dans le cas contraire, on écrit les données dans le bloc sélectionné au moment présent et on saute ensuite à l'étape (3), jusqu'à ce que toutes les données soient écrites dans des blocs non défectueux dans la mémoire tampon. Selon un autre aspect de l'invention, le procédé comprend les étapes suivantes: (1) on effectue un balayage de l'unité de mémoire pour contrôler si des blocs quelconques dans celle-ci sont défectueux; (2) on enregistre les blocs défectueux dans un ensemble de registres; (3) on convertit une série d'entrée de numéros de blocs demandés, au moyen d'un circuit de saut de blocs défectueux, en une série de sortie de numéros de blocs, dans laquelle les numéros de tous les blocs défec- tueux dans la mémoire tampon sont sautés; et (4) on traite la série de sortie de numéros de blocs au moyen d'un circuit de calcul, pour générer un signal d'adresse pour accéder à la mé- moire tampon. D'autres caractéristiques et avantages de l'invention seront mieux compris à la lecture de la description qui va suivre de modes de réalisation préférés, données à titre d'exemples non limitatifs. La suite de la description se réfère aux dessins annexés dans lesquels: t La figure 1 est un schéma synoptique d'un système de lecteur de disque optique caractéristique; La figure 2 est un organigramme représentant les étapes de procédure du procédé conforme à la présente invention, pour la compen- sation relative à une mémoire défectueuse associée au décodage dans le système de lecteur de disque optique de la figure 1; La figure 3 est un schéma synoptique d'un circuit de décodage conçu conformément au procédé de l'invention; et La figure 4 est un schéma synoptique détaillé d'un circuit de saut de blocs défectueux qui est employé dans le circuit de décodage de la figure 3. Sur un disque optique, la zone d'enregistrement est habituelle- ment divisée en un ensemble de secteurs pour enregistrer des données dans ceux-ci. De façon caractéristique, chaque secteur est conçu de fa- çon à avoir une longueur de 2352 octets, qui sont utilisés pour enregis- trer 2048 octets de données, 12 octets de codes de commande de syn- chronisation, 4 octets d'en-têtes, et 288 octets de codes de correction d'erreurs. De façon correspondante, la mémoire tampon pour l'enregis- trement temporaire des données non décodées provenant du disque opti- que est divisée en un ensemble de blocs, chacun d'eux étant destiné à enregistrer un secteur de données provenant du disque optique. Par exemple, chaque bloc peut avoir une longueur de 3 K octets (1 K = 1024), permettant d'enregistrer la totalité des 2352 octets de données et de codes provenant d'un secteur du disque optique; ou bien il peut avoir une longueur de 2 K octets, de façon à enregistrer seulement les 2048 octets de données provenant d'un secteur. Si la capacité globale de la mémoire tampon est de 256 K octets et si chaque bloc a une longueur de 3 K octets, la mémoire tampon peut être divisée en 85 blocs, qui sont par exemple désignés respectivement par Bloc 0, Bloc 1,..., Bloc 84. Lorsque des blocs quelconques dans la mémoire tampon ont des cellules défectueuses, le procédé conforme à la présente invention permet de les détecter et de les sauter. Les étapes de procédure de ce procédé sont représentées dans l'organigramme de la figure 2. En se référant à la figure 2, conjointement à la figure 1, on note que la première étape 200 représente la phase d'initialisation au moment o le système de lecteur 100 est mis sous tension. A l'étape 201 sui- vante, le décodeur 10, sous la commande du microcontrôleur 30, balaie la mémoire tampon 20 de façon à détecter si celle-ci contient des cellules défectueuses. La détection de cellules défectueuses dans la mémoire tampon 20 peut être réalisée par un processus de lecture/écriture/ comparaison qui est une technique classique largement utilisée, ce qui fait que sa description ne sera pas détaillée davantage. Le décodeur 10 comporte plusieurs registres qui permettent au microcontrôleur 30 de spécifier des conditions dans ceux-ci, de façon à générer des signaux de commande de lecture/écriture désirés pour la mémoire tampon 20. Le ta- bleau suivant montre un exemple des conditions dans les registres du décodeur 10. Tableau 1 Adresse Etat Nom de Registre Description 04h LIE UACH Registre Haut de Compteur d'Adresse de Microcontrôleur 7-6 Réservés -0: UACH - Bits 21-16 du Compteur d'Adresse de Microcontrôleur h LIE UACM Registre Intermédiaire de Compteur d'Adresse de Microcontrôleur: 7-0: UACM - Bits 15-8 du Compteur d'Adresse de Microcontrôleur 06h L/E UACL Registre Bas de Compteur d'Adresse de Microcontrôleur: 7-0: UACL Bits 7-0 du Compteur d'Adresse de Microcontrôleur Note: UACH/M/L est incrémenté d'une unité après chaque accès 07h L RAMRD Registre de Port de Lecture de Microcontrôleur 7-0: RAMRD - Port de lecture de mémoire tampon pour le microcontrôleur E RAMWR Registre de Port d'Ecriture de Microcontrôleur 7-0: RAMWR - Port d'Ecriture de mémoire tampon pour le microcontrôleur A l'étape 202 suivante, si le microcontrôleur 30 trouve des blocs défectueux dans la mémoire tampon 20, les numéros de référence de ces blocs sont notés et enregistrés dans une table de blocs défec- tueux qui est constituée par les registres. Ensuite, à l'étape 203, le microcontrôleur 30 détermine s'il y a des données à écrire dans la mémoire tampon 20. Si la réponse est NON, la procédure passe à l'étape 207 à laquelle l'opération d'écriture se ter- mine; dans le cas contraire, si la réponse est OUI, la procédure passe à l'étape 204. A l'étape 204, lorsque le microcontrôleur 30 demande que le décodeur 10 reçoive et décode les données provenant du disque optique , le décodeur 10 sélectionne tout d'abord une série de blocs dans la mémoire tampon 20, et il enregistre ensuite dans les blocs sélectionnés de la mémoire tampon 20 les données qui proviennent du disque optique 60 ou les données décodées à partir de celles-ci. Cette opération d'écri- ture est également commandée par le microcontrôleur 30 au moyen des registres qu'il contient. A titre d'exemple, le Tableau 2 suivant montre un ensemble de registres dans le microcontrôleur 30 qui sont utilisés pour commander l'accès aux blocs dans la mémoire tampon 20. Tableau 2 Index LIE Registre Description 43 L/E NSECTOR Compteur de Secteurs de Décodage 7-0: NSECTOR - Compteur de Secteurs de Décodage 44 Réservé Réservé 46 L/E DBLKL Index de Bloc de Décodage (Partie Basse) 7-0: DBLKL - Bits 7-0 de l'index de Bloc de Décodage 47 L/E DBLKH Index de Bloc de Décodage (Partie Haute) 7-3 Réservés, toujours à 0 2-0 DBLKH - Bits 10-8 de l'index de Bloc de Décodage. Note: Les registres DBLKL et DBLKH sont protégés en écriture lorsqu'une opération de décodage est en cours. A l'étape 205 suivante, lorsque le microcontrôleur 30 demande que le décodeur 10 écrive des données dans la mémoire tampon 20, le numéro de référence de chaque bloc sélectionné est comparé avec ceux qui sont enregistrés dans la table de blocs défectueux, pour voir si le bloc sélectionné au moment présent est l'un des blocs défectueux. Si le bloc sélectionné au moment présent dans la mémoire tam- pon 20 est l'un des blocs défectueux, le bloc sélectionné au moment pré- sent est sauté et le bloc suivant est sélectionné. La procédure effectue ensuite un saut en arrière vers l'étape 203. Dans le cas contraire, si le numéro de référence du bloc sélec- tionné au moment présent dans la mémoire tampon 20 n'est pas trouvé dans la table de blocs défectueux, ce qui signifie que le bloc sélectionné au moment présent est bon, la procédure passe à l'étape 205 à laquelle les données sont écrites dans ce bloc. Après ceci, la procédure effectue un saut en retour vers l'étape 203. Le mode de réalisation préféré de l'invention est utilisé dans un système de lecteur de disque optique. Cependant, de façon générale, on peut utiliser l'invention dans des systèmes similaires, comme des systè- mes de lecteurs de disque dur et de DVD-ROM (mémoire morte à disque vidéo numérique), ayant un décodeur commandé par une unité centrale pour accéder à une unité de mémoire vive. Le procédé de l'invention est caractérisé en ce que le décodeur est commandé par le microcontrôleur de façon à balayer tout d'abord la mémoire tampon pour détecter des cellules défectueuses, avant d'écrire effectivement des données dans celle-ci, et à éviter ensuite d'écrire des données dans les blocs défectueux. Indépendamment du fait que les blocs défectueux aient été créés dans le processus de fabrication ou soient devenus défectueux après une longue période d'utilisation, le pro- cédé de l'invention est capable de les détecter et ensuite d'éviter d'écrire des données dans ceux-ci. En retournant à la figure 1, on note qu'après que le décodeur a achevé le balayage de la mémoire tampon 20, les numéros de réfé- rence des blocs défectueux, s'il y en a, sont enregistrés dans un ensem- ble de registres dans le décodeur 10. Ceci indique au décodeur 10 quels sont les blocs défectueux, de façon que le décodeur 10 puisse éviter d'écrire des données dans ces blocs. Ceci permet au microcontrôleur 30 de ne pas devoir se référer à la table de blocs défectueux lorsqu'il désire accéder à la mémoire tampon 20. Le nombre de registres dans le déco- deur 10 dépend des exigences réelles, et il y a de façon caractéristique 2 à 4 registres. Le Tableau 3 suivant montre un exemple de l'utilisation de 3 registres pour enregistrer les numéros de référence de 3 blocs défec- tueux. Tableau 3 Index LIE Registre Description L/E DEF1 Registre d'index du Bloc Défectueux 1: 7-0: DEF1 - Bits 7-0 de l'index de Blocs Défectueux 1. 71 LIE DEF2 Registre d'index du Bloc Défectueux 2: 7-0: DEF2 - Bits 7-0 de l'index de Blocs Défectueux 2. 72 L/E DEF3 Registre d'index du Bloc Défectueux 3 7-0: DEF3 - Bits 7-0 de l'index de Blocs Défectueux 3. La figure 3 montre un schéma synoptique d'un circuit de déco- dage 370 qui fait partie du décodeur 10. Ce circuit de décodage 370 comprend un circuit de saut de blocs défectueux 300 et un circuit de cal- cul 310. Le schéma synoptique plus détaillé du circuit de saut de blocs défectueux 300 est représenté sur la figure 4. Lorsque des données doivent être écrites dans la mémoire tampon 20, une série de numéros de référence (ou de numéros de bloc), par exemple [0, 1, 2,...] est générée, dans le but d'accéder aux blocs correspondants. Ces numéros de blocs sont reçus par le circuit de saut de blocs défectueux 300 par l'intermé- diaire de la ligne de données d'entrée 320. Chaque fois que le système de lecteur 100 est mis sous tension, le circuit de saut de blocs défec- tueux 300 reçoit les numéros de référence des blocs défectueux, par l'intermédiaire de la ligne de données d'entrée 330, sous la commande du microcontrôleur 30. Ensuite, lorsque le décodeur 10 désire accéder à un bloc particulier dans la mémoire tampon 20, le numéro de référence de ce bloc est émis vers le circuit de saut de blocs défectueux 300 par l'in- termédiaire de la ligne d'entrée 320. Le circuit de saut de blocs défec- tueux 300 générera une nouvelle série de numéros de blocs, dans laquelle les numéros de référence des blocs défectueux sont sautés, et il émettra ensuite ces numéros de blocs vers le circuit de calcul 310, par l'intermédiaire de la ligne de données de sortie 340. En réponse aux nouveaux numéros de blocs qui sont reçus par l'intermédiaire de la ligne de données 340 et d'un décalage de bloc qui est reçu par l'intermédiaire de la ligne de données 350, le circuit de calcul 310 génère un signal d'adresse qui est dirigé vers la mémoire tampon 20 par l'intermédiaire de la ligne de données de sortie 360, de façon à accéder aux blocs en bon état dans la mémoire tampon 20. Les blocs défectueux sont sautés. On suppose que le numéro de bloc demandé sur la ligne de données d'entrée 320 est n, que le nouveau numéro de bloc sur la ligne de données 340 et nn, que le décalage de bloc sur la ligne de données 350 est f, que chaque bloc a une longueur de m, et que le signal d'adresse sur la ligne de données 360 est a; on a alors a = nn x m + f En se référant en outre à la figure 4, on voit un schéma synop- tique détaillé du circuit de saut de blocs défectueux 300 dans le circuit de décodage 370 de la figure 3. Comme représenté, le circuit de saut de blocs défectueux 300 comprend un ensemble de x+1 registres B(0), B(1), 15... B(x), un ensemble de x+1 soustracteurs en cascade, 410, un ensemble de x+1 comparateurs en cascade, 420, et un additionneur 430. Chacun des registres B(0), B(1),... B(x) est utilisé pour enregistrer le numéro de référence (numéro de bloc) de chacun des blocs dans la mémoire tampon dans lesquels on a détecté l'existence de cellules défectueuses pen- dant le processus de balayage initial. Les registres restants sont chargés au nombre maximal de blocs (Max) dans la mémoire tampon 20. Les soustracteurs 410 reçoivent à titre de signaux d'entrée B(j), j = 0 à x, et ils génèrent un signal de sortie de B(j)-j, j = 0 à x. Les comparateurs 420 comparent ensuite ces signaux de sortie B(j)-j, j = 0 à x avec le numéro de bloc demandé n (qui est reçu par l'in- termédiaire de la ligne de données 320). Si n > B(j)-j, j = 0 à x, le compa- rateur associé génère un signal de sortie binaire de valeur 1; dans le cas contraire, si n x+1 signaux de sortie binaires et du numéro de bloc demandé n, pour gé- nérer ainsi un nouveau numéro de bloc qui est émis vers l'extérieur par l'intermédiaire de la ligne de données de sortie 340. On suppose que x = 3, c'est-à-dire que l'on suppose que le cir- cuit de saut de blocs défectueux 300 comprend un ensemble de 4 regis- tres B(0), B(1), B(2) et B(3), et que pendant le processus de balayage initial le microcontrôleur 30 a trouvé que le Bloc 2 et le Bloc 5 sont dé- fectueux. Le numéro de référence du premier bloc défectueux, c'est-à- dire 2, est enregistré par le premier registre B(0), et le numéro de réfé- rence du second bloc défectueux, c'est-à-dire 5, est enregistré par le se- cond registre B(1). Ces quatre registres B(0), B(1), B(2), B(3) sont donc chargés de la manière suivante: B(0) E- 2 B(1) E- 5 B(2) E- Max B(3) E- Max Par conséquent, si le numéro de bloc demandé est n = 0 (le premier bloc), du fait que n = 0 B(O)-O = 2 - signal de sortie du comparateur = 1 n = 3 B(O)-O = 2 -- signal de sortie du comparateur = 1 n = 4 = B(1)-1 = 4 signal de sortie du comparateur = 1 n = 4 B(O)- O = 2 -- signal de sortie du comparateur = 1 n = 5 > B(1)-1 = 4 - signal de sortie du comparateur = 1 n = 5 Il va de soi que de nombreuses modifications peuvent être ap- portées au procédé décrit et représenté, sans sortir du cadre de l'inven- tion. REVENDICATIONS 1. Procédé de compensation pour une mémoire tampon (20) défectueuse associée à un décodeur (10) connecté à un microcontrôleur (30) dans un système de traitement de données, caractérisé en ce qu'il comprend les étapes suivantes: (1) on effectue un balayage de l'unité de mémoire (20) pour contrôler si des blocs quelconques dans celle-ci sont défectueux; (2) on enregistre les blocs défectueux dans une table de blocs défectueux; (3) on contrôle si des données quelconques doivent être écrites dans la mémoire tampon (20); dans l'affirmative, on sélec- tionne un bloc dans la mémoire tampon (20) pour sauvegarder les don- nées; et (4) on contrôle si le bloc sélectionné au moment présent est l'un des blocs défectueux dans la table de blocs défectueux; dans l'affirma- tive, on saute à l'étape (3); dans le cas contraire, on écrit les données dans le bloc sélectionné au moment présent, et on saute ensuite à l'étape (3), jusqu'à ce que toutes les données soient écrites dans des blocs non défectueux dans la mémoire tampon (20). 2. Procédé selon la revendication 1, caractérisé en ce que les données sont lues sur un disque optique (60). 3. Procédé selon la revendication 1, caractérisé en ce que les données sont des données décodées provenant d'un disque optique (60). 4. Procédé selon la revendication 1, caractérisé en ce que le système de traitement de données est un système de lecture de disque optique (100). 5. Procédé selon la revendication 1, caractérisé en ce que le système de traitement de données est un système de lecteur de mémoire morte à disque vidéo numérique, ou DVD-ROM. 6. Procédé selon la revendication 1, caractérisé en ce que le système de traitement de données est un système de lecteur de disque dur. 7. Procédé de compensation pour une mémoire tampon (20) défec- tueuse associée à un décodeur (10) connecté à un microcontrôleur (30) dans un système de traitement de données, le décodeur comprenant un circuit de saut de blocs défectueux (300) et un circuit de calcul (310), caractérisé en ce qu'il comprend les étapes suivantes: (1) on effectue un balayage de l'unité de mémoire (20) pour contrôler si des blocs quelcon- ques dans celle-ci sont défectueux; (2) on enregistre les blocs défec- tueux dans un ensemble de registres (400); (3) on convertit une série d'entrée de numéros de blocs demandés, au moyen du circuit de saut de blocs défectueux (300), en une série de numéros de blocs de sortie dans laquelle les numéros de tous les blocs défectueux dans la mémoire tam- pon (20) sont sautés; et (4) on traite la série de numéros de blocs de sortie au moyen du circuit de calcul (310), pour générer un signal d'adresse pour accéder à la mémoire tampon (20). 8. Procédé selon la revendication 7, caractérisé en ce que le système de traitement de données est un système de lecteur de disque optique (10). 9. Procédé selon la revendication 7, caractérisé en ce que le système de traitement de données est un système de lecteur de mémoire morte à disque vidéo numérique, ou DVD-ROM. 10. Procédé selon la revendication 7, caractérisé en ce que le système de traitement de données est un système de lecteur de disque dur.