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 :

Décalage d'horloge


Sujet :

VHDL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Décalage d'horloge
    Bonjour,

    Je voudrais décaler mon horloge selon une valeur de sélection.

    J'explique mon projet:

    en sortie d'un démultiplexeur 1b/20b (chaque coup d'horloge un bit est mis en parallèle), je rentre dans un bloc VHDl de "détection" pour reconnaitre un mot de 10bits ("k28.5") dans ma sortie parallèle sur 20bit

    ex: mots reconnu sur out(13 downto 4), pour connaitre la position de ce mot je me sert d'un signal "detect" sur 4bits qui m'indique la position du mot k25.5 .

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
              si K28.5 est positionnée sur dout( 9 downto 0) alors detect ="0001"
              si K28.5 est positionnée sur dout( 10 downto 1) alors detect ="0010"
                                                           etc
     
                                                           etc
                                                           etc
               si K28.5 est positionnée sur dout( 18 downto 9) alors detect ="1001"
    Et donc maintenant je voudrais donc pour pouvoir aligné correctement mon mot, le placé dans tout les cas à dout(9 downto 0).
    donc mon idée est donc si il ya détection du mots de décaler mon horloge en entré de démultiplexeur de la valeur du signal "detect".

    donc en gros d'utiliser ce système:

    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
    process(clk)
    begin
      case (detect) is 
      when "0000" => DOUT_val<= CLK;
      when "0001" => DOUT_val<= "decalement de CLk de 1 bit"; 
      when "0010" => DOUT_val<= "decalement de CLk de 2 bit"; 
     when "0011" => DOUT_val<="decalement de CLk de 3 bit"; 
      when "0100" => DOUT_val<="decalement de CLk de 4 bit"; 
      when "0101" => DOUT_val<= "decalement de CLk de 5 bit"; 
     when "0110" => DOUT_val<= "decalement de CLk de 6 bit"; 
      when "0111" => DOUT_val<= "decalement de CLk de 7 bit"; 
      when "1000" => DOUT_val<= "decalement de CLk de 8 bit"; 
      when "1001" => DOUT_val<="decalement de CLk de 9 bit"; 
      when "1010" => DOUT_val<= "decalement de CLk de 10 bit"; 
      when others => DOUT_val<= CLK;   
    end case;
    end process;
    CLK_decaler <= DOUT_val ;
    et donc j'aimerais savoir la démarche a suivre pour réaliser ce décalage d'horloge;

    je vous remercie d'avance pour toutes informations.

    cordialement
    Mathieu

  2. #2
    Membre expérimenté

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 545
    Points : 1 429
    Points
    1 429
    Par défaut
    Je voudrais décaler mon horloge selon une valeur de sélection.
    Je comprends que tu veux déphaser une signal d'horloge d'une certaine valeur (en dregres ou en radian suivant les gouts). Le seul est unique moyen est d'utiliser une PLL. Je pense que tu te fais mal comprendre.
    Ne pas confondre un signal d'horloge avec un signal de donnée.
    donc si K28.5 est positionnée sur dout( 9 downto 0) alors detect ="0000"
    si K28.5 est positionnée sur dout( 10 downto 1) alors detect ="0001"
    etc
    etc
    etc
    etc
    si K28.5 est positionnée sur dout( 18 downto 9) alors detect ="1001"
    Attention le VHDL n'est PAS case sensitive, cad clk <=> CLK.

    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
    library IEEE;
        use IEEE.std_logic_1164.all;
        use IEEE.numeric_std.all;
        use IEEE.std_logic_unsigned.all;
     
     
     
        shifter_prcs : process(RST,CLK)
            variable lsb    : natural range 0 to 15;
        begin
            if(RST = '1')then
                DOUT_val    <= (others => '0');
            elsif(rising_edge(CLK))then
                lsb         := natural(to_integer(unsigned(detect)); --une des rare utilisation synthetisable du mots clef variable
                DOUT_val    <= DIN_val(9+lsb downto lsb);
            end if;
        end process shifter_prcs;

Discussions similaires

  1. horloge qui retarde
    Par bourvil dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 23/11/2003, 15h17
  2. Réponses: 14
    Dernier message: 01/09/2003, 22h46
  3. Décalage graphique et souris
    Par Sub0 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 27/06/2003, 09h44
  4. [horloge] conflit caractère / timer
    Par JeanJean dans le forum C
    Réponses: 10
    Dernier message: 09/05/2003, 23h47
  5. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15

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