
Bonjour!
Attention, beaucoup de texte et de photos. Sur le marché, vous pouvez trouver de nombreuses variantes de PC à carte unique avec blindages ou des solutions tout-en-un. Certains sont adaptés à des tâches spécifiques, par exemple la collecte et l'affichage de données, d'autres sont universels et incluent toutes sortes d'interfaces pour toutes les occasions. Des différences importantes sont également observées dans la configuration, les types de fixation, les connecteurs, le facteur de forme, etc. Pourquoi développer votre appareil, demandez-vous, si vous pouvez en choisir un déjà existant? Il y a quelques années, en tournant la carte de l'IMX6Q - "BD-SL-i.MX6" de Freescale (lire NXP), l'idée est venue de créer un module qui ...
1. Couvert nos besoins en cartes de prototypage sur IMX6. A cette époque, plusieurs projets étaient déjà implémentés sur cette puce. Il vaut la peine d'expliquer qu'en ayant votre propre module et en développant une carte mère pour un projet spécifique, vous pouvez rapidement tester tous les périphériques, "augmenter" le logiciel, apporter des modifications et tout transférer sur les 8 couches nécessaires à IMX6Q (la gamme de ces puces n'est pas limitée au quad en plus de QUAD, il existe également DUAL et SOLO - tous «pin-to-pin», ce qui donne amplement l'occasion de mettre en œuvre des appareils avec différentes fonctionnalités basées sur une «carte»). Permettez-moi de vous rappeler que la carte mère peut être à 4 couches ou même à 2 couches, ce qui accélère considérablement le temps de sa production et réduit les coûts.
2. Utilisez le module comme composant et offrez un choix au client: transférez tout sur une carte ou utilisez-le tel quel. En toute honnêteté, je dirai que l'utilisation de modules achetés pour des projets commerciaux n'est pas envisagée. Premièrement, vous ne pouvez pas trouver un module qui convient à tout le monde (soit il y a beaucoup de connecteurs, ou peu, ou il n'y a pas de trous de montage, ou la carte est grande, etc., en général, ceux qui ont recherché leurs besoins comprendront), mais, dans -deuxièmement, son propre développement est toujours plus fiable. Vous pouvez me jeter des tomates, mais je n'ai confiance qu'en moi.
3. Donnez au client la possibilité de développer son appareil sur la base de notre module. Oui - cela s'est également avéré être en demande, mais pas ce qui a été décrit ci-dessus (sur la complexité de la sélection d'un module), mais le fait qu'il s'agit d'un développement et d'une production russes joue un grand rôle. Apparemment, le mot «substitution des importations» a grandement influencé notre industrie et notre développement, notamment.
Démarrage IMX6Brièvement sur l'essentiel, mais ce ne sera pas l'essence de l'article. Notre premier module sur IMX6Q est utilisé et est actuellement en développement, il a des dimensions 50x75mm. OS Linux et Android.
Fig. 1. Module sur IMX6QJe ne citerai pas ses interfaces, ses avantages et ses inconvénients. Il affiche presque tout ce qui a une puce, et cela suffit pour la mise en œuvre de nombreux projets. À bord sont eMMC, connecteurs d'interface, physique Gigabit Ethernet et alimentation. Une brève digression est terminée, maintenant le point.
Où en sommes-nousLa ligne IMX6 ne se termine pas sur les puces ci-dessus. IMX7, IMX8 dans différentes versions ont déjà fait leur apparition, mais nous nous intéressons à la version plus faible dans des dimensions plus petites, garnies de fonctionnalités - ce sont les IMX6UL / IMX6ULL (elles sont également «broche à broche» entre elles). Nous y avons attiré l'attention non seulement comme cela, mais parce que plusieurs tâches sont apparues liées à la voix sur Ethernet via SIP, ainsi qu'à la nécessité de développer des appareils de petites dimensions et sans possibilité de dissipation thermique. IMX6UL a à bord un assez bon kit pour connecter des périphériques:
Fig. 2. Schéma fonctionnel IMX6ULCelui qui a une petite image peut aller sur le site Web de NXP et voir les détails de la gamme de ces puces. L'un des avantages de l'utilisation de ce processeur est son corps. Le pas de ses contacts est de 0,8 mm et le plot de contact est de 0,356 mm (BGA), ce qui signifie exactement que la carte peut être réalisée sur 4 couches (ce qui, en principe, a été fait dans la carte de référence NXP pour cette puce). Nous utilisons une version de 14x14 mm (il y a aussi 9x9 mm par incréments de 0,5 mm).
Pourquoi est-ce NXP, pas Broadcom, ST, Ali ou un autre géant du processeur? En fait, l'essentiel est la disponibilité des puces, du support technique et de la multiplateforme. Après avoir fait le module sur IMX6Q, nous avons relativement facilement porté le logiciel sur IMX6UL / IMX6ULL. Les puces sont broches à broches, donc, après avoir débogué le logiciel sur UL, vous pouvez passer à une ULL moins chère. La seconde est une faible consommation d'énergie et, par conséquent, une faible chaleur. Je ne fournis pas intentionnellement les paramètres techniques des processeurs, donc il y a beaucoup «d'eau» dans l'article, et cette information est accessible au public.
L'un des projets intéressants mis en œuvre sur l'IMX6UL est un appareil voix sur Ethernet - un téléphone SIP, mais essentiellement un interphone.
Fig. 3. Téléphone SIP.À propos du principalLe cœur du projet est IMX6, sur lequel le système d'exploitation tourne avec le client SIP installé. Avant de démarrer Linux, u-boot (chargeur de démarrage) est chargé avec un flash SPI distinct. La séparation du bootloader et du firmware principal n'a pas été faite par accident (contrairement à la référence), mais afin de rendre l'appareil dur avec une mise hors tension inattendue. Si vous commencez à parler des ubifs et de la section en lecture seule sur NAND, alors je suis très contrarié. La pratique a montré que même les meilleures puces NAND ont le droit de mourir, et elles le font de manière très inattendue. Il existe une interface RMII pour la communication avec le monde extérieur et un commutateur Ethernet LAN9303 - 10/100 (cet IMX ne prend pas en charge le gigabit) est installé sur la carte et deux ports étaient nécessaires. IMX6UL possède deux ports RMII avec routage, mais il fallait exactement deux interfaces indépendantes sous la forme d'un concentrateur.
NAND est utilisé pour stocker le firmware et les fichiers (nous nous sommes arrêtés sur Samsung K9F1G08U0D dans le package TSOP48. Nous ne commençons pas à cracher et ne fermons pas l'article, car la mémoire dans ce facteur de forme est très bon marché en petits lots par rapport au BGA63). Une puce mémoire DDR3 est K4B4G1646D, codec ADAU1761. Le codec mérite un examen plus approfondi. Avant cela, SGTL5000 était utilisé dans plusieurs projets, mais avec ADAU, la vie est devenue beaucoup plus amusante. Vous pouvez écrire un article séparé sur lui, mais je vais essayer de résumer son essence dans mon projet. Non seulement le microcircuit possède 6 entrées analogiques, 7 sorties et, bien sûr, une interface I2S, Analog Devices, ainsi que le codec, ont également publié un logiciel spécialisé pour écrire le firmware du DSP intégré. Quiconque est intéressé et qui n'est pas au courant peut lire ce qu'est le DSP et ce avec quoi il est mangé.
Fig. 4. Schéma fonctionnel de l'ADAU1761Lors de l'écriture de logiciels, tout d'abord, les programmeurs ont suffisamment joué avec toutes sortes de fonctions de distorsion, d'annulation d'écho, de filtrage et de mixage sonore. C'est très impressionnant à l'oreille, je vais vous le dire. L'interface est très conviviale, de nombreux paramètres, filtres, conversions, la possibilité de rediriger le son, etc.
Fig. 5. SigmaStudio par Analog DevicesLe projet comprend 4 canaux (entrée / sortie), car il y a des haut-parleurs et microphones stéréo intégrés, ainsi que des connecteurs pour connecter des externes.
Une carte périphérique est connectée à la carte (sur la figure 3), juste avec un codec, un scanner de clavier matriciel, etc., n'a pas écrit à ce sujet.
L'un des connecteurs RJ45 est utilisé pour l'alimentation PoE; la puce Si3402 de Silicon Laboratories est utilisée comme un dispositif alimenté (PD). Le circuit de commutation a été utilisé presque standard sans isolation galvanique avec une sortie 12V (la tension est ajustée par des résistances). Un peu distrait par toute personne intéressée par le sujet du PoE + avec isolation galvanique, il y a une très bonne puce de TI - LM5072MH-80. Il a fait ses preuves dans plusieurs projets.
Les alimentations secondaires sont implémentées sur DC / DC ST1S10PHR - pas les moins chères, pas les plus hautes fréquences, mais elles fonctionnent parfaitement et sont accessibles par les voitures. En général, nous avons tout un zoo DC / DC et LDO pour différents besoins, mais lorsque la qualité est importante, nous sélectionnons des fabricants bien connus.
La carte dispose également d'une carte USBHOST, USBOTG et SD. Via USB et SD, vous pouvez rouler / mettre à jour le firmware. Il existe également une mise à jour sur le réseau, mais cela s'applique déjà au logiciel et à l'interface Web.
Un peu sur le traçageVous pouvez sans cesse poster des gerberas et des morceaux de cartes de trace, mais je ne le ferai pas, mais je ne toucherai qu'aux points principaux et critiques. L'ordre des couches des planches est standard:
- TOP - signal avec polygone terrestre
- GND - polygones au sol
- POWER - sites d'essais alimentaires
- BAS - signal avec polygone terrestre
1. DDR3. Avec une disposition de mémoire indépendante, vous devez être prudent, donc je ne l'ai pas fait, mais j'ai pris la référence comme exemple. Seules deux couches (haut et bas) sont utilisées pour le traçage, les deux autres couches ne sont pas impliquées. Vias 0,203 / 0,406 mm, épaisseur de ligne 0,114 mm. J'ai changé uniquement les lignes de terre sous le processeur et les ai rendues un peu plus épaisses - jusqu'à 0,3 mm. La couche GND s'est avérée être un bon terrain dans lequel j'ai dû dessiner une interface RVB, ce qui n'est pas entièrement correct, mais je n'ai tout simplement pas vu une autre option avec mon nombre d'interfaces sur la carte.
Fig. 6. trace de mémoire
Fig. 7. Décharges et terrainsLors du câblage de la carte, vous devez consacrer plus de temps à l'alimentation et aux décharges. Il est beaucoup plus facile de développer des cartes à 4 couches avec le même schéma, il y a une étendue dans la trace des conducteurs de signal et il y a toujours deux couches pour une bonne alimentation, qui peut également être utilisée avec compétence pour les lignes de données non critiques. La plage de puissance principale que je fais presque toujours est de 3,3 V, le reste à l'intérieur. Toutes les décharges à haute tension sont faites avec de grands espaces pour éliminer les interférences.
2. Le PoE, comme je l'ai écrit plus tôt, est implémenté sur la puce Si3402. Il est élevé strictement sur quatre couches de la planche avec de grands écarts par rapport aux polygones principaux. Je pense que cela commencera sur deux couches, mais personne ne garantit la qualité. Lors de la conception d'unités d'alimentation, je suis généralement la carte d'évaluation des microcircuits et lors des tests, je vérifie les formes d'onde des signaux donnés dans la documentation. Si vous ne pouvez pas le faire dans la référence, en raison de la taille ou de la configuration de la carte, vous ne devez être guidé que par l'expérience et le bon sens.
Dans la couche de puissance pour PoE, une plage de 12 V est sélectionnée. Les couches restantes sont utilisées pour les signaux et les polygones de sol PoE - GND_EXT. Tous les polygones sont strictement l'un sous l'autre sans chevaucher les polygones adjacents dans les autres couches. La distance entre les polygones PoE et les principaux est d'environ 1 mm. Lors du développement de PoE avec isolation galvanique, je fais généralement en plus une découpe avec une fraise (dans la fabrication de cartes de circuits imprimés) sous un transformateur et des optocoupleurs à rétroaction.
Fig. 9. PoE. HAUT3. Périphériques. J'ai dû faire le câblage de la carte sur la puce M3616 d'ALi Corporation, elle n'a que 292 billes, mais regardez à quel point le processeur est bien pensé pour faciliter le traçage de la carte. Avec quelle clarté toutes les interfaces sortent dans le bon ordre. Attention, la carte est élevée sur deux couches, et la RAM est complètement en une.
Fig. 10. Décharges et terrainsSur IMX6UL / IMX6ULL, j'ai dû bricoler avec les interfaces. Dans la fig. 6. Vous pouvez voir à quel point les conducteurs vont bien et il n'y a pas assez d'espace pour les vias, et vous devez vous retirer de la 5ème rangée de boules. L'essentiel ici est d'observer l'impédance dans les paires différentielles (par exemple, USB) et de ne pas aller trop loin avec les vias, car cela endommagerait les plages de terre et de puissance.
Et pourtant le moduleQue ne faites pas, mais obtenez toujours un module. Lorsque le nombre de projets sur IMX6UL / IMX6ULL a dépassé les attentes et que la fonctionnalité principale a été écrite, il a été décidé de passer à un système modulaire, comme la dernière fois, et même de le faire avec élégance.
Fig. 11. Module mx6ull-m02c sur IMX6UL / IMX6ULLPourquoi élégant?
- Le module est réalisé sous forme «embarquée» et ne possède pas de connecteurs d'interface, il permet de l'utiliser comme un «microcircuit».
- Dans la forêt, il n'a que tout ce dont vous avez besoin: une puce, DDR3, NAND, SPI, physique Ethernet, un chargeur 1,35 V (qui vous permet de fournir une seule tension 3,3 V au module), quartz et passif.
- Installation à sens unique. Toutes les solutions modulaires ne peuvent se vanter de l'absence de composants sur le fond. Cela donne plusieurs avantages à la fois: l'évacuation de la chaleur sur la carte mère, la possibilité de traçage sous le module (car il n'y a pas de découpe sur la carte pour les composants en saillie) et la production moins chère des modules eux-mêmes (moins le pochoir, le retournement de la carte lors de l'installation, etc.).
- Tampons autour de la planche. Il n'y a aucun point de signal de soudure sous le module.
- Les dimensions du module ne sont que de 45x36 mm.
- D'une manière ou d'une autre, je vais vous parler d'un des appareils développés sur ce module, mais pour l'instant une photo de la carte mère pour le débogage et l'écriture d'un logiciel.
Fig. 12. Module IMX6UL / IMX6ULL sur la carteLa carte est à deux couches et possède des connecteurs d'interface nécessaires pour le démarrage et le fonctionnement. Sur ces cartes, nous effectuons des tests internes de refroidissement et de chauffage pendant le fonctionnement, vérifions la stabilité du travail sous charge et déboguons le logiciel.
ConclusionQue donne exactement un système modulaire lors du développement d'appareils?
- Avec le module existant, le temps de développement d'une carte avec des interfaces externes ne prend que quelques jours (à condition que toutes les interfaces soient compréhensibles et utilisées précédemment dans le développement).
- Les dispositions de cartes de circuits imprimés sont beaucoup moins chères, car dans la plupart des cas, vous pouvez créer une carte à deux couches ou à 4 couches avec une classe inférieure.
- La vitesse d'obtention de la carte mère est beaucoup plus élevée, car vous n'avez pas besoin de souder les composants liés au module.
- La transition de la mise en page vers la version finale est plus rapide et indolore (si vous décidez toujours de faire une solution à carte unique).
Bien sûr, tous les projets sont différents et parfois les circuits périphériques sont beaucoup plus compliqués que le processeur lui-même, mais le débogage de modules individuels est toujours plus facile, surtout si le développement d'un projet est effectué par plusieurs ingénieurs.
Dans un article, il est très difficile d'écrire ce que vous voulez. La description d'un seul projet prend beaucoup de lettres, mais je veux aborder plusieurs projets, partager mes impressions sur divers périphériques, sur les microcircuits utilisés, les fonctionnalités de traçage d'interface, etc. Mais l'essentiel est de s'arrêter à temps.
PS: lien source
github.com/trotill/adk_yoctoMerci de votre attention!