Документация Engee

Simple Dual Port RAM System

Страница в процессе разработки.

Простая двухпортовая оперативная память, поддерживающая одновременные операции чтения и записи.

Тип: SimpleDualPortRAMSystem

Путь в библиотеке:

/Basic/Additional/Discrete/Simple Dual Port RAM System

Описание

Блок Simple Dual Port RAM System моделирует простую двухпортовую оперативную память (random access memory, RAM), которая поддерживает одновременные операции чтения и записи. Чтобы настроить этот блок, откройте его и установите значение для параметра Specify the type of RAM:

  • Single port — моделирует RAM, которая выполняет либо операцию чтения, либо операцию записи, в зависимости от сигнала на порту wr_en: при значении 1 происходит запись, при значении 0 — чтение. При записи доступно два режима, в зависимости от значения параметра Specify the output data for a write operation:

    • Old data — выполняется вывод на выходной порт предыдущих данных, вместо которых были записаны новые данные;

    • New data — выполняется повторение на выход данных со входа.

  • Simple dual port — моделирует RAM с поддержкой одновременных операций чтения и записи. Чтение осуществляется постоянно, запись — только по разрешающему сигналу на порту wr_en. В том случае, если чтение и запись происходят по одному адресу, операция чтения происходит перед операцией записи. На выход всегда поступает результат операции чтения.

  • Dual port — моделирует RAM с поддержкой одновременных операций чтения и записи. Ключевым отличием от предыдущего режима является наличие двух выходных портов. На один всегда поступает результат операции чтения, на второй — результат операции записи. В зависимости от выбранного значения параметра Specify the output data for a write operation (New data или Old data) результатом операции служат либо новые данные, записанные по адресу, либо данные, которые хранились по адресу до операции записи. Запись новых данных осуществляется только по разрешающему сигналу на порту wr_en. Если операции чтения и записи осуществляются по одному адресу, то операция чтения идет до операции записи.

Ограничения

  • Адрес оперативной памяти может иметь тип данных с фиксированной точкой или целочисленный тип, должен быть беззнаковым и иметь длину от 2 до 31 бит.

Порты

Выход

# rd_dout — вывод данных с адреса для чтения
скаляр | вектор

Details

Вывод данных с адреса для чтения rd_addr.

Зависимости

Чтобы использовать это порт, установите для параметра Specify the type of RAM значение Simple dual port или Dual port.

Типы данных

Float64, Float32, Float16, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, Bool, Fixed

Поддержка комплексных чисел

Нет

# dout — вывод данных с адреса чтения
скаляр | вектор

Details

Вывод данных с адреса чтения addr.

Зависимости

Чтобы использовать это порт, установите для параметра Specify the type of RAM значение Single port.

Типы данных

Float64, Float32, Float16, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, Bool, Fixed

Поддержка комплексных чисел

Нет

# wr_dout — вывод данных с адреса для записи
скаляр | вектор

Details

Вывод данных с адреса для записи wr_addr.

Зависимости

Чтобы использовать это порт, установите для параметра Specify the type of RAM значение Simple dual port или Dual port.

Типы данных

Float64, Float32, Float16, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, Bool, Fixed

Поддержка комплексных чисел

Нет

Вход

# din — данные для записи
скаляр | вектор

Details

Данные для записи, заданные в виде скаляра или вектора. Вы можете записать данные в ячейку оперативной памяти, если сигнал разрешения записи на порту wr_en имеет значение 1.

Типы данных

Float64, Float32, Float16, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, Bool, Fixed

Поддержка комплексных чисел

Нет

# wr_addr — адрес для записи
скаляр | вектор

Details

Адрес для записи, заданный в виде скаляра или вектора. Используйте этот адрес для записи в оперативную память, когда сигнал на порту wr_en равен 1.

Зависимости

Чтобы использовать это порт, установите для параметра Specify the type of RAM значение Simple dual port или Dual port.

Типы данных

UInt8, UInt16, Fixed

Поддержка комплексных чисел

Нет

# wr_en — разрешение записи
скаляр | вектор

Details

Разрешение записи, заданное в виде скаляра или вектора. Когда сигнал на порту wr_en равен 1, блок записывает данные в указанную ячейку памяти. В режиме Single port, когда сигнал на порту wr_en равен 0, блок считывает значение из ячейки памяти, указанной портом addr. В остальных режимах операция чтения происходит вне зависимости от сигнал на порту wr_en.

Чтобы использовать метод записи в столбец, тип данных должен быть целым или с фиксированной точкой.
Типы данных

Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, Bool, Fixed

Поддержка комплексных чисел

Нет

# rd_addr — адрес для чтения
скаляр | вектор

Details

Адрес для чтения, заданный в виде скаляра или вектора. Используйте этот адрес для чтения из оперативной памяти. Это значение может иметь тип данных с фиксированной точкой или целочисленный тип, должен быть беззнаковым и иметь длину от 2 до 31 бит.

Зависимости

Чтобы использовать это порт, установите для параметра Specify the type of RAM значение Simple dual port или Dual port.

Типы данных

