Brevet FR3111455A1 — publié le 20211217

Codage d’un flux de données La présente description concerne un procédé (400) de codage d’un flux de données comprenant : recevoir (405), par un premier neurone impulsionnel, le flux de données ; transmettre (409), par le premier neurone impulsionnel, à un deuxième neurone impulsionnel, un signal de détection d’évènement indiquant un instant de détection d’un évènement du flux de données ; et générer (417), par le deuxième neurone impulsionnel, un signal codé, le signal codé comprenant une impulsion retardée, par rapport à l’instant de détection de l’évènement, en fonction d’une amplitude de l’évènement. Figure pour l'abrégé : Fig. 4 Codage d’un flux de données La présente description concerne de façon générale les dispositifs électroniques et, plus particulièrement, les dispositifs utilisant des neurones impulsionnels (spiking neurons) afin de coder des données. On connaît des neurones impulsionnels capables de coder des flux de données, par exemple des flux vidéo ou audio. De tels neurones mettent par exemple en œuvre des procédés de codage fréquentiel (rate-coding). Les procédés de codage fréquentiel consistent typiquement à émettre périodiquement des impulsions (spikes). Les impulsions sont plus précisément émises à une fréquence variable, cette fréquence étant par exemple générée en fonction d’une amplitude d’un évènement du flux de données que l’on souhaite coder. Les procédés de codage fréquentiel ne permettent toutefois pas d’indiquer précisément un instant d’apparition d’un évènement. En outre, la mise en œuvre des procédés de codage fréquentiel entraîne généralement une consommation énergétique importante. Il existe un besoin d’améliorer les systèmes de codage connus utilisant des neurones impulsionnels et les procédés de codage connus utilisant des neurones impulsionnels. Un mode de réalisation pallie tout ou partie des inconvénients des systèmes de codage connus utilisant des neurones impulsionnels et des procédés de codage connus utilisant des neurones impulsionnels. Un mode de réalisation prévoit un procédé de codage d’un flux de données comprenant : - recevoir, par un premier neurone impulsionnel, le flux de données ; - transmettre, par le premier neurone impulsionnel, à un deuxième neurone impulsionnel, un signal de détection d’évènement indiquant un instant de détection d’un évènement du flux de données ; et - générer, par le deuxième neurone impulsionnel, un signal codé, le signal codé comprenant une impulsion retardée, par rapport à l’instant de détection de l’évènement, en fonction d’une amplitude de l’évènement. Selon un mode de réalisation, préalablement à la réception du flux de données par le premier neurone impulsionnel, le flux de données est filtré. Selon un mode de réalisation, le filtrage du flux de données conserve uniquement les évènements qui présentent une durée supérieure à un premier seuil de durée. Selon un mode de réalisation, le filtrage du flux de données conserve uniquement les évènements qui présentent une durée comprise dans une plage de durées. Selon un mode de réalisation, le signal codé comprend une première impulsion, à l’instant de détection de l’évènement, et l’impulsion retardée. Selon un mode de réalisation, le flux de données correspond à un signal audio analogique. Un mode de réalisation prévoit un module de codage de flux de données, configuré pour mettre en œuvre le procédé tel que décrit. Selon un mode de réalisation, le module comporte un premier circuit de neurones impulsionnels configuré pour recevoir le flux de données et pour transmettre, à un deuxième circuit de neurones impulsionnels, un signal de détection d’évènement indiquant un instant de détection d’un évènement du flux de données, le deuxième neurone impulsionnel étant configuré pour générer un signal codé comprenant une impulsion retardée, par rapport à l’instant de détection de l’évènement, en fonction d’une amplitude de l’évènement. Selon un mode de réalisation, le module comporte en outre un circuit échantillonneur-bloqueur configuré pour mémoriser l’amplitude de l’évènement au moment de la transmission, par le premier neurone, du signal de détection d’évènement au deuxième neurone. Un mode de réalisation prévoit un système comportant : - un module de codage tel que décrit ; et - un réseau de neurones, destiné à traiter des signaux codés provenant du module de codage. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation et modes de mise en œuvre particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, de façon schématique et sous forme de blocs, un exemple de système de traitement de flux de données ; la figure 2 représente, de façon schématique et sous forme de blocs, un mode de réalisation d’un module de codage d’un flux de données ; la figure 3 représente, de façon schématique et sous forme de blocs, un exemple de circuit électronique adapté à mettre en œuvre, à titre d’exemple, le module de codage de la figure 2 ; la figure 4 représente, de façon schématique et sous forme de blocs, un mode de mise en œuvre d’un procédé de codage d’un flux de données ; la figure 5 est un chronogramme illustrant un exemple d’application, par le module de codage de la figure 2, du procédé de la figure 4 ; la figure 6 est un graphique illustrant un exemple de courbe de réponse impulsionnelle d’un filtre ; la figure 7 est un graphique illustrant des exemples de signaux associés au fonctionnement du module de codage de la figure 2 ; la figure 8 est un graphique illustrant des exemples d’autres signaux associés au fonctionnement du module de codage de la figure 2 ; la figure 9 est un graphique illustrant un autre exemple de courbe de réponse impulsionnelle d’un filtre ; la figure 10 est un graphique illustrant des exemples de réponses de différents filtres à un signal d’entrée ; la figure 11 est un graphique illustrant d’autres exemples de signaux de sortie de différents filtres ; la figure 12 est un graphique illustrant encore d’autres exemples de signaux associés au fonctionnement du module de codage de la figure 2 ; la figure 13 est un exemple de circuit d’implémentation d’un neurone impulsionnel ; et la figure 14 est un exemple de chronogramme illustrant le fonctionnement du circuit de la figure 13. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation et modes de mise en œuvre peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation et modes de mise en œuvre décrits ont été représentés et sont détaillés. En particulier, le traitement des flux de données après codage n’est pas détaillé. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. La figure 13 est un exemple de circuit 1300 d’implémentation d’un neurone impulsionnel, par exemple analogue au circuit décrit au chapitre 7 du livre « Event-Based Neuromorphic Systems » (ISBN : 9780470018491). Dans l’exemple représenté, le circuit 1300 comporte une source S1 de courant connectée entre un nœud d’application d’un potentiel Vdd, correspondant par exemple à une tension d’alimentation du neurone 1300, et un autre nœud 1301. La source S1 est par exemple configurée pour fournir un courant électrique Iin. Un potentiel Vmem est présent au nœud 1301. Le potentiel Vmem correspond par exemple à un signal d’entrée, par exemple une tension de membrane, du neurone 1300. Comme illustré en figure 13, le circuit 1300 comporte par ailleurs une capacité Cmem. La capacité Cmem est par exemple connectée entre le nœud 1301 et un nœud d’application d’un potentiel de référence, par exemple la masse. Dans l’exemple représenté, le circuit 1300 comporte en outre des transistors M1, M2 et M3. Les transistors M1, M2 et M3 sont par exemple des transistors MOS (Metal-Oxide-Semiconductor - Métal-Oxyde-Semiconducteur). Plus précisément, dans l’exemple représenté, les transistors M1 et M2 sont des transistors MOS de type N, ou transistors NMOS, tandis que le transistor M3 est un transistor MOS de type P, ou transistor PMOS. Dans l’exemple représenté : - le transistor M1 est connecté entre le nœud 1301 et le nœud d’application du potentiel de référence ; - le transistor M2 est connecté entre le nœud 1301 et une borne d’une source S2 de courant, l’autre borne de la source S2 étant connectée au nœud d’application du potentiel de référence ; et - le transistor M3 est connecté entre le nœud 1301 et une borne d’une source S3 de courant, l’autre borne de la source S3 étant connectée au nœud d’application du potentiel Vdd. Plus précisément, dans l’exemple de la figure 13 : - le transistor M1 a sa source connectée au nœud 1301 et son drain connecté au nœud d’application du potentiel de référence ; - le transistor M2 a sa source connectée au nœud 1301 et son drain relié, via la source S2 de courant, au nœud d’application du potentiel de référence ; et - le transistor M3 a sa source reliée, via la source S3 de courant, au nœud d’application du potentiel Vdd et son drain connecté au nœud 1301. Les sources S2 et S3 de courant fournissent par exemple respectivement des courants électriques IK et INa. Dans l’exemple représenté, le circuit 1300 comporte en outre un amplificateur opérationnel 1303 dont l’entrée non inverseuse (+) reçoit le potentiel Vmem. Un potentiel Vthr est par exemple appliqué sur l’entrée inverseuse (-) de l’amplificateur opérationnel 1303. Le potentiel Vthr correspond par exemple à un seuil de déclenchement du neurone 1300. L’amplificateur opérationnel 1303 est par exemple alimenté par une source Samp de courant, connectée entre l’amplificateur opérationnel 1303 et le nœud d’application du potentiel de référence. La source Samp de courant fournit par exemple un courant électrique Iamp. Dans l’exemple représenté, le circuit 1300 comporte par ailleurs deux portes logiques inverseuses 1305 et 1307, ou inverseurs. Dans cet exemple, la porte logique 1305 comporte un nœud d’entrée 1309, connecté à la sortie de l’amplificateur opérationnel 1303, et un nœud de sortie 1311, connecté à la grille du transistor M3. La porte logique 1307 comporte quant à elle un nœud d’entrée 1313, connecté au nœud de sortie 1311 de la porte logique 1305, et un nœud de sortie 1315, connecté à la grille du transistor M2. À titre d’exemple, la porte logique inverseuse 1305 comporte plus précisément : - un transistor M4, par exemple un transistor NMOS, dont la source est connectée au nœud de sortie 1311 de la porte 1305 et dont le drain est relié, via une source S4 de courant, au nœud d’application du potentiel de référence ; et - un transistor M5, par exemple un transistor PMOS, dont la source est connectée au nœud d’application du potentiel Vdd et dont le drain est connecté au nœud de sortie 1309 de la porte 1305. De façon analogue, la porte logique inverseuse 1307 comporte par exemple plus précisément : - un transistor M6, par exemple un transistor NMOS, dont la source est connectée au nœud de sortie 1315 de la porte 1307 et dont le drain est relié, via une source S6 de courant, au nœud d’application du potentiel de référence ; et - un transistor M7, par exemple un transistor PMOS, dont la source est reliée, via une source S7 de courant, au nœud d’application du potentiel Vdd et dont le drain est connecté au nœud de sortie 1315 de la porte 1307. Les sources S4, S6 et S7 de courant fournissent par exemple respectivement des courants électriques IIp, IKdn et IKup. Dans l’exemple représenté : - la grille du transistor M1 reçoit sur sa grille un potentiel VIk ; - la grille du transistor M2 est commandée par un potentiel VK présent au nœud de sortie 1315 de la porte 1307 ; - la grille du transistor M3 est commandée par le nœud de sortie 1311 de la porte 1305 ; - les grilles respectives des transistors M4 et M5 de la porte 1305 sont commandées par la sortie de l’amplificateur opérationnel 1303 ; et - les grilles respectives des transistors M6 et M7 de la porte 1307 sont commandées par la sortie 1311 de la porte 1305. Dans l’exemple représenté, le circuit 1300 comporte par ailleurs une autre capacité CK. La capacitée CK est par exemple connectée entre le nœud de sortie 1315 de la porte 1307 et le nœud d’application du potentiel de référence. La figure 14 est un exemple de chronogramme illustrant le fonctionnement du circuit 1300 de la figure 13. Le chronogramme de la figure 14 illustre plus particulièrement l’évolution, en fonction du temps t (en abscisse), du potentiel Vmem présent au nœud 1301 du circuit 1300. On suppose initialement, à un instant t0, que le potentiel Vmem du nœud 1301 est sensiblement nul et inférieur au seuil Vthr de déclenchement du neurone 1300. La sortie de l’amplificateur opérationnel 1303 applique alors par exemple une tension négative –Vsat sur le nœud d’entrée 1309 de la porte logique inverseuse 1305. Dans ce cas, le transistor M4 est bloqué tandis que le transistor M5 est passant. Cela a pour effet de porter le nœud de sortie 1311 de la porte 1305, donc la grille du transistor PMOS M3, à un potentiel sensiblement égal au potentiel Vdd. Le transistor M3 est alors bloqué. Toujours à l’instant t0, le nœud d’entrée 1313 de la porte 1307 est porté à un potentiel sensiblement égal au potentiel Vdd. Dans ce cas, le transistor M6 est passant tandis que le transistor M7 est bloqué. Cela a pour effet de porter le nœud de sortie 1315 de la porte 1307, donc la grille du transistor NMOS M2, au potentiel de référence c'est-à-dire la masse dans cet exemple. Le transistor M2 est alors bloqué. À l’instant t0, on suppose en outre que les capacités Cmem et CK sont vides, et que le transistor M1 est bloqué. La source S1 fournit le courant Iin, ce qui a pour effet de commencer à charger la capacité Cmem. En d’autres termes, on débute à l’instant t0 une intégration, par la capacité Cmem, du courant Iin fourni par la source S1. La valeur du potentiel Vmem présent au nœud 1301 augmente alors à mesure que la capacité Cmem se charge. À un instant t1 postérieur à l’instant t0, la valeur du potentiel Vmem présent au nœud 1301 dépasse le seuil Vthr de déclenchement du neurone 1300. Cela provoque alors par exemple une commutation de la sortie de l’amplificateur opérationnel 1303 depuis la tension négative –Vsat vers une tension positive +Vsat. Cela a pour effet de rendre les transistors M4 et M7 passants, tandis que les transistors M5 et M6 deviennent bloqués. On tire ainsi le potentiel du nœud 1311 vers la masse. Le transistor M3 devient alors passant. À partir de l’instant t1, la capacité Cmem est alors chargée non seulement par la source S1, fournissant le courant Iin, mais également par la source S3, fournissant le courant INa. Cela accélère la charge de la capacité Cmem et la tension Vmem se met alors à augmenter de façon plus rapide qu’entre les instants t0 et t1. En outre, toujours à l’instant t1, la capacité CK commence à se charger grâce au courant IKup fourni par la source S7. Cela a pour effet d’augmenter progressivement le potentiel VK présent au nœud de sortie 1315 de l’inverseur 1307. À un instant t2 postérieur à l’instant t1, le potentiel Vmem atteint une valeur maximale Vmax. La valeur maximale Vmax atteinte par le potentiel Vmem à l’instant t1 est par exemple conditionnée par le potentiel Vdd. À partir de l’instant t2, le potentiel Vmem demeure sensiblement constant et égal à Vmax jusqu’à un instant t3 postérieur à l’instant t2. On suppose, à l’instant t3, que le potentiel VK atteint une valeur suffisante pour commuter le transistor M2 depuis l’état bloqué vers l’état passant. La durée séparant l’instant t2 de l’instant t3 est par exemple conditionnée par la valeur de la capacité CK, et par la valeur du courant IKup fourni par la source S7. En supposant que le courant IK véhiculé par la source S2 soit supérieur à la somme des courants Iin et INa respectivement fournis par les sources S1 et S3, la capacité Cmem commence à se décharger à l’instant t3. Cela provoque alors une baisse du potentiel Vmem présent au nœud 1301. À un instant t4 postérieur à l’instant t3, la valeur du potentiel Vmem devient inférieure au seuil Vthr de déclenchement du neurone 1300. Cela provoque alors par exemple une commutation de la sortie de l’amplificateur opérationnel 1303 depuis la tension positive +Vsat vers la tension négative –Vsat. Cela a pour effet de rendre les transistors M5 et M6 passants, tandis que les transistors M4 et M7 deviennent bloqués. On porte ainsi le potentiel du nœud de sortie 1311 de l’inverseur 1305 à une valeur sensiblement égale au potentiel Vdd. Le transistor M3 est alors bloqué, ce qui stoppe la fourniture du courant INa par la source S3. Toujours à l’instant t4, la source S6 se met à véhiculer le courant IKdn. Cela a pour effet de commencer à décharger la capacité CK et à abaisser le potentiel VK du nœud de sortie 1315 de l’inverseur 1307. À un instant t5 postérieur à l’instant t4, on suppose que le potentiel Vmem atteint une valeur sensiblement égale au potentiel de référence. Dans l’exemple représenté, l’évolution du potentiel Vmem entre les instants t1 et t5 correspond à la génération, par le neurone 1300, d’une impulsion de durée égale à t3 – t2. À partir de l’instant t5, le potentiel Vmem demeure sensiblement constant et égal au potentiel de référence jusqu’à un instant t6 postérieur à l’instant t5. La période séparant l’instant t5 de l’instant t6 est appelée période réfractaire du neurone 1300. Pendant cette période, le potentiel VK est suffisamment important pour empêcher la commutation du transistor M2 depuis l’état passant vers l’état bloqué. Ainsi, quel que soit le potentiel Vmem de membrane du neurone 1300 pendant la période réfractaire, le neurone 1300 n’émet aucune impulsion. À l’instant t6, on suppose que le potentiel VK atteint une valeur suffisamment faible pour commuter le transistor M2 depuis l’état passant vers l’état bloqué. La durée séparant l’instant t5 de l’instant t6 est par exemple conditionnée par la valeur de la capacité CK, et par la valeur du courant IKdn véhiculé par la source S6. Dans l’exemple décrit précédemment en relation avec les figures 13 et 14, les capacités Cmem et CK peuvent être réalisées en pratique par des composants discrets. De façon alternative, les capacités Cmem et CK peuvent être constituées par des capacités parasites du circuit 1300, par exemple des capacités de grille des transistors M2 et M6, respectivement. La figure 1 représente, de façon schématique et sous forme de blocs, un exemple de système 100 de traitement de flux de données. Dans l’exemple représenté, le système 100 de traitement de flux de données comporte un module de codage 101 (ENCODER). Le module 101 de codage du système 100 reçoit en entrée un flux de données (DATA FLOW). À titre d’exemple, ce flux de données correspond à un flux audio ou à un flux vidéo. De manière plus générale, le flux de données reçu par le module 101 de codage est par exemple un signal analogique variable dans le temps. Le module 101 permet dans ce cas de coder le signal analogique, par exemple afin de permettre un traitement ultérieur de ce signal par un ou plusieurs modules numériques. Dans la suite de la description, on considère pour simplifier que le flux de données reçu par le module 101 est un signal en tension présentant une amplitude variable au cours du temps. Dans l’exemple représenté, le système 100 de traitement de flux de données comporte en outre un réseau 103 de neurones (NEURAL NETWORK) artificiels. Après codage par le module 101, le réseau 103 de neurones reçoit un signal codé image du flux de données en entrée du module 101. Le réseau 103 de neurones est par exemple adapté à traiter le signal codé transmis par le module 101 de codage. En pratique, le réseau 103 de neurones comprend par exemple une couche d’entrée, recevant le signal transmis par le module 101, une ou plusieurs couches dites cachées, permettant de traiter ce signal, et une couche de sortie, générant un signal issu du traitement par la ou les couches cachées. À titre d’exemple, le réseau 103 de neurones permet de mettre en œuvre des fonctions de reconnaissance d’images, dans le cas où le flux de données reçu par le système 100 est un flux vidéo, ou des fonctions de reconnaissance vocale, dans le cas où ce flux de données est un flux audio. Le réseau 103 de neurones peut être un réseau de classification. En variante, comme dans l’exemple représenté, le système 100 comporte en outre un module 105 (SVM) distinct du réseau 103 de neurones. Le module 105 est par exemple une machine à vecteur de support (Support Vector Machine, en anglais). À titre d’exemple, le module 105 permet d’indiquer une reconnaissance (RECOGNITION) ou une absence de reconnaissance à partir d’un score fourni par le réseau 103 de neurones, par exemple en mettant en œuvre un algorithme d’apprentissage machine (machine learning, en anglais). En figure 1, on a symbolisé un système 100 comportant une machine 105 à vecteur de support séparée du réseau 103 de neurones. Toutefois, en pratique, les fonctions de la machine 105 à vecteur de support et celles du réseau 103 de neurones peuvent être réalisées par un même élément. Le module 101 de codage du système 100 de traitement de flux de données joue un rôle important, notamment car il fournit des données d’entrée dont dépend l’issue du traitement réalisé par le réseau 103 de neurones. La figure 2 représente, de façon schématique et sous forme de blocs, un mode de réalisation d’un module de codage de flux de données, par exemple le module 101 de codage du système 100 de la figure 1. Dans l’exemple représenté, le module 101 de codage comporte un filtre 201 (FILTER). Le filtre 201 reçoit en entrée le flux de données (DATA FLOW) à coder, et fournit en sortie un signal filtré. De manière générale, le filtre 201 est configuré pour ne conserver que des évènements d’intérêt, et pour éliminer des évènements du flux de données que l’on ne souhaite par exemple pas prendre en compte pour le codage et le traitement. À titre de variante, le filtre 201 est omis. Dans ce cas, tous les évènements du flux de données sont par exemple pris en compte pour le codage. Dans l’exemple représenté, le module 101 de codage comporte en outre un neurone 203 (FO NEURON). Le neurone 203 est par exemple un neurone impulsionnel (spiking neuron). Le neurone impulsionnel 203 reçoit en entrée le signal filtré provenant de la sortie du filtre 201. Dans l’exemple considéré où le filtre 201 reçoit en entrée un signal en tension, le signal de sortie du filtre 201 est par exemple un autre signal en tension. Cet autre signal en tension est par exemple utilisé pour exciter une membrane du neurone 203. Le neurone impulsionnel 203 génère en sortie un signal (EVENT SIGNALLING) de détection d’évènement, marquant un instant de détection d’un évènement du flux de données. Par ailleurs, dans l’exemple représenté, le module 101 de codage comporte un module 205 (SAMPLE & HOLD) échantillonneur-bloqueur. Le module 205 échantillonneur-bloqueur reçoit en entrée le signal de sortie du filtre 201. Le module 205 échantillonneur-bloqueur est commandé par un signal de sortie du neurone 203. Le module 205 échantillonneur-bloqueur permet par exemple, sur commande du neurone 203, de mémoriser une valeur du signal de sortie du filtre 201, et de fournir en sortie un signal en tension sensiblement constant égal à cette valeur. Dans l’exemple représenté, le module 101 de codage comporte en outre un autre neurone 207 (FA NEURON). Le neurone 207 est par exemple un neurone impulsionnel. Le neurone impulsionnel 207 reçoit en entrée le signal de sortie du module 205 échantillonneur-bloqueur et est commandé par le signal de sortie du neurone 203. À titre d’exemple, sur commande du neurone 203, le neurone 207 intègre le signal de sortie du module 205 échantillonneur-bloqueur. Le neurone impulsionnel 207 génère, en sortie, un signal impulsionnel (TIME CODING) image d’une amplitude de l’évènement du flux de données détecté par le neurone impulsionnel 203. Les éléments de la figure 2 sont par exemple implémentés par des circuits analogiques. Divers types de neurones peuvent être utilisés pour réaliser les neurones 203 et 207, par exemple des neurones tels que celui implémenté par le circuit 1300 décrit en relation avec les figures 13 et 14. Les éléments de la figure 2 peuvent alternativement être implémentés par un circuit analogique en combinaison avec un ou plusieurs composants numériques. Dans ce cas, les signaux du circuit analogique sont par exemple convertis par un convertisseur analogique-numérique afin de permettre leur traitement par le ou les composants numériques. Les éléments de la figure 2 peuvent alternativement être implémentés au moins partiellement en logiciel, comme cela va maintenant être décrit plus en détail en relation avec la figure 3. La figure 3 représente, de façon schématique et sous forme de blocs, un exemple de circuit électronique 300 adapté à mettre en œuvre le module 101 de la figure 2. Dans l’exemple représenté, le circuit 300 comporte : - une entité de calcul 301 (UC), par exemple une machine d’états, un microprocesseur, un circuit logique programmable, etc. ; - une ou plusieurs zones 303 (MEM) de stockage volatil et/ou non volatil ; - un ou plusieurs bus 305 de données, d’adresses et/ou de commandes entre les différents éléments internes au circuit 300 ; et - une interface d’entrée-sortie 307 (I/O) de communication avec l’extérieur du circuit 300. Le circuit 300 peut inclure divers autres circuits en fonction de l’application, symbolisés en figure 3 par un bloc 309 (FCT). Le filtre 201, les neurones impulsionnels 203 et 207 et le module 205 échantillonneur-bloqueur peuvent être réalisés par le circuit 300. Par exemple, le circuit 300 reçoit, par l’intermédiaire de l’interface d’entrée-sortie 307, un flux numérique généré par un convertisseur analogique-numérique, et ce flux est mémorisé dans la mémoire 303 avant traitement par l’entité de calcul 301. Le fonctionnement du module 101 de codage, et notamment des neurones 203 et 207 de la figure 2, est décrit plus en détail ci-après en relation avec les figures 4 et 5. La figure 4 représente, de façon schématique et sous forme de blocs, un mode de mise en œuvre d’un procédé 400 de codage d’un flux de données. Le procédé 400 est par exemple mis en œuvre par le module 101 de la figure 2. Selon ce mode de mise en œuvre, au cours d’une opération 401 (RECEIVE DATA FLOW), le module 101 reçoit le flux de données à coder. Au cours d’une autre opération 403 (FILTER RELEVANT DATA), le flux de données reçu par le module 101 est filtré par le filtre 201. Le filtre 201 fournit alors en sortie le signal filtré utilisé pour le codage du flux de données. Au cours d’encore une autre opération 405 (APPLY FILTER OUTPUT SIGNAL TO FO NEURON), le signal filtré par le filtre 201 est transmis au neurone 203. Plus précisément, au cours de l’opération 405, le signal de sortie du filtre 201 est par exemple utilisé pour exciter la membrane du neurone 203. En outre, bien que cela ne soit pas représenté en figure 4, le signal de sortie du filtre 201 est transmis au module 205 échantillonneur-bloqueur. Au cours d’encore une autre opération 407 (SIGNAL > FO NEURON THRESHOLD?), on compare la tension de membrane du neurone 203 par rapport à un seuil TH1 de déclenchement du neurone 203. En pratique, on vérifie par exemple si la tension de membrane du neurone 203 excède le seuil TH1, dans le cas d’une implémentation numérique, ou on utilise par exemple un comparateur, tel que l’amplificateur opérationnel 1303 de la figure 13, pour comparer la tension de membrane du neurone 203 par rapport au seuil TH1 (Vthr en figure 13), dans le cas d’une implémentation analogique. Tant que la tension de membrane du neurone 203 n’excède pas le seuil TH1 (sortie N), on poursuit cette vérification au fil de l’évolution du signal appliqué sur la membrane du neurone 203. Lorsque, à l’opération 407, la tension de membrane du neurone 203 dépasse la valeur de seuil de déclenchement du neurone 203 (sortie Y), une impulsion est générée, par le neurone 203, au cours d’encore une autre opération 409 (GENERATE SPIKE USING FO NEURON). Une fois l’impulsion générée par le neurone 203, ce neurone entre dans une période réfractaire semblable à celle précédemment décrite en relation avec la figure 14. Pendant la période réfractaire, la génération d’impulsions par le neurone 203 est par exemple inhibée quelle que soit la valeur de la tension appliquée sur la membrane du neurone 203. La génération de l’impulsion par le neurone 203 au cours de l’opération 409 provoque par exemple simultanément une activation du module 205 échantillonneur-bloqueur, au cours d’une opération 411 (ACTIVATE SAMPLE & HOLD TO HOLD FILTER OUTPUT SIGNAL VALUE), et une activation du neurone 207, au cours d’une autre opération 413 (ACTIVATE FA NEURON TO INTEGRATE SAMPLE & HOLD VALUE). Dans un cas où le neurone 207 est analogue au neurone 1300 de la figure 13, le neurone 207 est par exemple activé en bloquant le transistor M2. Plus précisément : - au cours de l’opération 411, le neurone 203 commande par exemple le module 205 de sorte à mémoriser la valeur de tension de sortie du filtre 201, c'est-à-dire la tension de membrane du neurone 203, au moment de la génération de l’impulsion par le neurone 203 ; et - au cours de l’opération 413, le neurone 207 est activé au moment de la génération de l’impulsion par le neurone 203 et commence à intégrer le signal provenant de la sortie du module 205, c'est-à-dire la valeur de sortie du filtre 201 telle que mémorisée par le module 205 au moment de la génération de l’impulsion par le neurone 203. Au cours d’encore une autre opération 415 (INTEGRATED VALUE > FA NEURON THRESHOLD?), on compare la tension de membrane du neurone 207 par rapport à un seuil TH2 de déclenchement du neurone 207. En pratique, on vérifie par exemple si la tension de membrane du neurone 207 excède le seuil TH2, dans le cas d’une implémentation numérique, ou on utilise par exemple un comparateur, tel que l’amplificateur opérationnel 1303 de la figure 13, pour comparer la tension de membrane du neurone 207 par rapport au seuil TH2 (Vthr en figure 13), dans le cas d’une implémentation analogique. Tant que la tension de membrane du neurone 207 n’excède pas le seuil TH2 (sortie N), on poursuit cette vérification au fil de l’évolution du signal appliqué sur la membrane du neurone 207. Lorsque, à l’opération 415, la tension de membrane du neurone 207 dépasse la valeur de seuil de déclenchement du neurone 207 (sortie Y), une impulsion est générée, par le neurone 207, au cours d’encore une autre opération 417 (GENERATE DELAYED SPIKE USING FA NEURON). Dans cet exemple, plus la valeur de sortie du filtre 201 au moment de l’émission d’une impulsion par le neurone 203 est importante, et plus la durée d’intégration par le neurone 207 est courte. En effet, l’intégration d’un signal élevé, par exemple par une capacité, provoquera un dépassement de seuil plus rapide que l’intégration d’un signal faible. Une fois l’impulsion générée par le neurone 207, ce neurone entre dans une période réfractaire semblable à celle précédemment décrite pour le neurone 203. À titre d’exemple, on poursuit le procédé 400 en revenant à l’étape 403 une fois que les durées d’inhibition des neurones 203 et 207 sont toutes deux écoulées. Le procédé 400 exposé en relation avec la figure 4 permet, à partir d’un flux de données, de produire : - par le neurone 203, une impulsion indiquant un instant d’apparition d’un évènement ; et - par le neurone 205, une autre impulsion présentant, par rapport à l’impulsion produite par le neurone 203, un décalage temporel fonction de l’amplitude de l’évènement. La figure 5 est un chronogramme illustrant un exemple d’application, par le module 101 de codage de la figure 2, du procédé 400 de la figure 4. Le chronogramme de la figure 5 illustre plus précisément un exemple de signaux générés par trois paires P1, P2 et P3 de neurones. Chaque paire P1, P2, P3 de neurones fait par exemple partie d’un module de codage analogue au module 101, et comporte dans cet exemple le neurone 203 et le neurone 207. Chaque module de codage comportant une paire P1, P2, P3 de neurones reçoit par exemple une partie du flux de données, par exemple un signal acquis par un canal sonore dans le cas d’un flux audio. Dans l’exemple de la figure 5, les impulsions générées par les neurones 203 des paires P1, P2 et P3 sont symbolisées par des points, tandis que les impulsions générées par les neurones 207 des paires P1, P2 et P3 sont symbolisées par des croix. Dans la suite de la description, on suppose pour simplifier que les neurones 203 des paires P1, P2 et P3 présentent des tensions de seuil de déclenchement identiques entre elles et que les neurones 207 des paires P1, P2 et P3 présentent des tensions de seuil de déclenchement identiques entre elles, aux dispersions de fabrication près. Dans l’exemple représenté, à un instant t01, les neurones 203 des paires P1, P2 et P3 émettent chacun une impulsion. Cela provient par exemple du fait que les neurones 203 des paires P1, P2 et P3, supposés se trouver initialement hors de la période réfractaire, sont simultanément excités chacun par une tension de membrane supérieure à leur tension de seuil de déclenchement. L’instant t01 marque le début de l’intégration, par les neurones 207 des paires P1, P2 et P3, de la tension de membrane des neurones 203 qui leur sont respectivement associés. On suppose arbitrairement, dans cet exemple, que la tension de membrane du neurone 203 de la paire P1 est, à l’instant t01, supérieure à la tension de membrane du neurone 203 de la paire P3. On suppose en outre, toujours dans cet exemple, que la tension de membrane du neurone 203 de la paire P3 est, à l’instant t01, supérieure à la tension de membrane du neurone 203 de la paire P2. Dans l’exemple représenté, l’intégrale de la tension de membrane du neurone 203 de la paire P1 dépasse la valeur de seuil de déclenchement du neurone 207 de la paire P1 à un instant t02 postérieur à l’instant t01. À l’instant t02, le neurone 207 de la paire P1 génère une impulsion représentative de l’amplitude de la tension de membrane du neurone 203 de la paire P1, qui est elle-même fonction de l’amplitude du signal d’entrée du module comportant la paire P1. De façon analogue, dans l’exemple représenté, l’intégrale de la tension de membrane du neurone 203 de la paire P3 dépasse la valeur de seuil de déclenchement du neurone 207 de la paire P3 à un instant t03 postérieur à l’instant t02. À l’instant t03, le neurone 207 de la paire P3 génère une impulsion représentative de l’amplitude de la tension de membrane du neurone 203 de la paire P3, qui est elle-même fonction de l’amplitude du signal d’entrée du module comportant la paire P3. Par ailleurs, dans l’exemple représenté, l’intégrale de la tension de membrane du neurone 203 de la paire P2 dépasse la valeur de seuil de déclenchement du neurone 207 de la paire P2 à un instant t04 postérieur à l’instant t03. À l’instant t04, le neurone 207 de la paire P2 génère une impulsion représentative de l’amplitude de la tension de membrane du neurone 203 de la paire P2, qui est elle-même fonction de l’amplitude du signal d’entrée du module comportant la paire P2. On suppose que, à un instant t11 postérieur à l’instant t04, les signaux d’entrée respectifs des modules de codage comportant les paires P1, P2 et P3 de neurones sont de même amplitude qu’à l’instant t01. Les neurones 203 des paires P1, P2 et P3 émettent alors une impulsion à l’instant t11, puis les neurones 207 des paires P1, P3 et P2 émettent tour à tour une impulsion à des instants t12, t13 et t14 successifs. Les instants t12, t13 et t14 sont par exemple analogues, respectivement, aux instants t02, t03 et t04 précédemment décrits. De façon analogue, on suppose que, à un instant t21 postérieur à l’instant t14, les signaux d’entrée respectifs des modules de codage comportant les paires P1, P2 et P3 de neurones sont de même amplitude qu’à l’instant t01. Les neurones 203 des paires P1, P2 et P3 émettent alors chacun une impulsion à l’instant t21, puis les neurones 207 des paires P1, P3 et P2 émettent tour à tour une impulsion à des instants t22, t23 et t24 successifs. Les instants t22, t23 et t24 sont par exemple analogues, respectivement, aux instants t02, t03 et t04 précédemment décrits. Dans l’exemple représenté, on suppose que les signaux d’entrée respectifs des modules de codage comportant les paires P1, P2 et P3 de neurones varient entre l’instant t24 et un instant t31 postérieur à l’instant t24. Plus précisément, on suppose arbitrairement qu’à l’instant t31 la tension de membrane du neurone 203 de la paire P2 est supérieure à la tension de membrane du neurone 203 de la paire P1. On suppose en outre que la tension de membrane du neurone 203 de la paire P1 est, à l’instant t31, supérieure à la tension de membrane du neurone 203 de la paire P3. Les neurones 203 des paires P1, P2 et P3 émettent chacun une impulsion à l’instant t31. L’instant t31 marque le début de l’intégration, par les neurones 207 des paires P1, P2 et P3, de la tension de membrane des neurones 203 qui leur sont respectivement associés. Dans l’exemple représenté, les intégrales des tensions de membrane des neurones 203 des paires P2, P1 et P3 dépassent respectivement les valeurs de seuil de déclenchement des neurones 207 associés à des instants successifs t32, t33 et t34 postérieurs à l’instant t31. Les neurones 207 des paires P2, P1, P3 génèrent tour à tour une impulsion à l’instant t32, t33, t34. La figure 6 est un graphique illustrant un exemple de courbe 601 de réponse impulsionnelle d’un filtre, par exemple le filtre 201 du module de codage 101 de la figure 2. Le graphique de la figure 6 illustre plus précisément un exemple d’évolution, en fonction du temps (time), d’une amplitude (amplitude) d’un signal de sortie du filtre 201 lors de l’application d’une impulsion sur l’entrée du filtre 201. Le signal de sortie du filtre 201 est par exemple un signal en tension utilisé pour exciter la membrane du neurone 203 du module de codage 101. Le graphique de la figure 6 illustre en particulier un exemple dans lequel le filtre 201 est un filtre passe-bas. Dans ce cas, le filtre 201 est par exemple destiné à éliminer des évènements du flux de données qui présentent une fréquence d’apparition supérieure à un seuil de fréquence, de manière à ne conserver que des évènements dont la fréquence d’apparition est inférieure à ce seuil. Cela revient à éliminer des évènements du flux de données qui présentent une durée d’apparition inférieure à un seuil de durée, de manière à conserver uniquement des évènements dont la durée d’apparition est supérieure à ce seuil. À titre d’exemple, cela permet de ne pas prendre en compte des évènements fugaces susceptibles de nuire au traitement ultérieur du flux de données. Dans ce cas, le filtre 201 comprend par exemple une capacité et une résistance reliées ou connectées en série entre une borne d’entrée du filtre 201, correspondant par exemple à une borne d’entrée du module 101 de codage, et une borne de sortie du filtre 201. La figure 7 est un graphique illustrant des exemples de signaux associés au fonctionnement du module de codage 101 de la figure 2. Le graphique de la figure 7 illustre plus précisément, par des courbes 701, 703, 705 et 707, des exemples d’évolution, en fonction du temps (time), d’une amplitude (amplitude) d’un signal de sortie du filtre 201. Dans cet exemple, on suppose que le filtre 201 est un filtre passe-bas comme exposé en relation avec la figure 6. Les courbes 701, 703, 705 et 707 correspondent par exemple aux signaux de sortie du filtre 201 obtenus en appliquant, sur l’entrée du filtre 201, des signaux de type échelon présentant des amplitudes différentes. Dans l’exemple représenté, les courbes 703, 705 et 707 illustrent plus particulièrement des exemples de signaux de sortie du filtre 201 obtenus en appliquant des échelons d’amplitudes respectivement égales à la moitié, au tiers et au quart de l’amplitude de l’échelon appliqué pour obtenir la courbe 701. En pratique, les signaux 701, 703, 705 et 707 de sortie du filtre 201 peuvent être utilisés pour exciter la membrane du neurone 203 du module de codage 101. En figure 7, une ligne 709 horizontale en pointillé symbolise le seuil TH1 de déclenchement du neurone 203. Dans l’exemple représenté, les courbes 701, 703, 705 et 707 intersectent la ligne 709 en des points différents. Cela signifie notamment que l’instant d’émission d’une impulsion par le neurone 203, conditionné par l’instant de franchissement du seuil TH1, varie en fonction de l’amplitude du signal ayant provoqué un déclenchement du neurone 203. Il en résulte que l’instant auquel débute l’intégration, par le neurone 207, de la tension de membrane du neurone 203 et l’amplitude de cette tension sont corrélés. Cela est susceptible de nuire au codage d’un flux de données, par exemple dans le cas d’un système comportant plusieurs modules de codage 101 où des déphasages peuvent apparaître entre les neurones 203 du système. Afin de synchroniser les impulsions émises par un système comportant plusieurs neurones 203 associés chacun à un neurone 207, on peut par exemple utiliser l’impulsion générée par l’un des neurones 203 du système : - pour diminuer temporairement les seuils TH1 des autres neurones 203 du système n’ayant pas encore émis d’impulsion, de façon à anticiper le déclenchement de ces neurones ; ou - pour réduire les périodes réfractaires des autres neurones 203 du système, de façon à réinitialiser ces neurones s’ils présentent un retard par rapport au neurone 203 dont l’impulsion est utilisée pour la synchronisation. En variante, la synchronisation des neurones 203 est par exemple réalisée en utilisant l’impulsion générée par l’un des neurones 203 du système pour imposer une période réfractaire supplémentaire aux autres neurones 203 du système, de façon à attendre que tous les neurones 203 soient dans un état leur permettant d’émettre une impulsion. La figure 8 est un graphique illustrant des exemples d’autres signaux associés au fonctionnement du module de codage 101 de la figure 2. Le graphique de la figure 8 illustre plus précisément, par des courbes 801, 803, 805 et 807, des exemples d’évolution, en fonction du temps (time), d’une amplitude (amplitude) de la tension de membrane du neurone 207. Dans l’exemple représenté, les courbes 801, 803, 805 et 807 illustrent plus particulièrement des exemples de signaux obtenus lors de l’intégration, par le neurone 207, de la tension de membrane du neurone 203, telle qu’illustrée par exemple par les courbes 701, 703, 705 et 707 de la figure 7. Dans l’exemple représenté, les courbes 803, 805 et 807 sont obtenues en appliquant, sur l’entrée du filtre 201, des échelons de tension d’amplitudes respectivement égales à la moitié, au tiers et au quart de l’amplitude de l’échelon de tension appliqué pour obtenir la courbe 801. En figure 8, une ligne 809 horizontale en pointillé symbolise le seuil TH2 de déclenchement du neurone 207. Dans l’exemple représenté, les courbes 801, 803, 805 et 807 intersectent la ligne 809 en des points différents. Dans l’exemple représenté, plus l’amplitude du signal d’entrée est importante et plus le délai de franchissement du seuil TH2 est court. Plus précisément, dans l’exemple représenté, le délai de franchissement du seuil TH2 est inversement proportionnel à l’amplitude du signal d’entrée. Cela correspond par exemple à un cas où le neurone 207 intègre la tension de membrane du neurone 203 de façon linéaire. On obtient alors un codage non uniforme. Il est parfois souhaitable, pour certaines applications, de se ramener à un codage uniforme, c’est-à-dire un codage pour lequel le délai de franchissement du seuil TH2 est directement proportionnel à l’amplitude du signal d’entrée. Le neurone 207 peut alors par exemple être configuré pour intégrer la tension de membrane du neurone 203 de façon non linéaire. À titre d’exemple, on peut notamment faire correspondre, à chaque valeur x de la tension de membrane du neurone 203, une valeur y de délai de franchissement du seuil TH2 obtenue en appliquant l’équation suivante : Dans l’expression Math 1 ci-dessus, les lettres a, b, c, d, f, h et k représentent des constantes, par exemple : a = 1,75E-2 ; b = 3,185 ; c = 1,5E-15 ; d = 16 ; f = 7,7E-2 ; h = 1,087 ; et k = 2E-2. De manière générale, la personne du métier est capable de déterminer la valeur de chaque constante a, b, c, d, f, h et k en fonction de l’application. En pratique, la transformation correspondant à la relation Math 1 peut par exemple être appliquée par un module logiciel. En variante, la transformation correspondant à la relation Math 1 est appliquée par un module matériel, par exemple un circuit comportant des transistors MOS (Metal-Oxide Semiconductor - métal-oxyde-semiconducteur). La figure 9 est un graphique illustrant un autre exemple de courbe 901 de réponse impulsionnelle d’un filtre, par exemple le filtre 201 du module de codage 101 de la figure 2. Le graphique de la figure 9 illustre plus précisément un exemple d’évolution, en fonction du temps (time), d’une amplitude (amplitude) d’un signal de sortie du filtre 201 lors de l’application d’un évènement d’une durée limitée en entrée du filtre 201. Le signal de sortie du filtre 201 est par exemple un signal en tension utilisé pour exciter la membrane du neurone 203 du module de codage 101. Le graphique de la figure 9 illustre plus précisément un exemple dans lequel le filtre 201 est un filtre passe-bande. Dans ce cas, le filtre 201 est par exemple destiné à éliminer des évènements du flux de données qui présentent une fréquence d’apparition située en dehors d’une plage de fréquences, ou une durée d’apparition située en dehors d’une plage de durées, de sorte à ne conserver que des évènements dont la fréquence d’apparition est située à l’intérieur de la plage de fréquences, ou une durée d’apparition située à l’intérieur de la plage de durées. Par rapport au filtre passe-bas, cela permet par exemple en outre d’écarter des évènements stationnaires susceptibles de nuire au traitement ultérieur du flux de données. On peut aussi recourir au filtre passe-bande pour cibler des évènements d’une durée ou d’une fréquence d’apparition donnée. Dans l’exemple représenté, la courbe 901 présente : - une bosse 903, traduisant par exemple l’apparition d’un évènement ; - un creux 905, traduisant par exemple la disparition de l’évènement ; et - une autre bosse 907, traduisant par exemple la réapparition de l’évènement. À titre d’exemple, le filtre 201 peut dans ce cas être utilisé pour détecter la disparition de l’évènement. Le filtre 201 est alors par exemple un filtre passe-bande calibré par rapport à la durée correspondant au creux 905. En pratique, le filtre 201 est par exemple réalisé en utilisant des composants analogiques, par exemple par addition et/ou soustraction de filtres à réponse impulsionnelle finie (Finite Impulse Response - FIR, en anglais), ou en utilisant des composants numériques dans lesquels des coefficients adéquats sont paramétrés. La figure 10 est un graphique illustrant des exemples de réponses de différents filtres à un signal d’entrée représenté par une courbe 1001. Le graphique de la figure 10 illustre plus précisément, par des courbes 1003, 1005, 1007, 1009, 1011 et 1013, des exemples d’évolution, en fonction du temps (time), d’une amplitude (amplitude) d’un signal de sortie du filtre 201. Dans cet exemple, on suppose que le filtre 201 est un filtre passe-bande comme exposé en relation avec la figure 9. À différence de la figure 9, où l’on cherche à détecter la disparition temporaire d’un évènement, les courbes 1003, 1005, 1007, 1009, 1011 et 1013 de la figure 10 illustrent un exemple dans lequel on cherche à détecter l’apparition temporaire d’un évènement. Les courbes 1003, 1005, 1007, 1009, 1011 et 1013 de la figure 10 ont, au signe près, une allure semblable à celle de la courbe 901 de la figure 9. En d’autres termes, les courbes 1003, 1005, 1007, 1009, 1011 et 1013 ont une allure semblable à une courbe que l’on obtiendrait par symétrie verticale, par rapport à l’axe des abscisses, de la courbe 901. Les courbes 1003, 1005, 1007, 1009, 1011 et 1013 correspondent par exemple aux signaux de sortie du filtre 201 obtenus en réponse à un évènement d’une durée d’environ 0,1 s, symbolisé par la courbe 1001. Plus précisément, dans l’exemple représenté, les courbes 1003, 1005, 1007, 1009, 1011 et 1013 correspondent à des signaux de réponse de filtres 201 présentant des échelles de temps (timescales, en anglais) respectivement égales à 12 ms, 24 ms, 48 ms, 96 ms, 192 ms et 384 ms. Par échelle de temps, on entend plus précisément une durée d’un lobe principal d’une réponse impulsionnelle finie d’un filtre. Dans l’exemple représenté, l’échelle de temps correspond à la durée du lobe principal de la réponse impulsionnelles finie à l’origine de la courbe 1003, 1005, 1007, 1009, 1011, 1013 lorsque le filtre associé est sollicité par l’évènement 1001. À titre d’exemple, les courbes 1003, 1005, 1007, 1009, 1011 et 1013 sont obtenues en utilisant une cascade de filtres RC, par exemple de type FIR. L’équation ci-dessous permet d’obtenir la réponse impulsionnelle finie RC FIR , à une position n donnée de la cascade de filtres FIR, des filtres, les courbes 1003, 1005, 1007, 1009, 1011 et 1013 illustrant les réponses de ces filtres lorsqu’ils reçoivent le signal d’entrée 1001 : Dans l’expression Math 2 ci-dessus, uk désigne une constante de temps. En figure 10, une ligne 1015 horizontale en pointillé symbolise le seuil TH1 de déclenchement du neurone 203. Dans l’exemple représenté, les courbes 1003, 1005, 1007, 1009, 1011 et 1013 intersectent toutes la ligne 1015. En d’autres termes, l’évènement symbolisé par la courbe 1001 est détecté quel que soit le filtre choisi. On peut donc prévoir d’associer, au neurone 203 du module de codage 101, une banque de filtres permettant de détecter des évènements dont la durée s’étend sur une plage de durées plus ou moins restreinte en fonction, par exemple, du nombre de filtres que comporte cette banque. La figure 11 est un graphique illustrant, par des courbes 1103, 1105, 1107, 1109, 1111 et 1113, d’autres exemples de signaux de sortie de différents filtres. Plus précisément, les courbes 1103, 1105, 1107, 1109, 1111 et 1113 illustrent respectivement un exemple d’échantillonnage, par un détecteur de pic, des signaux représentés par les courbes 1003, 1005, 1007, 1009, 1011 et 1013 de la figure 10. L’échantillonnage par un détecteur de pic permet par exemple de maintenir les signaux représentés par les courbes 1003, 1005, 1007, 1009, 1011 et 1013 à leur valeur maximale. On peut alors avantageusement prévoir de retarder l’émission de l’impulsion par le neurone 203 de manière à ce que cette émission ait par exemple lieu à un instant t0 identique quel que soit le filtre choisi. Le détecteur de pic peut par exemple être implémenté par une capacité associée à une diode. La figure 12 est un graphique illustrant encore d’autres exemples de signaux associés au fonctionnement du module de codage 101 de la figure 2. Le graphique de la figure 12 illustre plus précisément, par des courbes 1203, 1205, 1207, 1209, 1211 et 1213, des exemples d’évolution, en fonction du temps (time), d’une amplitude (amplitude) de la tension de membrane du neurone 207, mémorisée par le module échantillonneur-bloqueur 205 au moment de la génération d’une impulsion par le neurone 203. Dans l’exemple représenté, les courbes 1203, 1205, 1207, 1209, 1211 et 1213 illustrent plus particulièrement des exemples de signaux obtenus lors de l’intégration, par le neurone 207, de la tension de membrane du neurone 203. Plus précisément, les courbes 1203, 1205, 1207, 1209, 1211, 1213 sont par exemple respectivement obtenues en intégrant l’amplitude de la tension de membrane du neurone 203 lue, à l’instant t0 de la figure 11, sur la courbe 1003, 1005, 1007, 1009, 1011, 1013 correspondante. En figure 12, une ligne 1215 horizontale en pointillé symbolise le seuil TH2 de déclenchement du neurone 207. Dans l’exemple représenté, les courbes 1203, 1205, 1207, 1209, 1211 et 1213 intersectent la ligne 1215 en des points différents. Dans l’exemple représenté, plus l’amplitude du signal d’entrée est importante et plus le délai de franchissement du seuil TH2, après génération de l’impulsion par le neurone 203, est court. Plus précisément, dans l’exemple représenté, le délai de franchissement du seuil TH2 est inversement proportionnel à l’amplitude du signal d’entrée. Cela correspond par exemple à un cas où le neurone 207 intègre la tension de membrane du neurone 203 de façon linéaire. On obtient alors un codage non uniforme. Il est toutefois possible, comme exposé en relation avec la figure 8, de se ramener à un codage uniforme en appliquant une transformation appropriée. L’adaptation de ce qui a été décrit en relation avec la figure 8 au codage décrit en relation avec la figure 12 est à la portée de la personne du métier. Un avantage des modes de réalisation décrits tient au fait qu’ils permettent de générer une impulsion indiquant l’apparition de l’évènement, et une autre impulsion permettant de coder l’amplitude de l’évènement. Cela engendre une consommation énergétique moindre que pour les modules de codage mettant en œuvre un codage fréquentiel. Plus précisément, le codage d’un évènement par les modes de réalisation et modes de mise en œuvre décrits n’implique la génération que de deux impulsions : une impulsion, générée par le neurone 203, pour signaler l’instant d’apparition de l’évènement et une autre impulsion, générée par le neurone 207, pour coder l’amplitude de l’évènement. Divers modes de réalisation, modes de mise en œuvre et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation, modes de mise en œuvre et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. En particulier, la personne du métier est capable d’adapter les modes de réalisation et modes de mise en œuvre décrits à tout type de flux de données. Enfin, la mise en œuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. En particulier, la mise en œuvre pratique du module de codage 101 est à la portée de la personne du métier. Procédé (400) de codage d’un flux de données comprenant : - recevoir (405), par un premier neurone impulsionnel (203), le flux de données ; - transmettre (409), par le premier neurone impulsionnel, à un deuxième neurone impulsionnel (207), un signal de détection d’évènement indiquant un instant de détection d’un évènement du flux de données ; et - générer (417), par le deuxième neurone impulsionnel, un signal codé, le signal codé comprenant une impulsion retardée, par rapport à l’instant de détection de l’évènement, en fonction d’une amplitude de l’évènement. Procédé selon la revendication 1, dans lequel, préalablement à la réception (405) du flux de données par le premier neurone impulsionnel (203), le flux de données est filtré (403). Procédé selon la revendication 2, dans lequel le filtrage (403) du flux de données conserve uniquement les évènements qui présentent une durée supérieure à un premier seuil de durée. Procédé selon la revendication 2, dans lequel le filtrage (403) du flux de données conserve uniquement les évènements qui présentent une durée comprise dans une plage de durées. Procédé selon l’une quelconque des revendications 1 à 4, dans lequel le signal codé comprend une première impulsion, à l’instant de détection de l’évènement, et l’impulsion retardée. Procédé selon l’une quelconque des revendications 1 à 5, dans lequel le flux de données correspond à un signal audio analogique. Module (101) de codage de flux de données, configuré pour mettre en œuvre le procédé selon l’une quelconque des revendications 1 à 6. Module de codage selon la revendication 7, comportant un premier circuit de neurones impulsionnels (203) configuré pour recevoir le flux de données et pour transmettre, à un deuxième circuit de neurones impulsionnels (207), un signal de détection d’évènement indiquant un instant de détection d’un évènement du flux de données, le deuxième neurone impulsionnel étant configuré pour générer un signal codé comprenant une impulsion retardée, par rapport à l’instant de détection de l’évènement, en fonction d’une amplitude de l’évènement. Module selon la revendication 8, comportant en outre un circuit échantillonneur-bloqueur (205) configuré pour mémoriser l’amplitude de l’évènement au moment de la transmission, par le premier neurone (203), du signal de détection d’évènement au deuxième neurone (207). Système (100) comportant : - un module (101) de codage selon l’une quelconque des revendications 7 à 9 ; et - un réseau de neurones (103), destiné à traiter des signaux codés provenant du module de codage.