Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 50

Carte de développement d'Altera (CycloneII) VHDL



  1. #1
    peter pan666

    Carte de développement d'Altera (CycloneII) VHDL


    ------

    Bien le bonjour à tous et toutes,

    Comme indiqué dans l'intitulé je possède une carte de développement de chez Altera (que vous pouvez voir en PJ).

    J'ai donc commencé à m'amuser avec (chacun son trip)..Pour des choses "simples" aucun problème, c'est quand j'ai voulu afficher du texte sur les 7segments que ça a commencé à m**der, après plusieurs semaines de travail et de recherches acharnées je m'en remet donc à vous

    Je vais vous montrer le code que j'ai fais parce que là franchement, j'vois pas..Les problèmes sont les suivants, lorsque "clk_rapide" est dans la bande audible (jusqu'à environ 30kHz) on entend un sifflement, plutôt désagréable.Second problème le message s'affiche (jusque là ça va..) mais on voit, plus ou moins clairement, le même message qui s'affiche mais décalé d'un afficheur vers la gauche Là où c'est encore plus vicieux c'est qu'avec il y avait des exemples de codes, dont un qui affiche les nombres de 0 à 7 et ben la aucun soucis, pas de dédoublement de message, et pas de sifflement j'ai bien tenté de décrypter leur code mais franchement j'y ai (presque) rien pigé..Pour comprendre ma méthode d'affichage, se référer au scéma en PJ.

    Pour info je programme en VHDL sous Quartus 10.1, et mon programmateur est le "USB Blaster".Bon je pense pas avoir oublié quelque chose dans le doute vous pouvez toujours me poser des questions.

    Voilà mon code, ce qui est en commentaire n'est pas primordial pour le bon fonctionnement du programme.

    Code:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    
    entity affichage is
    
    	port(
    		clk: in std_logic;  --quartz 50MHz
    		--led: out std_logic;
    		segments, sel: out std_logic_vector (7 downto 0);
    		--leds_off: out std_logic_vector (1 downto 0)
    		);
    	
    end affichage;
    
    architecture arch_affichage of affichage is
    
    	signal selection, sept: std_logic_vector (7 downto 0);
    	signal clk_lente, clk_rapide: std_logic;
    	signal A,B,C,E,F,G,H,I,J,L,O,P,S,U,Y,blank: std_logic_vector (7 downto 0);
    	signal sel1,sel2,sel3,sel4,sel5,sel6,sel7,sel8: std_logic_vector (7 downto 0);
    	signal compt_def: integer range 0 to 7;
    	
    	begin
    	
    		H_lente: process(clk)  --1Hz
    		
    			variable compt_lent: integer range 0 to 49999999;
    			
    			begin
    
    				if (rising_edge(clk)) then
    					
    					compt_lent:=(compt_lent+1);
    		
    				end if;
    				
    				if (compt_lent>24999999) then clk_lente<='1';
    		
    				else clk_lente<='0';
    				
    				end if;
    		
    		end process;
    		
    		H_rapide: process(clk) --30kHz
    		
    			variable compt_rapide: integer range 0 to 1666;
    		
    			begin
    			
    				if (rising_edge(clk)) then
    				
    					compt_rapide:=(compt_rapide+1);
    					
    				end if;
    				
    				if (compt_rapide>833) then clk_rapide<='1';
    				
    				else clk_rapide<='0';
    				
    				end if;
    			
    			end process;
    			
    		aff_lettres: process(compt_def,I,S,A,B,E,L)
    
    			begin
    					
    				case compt_def is
    						when 0=>sept<=I;
    						when 1=>sept<=S;
    						when 2=>sept<=A;
    						when 3=>sept<=B;
    						when 4=>sept<=E;
    						when 5=>sept<=L;
    						when 6=>sept<=L;
    						when 7=>sept<=E;
    					end case;
    				
    			end process;
    			
    		sel_afficheur: process(compt_def,sel8,sel7,sel6,sel5,sel4,sel3,sel2,sel1)
    				
    			begin
    				
    				case compt_def is
    					when 0=>selection<=sel8;
    					when 1=>selection<=sel7;
    					when 2=>selection<=sel6;
    					when 3=>selection<=sel5;
    					when 4=>selection<=sel4;
    					when 5=>selection<=sel3;
    					when 6=>selection<=sel2;
    					when 7=>selection<=sel1;
    				end case;
    					
    			end process;
    			
    		incr_def: process(clk_rapide,compt_def)
    			
    			begin
    			
    				if (rising_edge(clk_rapide)) then
    					compt_def<=(compt_def+1);
    				end if;
    				
    			end process;
    	
    	--led<=clk_lente;
    	segments<=sept;
    	sel<=selection;
    	--leds_off<="11";
    
    	--Alphabet
    	A<="10001000";
    	B<="10000000";
    	C<="11000110";
    	E<="10000110";
    	F<="10001110";
    	G<="11000010";
    	H<="10001001";
    	I<="11111001";
    	J<="11100001";
    	L<="11000111";
    	O<="11000000";
    	P<="10001100";
    	S<="10010010";
    	U<="11000001";
    	Y<="10010001";
    	blank<=X"FF";
    	
    	--Selection des afficheurs
    	sel1<=X"7F";
    	sel2<=X"BF";
    	sel3<=X"DF";
    	sel4<=X"EF";
    	sel5<=X"F7";
    	sel6<=X"FB";
    	sel7<=X"FD";
    	sel8<=X"FE";
    	
    end arch_affichage;
    et voilà le code proposer par le constructeur pour afficher des nombres de 0 à 7, en soit ça à pas l'air compliqué mais je comprends pas pourquoi avec leur code y a aucun sifflement du tout..

    Code:
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.STD_LOGIC_ARITH.ALL;
    use IEEE.STD_LOGIC_UNSIGNED.ALL;
    
    ENTITY seg2 IS
       PORT (
          clk                     : IN std_logic;   
          rst                     : IN std_logic;   
          dataout                 : OUT std_logic_vector(7 DOWNTO 0);   --¸÷¶ÎÊý¾ÝÊä³ö  
          en                      : OUT std_logic_vector(7 DOWNTO 0));  --COMʹÄÜÊä³ö 
    END seg2;
    
    ARCHITECTURE arch OF seg2 IS
    
    signal cnt_scan : std_logic_vector(15 downto 0 );
    signal data4 :    std_logic_vector(3 downto 0);
    signal dataout_xhdl1 : std_logic_vector(7 downto 0);
    signal en_xhdl : std_logic_vector(7 downto 0);
    begin
      dataout<=dataout_xhdl1;
      en<=en_xhdl;
     process(clk,rst)
     begin
       if(rst='0')then 
       cnt_scan<="0000000000000000";
       elsif(clk'event and clk='1')then
       cnt_scan<=cnt_scan+1;
       end if;
     end process;
     
     process(cnt_scan(15 downto 13))
     begin
     case cnt_scan(15 downto 13) is
         when"000"=> en_xhdl<="11111110";
         when"001"=> en_xhdl<="11111101";
         when"010"=> en_xhdl<="11111011";
         when"011"=> en_xhdl<="11110111";
         when"100"=> en_xhdl<="11101111";
         when"101"=> en_xhdl<="11011111";
         when"110"=> en_xhdl<="10111111";
         when"111"=> en_xhdl<="01111111";
         when others=> en_xhdl<="11111110";
      end case;
    
     end process;
    
    process(en_xhdl)
    begin
     case en_xhdl is
       when "11111110"=> data4<="0000";
       when "11111101"=> data4<="0001";
       when "11111011"=> data4<="0010";
       when "11110111"=> data4<="0011";
       when "11101111"=> data4<="0100";
       when "11011111"=> data4<="0101";
       when "10111111"=> data4<="0110";
       when "01111111"=> data4<="0111";
       when others => data4<="1000";
      end case;
    end process;
    
    process(data4)
    begin
      case data4 is
             WHEN "0000" =>
                      dataout_xhdl1 <= "11000000";    
             WHEN "0001" =>
                      dataout_xhdl1 <= "11111001";    
             WHEN "0010" =>
                      dataout_xhdl1 <= "10100100";    
             WHEN "0011" =>
                      dataout_xhdl1 <= "10110000";    
             WHEN "0100" =>
                      dataout_xhdl1 <= "10011001";    
             WHEN "0101" =>
                      dataout_xhdl1 <= "10010010";    
             WHEN "0110" =>
                      dataout_xhdl1 <= "10000010";    
             WHEN "0111" =>
                      dataout_xhdl1 <= "11111000";    
             WHEN "1000" =>
                      dataout_xhdl1 <= "10000000";    
             WHEN "1001" =>
                      dataout_xhdl1 <= "00011001";    
             WHEN "1010" =>
                      dataout_xhdl1 <= "00010001";    
             WHEN "1011" =>
                      dataout_xhdl1 <= "11000001";    
             WHEN "1100" =>
                      dataout_xhdl1 <= "01100011";    
             WHEN "1101" =>
                      dataout_xhdl1 <= "10000101";    
             WHEN "1110" =>
                      dataout_xhdl1 <= "01100001";    
             WHEN "1111" =>
                      dataout_xhdl1 <= "01110001";    
             WHEN OTHERS =>
                   dataout_xhdl1 <= "00000011"; 
             
          END CASE;
       END PROCESS;
       
    end arch;
    Bon voilà merci beaucoup de votre attention, j'vais continuer à chercher en attendant une âme charitable..

    Bonnes fêtes de fin d'année à tous et toutes et encore merci!

    -----
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  2. Publicité
  3. #2
    peter pan666

    Re : Carte de développement d'Altera (CycloneII) VHDL

    AH oui d'ailleurs le décalage décrit ci dessus n'apparait que lorsque "clk_rapide" est supérieur à 15kHz..Ca vous aide peut être pas plus mais c'est juste pour dire que lentement ça marche pas trop mal (à par le sifflement..)

  4. #3
    jiherve

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Bonsoir,
    C'est bien joli de déclarer des integer range x to y pour les compteurs mais qui les fait recycler lorsque leur valeur dépasse le range déclaré?
    Nobody ,zéro pointé!
    Il faudrait aussi un reset pour initialiser tout çà, de la logique sans reset c'est un double zéro pointé.
    Par ailleurs tel qu'écrit, les horloges sont générées de façon purement combinatoire, par décodage de valeur, ceci est une usine à glitch, triple zéro pointé.Il faut inclure la génération des horloges dans le if rising_edge(clk).
    Pour les valeurs fixes(A,B,C...) utilise plutot des constantes, c'est plus joli et cela permet quelquefois de gagner de la logique.
    Dommage que le Père Noël soit déjà passé car voila un garçon qui aurait eu ses petits souliers bien vides!
    JR
    l'électronique c'est pas du vaudou!

  5. #4
    fred_14

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Salut,

    Déjà pour commencer pourquoi tu ne fais pas un diviseur de fréquences a partir de l'horloge clk??comme çà avec des boutons poussoirs tu fais varier la fréquence

    Ensuite, entre leurs codes de démo et le tiens ce n'est pas codés de la même façon.

    cordialement.

  6. A voir en vidéo sur Futura
  7. #5
    peter pan666

    Re : Carte de développement d'Altera (CycloneII) VHDL

    C'est bien joli de déclarer des integer range x to y pour les compteurs mais qui les fait recycler lorsque leur valeur dépasse le range déclaré?
    Mes horloges ont l'air de fonctionner j'ai donc penser que les compteurs se remettent à 0 automatiquement..

    Il faudrait aussi un reset pour initialiser tout çà
    J'vois pas bien l'intérêt du reset, une petite explication?..

    Il faut inclure la génération des horloges dans le if rising_edge(clk).
    J'vois pas bien l'intérêt non plus..

    Pour les valeurs fixes(A,B,C...) utilise plutot des constantes, c'est plus joli et cela permet quelquefois de gagner de la logique.
    J'ai appris le VHDL sur le tas donc merci pour l'info!

    zéro pointé
    Comme précisé au paravent j'ai appris sur le tas mais cela n'empêche pas un minimum de respect .Toute merci beaucoup pour ta contribution!

    Déjà pour commencer pourquoi tu ne fais pas un diviseur de fréquences a partir de l'horloge clk??comme çà avec des boutons poussoirs tu fais varier la fréquence
    Si t'as question est "pourquoi ne fais-tu pas varier clk_rapide avec des boutons poussoirs?" et bien tout simplement parce que je l'ai déjà fais..Comme je l'ai écris dans mon premier post l'affichage fonctionne bien de 200Hz à 30kHz par contre y a un sifflement au delà de 30kHz l'affichage déconne..

    Merci également pour ta contribution!

  8. #6
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Moi, j'aimerais voir le cablage des afficheurs 7 segments (la partie soft, ce n'est pas mon domaine!)
    Ta recopie d'un afficheur sur l'autre à haute vitesse montre une durée de commutation trop faible des drivers de l'afficheur. Pour éviter ça, on met un blanking (un non affichage entre le changement d'affichage) plus long que le temps de commutation. Il y a un blanking dans ton soft?
    J'aime pas le Grec

  9. Publicité
  10. #7
    peter pan666

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Le cablage des afficheurs 7 segments est donné dans le pdf en PJ de mon premier post.Je n'ai pas mis de "blanking" j'essaye de ce pas et je vous tiens au courant des avancements!

    Merci pour la piste

  11. #8
    peter pan666

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Bon le "blanking" a pas arrangé les choses j'dirais même que le sifflement s'est amplifié et que le décalage de message est plus prononcé..

  12. #9
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par peter pan666 Voir le message
    que le décalage de message est plus prononcé..
    C'est que tu n'as pas mis un vrai blanking ....
    Il faut :
    • ...................
    • Sélectionner l'afficheur "N"
    • Envoyer le blanking sur tous les segments du "N" (extinction par désélection de l'afficheur)
    • Attendre
    • Envoyer la valeur sur tous les segments du "N+1"
    • Sélectionner l'afficheur "N+1" (allumage)
    • etc etc etc
    J'aime pas le Grec

  13. #10
    fred_14

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Ok ... pour ta réponse, moi je me souviens déjà mais un reset tu es obligé ensuite synchronise tout événement sinon tu auras un tps de propagation à grande vitesse car ton code dans le composant est traduit en porte logique et bascules (séquentiel)... Après a toi de voir.

  14. #11
    jiherve

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Bonjour,
    peter pan666 tu as le sens de l'humour c'est bien.
    Le reset cela permet à ton design de partir d'un point connu, ici cela n'a pas trop d'importance mais lorsque tu passeras à plus savant cela sera indispensable. C'est également incontournable en soft cela se nomme : initialisation des variables.
    as tu corrigé ton code pour avoir ceci
    Code:
    		H_lente: process(clk,reset)  --1Hz
    		
    			variable compt_lent: integer range 0 to 49999999;
    			
    			begin
    
                               if reset = '1' then
                                 compt_lent  <= 0;
                                 clk_lente<='0;
    
    			   elsif (rising_edge(clk) then 
                                  if (compt_lent= 49999999) then 
                                    compt_lent  <= 0;
                                  else
                                    compt_lent:=(compt_lent+1);
    	                      end if;
    
    			      if (compt_lent>24999999) then 
                                     clk_lente<='1';		
    			      else 
                                     clk_lente<='0';				
    			       end if;
    			  end if;	
    		end process;
    Tu ne peux pas faire un simple décodage combinatoire sans mettre une bascule en aval car ici tu as 26 bits en jeu sur un cyclone cela demande le cascadage d'au moins 6 ou 7 LCELL et comme nous faisons du VHDL et pas du soft (Daudet ) nous sommes dans la vraie vie là ou rien n'est parfait => glitch.
    Comme tu as appris sur le tas (moi aussi) retiens cette règle : logique synchrone toujours revenir à un étage synchrone.
    JR
    l'électronique c'est pas du vaudou!

  15. #12
    peter pan666

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Merci énormément pour toutes ces précisions!!J'essairai de renvoyer mes résultats dans l'après midi

  16. Publicité
  17. #13
    stefjm

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par DAUDET78 Voir le message
    (la partie soft, ce n'est pas mon domaine!)
    Bonjour Daudet,
    Il n'y a pas de soft quand on parle de VHDL.
    Le VHDL est un langage de description de composant, pas de programmation.
    Quand on lit un code VHDL, on "voit" les blocs fonctionnels de logique séquentielle ou combinatoire.
    Cordialement.
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  18. #14
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par stefjm Voir le message
    Quand on lit un code VHDL, on "voit" les blocs fonctionnels de logique séquentielle ou combinatoire.
    Non, pour un non initié (comme moi, j'en suis resté à PALASM IV), on ne voit rien et je suis bien incapable de voir si il y a un blanking dans son soft .... pardon, dans sa programmation !

    Le VHDL est un langage qui ne décrit pas une suite d'instructions, mais une suite de portes logiques. On programme le câblage entre les entrées et les sorties
    J'aime pas le Grec

  19. #15
    stefjm

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par DAUDET78 Voir le message
    Non, pour un non initié (comme moi, j'en suis resté à PALASM IV), on ne voit rien et je suis bien incapable de voir si il y a un blanking dans son soft .... pardon, dans sa programmation !
    Dans sa description.

    Après, c'est un problème de connaissance du langage. (comme pour tout)

    Citation Envoyé par DAUDET78 Voir le message
    Le VHDL est un langage qui ne décrit pas une suite d'instructions, mais une suite de portes logiques. On programme le câblage entre les entrées et les sorties
    C'est bien du hard.
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  20. #16
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par stefjm Voir le message
    C'est bien du hard.
    je n'ai jamais affirmer le contraire ! Le VHDL (et autres de même fonctionnalité) sont des logiciels (donc du soft) qui servent à câbler des fonctions logiques comme KICAD est un logiciel de description du câblage d'un circuit imprimé
    J'aime pas le Grec

  21. #17
    stefjm

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par DAUDET78 Voir le message
    je n'ai jamais affirmer le contraire ! Le VHDL (et autres de même fonctionnalité) sont des logiciels (donc du soft) qui servent à câbler des fonctions logiques comme KICAD est un logiciel de description du câblage d'un circuit imprimé
    Oui, mais c'est du soft qui tourne sur un PC et pas sur la cible composant.
    Je pense qu'il vaut mieux éviter le terme soft (et tout ceux qui s'y rapportent) pour éviter la confusion. (qui est très courante...)

    PS : Le pire, c'est quand on décrit un processeur en VDHL et qu'ensuite on le programme en C!
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  22. #18
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par stefjm Voir le message
    Oui, mais c'est du soft qui tourne sur un PC et pas sur la cible composant.
    Comme KICAD, comme un compilateur C ou Pascal........ Ceux sont des outils logiciels, des softs !
    J'aime pas le Grec

  23. Publicité
  24. #19
    stefjm

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par DAUDET78 Voir le message
    Comme KICAD, comme un compilateur C ou Pascal........ Ceux sont des outils logiciels, des softs !
    Pas tout à fait!
    Un compilateur C génère du code exécutable (soft) qui tourne sur la cible.
    Un compilateur VHDL ne génère pas un code exécutable.

    Quand on dit soft, on pense logiciel qui tourne sur la cible.

    Maintenant, ça dépend peut-être du "on"!
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  25. #20
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par stefjm Voir le message
    Quand on dit soft, on pense logiciel qui tourne sur la cible.
    Moi, j'utilise des softs (logiciels) pour faire du dessin ... il ne tourne pas sur ma feuille de papier !

    Le soft qui donne la vie à un microprocesseur est un cas particulier d'une généralité.
    J'aime pas le Grec

  26. #21
    jiherve

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Bonsoir,
    VHDL comme Verilog sont des langages de description hardware cela ne sert pas qu'à définir des liaisons cela infère aussi certaines fonctions(memoire, bascule, multiplieur, etc etc), ce sont les outils de base utilisés pour développer des asics car il y a bien longtemps que ceux ci ne sont plus conçu "a la mano".
    çà n'est pas du soft stricto sensu, la preuve 99% des softeux n'y comprennent rien!
    Au final si tu n'es pas fondamentalement électronicien cela ne fonctionne pas trop bien.
    Daudet tu devrais t'y mettre cela te plairais j'en suis sur.
    JR
    l'électronique c'est pas du vaudou!

  27. #22
    peter pan666

    Re : Carte de développement d'Altera (CycloneII) VHDL

    C'est bon ça marche nickel!!

    J'pense que le problème venait bien du blanking (que je n'avais pas du tout mis)

    Pour les générations futurs () je mets mon code en libre service, on sait jamais

    Code:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    
    entity affichage is
    
    	generic(
    			--Alphabet
    		constant A: std_logic_vector (7 downto 0) :="10001000";
    		constant B: std_logic_vector (7 downto 0) :="10000000";
    		constant C: std_logic_vector (7 downto 0) :="11000110";
    		constant E: std_logic_vector (7 downto 0) :="10000110";
    		constant F: std_logic_vector (7 downto 0) :="10001110";
    		constant G: std_logic_vector (7 downto 0) :="11000011";
    		constant H: std_logic_vector (7 downto 0) :="10001001";
    		constant I: std_logic_vector (7 downto 0) :="11111001";
    		constant J: std_logic_vector (7 downto 0) :="11100001";
    		constant L: std_logic_vector (7 downto 0) :="11000111";
    		constant O: std_logic_vector (7 downto 0) :="11000000";
    		constant P: std_logic_vector (7 downto 0) :="10001100";
    		constant S: std_logic_vector (7 downto 0) :="10010010";
    		constant U: std_logic_vector (7 downto 0) :="11000001";
    		constant Y: std_logic_vector (7 downto 0) :="10010001";
    		constant blank: std_logic_vector (7 downto 0) :=X"FF";
    		
    			--Selection des afficheurs
    		constant sel1: std_logic_vector (7 downto 0) :=X"7F";
    		constant sel2: std_logic_vector (7 downto 0) :=X"BF";
    		constant sel3: std_logic_vector (7 downto 0) :=X"DF";
    		constant sel4: std_logic_vector (7 downto 0) :=X"EF";
    		constant sel5: std_logic_vector (7 downto 0) :=X"F7";
    		constant sel6: std_logic_vector (7 downto 0) :=X"FB";
    		constant sel7: std_logic_vector (7 downto 0) :=X"FD";
    		constant sel8: std_logic_vector (7 downto 0) :=X"FE"
    		);
    
    	port(
    		clk: in std_logic;  --quartz 50MHz
    		led: out std_logic;
    		segments, sel: out std_logic_vector (7 downto 0);
    		leds_off: out std_logic_vector (1 downto 0)
    		);
    		
    
    	
    end affichage;
    
    architecture arch_affichage of affichage is
    
    	signal selection, sept: std_logic_vector (7 downto 0);
    	signal clk_lente, clk_rapide: std_logic;
    	signal compt_def: integer range 0 to 15;
    	
    	begin
    	
    		H_lente: process(clk)  --1Hz
    		
    			variable compt_lent: integer range 0 to 49999999;
    			
    			begin
    
    				if (rising_edge(clk)) then
    					
    					if (compt_lent>49999999) then compt_lent:=0;
    					else compt_lent:=(compt_lent+1);
    					end if;
    					
    					if (compt_lent<24999999) then clk_lente<='1';
    					else clk_lente<='0';
    					end if;
    		
    				end if;
    					
    		end process;
    		
    		H_rapide: process(clk) --1MHz
    		
    			variable compt_rapide: integer range 0 to 50;
    		
    			begin
    			
    				if (rising_edge(clk)) then
    					
    					if (compt_rapide>50) then compt_rapide:=0;
    					else compt_rapide:=(compt_rapide+1);
    					end if;
    					
    					if (compt_rapide<25) then clk_rapide<='1';
    					else clk_rapide<='0';
    					end if;
    					
    				end if;
    				
    				
    			
    			end process;
    			
    		aff_lettres: process(compt_def)
    		
    			begin
    					
    				case compt_def is
    						when 0=>sept<=I;
    						when 2=>sept<=S;
    						when 4=>sept<=A;
    						when 6=>sept<=B;
    						when 8=>sept<=E;
    						when 10=>sept<=L;
    						when 12=>sept<=L;
    						when 14=>sept<=E;
    						when others=>sept<=blank;
    					end case;
    				
    			end process;
    			
    		sel_afficheur: process(compt_def)
    				
    			begin
    				
    				case compt_def is
    					when 0=>selection<=sel8;
    					when 2=>selection<=sel7;
    					when 4=>selection<=sel6;
    					when 6=>selection<=sel5;
    					when 8=>selection<=sel4;
    					when 10=>selection<=sel3;
    					when 12=>selection<=sel2;
    					when 14=>selection<=sel1;
    					when others=>selection<=X"FF";
    				end case;
    					
    			end process;
    			
    		incr_def: process(clk_rapide,compt_def)
    			
    			begin
    			
    				if (rising_edge(clk_rapide)) then
    					compt_def<=(compt_def+1);
    				end if;
    				
    			end process;
    	
    	led<=clk_lente;
    	segments<=sept;
    	sel<=selection;
    	leds_off<="11";
    	
    end arch_affichage;
    Bon bien je pense que mon code est loin d'être parfait, aussi si une âme charitable pouvait m'aider à l'arranger un peu..

    Encore merci à tous!

  28. #23
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par peter pan666 Voir le message
    J'pense que le problème venait bien du blanking
    C'est pour ça qu'il faut bien définir le hard que l'on veut faire avant de pisser de la ligne de soft VHDL. On a le résultat que de ce qu'on dit (à l'aide du VHDL) de câbler.
    J'aime pas le Grec

  29. #24
    peter pan666

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Par contre y a quand même un problème qui persiste et qui est plutôt étrange c'est le sifflement..ça le fait même jusqu'à 100kHz!

    Personne n'a idée?

  30. Publicité
  31. #25
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    La carte est alimentée avec quoi?

    A priori, rien sur ta carte peut faire du bruit
    J'aime pas le Grec

  32. #26
    peter pan666

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Pour l'instant j'ai souder les deux fils d'alim d'une prise usb dessus (j'avais pas d'adaptateur sous la main) donc l'alim vient du port usb de mon macbook..

  33. #27
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par peter pan666 Voir le message
    donc l'alim vient du port usb de mon macbook..
    Tu veux tuer ton MacBook ? Une prise USB pour alimenter une bidouille !

    Commence par mettre une alimentation correcte!

    Je crois que l'Arduino a une alimentation interne à découpage ( a vérifier sur la doc) et qui demande au moins 9V externe..... C'est elle qui n'est pas contente et qui siffle.
    J'aime pas le Grec

  34. #28
    stefjm

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par DAUDET78 Voir le message
    Moi, j'utilise des softs (logiciels) pour faire du dessin ... il ne tourne pas sur ma feuille de papier !
    Dans ce cas, il n'y a pas de risque de confusion, donc tu peux dire ce que tu veux, tu sera compris.
    Citation Envoyé par DAUDET78 Voir le message
    Le soft qui donne la vie à un microprocesseur est un cas particulier d'une généralité.
    Je ne le vois pas comme cela car dans ce cas, il y a deux softs.
    Celui qui permet d'obtenir l'exécutable (compilateur sur PC) et l'exécutable lui même qui tourne sur la cible.

    (plus l'éditeur de texte, l'éditeur de lien, le débuggeur (et son bootstrap éventuel sur la cible), le dowloader, etc...)

    Tout ceci est bien du soft, mais bon...pas de l'exécutable.

    On a d'ailleurs du mal en français avec les circuits programmables et programmés. (Un circuit programmable qui a été programmé ne devient pas un circuit programmé... )

    Je suis assez d'accord avec jiherve : Daudet adorerait le VHDL.
    (C'est un langage très fortement typé, donc très rigoureux, et très proche du hard par définition)

    Cordialement.
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  35. #29
    DAUDET78

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Citation Envoyé par stefjm Voir le message
    Je ne le vois pas comme cela car dans ce cas, il y a deux softs.
    Tu crois que tes problèmes métaphysiques de soft ou de sofT passionnent notre ami peter pan666?
    J'ai ma position sur le sujet, tu as la tienne et basta
    • Il avait un problème de Blanking ... c'est réglé.
    • Pour info, on est maintenant sur son alimentation qui siffle
    J'aime pas le Grec

  36. #30
    jiherve

    Re : Carte de développement d'Altera (CycloneII) VHDL

    Bonjour,
    Ceci dit à la lecture de son code il n'y a toujours pas de blanking, ce qui supposerait un écart temporel entre activation des segments et celui de l'afficheur actif!
    Par contre c'est maintenant synchrone et les compteurs recyclent!
    JR
    l'électronique c'est pas du vaudou!

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. code VHDL à propos le VGA sur la carte Spartan-3
    Par radiotique dans le forum Électronique
    Réponses: 24
    Dernier message: 24/05/2013, 17h34
  2. Vhdl mapper entree de carte avnet
    Par tanguiguy dans le forum Électronique
    Réponses: 3
    Dernier message: 17/08/2010, 17h40
  3. Vhdl mapper entree de carte avnet
    Par tanguiguy dans le forum Matériel - Hardware
    Réponses: 0
    Dernier message: 17/08/2010, 16h22
  4. Recherche carte de développement
    Par Dimebagdust dans le forum Électronique
    Réponses: 3
    Dernier message: 11/06/2010, 00h47
  5. [Recherche] Carte de developpement à µP
    Par Inounx dans le forum Électronique
    Réponses: 11
    Dernier message: 20/02/2010, 00h53
Découvrez nos comparatifs produits sur l'informatique et les technologies.