Line 1... |
Line 1... |
-- $Id: ram_1swsr_xfirst_gen_unisim.vhd 314 2010-07-09 17:38:41Z mueller $
|
-- $Id: ram_1swsr_xfirst_gen_unisim.vhd 406 2011-08-14 21:06:44Z mueller $
|
--
|
--
|
-- Copyright 2008- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
-- Copyright 2008-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
--
|
--
|
-- This program is free software; you may redistribute and/or modify it under
|
-- This program is free software; you may redistribute and/or modify it under
|
-- the terms of the GNU General Public License as published by the Free
|
-- the terms of the GNU General Public License as published by the Free
|
-- Software Foundation, either version 2, or at your option any later version.
|
-- Software Foundation, either version 2, or at your option any later version.
|
--
|
--
|
Line 17... |
Line 17... |
-- Direct instantiation of Xilinx UNISIM primitives
|
-- Direct instantiation of Xilinx UNISIM primitives
|
--
|
--
|
-- Dependencies: -
|
-- Dependencies: -
|
-- Test bench: -
|
-- Test bench: -
|
-- Target Devices: Spartan-3, Virtex-2,-4
|
-- Target Devices: Spartan-3, Virtex-2,-4
|
-- Tool versions: xst 8.1, 8.2, 9.1, 9.2; ghdl 0.18-0.25
|
-- Tool versions: xst 8.1, 8.2, 9.1, 9.2,.., 13.1; ghdl 0.18-0.25
|
-- Revision History:
|
-- Revision History:
|
-- Date Rev Version Comment
|
-- Date Rev Version Comment
|
|
-- 2011-08-14 406 1.0.2 cleaner code for L_DI initialization
|
-- 2008-04-13 135 1.0.1 fix range error for AW_14_S1
|
-- 2008-04-13 135 1.0.1 fix range error for AW_14_S1
|
-- 2008-03-08 123 1.0 Initial version
|
-- 2008-03-08 123 1.0 Initial version
|
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
|
|
library ieee;
|
library ieee;
|
Line 69... |
Line 70... |
constant dw_mem : positive := ((DWIDTH+35)/36)*36;
|
constant dw_mem : positive := ((DWIDTH+35)/36)*36;
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
begin
|
begin
|
|
|
|
DI_PAD: if dw_mem>DWIDTH generate
|
|
L_DI(dw_mem-1 downto DWIDTH) <= (others=>'0');
|
|
end generate DI_PAD;
|
L_DI(DI'range) <= DI;
|
L_DI(DI'range) <= DI;
|
|
|
GL: for i in dw_mem/36-1 downto 0 generate
|
GL: for i in dw_mem/36-1 downto 0 generate
|
MEM : RAMB16_S36
|
MEM : RAMB16_S36
|
generic map (
|
generic map (
|
Line 121... |
Line 125... |
constant dw_mem : positive := ((DWIDTH+17)/18)*18;
|
constant dw_mem : positive := ((DWIDTH+17)/18)*18;
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
begin
|
begin
|
|
|
|
DI_PAD: if dw_mem>DWIDTH generate
|
|
L_DI(dw_mem-1 downto DWIDTH) <= (others=>'0');
|
|
end generate DI_PAD;
|
L_DI(DI'range) <= DI;
|
L_DI(DI'range) <= DI;
|
|
|
GL: for i in dw_mem/18-1 downto 0 generate
|
GL: for i in dw_mem/18-1 downto 0 generate
|
MEM : RAMB16_S18
|
MEM : RAMB16_S18
|
generic map (
|
generic map (
|
Line 173... |
Line 180... |
constant dw_mem : positive := ((DWIDTH+8)/9)*9;
|
constant dw_mem : positive := ((DWIDTH+8)/9)*9;
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
begin
|
begin
|
|
|
|
DI_PAD: if dw_mem>DWIDTH generate
|
|
L_DI(dw_mem-1 downto DWIDTH) <= (others=>'0');
|
|
end generate DI_PAD;
|
L_DI(DI'range) <= DI;
|
L_DI(DI'range) <= DI;
|
|
|
GL: for i in dw_mem/9-1 downto 0 generate
|
GL: for i in dw_mem/9-1 downto 0 generate
|
MEM : RAMB16_S9
|
MEM : RAMB16_S9
|
generic map (
|
generic map (
|
Line 225... |
Line 235... |
constant dw_mem : positive := ((DWIDTH+3)/4)*4;
|
constant dw_mem : positive := ((DWIDTH+3)/4)*4;
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
begin
|
begin
|
|
|
|
DI_PAD: if dw_mem>DWIDTH generate
|
|
L_DI(dw_mem-1 downto DWIDTH) <= (others=>'0');
|
|
end generate DI_PAD;
|
L_DI(DI'range) <= DI;
|
L_DI(DI'range) <= DI;
|
|
|
GL: for i in dw_mem/4-1 downto 0 generate
|
GL: for i in dw_mem/4-1 downto 0 generate
|
MEM : RAMB16_S4
|
MEM : RAMB16_S4
|
generic map (
|
generic map (
|
Line 254... |
Line 267... |
constant dw_mem : positive := ((DWIDTH+1)/2)*2;
|
constant dw_mem : positive := ((DWIDTH+1)/2)*2;
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DO : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
signal L_DI : slv(dw_mem-1 downto 0) := (others=> '0');
|
begin
|
begin
|
|
|
|
DI_PAD: if dw_mem>DWIDTH generate
|
|
L_DI(dw_mem-1 downto DWIDTH) <= (others=>'0');
|
|
end generate DI_PAD;
|
L_DI(DI'range) <= DI;
|
L_DI(DI'range) <= DI;
|
|
|
GL: for i in dw_mem/2-1 downto 0 generate
|
GL: for i in dw_mem/2-1 downto 0 generate
|
MEM : RAMB16_S2
|
MEM : RAMB16_S2
|
generic map (
|
generic map (
|