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

 
 
> Размещение массива в M9K
juvf
сообщение Dec 25 2011, 02:57
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Написал свой блок. в нем использую массив регистров

reg [7:0]memRxD [0:255];

После компиляции блок съел около 6000 logical cell и 0 М9К. в засусеках квартуса нашел атрибут ramstyle, написал так:

(* ramstyle = "M9K" *) reg [7:0]memRxD [0:255];

пересобрал с таким атрибутом..... в результате те же 6000 селов и 0 м9к. Как указать компилятору чтоб он поменьше ел вентилей и по больше памяти?

Сообщение отредактировал juvf - Dec 25 2011, 03:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Timmy
сообщение Dec 25 2011, 06:31
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Обычно компилятору указывать ничего не надо, но поведенческое описание массива должно точно соотвествовать аппаратной архитектуре M9K. Поищите у Гугла на тему "altera memory inference", там есть разъяснения и примеры кода.
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 25 2011, 09:06
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (Timmy @ Dec 25 2011, 13:31) *
Обычно компилятору указывать ничего не надо, но поведенческое описание массива должно точно соотвествовать аппаратной архитектуре M9K. Поищите у Гугла на тему "altera memory inference", там есть разъяснения и примеры кода.

+1. Память М9К (как и всякая другая блочная память в альтеровских FPGA) не может работать как угодно. В частности, у неё адрес и входные данные всегда сперва попадают во входные регистры, только потом уже достают до внутреннего массива. Поэтому, если описать работу с памятью без учёта этого момента, то синтезатор просто не сможет имплементировать описанную логику с помощью аппаратного блока памяти.

Имхо, лучше использовать инстансы модулей, чем заставлять синтезатор инферить аппаратные блоки из кода. Результат будет надёжнее и предсказуемее. Да и переносимость кода, пожалуй, тоже будет лучше.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Dec 25 2011, 16:03
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(dxp @ Dec 25 2011, 16:06) *
Имхо, лучше использовать инстансы модулей, чем заставлять синтезатор инферить аппаратные блоки из кода. Результат будет надёжнее и предсказуемее. Да и переносимость кода, пожалуй, тоже будет лучше.

По поводу переносимости - позволю себе возразить.Переносимость (например при перетаскивании из Altera в Xilinx) при повсеместном использовании примитивов очень страдает.


Цитата(juvf @ Dec 25 2011, 09:57) *
Написал свой блок. в нем использую массив регистров

reg [7:0]memRxD [0:255];

После компиляции блок съел около 6000 logical cell и 0 М9К. в засусеках квартуса нашел атрибут ramstyle, написал так:

(* ramstyle = "M9K" *) reg [7:0]memRxD [0:255];

пересобрал с таким атрибутом..... в результате те же 6000 селов и 0 м9к. Как указать компилятору чтоб он поменьше ел вентилей и по больше памяти?

А вы осознаёте, что доступ по чтению в один момент времени у вас будет только к одному из 256 регистров? Это вам подходит?
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 25 2011, 16:12
Сообщение #5


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (Bad0512 @ Dec 25 2011, 23:03) *
По поводу переносимости - позволю себе возразить.Переносимость (например при перетаскивании из Altera в Xilinx) при повсеместном использовании примитивов очень страдает.

Я имел в виду следующее. При использовании модулей есть возможность сделать формализованный интерфейс к памяти, а нюансы реализации скрыть внутри этих модулей. Таким образом, при портировании достаточно будет портировать только сами модули, в то время как при переносе того же самого, "размазанного" по коду всего проекта, придётся перелопачивать весь код и искать все места использования.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 16:51
Рейтинг@Mail.ru


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