在Qsys中,我使用十二个输入并行端口(将它们命名为pio1
到pio12
),每个端口为12位。这些并行端口从Quartus示意图中的vhdl
块获得值。在示意图bdf
中,我可以从nios ii系统符号中看到pio1
到pio12
,因此我可以将这些pio
连接到我的bdf
中的其他块。
我的问题是,如何将这些pio1
矢量化为pio12
?与其一行接一行地看到来自Nios系统符号的所有十二个pio
,我应该怎么做才能将所有这十二个Pio分组,使我只看到一个而不是十二个?从我看到的一个pio
,我可以将其命名为pio
[1.12][1..12],第一个括号表示pio1
到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_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;
我有以下错误,我有几个问题:
- 我想我不会有时钟和重置信号,因为这纯粹是数据传输
writebyteenable_n
出现12次(只允许出现一次),但我有12次pio
…要做什么更改
警告:avalon_slave_0:信号writebyteenable_n出现12次(只允许一次)错误:avalon_slave_0:接口必须具有关联时钟错误:avalon_slave_0:接口必须具有关联重置错误:avalon_slave_0:接口必须具有相关时钟。
您看到的警告和错误是因为您没有将此连接定义为导管导出,因此信号被配置为avalon从属信号。
在Qsys的"信号"选项卡中编辑您的组件,并将信号设置为conduit_end,然后在下一个选项卡中单击按钮"删除悬挂连接"。这可能会解决警告和错误的问题。
关于引脚分组的问题,我不知道是否可以这样做。