Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обмен данными между ПЛИС и NIOS
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
limbast
Приветствую всех.
Имеется АЦП, с которого ПЛИС считывает, суммирует и умножает данные. После определенного числа выборок полученные данные нужно передать NIOS для дальнейших действий.
Подумалось, что можно передать просто через порт NIOS-а, но он ограничен 32 битами, а нужно передать два значения в 40 и 56 бит. В принципе можно разбить на несколько портов разной разрядности, а в NIOS склеить.
Далее подумал использовать Dual Port Memory. Но придется городить модуль для запихивания данных в эту память. Может есть модуль, который сам генерирует требуемые двухпортовой памяти сигналы, а на входе нужны только данные любой длины?
И наконец, а можно ли сделать чтобы регистры данных железа (40 и 56 бит) отображались в адресное пространство NIOS, чтобы NIOS фактически мог в любое время взять и прочитать этот регистр, наподобие чтения той же Dual Port Memory.
Swup
Цитата(limbast @ Oct 12 2017, 16:34) *
можно ли сделать чтобы регистры данных железа (40 и 56 бит) отображались в адресное пространство NIOS


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

Проблема в том, что вы видимо не достаточно осведомлены как работает qsys и avalon-mm в частности.

В общих чертах я бы сделал ваш модуль весь целиком, блоком qsys.
Сделал бы на нем avalon-mm slave с 32х битной шиной данных и irq sender.
В 0 адресе имел бы регистр управления с прерыванием и маской прерывания.
При получении данных писал бы их в регистры по 32 бита в адреса 1,2,3,4 и выставлял бы прерывание.
По прерыванию в ниосе читал бы эти 4 регистра (можно через указатель, можно через IORD. Второе лучше).
Сбрасывал бы прерывание.

Это все достаточно просто. Стоит разобраться один раз.

Вариант с памятью вообще выглядит избыточно.
А с пио, как-то кривовато. Зато можете сделать прямо сейчас, если спешите.
Nick Potapov
Я бы не делал весь блок частью Qsys, потому что при изменении в блоке придется перегенерировать систему, пересобирать софт Ниоса. Проще сделать в Qsys мост наружу, т.е. вывести сигналы Avalon-MM за пределы системы, а в блоке, обрабатывающем данные с АЦП, реализовать контроллер Avalon-MM Slave.
Swup
Ксли один такой периферийный модуль и он сам по себе - сложная система, то может и да.
Если у вас 10-20 таких модульков, отвечающих за всякое разное, то проще держать все в qsys.

Генерировать систему это ведь не что-то невероятно сложное. К тому же интегрируемый модуль обычно уже оттестирован отдельно.
limbast
Всё на Qsys не получится. Он просто не успеет. Период преобразования 2МГц, частота quadspi - 75МГц. Нужно формировать сигнал преобразования, затем CS и чтение. После этого данные (64 битные) суммируем, умножаем и снова суммируем. Кроме того nios должен будет заниматься и другими делами. Переход на ПЛИС был вынужденный, потому как другие МК с этой задачей не справились. Всё было сделано на DMA.
Реализация чтения АЦП на ПЛИС понятна и прозрачна, все тайминги минимальны и понятно откуда берутся, а вот в МК, включая NIOS, задержки берутся неизвестно откуда и мы с этим ничего не сможем сделать.

PS Я задумывался о контроллерах Avalon-MM, но мне показалось это избыточно громоздко ради двух значений, думал может есть какой то простой и изящный способ передать данные в Qsys.
Nick Potapov
Цитата(limbast @ Oct 13 2017, 09:31) *
думал может есть какой то простой и изящный способ передать данные в Qsys.


Так вот вам выше и посоветовали сделать блок для Qsys. Подробнее можете почитать у Альтеры QII51022 2013.11.4 Creating Qsys Components.
Swup
Цитата(limbast @ Oct 13 2017, 10:31) *
PS Я задумывался о контроллерах Avalon-MM, но мне показалось это избыточно громоздко ради двух значений, думал может есть какой то простой и изящный способ передать данные в Qsys.


Это не громоздко и не избыточно. При синтезе это вообще практически бесплатно.
Во вторых это и есть изящно и просто, потому что это тот путь, который естественен для среды в которой вы работаете (qsys). И ни у одного пользователя он не вызовет недоумения.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.