flammmable 4 24 декабря, 2020 Опубликовано 24 декабря, 2020 · Жалоба Возможно ли на MAX-10 задействовать встроенную пользовательскую флеш-память UFM без использования шины Avalon? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 24 декабря, 2020 Опубликовано 24 декабря, 2020 · Жалоба Возможно. IP Catalog - Basic Functions - On Chip Memory - {ALT_UFM_NONE / UFM for I2C / UFM for Parallel / UFM for SPI} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flammmable 4 25 декабря, 2020 Опубликовано 25 декабря, 2020 · Жалоба 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". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
umarsohod 1 25 декабря, 2020 Опубликовано 25 декабря, 2020 · Жалоба Вам для какой цели это нужно? Если просто все подряд прочитать, можно так - https://github.com/marsohod4you/M02mini/blob/master/forth_j1/ufmr.v Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flammmable 4 12 января, 2021 Опубликовано 12 января, 2021 · Жалоба 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 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
umarsohod 1 12 января, 2021 Опубликовано 12 января, 2021 · Жалоба Я думаю, вы что-то неправильно пробуете. Почитайте внимательно ворнинги компилятора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flammmable 4 20 января, 2021 Опубликовано 20 января, 2021 (изменено) · Жалоба 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 или же допустимо только последовательное чтение? Изменено 20 января, 2021 пользователем flammmable Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
umarsohod 1 21 января, 2021 Опубликовано 21 января, 2021 (изменено) · Жалоба Поведение "altera_onchip_flash_block" очень похоже на поведение "ALT_UFM_NONE" для MaxII, почитайте на него документацию. Но я разбирался только с тем , что мне было нужно. Младший бит "ardin" действительно похож на вход сдвигового регистра адреса, но какой длинны этот регистр неизвестно . Я задвигаю 512 нулей "впрок".И данные действительно начинаются не сначала. К модулю есть параметр "ADDR_RANGE1_OFFSET(512)", но его изменить у меня не получилось. Изменено 21 января, 2021 пользователем umarsohod Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
techhunger 0 25 сентября, 2023 Опубликовано 25 сентября, 2023 · Жалоба 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 .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
techhunger 0 25 сентября, 2023 Опубликовано 25 сентября, 2023 · Жалоба Example :.ardin(9'b000000011) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flammmable 4 27 сентября, 2023 Опубликовано 27 сентября, 2023 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться