[Programmation] VHDL - code compteur - compilation OK - Simulation
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

VHDL - code compteur - compilation OK - Simulation



  1. #1
    philouxy

    VHDL - code compteur - compilation OK - Simulation


    ------

    Hello Cheres, Chers Bidouilleurs de code,

    Je suis entrain de réaliser un petit projet évolutif en VHDL avec comme outil de développement la WEB edition de Quartus II - version 9.1.

    Actuellement, je suis entrain de me prendre la tête sur la création de compteur et un signal d'horloge - le compteur numérique fonctionne, mais c'est la génération du signal logique qui ne marche pas - je me trouve à la simulation avec deux glitches, si je modifie ma constant max du compteur, je peux retrouver avec plusieurs glitch sur mon signal d'horloge.

    Je n'ai pas de soucis à la compilation de mon code, mais à la simulation de celui-ci ou je me retrouve avec deux glitches qui ne devraient pas s'y trouver, j'ai écrit deux manière différentes les compteurs et toujours meme résultats.

    Voir image en annexe de ce message.

    Si vous êtes intéressé à suivre/résoudre le problème, aller voir du coté du talk pour la visualisation du problème et le suivi du projet (https://fixme.ch/wiki/Talk:Langage_VHDL)

    Pour le code complet, aller voir sur le github du projet : https://github.com/philouxy/Langage-...ject_2_Juggler

    Mes neuronnes sont morts alors si vous avez des idées, je suis preneurs

    Amitié du cht'y Philou

    -----
    Images attachées Images attachées  

  2. #2
    DAUDET78

    Re : VHDL - code compteur - compilation OK - Simulation

    En logique câblé, cela ressemble à l'utilisation d'un compteur asynchrone (faut toujours utiliser du compteur synchrone) quand on fait un décodage derrière (ou alors, on met une bascule D derrière qui mémorise sur le front descendant de l'horloge)
    J'aime pas le Grec

  3. #3
    jiherve

    Re : VHDL - code compteur - compilation OK - Simulation

    Bonsoir,
    Voilà un bel exemple de : le VHDL ce n'est pas du soft et derrière il y a de la physique !!
    Ton horloge 2Hz est générée par un bête décodage d'un compteur qui bien que synchrone voit ses sorties se propager avec des retards variables ce qui crée des glitches en simulation si celle ci est temporelle, en comportemental pur il n'y aura rien.
    Donc il faut rajouter une bascule pour nettoyer.
    C'est un grand classique des débutants en VHDL, çà marche en virtuel mais çà bugge en vrai!
    Ne jamais perdre de vue que le nombre d'entrées disponibles sur une LCELL/MLAB est limité et que si ce nombre n'est pas suffisant il y aura besoin d'utiliser d'autres cellules qui ne seront pas forcement situées à proximité (gag repetitif du placeur/routeur)et que les temps de propagation dus au routage interne du FPGA viendront semer la zizanie.
    Ls VHDL/Verilog ne sont pas des langages logiciels mais des outils de description du hardware, les limitations de celui ci doivent donc être bien connues et maitrisées,c'est un métier de plus en plus difficile lorsque l'on veux grimper en fréquence mais dejà exigeant en BF(voir les joyeusetés liés aux phénomènes de métastabilité)
    JR
    Dernière modification par jiherve ; 25/08/2016 à 20h08.
    l'électronique c'est pas du vaudou!

  4. #4
    philouxy

    Re : VHDL - code compteur - compilation OK - Simulation

    Sorry pour cette réponse tardive,

    Premièrement merci à daudet et jiherve de m'avoir lu et répondu avec des explications détaillées...

    Le compteur est mode synchrone, la génération de mon signal de clock de 2Hz (exemple) se trouve en mode asynchrone et en combinatoire... donc comme on me l'a expliqué certain passage d'une valeur à une autre peuvent venir perturber ce signal de clock du à ce phénomène que tu expliques très bien (jiherve).

    Donc palier à ce phénomène, il faut aussi synchroniser ce signal sur la clock de base.

    Voici le code :
    Code:
    	CMPT_ETAT_FUTUR_2HZ : process(compteur_num_p)
    		begin 
    			if (compteur_num_p >= VAL_MAX_COMPTEUR_2HZ) then
    				compteur_num_f <= (others => '0');
    			else 
    				compteur_num_f <= compteur_num_p + 1;  
    			end if; 
    	end process; 
    	
    	CMPT_ETAT_PRESENT_2HZ : process(CLK_1_8MHZ)
    		begin 
    			if ((CLK_1_8MHZ'event) and (CLK_1_8MHZ = '1')) then 
    				compteur_num_p <= compteur_num_f;
    			end if; 
    	end process; 
    	
    --	-----------------------------------------
    --	-- Horloge 2Hz rapport cyclique de 50% -- 
    --	-----------------------------------------
    	CLK_2HZ_50P : process (compteur_num_p) 
    		begin 
    			if rising_edge (CLK_1_8MHZ) then 
    				if (compteur_num_f <= VAL_MAX_CMPT_DIV_2) then
    					clk_2Hz <= '0';
    				else 
    					clk_2Hz <= '1'; 
    				end if;
    			end if; 
    	end process; 
    	
    	clk_2Hz_SIM <= clk_2Hz;
    J'espère que cela pourra servir à d'autre.

    Amitié - Philippe
    Dernière modification par Antoane ; 09/09/2016 à 08h55. Motif: Remplacement des balises quote par code

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Simulation d'ascenseur en VHDL
    Par invitef848a2af dans le forum Électronique
    Réponses: 2
    Dernier message: 20/12/2010, 07h15
  2. simulation VHDL
    Par invitecbaaa007 dans le forum Électronique
    Réponses: 2
    Dernier message: 25/05/2009, 13h40
  3. simulation d'un programme VHDL
    Par invite3e0ef868 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 28/10/2007, 13h47
  4. Simulation code vhdl
    Par invite232dbe64 dans le forum Électronique
    Réponses: 4
    Dernier message: 30/11/2006, 09h35
  5. compteur vhdl
    Par inviteacb3e291 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/11/2006, 10h31
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...