如何使用Qsys中创建的新组件将许多信号矢量化/组合在一起



在Qsys中,我使用十二个输入并行端口(将它们命名为pio1pio12),每个端口为12位。这些并行端口从Quartus示意图中的vhdl块获得值。在示意图bdf中,我可以从nios ii系统符号中看到pio1pio12,因此我可以将这些pio连接到我的bdf中的其他块。

我的问题是,如何将这些pio1矢量化为pio12?与其一行接一行地看到来自Nios系统符号的所有十二个pio,我应该怎么做才能将所有这十二个Pio分组,使我只看到一个而不是十二个?从我看到的一个pio,我可以将其命名为pio[1.12][1..12],第一个括号表示pio1pio12,第二个括号表示比特1到比特12,因为每个并行端口有12个比特。

我使用这个pio_helper.vhd文件在Qsys中创建了一个新组件,

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次pio…要做什么更改

警告:avalon_slave_0:信号writebyteenable_n出现12次(只允许一次)错误:avalon_slave_0:接口必须具有关联时钟错误:avalon_slave_0:接口必须具有关联重置错误:avalon_slave_0:接口必须具有相关时钟。

您看到的警告和错误是因为您没有将此连接定义为导管导出,因此信号被配置为avalon从属信号。

在Qsys的"信号"选项卡中编辑您的组件,并将信号设置为conduit_end,然后在下一个选项卡中单击按钮"删除悬挂连接"。这可能会解决警告和错误的问题。

关于引脚分组的问题,我不知道是否可以这样做。

最新更新