|
|
-- TOP_GSE.vhd
|
|
|
library IEEE;
|
|
|
use IEEE.std_logic_1164.all;
|
|
|
use IEEE.numeric_std.all;
|
|
|
library lpp;
|
|
|
use lpp.lpp_usb.all;
|
|
|
library techmap;
|
|
|
use techmap.gencomp.all;
|
|
|
|
|
|
entity TOP_EGSE2 is
|
|
|
generic(WordSize : integer := 8; WordCnt : integer := 144;MinFCount : integer := 64;Simu : integer :=0);
|
|
|
port(
|
|
|
Clock : in std_logic;
|
|
|
reset : in std_logic;
|
|
|
DataRTX : in std_logic;
|
|
|
DataRTX_echo : out std_logic;
|
|
|
SCLK : out std_logic;
|
|
|
Gate : out std_logic;
|
|
|
Major_Frame : out std_logic;
|
|
|
Minor_Frame : out std_logic;
|
|
|
if_clk : out STD_LOGIC;
|
|
|
flagb : in STD_LOGIC;
|
|
|
slwr : out STD_LOGIC;
|
|
|
slrd : out std_logic;
|
|
|
pktend : out STD_LOGIC;
|
|
|
sloe : out STD_LOGIC;
|
|
|
fdbusw : out std_logic_vector (7 downto 0);
|
|
|
fifoadr : out std_logic_vector (1 downto 0)
|
|
|
);
|
|
|
end TOP_EGSE2;
|
|
|
|
|
|
|
|
|
|
|
|
architecture ar_TOP_EGSE2 of TOP_EGSE2 is
|
|
|
|
|
|
component CLKINT
|
|
|
port( A : in std_logic := 'U';
|
|
|
Y : out std_logic
|
|
|
);
|
|
|
end component;
|
|
|
|
|
|
signal clk : std_logic;
|
|
|
signal sclkint : std_logic;
|
|
|
signal RaZ : std_logic;
|
|
|
signal rstn : std_logic;
|
|
|
signal WordCount : integer range 0 to WordCnt-1;
|
|
|
signal WordClk : std_logic;
|
|
|
signal MinFCnt : integer range 0 to MinFCount-1;
|
|
|
signal MinF : std_logic;
|
|
|
signal MinFclk : std_logic;
|
|
|
signal MajF : std_logic;
|
|
|
signal GateLF : std_logic;
|
|
|
signal GateHF : std_logic;
|
|
|
signal GateDC : std_logic;
|
|
|
signal Gateint : std_logic;
|
|
|
signal GateR : std_logic;
|
|
|
signal NwDat : std_logic;
|
|
|
signal DATA : std_logic_vector(WordSize-1 downto 0);
|
|
|
|
|
|
Signal FIFODATin : std_logic_vector(7 downto 0);
|
|
|
Signal FIFODATout : std_logic_vector(7 downto 0);
|
|
|
|
|
|
Signal USB_DATA : std_logic_vector(7 downto 0);
|
|
|
Signal FIFOwe,FIFOre,FIFOfull : std_logic;
|
|
|
Signal USBwe,USBfull,USBempty : std_logic;
|
|
|
|
|
|
Signal clk80 : std_logic;
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
|
DataRTX_echo <= DataRTX; --P48
|
|
|
|
|
|
ck_int0 : CLKINT
|
|
|
port map(Clock,clk);
|
|
|
|
|
|
DEFPLL: IF simu = 0 generate
|
|
|
PLL : entity work.PLL0
|
|
|
port map(
|
|
|
POWERDOWN => '1',
|
|
|
CLKA => clk,
|
|
|
LOCK => RaZ,
|
|
|
GLA => SCLKint,
|
|
|
GLB => clk80
|
|
|
);
|
|
|
end generate;
|
|
|
|
|
|
|
|
|
SIMPLL: IF simu = 1 generate
|
|
|
PLL : entity work.PLL0Sim
|
|
|
port map(
|
|
|
POWERDOWN => '1',
|
|
|
CLKA => clk,
|
|
|
LOCK => RaZ,
|
|
|
GLA => SCLKint,
|
|
|
GLB => clk80
|
|
|
);
|
|
|
end generate;
|
|
|
|
|
|
|
|
|
USB2: entity work.FX2_WithFIFO
|
|
|
generic map(apa3)
|
|
|
port map(
|
|
|
clk => clk,
|
|
|
if_clk => if_clk,
|
|
|
reset => rstn,
|
|
|
flagb => flagb,
|
|
|
slwr => slwr,
|
|
|
slrd => slrd,
|
|
|
pktend => pktend,
|
|
|
sloe => sloe,
|
|
|
fdbusw => fdbusw,
|
|
|
fifoadr => fifoadr,
|
|
|
FULL => USBfull,
|
|
|
Write => USBwe,
|
|
|
Data => USB_DATA
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
rstn <= reset and RaZ;
|
|
|
|
|
|
process(clk,rstn)
|
|
|
begin
|
|
|
if rstn = '0' then
|
|
|
USB_DATA <= (others => '0');
|
|
|
USBwe <= '0';
|
|
|
elsif clk'event and clk = '1' then
|
|
|
if USBfull = '0' then
|
|
|
USB_DATA <= std_logic_vector(unsigned(USB_DATA) + 1 );
|
|
|
USBwe <= '1';
|
|
|
else
|
|
|
USBwe <= '0';
|
|
|
end if;
|
|
|
end if;
|
|
|
end process;
|
|
|
|
|
|
end ar_TOP_EGSE2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|