Décalage d'un registre de 2^i
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Décalage d'un registre de 2^i



  1. #1
    electron22

    Décalage d'un registre de 2^i


    ------

    Bonjour,
    j'aimerais effectuer un décalage d'un registre de 2^i en un cycle d'horloge, j'ai essayé de créer un signal de n à I bits, puis le concaténer avec un signal de I à n bits, j'ai un problème de syntaxe, merci de m'aider, voici mon code :

    Code HTML:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_arith.all; 
    use ieee.std_logic_unsigned.all;
    
    entity div_2i is
    	generic(N_Bits : INTEGER := 32); 
    	port(A : in UNSIGNED((N_Bits - 1) downto 0);
    		  I : in UNSIGNED((N_Bits - 1) downto 0);
    		  S : out UNSIGNED((N_Bits - 1) downto 0));
    end div_2i;
    
    architecture arch_div_2i of div_2i is
    signal S1 : UNSIGNED((N_Bits - 1) downto 0);
    begin
    		S <= (I downto 0, '0') & S1(N_Bits downto I);
    end arch_div_2i;

    -----

  2. #2
    jiherve

    Re : Décalage d'un registre de 2^i

    Bonsoir,
    Que veux tu faire?
    décaler de i positions (avec 32 bits il y a 32 possibilités) ou de 2^i ( là c'est 4giga au max ce qui n'est pas raisonnable)?
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    electron22

    Re : Décalage d'un registre de 2^i

    En fait j'ai une équation à calculer dans une boucle : X= X + Y/(2^i)
    j'aimerais effectuer cette division Y/(2^i), mais il y a un souci de syntaxe puisque je n'ai pas l'habitude d'utiliser le langage VHDL...

  4. #4
    jiherve

    Re : Décalage d'un registre de 2^i

    Re
    donc si Y est de la forme std_logic_vector((N_Bits - 1) downto 0) alors Y/2^i = (sgn((N_Bits - 1) downto (N_Bits - 1-i) & Y((N_Bits - 2) downto i);
    avec sgn(c'est pour l'extension de signe) : std_logic_vector((N_Bits - 1) downto 0) := (others => Y((N_Bits - 1));
    JR
    l'électronique c'est pas du vaudou!

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

    Re : Décalage d'un registre de 2^i

    Je vous remercie, mais je n'ai pas compris la syntaxe, pourriez vous me donner un exemple plus détaillé,
    De plus je n'arrive pas à compiler le code chez moi car il y a un problème de conversion de variable...
    Je ne sais pas quand on utilise unsigned et quand on utilise des std_logic_vector, il y a souvent des soucis de conversion et de beug lors e l'utilisation des bibliothèques de ces types de variables..

    Code HTML:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_arith.all; 
    use ieee.std_logic_unsigned.all;
    
    entity div_2i is
    	generic(N_Bits : INTEGER := 32); 
    	port(A : in std_logic_vector((N_Bits - 1) downto 0);
    		  I : in unsigned((N_Bits - 1) downto 0);
    		  S : out std_logic_vector((N_Bits - 1) downto 0));
    end div_2i;
    
    architecture arch_div_2i of div_2i is
    signal sgn : std_logic_vector((N_Bits - 1) downto 0) := (others => A((N_Bits - 1)));
    begin
    S<= sgn((N_Bits - 1) downto (N_Bits - 1-i)) & A((N_Bits - 2) downto i);
    end arch_div_2i;

  7. #6
    vincent66

    Re : Décalage d'un registre de 2^i

    Bonsoir,
    Pour ceci il y a le "barrell shifter" présent dans tout bon dsp...
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  8. #7
    electron22

    Re : Décalage d'un registre de 2^i

    Bonjour, merci, je programme un FPGA en VHDL, je ne sais pas s'il y en a aussi..

  9. #8
    jiherve

    Re : Décalage d'un registre de 2^i

    Bonsoir,
    Code:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_arith.all; 
    use ieee.std_logic_unsigned.all;
    
    entity div_2i is
    	generic(N_Bits : INTEGER := 32); 
    	port(A : in std_logic_vector((N_Bits - 1) downto 0);
    		  I : in integer;
    		  S : out std_logic_vector((N_Bits - 1) downto 0));
    end div_2i;
    
    architecture arch_div_2i of div_2i is
    signal sgn : std_logic_vector((N_Bits - 1) downto 0) := (others => A((N_Bits - 1)));
    begin
    S<= sgn((N_Bits - 1) downto (N_Bits - 1-i)) & A((N_Bits - 2) downto i);
    end arch_div_2i;
    çà cela compile!
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. registre de décalage
    Par invite55fae67a dans le forum Physique
    Réponses: 3
    Dernier message: 20/12/2010, 21h37
  2. Registre à décalage
    Par invite2ceddf9e dans le forum Électronique
    Réponses: 14
    Dernier message: 09/04/2010, 07h15
  3. Registre à décalage
    Par invite1a530f8d dans le forum Électronique
    Réponses: 6
    Dernier message: 26/06/2009, 10h50
  4. explications registre à décalage
    Par invitec1b15763 dans le forum Électronique
    Réponses: 1
    Dernier message: 11/06/2009, 11h44
  5. registre à décalage
    Par invite74efa975 dans le forum Électronique
    Réponses: 3
    Dernier message: 30/05/2009, 17h54
Découvrez nos comparatifs produits sur l'informatique et les technologies.