Как использовать новый компонент, созданный в Qsys, для векторизации / группировки множества сигналов

В Qsys я использую двенадцать входных параллельных портов (давайте назовем их pio1 в pio12), каждый порт 12 бит. Эти параллельные порты получают значения из vhdl блок в схеме Quartus. На схеме bdf, Я могу видеть pio1 в pio12 от символа системы nios ii, так что я могу подключить эти pioс другими блоками в моем bdf,

Мой вопрос, как векторизовать эти pio1 в pio12? Вместо того, чтобы видеть все двенадцать pioЕсли одна строка за одной строкой выходит из системного символа Nios, что мне следует сделать, чтобы сгруппировать все эти двенадцать пиос, чтобы я видел только один вместо двенадцати? От одного pio что я вижу, я могу назвать это pio[1..12][1..12], первая скобка означает pio1 в pio12вторая скобка означает биты с 1 по 12, потому что каждый параллельный порт имеет 12 бит.

Я создал новый компонент в Qsys, используя этот pio_helper.vhd файл,

pio_helper.vhdl Файл выглядит следующим образом:

entity pio_helper is 

port(
pio1 : in std_logic_vector(11 downto 0);
pio2 : in std_logic_vector(11 downto 0);
pio3 : in std_logic_vector(11 downto 0);
pio4 : in std_logic_vector(11 downto 0);
pio5 : in std_logic_vector(11 downto 0);
pio6 : in std_logic_vector(11 downto 0);
pio7 : in std_logic_vector(11 downto 0);
pio8 : in std_logic_vector(11 downto 0);
pio9 : in std_logic_vector(11 downto 0);
pio10 : in std_logic_vector(11 downto 0);
pio11 : in std_logic_vector(11 downto 0);
pio12 : in std_logic_vector(11 downto 0);
piomerge : out std_logic_vector(143 downto 0)
);

end pio_helper;       

Поведение архитектуры pio_helper является

begin    

piomerge(11 downto 0) <= pio1;
piomerge(23 downto 12) <= pio2;
piomerge(35 downto 24) <= pio3;
piomerge(47 downto 36) <= pio4;
piomerge(59 downto 48) <= pio5;
piomerge(71 downto 60) <= pio6;
piomerge(83 downto 72) <= pio7;
piomerge(95 downto 84) <= pio8;
piomerge(107 downto 96) <= pio9;
piomerge(119 downto 108) <= pio10;
piomerge(131 downto 120) <= pio11;
piomerge(143 downto 132) <= pio12;

end behavior;

Я получил следующие ошибки, у меня есть несколько вопросов:

  1. Я предполагаю, что у меня не будет часов и сигналов сброса, потому что это чисто передача данных
  2. writebyteenable_n появляется 12 раз (допускается только один раз), но у меня 12 pios... какие изменения нужно сделать?

Предупреждение: avalon_slave_0: сигнал writebyteenable_n появляется 12 раз (разрешен только один раз). Ошибка: avalon_slave_0: Интерфейс должен иметь ассоциированные часы. Ошибка: avalon_slave_0: Интерфейс должен иметь ассоциированный сброс. Ошибка: avalon_slave_0: Интерфейс должен иметь ассоциированные часы.

1 ответ

Вы видите предупреждение и ошибку, потому что вы не определили эти соединения как экспорт канала, сигналы настроены как сигналы ведомого avalon.

Перейдите к редактированию вашего компонента на вкладке Qsys, Сигналы и установите сигналы как Wireit_end, затем на следующей вкладке нажмите кнопку "Удалить висячие соединения". Это может решить вашу проблему с предупреждением и ошибкой.

На вопрос о группировке выводов я не знаю, возможно ли это сделать.

Другие вопросы по тегам