Go Back   Velocity Reviews > Newsgroups > VHDL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

VHDL - Xilinx RAM16X1D for a Stratix?

 
Thread Tools Search this Thread
Old 12-07-2003, 03:12 PM   #1
Default Xilinx RAM16X1D for a Stratix?


Hello,

I am doing some porting work and require a ram
module on a stratix fpga that behaves similarly
to this Xilinx component. I got the following from
http://toolbox.xilinx.com/docsan/xil...b0345_329.html

==>
RAM16X1D is a 16-word by 1-bit static dual port random access memory with
synchronous write capability. The device has two separate address ports: the
read address (DPRA3 - DPRA0) and the write address (A3 - A0). These two
address ports are completely asynchronous. The read address controls the
location of the data driven out of the output pin (DPO), and the write
address controls the destination of a valid write transaction.

component RAM16X1D
-- synthesis translate_off
generic (INIT : bit_vector := X"16");
-- synthesis translate_on
port (DPO : out STD_ULOGIC;
SPO : out STD_ULOGIC;
A0 : in STD_ULOGIC;
A1 : in STD_ULOGIC;
A2 : in STD_ULOGIC;
A3 : in STD_ULOGIC;
D : in STD_ULOGIC;
DPRA0 : in STD_ULOGIC;
DPRA1 : in STD_ULOGIC;
DPRA2 : in STD_ULOGIC;
DPRA3 : in STD_ULOGIC;
WCLK : in STD_ULOGIC;
WE : in STD_ULOGIC);
end component;

thanks
Jacques Viviers




jan
  Reply With Quote
Old 12-08-2003, 05:57 PM   #2
Mike Treseler
 
Posts: n/a
Default Re: Xilinx RAM16X1D for a Stratix?
jan wrote:
> Hello,
>
> I am doing some porting work and require a ram
> module on a stratix fpga that behaves similarly
> to this Xilinx component. I got the following from
> http://toolbox.xilinx.com/docsan/xil...b0345_329.html


Reread your link above and find the referenced
code to infer this device. I expect that Quartus
or Leo can infer an equivalent function.

-- Mike Treseler



Mike Treseler
  Reply With Quote
Old 12-08-2003, 06:03 PM   #3
Uwe Bonnes
 
Posts: n/a
Default Re: Xilinx RAM16X1D for a Stratix?
Mike Treseler <> wrote:
: jan wrote:
: > Hello,
: >
: > I am doing some porting work and require a ram
: > module on a stratix fpga that behaves similarly
: > to this Xilinx component. I got the following from
: > http://toolbox.xilinx.com/docsan/xil...b0345_329.html

: Reread your link above and find the referenced
: code to infer this device. I expect that Quartus
: or Leo can infer an equivalent function.

The use of the LUT as "distributed Ram" is patented by Xilinx to my
knowledge. Thus, similar functionality can be synthesized from FPGAs from
other companies, but they will normal logic resources to implement the
functionality.

Bye
--
Uwe Bonnes

Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------


Uwe Bonnes
  Reply With Quote
Old 12-08-2003, 08:56 PM   #4
Peter Sommerfeld
 
Posts: n/a
Default Re: Xilinx RAM16X1D for a Stratix?
Hi Jacques,

This is very similar to the altsyncram component of Stratix in
single-clocked simple dual-port operation, except that the smallest
block RAM on Stratix is 256x1. Altera does not have an equivalent of
Xilinx' distributed RAM.

