tema 6: memorias - fdi.ucm.es · Organización de la memoria El número de puertos (simple/doble) y...
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/1.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/2.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/3.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/4.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/5.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/6.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/7.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/8.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/9.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/10.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/11.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/12.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/13.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/14.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/15.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/16.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/17.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022011808/5c6e4ca309d3f274098c8f11/html5/thumbnails/18.jpg)
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*