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

VHDL Discussion :

retard intempestif vhdl


Sujet :

VHDL

  1. #1
    Membre à l'essai
    Homme Profil pro
    alternance STMicroelectronics
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : alternance STMicroelectronics
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Points : 18
    Points
    18
    Par défaut retard intempestif vhdl
    Salut a tous!

    Je suis en train de coder un CNA en vhdl et j'ai un probleme lorsque je simule: j'ai un retard sur ma sortie analogique alors que j'en veux pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    library IEEE;
    use IEEE.std_logic_1164.all;
    use ieee.numeric_std.all;
     
    entity dac is
     
    	generic (data_width : integer;
    		 SDI_width  : integer;
    		 REF        : real);
     
    	port(	SDI   : in  std_logic_vector (SDI_width - 1 downto 0);
    		SDO   : out std_logic_vector(SDI_width - 1 downto 0);
    		SCK   : in  std_logic;
    		CLR   : in  std_logic;  -- low level active
    		CS_LD : in  std_logic;   -- '0': CS / '1': LD
    		LDAC  : in  std_logic;  -- low level active
    		Vout  : out real
    	    );
     
    end dac;
     
    architecture archi of dac is	
     
    signal data      : std_logic_vector(11 downto 0);
    signal data_real : real;
     
    begin
     
    	data <= SDI(15) & SDI(14) & SDI(13) & SDI(12) & SDI(11) & SDI(10) &
    		SDI(9) & SDI(8) & SDI(7) & SDI(6) & SDI(5) & SDI(4);		
     
    	P1: process(SCK)
    	begin
     
    		data_real <= (real(to_integer(signed(data))));
     
    		if (CLR = '0' or CS_LD = '0') then
     
    			Vout <= 0.0;
     
    		elsif (SCK'event and SCK = '1') then
     
    			Vout <= data_real/(2.0**data_width) * REF;
     
    		end if;
     
    	end process;
     
     
    end archi;
    Lorsque je simule ce code je remarque un retard de 5 ns sur le signal data_real et de 15 ns sur le signal Vout. Pouvez-vous me dire d'ou ca peut venir et s'il y a moyen de regler cela?

    Ps: le code n'est pas fini donc c'est normal si tous les ports ne sont pas utilises dans mon code.

    Merci pour vos reponses

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour, il est possible, si c'est un vrai problème de timing (ce qui semble être le cas car tu es à la nanoseconde) que la liste de sensibilité de ton process soit incomplet. Sinon, essaye de mettre des contraintes de placement de l'implémentation logique de quartus.

  3. #3
    Nouveau membre du Club
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Avril 2008
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Le premier poste de l'auteur du message date d'il y a deux ans.
    Cette reponse pourrait aider d'autres personnes.

    Avant tout, il faut savoir que dans un logiciel de simulation, comme modelsim/questasim par exemple, il y a une résolution minimale de mise à jour du calcul. Par défaut, elle est à 1 ps (pico-seconde). Si elle est modifiée, 5ns par exemple, on verra au minimum le chronogramme évoluer toute les 5ns, quelque soit l'horloge. C'est le paramètre Resolution du fichier modelsim.ini qui le fixe.

    Dans son code, il a mis l'affectation de data_real dans un process, mais hors rising_edge ou clk'event... Je ne sais pas trop ce que ça donne.

    L'affectation du Vout est clocké par le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elsif (SCK'event and SCK = '1') then
    Donc il prend un coup d'horloge sur sa sortie, qui dépend de la période de SCK. Si la résolution de son simulateur est de 5ns, et que SCK est à 100MHz (10 ns), le 15 ns peuvent provenir de là.

    Je ne suis pas trop sur des 5 ns, pour le signal data_real mis dans le process, mais non clocké.

Discussions similaires

  1. Retard synthétisable en VHDL
    Par isamel85 dans le forum VHDL
    Réponses: 2
    Dernier message: 06/03/2015, 13h49
  2. horloge qui retarde
    Par bourvil dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 23/11/2003, 15h17
  3. [DLL] -> Retarder le chargement ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/08/2003, 20h32
  4. RAZ intempestif de cookie
    Par pram dans le forum XMLRAD
    Réponses: 5
    Dernier message: 27/05/2003, 15h55
  5. DirectX 6, un peu en retard ... :\
    Par multani dans le forum DirectX
    Réponses: 3
    Dernier message: 28/05/2002, 19h19

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