Перейти к содержанию
    

Чтение из byte_enabled_ram (Altera)

Добрый день

 

Программирую CycloneIV на VHDL. Для размещения буфера в области RAM воспользовался шаблоном byte_enabled_simple_dual_port_ram, который как раз подходит для моих нужд в Квартусе. Но появился вопрос - как читать из такой RAM, если, образно говоря, там есть "дырки" в массиве памяти, то есть считывать сплошняком не получится. Обязательно сохранять еще массив byte_enable'ов для чтения, или есть какой-то более изящный способ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Программирую CycloneIV на VHDL. Для размещения буфера в области RAM воспользовался шаблоном byte_enabled_simple_dual_port_ram, который как раз подходит для моих нужд в Квартусе.

это для записи, для чтения будет читаться то что в ячейке памяти.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это для записи, для чтения будет читаться то что в ячейке памяти.

 

В этом шаблоне организовано и чтение из RAM, для этого достаточно указать адрес ячейки. Вопрос в том, что при записи в эту ячейку (размером. скажем, в 8 байт - это задается настроечной константой) я указываю с помощью сигнала Byte_enable, какие из восьми байтов будут записаны. То есть могу записать, например, пять, а считывать только все восемь, три из которых не валидны. Как их исключить? если параллельно при записи сохранять и массив byte_enable'ов, то все очевидно. Но мне думается, что должен быть предусмортен более грамотный путь решения этой проблемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Память не умеет ничего исключать из себя. Она либо обновляется при записи (при включенном BE), либо нет. А при чтении всегда выдается то, что в памяти есть. Если Вы хотите наделить память смысловым содержанием, то это нужно отдельно кодировать. Например, Вы можете использовать девятые биты для хранения признака заполненности ячейки вместо традиционно принятой четности. Но можете и пожертвовать каким-то значением, скажем, нулем, объявив его признаком пустой ячейки. Памяти вообще все равно как вы интерпретируете ее содержимое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но записать в одном такте в RAM больше байта я же могу? Или нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, конечно.

Я думаю, что Вам лучше воспользоваться визардом, и структура блока памяти будет более понятна. например, вот картинки, найдите два отличия :)

post-56107-1328013100_thumb.png

post-56107-1328013253_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, конечно.

Я думаю, что Вам лучше воспользоваться визардом, и структура блока памяти будет более понятна. например, вот картинки, найдите два отличия :)

 

Спасибо, это действительно наглядно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...