From the link I don't know if the Xilinx RAM is pipelined. Stratix
TriMatrix memory (Stratix' equivalent of Xilinx block ram) always have
synchronous write, and either synchronous or pseudo-synchonous read.
An INIT file can also be provided. If you have Quartus II, the easiest
way to see all the options is to run Tools/MegaWizard.

See http://www.altera.com/products/devic...trimatrix.html

HTH,

-- Pete

"jan" <supergebruiker_this_is_a_anti.spam.procedure@tuks .co.za> wrote in message news:<bqvg1u$l8h$>...
> Hello,
>
> I am doing some porting work and require a ram
> module on a stratix fpga that behaves similarly
> to this Xilinx component. I got the following from
> http://toolbox.xilinx.com/docsan/xil...b0345_329.html
>
> ==>
> RAM16X1D is a 16-word by 1-bit static dual port random access memory with
> synchronous write capability. The device has two separate address ports: the
> read address (DPRA3 - DPRA0) and the write address (A3 - A0). These two
> address ports are completely asynchronous. The read address controls the
> location of the data driven out of the output pin (DPO), and the write
> address controls the destination of a valid write transaction.
>
> component RAM16X1D
> -- synthesis translate_off
> generic (INIT : bit_vector := X"16");
> -- synthesis translate_on
> port (DPO : out STD_ULOGIC;
> SPO : out STD_ULOGIC;
> A0 : in STD_ULOGIC;
> A1 : in STD_ULOGIC;
> A2 : in STD_ULOGIC;
> A3 : in STD_ULOGIC;
> D : in STD_ULOGIC;
> DPRA0 : in STD_ULOGIC;
> DPRA1 : in STD_ULOGIC;
> DPRA2 : in STD_ULOGIC;
> DPRA3 : in STD_ULOGIC;
> WCLK : in STD_ULOGIC;
> WE : in STD_ULOGIC);
> end component;
>
> thanks
> Jacques Viviers



Peter Sommerfeld
  Reply With Quote
Old 12-08-2003, 10:18 PM   #5
Mike Treseler
 
Posts: n/a
Default Re: Xilinx RAM16X1D for a Stratix?
Peter Sommerfeld wrote:
> Hi Jacques,
>
> This is very similar to the altsyncram component of Stratix in
> single-clocked simple dual-port operation, except that the smallest
> block RAM on Stratix is 256x1. Altera does not have an equivalent of
> Xilinx' distributed RAM.


Yes. Stratix has no asynchronous RAM at all,
and 512 bits is the smallest block ram.
Here's an example of a 512x1 that uses the whole block.

Jacques, you can change the add_length generic to 4 for
the closest alternate for the RAM16X1D.


-- Mike Treseler
--------------------


-- $Id: dpram512x1.vhd,v 1.2 2003/12/08 21:57:59 tres Exp $
-------------------------------------------------------------------------------
-- M. Treseler Mon Dec 8 11:40:47 2003
-------------------------------------------------------------------------------
-- Infers one 512K bit memory block for Stratix
-- Infers one large block ram for Virtex as is
-- See comments marked --! to infer Xilinx asynchronous RAM16X1D

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;


entity dpram512x1 is
generic (dat_length : natural := 1;
add_length : natural := 9 --! 4 for 16X1 RAM
);

port (clk : in std_ulogic;
data : in std_logic_vector(dat_length-1 downto 0);
rd_adr : in std_logic_vector(add_length-1 downto 0);
wr_adr : in std_logic_vector(add_length-1 downto 0);
we : in std_ulogic;
q : out std_logic_vector(dat_length-1 downto 0)
);
end dpram512x1;

architecture synth of dpram512x1 is
constant mem_size : natural := 2**add_length;
type mem_type is array (mem_size-1 downto 0) of
std_logic_vector (dat_length-1 downto 0);
signal mem : mem_type;
begin

------------------------------------------------------------------------------
ram_access : process (clk)
begin
if rising_edge(clk) then
if we = '1' then
mem(to_integer(unsigned(wr_adr))) <= data; -- raw address
end if;
end if;

if rising_edge(clk) then --!
q <= mem(to_integer(unsigned(rd_adr)));
end if; --!
-- comment 2 lines marked --! to infer Xilinx asynchronous RAM16X1D
end process ram_access;

end architecture synth; ------------------------------------------------------



Mike Treseler
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
UCF file for virtex family...using Xilinx 10.1 dhoomketu Hardware 0 05-23-2009 07:36 PM
Xilinx 7.1 and testbench error boitsas Software 0 01-15-2008 04:14 PM
Dazzle Box... swt458 Hardware 2 01-15-2008 06:06 AM
xilinx ISE8.2 error: XST779 JayTee Hardware 1 07-11-2007 01:16 PM
VHDL (Assigning pins in xilinx) amanpervaiz Hardware 3 12-02-2006 04:37 PM




SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46