FR 3089652 A1 20200612 FR 1872361 A 20181205 Description Titre de l'invention : Contrôleur de données et procédé de réception et de traitement de trames au moyen d'un tel contrôleur de données. [0001] La présente invention concerne un contrôleur de données pour un système de com- munication en série (bus de données), en particulier un système de communication connu par l'homme du métier sous l'acronyme anglo-saxon CAN « Controller Area Network » ou CAN FD « Controller Area network with Flexible Data » destiné à être utilisé dans un véhicule automobile. [0002] On se réfère à la figure 1 qui illustre l'architecture générale d'un noeud de commu- nication d'un système de transmission de données comprenant un contrôleur de données CAN. [0003] Tel qu'illustré, le noeud comprend un microprocesseur 1 relié à un contrôleur de données 2 par un bus de transfert dc données 3 et par une liaison 4 sur laquelle circule un signal d'interruption qui signale au microprocesseur la présence d'une trame disponible dans le contrôleur de données. [0004] Lc contrôleur de données 2 comprend un dispositif 5 de Réception/Emission comprenant deux entrées, CAN 1-I et CAN L, une mémoire tampon d'assemblage de messages 6 connue par l'homme du métier sous l'acronyme anglo-saxon MAB (« Message Assembly Buffet- ») reliée au dispositif 5 de Réception/Emission et une mémoire tampon de réception 7 dans laquelle est transférée une trame après réception intégrale dc cette trame dans la mémoire tampon d'assemblage 6. [0005] Lc dispositif 5 de Réception/Emission désérialisc la trame reçue en entrée sur un bus CAN et transmet la trame désérialiséc vers la mémoire tampon d'assemblage 6. [0006] La mémoire tampon d'assemblage 6 active un signal valid si la trame est reçue inté- gralement sans erreur. [0007] Lc signal valid est un critère d'acceptation pour la mémoire tampon de réception 7 du contrôleur qui recopie alors l'identifiant de la trame et les données de la trame valide reçue, au prochain cycle d'horloge. [0008] Un signal d'interruption signale ensuite la présence d'une trame disponible au micro- processeur 1 en charge du contrôleur de données 2. Le microprocesseur traite alors la trame reçue en la récupérant depuis la mémoire tampon de réception 7. [0009] Au vu de ce qui précède, le but de l'invention et de proposer un contrôleur de données capable de soulager le microprocesseur en évitant de réaliser des opérations de calcul inutiles. [0010] L'invention a donc pour objet, selon un premier aspect, un contrôleur de données comprenant une mémoire tampon d'assemblage de message apte à désérialiser et sau- 2 vegarder une trame de données et une mémoire tampon de réception dans laquelle est transférée une trame après réception intégrale dans la mémoire tampon d'assemblage. [0011] Ce contrôleur de données comporte des moyens de filtrage aptes à inhiber le transfert de la trame vers la mémoire tampon de réception si les données de la trame sont au moins en partie identiques à celles d'une trame précédemment reçue avec un même identifiant de trame. [0012] Les occurrences de trames filtrées, dont les données sont identiques à celles d'une trame précédemment reçue sont donc ignorées et ne sont pas copiées dans la mémoire tampon de réception. [0013] Dans un mode de réalisation, le contrôleur comprend un comparateur d'identifiant de trame adapté pour comparer l'identifiant d'une trame stockée dans la mémoire tampon d'assemblage avec un identifiant dc trame programmé et un comparateur dc données adapté pour comparer des données de trame stockées dans la mémoire tampon d'assemblage avec des données correspondantes préalablement reçues. [0014] Selon une autre caractéristique, les moyens de filtrage comprennent un ensemble dc n filtres assurant chacun le filtrage de données d'une trame stockée dans la mémoire tampon d'assemblage et associés chacun à un comparateur d'identifiant de trame et à un comparateur de données. [0015] Selon une autre caractéristique, chaque filtre comprend un registre de stockage d'identifiant de filtre et un registre de stockage de données dans lequel sont stockées des donnés préalablement reçues. [0016] Avantageusement, la taille du registre de stockage de données peut être inférieure à la taille de la trame de données. [0017] Selon encore une autre caractéristique, le contrôleur comprend des moyens pour élaborer un signal de commande de programmation pour commander le transfert d'une trame vers la mémoire tampon de réception, le signal de commande étant élaboré à partir de la sortie du comparateur d'identifiant de trame et du comparateur de données et à partir d'un signal de validation des moyens de filtrage. [0018] Dans un mode de réalisation, les moyens de filtrage comprennent en outre un registre de masquage de données agissant entre la mémoire tampon d'assemblage et le comparateur de données, de sorte que la comparaison effectuée par ledit comparateur de données s'effectue sur des bits sélectionnés de la trame. [0019] Avantageusement, la taille du registre de masquage de données est inférieure à la taille de la trame de données. [0020] L'invention a également pour objet, selon un autre aspect, un procédé de réception et de traitement de données au moyen d'un contrôleur de données, ledit contrôleur émettant un signal d'interruption à destination d'un microprocesseur après réception d'une trame, ledit contrôleur comprenant une mémoire tampon d'assemblage de 3 message apte à désérialiscr et sauvegarder une trame de données, une mémoire tampon de réception dans laquelle est stockée une trame après réception intégrale dans la mémoire tampon d'assemblage. [0021] Selon ce procédé, on inhibe le transfert de la trame vers la mémoire tampon de réception si les données de la trame sont au moins en partie identiques à celles d'une trame précédemment reçue avec un même identifiant de trame. [0022] Avantageusement, on compare l'identifiant d'une trame stockée dans la mémoire tampon d'assemblage avec un identifiant de trame programmé et l'on compare les données de trame stockées dans la mémoire tampon d'assemblage avec des données correspondantes préalablement reçues. [0023] D'autres buts, caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée uniquement à titre d'exemple non limitatif, et faite en référence aux dessins annexés sur lesquels : [0024] [fig.1] dont il a déjà été fait mention, illustre l'architecture générale d'un noeud de commu- nication doté d'un contrôleur de données conforme à l'invention ; [0025] [fig.2] illustre l'architecture générale des moyens de filtrage du contrôleur de données ; [0026] [fig.3] illustre les moyens de gestion du registre de stockage de données ; [0027] [fig.4] montre le registre de masquage de données ; [0028] [fig.5] montre des chronogrammes illustrant le fonctionnement des moyens de filtrage du contrôleur de données conforme à l'invention ; [0029] [fig.6] illustre un autre exemple de réalisation des moyens de filtrage conformes à l'invention ; et [0030] [fig.7] montre des chronogrammes illustrant le fonctionnement d'un contrôleur de données conforme à l'invention. [0031] On va décrire en référence à la figure 2 les moyens de filtrage d'un contrôleur de données pour noeud de communication conforme à l'invention. Il s'agit par exemple d'un contrôleur de type CAN ou CAN FD. [0032] L'invention se rapportant essentiellement aux moyens de filtrage, sur la figure 2, les éléments constitutifs du contrôleur de données ne sont pas détaillés. [0033] On reconnaît toutefois le dispositif de Récupération/Emission de données 8 et ses deux entrées CAN L et CAN H qui désérialise une trame reçue en entrée, la mémoire tampon d'assemblage de message 9 qui active un signal valid si une trame est intégralement reçue sans erreur et une mémoire tampon de réception 10 qui recopie l'identifiant Identifier et les données Data de la trame valide reçue, au coup d'horloge suivant. [0034] Ce contrôleur est associé à un microprocesseur (non représenté) et émet un signal d'interruption pour signaler la présence d'une trame disponible au microprocesseur qui traite alors les données disponibles. [0035] Le contrôleur est par ailleurs doté de moyens de filtrage qui assurent un filtrage des trames reçues afin d'éviter d'interrompre le microprocesseur en charge du traitement des trames lorsque les données reçues sont en partie identiques ou strictement identiques à celle de la dernière trame ou d'une trame déjà reçue, avec le même identifiant. [0036] Les moyens de filtrage, désignés par la référence numérique générale 11, com- prennent un ensemble de filtres, comprenant chacun un registre de stockage d'identifiant de filtre IFRO,..., IFRn et un registre de stockage de données LRDRO,..., LRDRn. [0037] Chaque registre de stockage d'identifiant de filtre est associé à un comparateur d'identifiant IDconzpO, Mcompn qui compare l'identifiant présent dans la mémoire tampon d'assemblage de messages 9 avec un identifiant programmé dans le registre d'identifiant de filtre pour positionner un signal d'identité d'identifiant de trame Id_match_n si l'identifiant de la trame reçu est égal à l'identifiant du filtre programmé dans le registre IFRn. [0038] Chaque filtre comprend par ailleurs un comparateur de données Datacomp0 Datacompn qui compare les données présentes dans la mémoire tampon d'assemblage de messages 9 avec les données programmées dans le registre de données de filtre LRDRn. Si les données de la trame reçue sont égales aux dernières données reçues, un signal de correspondance de données data_match_n est positionné. [0039] Des portes ET logiques, tels que Pl assurent, pour chaque filtre, une opération logique ET entre les signaux d'identité d'identifiant Id_match_n et les signaux de correspondance de données data_match_n et en outre avec un signal de validation du filtre filter_0_enabled, filter_n_enabled et un signal de validation de données présentes dans les registres valid_data_register_0,..., valid_data_register_n. Chaque porte Pl fournit un signal de veto qui annule l'acceptation de la trame lorsque le veto est positionné. Une porte logique NON OU P2 assure une opération logique NON OU entre la sortie des portes ET Pl. [0040] Le signal de commande de programmation de la mémoire tampon de réception 10 est délivré par une porte logique ET P3 qui assure une opération logique ET entre la sortie de la porte P2 et le signal valid fourni par la mémoire tampon d'assemblage de messages 9. [0041] Un signal de veto fourni par un filtre n'est donc positionné de manière à s'opposer à la programmation de la mémoire tampon de réception si l'identifiant de la trame reçue est égal à l'identifiant du filtre programmé dans le registre de stockage d'identifiant de filtre IFRn et si les données de la trame reçue sont égales aux dernières données reçues pour cet identifiant, stockées dans le registre LRDRn. [0042] Le veto, qui s'oppose à l'écriture d'une trame dans la mémoire tampon de réception, est donc également conditionné par l'activation du filtre et la validité du registre de stockage de données. [0043] Finalement, un signal de veto veto _n est élaboré selon l'opération logique suivante : [0044] Veto _n = id tnatch n AND data tnatch n AND filter n enabled AND valid data register n [0045] On va maintenant décrire en référence à la figure 3 un mode de réalisation des moyens de gestion du registre de stockage de données LRDRn dans lequel sont stockées les dernières données reçues. [0046] Sur la figure 3, seuls ont été représentés les moyens de gestion du registre de stockage d'un filtre n. Bien entendu, ces moyens de gestion sont dupliqués pour chaque filtre n. [0047] Ces moyens de gestion sont destinés à élaborer un signal de commande d'écriture write du registre LRDRn. [0048] Les moyens de gestion comprennent une porte logique P4 qui réalise une opération logique ET entre le signal d'identité d'identifiant Id_tnatch_n et le signal valid fourni par la mémoire tampon d'assemblage de messages 9. [0049] Un circuit logique combinatoire comprenant une porte logique OU P5 commande la mémorisation du statut d'initialisation du registre LRDRn dans une bascule D 12 lorsque l'identifiant d'une trame reçue est égal à l'identifiant du filtre programmé dans le registre de stockage d'identifiant de filtre et que la trame a été reçue. [0050] Le contenu du registre LRDRn n'est valide qu'à partir du moment où il est initialisé avec les données de la première trame reçue dont l'identifiant est égal au registre de stockage d'identifiant de filtre IFRn. [0051] La bascule 12 mémorise le statut de validation du registre LRDRn. [0052] Ainsi, le circuit logique combinatoire élabore un signal latch_n.D de commande de mémorisation du statut du registre LRDRn comme suit : [0053] latch_n.D= valid_data_register_n OR (id_match_n AND valid) [0054] La bascule D 12 est remise à zéro à chaque écriture du registre IRFn associé de sorte qu'une reprogrammation du registre IFRn invalide les données mémorisées dans le registre LRDRn. Cette remise à zéro est assurée par une connexion du signal d'écriture write_IFRn actif à 1 sur l'entrée synchrone Clear active à 1. 6 [0055] La porte logique ET P4 élabore le signal de commande d'écriture write du registre LRDRn. De cette manière, le registre est systématiquement mis à jour à chaque réception d'une trame valide dont l'identifiant est égal à l'identifiant programmé dans le registre-114Rn correspondant. [0056] Dans le mode de réalisation décrit en référence aux figures 2 et 3, le stockage des données dans la mémoire tampon de réception est inhibé si l'identifiant de la trame reçue est égal à l'identifiant du filtre programmé dans le registre de stockage d'identifiant de filtre et si les données de la trame reçue sont égales aux dernières données reçues pour cet identifiant. [0057] En référence à la figure 4, dans un mode de réalisation, les moyens de filtrage comportent un registre de masquage 13 assurant une sélection de bits à comparer entre la mémoire tampon d'assemblage et le comparateur de données. [0058] Ainsi, seuls les bits d'une trame préalablement programmée dans le registre de masquage 13 sont comparés avec les bits correspondants stockés dans la mémoire tampon d'assemblage. Des portes logiques ET, telles que P10, assurent la sélection des bits à comparer. [0059] En d'autres termes, le registre de masquage 13 permet de sélectionner les bits des données de la trame qui doivent être utilisés pour évaluer si la trame reçue est différente ou non de la précédente. [0060] Si tous les bits de ce registre sont à 1, tous les bits de données de la trame contribuent à la comparaison des données de la trame avec les dernières données reçues. Autrement dit, seuls les bits des données de la trame reçue MAB.data dont les bits correspondent dans le registre DMRn de masquage de données sont comparés aux bits correspondants du registre LRDRn, soit : [0061] data_tnatch_n = (MAB.data AND DMRn) EQUAL (LRDRn AND DMRn) [0062] De préférence, le registre de masquage de données DMRn est accessible par l'interface externe de contrôle du contrôleur CAN avec au moins un accès en écriture. [0063] La taille du registre DMRn est identique à la taille du registre LRDRn. [0064] Avantageusement, le registre DMRn est initialisé avec tous les bits à 1 lors de l'initialisation du contrôleur CAN. [0065] On a présenté sur la figure 5 un chronographe illustrant le fonctionnement des moyens de filtrage qui viennent d'être décrits. [0066] A l'instant 0, on considère que le contrôleur CAN est dans son état initial. [0067] Au front montant référencé Fl du signal d'horloge dock, une trame valide est reçue, par exemple avec un identifiant 0x00 et une donnée de 0x00. Le filtre numéro 0 n'est pas activé et aucun veto n'est positionné. La trame est donc acceptée. [0068] Plusieurs fronts d'horloge peuvent exister entre le front d'horloge référencé F3 et le front d'horloge référencé F4. 7 [0069] Au front montant référencé F4 de l'horloge, le filtre 0 est activé depuis l'interface de contrôle du contrôleur CAN. L'identifiant de trame, par exemple 0x80 est programmé dans le registre IFRO et un masque de données OxOF est programmé dans le registre DMRO. [0070] Le masque OxOF implique que seuls les bits de 0 à 3 des données de trame sont utilisés pour la comparaison avec le contenu du registre LRDRO. [0071] Plusieurs fronts d'horloge peuvent exister entre le front d'horloge référencé F5 et le front d'horloge référencé F6. [0072] Au front montant référencé F6 du signal d'horloge, une trame valide est reçue avec l'identifiant 0)(80 et une donnée par exemple valant 0x86. Le signal LRDRO.write est positionné. Le signal lateh 0.D est levé car les signaux id match 0 et valid sont hauts. Le filtre 0 ne positionne pas le signal de veto veto 0 car le signal valid data register 0 et à un niveau bas. La trame est donc acceptée. [0073] Au front montant référencé F7 du signal d'horloge, le signal LRDRO.write étant au niveau haut, le registre LRDRO est chargé avec les données de la trame reçue au cycle précédent. La bascule latch 0 maintient le signal valid dota register 0 au niveau haut. [0074] Plusieurs fronts d'horloge peuvent exister entre le front d'horloge référencé F8 et le front d'horloge référencé F9. [0075] Au front montant référencé F9 du signal d'horloge, une trame valide est reçue avec l'identifiant 0)(80 est une donnée de 0x88. Le signal LRDRO.write est positionné au niveau haut. Le filtre 0 ne positionne pas le signal de veto veto_O car les données de la trame reçue sont différentes des données stockées dans le registre LRDRO. La trame est donc acceptée. [0076] Au front montant référencé F10 du signal d'horloge, le registre LRDRO est chargé avec les données de la trame reçue au cycle précédent. [0077] Plusieurs fronts d'horloge peuvent exister entre le front d'horloge référencé F10 et le front d'horloge référencé F12, notamment le fi-ont d'horloge référencé F11. [0078] Au front montant référencé F12 du signal d'horloge, une trame valide est reçue avec l'identifiant 0x80 et une donnée de 0x88. Les données de la trame valide reçues sont égales aux données mémorisées dans le registre LRDRO. Le filtre 0 lève le signal veto_O. La trame n'est donc pas acceptée. [0079] Enfin, au front montant référencé F15 du signal d'horloge, une trame valide est reçue avec l'identifiant 0x80 et une donnée de 0x08. Combinées par une opération logique ET au masque OxOF programmé dans le registre DMRO, les données de la trame validée reçue sont égales aux données mémorisées dans le registre LRDRO. Le filtre 0 lève le signal veto_0. La trame n'est donc pas acceptée. [0080] Dans les modes de réalisation décrits précédemment, le registre de stockage de données LRDRn et le registre de masquage de données DMRNn ont une taille cor- 8 respondant à la taille maximale possible pour une trame CAN, en l'espèce 8 octets pour un bus CAN standard et 64 octets pour un bus CAN FD. En variante, la taille des registres LRDRn et DMRn est inférieure à la taille de la trame de données. [0081] Ainsi, par exemple, pour un bus CAN standard, les registres de stockage de données et de masquage de données peuvent avoir 1 taille de 4, 2 ou 1 octet. [0082] Pour un bus CAN FD, les registres de stockage de données et de masquage de données peuvent avoir 1 taille de 32, 16, 8, 4, 2 ou 1 octet. [0083] L'utilisation de registres de taille inférieure permet un gain en mémoire. Toutefois, seule une partie des données de la trame CAN peut être comparée d'une réception à une autre. [0084] Le filtre reste cependant efficace, en particulier lorsque les trames CAN à filtrer contiennent des données dont la taille est inférieure à la taille maximale d'une trame CAN et seule une partie des données de la trame CAN doit être comparée d'une trame à l'autre, comme décrit précédemment en référence à la figure 5. [0085] Dans cc cas, comme illustré la figure 6, les moyens de filtrage sont complétés par un registre de sélection de données 14 qui pilote des multiplexeurs MUXO MUXJ. [0086] Dans cc cas, les bits des registres LRDRn et DMRn sont numérotées de 0 à j avec : [0087] J = (LRDRn.size in bytes X 8) -1 [0088] Où LRDRn.size in bytes désigne la taille en bits du registre LRDRn. [0089] Les multiplexeurs MUXO à MUXJ permettent de sélectionner la partie des données de la trame à comparer d'une réception à l'autre pour le filtre n. [0090] Le registre DSRn assure un contrôle des multiplexeurs MUXO à MUXJ du filtre n. [0091] Par exemple, dans le cas d'un bus CAN standard avec une taille de registres LRDRn et DMRn de 2 octets, le registre DSRn permet de choisir si les deux octets de données de la trame à comparer d'une réception à l'autre sont les octets 0 et 1, 2 et 3, 4 et 5 ou 6 et 7 des 8 octets de données de la trame reçue dans la mémoire tampon d'assemblage. [0092] L'indice de chacun des n bits de la mémoire tampon d'assemblage sélectionnable par un multiplexeur MUXm est donné par la formule suivante : [0093] (j-F1)x bit+ m [0094] avec bit variant de 0 à n bits -1. [0095] Le chronographe de la figure 7 illustre le fonctionnement du filtre, par exemple, dans le cas d'un bus CAN standard et de registres LRDRn et DMRn de 8 bits et d'un registre DSRn de 3 bits. [0096] Tel qu'illustré, au front montant référencé F4 du signal d'horloge, le filtre 0 est activé depuis l'interface de contrôle du contrôleur CAN. [0097] L'identifiant de trame 0)(86 est programmé dans le registre de stockage d'identifiant de filtre IFRO et 1 masque de données OxOF est programmé dans le registre de masquage DMRO. Le registre DSRO est programmé pour sélectionner l'octet d'indice 2 9 des données de la trame, auquel s'appliquera le masque OxOF du registre DMRO avec une opération logique ET. [0098] Plusieurs fronts d'horloge peuvent exister entre le front d'horloge référencé F4 et le front d'horloge référencé F12. [0099] Au front montant référencé Fl 2du signal d'horloge, une trame valide avec l'identifiant 0x86 est reçue avec par exemple 4 octets de données. [0100] Ces octets sont par exemple : [0101] octet 0 : 0x12 ; octet 1 : 0x34 ; octet 2 : 0x56, octet 3 : 0x78. [0102] La trame est acceptée et le signal LRDRO.write est au niveau haut. [0103] Au front montant référencé F16 du signal d'horloge, le registre LRDRO est chargé avec l'octet d'indice 2 de la trame, soit 0x56. [0104] Plusieurs fronts d'horloge peuvent exister entre le front d'horloge référencé F16 et le front d'horloge référencé F24. [0105] Au front montant référencé F24du signal d'horloge, une trame valide avec identifiant 0)(86 est reçue avec 4 octets de données, par exemple 0X00, 0X00, 0X06, et 0X00. [0106] Combinée par une opération ET logique au masque OxOF programmé dans le registre DMRO. l'octet d'indice 2 des données de la trame valide reçue est égal à l'octet 0x56 mémorisé dans le registre LRDRO. Le filtre 0 lève le signal veto O. La trame n'est donc pas acceptée. [Revendication 1] [Revendication 2] [Revendication 3] [Revendication 4] [Revendication 5] [Revendication 6]