or like this :
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity cdma_testbipo is
generic (
longueur : natural :=4 );
port (
clk : in std_logic ;
rst : in std_logic ;
data: in std_logic ;
odata: out std_logic ;
isis :out integer range 0 to longueur-1 ;
CD :in std_logic_vector( (4*longueur)-1 downto 0) ;
S :out integer range -8 to 7 );
end entity ;
architecture beh of cdma_testbipo is
type RAM is array (0 to longueur-1) of integer range -8 to 7;
signal i :integer range 0 to longueur-1 ;
signal code : RAM;
signal idata :std_logic ;
begin
bpsk :process(clk,rst)
begin
F:for j in 0 to (4*longueur)-1 generate
begin
code(j)<=to_integer(signed(CD((4*longueur)-1 downto 3*longueur)));
code(j)<=to_integer(signed(CD((3*longueur)-1 downto 2*longueur))) ;
code(j)<=to_integer(signed(CD((2*longueur)-1 downto longueur )));
code(j)<=to_integer(signed(CD(longueur-1 downto 0))) ;
if(rst='1')then
i<= 0;
else
if(clk'event and clk='1')then
i<=i+1 ;
if(idata='0') then
s<=-code(i);
else
s<=code(i);
end if;
if(i=longueur-1) then
idata<=data;
end if;
end if ;
end if ;
end generate F ;
end process ;
isis<=i;
odata<=idata ;
end architecture ;