2015-10-07 3 views
0

Использование Qsys (Quartus II x64 15.0.1 build 150) Я создал систему с Nios2/e и несколькими стандартными периферийными компонентами. Я также добавляю свой пользовательский компонент с 1 MM-Slave и 2 отправителями прерываний. Для каждого из них я устанавливал этот подчиненный как «Связанный адресный интерфейс» в редакторе компонентов при создании файла _hw.tcl.Несколько отправителей прерываний в одном периферийном устройстве в Qsys

Qsys не сообщает об ошибках или предупреждениях, но затем я попытался сделать проект BSP в Eclipse с помощью New | Мастер проекта Nios 2 BSP. Я выбираю «SOPC Information File name», но «CPU» ComboBox остается пустым, и появляется сообщение «No Nios II CPU Found».

Затем я запускаю BSP Editor из главного меню: Nios 2 | Редактор BSP и нажмите Файл | Новый Nios 2 BSP. Я снова предоставляю файл SOPC, и этот инструмент нашел CPU, но также сообщает об ошибке: «Может иметь только не более одного IRQ, связанного со следующими подчиненными модулями« my_component »: mm_slave."

Затем я вернулся в Qsys и удалил один из отправителей прерываний, и на этот раз все работает нормально, но мне нужно сгенерировать более одного прерывания.

Итак, что делать, если у вас есть Nios2/e, подключенный к настраиваемой периферии с 1 MM-Slave и несколькими отправителями прерываний?

У меня есть некоторые идеи, но их не любят:

  1. Добавить ММ-невольник для каждого IRQ (он выглядит как пустая трата ресурсов).

  2. Не указывайте «Связанный адресный интерфейс» в редакторе компонентов (он работает, но я не знаю, будет ли он работать должным образом все время). Что этот вариант действительно делает? Я был неточен, говоря, что он будет работать, извините за это. В действительности qsys и BSP могут быть сгенерированы, но внутри системы BSP.h. Номер IRQ будет определен как -1, поэтому он не будет работать.

  3. Объедините все прерывания в один провод (все они будут иметь одинаковый приоритет).

  4. Конфигурировать отправителя прерывания, чтобы иметь сигнал irq с шириной более 1 (Редактор компонентов позволяет это делать, но сообщает о предупреждении: «interrupt_sender: сигнал irq_many [4] типа irq должен иметь ширину [1]».) Как и в случае с case 2 Я не знаю, что произойдет в генераторах/компиляторах Altera. После завершения этапа редактирования компонента Qsys не принимает такую ​​систему.

Помогите пожалуйста.

ответ

1

В конце концов, я нашел следующий:

A. Если вам нужно много прерываний отправителей в один пользовательском модуле QSYS вам нужно один ММ-Раб за каждый. Из организации GUI кажется, что вы назначаете MM-Slave IRQ, но (насколько я понимаю) он работает прямо противоположно: IRQ привязан к MM-Slave и может иметь максимум одно IRQ. Я не пытался запустить его, но файлы BSP выглядят корректно, и все компилируется по крайней мере. Надеюсь, что есть (или будет) лучший способ достичь этого.

B. Если вы можете использовать один и тот же приоритет между всеми прерываниями, вы можете избежать проблемы, используя только 1 отправителя прерываний и, следовательно, только 1 MM-Slave. Он работает на dev board.

Смежные вопросы