FPGA
Diseño de Sistemas con FPGA
Patricia Borensztejn
Memoria (Spartan-3)
• La Spartan-3 conjuntamente con el S3 board proveen varias
opciones de almacenamiento:
– Registros (FF): aprox. 4.5K bits (4320 LC) embebidos en las LC e I/O
buffers
– RAM distribuida: construida con las LUTS. Puede haber hasta 30K bits
en la XC3S200. (Compite por recursos con la lógica. Su uso estárentringido a aplicaciones que requieran poco almacenamiento).
– Block RAM: es un bloque especial separado de las celdas lógicas.
• Cada bloque consiste de 16K bits (mas 2K bits de paridad) organizado de
diferentes formas: desde 16K bits a 512 por 32 bits.
• En Spartan hay 12 BRAMS.
• Se pueden utilizar para: FIFO, una LUT grande, etc.
Tanto la memoria distribuida como la BRAM vienenprovistas de una
interface síncrona que permite su utilización sin que sea necesario un
controlador de memoria.
– Memoria SRAM Externa: 8Mbits, configuradas como dos 256K por 16
SRAM chips.
Familia Spartan3E
• Memoria Distribuida
• Block Ram
18532 bits por BRAM
18432 bits por BRAM
18432 (18K) bits por BRAM
Solo números
FPGA
S3 BOARD
12
4.5 K
FF
18 K
30K
LUT RAM
2
18 K
BRAM
Memoria
Distribuida
TODA LA MEMORIA ES ESTÁTICA
256 K x 16 bits
Memoria Externa
Solo números: S3E
FPGA
S3E BOARD
20
9316
FF
18 K
74496
LUT RAM
18 K
BRAM
Memoria
Distribuida
TODA LA MEMORIA ES ESTÁTICA
32M x 16 bits
Memoria Externa
LUT RAM o Memoria Distribuida
• Cada CLB está formado por cuatroSLICES interconectados,
agrupados por pares: dos de tipo SLICEM y dos de tipo SLICEL.
• Los slice tipo M son los que pueden implementar lógica o memoria.
Los de tipo L sólo implementan lógica.
LUT RAM
• Por eso, con aprox. 4320 LC sólo hay disponible
32 K bits de memoria distribuida.
LUT RAM
• Características:
– RAM de:
•
•
•
•
16 x 1 bit
Write síncrono
Read asíncronoLos LUT´s de los SLICEM se pueden poner en cascada para
formar:
– RAM de 16 x 4 bits
– RAM de 32 * 2 bits
– RAM de 64 * 1 bit
• Las señales adicionales de dirección para los casos de 32 y
64 se obtienen de entradas especiales (Bx y By)
LUT RAM
• Pueden ser single o dual port (direcciones)
• Para implementar las dual port se usan los dos LUTs del
SLICEM:
– LUT 1 : tieneUN port de lectura y de escritura
– LUT 2: tiene UN port de solo lectura (visible)
– La operación de escritura es simultánea en las dos LUTs.
LUT RAM doble puerto
Paraelcurioso…
LUT RAM : primitivas
Templates para instanciación
• Edit ->Language Templates from the menu, and then select VHDL
or Verilog, followed by Device Primitive Instantiation->FPGA >RAM/ROM ->Distributed RAM
// RAM64X1S: 64 x 1 positive edge write, asynchronous read single-port distributed RAM
//
Virtex-II/II-Pro/4/5, Spartan-3/3E/3A
// Xilinx HDL Language Template, version 10.1
RAM64X1S #(
.INIT(64'h0000000000000000) // Initial contents of RAM
) RAM64X1S_inst (
.O(O),
// 1-bit data output
.A0(A0),
// Address[0] input bit
.A1(A1),
// Address[1] input bit
.A2(A2),
//Address[2] input bit
.A3(A3),
// Address[3] input bit
.A4(A4),
// Address[4] input bit
.A5(A5),
// Address[5] input bit
.D(D),
// 1-bit data input
.WCLK(WCLK), // Write clock input
.WE(WE)
// Write enable input
);
Numeración de los SLICES
Slice Location Designations
The Xilinx development software designates the location of a slice according to its X and Y
coordinates,starting in the bottom left corner, as shown in Figure 5-1.Theletter„X‟
followed by a number identifies columns of slices, incrementing from the left side of the
dietotheright.Theletter„Y‟followedbyanumberidentifiesthepositionofeachslicein
a pair as well as indicating the CLB row, incrementing from the bottom of the die.The SLICEM...
Regístrate para leer el documento completo.