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

 
 
 
Reply to this topicStart new topic
> Qsys User IP
doom13
сообщение Jan 30 2015, 11:52
Сообщение #1


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Вопрос, возможно ли на базе компонентов из Qsys создать пользовательское IP-ядро. Т.е. есть система USER_SYSTEM из библиотечных компонентов (SPI_0, GPIO_0, GPIO_1), которая встраивается как компонент в другую систему, для которой уже будут работать не драйвера для SPI_0, GPIO_0, GPIO_1, а драйвера для USER_SYSTEM. Т.е. система верхнего уровня не знает о наличии GPIO и SPI в системе нижнего уровня, а знает о каких-то обобщённых возможностях USER_SYSTEM.
Если это возможно, хотелось бы пример или ссылку, где можно об это почитать.
Спасибо.

Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 5 2015, 08:04
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 doom13
Возможно это вам поможет. Там как раз есть подсистемы в системе.
Там одна бЯда - прерывания не передать никак, нужно своё чЮдо городить..

Ну или руками всё собирать в кучу cool.gif
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 5 2015, 09:03
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Возможно это вам поможет. Там как раз есть подсистемы в системе.
Там одна бЯда - прерывания не передать никак, нужно своё чЮдо городить..

Почему же не передать? В подсистеме сигнальчики IRQ экспортируем и в топ системе тянем их на interrupt receiver попутно назначая приоритеты. С другой стороны, как я понял, подсистемы это не совсем то, что хочет автор rolleyes.gif В случае подсистемы все ее внутренности появятся в system.h в BSP с префиксом подсистемы. По сути это отдельные компоненты, которые вынесены в отдельное окошко Qsys удобства для, а хочется получить законченный IP, собранный полностью в QSys с одним драйвером. Если я правильно понял.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 5 2015, 10:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 serjj
тогда может вы подскажете через что вы вытягиваете например AVM от ниоса ? (так чтоб малой кровью - а-ля "export port")
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 5 2015, 10:50
Сообщение #5


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(serjj @ Feb 5 2015, 12:03) *
С другой стороны, как я понял, подсистемы это не совсем то, что хочет автор rolleyes.gif В случае подсистемы все ее внутренности появятся в system.h в BSP с префиксом подсистемы. По сути это отдельные компоненты, которые вынесены в отдельное окошко Qsys удобства для, а хочется получить законченный IP, собранный полностью в QSys с одним драйвером. Если я правильно понял.

Да всё правильно поняли, хотелось
Цитата
законченный IP, собранный полностью в QSys с одним драйвером.
,
но решил - подсистемы будет достаточно.
Go to the top of the page
 
+Quote Post
serjj
сообщение Feb 5 2015, 11:25
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



2 Kuzmi4, у меня в подсистеме были низскоростные интерфейсы и прочая такая штука, AVM из нее не вытягивал, только AVS, он спокойно тянется компонентом Avalon-MM Clock Crossing Bridge, резет заводил через Reset Bridge, а мост на прерывания Qsys поставил сам.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 10 2015, 10:37
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Возник тут вопрос по подсистемам, решил написать сюда, раз тут уже было некоторое обсуждение подсистем:
Значит наши головастики решили один Q2 v9 дизайн обновить и раскидать кучу компонентов по подсистемам. Сделали знаит они там разделение:
1) подсистема процессора - nios2-f, boot-rom, tc-data/instruction-mem
2) подсистема периферии - led, sys-timer, jtag-uart, etc.
3) (и так далее, много там всего)
Значит вставили они IRQ Bridge в подсистему процессора, завели туда все прерывания от разных подсистем в топе. Собрал я FPGA design в Q2. И вдруг обнаружил при попытке собрать софт, что прерывания то в system.h все "-1", хотя проверил HDL - роут сигналов до порта у Nios2-f есть, как и CDC. Значит убрал я этот IRQ Bridge и всё собралось без вопросов - прерывания как хотел, так и получил что в HDL что в system.h (в смысле не "-1" а соответствующие номера). И вот тут обнаружилась очередная неприятность: при сборке тестового примера "Hello world" с printf выяснилось, что прерывание от JTAG-UART физически заходит в Nios2-f (разводка и CDC - в топе), а вот нормально обработки этого IRQ нет (в смысле Nios2-f всё честно копирует куда надо, пишет в контрол в JTAG-UART, скопом я вижу сигнал прерывания который взводится и заходит в Nios2-f а вот собственно саму активность в IRQ рутине вообще не наблюдаю). Хотя в коде тестового примера "Hello world" есть регистрация прерывания для JTAG-UART.
То есть получается что прерывание есть и физически заходит в Nios2-f а вот софтварный контроллер прерывания почему то всё игнорит. Никто не сталкивался с такой баго-фичей ?? smile3046.gif
Go to the top of the page
 
