Grands multiplexeurs / sélecteurs de données


10

Je cherche un multiplexeur IC avec 128: 1 ou plusieurs entrées (256 serait plutôt bien). J'aurais pensé qu'un tel appareil serait assez courant, mais j'ai du mal à le localiser. Il se peut que je regarde au mauvais endroit, mais je pense qu'il me manque quelque chose - peut-être que les grands multiplexeurs d'entrée ne sont pas souvent utilisés? Si oui, quelle est l'alternative?

Le max. J'ai pu trouver le fidèle ol '74150 avec 16 entrées.

Je comprends que je peux construire un grand multiplexeur en combinant plusieurs multiplexeurs 16 entrées - mais j'espère une solution plus intégrée.


Je conçois un circuit capable de tester les circuits ouverts et les courts-circuits dans un faisceau de câbles automobile. Un harnais typique peut contenir environ 200 fils. Actuellement, le circuit utilise 16 multiplexeurs pour gérer 128 fils.

Les multiplexeurs sont connectés à un seul multiplexeur à 16 entrées et celui-ci est à son tour connecté à un uC. De même, à l'autre extrémité, il y a 16 démultiplexeurs. Les démultiplexeurs commutent les fils sur une tension. En même temps, ce fil est commuté sur l'une des entrées uC via le multiplexeur.

Si le fil est OK, le uC devrait voir un haut à son entrée. L'uC vérifie ensuite tous les autres fils. Si l'un d'eux est élevé, cela signifie qu'il y a un court-circuit entre ces deux fils.

Remarque: ce circuit n'a pas été conçu par moi. Cela a été fait en 2003. Je cherche juste à améliorer ce circuit. Notez également qu'aucun des faisceaux de câbles ne contient de bus de données CAN ou tout autre type de bus. Ses fils simples pour l'alimentation et les signaux.

Voici un schéma de principe très approximatif que j'ai fait rapidement juste pour ce post. J'espère que cela rend le problème plus clair car l'anglais n'est pas ma langue maternelle et j'ai du mal à expliquer les choses via le texte. Même si le diagramme n'est pas très bon, j'espère qu'il améliore les choses. Les lignes allant latéralement dans le demux et le mux du MCU sont les lignes d'adresse.

Notez que l'un des fils est divisé en 3. J'ai fait cela intentionnellement pour montrer que certaines connexions sont un-à-plusieurs et pas seulement un-à-un. Le plus complexe que j'ai vu est un fil divisé en 60 jonctions. C'est pourquoi le demux et le mux ont des lignes d'adresse distinctes. Le demux pourrait être à l'entrée no. 20 tandis que le multiplexeur peut basculer entre 20,21,22, etc. Vérifiez toutes les lignes qui sont connectées à la ligne 20.

entrez la description de l'image ici

Si vous pensez qu'il existe une meilleure façon de concevoir cela, faites-le moi savoir.


Recherchez-vous 128: 1 ou 128 fois 2: 1?
Majenko

128: 1. Désolé d'avoir oublié de mentionner. Je m'excuse.
Saad

@saad Mon expérience a montré que presque chaque fois que quelqu'un demande ce genre de chose, c'est parce qu'il fait quelque chose de fondamentalement mauvais. Je suggère d'indiquer ce que vous essayez d'accomplir, plutôt que ce que vous pensez être la solution. De cette façon, nous pourrions être en mesure de vous donner une meilleure solution que de mettre en cascade un tas de multiplexeurs 16: 1.

@David Kessner, veuillez consulter l'édition. En fait, je me suis renseigné sur la conception de ce site il y a quelques semaines, mais peu de réponses. J'apprécierais n'importe quelle forme en entrée.
Saad

1
En fonction de la rapidité, de la fréquence et de la fréquence de commutation des entrées, l'utilisation de multiplexeurs en cascade pourrait grandement faciliter le routage. Au lieu d'avoir à acheminer 256 signaux vers un seul emplacement sur la carte, on pourrait acheminer 16 signaux vers chacun des 16 emplacements, acheminer un signal de chacun de ces emplacements vers une puce à 16 entrées et acheminer quatre signaux partagés vers tous les multiplexeurs. L'utilisation d'une puce permettrait en théorie d'obtenir l'un des 256 signaux d'entrée à la sortie avec un seul "retard de porte" correspondant à deux transistors en série (type N pour front descendant; P pour montant), mais ...
supercat

