реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Чтение из byte_enabled_ram (Altera)
Владимир_О
сообщение Jan 30 2012, 13:24
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 24-10-11
Из: Санкт-Петербург
Пользователь №: 67 915



Добрый день

Программирую CycloneIV на VHDL. Для размещения буфера в области RAM воспользовался шаблоном byte_enabled_simple_dual_port_ram, который как раз подходит для моих нужд в Квартусе. Но появился вопрос - как читать из такой RAM, если, образно говоря, там есть "дырки" в массиве памяти, то есть считывать сплошняком не получится. Обязательно сохранять еще массив byte_enable'ов для чтения, или есть какой-то более изящный способ?
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 30 2012, 14:03
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



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

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


--------------------
Go to the top of the page
 
+Quote Post
Владимир_О
сообщение Jan 31 2012, 05:35
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 24-10-11
Из: Санкт-Петербург
Пользователь №: 67 915



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


В этом шаблоне организовано и чтение из RAM, для этого достаточно указать адрес ячейки. Вопрос в том, что при записи в эту ячейку (размером. скажем, в 8 байт - это задается настроечной константой) я указываю с помощью сигнала Byte_enable, какие из восьми байтов будут записаны. То есть могу записать, например, пять, а считывать только все восемь, три из которых не валидны. Как их исключить? если параллельно при записи сохранять и массив byte_enable'ов, то все очевидно. Но мне думается, что должен быть предусмортен более грамотный путь решения этой проблемы.
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Jan 31 2012, 08:56
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Память не умеет ничего исключать из себя. Она либо обновляется при записи (при включенном BE), либо нет. А при чтении всегда выдается то, что в памяти есть. Если Вы хотите наделить память смысловым содержанием, то это нужно отдельно кодировать. Например, Вы можете использовать девятые биты для хранения признака заполненности ячейки вместо традиционно принятой четности. Но можете и пожертвовать каким-то значением, скажем, нулем, объявив его признаком пустой ячейки. Памяти вообще все равно как вы интерпретируете ее содержимое.
Go to the top of the page
 
+Quote Post
Владимир_О
сообщение Jan 31 2012, 11:56
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 24-10-11
Из: Санкт-Петербург
Пользователь №: 67 915



Но записать в одном такте в RAM больше байта я же могу? Или нет?
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Jan 31 2012, 12:34
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Да, конечно.
Я думаю, что Вам лучше воспользоваться визардом, и структура блока памяти будет более понятна. например, вот картинки, найдите два отличия sm.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Владимир_О
сообщение Jan 31 2012, 12:57
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 24-10-11
Из: Санкт-Петербург
Пользователь №: 67 915



Цитата(Hoodwin @ Jan 31 2012, 16:34) *
Да, конечно.
Я думаю, что Вам лучше воспользоваться визардом, и структура блока памяти будет более понятна. например, вот картинки, найдите два отличия sm.gif


Спасибо, это действительно наглядно)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016