Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Чтение из byte_enabled_ram (Altera)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Владимир_О
Добрый день

Программирую CycloneIV на VHDL. Для размещения буфера в области RAM воспользовался шаблоном byte_enabled_simple_dual_port_ram, который как раз подходит для моих нужд в Квартусе. Но появился вопрос - как читать из такой RAM, если, образно говоря, там есть "дырки" в массиве памяти, то есть считывать сплошняком не получится. Обязательно сохранять еще массив byte_enable'ов для чтения, или есть какой-то более изящный способ?
des00
Цитата(Владимир_О @ Jan 30 2012, 07:24) *
Программирую CycloneIV на VHDL. Для размещения буфера в области RAM воспользовался шаблоном byte_enabled_simple_dual_port_ram, который как раз подходит для моих нужд в Квартусе.

это для записи, для чтения будет читаться то что в ячейке памяти.
Владимир_О
Цитата(des00 @ Jan 30 2012, 18:03) *
это для записи, для чтения будет читаться то что в ячейке памяти.


В этом шаблоне организовано и чтение из RAM, для этого достаточно указать адрес ячейки. Вопрос в том, что при записи в эту ячейку (размером. скажем, в 8 байт - это задается настроечной константой) я указываю с помощью сигнала Byte_enable, какие из восьми байтов будут записаны. То есть могу записать, например, пять, а считывать только все восемь, три из которых не валидны. Как их исключить? если параллельно при записи сохранять и массив byte_enable'ов, то все очевидно. Но мне думается, что должен быть предусмортен более грамотный путь решения этой проблемы.
Hoodwin
Память не умеет ничего исключать из себя. Она либо обновляется при записи (при включенном BE), либо нет. А при чтении всегда выдается то, что в памяти есть. Если Вы хотите наделить память смысловым содержанием, то это нужно отдельно кодировать. Например, Вы можете использовать девятые биты для хранения признака заполненности ячейки вместо традиционно принятой четности. Но можете и пожертвовать каким-то значением, скажем, нулем, объявив его признаком пустой ячейки. Памяти вообще все равно как вы интерпретируете ее содержимое.
Владимир_О
Но записать в одном такте в RAM больше байта я же могу? Или нет?
Hoodwin
Да, конечно.
Я думаю, что Вам лучше воспользоваться визардом, и структура блока памяти будет более понятна. например, вот картинки, найдите два отличия sm.gif
Владимир_О
Цитата(Hoodwin @ Jan 31 2012, 16:34) *
Да, конечно.
Я думаю, что Вам лучше воспользоваться визардом, и структура блока памяти будет более понятна. например, вот картинки, найдите два отличия sm.gif


Спасибо, это действительно наглядно)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.