Niveau à bulle ( prise en main VHDL / CPLD ) - NM
Transcription
Niveau à bulle ( prise en main VHDL / CPLD ) - NM
Table des matières Travail de semestre 2005 Le 14 mars 2006. Table des matières A Rapport B Cahier des charges C Mode d'emploi D Code VHDL E Piggybag F Alimentation G Accéléromètre H Affichage I Dossier de fabrication J CD II II II III III IV IV V V V Table des matières A Rapport 1 2 3 4 5 6 7 8 9 10 11 Présentation du dossier Un peu d'histoire Introduction - 3.1 Rappel du cahier des charges - 3.2 Appareil similaire Schéma bloc - 4.1 Matériel - 4.2 Logiciel Oscillateur - 5.1 Principe - 5.2 Génération du clock Schéma de montage matériel Compilation Remerciements Bibliographie Remarques - 10.1 Améliorations possibles - 10.2 Les petits plus Conclusion 2 3 5 5 5 6 6 7 8 8 8 9 10 10 10 11 11 11 11 B Cahier des charges 1 2 3 4 Introduction Le sujet du projet Le concept - 3.1 Contrôleur - 3.2 Affichage - 3.3 Capteur - 3.4 Fonctions du montage Dates importantes 2 2 2 2 2 2 2 2 C Mode d'emploi 1 2 3 4 5 Un peu d'histoire Plan du boîtier Montage de la pile Spécifications Explication de l'affichage Métraux Nathanaël II/ II/V 2 4 4 5 5 14 mars 2006 Table des matières D Code VHDL 1 2 3 4 5 Introduction Le langage VHDL - 2.1 Détails techniques - 2.2 Historique - 2.3 Introduction au VHDL - 2.4 Exemples de code VHDL Logiciel utilisé pour l'élaboration du code - 3.1 Editeur VHDL - 3.2 Compilatateur Assignation des pattes Explication des blocs - 5.1 Top Level - 5.2 Global - 5.3 Diagramme de flux - 5.4 Initialisation du LCD - 5.5 Image d'accueil - 5.6 Interface SPI - 5.7 La PWM - 5.8 Génération de la table calcul - 5.9 Affichage des caractères - 5.10 Affichage de la valeur de X et Y - 5.11 Table de caractères - 5.12 La modification de la couleur des points - 5.13 Contrôle du point milieu - 5.14 Points extérieures 2 2 2 3 4 5 8 8 10 14 15 15 16 17 18 19 20 21 22 23 24 24 25 26 26 Présentation - 1.1 Possibilité - 1.2 Alimentation Emplacement des pattes Mise en oeuvre pour le développement - 3.1 Création d'un nouveau projet - 3.2 Choix du composant - 3.3 Programmation du composant - 3.4 Programmation du composant Schéma du piggybag 2 2 2 3 4 4 7 9 10 11 E Piggybag 1 2 3 4 Métraux Nathanaël III/ III/V 14 mars 2006 Table des matières F Alimentation 1 2 3 4 5 6 7 Introduction Ce que le montage requiert Obtention des tensions - 3.1 But - 3.2 Choix des composants Bref présentation de l'IC - 4.1 Dessin - 4.2 Schéma interne - 4.3 Schéma typique de montage du MAX 1722 Où trouver les composants Design de l'alimentation (PCB) - 6.1 Conception du PCB Schéma des alimentations utilisées - 7.1 Alimentation 1.8V - 7.2 Alimentation 3.3V - 7.3 Alimentation 6V 2 2 2 2 2 3 3 3 4 4 4 4 5 5 5 6 G Accéléromètre 1 2 3 4 5 6 Introduction - 1.1 Domaine d'utilisation de l'accéléromètre Composant utilisé - 2.1 Choix du composant - 2.2 Présentation du composant - 2.3 Fonctions et capacités de l'accéléromètre Conversion du signal PWM en analogique Circuit imprimé d'adaptation - 4.1 Implantation - 4.2 Pinout du composant Signaux générés Calculs Métraux Nathanaël IV/ IV/V 2 2 2 2 3 3 4 4 5 5 6 6 14 mars 2006 Table des matières H Affichage 1 2 3 4 5 6 7 8 9 Introduction Le choix de l'écran Spécification de l'écran - 3.1 Résolution - 3.2 Interface - 3.3 Emplacement des pattes Procédure d'initialisation - 4.1 Valeur d'initialisation Stockage des images - 5.1 Le problème - 5.2 Les améliorations Listening du code de la conversion RAW - VHDL Traitement des images - 7.1 Le fichier RAW - 7.2 Le logiciel créé - 7.3 Les images utilisées Protocole d'initialisation Spécifications 2 2 2 2 2 3 4 4 7 7 7 8 9 9 9 9 10 11 I Dossier de fabrication 1 2 3 4 5 6 7 Introduction Le circuit imprimé - 2.1 Explication des fichiers GERBER - 2.2 Dimensions - 2.3 Implantation - 2.4 Plan de perçage Liste de composants - 3.1 Distrelec - 3.2 Farnell - 3.3 Fourniture personnelle - 3.4 Centre professionnel - 3.5 Madis Plan du boîtier - 4.1 Cache avec interrupteur - 4.2 Cache avec le porte pile Procédure pour le montage - 5.1 Montage du PCB - 5.2 Réglage des alimentations Montage du boîtier - 6.1 Côté pile - 6.2 Coté interrupteur Version finale du boîtier 2 2 2 3 4 5 6 6 6 6 6 6 7 7 8 9 9 9 10 10 10 11 J CD 1 2 3 Introduction Contenu du CD - 2.1 Répertoires principaux Le CD Métraux Nathanaël V/V 2 2 2 3 14 mars 2006 Rapport Travail de semestre 2005 Le 14. mars 2006. Table des matières 1 2 3 4 5 6 7 8 9 10 11 12 Présentation du dossier Un peu d'histoire Introduction - 3.1 Rappel du cahier des charges - 3.2 Appareil similaire Schéma bloc - 4.1 Matériel - 4.2 Logiciel Schéma de montage matériel - 5.1 Oscillateur avec circuit inverseur - 5.2 Oscillateur Pierce - 5.3 Oscillateur utilisé Compilation Remerciements à Bibliographie Logiciels utilisés - 9.1 Rédaction du code - 9.2 Compilation du code - 9.3 Rédaction du rapport - 9.4 Conception du circuit imprimé - 9.5 Lecture des datasheets - 9.6 Système d'exploitation du PC Matériels utilisés - 10.1 Oscilloscope - 10.2 Station de travail - 10.3 Alimentations stabilisée - 10.4 ByteBlaster Altera Remarques - 11.1 Améliorations possibles - 11.2 Les petits plus Conclusion 2 3 5 5 5 6 6 7 8 9 10 10 11 11 11 12 12 12 12 12 12 12 13 13 13 13 13 14 14 14 14 Rapport 1 Présentation du dossier Le présent dossier a été segmenté en plusieurs parties dans le but de pouvoir être repris que partiellement. Il y a un mini rapport pour chacune des étapes effectuées qui peuvent être pris indépendamment les uns des autres, c'est cas pour: • Piggybag • Accéléromètre • Afficheur LCD Nokia Le présent rapport montre le cheminement afin mettre bout à bout les différents éléments utilisés dans le projet. Un CD en fin de dossier contient 1 2 • Sources compilées et non-compilées • Traitement de texte utilisé (Licence GNU) • Logiciel de conversion au format PDF (Licence GNU) • Compilateur C++ (Licence GNU1) • Le rapport et les sources au format OpenOffice et PDF • Les fichiers de conception du PCB2 Les licences d'utilisation de la plupart des programmes sont définies pour limiter ou supprimer toute liberté à l'utilisateur. À l'inverse, la Licence Publique Générale (General Public License) est destinée à vous garantir la liberté de partager et de modifier les logiciels libres, et de s'assurer que ces logiciels sont effectivement accessibles à tout utilisateur. Printed Circuit Board ou circuit imprimé Métraux Nathanaël A - 2/14 14 mars 2006 Rapport 2 Un peu d'histoire Depuis de nombreuses années il a été nécessaire à l'homme de pouvoir placer quelque chose à plat ou à la verticale et ceci le plus facilement possible. Des outils ancestraux existent encore aujourd'hui et sont utilisés par nombre de personnes dans la maçonnerie. On peut par exemple cité les niveaux à bulle qui donnent l'horizontale ou la verticale mais cet outil requiert d'avoir une référence pour être juste. Le fil à plomb permet de faire la même chose mais ne nécessite aucun calibrage, le fameux fil à plomb se réalise très facilement (une masse et un fil), et on obtient une mesure de la verticale très précise. Outils romains: pierre tombale de Lucius Alfius Statius, Aquileia, Via Petrada. Métraux Nathanaël A - 3/14 14 mars 2006 Rapport On peut facilement donner l'horizontale ou un angle avec un fil à plomb comme le montre l'équerre ci-dessous: Equerre à fil à plomb provenant de la tombe de Semerdjen (XIXe dynastie égyptienne). Musée du Caire. Photo tirée de "La symbolique maçonnique du troisième millénaire", Irène Mainguy, Dervy, 2003. Un mur qui penche risque de tomber. Le maçon qui veut construire un mur d'aplomb vérifie son travail en appliquant un fil à plomb contre le mur car le poids tend toujours le fil à la verticale. Métraux Nathanaël A - 4/14 14 mars 2006 Rapport 3 Introduction On peut se rendre compte qu'au travers des âges, que ce soit dans un domaine professionnel, artistique ou à titre privé le niveau à bulle ou un fil à plomb seront toujours indispensables si l'on veut faire un travail propre. Notre projet de semestre à pour but de faire aussi bien voir mieux, mais je doute qu'il soit aussi facile à réaliser qu'un fil à plomb. - 3.1 Rappel du cahier des charges Le cahier des charges demandait de monter un appareil capable de mesurer l'angle avec la surface terrestre, en gros un équivalent du traditionnel niveau à bulle ou du fil a plomb, mais en version électronique. Le cahier des charges prévoit de travailler avec une FPGA, de la programmer en VHDL. Il n'est pas autorisé d'utiliser un composant tel que le micro contrôleur en interne. Il est demandé d'afficher valeur en X et en Y. la - 3.2 Appareil similaire Patrick Jan fit un travail de diplôme similaire en 2000. Cette appareil permet de mettre une table à un angle donné par rapport à la terre. Il utilise aussi un accéléromètre. Métraux Nathanaël A - 5/14 14 mars 2006 Rapport 4 Schéma bloc - 4.1 Matériel Alimentation Step – up converter Oscillateur Métraux Nathanaël A - 6/14 14 mars 2006 Rapport - 4.2 Logiciel Métraux Nathanaël A - 7/14 14 mars 2006 Rapport 5 Schéma de montage matériel Métraux Nathanaël A - 8/14 14 mars 2006 Rapport - 5.1 Oscillateur avec circuit inverseur Le montage le plus simple consiste à utiliser un circuit inverseur. A la mise sous tension, le quartz oscille grâce à la différence de niveaux de tension entre l’entrée et la sortie du circuit. La fréquence des oscillations peut atteindre le mégahertz. Le deuxième inverseur permet la mise en forme du signal de sortie pour obtenir un signal carré. La fréquence du signal peux être ajustée par des condensateurs. Métraux Nathanaël A - 9/14 14 mars 2006 Rapport - 5.2 Oscillateur Pierce C’est un montage analogue à l’oscillateur Colpitts. La charge est soit une résistance de collecteur Rc, soit un collecteur ouvert. Le quartz doit osciller sur la fréquence de résonance série. La fréquence doit être légèrement inférieure à la fréquence propre du cristal; elle peut être ajustée par C1 et C2; c’est un montage très utilisé sur émetteur de petite puissance. - 5.3 Oscillateur utilisé Sur le schéma de la page précédente, on peut voir l'oscillateur a quartz monté avec le 74HC14. C'est une des méthodes que nous avions vue en première année qui à l'air de marcher convenablement. La fréquence d'oscillation utilisée est de 3.2768 MHz, quartz utilisé dans les système d'horloge. Une fréquence plus basse ferait un rafraîchissement de l'écran beaucoup trop lent et visible a l'oeil. Métraux Nathanaël A - 10/ 10/14 14 mars 2006 Rapport 6 Compilation Le développement du logiciel fait partie d'un chapitre complet, dans cette rubrique nous allons plutôt approcher les problèmes qui arrivent à la compilation et qui peuvent avoir comme cause un code VHDL juste, mais nonfonctionnel. 7 Remerciements à Christophe Dubach pour son aide précieuse sur les problèmes dû au timing. Yann Müller pour son aide sur les problèmes de syntaxe du VHDL. Anto Barisic pour son aide sur la PWM. Alexandre Nüssli pour les dessins mécaniques des découpes du boîtier. M. Torche pour la gravure du boîtier. M. Zbinden pour les diverses versions du circuit imprimé. 8 Bibliographie VHDL Made Easy - David Pellerin et Douglas Taylor – ISBN 0-13-650763-8 Cours du VHDL et FPGA de M. Pierre Cornu - CPNV Métraux Nathanaël A - 11/ 11/14 14 mars 2006 Rapport 9 Logiciels utilisés - 9.1 Rédaction du code Ease Version 5.1 (14 avril 2004) • EASE Graphical HDL Entry • EALE HDL language Editor - 9.2 Compilation du code Quartus Version 5.0 Build 148 26 avril 2005 SJ version complète. - 9.3 Rédaction du rapport OpenOffice.org version 2.0 (Fournis sur le CD en annexe) PDF creator pour la génération des fichiers PDF. SRip32 pour faire les copies d'écran des logiciels. - 9.4 Conception du circuit imprimé PROTEL DXP 2004 en version de démonstration. - 9.5 Lecture des datasheets Adobe Acrobat reader version 6.0 - 9.6 Système d'exploitation du PC Microsoft Windows XP Professionnel Version 2002 - Service pack 2 Métraux Nathanaël A - 12/ 12/14 14 mars 2006 Rapport 10 Matériels utilisés - 10.1 Oscilloscope TEKTRONIX TDS 3014 • Numéros de sériel B019685 - 10.2 Station de travail Ordinateur Hewlett Packard Compaq DX6100MT. Pentium IV CPU 3 GHz 1 Go de RAM • Numéros de série CZC5080RTT - 10.3 Alimentations stabilisée Hewlett Packard E3630A • 0 - 6V • 0 - 20 V - 10.4 ByteBlaster Altera Modèle sur port parallèle Métraux Nathanaël A - 13/ 13/14 14 mars 2006 Rapport 11 Remarques - 11.1 Améliorations possibles Il serait possible de réduire considérablement le coût de fabrication du montage en utilisant un micro contrôleur ou alors de réaliser un ASIC. Car l'utilisation d'une FPGA fait pour ainsi dire doubler le prix de conception du montage. L'inconvénient du Piggybag est sa taille, il serait possible de tous inclure derrière l'écran et de faire un montage très fin, léger et consommant peu. L'écran utilisé provient d'un Nokia 6610, il utilise un driver Philips PCF8833, malheureusement Philips a arrêté la production de ce driver, néanmoins Nokia continue de produire des écrans en utilisant un driver provenant de chez EPSON, seule la procédure d'initialisation et la tension d'alimentation changent, en effet en travaillant à 3.3V cette écran a contraste très faible, Il faut donc l'utiliser avec une tension inférieure de l'ordre de 2.2V à 3V pour être vraiment optimum. - 11.2 Les petits plus Dans la méthode utilisée on peut remarquer que le montage travail avec une seule pile de 1.5V de type LR06. L'écran LCD provient du domaine de la télécommunication public de ce fait ne consomme que 20 mA rétro-éclairage activé. Le montage est très faible en consommation. Outre le piggybag, le montage est d'un coût relativement modeste. 12 Conclusion En conclusion je dirais que ce projet m'a énormément appris sur le VHDL, m'a fait découvrir une partie de l'électronique moderne dont j'avais juste entendu parler sans vraiment m'y intéresser. Je suis content d'avoir pu finaliser ce projet avec succès en utilisant des composants et des outils inconnus il y a moins d'un an. Nathanaël Métraux - Vallorbe le 23. février 2006, Métraux Nathanaël A - 14/ 14/14 14 mars 2006 Cahier des charges Travail de semestre 2005 Le 13 mars 2006. Table des matières 1 2 3 4 Introduction Le sujet du projet Le concept - 3.1 Contrôleur - 3.2 Affichage - 3.3 Capteur - 3.4 Fonctions du montage Dates importantes 2 2 2 2 2 2 2 2 Cahier des charges 1 Introduction Cette rubrique a pour but de fixer les points clés du projet. 2 Le sujet du projet La donnée est simple: concevoir un appareil équivalent à un niveau a bulle, mais électronique. 3 Le concept - 3.1 Contrôleur L'utilisation d'une FPGA1 et de la programmer en VHDL est obligée - 3.2 Affichage L'affichage se fera sur un écran graphique indiquant l'angle en X et en Y. On peut imaginer de placer une image sur l'écran d'un cercle et d'une croix, lorsque la croix est placée au centre du cercle la pièce est placée à plat. - 3.3 Capteur L'utilisation d'un accéleromètre serait idéale, certains de ces capteurs générent deux signaux PWM facilement gérable avec une FPGA. Le choix d'un autre capteur est libre. - 3.4 Fonctions du montage L'idée serait de pouvoir visualiser les informations sous deux formes • Une forme graphique. • Une forme littérale avec affichage des angles en X et Y. J'ai inclus dans le cahier des charges le but d'utiliser une seule pile pour l'alimentation du montage et de concevoir un PCB. 4 Dates importantes 1 Début 14 Novembre 2005 Remise du rapport 20 Mars 2006 Défense 27 Mars 2006 Field Programmable Logic Array - composant à logique programmable Métraux Nathanaël B - 2 /2 13 mars 2006 Mode d'emploi Travail de semestre 2005 Le 14 mars 2006. Table des matières 1 2 3 4 5 Un peu d'histoire Plan du boîtier Montage de la pile Spécifications Explication de l'affichage 2 4 4 5 5 Mode d'emploi 1 Un peu d'histoire Depuis de nombreuse année il a été nécessaire a l'homme de pouvoir placer quelque chose a plat ou a la verticale et ceci le plus facilement possible. Des outils ancestraux existe encore aujourd'hui et son utilisé par nombre de personnes dans la maçonnerie. On peut par exemple cité les niveaux a bulle qui donne l'horizontale ou la verticale mais cette outil requiert d'avoir une référence pour être juste. Le fil a plomb permet de faire la même chose mais ne nécessite aucun calibrage, le fameux fil a plomb se réalise très facilement, un poids et un fil, et on obtient une mesure de la verticale très précise. Outils romains: pierre tombale de Lucius Alfius Statius, Aquileia, Via Petrada. Métraux Nathanaël C - 2 /5 14 mars 2006 Mode d'emploi On peut facilement donné l'horizontale ou un angle avec un fil à plomb comme le montre l'équerre ci-dessous: Equerre à fil à plomb provenant de la tombe de Semerdjen (XIXe dynastie égyptienne). Musée du Caire. Photo tirée de "La symbolique maçonnique du troisième millénaire", Irène Mainguy, Dervy, 2003. Un mur qui penche risque de tomber. Le maçon qui veut construire un mur d'aplomb vérifie son travail en appliquant un fil à plomb contre le mur car le poids tend toujours le fil à la verticale. Métraux Nathanaël C - 3 /5 14 mars 2006 Mode d'emploi 2 Plan du boîtier Sur le coté droit l'interrupteur permet de mettre en ou hors tension le montage. 3 Montage de la pile 1. Mettre le montage hors tension. (Interupteur sur 0) 2. Devisser la face du côté opposé de l'interrupteur. 3. Déposer le couvercle a plat. 4. Ôter la pile à l'aide d'un tournevis. 5. Placer la nouvelle pile à dans le support. (Faire attention à la polarité) 6. Placer le couvercle sur le boîtier. 7. Remettre les vis. 8. Mettre en tension pour tester le fonctionnement. Métraux Nathanaël C - 4 /5 14 mars 2006 Mode d'emploi 4 Spécifications Alimentation de 0.9 V à 1.8 V supporte tous types de pile 1.5V de type de LR6 ou AAA. Le montage est capable de mesurer de 0 à ± 90° dans les angles X - Y. Consommation de 250 mA à 1.5V d'alimentation soit environ 300mW de consommation environ. 5 Explication de l'affichage A la mise sous tension de l'appareil l'image ci-dessous apparaît environ 1 seconde. Une fois l'introduction passée, l'écran ci-dessous apparaît. Le point central s'ffiche en vert lorsque les deux angles X et Y sont à zéro ou quand l'appareil est a zéro. Un point rouge s'affiche en fonction de la position de l'appareil en X ou en Y. Métraux Nathanaël C - 5 /5 14 mars 2006 Explication du code Travail de semestre 2005 Le 14 mars 2006. Table des matières 1 2 3 4 5 Introduction Le langage VHDL - 2.1 Détails techniques - 2.2 Historique - 2.3 Introduction au VHDL - 2.4 Exemples de code VHDL Logiciel utilisé pour l'élaboration du code - 3.1 Editeur VHDL - 3.2 Compilatateur Assignation des pattes Explication des blocs - 5.1 Top Level - 5.2 Global - 5.3 Diagramme de flux - 5.4 Initialisation du LCD - 5.5 Image d'accueil - 5.6 Interface SPI - 5.7 La PWM - 5.8 Génération de la table calcul - 5.9 Affichage des caractères - 5.10 Affichage de la valeur de X et Y - 5.11 Table de caractères - 5.12 La modification de la couleur des points - 5.13 Contrôle du point milieu - 5.14 Points extérieures 2 2 2 3 4 5 8 8 10 14 15 15 16 17 18 19 20 21 22 23 24 24 25 26 26 Explication du code 1 Introduction Le but de la FPGA est de pouvoir tout inclure dans un seul composant. Le présent projet à nécessité une APEX EP20K300EQC240-3 de chez Altera. Le majeur problème étant la place requise par les ROM pour les images. Le langage VHDL 2 Le langage VHDL - 2.1 Détails techniques La syntaxe du VHDL est tirée du langage Ada, dont les mots clefs ont été adaptés à la conception matérielle. L'une des particularités du VHDL provient du fait qu'il est possible d'exprimer facilement le parallélisme présent à l'intérieur d'un circuit. Le but d'un tel langage de description du matériel est de faciliter le développement d'un circuit numérique en fournissant une méthode rigoureuse de description du fonctionnement et de l'architecture du circuit désirée. L'idée est de ne pas avoir à réaliser (fondre) un composant réel, en utilisant à la place des outils de développement permettant de vérifier le fonctionnement attendu. Ce langage permet en effet d'utiliser des simulateurs, dont le rôle est de tester le fonctionnement décrit par le concepteur. L'étape suivante consiste à synthétiser cette description matérielle pour obtenir un composant réalisant les fonctions désirées, à l'aide d'éléments logiques concrets (portes logiques, bascules ou registres). Ceux-ci seront implémentés, selon la technologie utilisée, soit en transistors (dans le cas d'un ASIC), ou plus couramment en se basant sur les éléments programmables des FPGA. Pour ce dernier cas, il faut alors passer encore par des phases de placement et de routage qui consistent à placer les éléments synthétisés en fonction des ressources particulières disponibles dans les différents FPGA. Métraux Nathanaël D - 2/25 14 mars 2006 Explication du code - 2.2 Historique Originellement commandé par le ministère de la défense américain, celui-ci lui a finalement préféré le langage Verilog HDL, très similaire. Il existe de fait une quasi équivalence entre les deux langages, d'où l'existence de nombreux scripts de traduction de l'un vers l'autre. Le langage VHDL est maintenant principalement utilisé par les entreprises européennes. La version initiale de VHDL, standard IEEE 1076-1987, incluait un large éventail de types de données, numériques (entiers, réels), logiques (bits, booléens), caractères, temps, plus les tableaux de bits et chaînes de caractères. L'un des principaux problèmes concernait le type bit. Celui-ci ne pouvant prendre que 2 valeurs (0, 1), il était impossible de représenter les signaux de valeur inconnue ou encore les signaux en haute impédance, ainsi que la "force" d'un signal (faible, forte ou nulle). La norme IEEE 1164 définit le type std_logic avec 9 états possibles. Ceci a été adopté dans le VHDL-93 (seconde version de la norme IEEE 1076). Afin de répondre aux différents problèmes de l'électronique, la norme VHDL a du évoluer. L'IEEE Design Automation Standards Committee (DASC) a créé la norme IEEE 1076.1, ou VHDL-AMS (VHDL-Analog & Mixed Systems). Cette nouvelle norme est une extension de la norme IEEE 1076-1987 déjà existante. Elle supporte à présent la description et la simulation de circuits analogiques, numériques, et mixtes (analogique et numérique). Métraux Nathanaël D - 3/25 14 mars 2006 Explication du code - 2.3 Introduction au VHDL En VHDL, on décrit l’architecture d’un « module matériel » en deux temps : • Une ENTITY : il s’agit de déclarer ce que le module expose au monde extérieur, principalement la liste des E/S d’un module (exemple pour une porte logique classique : deux entrées a et b, et une sortie s). • Une ARCHITECTURE : il s’agit de décrire le fonctionnement d’un module dont les E/S ont été définies dans l'ENTITY. Plusieurs modules aux fonctionnements très différents et donc décrits par plusieurs ARCHITECTUREs, peuvent être basés sur une même ENTITY. (exemple de plusieurs portes logiques à deux entrées et une sortie : ET, OU, XOR…) C’est donc l'ARCHITECTURE qui contient la description de la fonction matérielle désirée : • soit sous forme de comportement attendu (behaviour), c'est-à-dire orienté fonctionnel, • soit sous forme de description précise de l’architecture matérielle (les portes logiques à utiliser). Dans cette ARCHITECTURE, la logique utilisée peut être : • soit combinatoire (on dit « concurrente », c'est-à-dire traitements en parallèle), • soit dépendante du temps (on parle de logique « séquentielle par opposition à la logique concurrente », c'est-à-dire traitements en série). Métraux Nathanaël D - 4/25 14 mars 2006 Explication du code - 2.4 Exemples de code VHDL Un multiplexeur 3 vers 1 (trois architectures concurrentes différentes) En VHDL, il faut distinguer le contenant du contenu, nommés respectivement entité et architecture. Le fichier VHDL Un fichier VHDL doit toujours porter le nom de l'entité qu'il contient. Son extension standard est ".vhd" Avant toute chose, il faut commencer par déclarer l'utilisation des librairies à utiliser dans le projet: -- En VHDL : une ligne de commentaires commence avec deux "-" -- le fichier doit porter le même nom que l'entité qu'il décrit, ici ce sera "logique_3_vers_1.vhd" -- Il faut toujours commencer par importer les bibliothèques VHDL standards normalisées par l'IEEE library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; L'entité Nous décrivons en premier lieu l'interface (l'entité) d'un composant multiplexeur, entité qui nous servira pour les trois exemples d'architectures concurrentes permettant de réaliser un multiplexeur. -- Voici un exemple d’entité, décrivant les E/S utilisées -- par les trois exemples d’architectures purement concurrentes : --- ATTENTION, l'entité doit avoir le même nom que le fichier (logique_3_vers_1.vhd) ENTITY logique_3_vers_1 IS PORT ( a b c adr s ); : : : : : IN STD_LOGIC; IN STD_LOGIC; IN STD_LOGIC; IN STD_LOGIC_VECTOR (1 downto 0); OUT STD_LOGIC END logique_3_vers_1; Métraux Nathanaël D - 5/25 14 mars 2006 Explication du code Première Architecture La première architecture permettant de décrire ce multiplexeur est en fait plus particulièrement adaptée aux équations simples, ou aux fonctions en somme de produits impliquants un nombre d'entrées variable (par exemple s=a.b+a.b.c) car cette méthode est très souple et permet de tout faire. En contrepartie elle est peu lisible pour les équations complexes. -- Première architecture concurrente décrivant un mux : ARCHITECTURE mux_3_vers_1 OF logique_3_vers_1 IS BEGIN s <= ( a AND NOT adr(1) OR ( b AND NOT adr(1) OR ( c AND adr(1) -- OR ('0'AND adr(1) l'équation du dessus AND NOT adr(0) ) AND adr(0) ) AND NOT adr(0) ); AND adr(0) ); -- Cette dernière ligne est implicite dans END mux_3_vers_1; Deuxième Architecture La deuxième architecture permettant de décrire ce multiplexeur est limitée aux fonctions dont le nombre d'entrées est fixée (n) pour lesquelles elle est tout particulièrement adaptée. Cependant, avec cette méthode il est obligatoire de lister l'ensemble des états possible (2^n). -- Deuxième architecture concurrente décrivant un mux : ARCHITECTURE mux_3_vers_1 OF porte_3_vers_1 IS BEGIN WITH adr SELECT s <= a WHEN b WHEN c WHEN ‘0’ WHEN "00", "01", "10", "11"; END mux_3_vers_1; Métraux Nathanaël D - 6/25 14 mars 2006 Explication du code Troisième Architecture La troisième architecture permettant de décrire ce multiplexeur est elle aussi limitée aux fonctions dont le nombre d'entrées est fixée (n) pour lesquelles elle est tout particulièrement adaptée. Cependant, avec cette méthode il n'est pas obligatoire de lister l'ensemble des états possible, puisque la dernière ligne permet d'appliquer un traitement par défaut. -- Troisième architecture concurrente décrivant un mux: ARCHITECTURE mux_3_vers_1 OF porte_3_vers_1 IS BEGIN s <= a WHEN adr = "00" ELSE b WHEN adr = "01" ELSE c WHEN adr = "10" ELSE ‘0’; END mux_3_vers_1; Architecture séquentielle - une bascule D La description d'une architecture séquentielle, c'est à dire avec une fonction dépendante du temps (ie. de l'horloge), passe par l'utilisation de process. -- Architecture séquentielle pour une bascule D : ARCHITECTURE bascule_d OF xxx IS BEGIN bascule : PROCESS (clk, reset) IF reset = ‘1’ THEN q <= 0; ELSE IF clk’event AND clk = ‘1’ THEN q <= d; END IF; END IF; END bascule; END bascule_d; Métraux Nathanaël D - 7/25 14 mars 2006 Explication du code 3 Logiciel utilisé pour l'élaboration du code L'élaboration d'un projet en VHDL nécessite beaucoup d'attention quand au temps de propagation, la majeure partie des problèmes proviennent de ceuxci. - 3.1 Editeur VHDL Création d'un projet sous ease Une fois le nouveau projet (« File -> New ») il faut ouvrir le gestionnaire des fichier en utilisant le bouton ci-dessous: Cliquer sur l'accès au propriété du Top level. Métraux Nathanaël D - 8/25 14 mars 2006 Explication du code Pour avoir un projet qui soit modifiable à coup sûr il faut respecter les étapes suivantes. Création de la librairie Work Choix de l'emplacement de fichier de sortie Designer permet de donner les indications concernant le dévellopeur, ce point et le suivant ne sont pas primordiaux. Métraux Nathanaël D - 9/25 14 mars 2006 Explication du code - 3.2 Compilatateur Paramètrage de Quartus II (Altera) Une fois le fichier compilé (voir le chapitre du Piggybag pour cette étape) il se peut que des problèmes de timing apparaîssent. Ceux-ci sont indiqués par un « Critical Warning », en ouvrant le fichier de compilation on peut les voir apparaître. En cliquant sur ce bouton on arrive sur la fenêtre des paramètrages des clocks. Métraux Nathanaël D - 10/ 10/25 14 mars 2006 Explication du code Il faut cliquer sur Clocks pour accéder au paramètrage des clocks. Une nouvelle fenêtre s'ouvre alors. Métraux Nathanaël D - 11/ 11/25 14 mars 2006 Explication du code Pour venir ajouter les clocks qui posent un problème lors de la compilation il faut presser sur new A ce moment il faut donner un nom à la modification et cliquer sur [...] pour arriver sur la liste. Métraux Nathanaël D - 12/ 12/25 14 mars 2006 Explication du code Pour afficher la liste des nets utilisés sur le logiciel il faut cliquer sur « List ». Pour les ajouter il suffit de presser [>] ou [>>]. Ne pas oublier de cliquer sur OK sur chacune des fenêtres, sinon les modifications ne sont pas prises en compte. Métraux Nathanaël D - 13/ 13/25 14 mars 2006 Explication du code 4 Assignation des pattes CS SDA SCK Reset Métraux Nathanaël 113 115 119 136 PWM_x PWM_y Clock D - 14/ 14/25 129 131 123 14 mars 2006 Explication du code 5 Explication des blocs Les différents schémas bloc présentés ci-dessous expliquent la méthode utilisée pour arriver à faire fonctionner le projet. Je n'ai pas inséré le code dans le rapport car il y a plus de 1200 pages A4. - 5.1 Top Level Le top level est le bloc important, on pourrait comparer celui-ci au composant que l'on viendrait placer dans un schéma pour créer un PCB, ce schéma est utilisé pour l'élaboration de l'assignation des pattes. Métraux Nathanaël D - 15/ 15/25 14 mars 2006 Explication du code - 5.2 Global Métraux Nathanaël D - 16/ 16/25 14 mars 2006 Explication du code - 5.3 Diagramme de flux Les étapes importantes du software sont commandées via un diagramme de flux ou plus communément appelé « State machine » en VHDL. Les étapes du diagramme s1 – s3 s4 s5 s6 s8 Métraux Nathanaël Reset du LCD Initialisation du LCD Affichage de l'intro Temporisation Affichage de l'image active avec les angles D - 17/ 17/25 14 mars 2006 Explication du code - 5.4 Initialisation du LCD Un compteur est cadencé à chaque fois que la SPI a fini d'envoyer une donnée à l'écran. Dés que l'initialisation est terminée la patte « Fin_Init » prend '1' est active l'étape suivante du diagramme de flux qui est l'affichage de l'image d'accueil. - 5.5 Image d'accueil Cette étape est similaire à la précédente sauf que la taille stockée est de 16384 Bytes, celle-ci contenant l'image du logo d'accueil. Comme avant, dès que l'affichage est terminé la patte « Fin_Intro » prends '1' est active l'étape suivant sur le diagramme. Métraux Nathanaël D - 18/ 18/25 14 mars 2006 Explication du code - 5.6 Interface SPI L'interface SPI est le moyen utilisé pour communiquer avec l'écran LCD celui-ci étant en mono directionnel, il est donc facile d'utilisation. Le concept utilisé pour la SPI est un multiplexeur, la sortie est influencée directement par les données palcées en entrée. L'interface d'entrée contient les data (8 Bits) et la commande CD(1 Bit). Le multiplexeur 16 to 1 est attaqué via un compteur 5 bits. Le multiplexeur génère tous les signaux nécessaires pour que la norme SPI soit respectée au mieux selon la datasheet afin de respecter les problèmes de métastabilité sur l'écran LCD. Métraux Nathanaël D - 19/ 19/25 14 mars 2006 Explication du code - 5.7 La PWM La PWM est utilisée pour aquérir les données depuis l'accéléromètre. Afin d'obtenir la valeur la plus précise possible, le cadencement de la FPGA à été fixé a 3.276'800 Mhz. Le bloc PWM_read est un compteur qui est déclenché au flan montant du signal d'entrée et stoppé au flan descendant. architecture a0 of PWM_read is signal pwm_1:std_logic_vector(12 downto 0); begin process (PWM,clock) begin if PWM = '1' then if rising_edge(Clock) then pwm_1 <= pwm_1 + "0000000000001"; end if; else pwm_1 <= "0000000000000"; end if; end process; process (PWM) begin if falling_edge(PWM) then OUT_pwm <= pwm_1(12 downto 5); end if; end process; end a0 ; -- of PWM_read Ce compteur est en 13 Bits et le clock utilisé et le clock de la FPGA divisé par quatre afin d'avoir une résolution sur 256 valeurs précises. Métraux Nathanaël D - 20/ 20/25 14 mars 2006 Explication du code La valeur BCD est générée à travers une table adressée en 8 Bits. Cette table est générée avec un petit code en C++ dont le calcul est: - 5.8 Génération de la table calcul #include <stdio.h> #include <stdlib.h> #include <math.h> int dec_to_bin_8_bit(int a) { int val = 0; if(a >= 128) {val = val + a/128 * 10000000; a = a - 128;} if(a >= 64) {val = val + a/64 * 1000000; a = a - 64;} if(a >= 32) {val = val + a/32 * 100000; a = a - 32;} if(a >= 16) {val = val + a/16 * 10000; a = a - 16;} if(a >= 8 ) {val = val + a/8 * 1000; a = a - 8;} if(a >= 4 ) {val = val + a/4 * 100; a = a - 4;} if(a >= 2 ) {val = val + a/2 * 10; a = a - 2;} if(a >= 1 ) {val = val + a;} return val; } main() { FILE *destination; destination = fopen("table_conversion.txt","w"); fprintf(destination,"-- Table de convertion binaire en BCD\n"); fprintf(destination,"case (In_Bin) is\n"); for (int i = 0; i<=256; i++) { int duty,t1,t2; t1 = i; t2 = 256; duty = t1/t2; float a; int valh,vall,BCD_l,BCD_h,b; a = abs ( asin((((float(i))/256)-0.5)/0.125 )*(180.0/3.1415)); if (a > 90) a = 90.0; if (a < 10) b = int(a) ;else if (a < 20) b = int(a) - 10;else if (a < 30) b = int(a) - 20;else if (a < 40) b = int(a) - 30;else if (a < 50) b = int(a) - 40;else if (a < 60) b = int(a) - 50;else if (a < 70) b = int(a) - 60;else if (a < 80) b = int(a) - 70;else if (a < 90) b = int(a) - 80;else if (a < 100) b = int(a) - 90; int low,high; if (i <= 255) {low = i; } else { low = i & (0x00FF); high = i>>8; } valh = dec_to_bin_8_bit(int(a/10)); vall = dec_to_bin_8_bit(b); low = dec_to_bin_8_bit(low); high = dec_to_bin_8_bit(high); fprintf(destination,"when \"%0.8d\" => BCD <= \"%0.4d%0.4d\"; -- %d \n",low,valh,vall,int(a)); } fprintf(destination,"when others => BCD <= \"00000000\";\n"); fprintf(destination,"end case;\n"); fclose(destination); } Métraux Nathanaël D - 21/ 21/25 14 mars 2006 Explication du code - 5.9 Affichage des caractères La partie d'affichage du message d'accueil (AngleXY) dans le projet ease, est assez complexe et demande une tournure d'esprit un peu particulière. La PWM donne deux valeurs, une en BCD et l'autre en binaire, la valeur en binaire est utilisée pour affficher la valeur sur les points, la valeur en BCD pour afficher la valeur en décimal pour les angles X et Y. Métraux Nathanaël D - 22/ 22/25 14 mars 2006 Explication du code - 5.10 Affichage de la valeur de X et Y « Adresse(13:0) » vient attaquer le bloc « abc » et place sur PixelOUT la valeur du pixel à afficher en fonction de l'emplacement du curseur sur l'écran LCD. La partie « Conv_Couleur » donne la couleur du pixel à afficher, si PixelOUT est à '1', le pixel sera coloré en noir sinon il sera en blanc. - 5.11 Table de caractères Les caractères utilisé sont: ● Police: Verdana ● Hauteur: 9 pixels -- EASE/HDL begin --------------------------------------------------------------- Architecture 'a0' of 'ROM. --------------------------------------------------------------------------------- Copy of the interface declaration of Entity 'ROM' : --- port( -- BCD : in std_logic_vector(3 downto 0) ; -- Pixel : out std_logic_vector(0 to 62) ) ; --- EASE/HDL end ---------------------------------------------------------------architecture a0 of ROM is begin process (BCD) begin case (BCD) is -- 012345678901234567890123456789012345678901234567890123456789012 when "0000" => Pixel <="011111011000111100011110001111000111100011110001111000110111110"; when "0001" => Pixel <="111111000110000011000001100000110000011000001100000111100011000"; when "0010" => Pixel <="111111100001100001100001100001100001100000110000011000110111110"; when "0011" => Pixel <="011111011000111100000110000001111001100000110000011000110111110"; when "0100" => Pixel <="011000001100001111111011000101100100110100011010001110000110000"; when "0101" => Pixel <="011111011000111100000110000011000000111110000011000001101111110"; when "0110" => Pixel <="011111011000111100011110001111000110111110000001100001100111100"; when "0111" => Pixel <="000011000011000001100001100000110000110000011000011000001111111"; when "1000" => Pixel <="011111011000111100011110001101111101100011110001111000110111110"; when "1001" => Pixel <="001111001100001100000111111011000111100011110001111000110111110"; when others => Pixel <="111111111111111111111111111111111111111111111111111111111111111"; end case; end process; end a0 ; -- of ROM Métraux Nathanaël D - 23/ 23/25 14 mars 2006 Explication du code - 5.12 La modification de la couleur des points Les points changent de couleurs en fonction de la position du montage. Pour ce faire une série de comparaison est effectuée, si la valeur centrale (128 ou 0 degrés apparaît), le point du milieu est activé alors que tous les autres sont éteints. Métraux Nathanaël D - 24/ 24/25 14 mars 2006 Explication du code - 5.13 Contrôle du point milieu architecture a0 of Milieu_Control is begin process (Bas_in,Haut_in,Droite_in,Gauche_in) begin if (Bas_in = '0' and Haut_in = '0' and Droite_in = '0' and Gauche_in = '0') then Milieu <= "00011100"; else Milieu <= "11111111"; end if; end process; end a0 ; -- of Milieu_Control - 5.14 Points extérieures Les 4 points extérieures utilisent le même principe, il y a juste le nom du signal qui change. begin process (Droite_in) begin if Droite_in = '1' then Droite <= "11100000"; else Droite <= "11111111"; end if; end process; end a0 ; -- of Droite_control Métraux Nathanaël D - 25/ 25/25 14 mars 2006 Piggybag APEX Travail de semestre 2005 Le 14 mars 2006. Table des matières 1 2 3 4 Présentation - 1.1 Possibilité - 1.2 Alimentation Emplacement des pattes Mise en oeuvre pour le développement - 3.1 Création d'un nouveau projet - 3.2 Choix du composant - 3.3 Programmation du composant - 3.4 Programmation du composant Schéma du piggybag 2 2 2 3 4 4 7 9 10 11 Piggybag APEX 1 Présentation - 1.1 Possibilité Le piggybag fait au centre professionel du Nord Vaudois, permet de placer des FPGA de chez Altera allant de 100 000 - 300 000 portes. Il s'agit des Altera APEX EP20K100 à EP20K300. - 1.2 Alimentation Les alimentations sont en 1.8V pour le core et 3.3V pour les buffer logiques. Le system Multivolt d'Altera permet d'entrer des tensions de 5V mais ne permet pas de sortir des tensions supérieures a 3.3V. Métraux Nathanaël E - 2/11 14 mars 2006 Piggybag APEX 2 Emplacement des pattes Connecteur 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 Métraux Nathanaël X8 X13 X9 X10 113 114 115 116 117 118 119 121 123 124 125 126 NC NC 129 130 131 133 134 135 136 138 NC NC NC NC 170 171 172 173 174 NC NC 178 180 182 183 184 186 187 190 192 192 NC NC 196 197 198 201 202 203 207 215 216 217 219 220 221 222 223 224 225 226 NC NC 230 231 232 233 234 235 236 237 238 APEX 2 3 4 NC NC 7 8 9 10 11 13 NC NC 16 17 18 20 NC NC 23 NC NC 35 NC NC NC NC 40 41 43 44 46 47 48 49 50 51 52 53 54 55 57 58 59 61 62 63 64 65 66 68 69 70 71 NC NC 74 75 76 77 79 80 81 82 83 84 85 94 95 96 98 99 100 101 102 103 104 105 NC NC 109 110 111 113 E - 3/11 14 mars 2006 Piggybag APEX 3 Mise en oeuvre pour le développement On commence par brancher, le piggybag au byteblaster préalablement branché sur le port parrallèle du PC. - 3.1 Création d'un nouveau projet Ensuite on ouvre le logiciel Quartus Dans le menu démarrer on crée un nouveau projet Métraux Nathanaël E - 4/11 14 mars 2006 Piggybag APEX La fenêtre suivante apparaît Ici on va pouvoir choisir dans l'ordre des cases • Le répertoire de travail • Le nom du projet • Le top level du fichier VHDL on peut choisir à trois reprise le fichier VHDL conçu via la case "..." Puis on presse le bouton Next Métraux Nathanaël E - 5/11 14 mars 2006 Piggybag APEX La nouvelle rubrique demande le ou les fichiers VHDL utilisé dans le projet En pressant les "..." on ouvre une fenêtre et l'on choisit notre fichier. Il ne faut pas oublier de presser la touche "Add..." car sinon le fichier ne sera pas intégrer au projet. Puis on termine cette étape par la touche "Next". Métraux Nathanaël E - 6/11 14 mars 2006 Piggybag APEX - 3.2 Choix du composant Dans notre cas, nous allons sélectionner une APEX20KE en boîtier 240 pins. On termine cette étape par "Next >". La rubrique EDA tools Wizard ne doit rien avoir de coché. Métraux Nathanaël E - 7/11 14 mars 2006 Piggybag APEX Une fois la touche "Next>" pressée on obtient le résumé de la configuration du projet. Métraux Nathanaël E - 8/11 14 mars 2006 Piggybag APEX - 3.3 Programmation du composant On commence par compiler le nouveau projet Avec la flèche violette. Une fois le projet compiler, il faut assigner les pattes au composant Une fois la fenêtre ouverte, on ouvre à nouveau le menu "assignement". et on presse sur "Back-Annotate Assignements..." Sans rien modifier on presse "OK" dans la fenêtre qui s'ouvre. A ce moment là, le composant dessiné montre les pattes utilisées colorées en rouge. On peut venir les déplacer pour changer. Il faut ensuite recompiler pour que le changement soit pris en compte. Métraux Nathanaël E - 9/11 14 mars 2006 Piggybag APEX - 3.4 Programmation du composant On commence par presser le bouton où un composant est dessiné, si on laisse en surbrillance il doit écrire "Programmer" Une fois l'interface de programmation ouverte, on choisit le Mode "Passive serial". Puis on presse sur "Start". Lorsque la barre atteint 100%, le composant est programmé. Métraux Nathanaël E - 10/ 10/11 14 mars 2006 Piggybag APEX 4 Schéma du piggybag Métraux Nathanaël E - 11/ 11/11 14 mars 2006 Alimentations Travail de semestre 2005 Le 14 mars 2006. Table des matières 1 2 3 4 5 6 7 Introduction Ce que le montage requiert Obtention des tensions - 3.1 But - 3.2 Choix des composants Bref présentation de l'IC - 4.1 Dessin - 4.2 Schéma interne - 4.3 Schéma typique de montage du MAX 1722 Où trouver les composants Design de l'alimentation (PCB) - 6.1 Conception du PCB Schéma des alimentations utilisées - 7.1 Alimentation 1.8V - 7.2 Alimentation 3.3V - 7.3 Alimentation 6V 2 2 2 2 2 3 3 3 4 4 4 4 5 5 5 6 Alimentations 1 Introduction Dans cette rubrique, je vais expliquer comment je m'y suis pris pour alimenter le montage. 2 Ce que le montage requiert Le montage est globalement peu gourmand en courant, ce qui permet de travailler avec des composants relativement petits. Les tensions nécessaires sont: • 1.8V pour le core de la FPGA • 3.3V pour l'écran LCD, la FLASH. • 6V pour le rétroéclairage du LCD 3 Obtention des tensions - 3.1 But Ayant placé dans le cahier des charges que l'alimentation devait se faire avec une seule pile. Le but est d'élever les tensions de 0.9V aux tensions données. La pile fournit 1.5 voir 1.6V mais seulement quand elle est neuve, le but est de la vider jusqu'au bout. - 3.2 Choix des composants Un tour sur le site de Maxim donne vite des solutions rapides et fiables. De plus le site offre la possibilité de commander des samples ce qui permet d'économiser un peu sur le projet en global et d'essayer de IC que l'on ne trouve pas chez les fournisseurs habituels. Les IC choisit sont: • MAX1724EZK33 pour le 3.3V • MAX1722EZK1 pour le 1.8V et le 6V Ces alimentations ont besoin d'une self de 10uH et deux condensateurs, l'alternative face un IC tel que le 780x est pas mal, car on travail avec une tension d'entrée allant de 0.5V à 1.8V pour des tensions de sortie allant jusqu'a 6V et un courant max de 150 mA. 1 Pour de plus amples information se réferer a la note d'application sur le CD en annexe (../Note d'application/MAX1722-MAX1724.pdf) Métraux Nathanaël F - 2 /6 14 mars 2006 Alimentations 4 Bref présentation de l'IC - 4.1 Dessin - 4.2 Schéma interne Métraux Nathanaël F - 3 /6 14 mars 2006 Alimentations - 4.3 Schéma typique de montage du MAX 1722 On peut très bien remplacé R2 et R1 par un potentiomètre. 5 Où trouver les composants A la date de rédaction de ce document il n'est pas possible de trouver ce composant en suisse, mais il est disponible en « sample » chez Maxim1. Il faut faire attention car le nombre est limité à deux exemplaires et met autour de 6 semaines pour arriver suivant les stocks. Les composants standards sont disponible chez Farnell ou Distrelec. 6 Design de l'alimentation (PCB) Il ne faut pas perdre de vue que ce genre d'alimentation ne travail pas comme un régulateur, il s'agit d'une véritable alimentation à découpage, l'inconvenient est qu'il faut faire très attention au design du PCB sinon l'alimentation se transformera en véritable nid a parasite. Pour ce faire, je déconseil d'utiliser ce genre de composant sur des montages analogique. - 6.1 Conception du PCB Si l'on veut respecter la CEM et avoir une alimentation plutôt qu'un oscillateur, il faut impérativement que tous les composants nécessaires à l'alimentation soit au plus proche de l'IC, la configuration des pattes permet de réalisé quelque chose de joli avec des composants SMD. 1 www.maxim-ic.com Métraux Nathanaël F - 4 /6 14 mars 2006 Alimentations 7 Schéma des alimentations utilisées - 7.1 Alimentation 1.8V L2 10uH MAX1722EZK 1 Batterie 3 FB U2 5 LX 4 OUT GND C3 10uF Batt 1.8V 2 C4 10uF GND R3 R4 100K 47K Les résistances R3 et R4 doivent être calculées, selon la datasheet: R2=R1 Vout −1 Vfb Vfb vaut 1.235V. Les valeurs obenuent sont pour R3 = 100K: R2=100K 1.8V −1=45.73K soit 47K 1.235 - 7.2 Alimentation 3.3V L3 10uH MAX1724EZK30 1 Batterie 3 FB U3 LX GND 2 C5 10uF Batt OUT 5 4 3V C6 10uF GND La tension de 3.3V est obtenue directement par l'IC il n'y a rien besoin de Métraux Nathanaël F - 5 /6 14 mars 2006 Alimentations calculer. - 7.3 Alimentation 6V L1 10uH MAX1722EZK 1 Batterie 3 FB U1 OUT 5 4 6V C2 10uF 2 R1 LX GND C1 10uF Batt R2 GND 100K 390K Les résistances R1 et R2 doivent être calculée, selon la datasheet: R2=R1 Vout −1 Vfb Vfb vaut 1.235V. Les valeurs obenuent sont pour R1 = 100K: R2=100K Métraux Nathanaël 6V −1=385.83K soit 390K 1.235 F - 6 /6 14 mars 2006 Accéléromètre Travail de semestre 2005 Le 14 mars 2006. Table des matières 1 2 3 4 5 6 Introduction - 1.1 Domaine d'utilisation de l'accéléromètre Composant utilisé - 2.1 Choix du composant - 2.2 Présentation du composant - 2.3 Fonctions et capacités de l'accéléromètre Conversion du signal PWM en analogique Circuit imprimé d'adaptation - 4.1 Implantation - 4.2 Pinout du composant Signaux générés Calculs 2 2 2 2 3 3 4 4 5 5 6 6 Accéléromètre 1 Introduction - 1.1 Domaine d'utilisation de l'accéléromètre De nos jours, nombre d'applications utilisent des accéléromètres, dans le monde de l'automobile ils sont énormément présents. De nos jours la sécurité des voitures est accrue grâce à des systèmes tel que l'ESP. Celui-ci, est un trés bon exemple d'utilisation de l'accéleromètre car dès le moment où la voiture subit une accélération latérale rapide, un système de correction élèctronique intervient immédiatement pour remettre le véhicule sur la bonne trajectoire. Les feux au xénon fleurissent sur la majeur partie des nouveaux véhicules. Ceux-ci étant particulièrement lumineux, ils éblouiraient les autres usagers de la route si aucun réglage n'était fait. Le réglage de ceux-ci est fait au travers d'une électronique et de moteur. Les informations fournies à l'élèctronique de commande proviennent d'accéleromètres qui donnent la position horizontale de manière à ce que les phares ne dépassent jamais une certaine hauteur et ceci peu importe la charge du véhicule. 2 Composant utilisé - 2.1 Choix du composant J'avais utilisé ce composant pour faire des mesures d'accéleration sur une voiture et ainsi déduire la puissance de celle-ci en fonction de son poid. J'en ai profité pour proposer ce composant à mes collégues de classe et nous avons passé la commande chez Maurer Alexandre Distribution, l'entreprise d'un ami. Le composant choisi donne deux valeurs PWM une en X et l'autre en Y. Métraux Nathanaël G - 2 /6 14 mars 2006 Accéléromètre - 2.2 Présentation du composant Le MXD7202GL de MEMSIC est un accéléromètre permettant de mesurer l'accélération de façon bidimensionnel. Ce circuit est conçu sur le processus standard "submicron CMOS", une technique de fabrication "system-on-achip" ou "système-sur-circuit". En effet, cet élément est un système complet contenant le capteur analogique, ainsi que le système de traitement de signaux pour obtenir des données digitales L'accéléromètre possède une échelle de mesure de ±2g. Il fournit un signal PWM à ces sorties dont le rapport cyclique varie de ±12,5%/g à 5V. L'élément peut aussi bien mesurer les accélérations statiques (gravité terrestre) que les accélérations dynamiques (vibrations). Le capteur interne est basé sur un principe de conversion de la chaleur et ne requiert aucune masse solide de référence. L'élément résiste à des chocs de plus de 50'000 g, ce qui lui permet de ne pas être endommagé lors de l'assemblage sur circuit imprimé. - 2.3 Fonctions et capacités de l'accéléromètre • Low cost (Bas prix). • Résolution d'une précision de moins de 1 milli g. • Accéléromètre bidimensionnel fabriqué dans un circuit intégré CMOS monolithique. • Traitement des signaux en interne du circuit. • Pas d'éléments mobiles dans l'IC (Pas de perte par frottements). • Résiste aux chocs de plus de 50'000 g. • Boîtier LCC de 5mm x 5mm x 2mm. • Tension d'alimentation allant de 2.7V à 5V. • Compensation de la sensibilité suivant la température extérieure. • Offset zéro g extrêmement faible. • Aucun ajustement extérieur nécessaire. • Opérationnel de 0°C à 70°C. Métraux Nathanaël G - 3 /6 14 mars 2006 Accéléromètre 3 Conversion du signal PWM en analogique Le signal PWM peut-être converti en signal analogique grâce à un filtre RC placé sur chacune des sorties. Le seul point auquel il faut prêter attention dans cette configuration est que l'impédance du circuit qui suit le capteur soit plus élevée que l'impédance du filtre RC. 4 Circuit imprimé d'adaptation Afin que l'accéléromètre puisse être connecté sur un circuit pour composant traversant, la réalisation d'un circuit imprimé d'adaptation a été nécessaire. Je tiens a remercier au passage Anto Barisic sans qui ce PCB n'aurait pas vu le jour et aurait fortement retardé la mise en oeuvre de l'accéléromètre. Métraux Nathanaël G - 4 /6 14 mars 2006 Accéléromètre - 4.1 Implantation - 4.2 Pinout du composant 1 2 3 4 Métraux Nathanaël TP (GND) COM (GND) PWM Y 5 6 7 8 G - 5 /6 PWM X 2.7V – 5V 14 mars 2006 Accéléromètre 5 Signaux générés Le capteur utilisé nous fourni une pwm ayant une horloge à 100Hz. Le rapport cyclique varie en fonction de l'angle. 6 Calculs La formule donnée dans la datasheet nous donne la valeur par rapport a un 1g. T1 T2 A la valeur 0 on obtient 0g donc un rapport cyclique de 50% − 0.5 0.125 := A Pour obtenir la valeur de l'angle formé avec l'horizontale asin T1 − 0.5 180 T2 ⋅ := Angle 0.125 Métraux Nathanaël π G - 6 /6 14 mars 2006 Affichage Travail de semestre 2005 Le 13 mars 2006. Table des matières 1 2 3 4 5 6 7 8 9 Introduction Le choix de l'écran Spécification de l'écran - 3.1 Résolution - 3.2 Interface - 3.3 Emplacement des pattes Procédure d'initialisation - 4.1 Valeur d'initialisation Stockage des images - 5.1 Le problème - 5.2 Les améliorations Listening du code de la conversion RAW - VHDL Traitement des images - 7.1 Le fichier RAW - 7.2 Le logiciel créé - 7.3 Les images utilisées Protocole d'initialisation Spécifications 2 2 2 2 2 3 4 4 7 7 7 8 9 9 9 9 10 11 Affichage 1 Introduction Le travail de semestre ayant pour but de mettre en oeuvre nos connaissances, j'ai décidé d'utiliser un écran qui consomme peu et qui soit en couleur. La meilleure alternative est un écran de natel, car ceux-ci ont été conçu pour consommer peu, travailler à des tensions faibles, résistants à un peu tous les types de traitements que l'on pourrait rencontrer dans un niveau à bulle sur un chantier. 2 Le choix de l'écran Après, avoir fait un tour d'horizon sur le net, je suis tomber sur plusieurs sites parlant de l'écran des Nokia 6610, 6100 et autre, qui utilisent un driver connu (PCF88331 de Philips). Pour se fournir un tel écran j'ai du faire plusieurs démarche chez des réparateurs de natel. 3 Spécification de l'écran - 3.1 Résolution 128x 128 pixels avec 3 couleurs (RGB2). - 3.2 Interface L'interface se fait via de la SPI comme le montre le chronogramme ci-dessous. Le protocole est de type SPI mais en uni-directionnel, sur 9 bits dont un bit de choix pour une trame de données ou de commandes. 1 2 Note d'application sur le CD en annexe RGB = Red Green Blue (Rouge Vert Bleu) Métraux Nathanaël H - 2/11 13 mars 2006 Affichage - 3.3 Emplacement des pattes L'image ci-dessus présente l'emplacement des pattes du composant, il faut noter que l'écran possède deux types de drivers un Epson et un Philips, celuis d'Epson ne possède que le petit connecteur qui est très difficile à souder, il faut de préférence en utiliser un de type Philips. La note d'application est plus facile à trouver pour celui-ci. Il sont disponibles chez www.jelu.se ou www.yampp.com. Métraux Nathanaël H - 3/11 13 mars 2006 Affichage 4 Procédure d'initialisation - 4.1 Valeur d'initialisation Métraux Nathanaël H - 4/11 13 mars 2006 Affichage Métraux Nathanaël H - 5/11 13 mars 2006 Affichage Métraux Nathanaël H - 6/11 13 mars 2006 Affichage 5 Stockage des images - 5.1 Le problème Le problème de la FPGA1 est que la capacité de stockage est très vite limitée. Dans le cas du projet de semestre l'utilisation d'un écran couleur pose un sérieux problème de place car une image utilise 57Ko en mode RGB sous un fichier brut RAW2. - 5.2 Les améliorations La méthode consiste à transformer l'image en 8 bits de manière à pouvoir afficher la couleur du pixel directement, cette opération fait gagner autour de 70% de place. 1 2 Field Programmable Logic Array - Composant à logic programmable volatile. Format brut d'image utilisé par les appareils photos numériques ou les scanners Métraux Nathanaël H - 7/11 13 mars 2006 Affichage 6 Listening du code de la conversion RAW - VHDL #include <stdio.h> #include <stdlib.h> int dec_to_bin_8_bit(int a) //Conversion Int en valeur Binaire ASCII. { int val = 0; if(a >= 128) {val = val + a/128 * 10000000; a = a - 128;} if(a >= 64) {val = val + a/64 * 1000000; a = a - 64;} if(a >= 32) {val = val + a/32 * 100000; a = a - 32;} if(a >= 16) {val = val + a/16 * 10000; a = a - 16;} if(a >= 8 ) {val = val + a/8 * 1000; a = a - 8;} if(a >= 4 ) {val = val + a/4 * 100; a = a - 4;} if(a >= 2 ) {val = val + a/2 * 10; a = a - 2;} if(a >= 1 ) {val = val + a;} return val; } main() { FILE *source; FILE *destination; source = fopen("128.raw","rb"); //Fichier source destination = fopen("out.vhd","w"); //Fichier de destination for (long i = 0; i<=128*128-1; i++) //Résolution de l'image - 1 pixel. { int r,g,b; int a; long val; a = 0; r = fgetc(source); g = fgetc(source); b = fgetc(source); a = ((r&0x07)*32) | ((g&0x07)*4) | (b&0x03); int low,high; if (i <= 255) {low = i; } else { low = i & (0x00FF); high = i>>8; } val = 0; val = dec_to_bin_8_bit(a); low = dec_to_bin_8_bit(low); high = dec_to_bin_8_bit(high); if (a == 255) { fprintf(destination," -- when \"%0.6d%0.8d\" => Data <= \"%0.8d\";CD <= '1';Fin_Tempo <= '0'; -- %d a%x r%x g%x b%x\n",high,low,val,i,a,r,g,b); } else { fprintf(destination,"when \"%0.6d%0.8d\" => Data <= \"%0.8d\";CD <= '1';Fin_Tempo <= '0'; -- %d a%x r%x g%x b%x\n",high,low,val,i,a,r,g,b); } } fclose(source); fclose(destination); } Métraux Nathanaël H - 8/11 13 mars 2006 Affichage 7 Traitement des images Cette étape consiste à convertir les images en ligne de code VHDL de manière à les inclures dans la FPGA. L'inconvénient et que l'on vient remplir autour de 45% du composant juste avec les images. - 7.1 Le fichier RAW Le fichier RAW est un format utilisé sur les scanners, appareils numériques, on l'appelle aussi format brut. Ce fichier a la particularité de ne posséder aucune entête ou header. Dés qu'on l'ouvre on a les données au format RGB à disposition. - 7.2 Le logiciel créé1 Le logiciel créé permet de convertir les images au format RAW en code VHDL afin de faire un ROM en code pur. - 7.3 Les images utilisées 1 Le logiciel est disponible sur le CD en annexe Métraux Nathanaël H - 9/11 13 mars 2006 Affichage 8 Protocole d'initialisation Une des méthodes d'initialisation qui marche bien est la suivante: 0x01 Reset Commande 0x11 Sleepout Commande 0x25 Display On Commande 0x03 Booster On Commande 0x36 Data access Commande 0x48 X and BGR Mode Commande 0x3A Color Mode Commande 0x02 Mode 256 Couleur Data 0x2A Colonne Commande 0x02 Y0 Data 0x81 Y0 Data 0x2B Ligne Commande 0x02 X0 Data 0x81 X0 Data 0x2D Memory write Commande Elle permet d'initialiser l'écran et de placer le curseur sur le premier pixel. Pour modifier la résolution des couleurs il faut regarder dans la datasheet les valeurs disponible normalement 8bits, 12bits, 16bits de résolution. Celle indiquée ci-dessous permet d'envoyé en 8 bits: R = Rouge G = Vert B = Bleu R2 R1 Métraux Nathanaël R0 G2 G1 H - 10/ 10/11 G0 B1 B0 13 mars 2006 Affichage 9 Spécifications Résolution 132 x 132 pixel RGB, avec 4096 couleurs au maximum. Driver EPSON et Philips PCF8833. Alimentation de 1.8V - 3.5V. Consommation 20 mA avec rétroéclairage (sans le rétréclairage l'écran est noir mais consomme moin de 1 mA. Métraux Nathanaël H - 11/ 11/11 13 mars 2006 Dossier de fabrication Travail de semestre 2005 Le 13 mars 2006. Table des matières 1 2 3 4 5 6 7 Introduction Le circuit imprimé - 2.1 Explication des fichiers GERBER - 2.2 Dimensions - 2.3 Implantation - 2.4 Plan de perçage Liste de composants - 3.1 Distrelec - 3.2 Farnell - 3.3 Fourniture personnelle - 3.4 Centre professionnel - 3.5 Madis Plan du boîtier - 4.1 Cache avec interrupteur - 4.2 Cache avec le porte pile Procédure pour le montage - 5.1 Montage du PCB - 5.2 Réglage des alimentations Montage du boîtier - 6.1 Côté pile - 6.2 Coté interrupteur Version finale du boîtier 2 2 2 3 4 5 6 6 6 6 6 6 7 7 8 9 9 9 10 10 10 11 Dossier de fabrication 1 Introduction Cette partie va présenter: • Le circuit imprimé • La liste de composants avec les prix et les différents fournisseurs • Les plans pour la fabrication du boîtier • La procédure pour le montage Les fichiers gerber relatifs au circuit imprimé sont placés sur le CD en annexe au dossier. 2 Le circuit imprimé - 2.1 Explication des fichiers GERBER Les fichiers nécessaires à la fabrication du circuit imprimé se trouvent sur le CD-ROM fournit en annexe dans le répertoire PCB. Ce répertoire contient deux sous-répertoires 1 RS274X 3 1 niveau a bulle.GTL Fichier gerber du TOP level Percage 3 niveau a bulle.PER Fichier de perçage, unit = inches, code type ASCII none 3 niveau a bulle.DRL Plan de percage format gerber Il n'y a pas de plan de découpe, ni de plan d'implantation. Seul le plan de perçage fait foi. Tolérance +0.1mm - 0mm Métraux Nathanaël I - 2/11 13 mars 2006 Dossier de fabrication - 2.2 Dimensions Métraux Nathanaël I - 3/11 13 mars 2006 Dossier de fabrication - 2.3 Implantation Métraux Nathanaël I - 4/11 13 mars 2006 Dossier de fabrication - 2.4 Plan de perçage l 0.8 mm n 0.9 mm Métraux Nathanaël I - 5/11 13 mars 2006 Dossier de fabrication 3 Liste de composants - 3.1 Distrelec Boîtier 30 06 36 26.50 Cache du boitier 30 06 42 22.80 Interrupteur 20 27 53 2.90 Quartz 3.27680 MHz 64 47 83 5.40 Y1 952-2042 1.60 L1 - L3 1.90 R1 - R3 - 3.2 Farnell Self 10 uH Boitier 1210 Potentiomètre 50K Type CERMET 107-135 - 3.3 Fourniture personnelle Ecran Nokia 6100 40.00 IC d'alimentation MAX 1722 5.00 U1 - U3 74HC14 format SOL14 2.00 U4 Condensateur 100uF Tantale 1206 2.00 C1 - C6 40.00 X4 - 3.4 Centre professionnel Gravure et découpe du boîtier Circuit imprimé (2 versions) Connecteur et cable Piggybag et matériel de dévelopement - 3.5 Madis Accéléromètre Cout total du projet de semestre est d'environ 150 CHF plus les fournitures de l'école Métraux Nathanaël I - 6/11 13 mars 2006 Dossier de fabrication 4 Plan du boîtier - 4.1 Cache avec interrupteur Métraux Nathanaël I - 7/11 13 mars 2006 Dossier de fabrication - 4.2 Cache avec le porte pile Métraux Nathanaël I - 8/11 13 mars 2006 Dossier de fabrication 5 Procédure pour le montage Cette étape va expliquer le protocole à suivre pour que le montage puisse être fonctionnel rapidement. - 5.1 Montage du PCB Pour faciliter le montage des composants sur le PCB il faut suivre les étapes suivantes. On commence par vérifier qu'il n'y ait pas de pont ou piste cassée afin d'éviter des problèmes. On a presque tous les composants qui sont au format SMD donc il faut impérativement commencé par les plus difficiles à souder: IC d'alimentation U1 à U3 Condensateur d'alim (attention ils sont polarisés) le trait là où il y a les angles. C1 à C6. Bobines des alimentations à découpages L1 à L3. Potentiomètre d'alimentations R1 à R3. Ensuite il faut régler les tensions d'alimentation. (voir étapes suivantes) Il est impératif de régler les alimentations avant de monter les composants travaillant à basse tension. X3, Y1 et U4 peuvent ensuite être monté Les barrettes pour la connection maintenant. JP1, X2 et X4. du piggybag peuvent être montées Branchement du LCD (attention à la patte 1) Montage du piggybag sur le PCB. Placement des EPROM sur le piggybag. La partie de montage du PCB est terminée. - 5.2 Réglage des alimentations Les alimentations doivent être reglées avec le plus grands soin il faut que sur le connecteur X2, JP1 on trouve les tensions d'alimentation 1.8V 2 3.3V 12 4 X2 GND 6 Métraux Nathanaël 4 X2 6V 8 4 JP1 4 X2 I - 9/11 13 mars 2006 Dossier de fabrication 6 Montage du boîtier - 6.1 Côté pile Le trous ont été percer 1/10 de mm plus petit afin de pouvoir visser des vis autotaraudeuses de manière à ne pas avoir d'écrou sur la partie extérieur. - 6.2 Coté interrupteur L'interrupteur est chassé à l'intérieur de la découpe. Métraux Nathanaël I - 10/ 10/11 13 mars 2006 Dossier de fabrication 7 Version finale du boîtier Métraux Nathanaël I - 11/ 11/11 13 mars 2006 CD Travail de semestre 2005 Le 14 mars 2006. Table des matières 1 2 3 Introduction Contenu du CD - 2.1 Répertoires principaux Le CD 2 2 2 3 CD 1 Introduction Le cédérom fournit dans ce chapitre, donne l'intégralité des sources créées. Les logiciels utilisés pour la rédaction du texte et pour la conversion au format PDF. 2 Contenu du CD - 2.1 Répertoires principaux Rapport Ce dossier contient tous les documents relatifs à la rédaction du rapport. Note d'application Dossier sur l'utilisation des composants ou datasheet. Logiciels utilisés Logiciel utilisés pour la rédaction du rapport, ils sont en licence GNU (donc libre). Contient OpenOffice.org, PDFcreator, Srip32 Source Dossier avec les sources sous Ease, Quartus, les fichier pour les EPROM pour le piggybag. Matériel Contient les documents relatif à la conception du matériel, d'implantation, schéma électrique, conception du PCB, etc... schéma PCB Dossier contenant les différents fichier relatif a la conception du circuit imprimé, fichier au format Gerber RS274x. Métraux Nathanaël J - 2 /3 14 mars 2006 CD 3 Le CD Métraux Nathanaël J - 3 /3 14 mars 2006