IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

Réalisation d'une carte graphique mode texte pour Arduino ou autre µC


Sujet :

Embarqué

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut Réalisation d'une carte graphique mode texte pour Arduino ou autre µC
    Hello,

    Depuis quelques jours je réfléchi à un projet : une carte graphique en mode texte pour Arduino (ou autre µC).

    Il y a la solution de la facilité : faire ça sur FPGA, mais j'ai envie de faire ça avec des "composants basiques" (portes logiques et quelques CI plus évolués type FIFO ou ROM).
    Ça devrait me permettre d'apprendre un peu l'électronique et surement de repérer quelques trucs à faire (ou à ne pas faire) pour plus tard quand je bosserai sur FPGA.

    Je vais utiliser une sortie VGA avec une résolution de 640x480, en utilisant une police monospaced de taille 8x15. Ça me donne 32 lignes de 80 caractères, soit 2560 caractères à l'écran.
    J'utilise des couleurs 8 bits (R3 G3 B2).

    Chaque caractère fait donc 120 bits et est codé sur 7 bits (128 caractères différents possibles, code ASCII) -> avec 2Ko de ROM je peux stocker ma font.

    Le fonctionnement basique serait :
    10 IOs :
    * (sortie) sync_signal : indique qu'une frame commence au front montant : on peut commencer à envoyer les données de la frame suivante
    * (entrée) char_clk : indique que data_00 ~ data_07 sont valides lors d'un front montant
    * (entrée) data_00 : caractère ou couleur / lsb
    * ...
    * (entrée) data_07 : caractère ou couleur / msb (0 pour caractère)

    Niveau communication, je vois ça comme ça :


    7680 cycles d'horloge par frame, avec 60 frame/seconde ça donne 460.8kHz : c'est facilement atteignable avec un Arduino.

    Et niveau logique, quelque chose du genre (une bonne partie reste à faire, mais j'espère que l'idée principale est compréhensible).

    (les 3.125 MHz viennent du fait qu'on lit 8 octets tous les 8 cycles : 25 MHz / 8)

    Ça vous semble fonctionnel ?

    Vu le nombre de CI existants, il y a des références à préférer ? Certaines qui sont connues pour fonctionner à ces fréquences (jusqu'a 25 MHz) ?
    La série 74HC (7400HC ?) semble correspondre pour les portes logiques / compteurs / probablement mux aussi.
    Par contre niveau DCFIFO / ROM / bascules D (ou SRAM (dual ported), vu que 1920 bascules D ... ça prend trop de place ) je trouve pas dans la série 74HC, ça éxiste ? Une autre série à me conseiller ?
    (C'est trop tôt pour ça ?)

    Sinon, en attendant de finir la logique, je commence à simuler ça sur LTspice, et je commence par le commencement : générer une horloge.

    Je suis arrivé à 2 schémas qui semblent marcher (du moins en simulation), l'un des deux est-il préférable ? (La fréquence est pour l'instant assez aléatoire, je me bat pour faire osciller le truc, régler la fréquence viendra après).
    http://i.imgur.com/7krbzN4.png
    http://i.imgur.com/djPXmFa.png

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Super intéressant comme projet par contre, je ne comprends pas encore bien le schéma de principe.
    Je vais essayer de digérer rapidement le VGA pour voir ça.

    A toute à l'heure.

  3. #3
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonsoir,

    déjà pour avoir un signal carré pourquoi réaliser un astable avec 2 NPN ? Si les résistances ne sont pas parfaitement identiques tu as forcément des états haut et bas différents. Même chose pour tes transistors. Pour un astable, prends plutôt un NE555.

    Mais un quartz sera encore bien mieux.

    Pour le reste je ne me prononcerai pas.

  4. #4
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par Auteur Voir le message
    déjà pour avoir un signal carré pourquoi réaliser un astable avec 2 NPN ? Si les résistances ne sont pas parfaitement identiques tu as forcément des états haut et bas différents. Même chose pour tes transistors. Pour un astable, prends plutôt un NE555.

    Mais un quartz sera encore bien mieux.
    J'y connais vraiment pas grand chose, avec 2 NPN et des résistances équivalentes j'avais un truc "à moitié carré".

    (signal vert, quasi identique avec des résistances identiques)

    Du coup j'ai rajouté un transistor de plus pour avoir un carré, mais c'était "déséquilibré" (état haut plus long que l'état bas), du coup j'ai ajusté les résistances au pifomètre jusqu’à ce que ce soit carré.

    A priori un NE555 ne dépasse pas ~5 MHz (?), et il est aussi difficile d'avoir un des cycles équilibrés (en théorie impossible d'avoir un duty cycle de 50 %, non ? Mais au final ça n'a peut être pas vraiment d'importance si j'utilise seulement le front montant).

    Je vais me renseigner sur les quartz, mais quel est le problème de ce montage ? C'est un signal carré (en tout cas suffisamment carré pour ce que je veux en faire).

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Mais un quartz sera encore bien mieux.
    Je pense aussi d'autant plus qu'il me semble que le NE555 ne pourra pas aller jusque 25Mhz.

    La série HC est bien dans le sens où la plage d'alimentation est étendue 2V à 6V (Arduino est en 5V mais d'autres board sont en 3.3V) alors que si tu avais pris du HCT c'était entre 4.5 et 5.5V
    Voici la série HC :http://www.gotronic.fr/cat-circuits-...s-74hc-243.htm

    Pour les CI qui pédalent à 25MHz il faut faire attention, regarde cette doc 74HC74 (double bascule D, il ne te faut plus que 960 bascule, ce qui est mieux ) : http://www.nxp.com/documents/data_sheet/74HC_HCT74.pdf
    Va à la page 7/20 du document (Tableau 8 Dynamic characteristics) ceux sont tous les timings de cette bascule
    - temps de propagation entre l'entrée et la sortie
    - temps de monté
    - etc...
    A la page 8/20, suite du tableau (attention car à la suite du tableau il y a la version HCT du composant, faut pas se planter de tableau), il y a l'info qui t'intéresse : fmax avec différente tension d'alimentation du CI et dans différente condition de température. On voit qu'a 25°C, si le composant est alimenté en 4.5V alors il peut aller jusque 69MHz mais il peut baisser à 24MHz en fonction de la température. On voit aussi que plus la tension d'alimentation est forte et plus le composant peut pédaler vite.

    Tu as aussi la série F (toujours avec l'exemple du 74F74) qui dans le pire des cas peut aller jusque 90MHz.

    Pour de telle fréquence, il va falloir regarder de prés les séries et il y en a beaucoup, je suis loin de toutes les connaitre mais une fois que tu as choppé la bonne alors ça roule et il y a plus qu'a tout designer avec celle ci.

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    En ce qui concerne ton oscillateur, tourne toi plutôt vers Oscillateur Crystal CMOS (variante de l'oscillateur Pierse)

    Source : http://www.changpuak.ch/electronics/...ets/AN-340.pdf
    ps : Je n'arrive pas à le simuler avec ISIS (Proteus 8) ni avec LTSpice IV alors que ça provient d'une doc constructeur. En plus, je n'arrive pas bien a comprendre comment on configure un quartz avec LTSpice....

    ****************************************

    Ou alors, vu que tu utilises LTSpice IV regarde ceci :

    Source : http://www.changpuak.ch/electronics/...ets/an12fa.pdf
    ps : regarde dans le répertoire -> examples -> jigs -> 1016.asc

    Si tu comprends comment on configure le quartz et surtout a partir de quelles données ou quel calcul, je suis tout ouïe !


    Jette un oeil sur le simulateur Proteus 8 http://www.labcenter.com/products/vsm/vsm_overview.cfm par contre c'est payant à moins que tu laisses ton PC allumé car sans licence tu ne peux pas sauvegarder tes schémas. Tu verras c'est un truc de fou pour faire de l'analogique et surtout du numérique, comme tu es entrain de faire.

  7. #7
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    Ou alors, vu que tu utilises LTSpice IV regarde ceci :

    Source : http://www.changpuak.ch/electronics/...ets/an12fa.pdf
    ps : regarde dans le répertoire -> examples -> jigs -> 1016.asc

    Si tu comprends comment on configure le quartz et surtout a partir de quelles données ou quel calcul, je suis tout ouïe !
    C'est à partir du circuit équivalent :


    Dans l'exemple LTSpice :
    C0 = 18p
    C1 = .32p
    L1 = .78m
    R1 = 45

    Du coup :
    Ws (fréquence pulsation série) = sqrt(1 / (L1*R1)) = 63 296 210.4
    Wp (fréquence pulsation parallèle = 1 / sqrt(L1 * ((C0*C1) / (C0+C1))) = 63 856 364.8

    fs (fréquence série) = Ws / 2pi = 10.0739 MHz
    fp (fréquence parallèle = Wp / 2pi = 10.1630 MHz

    Par contre, le signal fait un peu la gueule:
    Nom : wave4.png
Affichages : 890
Taille : 19,9 Ko


    Citation Envoyé par Vincent PETIT Voir le message
    Jette un oeil sur le simulateur Proteus 8 http://www.labcenter.com/products/vsm/vsm_overview.cfm par contre c'est payant à moins que tu laisses ton PC allumé car sans licence tu ne peux pas sauvegarder tes schémas. Tu verras c'est un truc de fou pour faire de l'analogique et surtout du numérique, comme tu es entrain de faire.
    Je vais y jeter un oeil.

Discussions similaires

  1. [Carte graphique] Conseils pour achat d'une carte graphique
    Par Kinnie dans le forum Composants
    Réponses: 4
    Dernier message: 01/12/2015, 13h32
  2. [Carte graphique] 2 Carte graphiques, ATI + NVIDIA pour une sortie S-Video
    Par Nadriel dans le forum Composants
    Réponses: 3
    Dernier message: 31/12/2011, 10h36
  3. Souci pour inserer une carte graphique
    Par coralie26 dans le forum Composants
    Réponses: 3
    Dernier message: 04/02/2008, 15h22
  4. Ou trouver des drivers pour une carte graphique?
    Par wikers dans le forum Windows Vista
    Réponses: 5
    Dernier message: 15/10/2007, 11h56
  5. Activer le mode graphique d'une carte graphique (MC6845)
    Par onur dans le forum Autres architectures
    Réponses: 5
    Dernier message: 10/04/2006, 20h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo