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 :

Instanciation d'un registre à décalage


Sujet :

VHDL

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Instanciation d'un registre à décalage
    Salut, j'arrive pas à comprendre comment ça fonctionne l'instanciation en VHDL par exemple je veux instancier le registre à décalage "shifter17"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    component shifter17 IS
    	PORT
    	(
    	aclr		: IN STD_LOGIC  := '1';
    		clken		: IN STD_LOGIC  := '1';
    		clock		: IN STD_LOGIC ;
    		shiftin		: IN STD_LOGIC;
    		shiftout		: OUT STD_LOGIC
     
    	);
    END component;
    et pour l'instaniciation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    i1:shifter17 port map(not(reset),clk_vec(1),clk,din_data,out_reg(1));-- décalage de 17*1

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    L'instanciation avec mapping par position (le 1er signal mappé va sur le 1er signal de l'entité, et ainsi de suite) est vraiment à banir !! Si l'ordre de déclaration change dans le module qui est mappé, c'est la fin !!
    Enfin la déclaration des component est certes "scolaire" mais dangereuse car elle requiert impérativement que toutes les valeurs par défaut éventuellement définies aux generic/port de l'entité soient 100% cohérentes avec le component et qu'elles soient toutes mappées lors de l'instanciation. En effet, les generic/port ayant une valeur par défaut peuvent ne pas être mappé. Au niveau "industriel", la déclaration des "components" est très souvent (voire toujours) liée à l'utilisation de logiciels style VisualHDL (et bof bof ce genre d'outils). Ces outils peuvent se permettre de maintenir à jour les components, mais pour un pauvre humain, c'est toujours un terrain glissant

    Bref, préférez plutôt cette écriture (en supprimant la déclaration du component), compatible à partir du VHDL93 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    i1 : entity work.shifter17 port map
        ( aclr      => not(reset)
        , clken     => clk_vec(1)
        , clock     => clk
        , shift_in  => din_data
        , shift_out => out_reg(1)
        );
    Quant à la signification de ce mapping (objet par objet) :
    • le signal "aclr" du module "shifter17" est connecté au signal "not(reset)"

    • même principe pour les autres signaux


    Cdlt

  3. #3
    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
    Bref, préférez plutôt cette écriture (en supprimant la déclaration du component), compatible à partir du VHDL93 :
    Sérieux on est pas obligé de déclaré un component quand on veut l'instancier????!!!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    Et non, la déclaration du "component" n'est pas obligatoire . À partir du VHDL-1993, l'instanciation directe de n'importe quel sous-module est réalisable avec la syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    label : entity work.SousModule generic map...
    À noter qu'il y a même une possibilité supplémentaire : l'étiquette "label" peut avoir exactement le même nom que le sous-module connecté . Ce qui était impossible en VHDL-1987. Ceci est très pratique lorsque l'on connecte un sous-module qui n'apparaît qu'une unique fois.

    Cette déclaration du component est seulement nécessaire lorsque l'on souhaite utiliser les "configuration" en VHDL, ce qui soit dit en passant reste assez lourd alors que de nombreux équivalents (plus simples !) existent. Donc vraiment "obsolète" cette déclaration...

    Cdlt

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut,
    merci pour votre aide mais en utilisant cette solution, il m'affiche l'erreur suivante : Cannot find expanded name "work.shifter17".

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    Il faut que l'entité "shifter17" :

    1. soit compilée dans la même bibliothèque que le module faisant le map
    2. soit compilée avant (sinon sa référence n'existe pas encore, of course...)


    Cdlt

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut
    SVP je veux savoir la configuration du composant à quelle bloc doit étre faite, voila l'exemple ci dessous lui manque la configuartion des composants AND et XOR , SVP si vous pouvez m'aider
    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
     
    library  ieee;
    use  ieee.std_logic_1164.all;
     
    entity exsimple is
       port ( A : in    std_logic;  
              B : in    std_logic;  
              C : in    std_logic;  
              D : out   std_logic); 
    end exsimple; 
    architecture BEHAVIORAL of exsimple is
       attribute BOX_TYPE   : STRING ; 
       signal S1 : std_logic; 
       component XOR2 
          port ( I0 : in    std_logic;  
                 I1 : in    std_logic;  
                 O  : out   std_logic); 
       end component; 
       component AND2 
          port ( I0 : in    std_logic;  
                 I1 : in    std_logic;  
                 O  : out   std_logic); 
       end component; 
    begin
       BLOC1 : XOR2 
          port map (I0=>B, I1=>A, O=>S1);
       BLOC2 : AND2 
          port map (I0=>C, I1=>S1, O=>D); 
    end BEHAVIORAL;

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    Comme je vous l'ai indiqué le 22/10/2012 à 11h24, préférez l'instanciation directe (sans déclarer le "component" et sans utiliser la "configuration")
    Si vous souhaitez tout de même utiliser les "config", cela se passe après le "end" de l'architecture (donc en dehors de l'architecture).
    Dans les grandes lignes, une configuration s'utilise comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    configuration ConfigName of EntityName is
    for ArchitectureName
    for Instances: ComponentName
    use LibraryName.EntityName(ArchName);
    end for;
    end for;
    end ConfigName;
    Pour ma part, je suis hostile à ces configurations qui n'ont que pour seul avantage de nous pourrir la vie J'estime que leur utilisation est réservée à ceux qui développent le VHDL avec des outils graphiques et qui peuvent se permettre de mettre à jour tous les codes sources en quelques clics.
    Si comme moi (et beaucoup d'autres) vous développez votre VHDL uniquement avec un éditeur textuel (style NotePad++), la mise à jour des configurations devient très vite l'enfer et une source d'erreurs quasi-illimitée...

    Cdlt

  9. #9
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut type d'entrelaceur
    je cherche à savoir le type d'entrelaceur utilisé dans chacune de ces normes:
    IEEE 802.11
    IEEE 802.16
    IEEE 802.15
    SVP qui a des liens d'articles ou de livres qui contamnent le sujet de l'entrelacement dans les normes sans fils, c'est urgent
    merci

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Points : 121
    Points
    121

Discussions similaires

  1. cryptage des images par le registre de décalage LSFR
    Par kamel_eddine dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 07/12/2012, 23h34
  2. Compteur dans un registre à décalage
    Par killabeez dans le forum LabVIEW
    Réponses: 7
    Dernier message: 06/04/2011, 14h41
  3. Registre à décalage
    Par m@tix dans le forum LabVIEW
    Réponses: 5
    Dernier message: 24/09/2010, 22h07
  4. [LV8.0][Débutant]Registre à décalage dans un sous-vi
    Par pacman74 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 05/05/2010, 13h34
  5. registre à décalage et tableau 2D
    Par Pierpolay dans le forum LabVIEW
    Réponses: 4
    Dernier message: 04/01/2010, 11h31

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