まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Décapotes -03-, circuit de positionnement d'image pour écran TV

Suite de la conception précédente :

  • Avant de tenter de résoudre le problème du trou dans H−Sync, j'ai voulu trouver une solution à la stabilité de la synchro sortante afin d'obtenir une image la plus nette possible, et ce même si le circuit à base de PLL propose une qualité d'image tout à fait correcte.

Mon côté perfectionniste doublé de curiosité m'emmena faire un tour du côté du monde merveilleux de l'Arduino et de l'ESP32. Malheureusement les quelques essais que j'ai pu réaliser n'ont pas donnés les résultats escomptés, et étaient parfois pire qu'avec mon précédent circuit.

  • Quelques temps ont passés avant que je sois poussé à m'intéresser au Raspberry Pi Pico, et plus particulièrement la carte de WaveShare RP2040-ZERO.

J'étais passé jusqu'alors complètement à côté de cette puce. Certes j'avais eu vent de son existence et de la « mode » entourant sa sortie, beaucoup de monde s'y mettait, sauf moi. Comme souvent j'ai plusieurs trains de retard sur les technos, que je sais laisser passer tranquillement avant d'en avoir réellement besoin. Idem pour tout ce qui est LLM + prompt d'intelligence simulée, pas besoin. Vous lisez un type qui lit encore sa musique classée dans des dossiers, en local sur son appareil. Pas de méta−données, rien. Pas besoin.

  • Bref. J'ai donc découvert le RP2040 et entrevu une potentielle solution pour mon problème, en comprenant ce qu'il en était des States Machines, ces machines intégrées à la puce à qui on s'adresse en assembleur et qui roulent au rythme des cycles d'horloges, indépendamment du code adressé au processeur.

Vraiment très intéressant, quand on sait la vitesse à laquelle c'est capable de monter sans sourciller.
C'est bien simple, j'ai pu coder des exemples de génération de signaux de manière classique, à travers le processeur et demander la même chose aux States Machines et le résultat à l'oscilloscope était sans équivoque tellement meilleurs avec ces dernières.
Pour plus d'info, il y a cette vidéo qui explique très bien ce qu'il en est des Machines à état et cette page aussi..
Je comprend maintenant l'engouement pour ce Raspberry Pi Pico !

Un troisième circuit d'essais :

  • J'ai donc envisagé ce schéma, avec une nouvelle fois la structure basée sur le circuit séparateur de synchro LM1881 en entrée, les portes logiques 74LS132 en sortie, mais utilisant le RPi Zero pour le traitement du signal.


  • Particularité ici très importante, le RP2040 fonctionnant en logique 0−3,3V, il faut impérativement adapter les signaux qu'on lui applique, ce que je fais ici à l'aide d'un circuit basé sur le transistor MOSFET BS170 montés ainsi en adaptateur de niveau logique.

Je dispose maintenant d'un analyseur logique, ce qui est bien pratique pour montrer facilement les signaux. J'en profite donc pour donner un relevé des signaux d'entrée/sortie du LM1881, agrémentés de diverses mesures intéressantes…



  • Après plusieurs itérations, j'ai pu écrire ce programme µ−python pour le RP2040-Zero (dispo aussi en annexe à ce billet), pour déphaser les signaux.

Il utilise quatre State Machines pour déphaser les signaux. Les potentiomètres et le bouton sont gérés par le CPU. Lorsqu'on appuie sur le bouton, on passe en mode lecture de la valeur des pots, ce qui permet donc de décaler l'image en les réglants, puis de mémoriser ces réglages en rappuyant sur le bouton.

  • Voyons ce que donnent les signaux :


− En blanc, le C−Sync d'entrée,
− En marron, le V−Sync de sortie du LM1881, qui entre dans le RP2040-Zero en GP5,
− En rouge, le C−Sync de sortie du LM1881, qui entre dans le RP2040-Zero en GP14,
− En orange, le V−Sync déphasé en sortie GP6 du RP2040-Zero, qui entre dans le 74LS132,
− En jaune, le C−Sync déphasé en sortie GP15 du RP2040-Zero, qui entre dans le 74LS132,
− En vert, la sortie du 74LS132, avec V−Sync + C−Sync réassemblés.

