Prog_Vladimir 0 30 января, 2012 Опубликовано 30 января, 2012 · Жалоба Добрый день Программирую CycloneIV на VHDL. Для размещения буфера в области RAM воспользовался шаблоном byte_enabled_simple_dual_port_ram, который как раз подходит для моих нужд в Квартусе. Но появился вопрос - как читать из такой RAM, если, образно говоря, там есть "дырки" в массиве памяти, то есть считывать сплошняком не получится. Обязательно сохранять еще массив byte_enable'ов для чтения, или есть какой-то более изящный способ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 30 января, 2012 Опубликовано 30 января, 2012 · Жалоба Программирую CycloneIV на VHDL. Для размещения буфера в области RAM воспользовался шаблоном byte_enabled_simple_dual_port_ram, который как раз подходит для моих нужд в Квартусе. это для записи, для чтения будет читаться то что в ячейке памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Prog_Vladimir 0 31 января, 2012 Опубликовано 31 января, 2012 · Жалоба это для записи, для чтения будет читаться то что в ячейке памяти. В этом шаблоне организовано и чтение из RAM, для этого достаточно указать адрес ячейки. Вопрос в том, что при записи в эту ячейку (размером. скажем, в 8 байт - это задается настроечной константой) я указываю с помощью сигнала Byte_enable, какие из восьми байтов будут записаны. То есть могу записать, например, пять, а считывать только все восемь, три из которых не валидны. Как их исключить? если параллельно при записи сохранять и массив byte_enable'ов, то все очевидно. Но мне думается, что должен быть предусмортен более грамотный путь решения этой проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 31 января, 2012 Опубликовано 31 января, 2012 · Жалоба Память не умеет ничего исключать из себя. Она либо обновляется при записи (при включенном BE), либо нет. А при чтении всегда выдается то, что в памяти есть. Если Вы хотите наделить память смысловым содержанием, то это нужно отдельно кодировать. Например, Вы можете использовать девятые биты для хранения признака заполненности ячейки вместо традиционно принятой четности. Но можете и пожертвовать каким-то значением, скажем, нулем, объявив его признаком пустой ячейки. Памяти вообще все равно как вы интерпретируете ее содержимое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Prog_Vladimir 0 31 января, 2012 Опубликовано 31 января, 2012 · Жалоба Но записать в одном такте в RAM больше байта я же могу? Или нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 31 января, 2012 Опубликовано 31 января, 2012 · Жалоба Да, конечно. Я думаю, что Вам лучше воспользоваться визардом, и структура блока памяти будет более понятна. например, вот картинки, найдите два отличия :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Prog_Vladimir 0 31 января, 2012 Опубликовано 31 января, 2012 · Жалоба Да, конечно. Я думаю, что Вам лучше воспользоваться визардом, и структура блока памяти будет более понятна. например, вот картинки, найдите два отличия :) Спасибо, это действительно наглядно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться