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

Vhdl when others



  1. #1
    guitou f

    Question Vhdl when others

    Bonjour,
    Je suis en train d'écrire un programme de codage/decodage de type M-of-N. Mon problème est pour le décodage: en entrée(i) un vecteur de 5 bits, et en sortie un vecteur de 3 bits. Ici c'est un codage de 2-of-5, c'est à dire qu'on à tout le temps 2 bits à un dans le vector de 5 bits.
    Je voudrais savoir si il est possible d'écrire une condition "when others" avec une structure de type "WITH ..SELECT..."? J'aimerais que pour les autres cas de l'entrée (5 bits), la sortie soit indéterminé. Remarque: je travaille en asynchrone.

    Merci


    -- VHDL decoder description
    ENTITY decode_2_5 IS
    PORT( i : IN BIT_VECTOR(4 DOWNTO 0);
    o : OUT BIT_VECTOR(2 DOWNTO 0);
    vdd : IN BIT;
    vss : IN BIT );
    END decode_2_5;


    ARCHITECTURE VBE OF decode_2_5 IS

    BEGIN

    WITH i(4 DOWNTO 0) SELECT
    o(2 DOWNTO 0) <= B"000" WHEN B"00011",
    B"001" WHEN B"00101",
    B"010" WHEN B"01001",
    B"011" WHEN B"10001",
    B"100" WHEN B"00110",
    B"101" WHEN B"01010",
    B"110" WHEN B"10010",
    B"111" WHEN B"01100",
    NULL WHEN OTHERS ;

    ASSERT (vss = '0')
    REPORT "Power supply is missing on vss"
    SEVERITY ERROR;
    ASSERT (vdd = '1')
    REPORT "Power supply is missing on vdd"
    SEVERITY ERROR;

    END VBE;

    -----


  2. #2
    jiherve

    Re : Vhdl when others

    Bonsoir,
    où est le problème en VHDL une variable STD_LOGIC possède 9 valeurs possible '0','1', 'H',... ,'X','Z'.
    donc tu écris :
    (others => 'X') WHEN OTHERS ;
    ou bien
    (others => 'U') WHEN OTHERS ;
    ou encore
    (others => 'Z') WHEN OTHERS ;
    dans tous les cas attention il y a un hiatus entre simulation et synthése,
    dans la réalité vraie il n'y a que '0','1', 'Z'.
    la bonne solution c'est:
    (others => '0') WHEN OTHERS ;
    Avec 4 bits il y a 9^4 états possibles dont beaucoup n'ont pas vraiment (trop long à expliquer) de réalité physique c'est le rôle du WHEN OTHERS que de les intercepter de façon fiable, générer des sorties indéterminées est sans doute satisfaisante pour l'esprit, cela permet d'évaluer la robustesse(en simulation), mais conduit à une catastrophe industrielle.
    JR
    Dernière modification par jiherve ; 13/05/2009 à 20h50.
    l'électronique c'est pas du vaudou!

Sur le même thème :

Discussions similaires

  1. Point flottant en VHDL et vhdl-200x
    Par grel08128103 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 02/09/2008, 19h47
  2. vhdl
    Par meryemnahas dans le forum Électronique
    Réponses: 4
    Dernier message: 16/05/2008, 15h04
  3. vhdl
    Par electron78 dans le forum Électronique
    Réponses: 1
    Dernier message: 03/01/2008, 23h52
  4. vhdl
    Par pol5700 dans le forum Électronique
    Réponses: 117
    Dernier message: 29/03/2007, 23h29
  5. vhdl
    Par eagle_75 dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2007, 19h52