|
|
----------------------------------------------------------------------------------
|
|
|
-- Company:
|
|
|
-- Engineer:
|
|
|
--
|
|
|
-- Create Date: 10:03:54 08/21/2013
|
|
|
-- Design Name:
|
|
|
-- Module Name: TM_MODULE - AR_TM_MODULE
|
|
|
-- Project Name:
|
|
|
-- Target Devices:
|
|
|
-- Tool versions:
|
|
|
-- Description:
|
|
|
--
|
|
|
-- Dependencies:
|
|
|
--
|
|
|
-- Revision:
|
|
|
-- Revision 0.01 - File Created
|
|
|
-- Additional Comments:
|
|
|
--
|
|
|
----------------------------------------------------------------------------------
|
|
|
library IEEE;
|
|
|
use IEEE.STD_LOGIC_1164.ALL;
|
|
|
library lpp;
|
|
|
use lpp.lpp_ad_conv.all;
|
|
|
use lpp.lpp_amba.all;
|
|
|
use lpp.apb_devices_list.all;
|
|
|
use lpp.general_purpose.all;
|
|
|
use lpp.Rocket_PCM_Encoder.all;
|
|
|
|
|
|
entity TM_MODULE is
|
|
|
generic(
|
|
|
WordSize : integer := 8; WordCnt : integer := 144;MinFCount : integer := 64
|
|
|
);
|
|
|
port(
|
|
|
|
|
|
reset : in std_logic;
|
|
|
clk : in std_logic;
|
|
|
MinF : in std_logic;
|
|
|
MajF : in std_logic;
|
|
|
sclk : in std_logic;
|
|
|
gate : in std_logic;
|
|
|
data : out std_logic;
|
|
|
WordClk : out std_logic;
|
|
|
|
|
|
|
|
|
LF1 : in std_logic_vector(15 downto 0);
|
|
|
LF2 : in std_logic_vector(15 downto 0);
|
|
|
LF3 : in std_logic_vector(15 downto 0);
|
|
|
|
|
|
AMR1X : in std_logic_vector(23 downto 0);
|
|
|
AMR1Y : in std_logic_vector(23 downto 0);
|
|
|
AMR1Z : in std_logic_vector(23 downto 0);
|
|
|
|
|
|
AMR2X : in std_logic_vector(23 downto 0);
|
|
|
AMR2Y : in std_logic_vector(23 downto 0);
|
|
|
AMR2Z : in std_logic_vector(23 downto 0);
|
|
|
|
|
|
AMR3X : in std_logic_vector(23 downto 0);
|
|
|
AMR3Y : in std_logic_vector(23 downto 0);
|
|
|
AMR3Z : in std_logic_vector(23 downto 0);
|
|
|
|
|
|
AMR4X : in std_logic_vector(23 downto 0);
|
|
|
AMR4Y : in std_logic_vector(23 downto 0);
|
|
|
AMR4Z : in std_logic_vector(23 downto 0);
|
|
|
|
|
|
Temp1 : in std_logic_vector(23 downto 0);
|
|
|
Temp2 : in std_logic_vector(23 downto 0);
|
|
|
Temp3 : in std_logic_vector(23 downto 0);
|
|
|
Temp4 : in std_logic_vector(23 downto 0)
|
|
|
);
|
|
|
end TM_MODULE;
|
|
|
|
|
|
architecture AR_TM_MODULE of TM_MODULE is
|
|
|
|
|
|
Constant FramePlacerCount : integer := 2;
|
|
|
signal MinFCnt : integer range 0 to MinFCount-1;
|
|
|
signal FramePlacerFlags : std_logic_vector(FramePlacerCount-1 downto 0);
|
|
|
|
|
|
signal WordCount : integer range 0 to WordCnt-1;
|
|
|
|
|
|
signal data_int : 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 MinF_Inv : std_logic;
|
|
|
signal Gate_Inv : std_logic;
|
|
|
signal sclk_Inv : std_logic;
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
|
Gate_Inv <= not Gate;
|
|
|
sclk_Inv <= not Sclk;
|
|
|
MinF_Inv <= not MinF;
|
|
|
data <= data_int;
|
|
|
|
|
|
SD0 : Serial_Driver
|
|
|
generic map(WordSize)
|
|
|
port map(sclk_Inv,MuxOUT,Gate_inv,data_int);
|
|
|
|
|
|
WC0 : Word_Cntr
|
|
|
generic map(WordSize,WordCnt)
|
|
|
port map(sclk_Inv,MinF,WordClk,WordCount);
|
|
|
|
|
|
MFC0 : MinF_Cntr
|
|
|
generic map(MinFCount)
|
|
|
port map(
|
|
|
clk => MinF_Inv,
|
|
|
reset => MajF,
|
|
|
Cnt_out => MinFCnt
|
|
|
);
|
|
|
|
|
|
|
|
|
MUX0 : 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),
|
|
|
AMR1X => AMR1X,
|
|
|
AMR1Y => AMR1Y,
|
|
|
AMR1Z => AMR1Z,
|
|
|
AMR2X => AMR2X,
|
|
|
AMR2Y => AMR2Y,
|
|
|
AMR2Z => AMR2Z,
|
|
|
AMR3X => AMR3X,
|
|
|
AMR3Y => AMR3Y,
|
|
|
AMR3Z => AMR3Z,
|
|
|
AMR4X => AMR4X,
|
|
|
AMR4Y => AMR4Y,
|
|
|
AMR4Z => AMR4Z,
|
|
|
Temp1 => Temp1,
|
|
|
Temp2 => Temp2,
|
|
|
Temp3 => Temp3,
|
|
|
Temp4 => Temp4,
|
|
|
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));
|
|
|
|
|
|
|
|
|
|
|
|
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_TM_MODULE;
|
|
|
|
|
|
|