Verilog 如何将输入输出信号连接到输出和输入端口

Verilog 如何将输入输出信号连接到输出和输入端口,verilog,Verilog,PS_GPIO是模块“xillydemo”中的56位“输入输出”信号。现在,我想将PSGPIO的不同部分分配给顶部模块中的三个不同端口: module xilly_mydemo( input clk_100, input otg_oc, inout [23:0] PS_GPIO1, output [23:0] PS_GPIO2, input [7:0] PS_GPIO3, output [3:0] GPIO_LED, output [3:0] vga4_bl

PS_GPIO是模块“xillydemo”中的56位“输入输出”信号。现在,我想将PSGPIO的不同部分分配给顶部模块中的三个不同端口:

module xilly_mydemo(
  input  clk_100,
  input  otg_oc,   
  inout [23:0] PS_GPIO1,
  output [23:0] PS_GPIO2,
  input [7:0] PS_GPIO3,
  output [3:0] GPIO_LED,
  output [3:0] vga4_blue,
  output [3:0] vga4_green,
  output [3:0] vga4_red,
  output  vga_hsync,
  output  vga_vsync,

  output  audio_mclk,
  output  audio_dac,
  input   audio_adc,
  input   audio_bclk,
  input   audio_lrclk,    
  output smb_sclk,
  inout  smb_sdata,
  output [1:0] smbus_addr,      
  output [23:0] sig_out); 

  wire [23:0]PS_GPIO1;
  wire [23:0]PS_GPIO2;
  wire [7:0] PS_GPIO3;

 xillydemo xillydemo(
    .clk_100(clk_100),
    .otg_oc(otg_oc),   
    .PS_GPIO(PS_GPIO),
    .GPIO_LED(GPIO_LED),
    .vga4_blue(vga4_blue),
    .vga4_green(vga4_green),
    .vga4_red(vga4_red),
    .vga_hsync(vga_hsync),
    .vga_vsync(vga_vsync),

    .audio_mclk(audio_mclk),
    .audio_dac(audio_dac),
    .audio_adc(audio_adc),
    .audio_bclk(audio_bclk),
    .audio_lrclk(audio_lrclk),    
    .smb_sclk(smb_sclk),
    .smb_sdata(smb_sdata),
    .smbus_addr(smbus_addr),      
    .sig_out(sig_out)
  ); 

  assign PS_GPIO1 = PS_GPIO[23:0];
  assign PS_GPIO2= PS_GPIO[24:47];  
  assign PS_GPIO3=PS_GPIO[48:55];
  endmodule
但它显示“无法索引到PS_GPIO的非数组类型导线”。 有人能帮我吗?
谢谢

您还没有在任何地方定义
PS\GPIO
,因此Verilog采用单个位

即使这是固定的,我不认为你在正确的轨道上。 在输入、输出和输入输出端口中乱搞输入输出并将其拆分至少是令人困惑的。我甚至不确定该工具是否会接受上面写的内容。

做一个干净的设计,在
xillydemo
中做三个端口,一个
输入
,一个
输出
和一个
输入
都具有正确的宽度

“PS_GPIO”是“xillybus”系统中的一个56位输入输出端口,开发人员制作了PS_GPIO端口来控制zedboard上的不同GPIO,因此它是固定的。我想用其中一些作为输入,另一些作为输出。有什么办法吗?唉!如果你让业余爱好者乱用HDL,你就会得到这样的结果。(我指的是xillybus的设计师,不是你)。他们应该有3套GPIO端口,输入、输出和tri。添加
wire[55:0]PS\u GPIO并从那里尝试。请注意,分配给PS_GPIO2和PS_GPIO3的索引是交换的(从低到高),这是您想要的吗?