25.0 SRAM (СТАТИЧЕСКАЯ ПАМЯТЬ)




SRAM (Static Random Access Memory)


обозначение памяти SRAM 16x1 (16 бит).
DIN/ANSI




Вот так выглядит ячейка SRAM построенная по CMOS технологии. Топология:

Запись в ячейку: Устанавливают X, X' = X# затем активируют линию word line. Чтение ячейки: активируют линию word line. если ячейка хранит 1 то X = 1, X' = 0 если ячейка хранит 0 то X = 0, X' = 1

+-----+ +------------+ A0 | DC | | Memory | ====> |Line |--->| Matrix | Ai | | | | +-----+ +------------+ ^ ^ ^ | | | V V V Ai+1 +-----+ +------------+ ====>| Ctl |--->| MUX | An | | +------------+ EN ---->| | ^ | WE ---->| | | | +-----+ | V DI DO EN - Enable WE - Write Enable DI - Data in DO - Data out


Поведенческая модель Generic SRAM на VHDL: library ieee; use ieee.std_logic_1164.all; entity gsram is generic( data_width : integer := 8; addr_width : integer := 8); port( DI : in std_logic_vector((data_width-1) downto 0); EN : in std_ulogic; -- Enable WE : in std_ulogic; -- Write enable RST: in std_ulogic; -- Reset CLK: in std_ulogic; -- Clock ADDR : in std_logic_vector((addr_width-1) downto 0); DO: out std_logic_vector((data_width-1) downto 0)); end gsram; architecture Beh of gsram is constant depth : integer := 2 ** addr_width; constant TR : time := 5 ns; type mem_type is array(depth-1 downto 0) of std_logic_vector(data_width-1 downto 0); function a_value(BV:in std_logic_vector) return natural is variable E: natural := 0; begin for i in BV'LOW to BV'HIGH loop E := E * 2; if BV(i) = '1' then E := E + 1; elsif BV(i) /= '0' then report "Wrong bit"; E := 0; exit; end if; end loop; return E; end a_value; begin process(clk) variable mem:mem_type; begin if rising_edge(clk) then if (EN = '1') then if (RST = '1') then do <= (others => '0'); elsif (WE = '1') then mem(a_value(addr)) := di; elsif (WE = '0') then do <= mem(a_value(addr)) after TR; end if; end if; end if; end process; end beh;


Времеменные диаграммы

Чтение:

Запись:


Оптимизация

Оригинальная 6T ячейка:

Оптимизация:

Результат (4T ячейка):


Многопортовая память

Иногда требуется чтобы к памяти были паралельные обращения в одно и тоже время (естественно не на запись в одну и ту же ячейку) [Например процессор и видеоадаптер в видеопамять]. Можно сделать так что бы к ячейке могли иметь доступ сразу несколько клиентов: Пример такой структуры на транзисторах. (Очень похожа на ячейку SRAM, но в целях уменьшения числа транзисторов используются не 2 инвертора для хранения, а 2 транзистора).


CMOS RAM

Почему на материнской плате батарейка? Что бы работали часы. А в часах еще находится CMOS RAM. Где и хранятся настройки BIOS. Ее мало (не больше 256 байт). Она CMOS значит мало жрет т.к. не переключается. Все транзисторы закрыты в tristate - идет только ток утечки. Как же все это запитанно?

Когда есть питание все работает от сети, когда нет то от батареи.

Index Prev Next