VHDL : Multiplication d'un vecteur par une constante.
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

VHDL : Multiplication d'un vecteur par une constante.



  1. #1
    Rdoume

    VHDL : Multiplication d'un vecteur par une constante.


    ------

    Bonjour,

    Pour un projet, je cherche à multiplier un vecteur n
    n : std_logic_vector (6 downto 0) par le chiffre 3.

    En fait, la valeur de mon résultat doit être réutiliser pour la définition d'un autre vecteur.
    Je m'explique : J'ai un vecteur data, défini par data( 3n+2 downto 3n)

    J'ai tenté de faire data( 3*unsigned(n) +2 down to 3*unsigned(n) )
    Et bien sur le résultat n'est pas concluant, j'obtient l'erreur suivante

    " Range declaration does not match type definition ".

    Après avoir cherché à gauche à droite un moyen de résoudre mon problème, je n'ai pas réussi à trouvé, d'où ma question.

    Merci d'avance.

    -----

  2. #2
    jiherve

    Re : VHDL : Multiplication d'un vecteur par une constante.

    bonjour,
    que veux tu faire exactement ?
    multiplier la valeur de ton vecteur ou modifier sa taille.
    à titre anecdotique un std_logic_vector (3n+2 downto 3n) est de taille 3.
    le produit en valeur d'un std_logic_vector (6 downto 0) par 3 est de taille : 7+2 = 9!
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    Rdoume

    Re : VHDL : Multiplication d'un vecteur par une constante.

    la taille de 3 est volontaire.
    En fait, mon signal data est un signal sur 180 bits.

    Au fur à mesure de ma machine d'état , mon vecteur n va s'incrémenter.
    Et à chaque incrémentation de n, j'ai un mon vecteur tmp(2 down to 0) qui doit prendre la valeur de data(3n+2 downto 3n )
    ( En gros, je me ballade sur mon gros vecteur et récupère ses valeurs 3 par 3 ).
    Je sais pas si j'ai été très clair?

  4. #4
    jiherve

    Re : VHDL : Multiplication d'un vecteur par une constante.

    Re
    si c'est pour çà tu écris bêtement :
    tmp <= big_vec((3*to_integer(unsigned (n)))+2 downto 3*to_integer(unsigned(n)));
    pour éviter le coté verbeux crée une variable "ni" de type integer range 0 to 59 et écris:
    ni := to_integer(unsigned(n));
    tmp <= big_vec((3*ni)+2 downto 3*ni);
    cela fait deux lignes mais c'est plus lisible.
    JR
    l'électronique c'est pas du vaudou!

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Matlab - Multiplier un vecteur par une constante
    Par james_83 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 15/03/2010, 14h44
  2. Multiplication d'un vecteur et d'un produit scalaire
    Par invitef4e2e58e dans le forum Mathématiques du collège et du lycée
    Réponses: 9
    Dernier message: 12/02/2010, 00h28
  3. Produit d'un vecteur par une matrice
    Par neutrino éléctronique dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 23/06/2007, 16h32
  4. multiplication de vecteur par une matrice
    Par invite263e1345 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 12/04/2007, 09h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.