UInt8, UInt16, Fixed

Поддержка комплексных чисел

Нет

# addr — адрес для чтения или для записи
скаляр | вектор

Details

Адрес для чтения или для записи в зависимости от сигнала на порту wr_en: при значении 1 происходит запись, при значении 0 — чтение.

Зависимости

Чтобы использовать это порт, установите для параметра Specify the type of RAM значение Single port.

Типы данных

UInt8, UInt16, Fixed

Поддержка комплексных чисел

Нет

Параметры

Main

# Specify the type of RAM — тип RAM
Single port | Simple dual port | Dual port

Details

Тип RAM:

  • Single port — однопортовая RAM, которая выполняет либо операцию чтения, либо операцию записи, в зависимости от сигнала на порту wr_en: при значении 1 происходит запись, при значении 0 — чтение. На выход поступают данные с адреса чтения addr.

  • Simple dual port — простая двухпортовая RAM с данными для записи, адресом записи, разрешением записи и адресом чтения в качестве входов и данными из адреса чтения в качестве выхода.

  • Dual port — истинная двухпортовая RAM с данными записи a и b, адресами записи и чтения для a и b, разрешением записи a и b в качестве входов и данными с адресов записи a и b в качестве выходов.

Значения

Single port | Simple dual port | Dual port

Значение по умолчанию

Simple dual port

Имя для программного использования

RAMType

Настраиваемый

Нет

Вычисляемый

Нет

# Specify the output data for a write operation — выходные данные для операции записи
New data | Old data

Details

Укажите выходные данные для операции записи:

  • Old data — выполняется вывод на выходной порт предыдущих данных, вместо которых были записаны новые данные;

  • New data — выполняется повторение на выход данных со входа.

Зависимости

Чтобы использовать этот параметр, установите для параметра Specify the type of RAM значение Single port или Dual port.

Значения

New data | Old data

Значение по умолчанию

New data

Имя для программного использования

WriteOutputValue

Настраиваемый

Нет

Вычисляемый

Нет

# Specify the RAM initial value — начальные выходные данные симуляции RAM

Details

Укажите начальные выходные данные симуляции RAM:

  • Скалярное значение.

  • Вектор, элементы которого соответствуют начальным значениям и словам RAM.

  • Матрица на , элементы которой соответствуют начальным значениям и словам RAM в банках RAM, где представляет собой количество банков оперативной памяти, а представляет собой количество адресных мест в блоке оперативной памяти, или наоборот.

Значение по умолчанию

0

Имя для программного использования

RAMInitialValue

Настраиваемый

Нет

Вычисляемый

Да

Подробнее

Использование метода записи в столбец для выборочной записи в столбцы

Details

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

В данном контексте:

  • — тип данных входного сигнала данных записи din.

  • — ширина входных данных, которая равна длине слова значения din.

  • — тип данных сигнала разрешения записи wr_en. Этот сигнал определяет, какие столбцы блок записывает в адресуемую ячейку памяти. Блок записывает столбцы, основываясь на положении 1s в двоичном представлении значения wr_en.

  • — количество столбцов, на которые можно разделить пространство оперативной памяти для записи данных, равное длине слова значения wr_en.

  • — ширина каждого столбца, которая равна .

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

в битах

UInt16

16

Ufix4

4

4

UInt32

32

Ufix4

4

8

UInt64

64

Ufix4

4

16

UInt32

32

UInt8

8

4

UInt64

64

UInt8

8

8

Int32

32

UInt16

16

2

Например, если — это UInt16, а — это Ufix4, то равно 16, равно 4, и равно 4 битам. Если на вход din подается 980, то его двоичное представление равно 0000001111010100. Представление din по столбцам: c4 = 0000, c3 = 0011, c2 = 1101, и c1 = 0100, где c1 — первый столбец.

В таблице приведены результаты использования метода записи в столбец для различных комбинаций входных данных.

Значение wr_en Двоичное представление wr_en Столбцы, выбранные для записи в RAM Данные в ячейке памяти: перед выполнением операции записи Данные в ячейке памяти: после выполнения операции записи dout

3

0011

c2, c1

c4=0000 c3=0000 c2=0000 c1=0000

c4=0000 c3=0000 c2=1101 c1=0100

212

4

0100

c3

c4=0000 c3=0000 c2=0000 c1=0000

c4=0000 c3=0011 c2=0000 c1=0000

768

6

0110

c3, c2

c4=0000 c3=0000 c2=0000 c1=0000

c4=0000 c3=0011 c2=1101 c1=0000

976

9

1001

c4, c1

c4=0000 c3=0000 c2=0000 c1=0000

c4=0000 c3=0000 c2=0000 c1=0100

4

9

1001

c4, c1

c4=1111 c3=1111 c2=1111 c1=1111

c4=0000 c3=1111 c2=1111 c1=0000

4084

Ограничения

  • Входы со знаковыми типами данных и с ненулевыми длинами дробей не поддерживаются входным портом разрешения записи.

  • Длина слова входных данных для записи должна быть кратна длине слова разрешения записи.