# ОЗУ

Библиотека: | Память
Введён в: | 2.0 Beta 1
Внешний вид: |

## Поведение

Компонент ОЗУ, бесспорно самый сложный компонент встроенной библиотеки Logisim, хранит до 16777216 значений (это задаётся в атрибуте Разрядность адреса), каждое из которых может включать до 32 битов (задаётся в атрибуте Разрядность данных). Схема может считывать и записывать значения в ОЗУ. Кроме того, пользователь может интерактивно изменять отдельные значения с помощью Инструмента Нажатие, или менять всё содержимое через Инструмент Меню.

Текущие значения отображаются в компоненте. Их адреса перечислены серым слева от области отображения. Значения внутри представлены в шестнадцатеричном виде. Значение выбранного в данный момент адреса будет отображаться негативным текстом (белым по чёрному).

Компонент ОЗУ поддерживает три интерфейса, в зависимости от значения атрибута Интерфейс данных.

Один синхронный порт чтения/записи (по умолчанию)

  Компонент имеет один порт на восточном крае, который служит для чтения и записи данных. Что он осуществляет, зависит от значения на входе, отмеченном ld: 1 (или плавающее значение) означает чтение данных по адресу, поданному на западный край компонента, а 0 означает запись данных, поступивших на порт. Для передачи данных в компонент и из него, вам нужно использовать компонент Управляемый буфер, как показано ниже.

Один асинхронный порт чтения/записи

  Это тоже самое, что и выше, но в данном варианте нет тактового входа. Значение, поступившее на шину данных, записывается в память, когда значение на входе ld - 0. Если адрес или данные меняются, пока значение на входе ld 0, то происходит дополнительная операция записи. Этот вариант более приближен к интерфейсу многих доступных типов памяти с произвольным доступом.

Раздельные порты чтения и записи

  Предоставляются два порта данных - один на западном крае для записи данных, и другой на восточном крае для чтения данных. Этот вариант устраняет необходимость Управляемого буфера, так что он проще в использовании.

## Контакты

A на западном крае (вход, разрядность соответствует атрибуту Разрядность адреса)
  Выбирает, к какому значению в памяти схема в данный момент получает доступ.
D на западном крае (вход, разрядность соответствует атрибуту Разрядность данных)
  Этот вход представлен, только если "Раздельные порты чтения и записи" выбрано для атрибута Интерфейс данных. Когда запрошена запись (через изменение значения на тактовом входе с 0 на 1, пока на входах sel и str 1 или плавающее значение), значение, поданное на этот порт, записывается в память по выбранному в данный момент адресу.
D на восточном крае (вход/выход или выход, разрядность соответствует атрибуту Разрядность данных)
  Если на входах sel и ld 1 или плавающее значение, то компонент ОЗУ выдаёт на этот порт значение по выбранному в данный момент адресу. Если представлен один порт чтения/записи, то когда запрошена запись, значение, считанное по этому порту, записывается в память.
str на южном крае (вход, разрядность равна 1)
  Запись: этот вход представлен, только если "Раздельные порты чтения и записи" выбрано для атрибута Интерфейс данных. Когда на нём 1 или плавающее значение, тактовый импульс приведёт к записи в память данных, полученных на западном крае (при условии, что на входе sel тоже 1 или плавающее значение).
sel на южном крае (вход, разрядность равна 1)
  Выбор кристалла: этот вход включает или выключает весь модуль ОЗУ, в зависимости от того, 1/плавающее значение на нём, или 0. Это вход предназначен в первую очередь для ситуаций, когда у вас есть несколько модулей памяти, только один из которых может быть включен в какой-то момент.
треугольник на южном крае (вход, разрядность равна 1)
  Тактовый вход: отсутствует, если значение атрибута Интерфейс данных - "Один асинхронный порт чтения/записи". В других случаях, когда на входе ld 0, и значение на нём меняется с 0 на 1 (и ещё на входе sel 1/неопределённость и на входе clr 0), значение по выбранному в данный момент адресу меняется на значение на контакте D. Но пока на тактовом входе сохраняется 0 или 1, значение входа D не будет записано в память.
ld на южном крае (вход, разрядность равна 1)
  Чтение: выбирает, должно ли ОЗУ выдавать (на выход D) значение по текущему адресу. Такое поведение выхода разрешено, если на входе out 1 или неопределённость; если же на входе out 0, тогда никакого значения не будет передано на D, а если порт - совмещённый для чтения/записи, то будет разрешена запись.
clr на южном крае (вход, разрядность равна 1)
  Очистка: когда на этом входе 1, все значения в памяти будут фиксированы на 0, вне зависимости от значений на других входах.

## Атрибуты

Когда компонент выбран, или уже добавлен, клавиши от 0 до 9 меняют его атрибут Разрядность адреса, а комбинации от Alt-0 до Alt-9 меняют его атрибут Разрядность данных.

Разрядность адреса
  Число адресных битов. Количество значений, хранящихся в ОЗУ равно 2Разрядность_адреса.
Разрядность данных
  Разрядность каждого отдельного значения в памяти.
Интерфейс данных
  Определяет, какой из трёх интерфейсов использовать для передачи данных в и из компонента.

## Поведение Инструмента Нажатие

См. Нажатие на память в Руководстве пользователя.

## Поведение Инструмента Текст

Нет.

## Поведение Инструмента Меню

См. Всплывающие меню и файлы в Руководстве пользователя.

Назад к Справке по библиотеке