Réponses:


12

Bien qu'un énorme multiplexeur / démultiplexeur fonctionnera certainement, la connexion d'un groupe de multiplexeurs 16: 1 représente beaucoup de travail et présente certaines limitations qui peuvent ou non être un problème. L'approche la plus conventionnelle consisterait à utiliser des registres à décalage. Utilisez un registre d'entrée série / parallèle pour l'extrémité "pilote" et un registre d'entrée parallèle / série pour l'extrémité réceptrice. La bonne chose à propos des registres à décalage est qu'ils peuvent facilement être connectés en guirlande pour créer un registre à décalage plus long. Un registre à décalage 256 bits ou même 1024 bits n'est pas du tout un problème. Avec une mise en mémoire tampon, le flux série peut même être passé sur un câble vers un autre PCB (si cela vous facilite la tâche).

Il existe de nombreuses puces de registre à décalage 8 bits comme le 74xx597, mais un CPLD est BEAUCOUP mieux pour cela. Mais vous n'avez pas besoin d'un CPLD géant 256+ broches. Au lieu de cela, vous pouvez utiliser plusieurs CPLD plus petits et les chaîner ensemble. Bien que je n'aie pas fait le calcul, je suis assez sûr que l'utilisation de plus de CPLD de petite à moyenne taille serait moins cher qu'un grand CPLD - et vous n'avez pas à vous soucier des BGA.

Ce CPLD serait assez intensif Flip-Flop. Cela signifie qu'une architecture CPLD normale (comme celle utilisée par Xilinx) n'est pas aussi bonne que quelque chose de plus FPGA. Altera et Lattice ont toutes deux des CPLD avec beaucoup plus de tongs par dollar que ce que Xilinx a.

Bien que vous n'ayez peut-être pas beaucoup d'expérience avec les CPLD, cette conception est très simple et les avantages de l'utilisation d'un CPLD sont énormes. Il serait très utile de votre temps pour apprendre à programmer les CPLD pour cela.

De plus, les avantages de l'utilisation d'un registre à décalage au lieu d'un multiplexeur ne sont pas faciles à voir au départ. Surtout, vous obtenez beaucoup de flexibilité dans la façon dont vous conduisez et détectez les fils. Vous pouvez même tester plusieurs faisceaux en même temps (si vous avez suffisamment de registres à décalage). Tout ce que vous pouvez tester avec des multiplexeurs peut être fait avec des registres à décalage, mais les registres à décalage peuvent faire plus. Le seul inconvénient des registres à décalage est qu'il est plus lent, bien qu'il soit toujours plus rapide que ce dont vous avez besoin (IE, le gars qui connecte et déconnecte le faisceau sera beaucoup plus lent que le temps de tester avec des registres à décalage).

Je dois également dire que même si vous utilisez des CPLD, les registres à décalage sont toujours plus faciles que les multiplexeurs. L'essentiel est qu'ils sont plus petits - bien que pour voir l'avantage / inconvénient réel, vous devez réellement faire la conception dans les deux et voir de quelle taille de CPLD vous avez besoin. Cela dépendra assez du type d'architecture CPLD utilisé, donc toutes les généralisations faites avec Xilinx ne s'appliqueront pas à Altera.

Edit: Vous trouverez ci-dessous un peu plus de détails sur la façon d'effectuer le test à l'aide de registres à décalage ...

Pour effectuer le test, vous pouvez ignorer le fait que vous utilisez des registres à décalage et considérer uniquement que les données sont pilotées sur le "côté entraînement" et, espérons-le, lues sur le "côté réception". La façon dont vous avez obtenu les données sur place et en arrière (via la série) est largement hors de propos. Ce qui est important, c'est que les données que vous pouvez conduire soient complètement arbitraires.

Les données avec lesquelles vous conduisez sont appelées "vecteurs de test". Les données que vous ATTENDEZ LIRE font également partie des vecteurs de test. Si le câble est câblé avec une relation 1: 1, vous vous attendez à ce que les données de conduite et les données de réception soient les mêmes que celles que vous conduisez. Si le câble n'est pas 1: 1, alors ce serait évidemment différent.

