Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > VHDL
VHDL Forum d'entraide sur VHDL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/10/2012, 16h04   #1
seni404
 
Inscription : mai 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 7
Points : -1
Points : -1
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 :
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 :
1
2
i1:shifter17 port map(not(reset),clk_vec(1),clk,din_data,out_reg(1));-- décalage de 17*1
seni404 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 15h27   #2
titiri
Membre régulier
 
Inscription : juin 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 37
Points : 77
Points : 77
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 :
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
titiri est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/10/2012, 08h40   #3
mith06
Membre actif
 
Ingénieur développement matériel électronique
Inscription : juillet 2010
Messages : 140
Détails du profil
Informations professionnelles :
Activité : Ingénieur développement matériel électronique
Secteur : Industrie

Informations forums :
Inscription : juillet 2010
Messages : 140
Points : 199
Points : 199
Citation:
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????!!!
mith06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2012, 11h24   #4
titiri
Membre régulier
 
Inscription : juin 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 37
Points : 77
Points : 77
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 :
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
titiri est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/10/2012, 14h00   #5
seni404
 
Inscription : mai 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 7
Points : -1
Points : -1
Salut,
merci pour votre aide mais en utilisant cette solution, il m'affiche l'erreur suivante : Cannot find expanded name "work.shifter17".
seni404 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2012, 14h16   #6
titiri
Membre régulier
 
Inscription : juin 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 37
Points : 77
Points : 77
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
titiri est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/10/2012, 11h59   #7
seni404
 
Inscription : mai 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 7
Points : -1
Points : -1
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 :
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;
seni404 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2012, 16h09   #8
titiri
Membre régulier
 
Inscription : juin 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 37
Points : 77
Points : 77
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 :
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
titiri est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/11/2012, 19h42   #9
seni404
 
Inscription : mai 2012
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 7
Points : -1
Points : -1
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
seni404 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 03/11/2012, 20h54   #10
titiri
Membre régulier
 
Inscription : juin 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 37
Points : 77
Points : 77
Bonsoir,

Google est votre ami, non

http://standards.ieee.org/about/get/802/802.11.html
http://standards.ieee.org/about/get/802/802.15.html
http://standards.ieee.org/about/get/802/802.16.html

Cdlt
titiri est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h07.


 
 
 
 
Partenaires

Hébergement Web