HyperRAM — это что за память?

Под катом небольшой обзор особенностей этой памяти, отличия от других типов памяти и в конце небольшой список того, что же взяла (позаимствовала) эта память из других типов.

Заметка будет полезна начинающим и не имевшим дела с этой памятью, вкратце попробую описать её назначение с индивидуально формирующимся выводом для каждого разработчика в процессе чтения, стоит ли она применения в своём проекте или нет.

B75-0

Различные типы RAM

Существует довольно много различных типов памяти, возьмём бюджетный сегмент, куда и позиционируется применение HyperRAM, здесь в основном применяются следующие типы RAM:

  • Асинхронные SRAM, требующие довольно много сигналов (около 30);
  • SPI RAM, зачастую малых объёмов памяти;
  • SDRAM, DDR, значительно превосходящие по объёму памяти первые два типа, но более сложные в подключении и разводке платы.

В итоге получается, что если SDRAM\DDR при подключении к ПЛИС отнимает очень ощутимое количество IO у ПЛИС, что особенно критично в малогабаритных устройствах, а первые два типа совершенно не пригодны в силу малых объемов памяти или\и малых скоростей, они больше подойдут для устройств с микроконтроллерами.

Если сравнить наиболее распространённые типы памяти по объёму памяти/размерам чипа и сложности интерфейса их подключения, можно составить примерно следующий график:

B75-1

И как можно видеть, HyperRAM находится примерно посередине между бюджетными (менее объёмными и простыми) и более дорогими и сложными в подключении и работе с ними типами RAM. Почему так? Давайте разберёмся…

HyperBUS

HyperBUS — так называется интерфейс, по которому подключается HyperRAM, он довольно прост и содержит всего 12 сигналов. Более того, в нём можно вообще не использовать дифференциальные сигналы (а он тут один и только для тактирования), в отличие от большинства современных интерфейсов, где повсеместно используется LVDS: USB, PCI-E, MIPI CSI-2, HDMI и т. д. Другими словами, этот интерфейс дружественный к разработчику и вполне прощает плохое согласование сигналов шины по длине, не согласованное волновое сопротивление дорожек на печатной плате, а также он требует меньше свободных IO для подключения.

Также есть выбор между разными напряжениями питания\сигналов IO, на чём, собственно, и базируется необходимость\возможность дифференциального тактирования этой памяти:

Напряжение питания Тактирование Макс. частота тактирования Пропускная способность
1,8 В Дифференциальная пара (LVDS) 200 МГц 400 Мбайт\сек
3,3 В Одиночная линия (Single-ended) 100 МГц 200 Мбайт\сек

Фактически эту память легко подключать даже к самым бюджетным ПЛИС-ам или микроконтроллерам (если есть аппаратная поддержка), что делает её очень хорошим вариантом в сумме с малыми габаритами и невысокой ценой. К слову о габаритах и корпусе в целом (шары 0,4 мм, шаг 1 мм):

B75-2

Как уже выше писал, требуется 12 сигналов для подключения этой памяти. Краткое описание этих линий:

Сигнал Назначение
CK, CK# Вход тактирующего сигнала шины
CS# Вход выбора чипа (активный низкий)
RWDS (Read Write Data Strobe)
  • Сигнал ожидания (от RAM)
  • При записи — маскирование байтов, которые не должны быть изменены
  • При чтении — синхронизация данных (source syncronous read data strobe)
D7…D0 Шина данных и адреса, совмещённая

Обмен данными с памятью выглядит следующим образом: мастер опускает CS в 0, подает тактирующий сигнал и управляющие байты, ожидает несколько тактов, обменивается данными, перестаёт подавать тактирующий сигнал и поднимает CS в 1.

Пример записи управляющего пакета:

B75-3

Данные с шины считываются по обоим фронтам, вне зависимости от типа сигнала тактирования.

Пример чтения данных:

B75-6

Изменение данных на шине синхронизируется обоими фронтами сигнала RWDS.

Каждая транзакция сопровождается записью мастером управляющего пакета длиной 48 бит (а это займет 3 такта, 6 передач по каждому фронту такта). Таблица с описанием управляющего пакета:

B75-4

Если вкратце, то тут задаётся:

  • Адресное пространство — память или управляющие регистры;
  • Тип транзакции — чтение или запись;
  • Тип последовательности записи/чтения — линейная или пакетная (burst);
  • Адрес начала обращения к памяти в столбцах и строках.

При необходимости память можно расширять параллельным включением:

B75-5

Вот только это напрямую повлияет на пропускную способность — тут-то и выходит на сцену один из главных минусов этого интерфейса (пропускная способность снижается в n-раз, где n — количество чипов памяти на одной шине).

Более подробно обо всём можно прочитать в спецификации — HyperBus Specification. Да, там же можно прочитать и про HyperFLASH — это уже флешки с таким же интерфейсом для индустриального применения, и, более того, есть чипы, совмещённые FLASH + RAM, что может упростить схемотехнику и освободить место на печатной плате!

Настоящая сущность HyperRAM

Если же посмотреть более глубоко, то по факту HyperRAM — это просто псевдостатическая RAM (PSRAM) в новой обёртке (интерфес HyperBUS).

Вкратце PSRAM — это фактически обычная DRAM, но у PSRAM уже внутри происходят все процессы обновления данных, которые требуются обычной DRAM вследствие того, что она фактически построена на конденсаторах, которые требуют периодической «подзарядки» для поддержания своего состояния (1-цы) и разработчику, использующему PSRAM, не требуется заботиться об этом, как при применении DRAM.

И да, исходя из реальной внутренней работы HyperRAM накладываются некоторые ограничения на процесс обмена данными, т. к. память не может обновляться в процессе обмена данными, длительность одной транзакции (transaction duration) и задержки между ними (initial latency) ограничены! Значения максимальных длительностей зависят от температуры (приведены в спецификации).

Также из забавных вещей — HyperRAM фактически «взяла понемногу» от разных типов памяти (что -> где это было применено впервые):

  • Сигналы уровней 1,8 \ 3,3 В -> асинхронная SRAM;
  • Чтение по обоим фронтам -> DDR DRAM;
  • Конфигурация регистров -> SDRAM;
  • 8-битная шина -> асинхронная SRAM, DDR DRAM;
  • Скрытое обновление данных -> PS DRAM;
  • Дифференциальное тактирование -> DDR DRAM;
  • Пакетный обмен -> SDRAM;
  • Маскирование байтов при записи -> SDRAM;
  • Адресация по шине данных -> SPI RAM.

Ссылки

Реклама

Рубрики: Начинающим, FPGA, MCU/SoC

Tagged as:

Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s