-- TOP_ICI3_INTEG1.vhd library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; --library igloo; --use igloo.all; use work.Convertisseur_config.all; entity TOP_ICI3_INTEG1 is Generic(WordSize : integer := 8; WordCnt : integer := 144;MinFCount : integer := 64); port( clk : in std_logic; reset : in std_logic; sclk : in std_logic; Gate : in std_logic; MinF : in std_logic; MajF : in std_logic; Data : out std_logic; DC_ADC_Sclk : out std_logic; DC_ADC_IN : in std_logic_vector(3 downto 0); DC_ADC_FORMAT : out std_logic_vector(2 downto 0); DC_ADC_Mode : out std_logic_vector(1 downto 0); DC_ADC_ClkDiv : out std_logic; DC_ADC_PWDOWN : out std_logic_vector(3 downto 0); DC_ADC_FSynch : out std_logic; DC_ADC_Synch : out std_logic; -- DATA_out_Test : out std_logic; -- Sclk_out_test : out std_logic; -- Synch_out_test : out std_logic; test : out std_logic; LF_ADC_Sclk : out std_logic; LF_ADC_IN : in std_logic_vector(3 downto 0); LF_ADC_FORMAT : out std_logic_vector(2 downto 0); LF_ADC_Mode : out std_logic_vector(1 downto 0); LF_ADC_ClkDiv : out std_logic; LF_ADC_PWDOWN : out std_logic_vector(3 downto 0); LF_ADC_FSynch : out std_logic; LF_ADC_Synch : out std_logic ); end entity; architecture ar_TOP_ICI3_INTEG1 of TOP_ICI3_INTEG1 is -- component CLKINT -- port( A : in std_logic := 'U'; -- Y : out std_logic -- ); -- end component; signal clk_buf,reset_buf : std_logic; Constant FramePlacerCount : integer := 2; signal MinF_Inv : std_logic; signal Gate_Inv : std_logic; signal sclk_Inv : std_logic; signal WordCount : integer range 0 to WordCnt-1; signal WordClk : std_logic; signal MuxOUT : std_logic_vector(WordSize-1 downto 0); signal MuxIN : std_logic_vector((2*WordSize)-1 downto 0); signal Sel : integer range 0 to 1; signal DC1 : std_logic_vector(23 downto 0); signal DC2 : std_logic_vector(23 downto 0); signal DC3 : std_logic_vector(23 downto 0); signal LF1 : std_logic_vector(15 downto 0); signal LF2 : std_logic_vector(15 downto 0); signal LF3 : std_logic_vector(15 downto 0); signal LF1_int : std_logic_vector(23 downto 0); signal LF2_int : std_logic_vector(23 downto 0); signal LF3_int : std_logic_vector(23 downto 0); --constant DC1cst : std_logic_vector(23 downto 0) := X"FA5961"; --constant DC2cst : std_logic_vector(23 downto 0) := X"123456"; --constant DC3cst : std_logic_vector(23 downto 0) := X"789012"; -- --constant LF1cst : std_logic_vector(15 downto 0) := X"3210"; --constant LF2cst : std_logic_vector(15 downto 0) := X"6543"; --constant LF3cst : std_logic_vector(15 downto 0) := X"3456"; -- signal DC_ADC_SmplClk : std_logic; signal LF_ADC_SmplClk : std_logic; signal MinFCnt : integer range 0 to MinFCount-1; signal FramePlacerFlags : std_logic_vector(FramePlacerCount-1 downto 0); begin --CLKINT0 : CLKINT -- port map(clk,clk_buf); -- --CLKINT1 : CLKINT -- port map(reset,reset_buf); clk_buf <= clk; reset_buf <= reset; -- --DATA_out_Test <= DC_ADC_IN(0); --Sclk_out_test <= DC_ADC_Sclk; --Synch_out_test <= DC_ADC_FSynch; Gate_Inv <= not Gate; sclk_Inv <= not Sclk; MinF_Inv <= not MinF; --DC1 <= DC1cst; --DC2 <= DC2cst; --DC3 <= DC3cst; --LF1 <= LF1cst; --LF2 <= LF2cst; --LF3 <= LF3cst; SD0 : entity work.Serial_Driver generic map(WordSize) port map(sclk_Inv,MuxOUT,Gate_inv,Data); WC0 : entity work.Word_Cntr generic map(WordSize,WordCnt) port map(sclk_Inv,MinF,WordClk,WordCount); MFC0 : entity work.MinF_Cntr generic map(MinFCount) port map( clk => MinF_Inv, reset => MajF, Cnt_out => MinFCnt ); MUX0 : entity work.Serial_Driver_Multiplexor generic map(FramePlacerCount,WordSize) port map(sclk_Inv,Sel,MuxIN,MuxOUT); DCFP0 : entity work.DC_FRAME_PLACER generic map(WordSize,WordCnt,MinFCount) port map( clk => Sclk, Wcount => WordCount, MinFCnt => MinFCnt, Flag => FramePlacerFlags(0), DC1 => DC1, DC2 => DC2, DC3 => DC3, WordOut => MuxIN(7 downto 0)); LFP0 : entity work.LF_FRAME_PLACER generic map(WordSize,WordCnt,MinFCount) port map( clk => Sclk, Wcount => WordCount, Flag => FramePlacerFlags(1), LF1 => LF1, LF2 => LF2, LF3 => LF3, WordOut => MuxIN(15 downto 8)); DC_SMPL_CLK0 : entity work.DC_SMPL_CLK port map(MinF_Inv,DC_ADC_SmplClk); DC_ADC_Synch <= reset; LF_ADC_Synch <= reset; DC_ADC0 : entity work.ADS1274_DRIVER --With AMR down ! => 24bits DC TM -> SC high res on Spin generic map(MODE_low_power,FSYNC_FORMAT) port map( Clk => clk_buf, reset => reset_buf, SpiClk => DC_ADC_Sclk, DIN => DC_ADC_IN, Ready => '0', Format => DC_ADC_Format, Mode => DC_ADC_Mode, ClkDiv => DC_ADC_ClkDiv, PWDOWN => DC_ADC_PWDOWN, SmplClk => DC_ADC_SmplClk, OUT0 => DC1, OUT1 => DC2, OUT2 => DC3, OUT3 => open, FSynch => DC_ADC_FSynch, test => test ); LF_SMPL_CLK0 : entity work.LF_SMPL_CLK port map( Wclck => WordClk, MinF => MinF, SMPL_CLK => LF_ADC_SmplClk ); LF_ADC0 : entity work.ADS1274_DRIVER generic map(MODE_low_power,FSYNC_FORMAT) port map( Clk => clk_buf, reset => reset_buf, SpiClk => LF_ADC_Sclk, DIN => LF_ADC_IN, Ready => '0', Format => LF_ADC_Format, Mode => LF_ADC_Mode, ClkDiv => LF_ADC_ClkDiv, PWDOWN => LF_ADC_PWDOWN, SmplClk => LF_ADC_SmplClk, OUT0 => LF1_int, OUT1 => LF2_int, OUT2 => LF3_int, OUT3 => open, FSynch => LF_ADC_FSynch ); LF1 <= LF1_int(23 downto 8); LF2 <= LF2_int(23 downto 8); LF3 <= LF3_int(23 downto 8); -- --DC1 <= LF1_int(23 downto 0); --DC2 <= LF2_int(23 downto 0); --DC3 <= LF3_int(23 downto 0); --Input Word Selection Decoder process(clk) variable SelVar : integer range 0 to 1; begin if clk'event and clk ='1' then Decoder: FOR i IN 0 to FramePlacerCount-1 loop if FramePlacerFlags(i) = '1' then SelVar := i; end if; END loop Decoder; Sel <= SelVar; end if; end process; end ar_TOP_ICI3_INTEG1;