FR 2839827 A1 20031121 FR 0205880 A 20020514 SR 23188 JP/JB Circuit de detection de depart, circuit de detection d'arret. et circuit de detection de donnees transmises selon le protocole IIC L' invention concerne un circuit de detection de depart, un circuit de detection d'arret, et un circuit de detection de donnees, pour detecter des donnees transmises sur un bus selon le protocole IIC. Le bus IIC et le protocole IIC associe (pour Inter Integrated Circuit) ont ete developpes dans les annees 1980 pour permettre de relier facilement des systemes electroniques. Prevus initialement pour des equipements domestiques, ils vent devenus aujourd'hui un moyen privilegie de configuration de composants electroniques complexes. Le protocole IIC permet de faire communiquer entre eux des composants electroniques tres divers grace a un bus vehiculant seulement trots signaux: un signal de donnees SDA contenant des donnees et / ou des adresses a transmettre, un signal d'horloge SCL cadencant le signal SDA, et un signal de reference electrique (masse). Ceci permet de realiser des equipements ayant des fonctionnalites tres puissantes (en apportant toute la puissance des systemes microprogrammes) et conservant un circuit imprime tres simple par rapport a un schema classique. Auj ourd'hui, le protocole IIC est devenu un standard et les composants electroniques susceptibles de communiquer par l'intermediaire de ce protocole vent nombreux et varies: microprocesseurs, memoires, cartes, etc. Le protocole IIC definit la succession des etats logiques possibles sur les signaux SDA et SCL associes a un bus IIC reliant au moins deux composants devant communlquer. Chaque composant relic au bus surveille en continu les signaux SDA et SCL, afin de savoir notamment si le bus est libre, si des donnees transmises sur le bus lui vent destinees (composant esclave) ou si des donnees qu'il transmet vent correctement transmises (composant maltre). Pour prendre le controle du bus pour transmettre des donnees, le bus doit etre initialement au repos, ce qui correspond a des signaux SDA et SCL egaux a "l". Apres avoir verifie que le bus est libre, un composant peut prendre le controle du bus; il en devient alors le maltre et impose le signal d'horloge SCL. Il peut alors transmettre des donnees a un ou plusieurs composants esclaves. Pour transmettre un octet de donnees sur le bus libre, le maltre transmet sur le signal SDA une condition de depart indiquant que des donnees vont etre transmises, suivie d' un octet de donnees a transmettre et d' un bit de validation (ou SDA est egal a l). Pendant cette phase, un front montant du signal d'horloge SCL vient valider chaque bit emis sur le signal SDA. L'esclave (destinataire de l' octet transmis) impose ensuite un ''O'' sur le signal SDA, indiquant ainsi au maltre qu'il a correctement recu l' octet transmis. Enfin, le maltre transmet une condition d'arret sur le signal SDA, pour indiquer que le bus va etre libere. La condition de depart est remplie lorsque, les signaux SDA et SCL etant initialement a "l" (bus au repos, instant tl sur les figures 6a, 6b), le signal SDA passe a "O" (instant t2) alors que le signal SCL reste a l" pendant au moins un temps TDLC apres le front descendant du signal SDA (instant t3). Eventuellement, un temps minimal TCHDX peut etre exige entre le dernier front montant de SCL (instant tl) et le front descendant de SDA (instant t2) pour garantir la disponibilite du bus. La condition d'arret est remplie lorsque, le signal SDA etant initialement a "O" et le signal SCL etant initialement a ''1" (instant t4), le signal SDA passe a s "1' (instant t5) alors que le signal SCL reste a "1. Eventuellement, un temps minimal TCHDH peut etre exige entre le front montant de SCL (instant t4) et le front montant de SDA (instant t5). lo Pour surveiller les signaux SDA et SCL sur le bus, les composants electroniques relies au bus doivent disposer d'un circuit de detection d'une condition de depart et / ou d'une condition d'arret. De maniere connue, de tels circuits de detection vent realises selon des schemes analogiques connus utilisant des resistances et des condensateurs. Ils utilisent notamment des circuits a retard, a base d'inverseurs, de condensateurs et de resistances electriques, pour mesurer les temps entre les fronts montants et / ou descendants des signaux SDA, SCL. Les resistances et les condensateurs presentent de nombreux inconvenients. Ces elements vent de taille importante, en terme de surface de silicium occupee. Leur resistance et / ou leur capacite electrique vent 2s susceptibles de varier d'un element a l'autre, du fait du process utilise pour les realiser. Leur resistance et / ou leur capacite electrique vent par ailleurs peu precises et vent susceptibles de deriver dans le temps, en fonction notamment des conditions d'utilisation. Bien sur, les inconvenients des detecteurs de donnees vent les memes que ceux des resistances et des condensateurs qui les composent. L' invention a pour but de pallier ces problemes de taille et de precision. 3s Ainsi, l 'invention concerne un circuit de detection de debut, pour detecter d'une condition de depart sur un signal de donnees associe a un signal d'horloge selon le protocole IIC. Selon ['invention, le circuit de detection de debut comprend: - un premier detecteur, pour produire un premier signal d'initialisation lorsqu'un front descendant du signal de donnees est detecte, - un compteur, pour compter des impulsions d'un signal de reference loreque le premier signal dinitialisation est recu, et produire un signal de validation lorsque le nombre d'impulsions comptees a atteint un nombre predefini, et - un deuxieme detecteur pour memoriser le signal de validation lorsqutun front descendant du signal dthorloge est detecte. Ainsi, dans un circuit de detection d'une condition de depart selon l 'invention, on utilise uniquement des circuits numeriques, ne comportant pas de resistance ou de condensateur, de sorte que le circuit de l' invention ne presente pas les inconvenients lies aux resistances et aux condensateurs. Notamment, on utilise dans l' invention un compteur numerique pour mesurer un temps predefini comme on le verra mieux par la suite. I1 ntest alors plus necessaire d'utiliser un circuit a retard pour realiser cette fonction. Le compteur est initialise lorsqu'un front descendant du signal de donnees est detecte, et il produit le signal de validation lorsque le temps predetermine est atteint, egal au nombre predetermine multiplie par la periode du signal de reference. Lorsqu'un front descendant du signal dthorloge est detecte par le deuxieme detecteur, alors le deuxieme detecteur memorise un signal qui est actif si le signal de validation a ete produit par le compteur, ou inactif 3s si le temps predetermine apres le front descendant du signal de donnees n'est pas encore ecoule. s Le circuit de detection de depart selon l 'invention est avantageusement complete par un circuit d'initialisation pour produire un deuxieme signal d'initialisation egal a un signal inverse du signal s d'horloge et synchronise sur le signal de reference, ledit deuxieme signal d'initialisation etant utilise pour initialiser le premier detecteur et / ou le deuxieme detecteur. Le deuxieme signal d'initialisation permet de bloquer le fonctionnement du premier detecteur et / ou du deuxieme detecteur lorsque le signal d'horloge est inactif (c'est-a-dire lorsque aucune condition de depart ne peut avoir lieu), en imposant une valeur predefinie (inactive) au premier signal d'initialisation et au signal de validation. Le circuit de detection de depart selon l 'invention est egalement avantageusement complete par un circuit de blocage, pour arreter le compteur lorsque le nombre predetermine est atteint. Le signal de validation est ainsi maintenu actif, tent qu'il na pas ete utilise par le deuxieme detecteur. L' invention concerne egalement un circuit de detection d'arret, pour detecter une condition d'arret sur un signal de donnees associe a un signal dthorloge 2s selon le protocole IIC. Selon l 'invention, le circuit comprend un troisieme detecteur, pour produire un signal d'arret lorsqu'un front montant du signal de donnees est detecte apres la detection d'un front montant du signal d'horloge. Enfin, l' invention concerne egalement un circuit de detection de donnees transmises selon le protocole IIC, comprenant un circuit de detection de depart et un circuit de detection d'arret tels que decrits ci-dessus. 3s L' invention et les avantages qui en decoulent apparaltront plus clairement a la lecture de la description qui suit d'exemples de realisation dun circuit de detection dune condition de depart et d'un circuit de detection d'une condition d'arret selon l 'invention. La description est a fire en reference aux s dessins annexes dans lesquels: - la figure l est un schema fonctionnel d'un circuit de detection de debut selon l 'invention, - les figures 2, 3 vent des exemples de realisation delements de la figure l, - la figure 4 est un schema d'un circuit de detection de fin selon ['invention, - les figures 5A a 5H vent des chronogrammes de signaux en differents points des circuits des figures l a 4, et - les figures 6a, 6b, deja decrites, vent des chronogrammes de signaux de donnees transmis selon le protocole IIC. Le circuit lO de detection de depart selon l' invention permet de detecter une condition de debut sur un signal de donnees SDA transmis en association avec un signal d'horloge SCL selon le protocole IIC. Le circuit lO comprend (figure l) un premier detecteur 20, un compteur 30, et un deuxieme detecteur 30. 2s Le premier detecteur 20 comprend une entree sur laquelle est applique le signal de donnees SDA et une sortie sur laquelle est produit un premier signal d'initialisation RST. Lorsqutil detecte un front descendant du signal SDA, le detecteur 20 produit le signal RST actif. Le compteur 30 comprend une entree d'horloge sur laquelle est applique un signal d'horloge de reference CLK, et une entree d'initialisation connectee a la sortie du detecteur 20. La periode TCLK du signal CLK de 3s reference est choisie inferieure a la periode TSCL du signal d'horloge SCL. Par exemple, si TSCL est de l'ordre de 2,5,us (transmission a 400Kbits/s), alors TCLK est choisie de ltordre de 300 ns. Le compteur 30 est incremente a chaque impulsion du signal CLK (par exemple sur un front actif du signal CLK), et il produit un signal de validation COUNT lorequ'il atteint un nombre predetermine NB d'impulsions comptees. Le compteur 30 a ainsi pour fonction de mesurer un temps predefini TDLC, egal au nombre NB multiplie par la periode TCLK, et de produire un signal de validation COUNT lorsque ce temps est ecoule. Le detecteur 40 comprend une premiere entree sur laquelle est applique le signal COUNT, une deuxieme entree sur laquelle est applique le signal d'horloge SCL, et une sortie. Lorsqutil detecte un front descendant du signal SCL, le detecteur 40 memorise le signal COUNT, qui est alors disponible sur la sortie du detecteur 40 sous la forme d'un signal START. Le circuit 10 fonctionne de la maniere suivante (figures 5A a 5H). On suppose quinitialement, les signaux SDA et SCL vent actifs, egaux a "1', que les signaux COUNT, START vent inactifs, egaux a "0" et que les signaux RST est inactif, egal a "1". On suppose enfin que le nombre NB est egal a 2. Le detecteur 20 produit le signal RST actif (ici, egal a "0", ref. 70, figure 5G) lorsqu'il detecte un front descendant du signal SDA. Le signal RST initialise le compteur 30, qui commence a compter les impulsions du signal CLK. Lorsque le compteur atteint le nombre NB, il produit le signal COUNT (ref. 71). Lorsque le detecteur detecte un front descendant du signal SCL, il produit le signal START (ref. 72) egal au signal COUNT recu sur son entree de donnees. Si le compteur a atteint le nombre NB (c'est-a-dire si le temps TDLC stest ecoule) avant que le front descendant de SCL ait ete detecte, alors le siqnal START est egal au signal COUNT, actif: une condition de depart est detectee (figure 5F). Inversement, si le compteur n'a pas atteint le nombre NB (c' eat-a-dire si le temps TDLC ne s'est pas encore ecoule) avant que le front descendant de SCL ait ete detecte, alors le signal START est egal au signal COUNT, inactif: aucune condition de depart n'est detectee. Dans un exemple de realisation, le compteur 30 utilise est un compteur deux bits comprenant (figure 2) deux bascules de type D 32, 34, une porte OU- Exclusif 36 et une porte ET 38. Les bascules 32, 34 comprennent chacune une sortie Q. chacune connectee a une entree de la porte 36 dont une sortie est connectee a une entree D de la bascule 34. La sortie Q de la bascule 34 est connectee egalement a une entree de la porte 38, dont une autre entree est connectee a une entree D et a une sortie inverseuse /Q de la bascule 32. Enfin, les bascules 32, 34 comprennent chacune une entree d'horloge sur laquelle est applique le signal de reference CLK, et une entree de validation RS sur laquelle est applique le signal RST. Une sortie de la porte 38 forme une sortie du compteur 30 sur laquelle est produit le signal COUNT. Dans lexemple choisi, du fait des connexions choisies pour la porte ET 38, le compteur 30 produit le signal COUNT lorsqu'il atteint le nombre NB = 2 ("1" sur la sortie /Q de la bascule 32 et "1" sur la sortie Q de la bascule 34). En pratique, le nombre NB est choisi en fonction de la periode du signal de reference CLK et du temps minimal TDLC que l'on souhaite garantir entre le front descendant de SDA (qui demarre le compteur 30) et le front descendant du signal SCL (qui valide ou non une condition de depart). Dans un exemple, la periode du signal CLK est egale a environ 300 ns et NB est egal a 2. Ainsi, une condition de depart ne peut etre detectee que si un temps minimal d' environ 600 ns s'ecoule entre un front descendant du signal SDA et un front descendant du signal SCL. La figure 3 detai l le des exemples de real isation des autres elements du circuit de la figure 1. Le premier detecteur 20 peut etre realise avec une bascule 22 de type D, comprenant une entree de donnees D connectee a une masse du circuit, une entree d'horloge sur laquelle est applique un signal inverse du signal SDA, et une sortie Q sur laquelle est produit le signal RST. Lorsqu'elle est active, la bascule 22 produit sur sa sortie le signal RST actif a "0", a chaque detection d'un front descendant du signal SDA. Le signal RST est utilise pour initialiser le compteur 30. Le detecteur 20 peut etre complete par l'ajout d'une porte OU 24, comprenant deux entrees sur lesquelles vent appliques le signal RST et un signal POR, et une sortie connectee a l' entree dtinitialisation du compteur 30. Le signal POR est un signal de demarrage global du circuit 10, habituellement utilise dans les circuits electroniques. Bien sur, si le detecteur 20 ne comprend pas de porte 24, la sortie Q de la bascule 22 est connectee directement a l' entree d'initialisation du compteur 30. Le detecteur 40 (figure 3) peut etre realise de maniere similaire au detecteur 20, a partir d'une bascule de type D, comprenant une entree D de donnees connectee a la sortie du compteur pour recevoir le signal COUNT et une entree d'horloge inverseuse sur laquelle est applique le signal SCL. La bascule comprend egalement une sortie Q de donnees sur laquelle est produit le signal START. Lorsqu'elle est active, la bascule 40 produit sur sa sortie le signal START, egal au signal COUnT, a chaque 3s detection d'un front descendant du signal SCL. Le signal START est actif si le compteur a atteint le nor. ^,bre NB avant la detection du front descendant de SCL, et il est inactif sinon. Le circuit de la figure 1 peut etre avantageusement complete par un circuit d'initialisation 50, qui produit un signal d'initialisation RESET, qui est egal a linverse du signal SCL mais synchronise sur le signal CLK. Le signal RESET est utilise pour initialiser et autoriser le fonctionnement du detecteur 20 et / ou du detecteur 40. On evite ainsi toute erreur possible de fonctionnement des detecteurs 20, 40 et toute consommation inutile d'energie. Dans un exemple (figure 3), le circuit 50 est realise par une bascule 52 de type D, comprenant une entree de donnees sur laquelle est applique le signal SCL, une entree d'horloge sur laquelle est applique le signal CLK, et une sortie inverseuse /Q sur laquelle est produit le signal RESET. Le signal RESET est applique a des entrees de validation des detecteurs 20, 40: il permet de bloquer le fonctionnement de ces detecteurs lorsque le signal SCL est a zero (car aucune condition de depart ne peut dans ce cas avoir lieu) en imposant une valeur predefinie (inactive) aux signaux RST, START. Ainsi, lorsque le signal RESET devint inactif et passe a "1", le signal START est annule (ref. 73) et le signal RST passe a "1", ce qui bloque le fonctionnement du compteur (ref. 75). Le signal RESET permet egalement d'autoriser le fonctionnement des detecteurs lorsque le signal SCL est egal a 1 (cas ou une condition de depart est susceptible d'apparaltre). On pourrait appliquer directement le signal /SCL sur l' entree PR de la bascule 22 (ou le signal SCL sur l' entree RS) pour autoriser la detection d'un front descendant de SDA des la detection d'un front descendant de SCL. Ceci evite l'utilisation du signal RESET. Cependant, on ne peut pas appliquer directement /SCL ou SCL sur l'une des entrees d'initialisation de la bascule 40: en effet, en appliquant le signal SCL a la fois sur l' entree d'horloge et sur une entree de validation de la bascule 40, la bascule serait bloquee lors de l 'apparition du front descendant de SCL et le signal START serait touj ours nul; aucune detection d'une condition de depart ne peut etre detectee dans ces conditions. De meme que le detecteur 20, et pour les memes raisons, le circuit d'initialisation 50 peut etre complete par l'ajout d'une porte 54, par exemple de type OU, comprenant une entree sur laquelle est applique le signal RESET, une entree sur laquelle est applique le signal POR, et une sortie connectee a une entree PR de validation du detecteur 20 et / ou a une entree RS de validation du detecteur 40. Le circuit 10 peut etre avantageusement complete par un circuit de blocage 60 du compteur 30, ayant pour fonction de bloquer le compteur 30 lorsqu'il atteint le nombre NB predefini. Le circuit 60 est connecte entre la sortie et l' entree d'horloge du compteur 30; le circuit produit un signal qui est egal au signal de reference CLK lorsque le nombre NB n'a pas encore ete atteint par le compteur 30, et qui prend une valeur constante (par exemple zero) lorsque le compteur atteint le nombre NB. Ainsi, le compteur ne recevant plus d'impulsions sur son entree d'horloge, son fonctionnement est bloque et sa sortie est maintenue constante: le signal COUNT est maintenu actif. Le circuit de detection d'arret selon l' invention comprend (figure 4) un troisieme detecteur, qui produit un signal STOP lorsqu'il detecte une condition d'arret sur le signal de donnees SDA. Dans l'exemple de la figure 3s 4, le detecteur 40 est realise par une bascule 90 de type D, comprenant une entree de donnees sur laquelle est appliquee une tension d'alimentation VCC du circuit, une entree d'horloge sur laquelle est applique le signal SDA et une sortie de donnees Q sur laquelle est produit un signal STOP. Lorequ'il est actif, le detecteur 40 produit ainsi un signal STOP actif a chaque front montant du signal SDA. Le circuit de la figure 4 peut etre complete par un circuit dtinitialisation, pour autoriser le fonctionnement de la bascule 90 uniquement lorsque le signal SCL est actif (ctest-a-dire a t'1), et pour imposer un signal STOP inactif (dans l'exemple egal a "0") dans le cas contraire. Un tel signal d'initialisation peut etre identique au signal produit par le circuit 50 de la figure 3. Bien sur, si les circuits des figures 3, 4 vent integres ensemble dans un meme circuit global, un unique circuit dinitialisation est suffisant. REVENDI CATIONS l. Circuit de detection de debut, pour detecter d'une condition de depart sur un signal de donnees (SDA) associe a un signal d'horloge (SCL) selon le protocole IIC, le circuit comprenant: - un premier detecteur (20), pour produire un premier signal d'initialisation (RST) lorsqu'un front descendant du signal de donnees (SDA) est detecte, - un compteur (30), pour compter des impulsions diun signal de reference (CLK) lorsque le premier signal diinitialisation (RST) est recu, et produire un signal de validation (COUNT) lorsque le nombre diimpulsions comptees a atteint un nombre predefini (NB), - un deuxieme detecteur (40) pour memoriser le signal de validation (COUNT) lorsqu'un front descendant du signal d'horloge (SCL) est detecte. 2. Circuit selon la revendication l, comprenant egalement un circuit d'initialisation (50) pour produire un deuxieme signal d'initialisation (RESET) egal a un signal inverse du signal d'horloge (SCL) et synchronise sur le signal de reference (CLK), ledit deuxieme signal d'initialisation etant utilise pour initialiser le premier detecteur (20) et / ou le deuxieme detecteur (40). 3. Circuit selon la revendication l, dans lequel le premier detecteur (20) comprend une bascule (22) comprenant une entree de donnee (D) connectee a une masse du circuit, une entree d'horloge sur laquelle est applique le signal de donnees (SDA), et une sortie de donnees (Q) sur laquelle est produit le premier signal diinitialisation (RST). 4. CirciL selon la revendication 3, dans lequel le premier d@LecLeur (20) comprend AgalemenL une porLe (24) comprenanL deu, enLrAes de donnes ur lesquelles sonL appliquAs le pemier signal d'iniLialisaLion (RSI) eL un signal de dAma enLrAe d'iniLialisaLion du compLeur (30). 5. C1rcuiL selon l!une des revendicaLions 1 4, dans lequel ie deuxiAme ddLecLeur (40) comprend une bascule D compenanL une enLre de donndes sur laquelle esL appliquA le signal de validaLion (COuNT), une enLrde d'horloge sur 1aguelle esL appliqud le signal d'horloge (SCL). 6. CircuiL selon l'une des revendicaLions 1 5, comprenanL AgalemenL un circuiL de blocage (60), pour arr6Ler le compteur (301 lorsque le nombre prAdALermind (NB) esL atLeioL. 7. CircuIt selon la revendicaLion 6, dans lequel le circuiL de blocage comprend une porLe comprenanL deux enLres sur lequelles sonL appliquAs respecLivemenL le signal de valiiaLion (couNI) eL le signal de rAf6rence (CLK), eL une orLie connecLde une enLrAe d'horloge du compLeur (30). 8. CircuiL selon l'une des revendicaLions 1 7, dans lequel lecircuiL d'iniLialisaLion (50) comprend une bascule (52) comprenanL une enLrAe de donnAes sur laquelle esL appliquA le signal d'horloge (SCL), une entrde dlhorloqe sur laquelle esL appliqud le signal de rAfArence (CLK), eL une sorLie sur laquelle esL produiL un deuxidme signal diiniLialisaLion (RESEI). Circu1L selon la revendicaLion 8, dans laquel le cirduiL diiniLalisaLion (50) comprend AgalemenL une Y 2839827 porte comprenant deux entrees sur lesquelles vent appliques le deuxieme signal d'initialisation (RESET) et le signal de demarrage (POR), et une sortie connectee a une entree d'initialisation (PR) du premier detecteur (20) et / ou a une entree d'initialisation (RS) du deuxieme detecteur. l0. Circuit de detection d'arret, pour detecter une condition d'arret sur un signal de donnees (SDA) associe a un signal d'horloge (SCL) selon le protocole IIC, le circuit comprenant un troisieme detecteur (90), pour produire un signal d'arret (STOP) lorequ'un front montant du signal de donnees (SDA) est detecte apres la detection d'un front montant du signal d'horloge (SCL). ll. Circuit selon la revendication l0, dans loquel le troisieme detecteur (90) comprend une bascule comprenant une entree de donnees sur laquelle est appliquee une tension d'alimentation (VCC), une entree d'horloge sur laquelle est applique le signal de donnees (SDA) et une sortie sur laquelle est produit un signal d'arret (STOP). 12. Circuit selon l'une des revendications lO ou ll comprenant egalement un circuit d'initialisation (50) pour produire un deuxieme signal d'initialisation (RESET) egal a un signal inverse du signal d'horloge (SCL) et synchronise sur le signal de reference (CLK), ledit deuxieme signal dtinitialisation (RESET) etant utilise pour initialiser le troisieme detecteur (90). 13. Circuit de detection de donnees transmises selon le protocole IIC, comprenant un circuit de detection de depart selon l'une des revendications l a 9, et un circuit de detection d'arret selon l'une des