Перейти к содержанию
    

Altera UFM без шины Avalon

Возможно ли на MAX-10 задействовать встроенную пользовательскую флеш-память UFM без использования шины Avalon?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно.

IP Catalog - Basic Functions - On Chip Memory - {ALT_UFM_NONE / UFM for I2C / UFM for Parallel / UFM for SPI}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 hours ago, StewartLittle said:

Возможно.

IP Catalog - Basic Functions - On Chip Memory - {ALT_UFM_NONE / UFM for I2C / UFM for Parallel / UFM for SPI}

Похоже, что всё таки нет (((
Документ Replacing Serial EEPROMs with User Flash Memory in Altera MAX Series говорит, что ALTUFM_NONE в MAX-10 "Not supported".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам для какой цели это нужно?

Если просто все подряд прочитать, можно так - https://github.com/marsohod4you/M02mini/blob/master/forth_j1/ufmr.v

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/25/2020 at 7:46 PM, umarsohod said:

Вам для какой цели это нужно?

Если просто все подряд прочитать, можно так - https://github.com/marsohod4you/M02mini/blob/master/forth_j1/ufmr.v

 

Большое спасибо!
Похоже, что модуль altera_onchip_flash_block максимально близок к железу и в нем отсутствуют любые связи с шиной Avalon.

Может быть вы могли бы еще кое-что рассказать? У данного модуля есть параметр .INIT_FILENAME . Однако, при записи туда заведомо некорректного пути сборка проекта всё равно происходит без ошибок.
А при записи корректного - в *.pof, генерирующийся автоматически, не заносятся данные из указанного *.mif . Это видно при побитном сравнении с *.pof, который был сгенерирован при помощи Convert Programming Files из *.sof и *.mif .

Зачем нужен параметр .INIT_FILENAME и как автоматически в ходе компиляции генерировать *.pof с внедренным в него *.mif ?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю, вы что-то неправильно пробуете.

Почитайте внимательно ворнинги компилятора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/12/2021 at 2:06 PM, umarsohod said:

Я думаю, вы что-то неправильно пробуете.

Почитайте внимательно ворнинги компилятора.

Большое спасибо, ваш пример заработал. Тем, кто столкнется с похожей проблемой и зайдет через годы в эту тему я бы рекомендовал обратить внимание на версию Квартуса - Pro/Standard/Lite. А затем поставить Lite со всеми настройками по умолчанию.

 

Могли бы вы меня проконсультировать по самому UFM и модулю altera_onchip_flash_block ? Или указать, где прочитать об этом?

 

1) После начала тактирования drclk и стробирования по drshft выход из модуля drout висит в единице. Но после двух тактов по arclk (на каждые 64 такта drclk) при высоком arshft выход drout выдает некий, весьма длинный код (9 слов по 16 бит).

 

Что это за код? Почему arclk = 64 х drclk ?

 

2) Первую четверть от всего времени передачи пакета данных arshft висит в единице - drout после выдачи кода молчит (в нуле). Вторую четверть arshft висит в нуле - drout снова молчит (в нуле). Затем в начале третей четверти появляются записанные в UFM данные (arshft продолжает висеть в нуле), которые передаются до конца пакета.

 

Что arshft столько времени делает в единице?

3) На вход ardin подается фиксированное значение {{22{1'b1}},1'b0}. Причем вместо 1'b0 можно поставить некое внешние соединение. Если же вместо других 22 бит попробовать подставить что-либо - компиляция не пройдет. Предположу, что ardin - это вход сдвигового регистра адреса. Предположу, что регистр позволяет сдвигать данные пока arshft в единице и автоинкрементирует себя, если arshft в нуле.

 

Почему нельзя за десять тактов arclk поместить в регистр адреса значение "512" и начать чтение сразу? Возможен ли произвольный переход по адресам внутри UFM или же допустимо только последовательное чтение?

Изменено пользователем flammmable

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поведение "altera_onchip_flash_block" очень похоже на поведение "ALT_UFM_NONE"  для MaxII, почитайте на него документацию.

Но я разбирался только с тем , что мне было нужно. Младший бит  "ardin" действительно похож на вход сдвигового регистра адреса, 

но какой длинны этот регистр неизвестно . Я задвигаю 512 нулей "впрок".И  данные действительно начинаются не сначала.

К модулю есть параметр "ADDR_RANGE1_OFFSET(512)", но его изменить у меня не получилось. 

Изменено пользователем umarsohod

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/20/2021 at 5:41 PM, flammmable said:

Thank you very much, your example worked. For those who encounter a similar problem and come back to this topic years later, I would recommend paying attention to the version of Quartus - Pro/Standard/Lite. And then install Lite with all default settings.

 

Could you advise me on UFM itself and the  altera_onchip_flash_block module  ? Or point out where to read about it?

 

1) After the start of drclk clocking and drshft gating, the output from the drout module hangs at one. But after two arclk cycles (for every 64 drclk clock cycles ) with a high arshft , the drout output  produces a certain, very long code (9 words of 16 bits each).

 

What is this code? Why  arclk = 64 x  drclk ?

 

2) For the first quarter of the entire transmission time of the data packet,  arshft hangs at one -  drout is silent (at zero) after the code is issued. The second quarter  arshft hangs at zero -  drout is silent again (at zero). Then, at the beginning of the third quarter, data written to UFM appears ( arshft continues to hang at zero), which is transmitted until the end of the packet.

 

What does  arshft spend so much time doing in the unit?

3) A fixed value {{22{1'b1}},1'b0} is supplied to the ardin input. Moreover, instead of 1'b0 you can put some kind of external connection. If you try to substitute something instead of the other 22 bits, the compilation will not work. I'll assume that ardin is the input of the address shift register. I will assume that the register allows you to shift data while arshft is one and auto-increments itself if arshft is zero.

 

Why is it not possible to put the value “512” into the address register in ten  arclk cycles and start reading immediately? Is it possible to randomly navigate to addresses within UFM or is only sequential reading possible?

 

Please can you explain how to read particular address memory location..as always ardin accepting 0 or 1 as input..if I would like to read given address memory location.how would I can feed particular address into ardin ..

 

Please help me ..

On 1/21/2021 at 1:21 PM, umarsohod said:

The behavior of " altera_onchip_flash_block " is very similar to the behavior of " ALT_UFM_NONE " for MaxII, read the documentation for it.

But I only dealt with what I needed. The least significant bit of " ardin " is really like the input of an address shift register, 

but how long this register is is unknown. I push in 512 zeros "for future use". And the data doesn't really start from the beginning.

There is a parameter for the module “ADDR_RANGE1_OFFSET(512)”, but I couldn’t change it. 

 

Please can you explain how to read particular address memory location..as always ardin accepting 0 or 1 as input..if I would like to read given address memory location.how would I can feed particular address into ardin ..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/25/2023 at 11:31 AM, techhunger said:

Please can you explain how to read particular address memory location..as always ardin accepting 0 or 1 as input..if I would like to read given address memory location.how would I can feed particular address into ardin ..

Please help me ..

Please can you explain how to read particular address memory location..as always ardin accepting 0 or 1 as input..if I would like to read given address memory location.how would I can feed particular address into ardin ..

The harsh truth is that the OP post date is December 24, 2020. My project where I tried to use on-chip memory has stalled. Now I can not explain to you all the details about using on-chip memory in MAX-10 immediately. Thus you can try to analyze the above example or wait several moungth for my article about on-chip memory.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...