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