Professional Documents
Culture Documents
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use ieee.std_logic_misc.all;
use work.MultiPhase_PKG.all;
library UNISIM;
use UNISIM.VComponents.all;
entity MFPGA_DataManagerV1 is
port
(
clk : in std_logic;
RAMclk : in std_logic;
sync : in std_logic;
reset : in std_logic;
-- RX from fifo
-- M1
M1DATAF : IN STD_LOGIC;
M1DATA : IN STD_LOGIC_VECTOR( COMM_DATA_WIDTH - 1
M1DATAOK : OUT STD_LOGIC;
--M2
M2DATAF : IN STD_LOGIC;
M2DATA : IN STD_LOGIC_VECTOR( COMM_DATA_WIDTH - 1
M2DATAOK : OUT STD_LOGIC;
--M3
M3DATAF : IN STD_LOGIC;
M3DATA : IN STD_LOGIC_VECTOR( COMM_DATA_WIDTH - 1
M3DATAOK : OUT STD_LOGIC;
--M4
M4DATAF : IN STD_LOGIC;
M4DATA : IN STD_LOGIC_VECTOR( COMM_DATA_WIDTH - 1
M4DATAOK : OUT STD_LOGIC;
--M5
M5DATAF : IN STD_LOGIC;
M5DATA : IN STD_LOGIC_VECTOR( COMM_DATA_WIDTH - 1
M5DATAOK : OUT STD_LOGIC;
--M6
M6DATAF : IN STD_LOGIC;
M6DATA : IN STD_LOGIC_VECTOR( COMM_DATA_WIDTH - 1
M6DATAOK : OUT STD_LOGIC;
-- MxTEMP from SFPGA
SFPGA_DATA_F : IN STD_LOGIC;
SFPGA_DATA : IN STD_LOGIC_VECTOR( COMM_DATA_WIDTH
SFPGA_DATA_OK : OUT STD_LOGIC;
DOWNTO 0);
DOWNTO 0);
DOWNTO 0);
DOWNTO 0);
DOWNTO 0);
DOWNTO 0);
- 1 DOWNTO 0);
M3ENABLE
M4ENABLE
M5ENABLE
M6ENABLE
DATAR01
DATAR02
DATAR03
DATAR04
DATAR05
DATAR06
DATAR07
DATAR08
DATAR09
DATAR10
DATAR11
DATAR12
DATAR13
DATAR14
DATAR15
DATAR16
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
STD_LOGIC_VECTOR(
T1 : out std_logic
);
end MFPGA_DataManagerV1;
architecture RTL of MFPGA_DataManagerV1 is
COMPONENT FIFOHandlerBRAM
GENERIC
(
DATA_WIDTH : positive := 21;
FIFO_LENGTH : positive := 32
);
PORT(
clk : IN std_logic;
rst : IN std_logic;
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
23
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
0);
WRFifoREQ : IN std_logic;
DataIN : IN std_logic_vector(20 downto 0);
RDFifoOK : IN std_logic;
WRFifoOK : OUT std_logic;
RDFifoREQ : OUT std_logic;
DataOUT : OUT std_logic_vector(20 downto 0)
);
END COMPONENT;
ADDR01_1,ADDR01_2
ADDR02_1,ADDR02_2
ADDR03_1,ADDR03_2
ADDR04_1,ADDR04_2
ADDR05_1,ADDR05_2
ADDR06_1,ADDR06_2
ADDR07_1,ADDR07_2
ADDR08_1,ADDR08_2
ADDR09_1,ADDR09_2
ADDR10_1,ADDR10_2
ADDR11_1,ADDR11_2
ADDR12_1,ADDR12_2
ADDR13_1,ADDR13_2
ADDR14_1,ADDR14_2
ADDR15_1,ADDR15_2
ADDR16_1,ADDR16_2
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
std_logic_vector(13
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
(OTHERS
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
signal
signal
signal
signal
signal
-- Mech1
if (Mech1F = '1') then
tempPOS1 <= std_logic_vector(to_unsigned(POSITIONS(0), ADDR_WIDTH
+1)) & POS1DATA;
tempPOS1F <= '1';
tempVEL1 <= std_logic_vector(to_unsigned(VELOCITY(0), ADDR_WIDTH+
1)) & VEL1DATA;
tempVEL1F <= '1';
end if;
-- Mech2
if (Mech2F = '1') then
tempPOS2 <= std_logic_vector(to_unsigned(POSITIONS(1), ADDR_WIDTH
+1)) & POS2DATA;
tempPOS2F <= '1';
tempVEL2 <= std_logic_vector(to_unsigned
(VELOCITY(1), ADDR_WIDTH+1)) & VEL2DATA;
tempVEL2F <= '1';
end if;
case (RDSTATE) is
-- IDLE
when "0000" =>
M1DATAOK
M2DATAOK
M3DATAOK
M4DATAOK
M5DATAOK
M6DATAOK
<=
<=
<=
<=
<=
<=
'0';
'0';
'0';
'0';
'0';
'0';
'1';
= '1') then
'0';
RDSTATE <= "0000";
'0';
end if;
else
WRFifoREQ <= '0';
end if;
if (WRFifoOK = '1') then
RDSTATE <= "0000"; -- go direct to idle
FIFOReqS <= '0';
tempVEL2F <= '0';
end if;
-- STATUS
when "1100" =>
NULL;
when "1111" => RDSTATE <= "0000";
M1DATAOK <= '0';
M2DATAOK <= '0';
M3DATAOK <= '0';
M4DATAOK <= '0';
M5DATAOK <= '0';
M6DATAOK <= '0';
SFPGA_DATA_OK <= '0';
when OTHERS => RDSTATE <= "0000";
M1DATAOK <= '0';
M2DATAOK <= '0';
M3DATAOK <= '0';
M4DATAOK <= '0';
M5DATAOK <= '0';
M6DATAOK <= '0';
SFPGA_DATA_OK <= '0';
end case;
else
FIFOReqS <= '0';
WRFifoREQ <= '0';
DataIN <= (OTHERS => '0');
M1DATAOK <= '0';
M2DATAOK <= '0';
M3DATAOK <= '0';
M4DATAOK <= '0';
M5DATAOK <= '0';
M6DATAOK <= '0';
SFPGA_DATA_OK <= '0';
tempPOS1F <= '0';
tempPOS1 <= (OTHERS => '0');
tempPOS2F <= '0';
tempPOS2 <= (OTHERS => '0');
tempVEL1F <= '0';
tempVEL1 <= (OTHERS => '0');
tempVEL2F <= '0';
tempVEL2 <= (OTHERS => '0');
end if;
end if;
end process;
FifoBRAM: FIFOHandlerBRAM
GENERIC MAP (21, 32)
PORT MAP(
clk => clk,
rst => reset,
WRFifoREQ => WRFifoREQ,
WRFifoOK => WRFifoOK,
DataIN => DataIN,
RDFifoOK => RDFifoOK,
RDFifoREQ => RDFifoREQ,
DataOUT => DataOUT
);
T1 <= RDFifoREQ;
RDFifoBRAM_WRBRAM : process(clk, reset)
begin
if (rising_edge(clk)) then
if (reset = '0') then
-S <= '0';
if (BRAMWRstate = '1') then
BRAMWRstate <= '0';
RDFifoOK <= '0';
ENA <= '1';
else
ENA <= '0';
end if;
-& "0000";
--------------
when 1 =>
when 2 =>
when 3 =>
-------------------------------------------------------------
when 4 =>
when 5 =>
when 6 =>
when 7 =>
when 8 =>
+ 1;
+ 1;
+ 1;
+ 1;
DOB(11 downto 0);
when 9 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 10 => BRAMRDcnt <= BRAMRDcnt + 1;
when 11 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 12 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA12(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR12_2;
when 13 =>
when 17 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 18 => BRAMRDcnt <= BRAMRDcnt + 1;
when 19 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 20 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA13(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR13_2;
when 21 =>
when 25 =>
ENB <= '1';
-------------------------------------------------------------
when 33 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 34 => BRAMRDcnt <= BRAMRDcnt + 1;
when 35 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 36 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA15(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR15_2;
when 37 =>
when 41 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 42 => BRAMRDcnt <= BRAMRDcnt + 1;
when 43 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 44 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA16(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR16_2;
when 45 =>
-------------------------------------------------------------
when 3 =>
when 4 =>
when 5 =>
when 6 =>
when 7 =>
when 8 =>
+ 1;
+ 1;
+ 1;
+ 1;
DOB(11 downto 0);
when 9 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 10 => BRAMRDcnt <= BRAMRDcnt + 1;
when 11 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 12 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA02(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR02_2;
when 13 =>
when 17 =>
ENB <= '1';
-------------------------------------------------------------
when 21 =>
when 25 =>
when 26 =>
when 27 =>
when 28 =>
when 29 =>
when 33 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 34 => BRAMRDcnt <= BRAMRDcnt + 1;
when 35 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 36 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA05(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR05_2;
when 37 =>
-------------------------------------------------------------
when 41 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 42 => BRAMRDcnt <= BRAMRDcnt + 1;
when 43 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 44 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA06(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR06_2;
when 45 =>
when 49 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 50 => BRAMRDcnt <= BRAMRDcnt + 1;
when 51 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 52 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA07(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR07_2;
when 53 =>
when 57 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 58 => BRAMRDcnt <= BRAMRDcnt + 1;
when 59 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 60 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA08(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR08_2;
when 61 =>
---------------------------------------------------
--
when 65 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 66 => BRAMRDcnt <= BRAMRDcnt + 1;
when 67 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 68 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA09(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR09_2;
when 69 =>
when 73 =>
ENB <= '1';
BRAMRDcnt <= BRAMRDcnt + 1;
when 74 => BRAMRDcnt <= BRAMRDcnt + 1;
when 75 => ENB <= '0';
BRAMRDcnt <= BRAMRDcnt + 1;
when 76 => BRAMRDcnt <= BRAMRDcnt + 1;
DATA10(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR10_2;
when 77 =>
when 4 =>
DATA11(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR11_2;
when 5 =>
when 6 =>
when 7 =>
when 8 =>
DATA11(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR12_1;
when 9 =>
ENB <= '1';
when 10 =>
when 11 =>
when 12 =>
DATA12(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR12_2;
when 13 =>
when 14 =>
when 15 =>
when 16 =>
DATA12(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR13_1;
when 17 =>
ENB <= '1';
when 18 =>
when 19 =>
when 20 =>
DATA13(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR13_2;
when 21 =>
when 22 =>
when 23 =>
when 24 =>
DATA13(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR14_1;
when 25 =>
ENB <= '1';
when 26 =>
when 27 =>
when 28 =>
DATA14(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR14_2;
when 29 => ENB <= '1';
when 30 =>
when 31 =>
when 32 =>
DATA14(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR15_1;
when 33 =>
ENB <= '1';
when 34 =>
when 35 =>
when 36 =>
DATA15(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR15_2;
when 37 =>
when 38 =>
when 39 =>
when 40 =>
DATA15(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR16_1;
when 41 =>
ENB <= '1';
when 42 =>
when 43 =>
when 44 =>
DATA16(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR16_2;
when 45 =>
when 46 =>
when 47 =>
when 48 =>
when 4 =>
DATA01(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR01_2;
when 5 =>
when 6 =>
when 7 =>
when 8 =>
DATA01(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR02_1;
when 9 =>
ENB <= '1';
when 10 =>
when 11 =>
when 12 =>
DATA02(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR02_2;
when 13 =>
when 14 =>
when 15 =>
when 16 =>
DATA02(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR03_1;
when 17 =>
ENB <= '1';
when 18 =>
when 19 =>
when 20 =>
DATA03(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR03_2;
when 21 =>
when 22 =>
when 23 =>
when 24 =>
DATA03(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR04_1;
when 25 =>
ENB <= '1';
when 26 =>
when 27 =>
when 28 =>
DATA04(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR04_2;
when 29 => ENB <= '1';
when 30 =>
when 31 =>
when 32 =>
DATA04(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR05_1;
when 33 =>
ENB <= '1';
when 34 =>
when 35 =>
when 36 =>
DATA05(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR05_2;
when 37 =>
when 38 =>
when 39 =>
when 40 =>
DATA05(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR06_1;
when 41 =>
ENB <= '1';
when 42 =>
when 43 =>
when 44 =>
DATA06(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR06_2;
when 45 =>
when 46 =>
when 47 =>
when 48 =>
DATA06(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR07_1;
when 49 =>
ENB <= '1';
when 50 =>
when 51 =>
when 52 =>
DATA07(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR07_2;
when 53 =>
when 54 =>
when 55 =>
when 56 =>
DATA07(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR08_1;
when 57 =>
ENB <= '1';
when 58 =>
when 59 =>
when 60 =>
DATA08(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR08_2;
when 61 =>
when 62 =>
when 63 =>
when 64 =>
DATA08(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR09_1;
when 65 =>
ENB <= '1';
when 66 =>
when 67 =>
when 68 =>
DATA09(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR09_2;
when 69 =>
when 70 =>
when 71 =>
when 72 =>
DATA09(11 downto 0) <= DOB(11 downto 0);
ADDRB <= ADDR10_1;
when 73 =>
ENB <= '1';
when 74 =>
when 75 =>
when 76 =>
DATA10(23 downto 12)<= DOB(11 downto 0);
ADDRB <= ADDR10_2;
when 77 =>
when 78 =>
when 79 =>
when 80 =>
DATA10(11 downto 0) <= DOB(11 downto 0);
when 81 => BRAMRDcnt <= 0;
BRAMRDstate <= '0';
RDF <= '1';
STARTTRANSMISSION <= '1';
when OTHERS => NULL;
end case;
BRAMRDcnt <= BRAMRDcnt + 1;
end if;
else
RDF <= '0';
BRAMRDstate <= '0';
BRAMRDcnt <= 0;
BRAMRDcntT <= 0;
RDREQDATA <= '0';
DATA01 <= (OTHERS
DATA02 <= (OTHERS
DATA03 <= (OTHERS
DATA04 <= (OTHERS
DATA05 <= (OTHERS
DATA06 <= (OTHERS
DATA07 <= (OTHERS
DATA08 <= (OTHERS
DATA09 <= (OTHERS
DATA10 <= (OTHERS
DATA11 <= (OTHERS
DATA12 <= (OTHERS
DATA13 <= (OTHERS
DATA14 <= (OTHERS
DATA15 <= (OTHERS
DATA16 <= (OTHERS
STARTTRANSMISSION
end if;
end if;
end process;
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
<=
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0');
'0';
RAMB16BWER_inst : RAMB16BWER
generic map (
-- DATA_WIDTH_A/DATA_WIDTH_B: 0, 1, 2, 4, 9, 18, or 36
DATA_WIDTH_A => 18,
DATA_WIDTH_B => 18,
-- DOA_REG/DOB_REG: Optional output register (0 or 1)
DOA_REG => 0,
DOB_REG => 1,
-- EN_RSTRAM_A/EN_RSTRAM_B: Enable/disable RST
EN_RSTRAM_A => TRUE,
EN_RSTRAM_B => TRUE,
-- INITP_00 to INITP_07: Initial memory contents.
INITP_00 => X"000000000000000000000000000000000000000000000000000000000000
0000",
INITP_01 => X"000000000000000000000000000000000000000000000000000000000000
0000",
INITP_02 => X"000000000000000000000000000000000000000000000000000000000000
0000",
INITP_03 => X"000000000000000000000000000000000000000000000000000000000000
0000",
INITP_04 => X"000000000000000000000000000000000000000000000000000000000000
0000",
INITP_05 => X"000000000000000000000000000000000000000000000000000000000000
0000",
000",
INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000
000",
INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000
000",
-- INIT_A/INIT_B: Initial values on output port
INIT_A => X"000000000",
INIT_B => X"000000000",
-- INIT_FILE: Optional file used to specify initial RAM contents
INIT_FILE => "NONE",
-- RSTTYPE: "SYNC" or "ASYNC"
RSTTYPE => "SYNC",
-- RST_PRIORITY_A/RST_PRIORITY_B: "CE" or "SR"
RST_PRIORITY_A => "CE",
RST_PRIORITY_B => "CE",
-- SIM_COLLISION_CHECK: Collision check enable "ALL", "WARNING_ONLY", "GEN
ERATE_X_ONLY" or "NONE"
SIM_COLLISION_CHECK => "ALL",
-- SIM_DEVICE: Must be set to "SPARTAN6" for proper simulation behavior
SIM_DEVICE => "SPARTAN6",
-- SRVAL_A/SRVAL_B: Set/Reset value for RAM output
SRVAL_A => X"000000000",
SRVAL_B => X"000000000",
-- WRITE_MODE_A/WRITE_MODE_B: "WRITE_FIRST", "READ_FIRST", or "NO_CHANGE"
WRITE_MODE_A => "WRITE_FIRST",
WRITE_MODE_B => "READ_FIRST"
)
port map (
-- Port A Data: 32-bit (each) output: Port A data
DOA => OPEN,
-- 32-bit output: A port data output
DOPA => OPEN,
-- 4-bit output: A port parity output
-- Port B Data: 32-bit (each) output: Port B data
DOB => DOB,
-- 32-bit output: B port data output
DOPB => OPEN,
-- 4-bit output: B port parity output
-- Port A Address/Control Signals: 14-bit (each) input: Port A address and
control signals
ADDRA => ADDRA, -- 14-bit input: A port address input
CLKA => clk,
-- 1-bit input: A port clock input
ENA => ENA,
-- 1-bit input: A port enable input -- always enabled
REGCEA => '0', -- 1-bit input: A port register clock enable input
RSTA => '0',
-- 1-bit input: A port register set/reset input
WEA => "1111",
-- 4-bit input: Port A byte-wide write enable input -always write
-- Port A Data: 32-bit (each) input: Port A data
DIA => DIA,
-- 32-bit input: A port data input
DIPA => "0000",
-- 4-bit input: A port parity input
-- Port B Address/Control Signals: 14-bit (each) input: Port B address and
control signals
ADDRB => ADDRB, -- 14-bit input: B port address input
CLKB => clk,
-- 1-bit input: B port clock input
ENB => ENB,
-- 1-bit input: B port enable input
REGCEB => '1', -- 1-bit input: B port register clock enable input
end RTL;