OpenCores
URL https://opencores.org/ocsvn/altor32/altor32/trunk

Subversion Repositories altor32

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 9 to Rev 10
    Reverse comparison

Rev 9 → Rev 10

/altor32/trunk/fpga/papilio_xc3s250e/ClockDCM.vhd
0,0 → 1,96
--------------------------------------------------------------------------------
-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved.
--------------------------------------------------------------------------------
-- ____ ____
-- / /\/ /
-- /___/ \ / Vendor: Xilinx
-- \ \ \/ Version : 13.1
-- \ \ Application : xaw2vhdl
-- / / Filename : ClockDCM.vhd
-- /___/ /\ Timestamp : 09/17/2011 00:07:38
-- \ \ / \
-- \___\/\___\
--
--Command: xaw2vhdl-st D:\vhdl\mwips\fpga\ipcore_dir\.\ClockDCM.xaw D:\vhdl\mwips\fpga\ipcore_dir\.\ClockDCM
--Design Name: ClockDCM
--Device: xc3s250e-4vq100
--
-- Module ClockDCM
-- Generated by Xilinx Architecture Wizard
-- Written for synthesis tool: XST
-- Period Jitter (unit interval) for block DCM_SP_INST = 0.07 UI
-- Period Jitter (Peak-to-Peak) for block DCM_SP_INST = 1.36 ns
 
library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.ALL;
library UNISIM;
use UNISIM.Vcomponents.ALL;
 
entity ClockDCM is
generic
(
CLK_IN_MHZ : integer := 32;
CLK_OUT_MHZ : integer := 64
);
port
(
CLKIN_IN : in std_logic;
CLKFX_OUT : out std_logic;
CLKIN_IBUFG_OUT : out std_logic
);
end ClockDCM;
 
architecture BEHAVIORAL of ClockDCM is
signal CLKFX_BUF : std_logic;
signal CLKIN_IBUFG : std_logic;
signal GND_BIT : std_logic;
begin
GND_BIT <= '0';
CLKIN_IBUFG_OUT <= CLKIN_IBUFG;
CLKFX_BUFG_INST : BUFG
port map (I=>CLKFX_BUF,
O=>CLKFX_OUT);
CLKIN_IBUFG_INST : IBUFG
port map (I=>CLKIN_IN,
O=>CLKIN_IBUFG);
DCM_SP_INST : DCM_SP
generic map( CLK_FEEDBACK => "NONE",
CLKDV_DIVIDE => 2.0,
CLKFX_DIVIDE => (CLK_IN_MHZ / 2),
CLKFX_MULTIPLY => (CLK_OUT_MHZ / 2),
CLKIN_DIVIDE_BY_2 => FALSE,
CLKIN_PERIOD => 31.250,
CLKOUT_PHASE_SHIFT => "NONE",
DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS",
DFS_FREQUENCY_MODE => "LOW",
DLL_FREQUENCY_MODE => "LOW",
DUTY_CYCLE_CORRECTION => TRUE,
FACTORY_JF => x"C080",
PHASE_SHIFT => 0,
STARTUP_WAIT => FALSE)
port map (CLKFB=>GND_BIT,
CLKIN=>CLKIN_IBUFG,
DSSEN=>GND_BIT,
PSCLK=>GND_BIT,
PSEN=>GND_BIT,
PSINCDEC=>GND_BIT,
RST=>GND_BIT,
CLKDV=>open,
CLKFX=>CLKFX_BUF,
CLKFX180=>open,
CLK0=>open,
CLK2X=>open,
CLK2X180=>open,
CLK90=>open,
CLK180=>open,
CLK270=>open,
LOCKED=>open,
PSDONE=>open,
STATUS=>open);
end BEHAVIORAL;
 
 
/altor32/trunk/fpga/papilio_xc3s250e/top.vhd
0,0 → 1,392
-------------------------------------------------------------------
-- AltOR32
-- Alternative Lightweight OpenRisc
-- V0.1
-- Ultra-Embedded.com
-- Copyright 2011 - 2012
--
-- Email: admin@ultra-embedded.com
--
-- License: LGPL
--
-- If you would like a version with a different license for use
-- in commercial projects please contact the above email address
-- for more details.
-------------------------------------------------------------------
--
-- Copyright (C) 2011 - 2012 Ultra-Embedded.com
--
-- This source file may be used and distributed without
-- restriction provided that this copyright statement is not
-- removed from the file and that any derivative work contains
-- the original copyright notice and the associated disclaimer.
--
-- This source file is free software; you can redistribute it
-- and/or modify it under the terms of the GNU Lesser General
-- Public License as published by the Free Software Foundation;
-- either version 2.1 of the License, or (at your option) any
-- later version.
--
-- This source is distributed in the hope that it will be
-- useful, but WITHOUT ANY WARRANTY; without even the implied
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-- PURPOSE. See the GNU Lesser General Public License for more
-- details.
--
-- You should have received a copy of the GNU Lesser General
-- Public License along with this source; if not, write to the
-- Free Software Foundation, Inc., 59 Temple Place, Suite 330,
-- Boston, MA 02111-1307 USA
-------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
use work.peripherals.all;
 
entity fpga_top is
generic
(
OSC_MHZ : integer := 32;
-- Target CPU MHz (must be a multiple of 2)
CPU_MHZ : integer := 60
);
port
(
W1A : inout std_logic_vector(15 downto 0);
W1B : inout std_logic_vector(15 downto 0);
W2C : inout std_logic_vector(15 downto 0);
rx : in std_logic;
tx : inout std_logic;
clk : in std_logic;
flash_cs : out std_logic;
flash_si : out std_logic;
flash_so : in std_logic;
flash_sck : out std_logic
);
end fpga_top;
 
architecture Behavioral of fpga_top is
 
-----------------------------------------------
-- Component Definitions
-----------------------------------------------
component ram
generic
(
-- Number of 8KB blocks of internal RAM, up to 64KB (1 to 8)
block_count : integer := 1
);
port
(
-- Port A
clka_i : in std_logic;
ena_i : in std_logic;
wea_i : in std_logic_vector(3 downto 0);
addra_i : in std_logic_vector(31 downto 2);
dataa_i : in std_logic_vector(31 downto 0);
dataa_o : out std_logic_vector(31 downto 0);
 
-- Port B
clkb_i : in std_logic;
enb_i : in std_logic;
web_i : in std_logic_vector(3 downto 0);
addrb_i : in std_logic_vector(31 downto 2);
datab_i : in std_logic_vector(31 downto 0);
datab_o : out std_logic_vector(31 downto 0)
);
end component;
 
-----------------------------------------------
-- Signals
-----------------------------------------------
signal cpu_clk : std_logic;
signal reset : std_logic:= '1';
signal rst_next : std_logic:= '1';
 
-- Block RAM interface
signal bram_mem_address : std_logic_vector(31 downto 0);
signal bram_mem_data_w : std_logic_vector(31 downto 0);
signal bram_mem_data_r : std_logic_vector(31 downto 0);
signal bram_mem_wr : std_logic_vector(3 downto 0);
 
-- I/O peripheral bus
signal io_address : std_logic_vector(31 downto 0);
signal io_data_w : std_logic_vector(31 downto 0);
signal io_data_r : std_logic_vector(31 downto 0);
signal io_wr : std_logic_vector(3 downto 0);
signal io_rd : std_logic;
 
-- GPIO ports
signal gpio_w1a_port_out : std_logic_vector(15 downto 0);
signal gpio_w1a_port_in : std_logic_vector(15 downto 0);
signal gpio_w1a_port_raw : std_logic_vector(15 downto 0);
signal gpio_w1a_port_out_en : std_logic_vector(15 downto 0);
 
signal gpio_w1b_port_out : std_logic_vector(15 downto 0);
signal gpio_w1b_port_in : std_logic_vector(15 downto 0);
signal gpio_w1b_port_raw : std_logic_vector(15 downto 0);
signal gpio_w1b_port_out_en : std_logic_vector(15 downto 0);
 
signal gpio_w2c_port_out : std_logic_vector(15 downto 0);
signal gpio_w2c_port_in : std_logic_vector(15 downto 0);
signal gpio_w2c_port_raw : std_logic_vector(15 downto 0);
signal gpio_w2c_port_out_en : std_logic_vector(15 downto 0);
 
-----------------------------------------------
-- I/O Register Map (from 0x30000000)
-----------------------------------------------
constant GPIO_W1A_OUT : std_logic_vector(7 downto 0) := X"10";
constant GPIO_W1A_IN : std_logic_vector(7 downto 0) := X"14";
constant GPIO_W1A_DIR : std_logic_vector(7 downto 0) := X"1C";
 
constant GPIO_W1B_OUT : std_logic_vector(7 downto 0) := X"20";
constant GPIO_W1B_IN : std_logic_vector(7 downto 0) := X"24";
constant GPIO_W1B_DIR : std_logic_vector(7 downto 0) := X"2C";
 
constant GPIO_W2C_OUT : std_logic_vector(7 downto 0) := X"30";
constant GPIO_W2C_IN : std_logic_vector(7 downto 0) := X"34";
constant GPIO_W2C_DIR : std_logic_vector(7 downto 0) := X"3C";
 
begin
 
-----------------------------------------------
-- Instantiation
-----------------------------------------------
 
-- DCM Clock Generator
U1_DCM: ClockDCM
generic map
(
CLK_IN_MHZ => OSC_MHZ,
CLK_OUT_MHZ => CPU_MHZ
)
port map
(
CLKIN_IN => clk,
CLKFX_OUT => cpu_clk,
CLKIN_IBUFG_OUT => open
);
 
-- 24KB Block RAM (0x0000 - 0x6000)
U2_RAM: ram
generic map
(
block_count => 3
)
port map
(
clka_i => cpu_clk,
ena_i => '1',
wea_i => bram_mem_wr,
addra_i => bram_mem_address(31 downto 2),
dataa_i => bram_mem_data_w,
dataa_o => bram_mem_data_r,
clkb_i => cpu_clk,
enb_i => '1',
web_i => "0000",
addrb_i => (others=>'0'),
datab_i => (others=>'0'),
datab_o => open
);
 
-- MPX CPU SOC
U3_CPU: alt_soc
generic map
(
CLK_KHZ => (CPU_MHZ * 1000),
UART_BAUD => 115200,
EXTERNAL_INTERRUPTS => 1
)
port map
(
-- General - clocking & reset
clk_i => cpu_clk,
rst_i => reset,
en_i => '1',
ext_intr_i(0) => '0',
fault_o => open,
break_o => open,
 
-- UART
uart_tx_o => tx,
uart_rx_i => rx,
-- BootRAM
int_mem_addr_o => bram_mem_address,
int_mem_data_o => bram_mem_data_w,
int_mem_data_i => bram_mem_data_r,
int_mem_wr_o => bram_mem_wr,
int_mem_rd_o => open,
 
-- External IO
ext_io_addr_o => io_address,
ext_io_data_o => io_data_w,
ext_io_data_i => io_data_r,
ext_io_wr_o => io_wr,
ext_io_rd_o => io_rd,
ext_io_pause_i => '0',
-- SPI Flash
flash_cs_o => flash_cs,
flash_si_o => flash_si,
flash_so_i => flash_so,
flash_sck_o => flash_sck,
-- Debug Access
dbg_pc_o => open,
-- Debug UART Output
dbg_uart_data_o => open,
dbg_uart_wr_o => open
);
-----------------------------------------------
-- Implementation
-----------------------------------------------
 
-- Reset Generator
process (cpu_clk)
begin
if (rising_edge(cpu_clk)) then
if (rst_next = '0') then
reset <= '0';
else
rst_next <= '0';
end if;
end if;
end process;
 
-----------------------------------------------
-- IO memory space WRITE handler
-----------------------------------------------
process (reset,cpu_clk)
 
begin
if (reset = '1') then
-- GPIO
gpio_w1a_port_out <= (others=>'0');
gpio_w1a_port_out_en <= (others=>'1');
gpio_w1b_port_out <= (others=>'0');
gpio_w1b_port_out_en <= (others=>'1');
gpio_w2c_port_out <= (others=>'0');
gpio_w2c_port_out_en <= (others=>'1');
elsif (rising_edge(cpu_clk)) then
-- IO Write Cycle
if (io_wr /= "0000") then
case io_address(7 downto 0) is
when GPIO_W1A_OUT =>
gpio_w1a_port_out <= io_data_w(15 downto 0);
when GPIO_W1A_DIR =>
gpio_w1a_port_out_en <= io_data_w(15 downto 0);
when GPIO_W1B_OUT =>
gpio_w1b_port_out <= io_data_w(15 downto 0);
when GPIO_W1B_DIR =>
gpio_w1b_port_out_en <= io_data_w(15 downto 0);
when GPIO_W2C_OUT =>
gpio_w2c_port_out <= io_data_w(15 downto 0);
when GPIO_W2C_DIR =>
gpio_w2c_port_out_en <= io_data_w(15 downto 0);
when others =>
end case;
end if;
end if;
end process;
 
-----------------------------------------------
-- IO memory space READ handler
-----------------------------------------------
process (reset,cpu_clk)
 
begin
if (reset = '1') then
io_data_r <= X"00000000";
gpio_w1a_port_in <= X"0000";
gpio_w1b_port_in <= X"0000";
gpio_w2c_port_in <= X"0000";
elsif (rising_edge(cpu_clk)) then
gpio_w1a_port_in <= gpio_w1a_port_raw;
gpio_w1b_port_in <= gpio_w1b_port_raw;
gpio_w2c_port_in <= gpio_w2c_port_raw;
-- Read cycle?
if (io_rd = '1') then
case io_address(7 downto 0) is
when GPIO_W1A_OUT =>
io_data_r <= X"0000" & gpio_w1a_port_out;
when GPIO_W1A_DIR =>
io_data_r <= X"0000" & gpio_w1a_port_out_en;
when GPIO_W1A_IN =>
io_data_r <= X"0000" & gpio_w1a_port_in;
when GPIO_W1B_OUT =>
io_data_r <= X"0000" & gpio_w1b_port_out;
when GPIO_W1B_DIR =>
io_data_r <= X"0000" & gpio_w1b_port_out_en;
when GPIO_W1B_IN =>
io_data_r <= X"0000" & gpio_w1b_port_in;
when GPIO_W2C_OUT =>
io_data_r <= X"0000" & gpio_w2c_port_out;
when GPIO_W2C_DIR =>
io_data_r <= X"0000" & gpio_w2c_port_out_en;
when GPIO_W2C_IN =>
io_data_r <= X"0000" & gpio_w2c_port_in;
when others =>
io_data_r <= X"00000000";
end case;
end if;
end if;
end process;
 
-----------------------------------------------
-- External Interface
-----------------------------------------------
 
-- GPIO port is connected to W1A
gpio_loop: for n in 15 downto 0 generate
W1A(n) <= gpio_w1a_port_out(n) when gpio_w1a_port_out_en(n) = '1' else 'Z';
gpio_w1a_port_raw(n)<= W1A(n);
W1B(n) <= gpio_w1b_port_out(n) when gpio_w1b_port_out_en(n) = '1' else 'Z';
gpio_w1b_port_raw(n)<= W1B(n);
W2C(n) <= gpio_w2c_port_out(n) when gpio_w2c_port_out_en(n) = '1' else 'Z';
gpio_w2c_port_raw(n)<= W2C(n);
end generate gpio_loop;
 