Si vous avez utilisé une approche basée sur MUX, vous utilisez toujours des vecteurs de test, mais vous n'avez aucun contrôle sur le type de vecteur de test. Avec les multiplexeurs, le motif est appelé "Walking Ones" ou "Walking Zeros". Disons que vous avez un câble à 4 broches. Avec ceux qui marchent, vous conduiriez le modèle suivant: 0001, 0010, 0100, 1000. Les zéros de marche sont les mêmes, mais inversés.

Pour un test de continuité simple, marcher des zéros / fonctionne assez bien. Selon la façon dont votre câble est connecté, il existe d'autres modèles qui pourraient être effectués pour accélérer le test ou pour tester des choses spécifiques. Par exemple, si certaines broches ne peuvent jamais être court-circuitées avec d'autres broches, vous pouvez optimiser le motif de test pour ne pas regarder ces cas et ainsi courir plus rapidement. Traiter avec autre chose qu'un marcher-uns / zéros peut devenir compliqué du côté logiciel des choses à gérer.

La méthode ultime de génération de vecteurs de test est effectuée pour les tests JTAG. JTAG, également appelé balayage des limites, est un schéma similaire pour tester les connexions entre les puces sur un PCB (et entre les PCB). La plupart des puces BGA utilisent JTAG. JTAG a des registres à décalage dans chaque puce qui peuvent être utilisés pour piloter / lire chaque broche. Un logiciel compliqué et coûteux examine la netlist du PCB et générera les vecteurs de test. Un testeur de câbles sophistiqué pourrait faire la même chose, mais ce serait beaucoup de travail.

Heureusement, pour vous, il existe un moyen BEAUCOUP PLUS FACILE de générer les vecteurs de test. Voici ce que vous faites ... Connectez un bon câble connu aux registres à décalage. Exécutez un modèle de marche zéros / uns à travers le côté conducteur. Pendant que vous faites cela, enregistrez ce qui est vu du côté récepteur. Au niveau simple, vous pouvez simplement l'utiliser comme vecteurs de test. Lorsque vous connectez un mauvais câble et effectuez les mêmes marches / zéros, les données que vous recevez ne correspondront pas aux données que vous avez enregistrées précédemment - et donc vous savez que le câble est mauvais. Cela passe par plusieurs noms, mais tous les noms sont une variante du terme «apprentissage», comme l'auto-apprentissage ou l'auto-apprentissage.

Jusqu'à présent, cela gère facilement le cas où une broche de l'extrémité d'entraînement va à plus d'une broche de l'extrémité de réception, mais ne gère pas l'autre cas où plusieurs broches de l'extrémité d'entraînement sont connectées ensemble. Pour cela, vous avez besoin de choses spéciales pour éviter les dommages causés par les conflits de bus, et toutes vos broches de registre à décalage doivent être bidirectionnelles (IE, fonctionnent à la fois comme pilote et récepteur). Voici ce que vous faites:

  1. Mettez une résistance de rappel sur chaque broche. Quelque chose autour de 20K à 50k ohms devrait convenir.

  2. Mettez une résistance série entre le CPLD et le câble. Quelque chose autour de 100 ohms. Cela permet d'éviter les dommages causés par les décharges électrostatiques et autres. Un capuchon de 2700 pF à la terre (du côté de la broche CPLD de la résistance de 100 ohms) aidera également à l'ESD.

  3. Programmez le CPLD de manière à ce qu'il ne fasse que conduire le signal haut, jamais bas. Si vos données de sortie sont un «0», le CPLD trisignera cette broche et permettra à la résistance de rappel d'abaisser la ligne. De cette façon, si plusieurs broches CPLD entraînent le même fil sur le câble haut, aucun dommage ne se produira (car le CPLD ne conduira pas également le même fil bas).

  4. Chaque broche est à la fois un pilote et un récepteur. Donc, si vous avez un câble à 256 broches, vos registres à décalage seront 512 bits pour le pilote et 512 bits pour le récepteur. La conduite et la réception peuvent être effectuées dans le même CPLD, donc la complexité du PCB ne change pas vraiment à cause de cela. Vous aurez 3 ou 4 bascules par broche de câble dans ce CPLD, alors planifiez en conséquence.

Vous effectuez ensuite le même motif de marche / zéro en comparant les données reçues avec ce qui a été enregistré précédemment. Mais maintenant, il gérera toutes sortes de connexions arbitraires dans le faisceau de câbles.


