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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Инициализация ROM в MAX10 compact features
justontime
сообщение May 19 2017, 15:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Вопрос, конечно, глупый, но...
Итак, делаем соответствующей мегафункцией ROM внутри MAX 10 - все просто, вопросов нет. Вот только для "MAX 10 compact features" не поддерживается memory initialization... Соответственно, каким образом внутри такого MAX 10 можно получить ROM с нужным содержимым ???
Go to the top of the page
 
+Quote Post
Александр77
сообщение May 19 2017, 17:57
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Как поясняли спецы из ЭФО, нужно задействовать UFM и On-Chip Flash.
Go to the top of the page
 
+Quote Post
justontime
сообщение May 19 2017, 18:07
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Надо же, не один я задался этим вопросом... Подробностями никто не поделится ?
Go to the top of the page
 
+Quote Post
Александр77
сообщение May 19 2017, 19:41
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



По идее этого должно хватить.
Go to the top of the page
 
+Quote Post
justontime
сообщение May 19 2017, 19:47
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Данный guide я первым делом прочитал, но вот реальной пользы для моей задачи извлечь не смог sad.gif
Go to the top of the page
 
+Quote Post
andk
сообщение May 20 2017, 02:55
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



Решение такое:
В проект ставим мегафункцию "Altera on-chip flash" для возможности доступа к UFM
В мегафункции инициализируем UFM необходимым вам массивом.
В проект ставим RAM, пишем процедуру копирования из UFM в RAM.
При программировании Pof файла в FPGA не забываем поставить крыжик на запись UFM.
В итоге имеем проинициализированную RAM.
Собственно всё.
Go to the top of the page
 
+Quote Post
justontime
сообщение May 20 2017, 04:57
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Цитата(andk @ May 20 2017, 05:55) *
Решение такое:

Вот спасибо ! Вроде принципиально подход полностью понятен. Осталось реализовать в деталях - никогда не делал ничего подобного sad.gif
А нет случайно какой-нибудь мегафункции еще и для копирования ? sm.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 20 2017, 04:57
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



неужели после такого

Код
reg    [DATA_WIDTH-1:0]    RomReg[0:(2**ADDR_WIDTH)-1];

initial     
begin
    $readmemh(INIT_FILE_NAME, RomReg);
end


always@(posedge clk)
begin
    data <= RomReg[addr];
end


в проекте не появится ром самостоятельно инициализированный при конфигурации ПЛИС? Вместо загрузки из файла можно просто руками значения прописать.
А что появится тогда? Ведь все конструкции поддерживаются синтезатором альтеры?
Go to the top of the page
 
+Quote Post
justontime
сообщение May 20 2017, 05:19
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Цитата(Golikov A. @ May 20 2017, 07:57) *
А что появится тогда? Ведь все конструкции поддерживаются синтезатором альтеры?

Я сам офигел... Сделал проектик на плате разработки, а потом спроектировал свою плату, в которой использовал MAX10 попроще. Хорошо, что до заказа платы попробовал перекомпилировать проект под свой MAX 10, поэтому засаду (отсутствие возможности прямой инициализации памяти из конфигурационной памяти) обнаружил вовремя.
Если честно, то не понимаю - неужели эта функциональность берет столько ресурсов, что на ней можно сэкономить ???

Если я правильно понял Ваш пример, то вроде здесь для ROM используется не блоки RAM, а просто основные ресурсы FPGA ? Если так, то должно проинициализировать, но меня такое решение не устраивает...

Сообщение отредактировал justontime - May 20 2017, 05:50
Go to the top of the page
 
+Quote Post
x736C
сообщение May 20 2017, 07:56
Сообщение #10


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

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(justontime @ May 20 2017, 08:19) *
Если я правильно понял Ваш пример, то вроде здесь для ROM используется не блоки RAM, а просто основные ресурсы FPGA ? Если так, то должно проинициализировать, но меня такое решение не устраивает...

