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

Code VHDL



  1. #1
    midouMeziane

    Talking Code VHDL


    ------

    salut les chers membres du groupe;
    je suis étudiant en électronique et c'est la première fois que je travaille sur le langage VHDL j'ai vraiment besoin d'aide pour résoudre mon problème qui consiste a réaliser un filtre, l’énoncé de l'exo est figuré dans la photo ci joint et merci d'avance

    -----
    Images attachées Images attachées  

  2. Publicité
  3. #2
    andre_teprom

    Re : Code VHDL

    Qu'est-ce que vous avez fait jusqu'à présent?
    Où est le avant-projet que vous avez l'intention de faire la synthèse?

    Remarque:
    Discussion posté dans la section incorrecte.
    Dernière modification par andre_teprom ; 09/12/2015 à 14h24. Motif: Note complémentaire

  4. #3
    midouMeziane

    Re : Code VHDL

    Vous n'avez vu la photo que j'ai mis?
    je viens de commencer je n'arrive pas a faire la première partie voici la photo
    Nom : 12278710_983504288387521_126619850764310642_n.jpg
Affichages : 37
Taille : 137,0 Ko
    Dernière modification par midouMeziane ; 09/12/2015 à 20h14.

  5. #4
    jiherve

    Re : Code VHDL

    Bonsoir,
    Pour un début c'est un peu excessif.
    Que comprends tu du problème, role de SEL,INI,FIN?
    Les fonctions Mult et Acc sont elles instanciables en brutal ou faut il les décrire?
    Bien sur je pourrais t’écrire le code mais tu n'apprendrais rien.
    JR
    l'électronique c'est pas du vaudou!

  6. A voir en vidéo sur Futura
  7. #5
    andre_teprom

    Re : Code VHDL

    Citation Envoyé par midouMeziane Voir le message
    Vous n'avez vu la photo que j'ai mis?
    je viens de commencer je n'arrive pas a faire la première partie voici la photo
    Je ne suis pas parlant de la formulation de la question, mais spécifiquement de le développement de la solution. La première étape que vous devez effectuer est la description de l'architecture des blocs, preferencielment en la langage VHDL ( pas graphiquement ), informant les entrées et sorties de chaque module (entity......is), décrivant plus tard, leur contenu (architecture .... of.. ... is), hiérarchiquement dans une approche top-down, à savoir, détaillant à l'intérieur.
    Pour la simulation, vous pouvez valider individuellement chaque module, et les 'raccorder' progressivement.


    De cette façon, la chose n'est pas si difícile que cela puisse paraître, mais seulement 'laborieuse'.

  8. #6
    midouMeziane

    Re : Code VHDL

    Bonjour;
    Justement j'ai commencé a traiter chaque bloque mais malheureusement je n'arrive pas a faire ce qui est demander notamment pour le premier bloque j'ai pensé a faire une rame et a chaque fois 8 bits entrent le registre complet se décale voici mon code et ce qui est diffficle comment avoir 4 sortie en parallèle sachant qu'il faut chaque la sortie de premier registre soit la rentré de l'autre :
    Code:
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    
    entity ram_example is
    port (Clk : in std_logic;
            address : in integer;
            we : in std_logic;
            data_i : in std_logic_vector(7 downto 0);
            data_o : out std_logic_vector(7 downto 0)
            
         );
    end ram_example;
    
    architecture Behavioral of ram_example is
    
    --Declaration of type and signal of a 31 element RAM
    --with each element being 8 bit wide.
    type ram_t is array (0 to 31) of std_logic_vector(7 downto 0);
    signal ram : ram_t := (others => (others => '0'));
    
    begin
    
    --process for read and write operation.
    PROCESS(Clk)
    BEGIN
        if(rising_edge(Clk)) then
            if(we='1') then
                ram(address) <= data_i;
            end if;
            data_o <= ram(address);       
        end if; 
    END PROCESS;
    
    end Behavioral;
    Merci
    Dernière modification par Antoane ; 16/12/2015 à 13h56. Motif: Ajout balises code

  9. Publicité
  10. #7
    jiherve

    Re : Code VHDL

    Bonjour,
    a priori le code semble correct mais cela n’implémente qu'une RAM synchrone, ce dont tu n'as pas besoin.
    Pour le bloc manipulant les échantillons il faut effectivement un registre à décalage 4x8 suivi d'un multiplexeur.
    Donc essayes encore.
    JR
    l'électronique c'est pas du vaudou!

  11. #8
    andre_teprom

    Re : Code VHDL

    Bonjour,

    Comme je l'ai mentionné plus tôt, une approche de recommandée serait top-down, où le système serait décrit et «assemblé» hiérarchiquement d'une manière descentende, mais de ce que je voyais dans votre code ci-dessus, vous commencé à créer les parties inférieures de la hiérarchie, mais ok , c'est est valable. Encore une fois, j'insiste à ce que vous créez votre propre modèle graphique, bien qu'il soit presque la même enouncée, mais en donnant des «noms» aux blocs, de sorte que si quelqu'un d'autre le travail sur votre code, sait exactement ce qu'il est.

    En référence au code ci-dessus qui implémente les registres de contrôle, et ceux-ci doivent être associée à un MUX, et tout cet ensemble doit être insérée dans la boîte appelée "ech", comme décrit dans le graphique. Après cette étape, vous devez créer un code de test (testbench) pour valider le fonctionnement du module "ech", et ainsi de suite, vous devez créer d'autres blocs sur la base de la même approche.

    En passant, je vous recommande la prochaine fois, encapsuler le code affiché, ce qui facilitera un peu plus de lecture, avec ou sans coloration syntaxique, come ça:

    Code:
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
     
    entity ram_example is
         port (Clk : in std_logic;
             address : in integer;
             we : in std_logic;
             data_i : in std_logic_vector(7 downto 0);
             data_o : out std_logic_vector(7 downto 0) );
    end ram_example;
     
    architecture Behavioral of ram_example is
        --Declaration of type and signal of a 31 element RAM
        --with each element being 8 bit wide.
        type ram_t is array (0 to 31) of std_logic_vector(7 downto 0);
        signal ram : ram_t := (others => (others => '0'));
     
    begin
     
     --process for read and write operation.
    PROCESS(Clk)
         BEGIN
             if(rising_edge(Clk)) then
             if(we='1') then
                 ram(address) <= data_i;
                 end if;
                 data_o <= ram(address); 
                 end if; 
     END PROCESS;
     
    end Behavioral;

Discussions similaires

  1. code vhdl de l'ALU
    Par Dijachan dans le forum Électronique
    Réponses: 2
    Dernier message: 31/10/2012, 13h27
  2. code vhdl d'un CPU
    Par sas202010 dans le forum Électronique
    Réponses: 5
    Dernier message: 24/04/2012, 13h09
  3. code vhdl
    Par deyni dans le forum Électronique
    Réponses: 6
    Dernier message: 17/02/2012, 15h53
  4. Pb code vhdl!!!
    Par grandmax dans le forum Électronique
    Réponses: 14
    Dernier message: 30/05/2008, 00h26
Découvrez nos comparatifs produits sur l'informatique et les technologies.