1

在 Qsys 中,我使用了 12 个输入并行端口(我们将它们命名pio1pio12),每个端口都是 12 位的。vhdl这些并行端口从Quartus 原理图中的模块中获取值。在原理图bdf中,我可以从 nios ii 系统符号中看到pio1to ,因此我可以将这些s 连接到我的其他块pio12piobdf.

我的问题是,如何将这些矢量pio1化为pio12?不是pio从 Nios 系统符号中一行一行地看到所有十二个,而是应该怎么做才能将所有这十二个 pios 分组,以便我只看到一个而不是十二个?根据pio我看到的,我可以将它命名为pio[1..12][1..12],第一个括号表示pio1to pio12,第二个括号表示第 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_helperis 的架构行为

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:接口必须有关联的时钟。

4

1 回答 1

1

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

在 Qsys 的 Signals 选项卡中编辑您的组件并将信号设置为conduit_end,然后在下一个选项卡中单击“Remove dangling connections”按钮。这可能会解决您遇到的警告和错误问题。

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

于 2015-04-09T01:56:11.000 回答