Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

écrire un programme VHDL à partir d'un schéma



  1. #1
    raphafifouel

    Question écrire un programme VHDL à partir d'un schéma


    ------

    bonjour je ne comprends pas comment faire une description VHDL à partir de ce schéma: IMG.jpg
    Pouvez-vous m'aider s'il vous plait ?

    -----
    Dernière modification par raphafifouel ; 20/04/2012 à 14h15. Motif: oublie de préciser l'objet de ma requête

  2. Publicité
  3. #2
    pixtache

    Re : écrire un programme VHDL à partir d'un schéma

    Si tu as du mal en VHDL, il exite cela : http://www.xilinx.com/ise_eval/index.htm

    ça te permet de simuler le fonctionnement de ton circuit en plus.

  4. #3
    umfred

    Re : écrire un programme VHDL à partir d'un schéma

    Premièrement, avant de chercher à décrire le schéma, sais-tu quelle est la fonction de ce schéma? as-tu compris son fonctionnement ?

  5. #4
    jiherve

    Re : écrire un programme VHDL à partir d'un schéma

    Bonjour,
    1 : déclarer un signal de type std_logic_vector(3 downto 0) qui sera le registre q[3..0]
    2 : déclarer un process ayant clk et load_n dans la liste de sensibilité
    le résultat :
    Code:
    P1: process(clk,load_n)
    begin
      if load_n = '0' 
        L1:for i in 0 to 3 loop
          if data_in(i) = '0' then
            q(i) <= '0';
          end if;
        end loop L1;
      elsif rising_edge(clk)
         q <=  ('1' & q(3 downto 1)) ;
      end if;
    end process P1;
    bit_out <= q(0);
    Bine sur le tout fait partie d'une architecture, a toi de compléter!!!
    JR
    Dernière modification par jiherve ; 21/04/2012 à 14h16.
    l'électronique c'est pas du vaudou!

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    raphafifouel

    Re : écrire un programme VHDL à partir d'un schéma

    excusez moi, je ne recevais pas les notifications donc je n'avais pas vu que vous m'aviez répondu.

    umfred: non je ne vois pas quelle fonction est réalisée par ce schéma :/

    jiherve: je n'ai pas vu l'instruction "loop". Y aurait-il un autre moyen ? avec soit des: case, with select, process, if then else end if. ( c'est tout ce que j'ai vu ... )

    merci

  9. #6
    stefjm

    Re : écrire un programme VHDL à partir d'un schéma

    Bonsoir,
    Dans ce cas, vous bégayez un peu :
    q <= "0000";

    C'est pénible si c'est sur 64 bits!
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  10. Publicité
  11. #7
    umfred

    Re : écrire un programme VHDL à partir d'un schéma

    on pourrait appeler ça un sérialisateur (ouh le vilain mot)
    tu rentres une donnée parallèle data_in[0-3] et tu la sort en série au rythme de l'horloge au niveau de bit_out
    le fonctionnement se fait en 5 étapes:
    - on positionne data_in[0-3] par exemple data_in[3]=1,data_in[2]=0,data_in[1]=1,data_in[0]=1 ou '1010'
    - on active load_n
    - on fait une implusion sur clk ce qui à pour action "charger" les bascules D et de sortir le 1er bit (correspondant à à data_in[0])
    - on désactive load_n (pour éviter de recharger la donnée)
    - on génère 3 impulsions pour faire sortir successivement data_in[1], data_in[2],data_in[3]

  12. #8
    raphafifouel

    Re : écrire un programme VHDL à partir d'un schéma

    merci umfred pour la description du montage, qui dans mon exercice est appelé un "système de transmission d'information" mais je ne comprends pas pourquoi c'est l'entrée ~clear qui délivre data_in.

    stephjm, quand tu dis on beguaye un peu, je ne vois pas où béguayer.
    voici le début de ma description VHDL:

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee numeric_std.all;
    entity trans is
    port(
    clk: in std_logic;
    load_n: in std_logic;
    data_in: in unsigned(3 downto 0);
    bit_out: out std_logic
    );
    end entity trans;

    merci

  13. #9
    stefjm

    Re : écrire un programme VHDL à partir d'un schéma

    Citation Envoyé par raphafifouel Voir le message
    stephjm, quand tu dis on beguaye un peu, je ne vois pas où béguayer.
    q <= "0000";
    Tu bégaies 4 fois le '0'. S'il y en avait 64 ou 128, ce serait très moche (et illisible), d'où la boucle for de jiherve pour éviter cela.
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  14. #10
    raphafifouel

    Re : écrire un programme VHDL à partir d'un schéma

    c'est compliqué le VHDL !
    le fait d'écrire q<='0000' remplace (en terme de fonctionnalité) la boucle for de jiherve ?
    dans ce cas je ne vois pas comment associer à Q(0) une valeur de la chaîne d'informations de data_in.

    ( et ai-je fait une erreur sur l'ébauche de structure que je vous ai présenté ? )
    merci de consacrer votre temps à mon problème

  15. #11
    stefjm

    Re : écrire un programme VHDL à partir d'un schéma

    Citation Envoyé par raphafifouel Voir le message
    le fait d'écrire q<='0000' remplace (en terme de fonctionnalité) la boucle for de jiherve ?
    Non.
    Il y a quand même un if inclus dans cette boucle for : Je vous ai quand même laissé un peu de boulot...
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  16. #12
    raphafifouel

    Re : écrire un programme VHDL à partir d'un schéma

    pourrait-on réussir à écrire la description sans boucle for ? parce que je commence le VHDL et je n'ai pas vu la syntaxe d'une boucle for.

  17. Publicité
  18. #13
    stefjm

    Re : écrire un programme VHDL à partir d'un schéma

    On peut.....
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  19. #14
    jiherve

    Re : écrire un programme VHDL à partir d'un schéma

    Bonsoir,
    La boucle for c'est parce que le seul le reset est actif sur les bascules d'après le schéma autrement on aurait pu écrire:
    Code:
     if loadn = '0' then
     q <= data_in;
    ....
    On peut aussi écrire
    Code:
     if loadn = '0' then
     q <= (q and data_in);
    ....
    cependant comme la valeur initiale de q est inconnue le résultat peut conduire a q = 'XXXX'
    ou bien si le chargement était un reset global:
    Code:
     if loadn = '0' then
     Q <= (others => '0');
    ....
    En fait il manque un reset global mais cela peut fonctionner sur un FPGA comportant un dev_clrn, c'est a dire un reset hardware implicite soit à la mise sous tension soit par une entrée dédiée.
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/11/2011, 21h30
  2. lire et écrire dans un fichier en utilisant le VHDL
    Par radiotique dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 23/10/2009, 02h48
  3. simulation d'un programme VHDL
    Par zinsou dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 28/10/2007, 13h47
  4. Tracer un CI à partir d'un schéma électrique ?
    Par san pedro dans le forum Électronique
    Réponses: 19
    Dernier message: 19/03/2004, 21h32
Découvrez nos comparatifs produits sur l'informatique et les technologies.