question sur la description structurelle en vhdl

question sur la description structurelle en vhdl - Langages fonctionnels - Programmation

Marsh Posté le 07-11-2011 à 21:46:59    

Bonjour,
j'ai un registre qui fait des decalages à gauche et à droite et un chargement paralleles ce qui fait que j'ai des variables de conditions aut,load etc,le truc c'est que je n'ai pas su comment faire la description structurelle du registre et ceci à cause de la partie combinatoire.j'ignore comment proceder si vous pouvez m'aider svp

Reply

Marsh Posté le 07-11-2011 à 21:46:59   

Reply

Marsh Posté le 07-11-2011 à 22:00:51    

Salut!
 
Si tu postes ton code ce sera plus facile de t'aider!


---------------
sheep++
Reply

Marsh Posté le 07-11-2011 à 22:54:24    

petite exemple:
q(0) = aut (barre) q(0)+aut(load*q(0)+load(barre)(dir*sdi+dir(barre)*q(1))
cette equation faut faire sa description structurelle pour l'affecter ensuite à un bistable d que j'ai fais sa description structurelle

Reply

Marsh Posté le 07-11-2011 à 22:59:51    

Manque l'ouverture d'une parenthèse.

Reply

Marsh Posté le 07-11-2011 à 23:09:46    

ah oui
q(0) = aut (barre) q(0)+aut(load*q(0)+load(barre)(dir*sdi+dir(barre)*q(1)) ) j'ai fais une faute en tapant c'est tout mais ce n'est pas ça le probleme

Reply

Marsh Posté le 07-11-2011 à 23:24:59    

Avec un process ça donne ça:

 

SR_SIZE étant la taille de ton registre à décalage

 
Code :
  1. shift_reg : process(clk)
  2. begin
  3.    if rising_edge(clk) then
  4.        if auth = '1' then
  5.            if load = '1' then
  6.                q <= load_data;
  7.            elsif load = '1' then
  8.                if dir = '1' then
  9.                    q <= q(SR_SIZE - 2 downto 0) & sdi;
  10.                else
  11.                    q <= sdi & q(SR_SIZE - 1 downto 1);
  12.               end if;
  13.           end if;
  14.        end if;
  15.    end if;
  16. end process;
 

Après c'est peut-être hors sujet, je ne comprends pas très bien la question.

Message cité 1 fois
Message édité par h3bus le 07-11-2011 à 23:32:36

---------------
sheep++
Reply

Marsh Posté le 08-11-2011 à 19:09:42    

merci pour l'aide mais ceci je l'ai déja fais,c'est la description comportementale or je veux la structurel en utilisant component et portmap si vous voyez ce que je veux dire

Reply

Marsh Posté le 08-11-2011 à 21:29:04    

h3bus a écrit :


Code :
  1. --
  2.            if load = '1' then
  3.                q <= load_data;
  4.            elsif load = '1' then
  5.                if dir = '1' then
  6.                    q <= q(SR_SIZE - 2 downto 0) & sdi;
  7.                else
  8.                    q <= sdi & q(SR_SIZE - 1 downto 1);
  9.               end if;
  10.           end if;




En vrai le elsif n'est jamais exécuté ?

Message cité 1 fois
Message édité par Profil supprimé le 08-11-2011 à 21:32:03
Reply

Marsh Posté le 08-11-2011 à 22:02:11    


Euh en fait c'est censé être un else... my bad!
 
En ce qui concerne la description structurelle ça sent l'exercice académique vu que c'est franchement déconseillé pour un composant aussi simple.
 
Je suppose qu'il faut que tu déclare tes portes (and, or not, flip flop) en entités VHDL et que tu instancie tout ça pour réaliser ton équation.
Pour l'instanciation je te conseil de te faire le dessin du circuit numérique et la suite devrait aller tout seul.


---------------
sheep++
Reply

Marsh Posté le 09-11-2011 à 16:02:43    

merci de votre reponse,j'ai aussi pensé à ça mais le probleme c'est que le code devient tres long pour faire une seule equation chose qui m'a intrigué et m'a fait penser que c'est faux,mais bon je ne sais pas franchement ..

Reply

Marsh Posté le 09-11-2011 à 16:02:43   

Reply

Marsh Posté le 09-11-2011 à 16:51:30    

Et oui c'est long à écrire, incompréhensible et non maintenable.

 

C'est pour ça qu'on a créé des languages du type VHDL qui remplacent avantageusement les saisies de schéma pas une description comportementale.
Mais bon les profs n'ont pas l'air de comprendre ça et pondent des exos prise de tête au lieu d'apprendre à leurs élèves à écrire VHDL utile, générique et bien écrit.

 

Résultat les ingénieurs arrivent dans le milieu du travail et sortent du code naze...

 

[/coup de gueule]

Message cité 1 fois
Message édité par h3bus le 09-11-2011 à 16:53:03

---------------
sheep++
Reply

Marsh Posté le 09-11-2011 à 20:45:39    

h3bus a écrit :

Et oui c'est long à écrire, incompréhensible et non maintenable.
 
C'est pour ça qu'on a créé des languages du type VHDL qui remplacent avantageusement les saisies de schéma pas une description comportementale.
Mais bon les profs n'ont pas l'air de comprendre ça et pondent des exos prise de tête au lieu d'apprendre à leurs élèves à écrire VHDL utile, générique et bien écrit.
 
Résultat les ingénieurs arrivent dans le milieu du travail et sortent du code naze...
 
[/coup de gueule]


 
c'est ce que je demande la description comportementale!! mais le seul moyen que j'ai trouvé c'est de faire comme vous avez dit,declarer les portes logique en tant que component et les utilises pour faire l'equation dans la partie architecture mais c'est vraiment long!!et surtout qu'on a 4 equations de ce genre  :sweat:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed