Recherche d’un IC de compteur d’événements multicanal pour vérifier le fonctionnement du commutateur

David

Recherche d’un IC de compteur d’événements multicanal pour vérifier le fonctionnement du commutateur


Dans le cadre d’un projet, je voudrais tester le bon fonctionnement d’un ensemble de circuits intégrés de commutation SPST (peut-être 8 ou 16 environ). Chaque appareil contient six commutateurs indépendants et ils sont contrôlés via un bus SPI. J’ai l’intention de faire fonctionner les commutateurs à environ 10 ou 20 kHz. Je pense utiliser un microcontrôleur bon marché (mabye an Arduino MEGA) pour exercer les commutateurs et compter le nombre de fois qu’ils commutent.

Je pense que je pourrais utiliser le minuteur / compteur 16 bits de l’Arduino, cadencé en externe par les commutateurs testés, pour compter le nombre de cycles de commutation qui se produisent réellement. Cependant, la plupart des MCU ont un nombre limité de périphériques de temporisation / compteur. L’ATmega2560 de l’Arduino MEGA dispose de quatre temporisateurs 16 bits, par exemple (en supposant que je puisse tous les utiliser).

Comme je surveille plus de quatre commutateurs (nous pourrions envisager quelque chose comme 50 commutateurs individuels à surveiller sur 16 appareils, par exemple), j’ai besoin d’une autre solution. Cela peut être une question d’achat, et j’ai peut-être juste besoin du nom de ce que je recherche, mais y a-t-il des circuits intégrés de compteurs d’événements multicanaux qui peuvent fonctionner indépendamment, avec des registres internes ou de la mémoire pour stocker les comptes sur chaque canal et peut-être déclencher une interruption lorsqu’un certain nombre est atteint ou qu’ils débordent? Merci!

Réponses


 crj11

Votre meilleur pari est d’utiliser une carte de développement FPGA bon marché. En voici une liste chez Digikey, triée par prix . Il y en a plusieurs dans la gamme de 30 $.

Obtenez-en un avec suffisamment d’E / S pour gérer le nombre de signaux dont vous avez besoin pour compter. Par exemple, la carte Lattice MACHXO2 possède plus de 100 E / S qui vont à des en-têtes à broches de 0,1 « . Elle est programmable via USB et le logiciel de développement est téléchargeable gratuitement.

En ce qui concerne la programmation du FPGA, au lieu d’essayer d’avoir un grand nombre d’entrées d’horloge externe pilotant directement un tas de compteurs, il serait préférable d’utiliser une horloge fixe, d’échantillonner les entrées externes et d’incrémenter le compteur lorsqu’un front montant est détecté . Un front montant est détecté lorsqu’un échantillon 0 est suivi d’un échantillon 1. La fréquence d’horloge doit être au moins ~ 4X supérieure à la fréquence d’entrée et les entrées échantillonnées doivent passer par deux niveaux de registres pour éviter tout problème de métastabilité .

Vous pouvez également utiliser la logique FPGA pour implémenter une interface SPI ou I2C pour lire les compteurs et l’état, réinitialiser les compteurs, etc.

David

Merci. Ce serait ma première incursion dans le monde des FPGA, mais votre approche semble bonne. Il semble donc que je devrais pouvoir tout mettre en œuvre sur le FPGA. Je vais devoir me familiariser avec la programmation des FPGA et apprendre Verilog, je suppose. En plus d’implémenter la boucle d’événement globale, devrais-je manuellement bit-bang le protocole SPI, ou puis-je composer mon projet à partir de blocs pré-construits? (J’ai probablement juste besoin de faire plus de recherches à ce stade.)

crj11

Même si j’étais un programmeur C et que Verilog ressemble plus au C, j’ai trouvé le VHDL plus facile à apprendre. C’est un peu plus verbeux, mais une fois que vous avez appris les structures de base qui synthétisent les registres et les machines à états, ce n’est vraiment pas si difficile. Dans Verilog et VHDL, il existe de nombreux blocs fonctionnels prédéfinis que vous pouvez inclure dans votre code, tels que les interfaces SPI et I2C. La puce Lattice MACHXO2 a même une interface I2C codée en dur intégrée. Les environnements de développement prennent en charge à la fois VHDL et Verilog et vous pouvez généralement inclure des blocs définis dans Verilog dans le code VHDL et vice versa.


 Henry Crun

Si ce que vous essayez vraiment de faire est de vérifier l’exactitude lorsque vous augmentez la vitesse, par exemple, vous pouvez adopter l’approche d’analyse de signature.

À chaque ensemble de nouvelles données, verrouillez-vous dans les registres à décalage (74hc165)

Passez le tout à travers un générateur CRC (74F401).

Répétez jusqu’à ce que votre test soit terminé.

Lisez la signature CRC dans arduinos SPI.

(74F401 est obsolète mais sur ebay) La partie Silego ci-dessous pourrait implémenter un générateur crc I2C


Silego / Dialog SLG46824 est un appareil logique simple et bon marché qui peut implémenter un certain nombre de compteurs (je l’interprète comme 7×8 bits + 1x16bit ou 4,5x 16 bits) que vous pouvez lire à partir du port I2C.

Ils sont très faciles à utiliser avec une programmation de type schématique et disposent d’une alimentation 2-5V.

Ils ont maintenant une version adaptateur dip qui est beaucoup plus facile que le misérable petit qfn pour jouer avec.


 

#de, #pour, commutateur, Compteur, d’événements, d’un, du, fonctionnement, IC, Le, multicanal, recherche, vérifier

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *