Distributed RAM and BLOCK RAM -- BLOCK RAM Template.
Sure you can use Blocked Ram for this purpose.
Lookup tables are used as distibuted RAM in xilinix Spartan 3 . Each of the CLB consists of 64 - bit single port RAM or 32 bit dual port RAM which is evenly distributed throughout the FPGA.
Since its equally distributed it is refered as Distributed RAM.
Distributed RAM is fast localized and can be used for small bufferings. This Distributed RAM is present in each of the CLB itself. LUT within in the CLB is implemented using a SRAM.There are 2 LUTs withing *SLICEM unit with one used for READ/WRITE Port and the other used only for READ port. The first one writes into the 16X1 SRAM and the other writes independently. Since the read write operation takes place independently this Distributed RAM is considerably fast.
This distributed RAM supports two memory types one being Single port and the other being DUAL port RAM.
Single port : - Read/Write Operation
Dual Port : - Read operation and Read/Write operation
There is also an embedded 16K block RAM. BLOCK RAMs are large block of Dual Ported memory with one Read and Write port, so i guess you cannot Read and Write at the same time like what you could in a Distributed RAM.(I might be wrong correct me if I am ), This might be one good reason why a Distributed RAM is faster than Block RAM.
VHDL and Verilog logic synthesis tools, such as the Xilinx Synthesis Tool (XST) and Synplicity Synplify, infer block RAM based on the hardware described. The Xilinx ISE Project Navigator includes templates for inferring block RAM in your design. To use the templates within Project Navigator, select Edit ! Language Templates from the menu, and then select VHDL or Verilog, followed by Synthesis Templates, RAM from the selection tree. Finally, select the preferred distributed RAM template.
I have uploaded a template for the Block RAM which u can use in XILINX ISE and try to implement.
I hope this might help you.
Note : - * SLICEM : - Consists of LOGIC/ROM distributed RAM Shift register