debutant perdu en VHDL
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

debutant perdu en VHDL



  1. #1
    invitebeff1d9a

    debutant perdu en VHDL


    ------

    Bonjour,
    Apres plusieurs tentatives sur des forums, avoir tenté de trouver des codes pour m'en inspirer, j'arrive à rien.

    Je cherche à implementer en VHDL un scrambler, vous pouvez voir le schéma du montage sur ce lien: http://en.wikipedia.org/wiki/Image:S...r_additive.png



    Le code:

    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    USE ieee.std_logic_unsigned.ALL;
    USE ieee.numeric_std.all;


    entity randomizer_test is
    port (
    clk : in std_logic;
    bit_in : in std_logic;
    bit_enab : in std_logic;
    bit_reset: in std_logic;
    bit_out: out std_logic
    );
    end randomizer_test;

    architecture arc of randomizer_test is

    signal reg : std_logic_vector(14 downto 0):="111111111111111";
    signal porte_1 : std_logic;
    signal porte_2 : std_logic;

    begin

    process(clk,bit_reset)
    begin

    if (bit_reset = '1') then
    reg<="110110101010101";

    elsif (rising_edge(clk) and clk='1' and bit_reset='0') then
    if (bit_enab='1') then
    porte_1 <= reg(14) xor reg(13);
    porte_2 <= porte_1 xor bit_in;

    reg(14 downto 1)<=reg(13 downto 0);

    reg(0)<=porte_1;
    end if;
    end if;
    end process;

    bit_out<=porte_2;

    end arc;


    Je simule sous Quartus, et je vous laisse voir ce que j'obtiens en resultat de simulation: http://img89.imageshack.us/img89/3156/imageuo7.jpg

    Donc deja, j'arrive pas avec mon reset à initialiser les registres avec les bits (reg<="110110101010101" Il y met des valeurs dont je ne sais pas d'ou il les prend...

    A l'aide, y a peut etre une ame charitable qui pourrait m'aider. Je ne connais strictement rien à la programmation VHDL, j'apprend en autodidact et j'aimerai comprendre le raisonnement à suivre.

    Merci de vos reponses.

    -----

  2. #2
    jiherve

    Re : debutant perdu en VHDL

    Bonjour
    il faut ecrire
    if (bit_reset = '1') then
    .....
    elsif rising_edge(clk) then
    ...
    end if;
    çà cela ne veut rien dire :
    elsif (rising_edge(clk) and clk='1' and bit_reset='0') then
    car rising_edge(clk) = clk'event and clk= '1'
    et le elsif suppose implicitement bit_reset = '0'
    lorsque l'on ecrit :
    signal reg : std_logic_vector(14 downto 0):="111111111111111";
    cela donne une valeur à t<= 0 ns (en simul le temps n'existe qu'après) .

    corriges and try again!
    JR

  3. #3
    invitebeff1d9a

    Re : debutant perdu en VHDL

    Merci,
    j'ai corrigé cette partie du code

    process(clk,bit_reset)
    begin

    if (bit_reset = '1') then
    reg<="110110101010101";

    elsif rising_edge(clk) then
    if (bit_enab='1') then
    porte_1 <= reg(14) xor reg(13);
    porte_2 <= porte_1 xor bit_in;

    reg(14 downto 1)<=reg(13 downto 0);

    reg(0)<=porte_1;
    end if;
    end if;
    end process;


    et j'ai aussi retiré le ):="111111111111111"; puisqu'il ne sert à rien visiblement.

    J'ai toujours le meme probleme, mon registre ne s'initialise pas comme je le veux. Il s'initialise plutot avec 011011111111110; et je crois qu'a ce stage il a deja fait un decalage. puis à l'instant d'apres je me retrouve avec 101100000000010, ca n'a pas l'air de correspondre au reg(14 downto 1)<=reg(13 downto 0);

    T'as une idée?

  4. #4
    jiherve

    Re : debutant perdu en VHDL

    bonsoir
    remet donc une image de tes resultats de simul.
    c'est une simul fonctionnelle ou bien post lay out ?

    JR

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

    Re : debutant perdu en VHDL

    Re
    une question me tarraude : ta fréquence d'horloge c'est combien ?
    ton registre ne fait pas du tout ce que tu as écris.
    As tu modelsim ?
    JR

  7. #6
    invitebeff1d9a

    Re : debutant perdu en VHDL

    Mon registre n'est pas chargé comme il devrait, et les décalages n'ont pas l'air de se faire. J'utilise Quartus, parce que je veux implementer ca apres sur un cyclone III. Ma frequence d'horloge est de 10ms. Je l'ai augmenté, parce que en nanoseconde y avait trop de retard.

  8. #7
    jiherve

    Re : debutant perdu en VHDL

    Re
    10ms là tu me vois perplexe car ta simul donne plutôt 50ms de periode!
    Ton image me fait penser à du sous échantillonage.
    Si tu disposes de Quartus alors tu dois avoir Modelsim AE utilise le.
    JR

  9. #8
    invitefdfc258c

    Re : debutant perdu en VHDL

    Bonsoir,

    Peux-tu re-poster le code avec les corrections effectuées ?

    Une autre question, comment réalises-tu la simulation ? Utilises-tu un testbench ? Si oui, peux-tu le poster ici également =)

  10. #9
    invitebeff1d9a

    Re : debutant perdu en VHDL

    Bonjour,
    Je reprend, je m'etais trompé en disant 10ms, je pouvais plus rééditer apres. Je met bien 50ms en fréquence d'horloge. J'utilise Quartus le simulateur de Quartus, pour pouvoir l'implementer apres sur un cyclone3.

    Voila à quoi ressemble mon cote, y a franchement pas grand chose de nouveau dessus:

    LIBRARY ieee;
    USE ieee.std_logic_1164.ALL;
    USE ieee.std_logic_unsigned.ALL;
    USE ieee.numeric_std.all;


    entity randomizer_test is
    port (
    clk : in std_logic;
    bit_in : in std_logic;
    bit_enab : in std_logic;
    bit_reset: in std_logic;
    bit_out: out std_logic
    );
    end randomizer_test;

    architecture arc of randomizer_test is

    signal reg : std_logic_vector(14 downto 0);--:="111111111111111";
    signal porte_1 : std_logic;
    signal porte_2 : std_logic;

    begin

    process(clk,bit_reset)
    begin

    if (bit_reset = '1') then
    reg<="110110101010101";

    elsif rising_edge(clk) then
    if (bit_enab='1') then
    porte_1 <= reg(14) xor reg(13);
    porte_2 <= porte_1 xor bit_in;

    reg(14 downto 1)<=reg(13 downto 0);

    reg(0)<=porte_1;
    end if;
    end if;
    end process;

    bit_out<=porte_2;

    end arc;

    J'utilise pas de testbench, j'utilise un fichier Waveform sous Quartus...

  11. #10
    jiherve

    Re : debutant perdu en VHDL

    bonsoir
    si j'ai 5 min dans la semaine je vais essayer sur ma machine, je suis en 7.2 SP3 .
    c'est bien une simulation fonctionnelle i.e avant compilation?
    JR

  12. #11
    invitebeff1d9a

    Re : debutant perdu en VHDL

    Bonsoir,
    Si tu peux tester ca dans la semaine c'est sympa, moi je vais essayer de me renseigner encore de mon coter. Mais tu penses que dans la forme le code est bon? J'ai pas suivi de cours en VHDL, donc je peux pas te dire si c'est une simulation fonctionnelle. Je peux t'envoyer mon fichier projet.

  13. #12
    invitebeff1d9a

    Re : debutant perdu en VHDL

    Bonjour,
    Merci pour votre attention et votre aide.
    J'ai testé le code sous AHDL ( un simulateur ' fonctionnel' je sais meme pas ce que c'est) et le registre s'initialise bien. J'ai aussi sorti les deux operations XOR du process. Donc visiblement, le simulateur de quartus a un probleme.
    Donc c'est partielement résolu.

Discussions similaires

  1. vhdl
    Par invite6fc91cc2 dans le forum Électronique
    Réponses: 1
    Dernier message: 04/01/2008, 00h52
  2. vhdl
    Par invitedcb8d9bb dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2007, 20h52
  3. debutant perdu dans les termes
    Par invite376a7ebd dans le forum Électronique
    Réponses: 10
    Dernier message: 08/02/2007, 23h17
  4. je suis débutant et un peu .... perdu
    Par invited2a9aaed dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 7
    Dernier message: 20/10/2004, 11h50
Découvrez nos comparatifs produits sur l'informatique et les technologies.