Jump to content

    
Sign in to follow this  
Gun_931

Обращение к flash epcs16

Recommended Posts

Всем доброго дня)

Разрабатывается проект на cyclone III. Он достаточно объемный и внутренней памяти fpga для обработки данных не хватает, поэтому было решено задействовать оставшуюся память флешки (сейчас стоит epcs16). Возник такой вопрос: возможно ли обратиться к загрузочным ногам (DCLK, DATA, nCE, ASDI) напрямую со своего spi блока, не задействовав корки в Qsys. Пока при создании IO пинов и подключении их в pin planner при компиляции выдается ошибка "multiple pins assigned". В доках альтеры нашел только подключение через sopc/qsys.

Share this post


Link to post
Share on other sites
Всем доброго дня)

Разрабатывается проект на cyclone III. Он достаточно объемный и внутренней памяти fpga для обработки данных не хватает, поэтому было решено задействовать оставшуюся память флешки (сейчас стоит epcs16). Возник такой вопрос: возможно ли обратиться к загрузочным ногам (DCLK, DATA, nCE, ASDI) напрямую со своего spi блока, не задействовав корки в Qsys. Пока при создании IO пинов и подключении их в pin planner при компиляции выдается ошибка "multiple pins assigned". В доках альтеры нашел только подключение через sopc/qsys.

Используйте мегафункцию ALTASMI_PARALLEL.

Share this post


Link to post
Share on other sites
Используйте мегафункцию ALTASMI_PARALLEL.

Спасибо большое) и как я упустил это ядро)) Достаточно удобное кстати)

Но все таки возможно ли вообще обращение к этим ногам как к юзеровским?

Share this post


Link to post
Share on other sites
Спасибо большое) и как я упустил это ядро)) Достаточно удобное кстати)

Но все таки возможно ли вообще обращение к этим ногам как к юзеровским?

Посмотрите, возможно ли через Device and Pin Options задать их использование как user i/o.

Share this post


Link to post
Share on other sites
внутренней памяти fpga для обработки данных не хватает, поэтому было решено задействовать оставшуюся память флешки (сейчас стоит epcs16)
А Вы её для хранения и считывания констант хотите использовать? А то из текста можно подумать, что в качестве ОЗУ.

Share this post


Link to post
Share on other sites
Используйте мегафункцию ALTASMI_PARALLEL.

А я бы не рекомендовал.

 

Спасибо большое) и как я упустил это ядро)) Достаточно удобное кстати)

Но все таки возможно ли вообще обращение к этим ногам как к юзеровским?

Да, сделав на основе ASMI, потом переделал на основе доступа к этими пинам (их использование, как уже указали, нужно разрешить в опциях дивайса).

Share this post


Link to post
Share on other sites
Посмотрите, возможно ли через Device and Pin Options задать их использование как user i/o.

 

Да спасибо, во вкладке Dual Purpose Pins указал их как пользовательские. Компиляция проходит. Благодарю :biggrin:

 

 

А Вы её для хранения и считывания констант хотите использовать? А то из текста можно подумать, что в качестве ОЗУ.

 

Там будут хранится массивы данных и команды.

 

 

А я бы не рекомендовал.

 

Да, сделав на основе ASMI, потом переделал на основе доступа к этими пинам (их использование, как уже указали, нужно разрешить в опциях дивайса).

 

А что с ним такое? Криво сделан?

Share this post


Link to post
Share on other sites
А что с ним такое? Криво сделан?

Нормально сделан, всё работает и багов не замечено. Возможно, имелось ввиду то, что если получить доступ к ногам, то можно их вытащить на внешний master. Если использовать master в FPGA, то удобнее использовать ASMI (нет необходимости в построении протокола, хотя и простого, общения с SPI-flash).

Share this post


Link to post
Share on other sites
А что с ним такое? Криво сделан?

Не то, чтобы уж криво, но неровно, факт. Мутная хрень с невнятной реализацией и корявой докой (как и большинство док альтеры :(, моё мнение (с)). В процессе освоения не обошлось без обращения в саппорт. Работоспособности добиться, в общем, удалось, но неприятно анноили такие вещи, как пачка предупреждений типа Optimized away the following RAM nodes... и далее перечислены элементы удалённой внутренней памяти, которую эта корка родила. Т.е. корка описывает память, потом синтезатор это удаляет. Избавиться от этого не представляется возможным - это их внутренние дела, юзер к этому отношения не имеет. Это явная кривизна.

 

Далее, клок. Клок надо констрейнить, и сделать это не так просто, как это делается со своими клоками. Скорость клока тоже ограничена, 10 МГц, если склероз не врёт. А флешки нынче есть очень быстрые. И более функциональные, нежели EPCS/M25P.

 

Далее, остаётся ругань на всякие Missign drive strength как раз на эти ноги, которые идут на внешнюю флешку. Любые попытки прописать на них соответствующие констрейны завершаются ошибкой. Т.е. неустранимая хрень.

 

Такое впечатление, что либо они там не тестируют это, либо им пофиг (склоняюсь к этому варианту).

 

Ну, и в итоге переписал на свой вариант, где использую только ноги ПЛИС. Получается не сложнее, всё в твоих руках, реализация на основе SPI master. Никаких "побочных эффектов", всё работает отлично, реализация прозрачная. Предсказуемость и управляемость. Этот вариант у меня получился по времени короче и по трудозатратам меньше (правда, модуль SPI master у меня уже был).

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this