Merci beaucoup. Je vais commencer à lire tout de suite à ce sujet.
Saad

J'y ai pensé. Vous avez dit d'utiliser SIPO pour le côté moteur et PISO pour le rx. Maintenant, si je comprends bien, je devrais SIPO à une broche de sortie sur le MCU et PISO sur une broche d'entrée. En supposant que les fils sont tous un à un, alors je devrais envoyer des données via le faisceau et si je reçois ces données, les fils passent le test. Est-ce une méthode valide? De plus, comment dois-je modifier cela pour gérer les lignes qui se divisent en plus de 1 à la réception? Est-ce ce que vous proposiez ou suis-je complètement hors de propos?
Saad

En pensant davantage à ces lignes - supposons que nous ayons 4 fils d'entrée et l'un d'entre eux (le 4ème) se divise en 2 fils. Nous avons donc 5 fils à l'extrémité rx. Supposons que nous décalons les bits 0101, si nous recevons en retour 01011, alors nous tous les fils sont ok. Mais supposons que le 3ème bit soit haut (01111), alors nous savons que le 3ème fil est court-circuité. Mais cela ne nous dira pas avec quel fil son court-circuité. Une meilleure façon serait peut-être de laisser «1» onduler dans les registres. Donc, au départ, nous avons 1000 et nous rec. 10000. Puis 1 ondule, et nous obtenons 0100 et 01000. Jusqu'à ce que nous atteignions le dernier bit, 0001.
Saad

Dans ce cas, nous savons que nous devrions recevoir 00011, car le dernier est épissé en deux. S'il y a un court-circuit sur le 4ème fil et que nous envoyons 0010, alors nous rx 00111 - ce que nous savons n'est pas correct et nous pouvons afficher une erreur spécifiant où se trouve le court-circuit. Cette méthode vous semble-t-elle bonne?
Saad

@saad J'ai mis à jour ma réponse avec beaucoup plus de détails pour couvrir votre commentaire.

7

Je ne pense pas qu'il existe de solutions monopuce. Ils seraient coûteux en raison du grand nombre d'E / S et probablement aussi en raison de la faible demande. La plupart des conceptions mettent en cascade 8 ou 16 multiplexeurs d'entrée.

Si vous voulez vraiment une solution plus intégrée, vous devrez chercher un CPLD . Il existe des CPLD avec plus de 256 E / S, comme le Xilinx CoolRunner XC2C512 , qui est disponible dans une version BGA avec 270 E / S utilisateur. Gardez à l'esprit que pour un multiplexeur 256 entrées, vous avez besoin de 8 entrées supplémentaires pour les signaux sélectionnés, une sortie bien sûr et peut-être aussi une activation, de sorte que les 270 E / S ne seront pas trop nombreuses.

Vous devez également garder à l'esprit que votre emballage sera très probablement du BGA ; Je ne sais pas si ça vous plaira. Je n'ai pas encore vu de QFP avec environ 300 broches ...


2
Merci. J'avais le sentiment que ce serait le cas. Je pense que je vais m'en tenir à faire un plus grand multiplexeur sur 16 entrées.
Saad

@saad - cela semblerait être votre meilleur pari, sauf si vous prenez un PLD grand (nombre de broches, pas de portes / blocs logiques) comme suggéré (les avantages sont plus efficaces / taille, en fait très peu d'expérience avec eux ou HDL serait nécessaire, mais le package serait en effet un tableau de développement douloureux?)
Oli Glaser

J'ai en fait une certaine expérience avec HDL et FPGA (Handel-C - qui n'était pas agréable de travailler avec) à l'école. Je n'ai cependant jamais travaillé sur un CPLD. Mais je n'ai jamais vraiment dérangé avec un package BGA et cela semble vraiment être une douleur. EDIT: Le XC2C512 est également disponible en PQFP - bien que je me demande maintenant si quelqu'un avec aussi peu d'expérience que le mien en HDL et FPGA peut travailler de tels appareils. C'est aussi assez cher - sa valeur de 60 £ au Farnell UK.
Saad

@saad - le PQFP ne dispose que de 173 E / S utilisateur. Un de mes collègues a programmé son CPLD (application simple: décodeur d'adresse) à Abel , qui à première vue semble beaucoup plus simple que VHDL ou Verilog. Probablement pas aussi puissant que VHDL / Verilog, mais cela ne devrait pas être un problème pour votre application
stevenvh

@stevenvh: Abel est un peu moche à certains égards, mais spécifier les comportements des broches en termes d'horloges et d'équations peut parfois être beaucoup plus naturel que d'écrire plus verbalement en VHDL ou Verilog. Je me demande pourquoi les outils ne prennent pas en charge un langage basé sur des équations plus agréable?
supercat

3

Bien que CPLD / FPGA semble la bonne idée pour un nombre de broches élevé, un faisceau automobile sera généralement assez étendu physiquement et les connecteurs modérément grands.Par conséquent, au lieu de s'étendre d'un appareil à nombre de broches élevé à un grand nombre de connecteurs, un un système modulaire avec, par exemple, 16 entrées / sorties sur des registres à décalage, interconnectés par le faible nombre de lignes d'horloge / à décalage peut être plus approprié et également très évolutif.
Quelque chose d'autre à considérer est pour les tests de câbles, vous pouvez utiliser une chaîne de résistances pour appliquer, disons, 16 tensions à 16 lignes, et un multiplexeur analogique pour vérifier la tension de chacune à l'autre extrémité. Cela permettrait de détecter les ouvertures et les courts-circuits, et serait bon marché.


Voulez-vous dire que je devrais implémenter les registres à décalage dans des blocs 16 bits sur les CLPD? Je n'utiliserai probablement pas un seul grand CPLD pour faire tout le travail. Je veux éviter les packages BGA et je m'en tiendrai donc probablement aux plus petits CLPD. À l'heure actuelle, pour chaque nouveau faisceau de câbles qui nécessitait une nouvelle "carte de connexion" est développée et sur laquelle tous les connecteurs sont montés. Ces connecteurs sont ensuite à leur tour connectés au circuit que j'ai décrit dans la question ci-dessus. Dans le nouveau système, nous allons conserver ce mécanisme - à quel type de problèmes vais-je faire face si je connecte un grand nombre d'E / S sur une puce?
Saad

1

L'utilisation d'un registre à décalage pour lire de nombreuses entrées est un bon modèle. Puisque David Kessner a suggéré d'utiliser un CPLD, cependant, je suggérerais un autre modèle. Supposons que vous vouliez que chaque CPLD gère 32 entrées. Donnez à chaque CPLD une entrée d'horloge partagée, une entrée d'activation individuelle, une sortie d'activation (qui est liée à l'entrée d'activation de la puce suivante) et une sortie de données partagée. Chaque puce a un compteur à cinq bits et un indicateur de débordement. Lorsque l'entrée de validation est désactivée, effacez le compteur et l'indicateur de débordement. Lorsque l'entrée d'activation est confirmée mais que l'indicateur de débordement n'est pas défini, sortez l'état du bit d'entrée indiqué par le compteur. Lorsqu'une impulsion d'horloge est reçue et que la puce est activée et que le compteur n'a pas débordé, augmentez le compteur. Le bit de débordement alimenterait la sortie "enable". L'effet net de toute cette logique est que l'on peut obtenir en n'ayant besoin que d'environ 8 macrocellules pour gérer 32 entrées. On peut ainsi être en mesure d'intégrer dans le CPLD d'autres fonctions qui sont plus intensives en calcul ou en registre mais qui n'ont pas besoin de beaucoup d'E / S.

Si l'on a un CPLD avec des circuits de maintien de broches, on peut être en mesure d'utiliser une approche similaire pour la sortie, surtout s'il existe un moyen de sortir la sortie d'une macrocellule sur plusieurs broches (sans avoir à dépenser une macrocellule pour chaque broche). La puce aurait partagé des entrées d'horloge et de données, une entrée d'activation et une sortie d'activation. En interne, il aurait besoin d'un compteur à cinq bits, d'une copie supplémentaire du bit de compteur inférieur verrouillé sur le bord d'horloge opposé aux cinq premiers, d'un bit de débordement et d'un signal de données partagé qui alimenterait toutes les broches. Sept macrocellules, mais aussi beaucoup étaient nécessaires pour copier le signal de données d'entrée sur toutes les broches (les commandes d'activation de sortie pour les broches serviraient d'activation de verrouillage).

Une belle caractéristique de cette approche (qui, en fait, est fréquemment utilisée dans les pilotes LCD) est que l'on peut avoir plusieurs lignes de données déplaçant les données en parallèle et ne nécessiter qu'un seul câble en guirlande entre les puces. Il permet également d'éliminer un circuit de verrouillage de chaque entrée ou sortie.


1

Comment cela semble-t-il pour une idée, en supposant que le plus grand groupe de broches qui sont censées être connectées soit par exemple 20 broches: utilisez un tas de puces de pilote de LED à registre à décalage à collecteur ouvert (une sortie par broche), chacune pouvant absorber au moins 2mA; connectez une résistance 1K de chaque broche à un point commun et utilisez un circuit qui fournit un volt à 20,1mA (c'est bien si la tension est plus élevée lorsque le courant est plus faible, à condition que ce soit un volt à 20,1mA) et indiquez si une tentative est fait pour tirer plus que ce montant. Pour certaines configurations de câble, il peut être nécessaire d'avoir un petit nombre de broches "de rechange" qui ont les résistances 1K, mais ne sont pas connectées au câble. Il peut être souhaitable d'avoir une broche de rechange avec une résistance 1K, une avec une résistance de 500 ohms (ou deux 2K en parallèle), une avec une résistance de 250 ohms (quatre 1K '

Pour tester le câble, formulez des scénarios qui devraient aboutir à exactement vingt broches tirées vers le bas, et des scénarios qui devraient entraîner exactement vingt et une à tirer vers le bas (les broches de rechange peuvent être utiles pour cela) et confirmez que les scénarios à vingt broches sont n'est pas signalé comme utilisant plus de 20,5 mA, mais les scénarios à 21 broches le sont.

Supposons, par exemple, que l'on dispose d'un faisceau de câbles qui est censé se connecter 1-2, 3-4, 5-6, etc. jusqu'à 39-40. Vérifiez les shorts en choisissant différentes combinaisons de dix paires de broches et enfoncez les deux paires de chaque broche. Vous conduirez à 20 broches à un niveau bas, et aucune broche ne devrait descendre à l'exception de celles que vous conduisez, donc le courant doit toujours être inférieur à 20 mA. Si cela se termine, quelque chose est en court-circuit. Si l'on peut trouver une combinaison de dix paires qui ne lit pas la surintensité, alors une à la fois, désactivez une paire active et activez une autre paire, jusqu'à ce que quelque chose devienne surintensité; la dernière paire allumée est court-circuitée à quelque chose qu'elle ne devrait pas être.

Vérifiez les ouvertures en enfonçant une broche de rechange à un niveau bas, puis en sélectionnant diverses combinaisons de dix paires, en entraînant une broche de chaque paire (parfois la paire et parfois la paire). S'il y a des ouvertures, une telle action se traduira par moins de 21 broches entraînées à un niveau bas, et donc lira sous-courant. Si cela se produit, puis une à la fois, prenez chaque paire où un fil est conduit et conduisez plutôt les deux. Si cela pousse la lecture actuelle à plus de 20,1 mA, cette paire est ouverte.

On pourrait utiliser un CPLD pour cette application, mais un système comme je l'ai décrit pourrait être mieux. Il pourrait être encore amélioré en ajoutant des circuits pour mesurer réellement le courant (plutôt que de simplement produire un indicateur de sur / sous). Une telle mesure permettrait de définir des valeurs de tolérance pour la résistance.


1

C'est ce que vous cherchez?

Maxwell 81840 - Multiplexeur 128 canaux


Probablement pas. Il s'agit d'un multiplexeur analogique, bien que vous puissiez également multiplexer des signaux numériques avec lui, si vous gardez un œil sur la vitesse de l'appareil. C'est également un appareil rad-hard, sera cher.
stevenvh

Bienvenue! Steven a raison, ce n'est peut-être pas la solution appropriée, mais belle prise! Ajoutez peut-être une description du composant sous le lien
clabacchio

Merci clabacchio. Je ne sais pas dans quelle mesure je peux décrire le composant de façon plus détaillée. Je ne l'ai jamais utilisé auparavant et je n'ai pas encore d'expérience suffisante.
Daniel

sweeeeet chip :) Je veux en utiliser un dans un projet de piano numérique, mais si vous ne pouvez pas trouver le prix en cherchant sur Google, vous ne pouvez pas vous le permettre!
Andrew Wagner
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.