Синтезатор понимает эту конструкцию и использует блок памяти, если не запрещено.
Go to the top of the page
 
+Quote Post
andk
сообщение May 20 2017, 10:24
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



Цитата(Golikov A. @ May 20 2017, 09:57) *
неужели после такого
Код
reg    [DATA_WIDTH-1:0]    RomReg[0:(2**ADDR_WIDTH)-1];
.............
поскипано

end


в проекте не появится ром самостоятельно инициализированный при конфигурации ПЛИС? Вместо загрузки из файла можно просто руками значения прописать.
А что появится тогда? Ведь все конструкции поддерживаются синтезатором альтеры?


Не путайте синтезируемые и моделируемые (тестовые) конструкции.
Просто попытайтесь ответить на вопрос:
Как данные из файла физически попадут в ROM?
В описании к микросхеме, примененной топикстартером, сказано "No Memory initialization featuring".
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 22 2017, 07:25
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Если я правильно понял Ваш пример, то вроде здесь для ROM используется не блоки RAM, а просто основные ресурсы FPGA ?

как синтезатор посчитает лучше, маленькие ROM могут и в регистры лечь, но обычно в память пихает.


Цитата
Не путайте синтезируемые и моделируемые (тестовые) конструкции.

А вы не путаете, коль такое спрашиваете?

Беру описание MAX 10 и читаю
Цитата
Initial Power-Up Values of Embedded Memory Blocks
By default, the Quartus Prime software initializes the RAM cells to zero unless you
specify a .mif.
All memory blocks support initialization with a .mif. You can create .mif files in the
Quartus Prime software and specify their use with the RAM IP when you instantiate a
memory in your design. Even if a memory is preinitialized (for example, using a .mif),
it still powers up with its output cleared. Only the subsequent read after power up
outputs the preinitialized values.
Only the following MAX 10 configuration modes support memory initialization:
• Single Compressed Image with Memory Initialization
• Single Uncompressed Image with Memory Initialization
Note: The memory initialization feature is supported in MAX 10 Flash and Analog feature
options only


Я трактую данную часть описания так, что в режиме with Memory Initialization память все же может быть проинициализированна при загрузке.

Это отвечает и на остальные вопросы.
Цитата
Как данные из файла физически попадут в ROM?

Те которые надо, они будут запакованы в миф файл, добавлены в прошивку и загружены в память

Цитата
Если честно, то не понимаю - неужели эта функциональность берет столько ресурсов, что на ней можно сэкономить ???

Альтера дала сделать этот выбор вам. Можете убить часть флешки под данные для инициализации памяти, а можете взять себе под UFM или вторую прошивку.






Go to the top of the page
 
+Quote Post
justontime
сообщение May 22 2017, 07:30
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Цитата(Golikov A. @ May 22 2017, 10:25) *
Я трактую данную часть описания так, что в режиме with Memory Initialization память все же может быть проинициализированна при загрузке.

Там же еще написано, что
Цитата
Note: The memory initialization feature is supported in MAX 10 Flash and Analog feature options only

А у меня Compact feature, где инициализация не поддерживается. Отсюда как раз и весь сыр-бор разгорелся...

Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 22 2017, 09:37
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну тоды ой, тогда явно указано никакой инициализации. И тогда

Цитата
Even if a memory is preinitialized (for example, using a .mif), it still powers up with its output cleared.


А что компакт фича сильно дешевле? В чем бонус?
Go to the top of the page
 
+Quote Post
justontime
сообщение May 22 2017, 09:45
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003



Цитата(Golikov A. @ May 22 2017, 12:37) *
А что компакт фича сильно дешевле? В чем бонус?

Я уже вроде писал, что не понимаю, что они могли сэкономить именно на выбрасывании инициализации. Но вообще для устройства достаточного для меня объема (минимальная конфигурация) и в нужном корпусе разница в стоимости - больше, чем в 2 раза.
Go to the top of the page
 
+Quote Post

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

 


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


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