Le circuit présente alors évidemment le même problème que le circuit N°1, avec la problématique du double trou…

  • Ici les signaux zoomés sur les impulsions verticales, la normale (donc indésirable), puis la déphasée.


  • Et enfin un zoom sur les tops de synchro horizontaux pour apprécier le déphasage obtenu :


  • Conclusion de l'expérimentation,

J'obtiens ici exactement le même résultat qu'avec le circuit N°1 étudié précédemment à base de monostables, à ceci prés que la sortie vidéo est plus propre et sans gigue problématique !
Le trou est toujours présent donc, et avant d'imaginer traiter le signal au complet avec les States Machines − c'est à dire utiliser uniquement un Pi Zero −, mes compétences en programmation du RP2040 étant très limitées, j'ai voulu continuer avec une solution analogique en entrée.


Une piste intéressante… :

  • J'ai donc consulté quelques datasheets et vu des oscillogrammes intéressants produit par les puces LMH1980 et EL1883. Ce sont tous deux des séparateurs de synchro, qui ont la particularité, contrairement au LM1881, de sortir non seulement V−Sync, mais aussi H−Sync, avec la promesse que celui-ci soit continu.


Formidable ! Emplit d'espoir, je me suis donc procuré les deux, dans l'idée d'achever ce projet rapidement.

  • Trouvées uniquement au format CMS, j'ai dû les souder sur des mini-plaquettes adaptatrices.


L'avantage avec ces deux circuits intégrés, c'est qu'ils peuvent être alimentés en 3,3V, rendant l'adaptation en niveau logique inutile, à partir du moment où l'on divise la tension des signaux d'entrée pour ne pas excéder 3,3V. Le 74LS132 pouvant lui aussi fonctionner en 3,3V, on peut se passer définitivement du 5V. J'ai alors élaboré ces schémas de montage grâce à la documentation idoine :

  • Le montage LMH1980 qui viendrait en remplacement du bloc séparation de synchro et adaptation de niveau logique :




  • EL1883 qui viendrait en remplacement du bloc séparation de synchro et adaptation de niveau logique :




NB: les filtres RC chroma filter de ces montages ne sont pas utiles dans le cas présent, puisqu'on ne travaille pas en vidéo Composite. On peut donc les omettre.

  • Conclusion des essais avec ces deux puces,

Déception !
J'y ai cru, mais non… Le signal H−Sync n'est pas continu à l'endroit de l'impulsion V−Sync. En fait au lieu d'un état bas, c'est un état haut qui subsiste à cet endroit, c'est la seule différence avec le signal C−Sync qu'on utilisait avec le LM1881.

À priori, l'explication résiderait dans le fait que le signal de synchro issu du système IGS−PGM [1] ne présente pas les « serration & equalization pulses », ce dont auraient besoins ces circuits intégrés pour être capable de générer les impulsions horizontale durant ce temps.

Autre chose notable, les sorties horizontales et verticales des EL1883 et LMH1980 produisent en sortie des impulsions assez différentes, par rapport au signal IGS−PGM entrant.

Voici un tableau récapitulatif :

         |IGS−PGM | LMH1980 | EL1883 | LM1881
—————————————————————————————————————————————
H−Pulses | 6,3 µs |  2,3 µs | 5,2 µs |   5 µs
V−Pulses | 518 µs |  628 µs | 512 µs | 458 µs

Et pourtant ça ne pose pas de problème à l'affichage correcte de l'image sur la TV… On constate donc très bien − comme je l'évoquais dans un billet précédent − que ce circuit ne sépare pas réellement les signaux, mais les recrée en respectant la norme vidéo.

  • Donc pour reconstruire une synchro pas besoin de mesurer précisément l'impulsion en entrée on peut la fixer arbitrairement !

Une information importante que j'avais perdue de vue, et qui va permettre d'avancer vers une solution basée sur l'utilisation du RP2040-Zero comme unique module de composants nécessaires, remplaçant alors tout ça :

À gauche le circuit N°1, en haut à droite le circuit N°2, à droite le circuit N°3 et les essais sur LMH1980 et EL1883
En bas à droite le RP2040-Zero !

À suivre…

Note

[1] ni la Megadrive, ni la GameCube d’ailleurs…

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet