ELE3311 Systèmes logiques programmables Projet n o 2 ÉCRAN OLED Hiver 2017 Introduction Le but de ce laboratoire est d apprendre à utiliser un premier périphérique disponible sur la carte Nexys Video. Jusqu à maintenant, nous avons vu comment utiliser les DEL, mais cellesci ne requièrent pas de protocole de communication. Pour l écran OLED, différents modules devront être implémentés afin d avoir un système fonctionnel. À la fin du laboratoire, lorsque les modules requis auront été implémentés, vous serez en mesure d initialiser l écran et de faire un premier affichage. Le schéma suivant est un schéma préliminaire qui montre les différentes MSA du système. Première partie Contrôleur SPI L écran LCD est muni d un contrôleur SSD1306. Ce dernier permet plusieurs interfaces de communication, mais une seule d entre elles est disponible sur la carte Nexys Video. Il s agit d une interface SPI (serial peripheral interface). Cette interface comprend trois signaux importants : SDIN : signal de données SCLK : horloge contrôlée par le maître (notre contrôleur) CS : chip select, permet de débuter une séquence d envoi de 8 bits. Une séquence d envoi de 8 bits se déroule selon le diagramme temporel suivant :
SCLK n est pas l horloge du module programmé sur le FPGA, mais doit être gérée par celui-ci. C est à dire, SCLK est un signal de sortie qui peut être géré par une MSA (contrôleur SPI). Dans le cadre de ce laboratoire, nous allons générer un signal de 5 MHz pour SCLK. Puisque l horloge du système est de 100 MHz, il est possible de compter 20 cycles de l horloge de la MSA pour un cycle complet de SCLK. Le contrôleur SPI devra aussi être muni d une interface de handshake, afin de pouvoir lui envoyer des commandes à partir de la MSA principale. Cette interface comprend aussi 3 signaux : start, data et ready. Le signal start sert à débuter une séquence d envoi de 8 bits. Lorsque le contrôleur n est pas en train d envoyer des données par l interface SPI, il doit se mettre en mode attente et la prochaine commande débutera avec la réception du signal start sur 1 cycle d horloge. Le bus data fournit les 8 bits à transférer via l interface SPI et doit être valide au moment du signal de départ. Le signal ready est une sortie qui indique au module qui opère le contrôleur SPI que celui-ci est disponible pour une nouvelle commande. Le contrôleur SPI devrait donc fixer le signal ready pour indiquer qu il a terminé la tâche précédente. Afin de pouvoir tester votre contrôleur SPI, un fichier de test VHDL vous sera fourni. Ce fichier servira de remplacement du contrôleur SSD1306 et servira à tester votre module de maître SPI, sans avoir besoin d implémenter le reste de l interface pour le contrôle du SSD1306.
Deuxième partie Module de timing Un autre module important pour ce laboratoire, est le module de timing. Lors de la séquence d initialisation de l écran LCD, plusieurs délais devront être respectés, i.e. reset, power on, etc. Ces délais seraient assez compliqués à gérer sans un module qui est conçu spécifiquement pour ça car les bonnes pratiques de conception impliquent généralement de séparer structurellement le système, et non d avoir une seule MSA qui gère tout le système. Comme le contrôleur SPI, le module de timing pourra recevoir des commandes à partir d une MSA principale. Le module de timing comprend lui aussi une interface de handshake, en l occurrence les signaux start, data et ready. Le signal start indique au module de commencer à générer un nouveau délai. Lorsqu il n est pas déjà en train de générer un délai, il utilisera le signal ready pour indiquer qu il est prêt à recevoir une commande. Le bus data fournit la valeur du délai en ms et doit contenir la valeur souhaitée lors du signal de départ. Voici un schéma du module de timing avec les différents signaux pour l interface de handshake :
Troisième partie contrôleur d affichage L écran OLED requiert une séquence spécifique sur ses entrées afin de bien s initialiser. Il est relié au FPGA de la façon suivante : Ici, on reconnaît déjà l interface SPI vue précédemment, mais plusieurs signaux gérés indépendamment s ajoutent. Le signal D/C indique au SSD1306 si les données reçues par l interface SPI sont une commande (niveau bas) ou des données (niveau haut). Les signaux RES, VBAT et VDD, consituent l interface de contrôle de l alimentation pour l écran LCD. VBAT contrôle la tension d alimentation du circuit analogique pour l affichage, VDD est l alimentation de la partie numérique du contrôleur et RES est un signal de reset. Les trois signaux sont actifs bas. La séquence d initialisation se déroule comme suit : Mise sous tension de VDD, attente de 1ms Envoi de la commande send display off par SPI, valeur 0xAE Reset du SSD1306, attente de 1 ms Fin du Reset du SSD1306, attente de 1ms Envoi de la commande enable charge pump par SPI, valeur 0x8D
Suite de la commande précédente, valeur 0x14 Envoi de la commande set pre-charge period par SPI, valeur 0xD9 Suite de la commande précédente, valeur 0xF1 Mise sous tension de VBAT, attente de 100ms Envoi de la commande set contrast control par SPI, valeur 0x81 Suite de la commande précédente, valeur 0x0F Envoi de la commande set segment remap par SPI, valeur 0xA0 Envoi de la commande set COM output scan direction par SPI, valeur 0xC0 Envoi de la commande set COM pins hardware configuration par SPI, valeur 0xDA Envoi de la commande set lower column start address par SPI, valeur 0x00 Envoi de la commande set display on par SPI, valeur 0xAF On peut ensuite envoyer une dernière commande pour afficher tous les pixels de l écran LCD (cette commande ne fait pas partie de la séquence d initialisation) : Commande Entire display on, valeur 0xA5 Vous devrez ensuite envoyer les commandes nécessaires afin d afficher vos matricules sur l écran OLED. L information sur le fonctionnement du contrôleur de l écran est disponible sur les liens fournis à la fin du document. Mise hors tension de l écran OLED Pour le signal reset des MSA, on utilise habituellement un signal asynchrone, c est à dire que ce signal peut redéfinir tous les signaux d états et autres registres de nos MSA sans se soucier des fronts montants de l horloge. Dans ce laboratoire, nous travaillons avec un module externe, i.e. écran OLED. Certaines procédures comme la mise sous tension et la mise hors tension doivent avoir des délais spécifiques et il est préférable que cette séquence ne soit pas interrompue pour éviter d endommager le périphérique. On ne peut donc pas utiliser le reset qui redéfinit arbitrairement l état de nos signaux de contrôle de l écran OLED sur certains registres. Le reset asynchrone devra ignorer les signaux du contrôle de l alimentation du contrôleur SSD1306.
Cependant, vous devrez utiliser une switch pour permettre la fonctionnalité de la mise hors tension de l écran. Les commandes nécessaires sont les suivantes : Envoi de la commande send display off par SPI, valeur 0xAE Mise hors tension de VBAT, attente de 100 ms Mise hors tension de VDD, attente de 1 ms Il s agit de votre responsabilité de gérer le reset en évitant les problèmes lors de la mise sous tension ou de la mise hors tension. Les séquences d initialisation et de mise hors tension de l écran OLED ne doivent pas être hard codées, dans le contrôleur d affichage, mais utiliser un module de ROM. Chaque instruction devra être lue dans la ROM, puis exécutée. Travail au laboratoire Séance 1 : Séance 2 : Séance 3 : Séance 4 : Remise du diagramme d état du contrôleur SPI Remise du diagramme d état du module de timing Vérification du fonctionnement du contrôleur SPI (grâce au module de test). Remise du diagramme d état du contrôleur d affichage. Remise du schéma bloc du système complet. Vérification de l implémentation complète, i.e. affichage sur l écran. Remarques - Le travail accompli pendant ce lab servira au TP3 qui utilisera l écran OLED - Tout le travail doit être fait en VHDL en utilisant les fichiers fournis pour ce laboratoire. - Veuillez ajouter le barème de la page suivante dans le rapport. - Le point du barème de la page suivante indique les éléments à mettre dans le rapport. Ne mettez aucun autre texte qui n est pas explicitement demandé. - De l information supplémentaire est disponible sur les liens suivants : o o https://cdn-shop.adafruit.com/datasheets/ssd1306.pdf https://reference.digilentinc.com/reference/programmable-logic/nexysvideo/reference-manual
ELE3311 Systèmes logiques programmables Hiver 2017 BARÈME D ÉVALUATION DU PROJET 2 : ÉCRAN OLED No d équipe Noms : Matricules : A) Évaluations intermédiaires /5 Séance 1 : Diagramme d état préliminaire du contrôleur SPI /1 Séance 2 : Diagramme d état préliminaire du module de timing /1 Séance 3 : Fonctionnement du contrôleur SPI avec le module de test /1 Séance 3 : Diagramme d état préliminaire du contrôleur d affichage /1 Séance 3 : Schéma bloc du système complet /1 B) Fonctionnement complet /5 C) Rapport /10 Diagramme d état du contrôleur SPI /1 Diagramme d état du module de timing /1 Diagramme d état du contrôleur d affichage /1 Simulation du contrôleur SPI /2 Simulation du module de timing /2 Code VHDL et rapport de synthèse (à envoyer au chargé) /3 TOTAL : /20 Note: Ce rapport doit être remis la semaine après la dernière séance du laboratoire, soit le mardi ou le vendredi suivant. Les retards aux évaluations seront pénalisés.