end Behavioral;
/altor32/trunk/fpga/papilio_xc3s250e/fpga_papilio_xc3s250e.bit Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
altor32/trunk/fpga/papilio_xc3s250e/fpga_papilio_xc3s250e.bit Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: altor32/trunk/fpga/papilio_xc3s250e/Memory Map.txt =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/Memory Map.txt (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/Memory Map.txt (revision 10) @@ -0,0 +1,13 @@ + +Memory Map +---------- + +The XC3S250E has around 24KB of BlockRAM which has been instantiated as 'BootRAM'. +This memory is pre-initialised with a bootloader image which can be used to load new code via the serial port using X-Modem file transfer protocol. + +Map: +0x0000 - 0x2000 = Bootloader +0x2000 - 0x6000 = Application space + + +The bootloader section 0x0000 - 0x2000 (8KBytes) can be re-used for BSS & Data sections for the application (thus overwriting the bootloader post boot). Index: altor32/trunk/fpga/papilio_xc3s250e/components.vhd =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/components.vhd (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/components.vhd (revision 10) @@ -0,0 +1,124 @@ +------------------------------------------------------------------- +-- AltOR32 +-- Alternative Lightweight OpenRisc +-- V0.1 +-- Ultra-Embedded.com +-- Copyright 2011 - 2012 +-- +-- Email: admin@ultra-embedded.com +-- +-- License: LGPL +-- +-- If you would like a version with a different license for use +-- in commercial projects please contact the above email address +-- for more details. +------------------------------------------------------------------- +-- +-- Copyright (C) 2011 - 2012 Ultra-Embedded.com +-- +-- This source file may be used and distributed without +-- restriction provided that this copyright statement is not +-- removed from the file and that any derivative work contains +-- the original copyright notice and the associated disclaimer. +-- +-- This source file is free software; you can redistribute it +-- and/or modify it under the terms of the GNU Lesser General +-- Public License as published by the Free Software Foundation; +-- either version 2.1 of the License, or (at your option) any +-- later version. +-- +-- This source is distributed in the hope that it will be +-- useful, but WITHOUT ANY WARRANTY; without even the implied +-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +-- PURPOSE. See the GNU Lesser General Public License for more +-- details. +-- +-- You should have received a copy of the GNU Lesser General +-- Public License along with this source; if not, write to the +-- Free Software Foundation, Inc., 59 Temple Place, Suite 330, +-- Boston, MA 02111-1307 USA +------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +package peripherals is + +------------------------------------------------------------------- +-- Components: +------------------------------------------------------------------- +component alt_soc +generic +( + CLK_KHZ : integer := 12288; + UART_BAUD : integer := 115200; + SPI_FLASH_CLK_KHZ : integer := 12288 / 2; + EXTERNAL_INTERRUPTS : integer := 1; + CORE_ID : std_logic_vector := X"00000000"; + BOOT_VECTOR : std_logic_vector := X"00000000"; + ISR_VECTOR : std_logic_vector := X"0000003C" +); +port +( + -- General - clocking & rst_i + clk_i : in std_logic; + rst_i : in std_logic; + en_i : in std_logic; + ext_intr_i : in std_logic_vector(EXTERNAL_INTERRUPTS-1 downto 0); + fault_o : out std_logic; + break_o : out std_logic; + + -- UART + uart_tx_o : out std_logic; + uart_rx_i : in std_logic; + + -- BootRAM + int_mem_addr_o : out std_logic_vector(32-1 downto 0); + int_mem_data_o : out std_logic_vector(32-1 downto 0); + int_mem_data_i : in std_logic_vector(32-1 downto 0); + int_mem_wr_o : out std_logic_vector(3 downto 0); + int_mem_rd_o : out std_logic; + + -- External IO + ext_io_addr_o : out std_logic_vector(32-1 downto 0); + ext_io_data_o : out std_logic_vector(32-1 downto 0); + ext_io_data_i : in std_logic_vector(32-1 downto 0); + ext_io_wr_o : out std_logic_vector(3 downto 0); + ext_io_rd_o : out std_logic; + ext_io_pause_i : in std_logic; + + -- SPI Flash + flash_cs_o : out std_logic; + flash_si_o : out std_logic; + flash_so_i : in std_logic; + flash_sck_o : out std_logic; + + -- Debug Access + dbg_pc_o : out std_logic_vector(31 downto 0); + + -- Debug UART Output + dbg_uart_data_o : out std_logic_vector(7 downto 0); + dbg_uart_wr_o : out std_logic +); +end component; + +component ClockDCM is +generic +( + CLK_IN_MHZ : integer := 32; + CLK_OUT_MHZ : integer := 64 +); +port +( + CLKIN_IN : in std_logic; + CLKFX_OUT : out std_logic; + CLKIN_IBUFG_OUT : out std_logic +); +end component; + +end peripherals; + +package body peripherals is + +end; --package body Index: altor32/trunk/fpga/papilio_xc3s250e/program.vhd =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/program.vhd (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/program.vhd (revision 10) @@ -0,0 +1,3030 @@ +------------------------------------------------------------------- +-- This file was derived from the Plasma project by Steve Rhoads. +-- It has been modified to support dual port block RAM and contains +-- the FPGA Bootloader image. +-- +-- Original copyright notice: +-- +-- TITLE: Random Access Memory for Xilinx +-- AUTHOR: Steve Rhoads (rhoadss@yahoo.com) +-- DATE CREATED: 11/06/05 +-- PROJECT: Plasma CPU core +-- COPYRIGHT: Software placed into the public domain by the author. +-- Software 'as is' without warranty. Author liable for nothing. +-- UPDATED: 09/07/10 Olivier Rinaudo (orinaudo@gmail.com) +-- new behaviour: 8KB expandable to 64KB of internal RAM +-- +------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +library UNISIM; +use UNISIM.vcomponents.all; + +entity ram is +generic +( + --Number of 8KB blocks of internal RAM, up to 64KB (1 to 8) + block_count : integer := 1 +); +port +( + -- Port A + clka_i : in std_logic; + ena_i : in std_logic; + wea_i : in std_logic_vector(3 downto 0); + addra_i : in std_logic_vector(31 downto 2); + dataa_i : in std_logic_vector(31 downto 0); + dataa_o : out std_logic_vector(31 downto 0); + + -- Port B + clkb_i : in std_logic; + enb_i : in std_logic; + web_i : in std_logic_vector(3 downto 0); + addrb_i : in std_logic_vector(31 downto 2); + datab_i : in std_logic_vector(31 downto 0); + datab_o : out std_logic_vector(31 downto 0) +); +end; + +architecture logic of ram is + +----------------------------------------------- +-- Signals +----------------------------------------------- +type mem32_vector IS ARRAY (NATURAL RANGE<>) OF std_logic_vector(31 downto 0); + +-- Which 8KB block +alias block_a_sel: std_logic_vector(2 downto 0) is addra_i(15 downto 13); +alias block_b_sel: std_logic_vector(2 downto 0) is addrb_i(15 downto 13); + +-- Address within a 8KB block (without lower two bits) +alias block_a_addr : std_logic_vector(10 downto 0) is addra_i(12 downto 2); +alias block_b_addr : std_logic_vector(10 downto 0) is addrb_i(12 downto 2); + +-- Block ena_i with 1 bit per memory block +signal block_a_enable: std_logic_vector(7 downto 0); +signal block_b_enable: std_logic_vector(7 downto 0); + +-- Block Data Out +signal block_a_do: mem32_vector(7 downto 0); +signal block_b_do: mem32_vector(7 downto 0); + +-- Remember which block was selected +signal block_a_sel_buf: std_logic_vector(2 downto 0); +signal block_b_sel_buf: std_logic_vector(2 downto 0); + +constant ZERO : std_logic_vector(31 downto 0) := "00000000000000000000000000000000"; + +begin + +----------------------------------------------- +-- Port A +----------------------------------------------- +block_a_enable <= "00000001" when (ena_i='1') and (block_a_sel="000") else + "00000010" when (ena_i='1') and (block_a_sel="001") else + "00000100" when (ena_i='1') and (block_a_sel="010") else + "00001000" when (ena_i='1') and (block_a_sel="011") else + "00010000" when (ena_i='1') and (block_a_sel="100") else + "00100000" when (ena_i='1') and (block_a_sel="101") else + "01000000" when (ena_i='1') and (block_a_sel="110") else + "10000000" when (ena_i='1') and (block_a_sel="111") else + "00000000"; + +process (clka_i, block_a_sel) is +begin + if rising_edge(clka_i) then + block_a_sel_buf <= block_a_sel; + end if; +end process; + +process (block_a_do, block_a_sel_buf) is +begin + dataa_o <= block_a_do(conv_integer(block_a_sel_buf)); +end process; + +----------------------------------------------- +-- Port B +----------------------------------------------- +block_b_enable <= "00000001" when (enb_i='1') and (block_b_sel="000") else + "00000010" when (enb_i='1') and (block_b_sel="001") else + "00000100" when (enb_i='1') and (block_b_sel="010") else + "00001000" when (enb_i='1') and (block_b_sel="011") else + "00010000" when (enb_i='1') and (block_b_sel="100") else + "00100000" when (enb_i='1') and (block_b_sel="101") else + "01000000" when (enb_i='1') and (block_b_sel="110") else + "10000000" when (enb_i='1') and (block_b_sel="111") else + "00000000"; + +process (clkb_i, block_b_sel) is +begin + if rising_edge(clkb_i) then + block_b_sel_buf <= block_b_sel; + end if; +end process; + +process (block_b_do, block_b_sel_buf) is +begin + datab_o <= block_b_do(conv_integer(block_b_sel_buf)); +end process; + +----------------------------------------------- +-- BRAM +----------------------------------------------- + -- BLOCKS generation + block0: if (block_count > 0) generate + begin + + ram_byte3 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"000000000000000000000000000000000000000015049c13e4d4a818a818a818", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000001500", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000001500", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000001500", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"8486a80418a80418a80418a804181504aa04a99c9ca8d7d7d71a19d7d7181500", +INIT_0D => X"04a8a8049c181503a8049ca8049c181513bc0cbc0cbc0cbc1504180cbc10bde0", +INIT_0E => X"0cbc9c04a804150015489d9c049ca8041815001548a9199c0418a804181503a8", +INIT_0F => X"9c8ce0e08410a9bd19a80cbc9c84d7a8d718d71500150015489d1803a8049c18", +INIT_10 => X"d4d7a8d718d78544849dd485e09c848404a8a9a819854484859cd49de0d813e4", +INIT_11 => X"a8d7d7d7d71818d7854484859c1813bdd404a88418a904a8a81818d49ca81918", +INIT_12 => X"9ca810bce0e0a8189d9d13bc848644868584859c9d0ce4a88418aa04a89caa9c", +INIT_13 => X"84150fbd15488586a99ca8d7d71918d7d78644868584859d9ce213e484e104a8", +INIT_14 => X"9c85d7d7d7d7d7d7d7d7d7aad71ad7d444a818d4a81886448584859c150fbce0", +INIT_15 => X"48e1d49fd4199c9e9f13bc84a818874487878786868686858485a99c9e0cbcab", +INIT_16 => X"d8d49fa8841810bc10bc108503150cbdbbbb9f150fbce084bc0cbd15488586a8", +INIT_17 => X"181910bc8410e4a48cac8c84bb13e59fbb9f07150fbce084180cbd154885869e", +INIT_18 => X"13e4a818a413bc9caca413bde0b8180cbc9ce0009c9db88ca5e1a9b98c8d9ca8", +INIT_19 => X"bc13bd154885bc13bce0848500868403d813e0e5a89ebd03bb07bb9f9f8410e4", +INIT_1A => X"8ca884189e039fd8d4d4a89c189c03a8489c9c488515079c039c48859e07bc13", +INIT_1B => X"039c48859c48859c48859e079f13e4a49c8410e4840fe48c84a413e4a89c18e0", +INIT_1C => X"bca585d4a8a81815a89c0cbcb8d7b8d71544d40385a49f9c9f84e248a89c189c", +INIT_1D => X"10bc90a8d7d7a54485a818154485a810bca484a89d18a8039c078444859c1513", +INIT_1E => X"9cd4a818d4a818d4a818d4bd9cd7d7d7d7a8d718d78444859c1513bc909c079c", +INIT_1F => X"90d810e49c9c9dd89c9c10bca813bc9dd8049c8da8e19c04a8a99eaa9ea8d80c", +INIT_20 => X"d4a8a81815441513e5e08484a81815449e03e0864486868584859c1513e49c07", +INIT_21 => X"bca484d4a8a4a81813bca484d4a4a8a8b81813bca484d4a4a8a8b81813bca484", +INIT_22 => X"13e49c851513bca484d4a9a8a89d1813bca484d49cd49ca89ca8d71815441513", +INIT_23 => X"9c85a81813bca484d4a89ca81813bca484d49cd49ca89ca8d71884449cd49ca5", +INIT_24 => X"9cd4a8a89c189c079ca8a8a818181810bc10bc9c079c079c07d7d784449cd4a5", +INIT_25 => X"9c078444859cd49ca913bca484d4a8a81813bca484d4a818d4d49c13bca484d4", +INIT_26 => X"07a8a8a81818d403a89c18180cbcb89ca4ad9c07d403a89c18180cbcb89ca4ad", +INIT_27 => X"a910bd1507d49c9cd79ca8a8aaa9d7d71aa8d7d718039c07a8a8a8181818039c", +INIT_28 => X"9ca8a8d7188644868584859cd49da89c18d813e49c85e013bca484d4a8a89d9c", +INIT_29 => X"d7d7d7854484859c1513bca51507d41507d4d49c9d13bca484d49c9ca8d4d7d7", +INIT_2A => X"9ee310bde284e28484a89faa9f1810bd84d40cbcd4d4a49cd7d7d7d7d7d7d7d7", +INIT_2B => X"1513bca484d48ce0a8a810bc1507d4a89cd41513bca585d4d49c9c0cbc84a818", +INIT_2C => X"13bd8744878787868686868584859d9c8413e5849f1513bca51507d4a813e49c", +INIT_2D => X"bca51507d41513bca484d4a8181507d4d49c9c13bca484d4e0d48f9c9ce0aa9d", +INIT_2E => X"9c13bca484d49cd49ca8d79ca8d718840315079c038413e5849fe013e59d1513", +INIT_2F => X"10e49c0ce49c9d9dd49c8444859c1513bca51507d49c13bca484d4a89c18d4d4", +INIT_30 => X"9cb8e0e0e0b8b8e09e199c0ce49d9db8b813e4e0e1b89db8e09c199d0ce410e4", +INIT_31 => X"0a740a9c44859d1507d49c9c44859c9d0015001513e49d9ce10ce4b89cb810e4", +INIT_32 => X"414f0a74206f2072452e6f652d4d286e6e29464f3e0a414f3e0a72453c61743e", +INIT_33 => X"6e222000530a502061766720200a2928526f74002e6c652d4128522e73206f20", +INIT_34 => X"0000000000000000000000000000004465636e6e6b20736361696e6f2e496920", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(0)(31 downto 24), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(31 downto 24), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(0), + SSRA => ZERO(0), + WEA => wea_i(3), + + DOB => block_b_do(0)(31 downto 24), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(31 downto 24), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(0), + SSRB => ZERO(0), + WEB => web_i(3) + ); + + ram_byte2 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000084ffa404a5a084802480", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"8e0e63006063006063006063006000005200ce402163e1e1e140c0e1e1600000", +INIT_0D => X"00726300406000ff8200606300406000ff2b002b002b002b000060000200a484", +INIT_0E => X"000b600063000000000060800060630060000000006b6080006063006000ff82", +INIT_0F => X"c6e7a4e3880008a40044000621c2e142e140e10000000000006060ff63004060", +INIT_10 => X"02e142e140e1c10041600e2142216e6e00a2ce83c0c10041212108604205ff26", +INIT_11 => X"84e1e1e1e14080e1c10041212160ff8b0e00638260ce0084638060032163c060", +INIT_12 => X"409000a2456e4240c060ff05b2410001c1412121600022635260440062a00321", +INIT_13 => X"6e00ff8b0000620ece2142e1e1c040e1e1410001c14121602110ff45b2ce00a2", +INIT_14 => X"2174e1e1e1e1e1e1e1e1e194e180e10300636005a5a00100c141212100ff4363", +INIT_15 => X"00ce014001c060c000ff03624240c100814101c1814101c141217621c0000bc3", +INIT_16 => X"04018584a180001a000b0074ff00005818181800ff44848e0b008b0000620e7a", +INIT_17 => X"a000000481002484668486c118ffb2401818ff00ff44848ec0008b0000620e40", +INIT_18 => X"ff28c6c084ff25a58787ff66e4c4c00025a58400a008c6c86b6b086ba56580a5", +INIT_19 => X"2bff8b0000621aff44848e62000ec1ff04ff92b2c65258ff18ff184018810004", +INIT_1A => X"c484a18040ff80050101a5c0a021ff83006060007400ff21ff600074c0ff1aff", +INIT_1B => X"ff600074600074600074c0ff40ff038485a1000481ff0486c1a5ff24c684c0a5", +INIT_1C => X"2b6b6304638360006221002242e143e1000001ff746340640081d60063806021", +INIT_1D => X"00036343e1e16b00636360000063630004848483606062ff60ff4100212100ff", +INIT_1E => X"40014240014240014240016321e1e1e1e142e140e14100212100ff236242ff21", +INIT_1F => X"620e00824e60ce0e606000144bff2bce0e00806b6272800062c1410180430100", +INIT_20 => X"05c6a6c0000000ff438485c5a5a0000080ff4081004101c141212100ff6242ff", +INIT_21 => X"23636503a58465a0ff23636603a7c565e4a0ff23636603a7c565e4a0ff236366", +INIT_22 => X"ff63c66800ff2484850707a5e580a0ff26c6c4052104c0a54085e1a0000000ff", +INIT_23 => X"60636360ff2363640384a06480ff236365032105806340a3e16041002105606b", +INIT_24 => X"a0046383a06040ffc0a58463a08060000b000b60ff60ff21ffe1e1410021046b", +INIT_25 => X"60ff41002121044062ff2363640685c5a0ff2363640363600404a0ff23636403", +INIT_26 => X"ffa58463a08003ff63806060002242424b6b60ff03ff63806060002242424b6b", +INIT_27 => X"7200a200ff102160e1a0458212c4e1e14043e1e160ffc0ffa58463a08060ffc0", +INIT_28 => X"8044a4e180410001c1412121026042604003ff27e7056eff2363660babd080e0", +INIT_29 => X"e1e1e1c10041212100ff2b6b00ff0200ff020260c0ff25a5a20521608302e1e1", +INIT_2A => X"00c500b0c4a1038161420042404000a24101002201014321e1e1e1e1e1e1e1e1", +INIT_2B => X"00ff26c6c212c6d6eece001000ff029e600200ff2ecec21202a0800023648480", +INIT_2C => X"ffb0c100814101c1814101c14121602181ff43611800ff2b6b00ff02c7ff27e7", +INIT_2D => X"2b6b00ff1400ff26c6c203636000ff141460a0ff26c6c2128e028660a0d682c0", +INIT_2E => X"a0ff236364032104a063e14083e16041ff00ff21ff81ff436118d6ff8ece00ff", +INIT_2F => X"0048e00028a3046001214100212100ff2b6b00ff0460ff2363640363a0600404", +INIT_30 => X"806366c7e463876520e0af008920ade7a5ff87e4ad63e58765c020a0008b0008", +INIT_31 => X"0052422100216700ff0121210021e56000000000ff8929e6630024a5806b0023", +INIT_32 => X"704d002e6264586e782e6f6d6d294261740a504d2000704d20006e78456c6520", +INIT_33 => X"6f552672450052696261656961002e414f6d20422e616d6d29464f0a68666458", +INIT_34 => X"00000000000000000000000000000022727475206e222000735f2f6d2e446364", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(0)(23 downto 16), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(23 downto 16), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(0), + SSRA => ZERO(0), + WEA => wea_i(2), + + DOB => block_b_do(0)(23 downto 16), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(23 downto 16), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(0), + SSRB => ZERO(0), + WEB => web_i(2) + ); + + ram_byte1 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000100ff28001d001a001c00", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000008", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000008", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000008", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000190200190200190200180200000280020000ff1887174f00209777000008", +INIT_0D => X"00001901000000ff0000001902000000ff000000000000000002000000002780", +INIT_0E => X"000020001901000000582100002019010000000058011000001019010000ff00", +INIT_0F => X"0000303000001a0000000000ff00771a4f00170000000000582100ff19010000", +INIT_10 => X"184f1a770017ff48ff0010ff1800000003001a0000ff48ffff0010002038ff10", +INIT_11 => X"1a774f9787000017ff48ffff0000ff0020000700001a000e0e000020ff1a0000", +INIT_12 => X"10000010701080000000ff0000ff48ffffffff000000181000b00002800000ff", +INIT_13 => X"0000ff000058000000ff1a874f20007717ff48ffffffff000010ff7000100200", +INIT_14 => X"ff00e7d7c7978777174ff71ab700a720481a00181a00ff48ffffff0000ff0380", +INIT_15 => X"58c01800b020000000ff00001a00ff48ffffffffffffffffffff0000ff000000", +INIT_16 => X"5820001a0000000000000000ff0000000000ff00ff0380000000000058000000", +INIT_17 => X"00000000000018000000000000ffe00000ffff00ff0380000000000058000000", +INIT_18 => X"ff301a00ffff00ff10ffff002000000000ff300000000000ff281a000000001a", +INIT_19 => X"00ff0000580000ff03800000000000ff58ff30e01a0000ff00ff0000ff000058", +INIT_1A => X"001a000000ff005828301a000000ff00f00000580000ff00ff005800ffff00ff", +INIT_1B => X"ff005800005800005800fffe00ff2000ff00001800ff28000000ff301a000030", +INIT_1C => X"000000100000200000ff0000004f0017004818ff00000000000020f01a000000", +INIT_1D => X"000000004f170048000020004800000000000000ff2000ff00ffff48ff0000ff", +INIT_1E => X"001045431041381036341000ffa7978777324f3017ff48ff0000ff000000ffff", +INIT_1F => X"00180080ff0000180000000000ff000058020000005800020000000000001000", +INIT_20 => X"18000020004800ff203000000020004800ff18ff48ffffffffff0000ff80ffff", +INIT_21 => X"0000002000000020ff000000280000000020ff000000280000000020ff000000", +INIT_22 => X"ff30000000ff000000600000000020ff00000030ff10000000001720004800ff", +INIT_23 => X"00000020ff0000002800000020ff00000020ff10000000001720ff4800180000", +INIT_24 => X"00280000002000fd001a1a190000000000000000ff00ffffff174fff48001800", +INIT_25 => X"00ffff48ff00100000ff00000018000020ff000000280020182800ff00000028", +INIT_26 => X"fd1a1919000020ff1a000000000000ff000000ff20ff1a000000000000ff0000", +INIT_27 => X"00000000ff28ff004f000000000087772000971700ff00fd1a1919000000ff00", +INIT_28 => X"0000001720ff48ffffffff00180000002040ff10000038ff0000006000000000", +INIT_29 => X"774f17ff48ffff0000ff000000ff7000fe28700000ff00000018ff000020774f", +INIT_2A => X"01c00001c000c00000000000002000000028000020180ffff7e7d7c7b7a79787", +INIT_2B => X"00ff0000003000300000000000fe700000d000ff000000282000000000001a00", +INIT_2C => X"ff00ff48ffffffffffffffffffff000000ffc0000100ff000000fed000ff8000", +INIT_2D => X"000000fed000ff000000e0002000fe30280000ff00000018f028000000700000", +INIT_2E => X"00ff00000028ff1000004f0000172000ff00ff00ff00ffc0000170ff800000ff", +INIT_2F => X"002800005800000048ffff48ff0000ff000000fe1800ff000000280000201828", +INIT_30 => X"0000784018000078008000006800000000ff40183000000048ff800000400028", +INIT_31 => X"3c4f6f0048000000ff48ff004800000000000000ff6800002000880000000020", +INIT_32 => X"7020502e6f652d61740a74206f20526c65004720503c7020503c61743e0a7249", +INIT_33 => X"776e266552414f6e6c69206d704e2e704d20666f2e73206f20504d002e6c652d", +INIT_34 => X"000000000000000000000000000000002075666d6f5526726866736d2f226565", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(0)(15 downto 8), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(15 downto 8), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(0), + SSRA => ZERO(0), + WEA => wea_i(1), + + DOB => block_b_do(0)(15 downto 8), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(15 downto 8), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(0), + SSRB => ZERO(0), + WEB => web_i(1) + ); + + ram_byte0 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000003804fe000000005000f000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"00002a1e001a21000c2400fe270000f5002c1000ecf4f4ecfc0500f8f0000000", +INIT_0D => X"5b0076fe010000e70064009307010000f0460d41184526490004003601040f02", +INIT_0E => X"0700005cb1e000000000000047003bea000000000000000053005cf60000de00", +INIT_0F => X"010000000009580000001600f400f854fc00f40000000000000000afcad80100", +INIT_10 => X"00fc50f800f4f800f40000fc000c00002e00580000f800f4fc0c00000000fb00", +INIT_11 => X"5cf0fcf8f40500ecf800f4fc0c00fb000063b400005861a840000000f4540000", +INIT_12 => X"00000300020000050001f7000cf800f4f0ecfc14000900ad080700a8001000ec", +INIT_13 => X"0000fb000000000010f070f8fc0000f4f0f800f4f0ecfc011400f3000c008b00", +INIT_14 => X"c800f4f0ece0dcd8d4fcf86ce800e400007000006c00f800f4f0fc1000f7e702", +INIT_15 => X"000408430400010010ee00007000f800f4f0ece8e4e0dcd8d4fc0038ff100000", +INIT_16 => X"0000827404007a435b187400ec00a3009818ff00f7e70200040f000000000000", +INIT_17 => X"00005f00042900ff01ff020098de001518ff8200f7e702000044000000000000", +INIT_18 => X"e900f700fff800ff21fff9000010000d00ff050608010800ff00770884830074", +INIT_19 => X"18f70000000043a1e7020000080000c500b30000740100a998491815ff084b00", +INIT_1A => X"0077040000878300000474010038540000000600000026385e060000ff2d4399", +INIT_1B => X"26180000180000180000fffb065e00ffff08140008b9008300fffa00f7010000", +INIT_1C => X"000800000408000400f8110a98fc18f80000083300ff06011008000077800038", +INIT_1D => X"08000000fcf80100000400000000080300010004ff0000f00deaf800fc0800fd", +INIT_1E => X"002c46442842392437352000b4f8f4f0ec33fc31e8f800fc0800fc000001cff8", +INIT_1F => X"00000800ff0001002d00060000f5000100080a0000000a4d000020000000302d", +INIT_20 => X"00707400000000fd000200001000000001d602f800f4f0ece8fc4c00fc00ff90", +INIT_21 => X"0001000070ff7400fd00010000ff70744800fd00010000ff70745000fd000100", +INIT_22 => X"f700010000fd00010000007074ff00fd00010000fc009f740070fc00000000fd", +INIT_23 => X"01007400fd0001000070ff7400fd00010000fc0005740070fc00fc00040001ff", +INIT_24 => X"0600747000000053f20c22ea0000003cbf301f00b901bbf8dff8fcfc000400ff", +INIT_25 => X"0186f800fc08000100fd00010000707400fd000100007400000001fd00010000", +INIT_26 => X"0c0cf1ea000000c2fc01000010005fffff25017800d0fc02000015005fffff44", +INIT_27 => X"741100002100ec03fc0000007000f4f00000f8ec00eced030cf1ea000000e7e6", +INIT_28 => X"007074f400f800f4f0ecfc14000070010000f700010000fd000100000000ff00", +INIT_29 => X"d8fcd4f800f4fc0c00fc000100340000ed00002001fd00010000f4060000f8fc", +INIT_2A => X"00000300000402080070007401003f00000080000804ffc8f8f4f0ece8e4e0dc", +INIT_2B => X"00fd00010000000000000f0000aa0000020000fd000100000006003a0100fc00", +INIT_2C => X"ec00f800f4f0ece8e4e0dcd8d4fc003808cb00000000fc000100e10000f60001", +INIT_2D => X"000100aa0000fd000100007400006b00000201fd000100000000000600000000", +INIT_2E => X"01fd00010000f8000674fc0070f8000081004e38c6089000000000df000100fc", +INIT_2F => X"320000360000000000fcf800fc0800fc0001007a0001fd000100007460000000", +INIT_30 => X"005f0302045f01030000001e0000014101f90004005f000103ff00200d002e00", +INIT_31 => X"494d6f0400000000bf00fc040000000103000500ed0001000403000101010300", +INIT_32 => X"2928522e6f6d6d6c65002e6264584120724941285246292852416c6520006e6e", +INIT_33 => X"6e6b207354534d20656c6161706f2e702050726f0a686664584720502e616d6d", +INIT_34 => X"0000000000000000000000000000000049726161776e26652e6c706f63002076", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(0)(7 downto 0), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(7 downto 0), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(0), + SSRA => ZERO(0), + WEA => wea_i(0), + + DOB => block_b_do(0)(7 downto 0), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(7 downto 0), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(0), + SSRB => ZERO(0), + WEB => web_i(0) + ); + end generate; --block0 + + + block1: if (block_count > 1) generate + begin + + ram_byte3 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(1)(31 downto 24), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(31 downto 24), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(1), + SSRA => ZERO(0), + WEA => wea_i(3), + + DOB => block_b_do(1)(31 downto 24), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(31 downto 24), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(1), + SSRB => ZERO(0), + WEB => web_i(3) + ); + + ram_byte2 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(1)(23 downto 16), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(23 downto 16), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(1), + SSRA => ZERO(0), + WEA => wea_i(2), + + DOB => block_b_do(1)(23 downto 16), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(23 downto 16), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(1), + SSRB => ZERO(0), + WEB => web_i(2) + ); + + ram_byte1 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(1)(15 downto 8), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(15 downto 8), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(1), + SSRA => ZERO(0), + WEA => wea_i(1), + + DOB => block_b_do(1)(15 downto 8), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(15 downto 8), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(1), + SSRB => ZERO(0), + WEB => web_i(1) + ); + + ram_byte0 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(1)(7 downto 0), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(7 downto 0), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(1), + SSRA => ZERO(0), + WEA => wea_i(0), + + DOB => block_b_do(1)(7 downto 0), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(7 downto 0), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(1), + SSRB => ZERO(0), + WEB => web_i(0) + ); + + end generate; --block1 + + + block2: if (block_count > 2) generate + begin + + ram_byte3 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(2)(31 downto 24), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(31 downto 24), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(2), + SSRA => ZERO(0), + WEA => wea_i(3), + + DOB => block_b_do(2)(31 downto 24), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(31 downto 24), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(2), + SSRB => ZERO(0), + WEB => web_i(3) + ); + + ram_byte2 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(2)(23 downto 16), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(23 downto 16), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(2), + SSRA => ZERO(0), + WEA => wea_i(2), + + DOB => block_b_do(2)(23 downto 16), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(23 downto 16), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(2), + SSRB => ZERO(0), + WEB => web_i(2) + ); + + ram_byte1 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(2)(15 downto 8), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(15 downto 8), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(2), + SSRA => ZERO(0), + WEA => wea_i(1), + + DOB => block_b_do(2)(15 downto 8), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(15 downto 8), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(2), + SSRB => ZERO(0), + WEB => web_i(1) + ); + + ram_byte0 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(2)(7 downto 0), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(7 downto 0), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(2), + SSRA => ZERO(0), + WEA => wea_i(0), + + DOB => block_b_do(2)(7 downto 0), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(7 downto 0), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(2), + SSRB => ZERO(0), + WEB => web_i(0) + ); + + end generate; --block2 + + + block3: if (block_count > 3) generate + begin + + ram_byte3 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(3)(31 downto 24), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(31 downto 24), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(3), + SSRA => ZERO(0), + WEA => wea_i(3), + + DOB => block_b_do(3)(31 downto 24), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(31 downto 24), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(3), + SSRB => ZERO(0), + WEB => web_i(3) + ); + + ram_byte2 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(3)(23 downto 16), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(23 downto 16), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(3), + SSRA => ZERO(0), + WEA => wea_i(2), + + DOB => block_b_do(3)(23 downto 16), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(23 downto 16), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(3), + SSRB => ZERO(0), + WEB => web_i(2) + ); + + ram_byte1 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(3)(15 downto 8), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(15 downto 8), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(3), + SSRA => ZERO(0), + WEA => wea_i(1), + + DOB => block_b_do(3)(15 downto 8), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(15 downto 8), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(3), + SSRB => ZERO(0), + WEB => web_i(1) + ); + + ram_byte0 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(3)(7 downto 0), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(7 downto 0), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(3), + SSRA => ZERO(0), + WEA => wea_i(0), + + DOB => block_b_do(3)(7 downto 0), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(7 downto 0), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(3), + SSRB => ZERO(0), + WEB => web_i(0) + ); + + end generate; --block3 + + + block4: if (block_count > 4) generate + begin + + ram_byte3 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(4)(31 downto 24), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(31 downto 24), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(4), + SSRA => ZERO(0), + WEA => wea_i(3), + + DOB => block_b_do(4)(31 downto 24), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(31 downto 24), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(4), + SSRB => ZERO(0), + WEB => web_i(3) + ); + + ram_byte2 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(4)(23 downto 16), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(23 downto 16), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(4), + SSRA => ZERO(0), + WEA => wea_i(2), + + DOB => block_b_do(4)(23 downto 16), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(23 downto 16), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(4), + SSRB => ZERO(0), + WEB => web_i(2) + ); + + ram_byte1 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(4)(15 downto 8), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(15 downto 8), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(4), + SSRA => ZERO(0), + WEA => wea_i(1), + + DOB => block_b_do(4)(15 downto 8), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(15 downto 8), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(4), + SSRB => ZERO(0), + WEB => web_i(1) + ); + + ram_byte0 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(4)(7 downto 0), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(7 downto 0), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(4), + SSRA => ZERO(0), + WEA => wea_i(0), + + DOB => block_b_do(4)(7 downto 0), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(7 downto 0), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(4), + SSRB => ZERO(0), + WEB => web_i(0) + ); + + end generate; --block4 + + + block5: if (block_count > 5) generate + begin + + ram_byte3 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(5)(31 downto 24), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(31 downto 24), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(5), + SSRA => ZERO(0), + WEA => wea_i(3), + + DOB => block_b_do(5)(31 downto 24), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(31 downto 24), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(5), + SSRB => ZERO(0), + WEB => web_i(3) + ); + + ram_byte2 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(5)(23 downto 16), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(23 downto 16), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(5), + SSRA => ZERO(0), + WEA => wea_i(2), + + DOB => block_b_do(5)(23 downto 16), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(23 downto 16), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(5), + SSRB => ZERO(0), + WEB => web_i(2) + ); + + ram_byte1 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(5)(15 downto 8), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(15 downto 8), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(5), + SSRA => ZERO(0), + WEA => wea_i(1), + + DOB => block_b_do(5)(15 downto 8), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(15 downto 8), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(5), + SSRB => ZERO(0), + WEB => web_i(1) + ); + + ram_byte0 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(5)(7 downto 0), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(7 downto 0), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(5), + SSRA => ZERO(0), + WEA => wea_i(0), + + DOB => block_b_do(5)(7 downto 0), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(7 downto 0), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(5), + SSRB => ZERO(0), + WEB => web_i(0) + ); + + end generate; --block5 + + + block6: if (block_count > 6) generate + begin + + ram_byte3 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(6)(31 downto 24), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(31 downto 24), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(6), + SSRA => ZERO(0), + WEA => wea_i(3), + + DOB => block_b_do(6)(31 downto 24), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(31 downto 24), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(6), + SSRB => ZERO(0), + WEB => web_i(3) + ); + + ram_byte2 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(6)(23 downto 16), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(23 downto 16), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(6), + SSRA => ZERO(0), + WEA => wea_i(2), + + DOB => block_b_do(6)(23 downto 16), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(23 downto 16), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(6), + SSRB => ZERO(0), + WEB => web_i(2) + ); + + ram_byte1 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(6)(15 downto 8), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(15 downto 8), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(6), + SSRA => ZERO(0), + WEA => wea_i(1), + + DOB => block_b_do(6)(15 downto 8), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(15 downto 8), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(6), + SSRB => ZERO(0), + WEB => web_i(1) + ); + + ram_byte0 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(6)(7 downto 0), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(7 downto 0), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(6), + SSRA => ZERO(0), + WEA => wea_i(0), + + DOB => block_b_do(6)(7 downto 0), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(7 downto 0), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(6), + SSRB => ZERO(0), + WEB => web_i(0) + ); + + end generate; --block6 + + + block7: if (block_count > 7) generate + begin + + ram_byte3 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(7)(31 downto 24), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(31 downto 24), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(7), + SSRA => ZERO(0), + WEA => wea_i(3), + + DOB => block_b_do(7)(31 downto 24), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(31 downto 24), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(7), + SSRB => ZERO(0), + WEB => web_i(3) + ); + + ram_byte2 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(7)(23 downto 16), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(23 downto 16), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(7), + SSRA => ZERO(0), + WEA => wea_i(2), + + DOB => block_b_do(7)(23 downto 16), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(23 downto 16), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(7), + SSRB => ZERO(0), + WEB => web_i(2) + ); + + ram_byte1 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(7)(15 downto 8), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(15 downto 8), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(7), + SSRA => ZERO(0), + WEA => wea_i(1), + + DOB => block_b_do(7)(15 downto 8), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(15 downto 8), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(7), + SSRB => ZERO(0), + WEB => web_i(1) + ); + + ram_byte0 : RAMB16_S9_S9 + generic map ( +INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", +INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000" +) + port map ( + DOA => block_a_do(7)(7 downto 0), + DOPA => open, + ADDRA => block_a_addr, + CLKA => clka_i, + DIA => dataa_i(7 downto 0), + DIPA => ZERO(0 downto 0), + ENA => block_a_enable(7), + SSRA => ZERO(0), + WEA => wea_i(0), + + DOB => block_b_do(7)(7 downto 0), + DOPB => open, + ADDRB => block_b_addr, + CLKB => clkb_i, + DIB => datab_i(7 downto 0), + DIPB => ZERO(0 downto 0), + ENB => block_b_enable(7), + SSRB => ZERO(0), + WEB => web_i(0) + ); + + end generate; --block7 + +end; --architecture logic Index: altor32/trunk/fpga/papilio_xc3s250e/sw/serial.c =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/serial.c (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/serial.c (revision 10) @@ -0,0 +1,65 @@ +#include "mem_map.h" +#include "serial.h" + +//----------------------------------------------------------------- +// Registers +//----------------------------------------------------------------- +#define UART_RX_AVAIL (1<<0) +#define UART_TX_AVAIL (1<<1) +#define UART_RX_FULL (1<<2) +#define UART_TX_BUSY (1<<3) +#define UART_RX_ERROR (1<<4) + +//------------------------------------------------------------- +// serial_init: +//------------------------------------------------------------- +void serial_init (void) +{ + +} +//------------------------------------------------------------- +// serial_putchar: Write character to Serial Port (used by printf) +//------------------------------------------------------------- +int serial_putchar(char ch) +{ + if (ch == '\n') + serial_putchar('\r'); + + // Use special simulator NOP instruction to output console + // trace on the simulator. + { + register char t1 asm ("r3") = ch; + asm volatile ("\tl.nop\t%0" : : "K" (0x0004), "r" (t1)); + } + + UART_UDR = ch; + while (UART_USR & UART_TX_BUSY); + + return 0; +} +//------------------------------------------------------------- +// serial_getchar: Read character from Serial Port +//------------------------------------------------------------- +int serial_getchar (void) +{ + // Read character in from UART0 Recieve Buffer and return + if (serial_haschar()) + return UART_UDR; + else + return -1; +} +//------------------------------------------------------------- +// serial_haschar: +//------------------------------------------------------------- +int serial_haschar() +{ + return (UART_USR & UART_RX_AVAIL); +} +//------------------------------------------------------------- +// serial_putstr: +//------------------------------------------------------------- +void serial_putstr(char *str) +{ + while (*str) + serial_putchar(*str++); +} Index: altor32/trunk/fpga/papilio_xc3s250e/sw/mem_map.h =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/mem_map.h (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/mem_map.h (revision 10) @@ -0,0 +1,75 @@ +#ifndef __MEM_MAP_H__ +#define __MEM_MAP_H__ + +//----------------------------------------------------------------- +// Defines: +//----------------------------------------------------------------- +#define INT_BASE 0x00000000 +#define INT_APP_BASE 0x00002000 +#define IO_BASE 0x20000000 +#define EXT_IO_BASE 0x30000000 + +//----------------------------------------------------------------- +// Macros: +//----------------------------------------------------------------- +#define REG8 (volatile unsigned char*) +#define REG16 (volatile unsigned short*) +#define REG32 (volatile unsigned int*) + +//----------------------------------------------------------------- +// I/O: +//----------------------------------------------------------------- + +// General +#define CORE_ID (*(REG32 (IO_BASE + 0x0))) + +// Basic Peripherals +#define UART_USR (*(REG32 (IO_BASE + 0x4))) +#define UART_UDR (*(REG32 (IO_BASE + 0x8))) +#define TIMER_VAL (*(REG32 (IO_BASE + 0x10))) +#define IRQ_MASK_SET (*(REG32 (IO_BASE + 0x14))) +#define IRQ_MASK_STATUS (*(REG32 (IO_BASE + 0x14))) +#define IRQ_MASK_CLR (*(REG32 (IO_BASE + 0x18))) +#define IRQ_STATUS (*(REG32 (IO_BASE + 0x1C))) + #define IRQ_SYSTICK (0) + #define IRQ_UART_RX_AVAIL (1) + #define IRQ_SW (2) + #define IRQ_PIT (6) + #define EXT_INT_OFFSET (8) + +// [Optional] Watchdog +#define WATCHDOG_CTRL (*(REG32 (IO_BASE + 0x20))) + #define WATCHDOG_EXPIRED (16) + +#define SYS_CLK_COUNT (*(REG32 (IO_BASE + 0x60))) + +// [Optional] SPI Configuration PROM +#define SPI_PROM_CTRL (*(REG32 (IO_BASE + 0x70))) + #define SPI_PROM_CS (1 << 0) +#define SPI_PROM_STAT (*(REG32 (IO_BASE + 0x70))) + #define SPI_PROM_BUSY (1 << 0) +#define SPI_PROM_DATA (*(REG32 (IO_BASE + 0x74))) + +//----------------------------------------------------------------- +// Extended Peripherals +//----------------------------------------------------------------- + +#define GPIO_DIR_OUTPUT 1 +#define GPIO_DIR_INPUT 0 +#define GPIO_DIR_ALL_OUTPUTS 0xFFFF +#define GPIO_DIR_ALL_INPUTS 0x0000 + +// GPIO Ports +#define GPIO_W1A_OUT (*(REG32 (EXT_IO_BASE + 0x10))) +#define GPIO_W1A_IN (*(REG32 (EXT_IO_BASE + 0x14))) +#define GPIO_W1A_DIR (*(REG32 (EXT_IO_BASE + 0x1C))) + +#define GPIO_W1B_OUT (*(REG32 (EXT_IO_BASE + 0x20))) +#define GPIO_W1B_IN (*(REG32 (EXT_IO_BASE + 0x24))) +#define GPIO_W1B_DIR (*(REG32 (EXT_IO_BASE + 0x2C))) + +#define GPIO_W2C_OUT (*(REG32 (EXT_IO_BASE + 0x30))) +#define GPIO_W2C_IN (*(REG32 (EXT_IO_BASE + 0x34))) +#define GPIO_W2C_DIR (*(REG32 (EXT_IO_BASE + 0x3C))) + +#endif Index: altor32/trunk/fpga/papilio_xc3s250e/sw/timer.c =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/timer.c (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/timer.c (revision 10) @@ -0,0 +1,19 @@ +#include "timer.h" + +//-------------------------------------------------------------------------- +// timer_init: +//-------------------------------------------------------------------------- +void timer_init(void) +{ + +} +//-------------------------------------------------------------------------- +// timer_sleep: +//-------------------------------------------------------------------------- +void timer_sleep(int timeMs) +{ + t_time t = timer_now(); + + while (timer_diff(timer_now(), t) < timeMs) + ; +} Index: altor32/trunk/fpga/papilio_xc3s250e/sw/makefile.mk =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/makefile.mk (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/makefile.mk (revision 10) @@ -0,0 +1,76 @@ +########################################################################## +# Files +########################################################################## +INCLUDE_DIRS ?= +OBJ = boot.o +OBJ+= $(OBJS) + +# Target +TARGET ?= firmware + +############################################################################### +## Makefile +############################################################################### + +# Tools +CC_PREFIX = or32-elf +CC = $(CC_PREFIX)-gcc $(CFLAGS) +AS = $(CC_PREFIX)-as +LD = $(CC_PREFIX)-ld +OBJDUMP = $(CC_PREFIX)-objdump +OBJCOPY = $(CC_PREFIX)-objcopy + +VERILATOR_DIR ?= ../../../rtl/sim_verilator +TEST_IMAGE ?= +SIMULATOR = ../../../or32-sim/or32-sim -l 0x2000 -x 0x2100 -f +VERILATOR_ARGS ?= -l 0x2000 +BOOTHDR = ../../../tools/bootheader + +SIMARGS ?= + +# Options +CFLAGS ?= +LDSCRIPT = linker_script +CFLAGS += -Ttext 0x2000 -O2 -g -Wall +CFLAGS += -msoft-div -msoft-float -msoft-mul -mno-ror -mno-cmov -mno-sext +CFLAGS += -nostartfiles -nodefaultlibs -nostdlib -lgcc -L . -lstd -T$(LDSCRIPT) +ASFLAGS = -Wa +LDFLAGS = + +CFLAGS += -I. $(INCLUDE_DIRS) + +############################################################################### +# Rules +############################################################################### +all: $(TARGET).elf lst bin bootable + +clean: + -rm $(OBJ) *.map *.lst *.hex *.txt *.elf $(TARGET).bin + +%.o : %.s + $(CC) -c $(ASFLAGS) $< -o $@ + +%.o : %.c + $(CC) -c $(CFLAGS) $< -o $@ + +$(TARGET).elf: $(OBJ) $(LDSCRIPT) makefile + $(CC) $(LDFLAGS) $(LIBS) $(OBJ) -o $@ + +lst: $(TARGET).lst + +%.lst: $(TARGET).elf + $(OBJDUMP) -h -d -S $< > $@ + +bin: $(TARGET).bin + +%.bin: %.elf + $(OBJCOPY) -O binary $< $@ + +bootable: $(TARGET).bin + $(BOOTHDR) -f $(TARGET).bin -o $(TARGET).bin + +run: bin + make -C $(VERILATOR_DIR) TEST_IMAGE=$(CURDIR)/$(TARGET).bin SIMARGS="$(VERILATOR_ARGS)" + +sim: bin + $(SIMULATOR) $(CURDIR)/$(TARGET).bin $(SIMARGS) Index: altor32/trunk/fpga/papilio_xc3s250e/sw/boot.s =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/boot.s (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/boot.s (revision 10) @@ -0,0 +1,49 @@ +#------------------------------------------------------------- +# VECTOR 0x000 - Application Header +#------------------------------------------------------------- +.org 0x000 + +# This code is not executed as execution starts from reset vector +.word 0x00000000 +.word 0x00000000 +.word 0xb00710ad +.word 0x00000000 + +#------------------------------------------------------------- +# VECTOR 0x100 - Reset +#------------------------------------------------------------- +.org 0x100 +vector_reset: + + l.j init + l.nop + + # Magic header word + .word 0xb00710ad + + # File length + .word 0x00000000 + +init: + # Setup SP (R1) + l.movhi r4,hi(_sp); + l.ori r1,r4,lo(_sp); + + # R4 = _bss_start + l.movhi r4,hi(_bss_start); + l.ori r4,r4,lo(_bss_start); + + # R5 = _end + l.movhi r5,hi(_end); + l.ori r5,r5,lo(_end); + +BSS_CLEAR: + l.sw 0x0(r4),r0 # Write 0x00 to mem[r4] + l.sfleu r4,r5 # SR[F] = (r4 < r5) + l.bf BSS_CLEAR # If SR[F] == 0, jump to BSS_CLEAR + l.addi r4, r4, 4 # r4 += 4 + + # Jump to main routine + l.jal main + l.nop + Index: altor32/trunk/fpga/papilio_xc3s250e/sw/main.c =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/main.c (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/main.c (revision 10) @@ -0,0 +1,46 @@ +#include "serial.h" +#include "printf.h" +#include "mem_map.h" + +//----------------------------------------------------------------- +// main: +//----------------------------------------------------------------- +int main(void) +{ + unsigned short port_w1a = 0; + unsigned short port_w1b = 0; + unsigned short port_w2c = 0; + + unsigned short last_w1a = 0; + unsigned short last_w1b = 0; + unsigned short last_w2c = 0; + + // Setup printf to serial port + printf_register(serial_putchar); + + GPIO_W1A_DIR = GPIO_DIR_ALL_INPUTS; + GPIO_W1B_DIR = GPIO_DIR_ALL_INPUTS; + GPIO_W2C_DIR = GPIO_DIR_ALL_INPUTS; + + printf("\n\nHello!\n"); + + while (1) + { + port_w1a = GPIO_W1A_IN; + port_w1b = GPIO_W1B_IN; + port_w2c = GPIO_W2C_IN; + + if (last_w1a != port_w1a) + printf("Port 1A = 0x%04x\n", port_w1a); + + if (last_w1b != port_w1b) + printf("Port 1B = 0x%04x\n", port_w1b); + + if (last_w2c != port_w2c) + printf("Port 2C = 0x%04x\n", port_w2c); + + last_w1a = port_w1a; + last_w1b = port_w1b; + last_w2c = port_w2c; + } +} Index: altor32/trunk/fpga/papilio_xc3s250e/sw/serial.h =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/serial.h (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/serial.h (revision 10) @@ -0,0 +1,12 @@ +#ifndef __SERIAL_H__ +#define __SERIAL_H__ + +//----------------------------------------------------------------- +// Prototypes: +//----------------------------------------------------------------- +void serial_init (void); +int serial_putchar(char ch); +int serial_getchar(void); +int serial_haschar(); + +#endif // __SERIAL_H__ Index: altor32/trunk/fpga/papilio_xc3s250e/sw/timer.h =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/timer.h (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/timer.h (revision 10) @@ -0,0 +1,21 @@ +#ifndef __TIMER_H__ +#define __TIMER_H__ + +#include "mem_map.h" + +//----------------------------------------------------------------- +// Defines: +//----------------------------------------------------------------- +typedef unsigned long t_time; + +//----------------------------------------------------------------- +// Prototypes: +//----------------------------------------------------------------- + +// General timer +void timer_init(void); +static t_time timer_now(void) { return TIMER_VAL; } +static long timer_diff(t_time a, t_time b) { return (long)(a - b); } +void timer_sleep(int timeMs); + +#endif Index: altor32/trunk/fpga/papilio_xc3s250e/sw/printf.h =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/printf.h (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/printf.h (revision 10) @@ -0,0 +1,41 @@ +#ifndef __PRINTF_H__ +#define __PRINTF_H__ + +#include "stdarg.h" + +//----------------------------------------------------------------- +// Types: +//----------------------------------------------------------------- +typedef int (*FP_OUTCHAR)(char c); + +#ifdef LIBSTD_SIZE_T_2 + typedef long unsigned int libsize_t; +#else + typedef unsigned int libsize_t; +#endif + +//----------------------------------------------------------------- +// Structures +//----------------------------------------------------------------- +struct vbuf +{ + FP_OUTCHAR function; + char * buffer; + int offset; + int max_length; +}; + +//----------------------------------------------------------------- +// Prototypes: +//----------------------------------------------------------------- +int printf(const char* ctrl1, ... ); +void printf_register(FP_OUTCHAR f); +int vsprintf(char *s, const char *format, va_list arg); +int vsnprintf(char *s, libsize_t maxlen, const char *format, va_list arg); +int sprintf(char *s, const char *format, ...); +int snprintf(char *s, libsize_t maxlen, const char *format, ...); +int vbuf_printf(struct vbuf *buf, const char* ctrl1, va_list argp); + +#define PRINTF printf + +#endif // __PRINTF_H__ Index: altor32/trunk/fpga/papilio_xc3s250e/sw/linker_script =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/linker_script (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/linker_script (revision 10) @@ -0,0 +1,52 @@ +GROUP("libgcc.a" + "libstd.a") + +MEMORY +{ + sram (rwx) : ORIGIN = 0x00002000, LENGTH = 16K +} + +SECTIONS +{ + /* first section is .text which is used for code */ + .text : + { + *(.text .text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.rdata*) + . = ALIGN(4); + } > sram + + /* .data section which is used for initialized data */ + .data : + { + *(.got.plt) *(.got) + *(.shdata) + *(.data .data.* .gnu.linkonce.d.*) + . = ALIGN(16); + *(.lit8) + *(.lit4) + *(.sdata .sdata.* .gnu.linkonce.s.*) + . = ALIGN (8); + *(.ram) + . = ALIGN (8); + _edata = .; + } > sram + + .bss : + { + . = ALIGN(4); + _bss_start = . ; + + *(.bss*) + *(COMMON) + /* Allocate room for stack */ + . = ALIGN(8) ; + . += 4096 ; + _sp = . - 16; + } > sram + + . = ALIGN(4); + _end = . ; +} Index: altor32/trunk/fpga/papilio_xc3s250e/sw/makefile =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw/makefile (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw/makefile (revision 10) @@ -0,0 +1,7 @@ +########################################################################## +# Files +########################################################################## +OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) + +include ./makefile.mk + Index: altor32/trunk/fpga/papilio_xc3s250e/sw =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/sw (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/sw (revision 10)
altor32/trunk/fpga/papilio_xc3s250e/sw Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: altor32/trunk/fpga/papilio_xc3s250e/fpga.ucf =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/fpga.ucf (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/fpga.ucf (revision 10) @@ -0,0 +1,78 @@ +################################################################################## +## BPC3003_2.03+.ucf +## +## Author: Jack Gassett +## +## Details: http://gadgetforge.gadgetfactory.net/gf/project/butterfly_one/ +## +## Contains assignment and iostandard information for +## all used pins as well as timing and area constraints for Papilio One 2.03 and higher boards. Papilio One boards started using 32Mhz oscillators at version 2.02 and above. +## +################################################################################## + +# Crystal Clock - use 32MHz onboard oscillator +NET "clk" LOC = "P89" | IOSTANDARD = LVCMOS25 | PERIOD = 31.25ns ; + +# Wing1 Column A +NET "W1A<0>" LOC = "P18" ; +NET "W1A<1>" LOC = "P23" ; +NET "W1A<2>" LOC = "P26" ; +NET "W1A<3>" LOC = "P33" ; +NET "W1A<4>" LOC = "P35" ; +NET "W1A<5>" LOC = "P40" ; +NET "W1A<6>" LOC = "P53" ; +NET "W1A<7>" LOC = "P57" ; +NET "W1A<8>" LOC = "P60" ; +NET "W1A<9>" LOC = "P62" ; +NET "W1A<10>" LOC = "P65" ; +NET "W1A<11>" LOC = "P67" ; +NET "W1A<12>" LOC = "P70" ; +NET "W1A<13>" LOC = "P79" ; +NET "W1A<14>" LOC = "P84" ; +NET "W1A<15>" LOC = "P86" ; + +# Wing1 Column B +NET "W1B<0>" LOC = "P85" ; +NET "W1B<1>" LOC = "P83" ; +NET "W1B<2>" LOC = "P78" ; +NET "W1B<3>" LOC = "P71" ; +NET "W1B<4>" LOC = "P68" ; +NET "W1B<5>" LOC = "P66" ; +NET "W1B<6>" LOC = "P63" ; +NET "W1B<7>" LOC = "P61" ; +NET "W1B<8>" LOC = "P58" ; +NET "W1B<9>" LOC = "P54" ; +NET "W1B<10>" LOC = "P41" ; +NET "W1B<11>" LOC = "P36" ; +NET "W1B<12>" LOC = "P34" ; +NET "W1B<13>" LOC = "P32" ; +NET "W1B<14>" LOC = "P25" ; +NET "W1B<15>" LOC = "P22" ; + +# Wing2 Column C +NET "W2C<0>" LOC = "P91" ; +NET "W2C<1>" LOC = "P92" ; +NET "W2C<2>" LOC = "P94" ; +NET "W2C<3>" LOC = "P95" ; +NET "W2C<4>" LOC = "P98" ; +NET "W2C<5>" LOC = "P2" ; +NET "W2C<6>" LOC = "P3" ; +NET "W2C<7>" LOC = "P4" ; +NET "W2C<8>" LOC = "P5" ; +NET "W2C<9>" LOC = "P9" ; +NET "W2C<10>" LOC = "P10" ; +NET "W2C<11>" LOC = "P11" ; +NET "W2C<12>" LOC = "P12" ; +NET "W2C<13>" LOC = "P15" ; +NET "W2C<14>" LOC = "P16" ; +NET "W2C<15>" LOC = "P17" ; + +## RS232 +NET "rx" LOC = "P88" | IOSTANDARD = LVCMOS25 ; +NET "tx" LOC = "P90" | IOSTANDARD = LVCMOS25 | DRIVE = 4 | SLEW = SLOW ; + +# SPI Flash +NET "flash_cs" LOC = "P24" ; +NET "flash_si" LOC = "P27" ; +NET "flash_so" LOC = "P44" ; +NET "flash_sck" LOC = "P50" ; Index: altor32/trunk/fpga/papilio_xc3s250e/project.xise =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/project.xise (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/project.xise (revision 10) @@ -0,0 +1,376 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index: altor32/trunk/fpga/papilio_xc3s250e/bit_to_bin.bat =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e/bit_to_bin.bat (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e/bit_to_bin.bat (revision 10) @@ -0,0 +1,2 @@ +set PATH=D:\Xilinx\13.1\ISE_DS\ISE\bin\nt +promgen -u 0x0 project\fpga_top.bit -p bin -w -b -o fpga.bin Index: altor32/trunk/fpga/papilio_xc3s250e =================================================================== --- altor32/trunk/fpga/papilio_xc3s250e (nonexistent) +++ altor32/trunk/fpga/papilio_xc3s250e (revision 10)
altor32/trunk/fpga/papilio_xc3s250e Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property Index: altor32/trunk/fpga =================================================================== --- altor32/trunk/fpga (nonexistent) +++ altor32/trunk/fpga (revision 10)
altor32/trunk/fpga Property changes : Added: bugtraq:number ## -0,0 +1 ## +true \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.