![Xilinx Virtex-5 FPGA ML561 User Manual Download Page 131](http://html.mh-extra.com/html/xilinx/virtex-5-fpga-ml561/virtex-5-fpga-ml561_user-manual_887106131.webp)
Virtex-5 FPGA User Guide
131
UG190 (v5.0) June 19, 2009
Block RAM Initialization in VHDL or Verilog Code
Block RAM Location Constraints
Block RAM instances can have LOC properties attached to them to constrain placement.
Block RAM placement locations differ from the convention used for naming CLB locations,
allowing LOC properties to transfer easily from array to array.
The LOC properties use the following form:
LOC = RAMB36_X#Y#
The RAMB36_X0Y0 is the bottom-left block RAM location on the device. If RAMB36 is
constrained to RAMB36_X#Y#, the FIFO cannot be constrained to FIFO36_X#Y# since they
share a location.
Two RAMB18s can be placed in the same RAMB36 location by using the BEL
UPPER/LOWER constraint:
inst ”my_ramb18” LOC = RAMB36_X0Y0 | BEL = UPPER
inst ”my_ramb18” LOC = RAMB36_X0Y0 | BEL = LOWER
In addition, one FIFO18 and one RAMB16 can be placed in the same RAMB36 location, no
BEL constraint is required:
inst ”my_fifo18” LOC = RAMB36_X0Y0
inst ”my_ramb18” LOC = RAMB36_X0Y0
Block RAM Initialization in VHDL or Verilog Code
Block RAM memory attributes and content can be initialized in VHDL or Verilog code for
both synthesis and simulation by using generic maps (VHDL) or defparams (Verilog)
within the instantiated component. Modifying the values of the generic map or defparam
will effect both the simulation behavior and the implemented synthesis results. The
Virtex-5 FPGA Libraries Guide includes the code to instantiate the RAMB36 primitive.
Additional RAMB18 and RAMB36 Primitive Design Considerations
The RAMB18 and RAMB36 primitives are integral in the Virtex-5 FPGA block RAM
solution.
Optional Output Registers
Optional output registers can be used at either or both A|B output ports of RAMB18 and
RAMB36. The choice is made using the DO[A|B]_REG attribute. The two independent
clock enable pins are REGCE[A|B]. When using the optional output registers at port
[A|B], assertion of the synchronous set/reset (SSR) pin of ports [A|B] causes the value
specified by the attribute SRVAL to be registered at the output.
shows an
optional output register.
Independent Read and Write Port Width
To specify the port widths using the dual-port mode of the block RAM, designers must use
the READ_WIDTH_[A|B] and WRITE_WIDTH_[A|B] attributes. The following rules
should be considered:
•
Designing a single port block RAM requires the port pair widths of one write and one
read to be set (e.g., READ_WIDTH_A and WRITE_WIDTH_A).
•
Designing a dual-port block RAM requires all port widths to be set.
Summary of Contents for Virtex-5 FPGA ML561
Page 1: ...Virtex 5 FPGA User Guide UG190 v5 0 June 19 2009 ...
Page 8: ...Virtex 5 FPGA User Guide www xilinx com UG190 v5 0 June 19 2009 ...
Page 20: ...20 www xilinx com Virtex 5 FPGA User Guide UG190 v5 0 June 19 2009 ...
Page 24: ...24 www xilinx com Virtex 5 FPGA User Guide UG190 v5 0 June 19 2009 Preface About This Guide ...
Page 172: ...172 www xilinx com Virtex 5 FPGA User Guide UG190 v5 0 June 19 2009 Chapter 4 Block RAM ...