# Autres langages > Autres langages > VHDL >  Dcalage d'un registre de 2^i

## electron22

Bonjour,
j'aimerais effectuer un dcalage d'un registre de 2^i en un cycle d'horloge, j'ai essay de crer un signal de n  I bits, puis le concatner avec un signal de I  n bits, j'ai un problme de syntaxe, merci de m'aider, voici mon code :



```

```

----------


## mith06

Bonjour,

Dcalage a droite de I bit en non sign (dans ton cas puisque dclar unsigned)



```
S   <= resize(A(A'high downto to_integer(I)),N_Bits);
```

Attention I peut prendre de trs grandes valeurs!!!

----------


## electron22

Je vous remercie, a fonctionne comme il faut,
juste que je n'ai pas compris les instructions utilises, pourriez vous m'expliquer un peu plus en dtail ce que fait X'high  et resize?
Merci

----------


## mith06

Bonjour,

X'high renvoie l'lement haut dans la dclaration des borne d'un tableau. Je crois que *'* fait rfrence  l'attribut d'un objet, dans notre cas un std_logic_vector.
std_logic_vector possde plusieurs attributs:

exemple : 

```
signal dummy : std_logic_vector(42 downto 0);
```

dummy'high renvoie 42
dummy'low  renvoie 0
dummy'length  renvoie 43
dummy'range  renvoie 42 downto 0

donc tu peux faire : signal dummy2 : std_logic_vector(dummy'range);-- a marche pour dclarer des signaux de mme taille.

resize permet de changer la taille signaux de type signed ou unsigned en faisant attention au signe.

exemple:
std_logic_vector(resize(unsigned("1000"),8)) renvoie "00001000" <=> 8
std_logic_vector(resize( signed("1000"),8)) renvoie "11111000" <=> -8
std_logic_vector(resize( signed("0111"),8)) renvoie "00000111" <=> 7

----------

