tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y...

18
tema 6: memorias Diseño Automático de Sistemas José Manuel Mendías Cuadros Dpto. Arquitectura de Computadores y Automática Universidad Complutense de Madrid diseño automático de sistemas © J.M. Mendías, 2001, 2011 RAM Blocks de Xilinx (i) Xilinx incorpora en alguna de sus familias bloques de SRAM síncrona on-chip: Alta velocidad de transferencia (Spartan 3: hasta 200 MHz). Inicializables durante start-up. Doble puerto (configurable como simple) con entrada y salida de datos separados. Organizados físicamente en bloques de 1 bit de que pueden configurarse para presentar hasta 2 organizaciones lógicas distintas (una por puerto) con distinta relación de anchura/profundidad de datos. Pueden incorporarse al diseño: Por instanciación explícita de componentes de biblioteca en el código VHDL. Por inferencia a partir de construcciones VHDL. A través de la generación automática de un modulo desde la herramienta de síntesis. 2

Transcript of tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y...

Page 1: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

tema 6: memorias

Diseño Automático de Sistemas

José Manuel Mendías CuadrosDpto. Arquitectura de Computadores y Automática

Universidad Complutense de Madrid

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

RAM Blocks de Xilinx (i)

Xilinx incorpora en alguna de sus familias bloques de SRAM síncrona on-chip: Alta velocidad de transferencia (Spartan 3: hasta 200 MHz).

Inicializables durante start-up.

Doble puerto (configurable como simple) con entrada y salida de datos separados.

Organizados físicamente en bloques de 1 bit de que pueden configurarse para presentar hasta 2 organizaciones lógicas distintas (una por puerto) con distinta relación de anchura/profundidad de datos.

Pueden incorporarse al diseño: Por instanciación explícita de componentes de biblioteca en el código VHDL.

Por inferencia a partir de construcciones VHDL.

A través de la generación automática de un modulo desde la herramienta de síntesis.

2

Page 2: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

RAM Blocks de Xilinx (ii)

3

Entrada de datos: DI[#:0] / (DIA[#:0], DIB[#:0]) – Bus/es de datos de entrada.

DIP[#:0] / (DIPA[#:0], DIPB[#:0]) – Bus/es de paridad de datos de entrada.

Salida de datos: DO[#:0] / (DOA[#:0], DOB[#:0]) – Bus/es de datos de salida.

DOP[#:0] / (DOPA[#:0], DOPB[#:0]) – Bus/es de paridad de datos de salida.

Entrada de direcciones: ADDR[#:0] / (ADDRA[#:0], ADDRB[#:0]) – Bus/es de direcciones.

Entradas de control (activas en alta): EN / (ENA, ENB) – Capacitación del módulo.

SSR / (SSRA, SSRB) – Inicialización síncrona de los latches de salida.

CLK / (CLKA, CLKB) – Reloj: las operaciones se hacen a flanco de subida.

WE / (WEA, WEB) – Capacitación de escritura.

Los buses de paridad aparecen en configuraciones de más de 8 bits de anchura. Físicamente no tienen funcionalidad propia, por lo que puede ser usados libremente

Interfaz de un RAM Block

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

RAM Blocks de Xilinx (iii)

4

Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación

anchura/profundidad) para cada puerto se determina instanciando la primitiva apropiada.

Contenidos iniciales (cargados durante configuración, por defecto 0) INIT_xx – Contenido inicial de la memoria de datos.

INITP_xx – Contenido inicial de la memoria de paridad.

INIT / (INIT_A, INIT_B) – Contenido inicial de los latches de salida de datos.

Otros SRVAL / (SRVAL_A, SRVAL_B) – Valor inicialización síncrona (tras activación de la línea

SSR) de los latches de salida de datos: por defecto 0

WRITE_MODE – Comportamiento de los latches de salida de datos durante escritura. Los valores posibles son: WRITE_FIRST(valor por defecto), READ_FIRST, NO_CHANGE.

Parametrización de un RAM Block

Page 3: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

RAM Blocks de Xilinx (iv)

5

EN SSR WE CLK DO/DOP Memoria

Tras configuración X X X X INIT INIT_xx / INTP_xx

RAM desabilitada 0 X X X No cambia No cambia

Reset síncrono 1 1 0 ↑ SRVAL No cambia

Reset síncrono durante escritura 1 1 1 ↑ SRVAL RAM(ADDR) ← DI/DIP

Lectura sin escritura 1 0 0 ↑ RAM(ADDR) No cambia

Escritura con lectura simultáneaWRITE_MODE = WRITE_FIRST

1 0 1 ↑

DI/DIP

RAM (ADDR) ← DI/DIPEscritura con lectura simultáneaWRITE_MODE = READ_FIRST

RAM(ADDR)

Escritura con lectura simultáneaWRITE_MODE = NO_CHANGE

No cambia

Modos de funcionamiento

En las memorias configuradas con doble puerto, aparecen conflictos cuando: Se intenta escribir por cada puerto un valor distinto en la misma posición de memoria.

Se intenta escribir una posición de memoria por un puerto configurado en modo WRITE_FIRST o NO_CHANGE y leer la misma posición por el otro.

Se intenta escribir una posición de memoria por un puerto, leer/escribir la misma posición por el otro y los relojes de cada puerto son asíncronos entre sí.

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

RAM Blocks de Xilinx (iv)

6

Page 4: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

RAM Blocks en Spartan 3

7

Organizaciones como RAM de doble puerto

Organizaciones como RAM de simple puerto

El bloque primitivo en la familia Spartan 3, es una memoria de (16+2)K×1 bit Las distintas organizaciones lógicas que puede adoptar este bloque se encuentran en la

biblioteca UNISIM, paquete VCOMPONENTS.

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

primitiva de puerto simple

8

component RAMB16_S9generic(INIT : bit_vector := X"000";SRVAL : bit_vector := X"000";WRITE_MODE : string := "WRITE_FIRST";INIT_00 : bit_vector := X"00000...00000";...INIT_3F : bit_vector := X"00000...00000";INITP_00 : bit_vector := X"00000...00000";...INITP_07 : bit_vector := X"00000...00000”);

port(DO : out STD_LOGIC_VECTOR (7 downto 0);DOP : out STD_LOGIC_VECTOR (0 downto 0);ADDR : in STD_LOGIC_VECTOR (10 downto 0);CLK : in STD_ULOGIC;DI : in STD_LOGIC_VECTOR (7 downto 0);DIP : in STD_LOGIC_VECTOR (0 downto 0);EN : in STD_ULOGIC;SSR : in STD_ULOGIC;WE : in STD_ULOGIC);

end component;

Inicialización de la memoria de datos:64 cadenas de 64 dígitos hexadecimales

64 × 64 × 4 = 16 Kb

Inicialización de la memoria de paridad:8 cadenas de 64 dígitos hexadecimales

8 × 64 × 4 = 2 Kb

Memoria de puerto simple organizada lógicamente como 2K×(8D+1P)

Page 5: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

primitiva de puerto doble

9

component RAMB16_S9_S9generic(

INIT_00 : bit_vector := X"00000...00000";...INIT_3F : bit_vector := X"00000...00000";INITP_00 : bit_vector := X"00000...00000";...INITP_07 : bit_vector := X"00000...00000";INIT_A : bit_vector := X"000";INIT_B : bit_vector := X"000";SRVAL_A : bit_vector := X"000";SRVAL_B : bit_vector := X"000";WRITE_MODE_A : string := "WRITE_FIRST";WRITE_MODE_B : string := "WRITE_FIRST");

port(DOA : out STD_LOGIC_VECTOR (7 downto 0);DOB : out STD_LOGIC_VECTOR (7 downto 0);DOPA : out STD_LOGIC_VECTOR (0 downto 0);DOPB : out STD_LOGIC_VECTOR (0 downto 0);ADDRA : in STD_LOGIC_VECTOR (10 downto 0);ADDRB : in STD_LOGIC_VECTOR (10 downto 0);CLKA : in STD_ULOGIC;CLKB : in STD_ULOGIC;DIA : in STD_LOGIC_VECTOR (7 downto 0);DIB : in STD_LOGIC_VECTOR (7 downto 0);DIPA : in STD_LOGIC_VECTOR (0 downto 0);DIPB : in STD_LOGIC_VECTOR (0 downto 0);ENA : in STD_ULOGIC;ENB : in STD_ULOGIC;SSRA : in STD_ULOGIC;SSRB : in STD_ULOGIC;WEA : in STD_ULOGIC;WEB : in STD_ULOGIC);

end component;

Inicialización independiente dela organización lógica

Memoria de doble puerto organizada lógicamente desde ambos puertos

como 2K×(8D+1P)

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplos de uso (i)

10

library UNISIM;use UNISIM.vcomponents.all

architecture ... of ... issignal addr: std_logic_vector(10 downto 0);signal di, do: std_logic_vector(7 downto 0);...

beginmem_2Kx8b: RAMB16_S9

port map( do, open, addr, clk, di, "0", '1', '0', we );...

end ...;

library UNISIM;use UNISIM.vcomponents.all

architecture ... of ... issignal addr: std_logic_vector(13 downto 0);signal di, do: std_logic_vector(7 downto 0); ...

beginmem_16Kx8b: for n in 7 downto 0 generate

slice: RAMB16_S1port map( do(n downto n), addr, clk, di(n downto n), '1', '0', we);

end generate;...

end ...;

Especificación de una memoria 2K×8usando 1 Block RAM organizado en 2K×9

Especificación de una memoria 16K×8 usando 8 Block RAM organizados en 16K×1

Page 6: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplos de uso (ii)

11

library IEEE, UNISIM;use UNISIM.vcomponents.alluse std_logic_unsigned.all

libraryarchitecture ... of ... is

signal addr: std_logic_vector (13 downto 0);signal di, do: std_logic_vector (7 downto 0);signal en: std_logic_vector(7 downto 0); signal we: std_logic;type dataVector is array (7 downto 0) of std_logic_vector (7 downto 0);signal doVector: dataVector;...

beginaddr_dec: process( addr )begin

en <= (others => '0');en( conv_integer( addr(13 downto 11) ) ) <= '1';

end process;

mem_16KBx8b: for n in 7 downto 0 generateslice: RAMB16_S9

port map(doVector(n), open, addr(10 downto 0), clk, di, "0", en(n), '0', we);end generate;

do_mux:do <= doVector( conv_integer( addr(13 downto 11) ) );

...end ...;

Especificación de una memoria 16K×8 usando 8 Block RAM organizados en 2K×9

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

organización de una RAM estática (SRAM)

12

Matriz dememoria

AMSB

Am

plif

icad

or

Buffers de entrada

Dec

ofic

ador

de

fila

s

Decodificador de columnas

I/O0

Control

WE* OE* CE*

ALSB

I/On-1

CS*

HLLL

OE*

XHLX

WE*

XHHL

Modo

no seleccionadosalida desabilitada

lecturaescritura

I/O

alta impedanciaalta impedancia

salidaentrada

SRAM de 2n palabrasde m bits

CS*

OE*

WE*

A

I/Om

n

Page 7: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ciclos de acceso a una SRAM

13

Ciclo de lectura(CE* = X, WE* = 1, OE* =X, A = X )

A

CE*

OE*

I/O

zona con datosestables de salida

alta impedancia

zona

de

ince

rtid

umbr

e

zona

de

ince

rtid

umbr

e

iniciode ciclo

finde ciclo

A

I/Oentrada

I/Osalida

CE*

WE*

finde ciclo

iniciode ciclo

zona de aceptaciónde datos de entrada

alta impedancia

zona

de

ince

rtid

umbr

e

zona

de

ince

rtid

umbr

e

Ciclo de escritura(CE* = X, WE* = X, OE* =X, A = X )

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ciclo de lectura (i)

14

tRC: Tiempo de ciclo de lectura mínimo.

tAA: Tiempo máximo de acceso desde dirección estable.

tACE: Tiempo máximo de acceso desde la selección del dispositivo.

tAOE: Tiempo máximo de acceso desde la activación de la señal de lectura.

tOH: Tiempo mínimo de permanencia de los datos (hold) en la salida.

tCLZ: Tiempo mínimo de desactivación de alta impedancia desde la

selección del dispositivo.

tOLZ: Tiempo mínimo de desactivación de alta impedancia desde la

activación de la señal de lectura.

tCHZ: Tiempo máximo de puesta en alta impedancia desde la deselección

del dispositivo.

tOHZ: Tiempo máximo de puesta en alta impedancia desde la desactivación

de la señal de lectura.

Lectura general(CE* = X, WE* = 1, OE* =X, A = X )

tRC (min)

tOHZ (max)

tAA (max)

tACE (max)

tOH (min)

tAOE (max)

A

CE*

OE*

I/O

tCHZ (max)tCLZ (min)

tOLZ (min)

inicio de ciclo fin de ciclo

Page 8: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ciclo de lectura (ii): simplificaciones

15

Lecturas dirigidas por dirección(CE* = 0, WE* = 1, OE* = 0, A = X)

tAA (max)

A

tOH (min)tOH (min)

tRC (min)

I/O

Sistemas con un único módulo de SRAM en el

que sólo se hacen lecturas

Sistemas con un único módulo de SRAM en el que

se hacen lecturas y escrituras

Sistemas con varios módulos de SRAM en bus común en los que sólo se

hacen lecturas

tRC (min)

tOHZ (max)

tAA (max)

tOH (min)

tAOE (max)

A

OE*

I/O

tOLZ (min)

Lecturas dirigidas por OE* (CE* = 0, WE* = 1, OE* = X, A = X)

tRC (min)

tCHZ (max)

tAA (max)

tOH (min)

tACE (max)

A

CE*

I/O

tCLZ (min)

Lecturas dirigidas por CE* (CE* = X, WE* = 1, OE* = 0, A = X)

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ciclo de escritura (i)

16

I/Oentrada

I/Osalida

tWC: Tiempo mínimo de ciclo de escritura

tAS: Tiempo mínimo de establecimiento de las direcciones

tDW: Tiempo mínimo de establecimiento de los datos

tAW: Tiempo mínimo de validez de direcciones

tAH: Tiempo mínimo de permanencias de las direcciones

tDH: Tiempo mínimo de permanencia de los datos

tCW: Anchura mínima del pulso de selección de chip

tWP: Anchura mínima del pulso de escritura

tWZ: Tiempo máximo de puesta en alta impedancia

tOW: Tiempo mínimo de desactivación de alta impedancia

Escritura general(CE* = X, WE* = X, OE* =X, A = X )

tDH (min)

tWC (min)

tCW (min)

tDW (min)

A

CE*

WE*

tAH (min)tAS (min)

tWP (min)

tAW (min)

tWZ (max) tOW (min)

Page 9: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ciclo de escritura (ii): simplificaciones

17

Escrituras dirigidas por WE* (CE* = 0, WE* = X, OE* = 1, A = X)

tDH (min)

tWC (min)

tWP (min)

tDW (min)

A

WE*

I/Oentrada

tAH (min)tAS (min)

I/Osalida

tWZ (max) tOW (min)

tAW (min)

I/Oentrada

I/Osalida

tDH (min)

tWC (min)

tCW (min)

tDW (min)

A

CE*

tAH (min)tAS (min)

tWZ (max) tOW (min)

tAW (min)

Escrituras dirigidas por CE* (CE* = X, WE* = 0, OE* =1, A = X)

Escrituras dirigidas por dirección(CE* = 0, WE* = 1, OE* = X, A = X)

Aunque son posibles, no son recomendables

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

SRAM en las placas de prototipado (i)

18

A14 — P60A13 — P58A12 — P50A11 — P56A10 — P51A9 — P57A8 — P59A7 — P84A6 — P83A5 — P82A4 — P79A3 — P78A2 — P5A1 — P4A0 — P3

D7 — P10D6 — P80D5 — P81D4 — P35D3 — P38D2 — P39D1 — P40D0 — P41

W24257A

K-15 (right)

(SR

AM

32K8)

AS

7C256-15JC

(SR

AM

32K8)

W24257A

K-15 (left)

(SR

AM

32K8)

WE* — P62OE* — P61

CE* — P65 CE* — P7 CE* — P8

tipo A, B tipo C

A14 — P60A13 — P58A12 — P50A11 — P56A10 — P51A9 — P57A8 — P59A7 — P84A6 — P83A5 — P82A4 — P79A3 — P78A2 — P5A1 — P4A0 — P3

D7 — P10D6 — P80D5 — P81D4 — P35D3 — P38D2 — P39D1 — P40D0 — P41

AS

7C1024 -

15TJC

(SR

AM

128K8)

WE* — P62OE* — P61

CE* — P65

A16 — P16A15 — P28

Page 10: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

SRAM en las placas de prototipado (ii)

19

A14 — P234A13 — P235A12 — P236A11 — P237A10 — P238A9 — P187A8 — P188A7 — P189A6 — P191A5 — P192A4 — P193A3 — P194A2 — P195A1 — P199A0 — P200

D7 — P215D6 — P209D5 — P208D4 — P207D3 — P206D2 — P205D1 — P203D0 — P202

AS

7C4096-15JC

(left bank)(S

RA

M 512K

8)WE* — P201OE* — P228

A18 — P229A17 — P230A16 — P231A15 — P232

CE* — P186

AS

7C4096-15JC

(left bank)(S

RA

M 512K

8)

D7 — P224D6 — P223D5 — P222D4 — P221D3 — P220D2 — P218D1 — P217D0 — P216

A14 — P101A13 — P102A12 — P103A11 — P107A10 — P108A9 — P53A8 — P54A7 — P55A6 — P56A5 — P57A4 — P63A3 — P64A2 — P65A1 — P66A0 — P67

D7 — P80D6 — P79D5 — P78D4 — P74D3 — P73D2 — P72D1 — P71

D0 — P70

AS

7C4096-15JC

(right bank)(S

RA

M 512K

8)

WE* — P68OE* — P95

A18 — P96A17 — P97A16 — P99A15 — P100

CE* — P109

AS

7C4096-15JC

(right bank)(S

RA

M 512K

8)

D7 — P94D6 — P93D5 — P87D4 — P86D3 — P85D2 — P84D1 — P82D0 — P81

tipo D

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

SRAM en las placas de prototipado (iii)

20

Lectura general(CE* = X, WE* = 1, OE* =X, A = X )

15 ns (min)

4 ns (max)

15 ns (max)

15 ns (max)

3 ns (min)

4 ns (max)

A

CE*

OE*

I/O

4 ns (max)3 ns (min)

0 ns (min)

Escritura general(CE* = X, WE* = X, OE* =X, A = X )

0 ns (min)

15 ns (min)

12 ns (min)

8 ns (min)

A

CE*

WE*

0 ns (min)0 ns (min)

9 ns (min)

12 ns (min)

5 ns (max) 3 ns (min)

I/Oentrada

I/Osalida

ciclos de acceso de AS7C256-15

Page 11: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (i): un interfaz síncrono de SRAM

21

Diseñar un circuito que actúe de interfaz síncrono con una SRAM de 8 bits. Acepta una palabra de 16 bits y una dirección.

Escribe o lee la palabra de dos direcciones consecutivas con ordenación big-endian.

El circuito debe usar un protocolo tipo strobe con espera: Debe aceptar el tipo de operación con memoria, el dato y/o la dirección durante el ciclo en

que memRqt permanece activa, indicando mediante memRdy su disponibilidad para la transferencia.

rstclk

memRqt

memOp

addr

dataIn

dataOut

memRdy

15

16

16

Interfaz dememoria

a

io

15

8

ce*

oe*

we*

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (ii): mal diseño – ruta de datos

22

dataMsbldMsb

msbSrc

dataLsbldLsb

lsbSrc

dumpMsb dumpLsb

data

Out

dataIn

io

addrRegldAddr

aSrc

inc

addr

a

1 0 01

1 0

Page 12: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (iii): mal diseño – controlador

23

puertos:memRqt : in : 1 bit : log. positivamempOp : in : 1 bitmemRdy : out : 1 bit : log. positiva := 0ce : out : 1 bit : log. negativa := 0we, oe : out : 1 bit : log. negativa := 1aSrc, msbSrc, lsbSrc : out : 1 bit := XldAddr, ldMsb, ldLsb : out : 1 bit : log. positiva := 0dumpMsb, dumpLsb : out : 1 bit : log. positiva := 0

estado inicial: espera

espera

memRdy

no memRqt

lecturaMsb

msbSrc*, ldMsbaSrc, oe*

lecturaLsb

lsbSrc*, ldLsbaScr*, oe*

escrituraMsb

dumpMsbaSrc, we*

escrituraLsb

dumpLsbaSrc*, we*

memRqt and no memOp

ldAddrmsbSrc, ldMsblsbSrc, ldLsb

memRqt and memOp

ldAddr

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (iv): mal diseño – simulación funcional

24

estado escrMSB escrLSB lecMSB lecLSBesperaespera espera

addr

dataIn

dataOut

a

io

we

oe

dir1

dir1 dir1+1

dat1

dat115..8 dat17..0

dat1

dir2

dir2 dir2+1

M(dir2) M(dir2+1)

M(dir2) & M(dir2+1)

clk

memRqt

memOp

memRdy

lect

uraes

critu

ra

Page 13: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (v): mal diseño – operación lectura

25

io

dir2a dir2+1

oe

tatAA

toe tdi

ctrlReg

LC

oe

t oe

= t c

lk-q

+ t c

omb

t a=

t clk

-q+

t inc

+ t m

ux

addrReg

inc

a

1 0

t di=

t RA

M-io

+ t m

ux+

t s

dataXXX

io

1 0

M(dir2) M(dir2+1)

tOHZtOH

clk

tOLZ

tAOE

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (vi): mal diseño – temporización

26

io

a

oe

80 ns

35 ns

15 ns

45 ns > 15 ns

3 ns 4 ns

20 ns

Considerando un circuito para el que: tclk = 80 ns (12.5 MHz), ta = 35 ns, toe = 10 ns, tdi = 20 ns

y que usa SRAM AS7C256-15, chequeemos: que tRC se respeta que el slack es positivo.

M(dir2) M(dir2+1)

dir2 dir2+1

10 ns

10 ns

clk

Page 14: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (vii): mal diseño – operación escritura

27

twe

ctrlReg

LC

we

t we

= t c

lk-q

+ t c

omb

t do

= t c

lk-q

+ t b

uff

t a=

t clk

-q+

t add

+ t m

ux

dataXXX

io

addrReg

inc

a

1 0

dir2

dat115..8

a

io

dir2+1

dat17..0

tdo

we

ta

ta > twe

clk

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (viii): 1er buen diseño – modular we con clk

28

tdo

ta

tor

a

io

we

dir2

dat115..8

dir2+1

dat17..0

t do

= t c

lk-q

+ t b

uff

t a=

t clk

-q+

t add

+ t m

ux

dataMsb

io

addrReg

inc

a

1 0

ctrlReg

LC

we

t we

= t c

lk-q

+ t c

omb

clk

clk

weAux

Page 15: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (ix): 1er buen diseño – temporización

29

Considerando un circuito para el que: tclk = 80 ns (12.5 MHz), ta = 35 ns, tor = 7 ns, tdo = 5 ns

y que usa SRAM AS7C256-15, chequeemos : que se respetan tWC, tWP, tAW, tDW

tAS, tAH y tDH no se chequean porque para esta SRAM valen 0.

5 ns

35 ns

7 ns

80 ns

40 ns > 9 ns

52 ns > 12 ns

a

io

we

45 ns > 15 ns

82 ns > 8 ns

2 ns < 8 ns

dat115..8 dat17..0

dir2 dir2+1

clk

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (x): 2do buen diseño – controlando con WE

30

5 ns

35 ns

7 ns

80 ns

40 ns > 9 ns

52 ns > 12 ns

a

io

we

45 ns > 15 ns

37 ns > 8 ns

2 ns < 8 ns

dat115..8 dat17..0

Dado que las operaciones de escritura son prioritarias sobre las de lectura, cuando hay un único módulo la SRAM puede controlarse únicamente con la línea de WE*, dejando CE* y OE* activadas constantemente. obsérvese cómo en la porción de ciclo en la que WE está desactivada, io está

indeterminada ya que tanto la SRAM como el circuito vuelcan datos.

clk

Page 16: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (xi): 3er buen diseño – registrar puertos

31

dir2

dat115..8

a

io

dir2+1

dat17..0

tdo

we

ta

ctrlReg

LC

we

t we

= t c

lk-q

+ t c

omb

t do

= t c

lk-q

+ t b

uff

t a=

t clk

-q

dataMsb

io

addrReg

oe

twe

clk

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (xii): 3er buen diseño – temporización

32

Considerando un circuito para el que: tclk = 80 ns (12.5 MHz), ta = 5 ns, twe = 10 ns, tdo = 5 ns

y que usa SRAM AS7C256-15, chequeemos : que se respetan tWC, tWP, tAW, tDW

tAS, tAH y tDH no se chequean porque para esta SRAM valen 0.

80 ns

5 ns

dir2

dat115..8

a

io

dir2+1

dat17..0

we

clk

80 ns > 15 ns85 ns > 8 ns

85 ns > 12 ns

160 ns > 9 ns

5 ns < 8 ns

Page 17: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (xiii): 3er buen diseño – ruta de datos

33

addrRegldAddr

addrSrc

inc

addr

a

dataMsbldMsb

msbSrc

dataLsbldLsb

lsbSrc

dumpMsb dumpLsb

data

Out

dataIn

io

1 0 011 0

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (xiv): 3er buen diseño – controlador

34

puertos:memRqt : in : 1 bit : log. positivamempOp : in : 1 bitmemRdy : out : 1 bit : log. positiva := 0ce : out : 1 bit : log. negativa := 0we, oe : out : 1 bit : log. negativa := 1addrSrc, msbSrc, lsbSrc : out : 1 bit := XldAddr, ldMsb, ldLsb : out : 1 bit : log. positiva := 0dumpMsb, dumpLsb : out : 1 bit : log. positiva := 0

estado inicial: espera

espera

memRdy

no memRqt

lecturaMsb

msbSrc*, ldMsbaddrSrc*, ldAddr

oe*

lecturaLsb

lsbSrc*, ldLsboe*

escrituraMsb

addrSrc*, ldAddrdumpMsb

we*escrituraLsb

dumpLsbwe*

memRqt and no memOp

addrSrc, ldAddrmsbSrc, ldMsblsbSrc, ldLsb

memRqt and memOp

addrSrc, ldAddr

Page 18: tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y la organización lógica de la memoria (relación anchura/profundidad) para cada

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (xiii): 4o buen diseño – 2 ciclos de escritura

35

clk

estado escMsb1 escMsb2 lecMSBesperaespera

memRqt

memOp

memRdy

addr

dataIn

dataOut

a

io

we

oe

dir1

dir1 dir1+1

dat1

dat17..0

dat1

dir2

dir2 dir2+1

M(dir2) M(dir2+1)

escLsb2escLsb1

dat115..8

diseño automático de sistemas

© J

.M.

Men

días

, 200

1, 2

011

ejemplo (xiv): 4o buen diseño – controlador

36

puertos:memRqt : in : 1 bit : log. positivamempOp : in : 1 bitmemRdy : out : 1 bit : log. positiva := 0ce : out : 1 bit : log. negativa := 0we, oe : out : 1 bit : log. negativa := 1addrSrc, msbSrc, lsbSrc : out : 1 bit := XldAddr, ldMsb, ldLsb : out : 1 bit : log. positiva := 0dumpMsb, dumpLsb : out : 1 bit : log. positiva := 0

estado inicial: espera

espera

memRdy

no memRqt

escrituraMsb1

dumpMsb

escrituraLsb1

dumpLsb

memRqt and no memOp

addrSrc, ldAddrmsbSrc, ldMsblsbSrc, ldLsb

memRqt and memOp

addrSrc, ldAddr

escrituraMsb2

addrSrc*, ldAddrdumpMsb

we*

escrituraLsb2

dumpLsb, we*

lecturaMsb

msbSrc*, ldMsbaddrSrc*, ldAddr

oe*

lecturaLsb

lsbSrc*, ldLsboe*