+Quote Post
krux
сообщение Apr 10 2015, 11:38
Сообщение #8


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



сталкивался с подобным поведением в qsys, когда были "-1".
правил руками - прописывал в system.h номера присвоенных векторов прерываний.

IRQ bridge имхо убрали зря. у вас асинхронщина из-за этого в таймквесте не повылезала?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 10 2015, 11:45
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 krux
IRQ Bridge там расшивку делал дополнительную и всё. А на счёт асинхронщины - я проверил HDL/RTL - для IRQ сигналов идут сначала CDC, потом сборка по номерам в топе, а потом уже заводят на порт Nios2-f. То есть асинхронщины там нет в принципе со стороны Nios2-f.
Сейчас сделаю простенькую тестовую системку (некий аналог интересующего куска системы), если там всё заработает - значит собиральшики Qsys так насобирали.
Go to the top of the page
 
+Quote Post
serjj
сообщение Apr 10 2015, 12:24
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Пробовал как-то с этим баловаться, вот выдернул пару qsys файлов из проекта, где это применял, оставил в них самый минимум периферии для наглядности:
Прикрепленный файл  subsystems_qsys.zip ( 8.26 килобайт ) Кол-во скачиваний: 47

Вроде бы оно работало rolleyes.gif

Сообщение отредактировал serjj - Apr 10 2015, 12:25
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 10 2015, 14:23
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



В общем собрал я самый примитивный простой дизайн: [{nios + ram} + {jtag-uart + pio}]
Результат - всё то же самое: "Hello world"-small работает, "Hello world" обычный - нет. CDC и коннект прерываний присутствует. Прерывание -заходит напрямую - без IRQ Bridge, Q2 сам поставил CDC и соединил как надо.
Вот Прикрепленный файл  hw_sw_test_v00.7z ( 13.16 килобайт ) Кол-во скачиваний: 44
если кому будет интересно поковыряться.

UPD:
в общем, судя по всему, VIC спасёт отца русской демократии.... Хотя это дополнительные ресурсы.....
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 13 2015, 07:25
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



UPD:
или же, если допускается работа напильником и/или очень хочется sw-based IRQ обработку (нужное подчеркнуть) - нужно ставить IRQ Bridge, а потом руками расшивать прерывания в Qsys, и во время генерации всего Nios2 добра согласно Qsys-расшивке патчить system.h (заменять -1 на нужные цифры).
В общем вот такие рецеБты...

(Открыть что ли кейс на альтере wacko.gif потому как вроде бы как баг получается, прерывания Шрёдингера - прерывания вроде есть но их нет...)
Go to the top of the page
 
+Quote Post
serjj
сообщение Apr 14 2015, 06:10
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Вот насколько я помню, IRQ bridge руками никогда не ставил, Qsys их умеет сам добавлять. А для того чтобы не было в system.h -1 напротив прерывания, достаточно было подключить авалон, соответствующий данному каналу прерывания... И в примере, который я выложил прерывания между подсистемой и топсистемой ходят. Не понятно в чем тогда проблема.
Go to the top of the page
 
+Quote Post

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

 


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


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