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

时间:2018-07-21 17:48:40

标签: verilog

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

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索引到非阵列类型的导线中”。 谁能帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

您尚未在任何地方定义PS_GPIO,因此Verilog假定只有一位。

即使这是固定的,我也不认为您走在正确的轨道上。 搞砸inout并将其拆分为输入,输出和inout端口至少是令人困惑的。我什至不确定该工具是否会接受此处编写的内容。
进行简洁的设计,在xillydemo中创建三个端口,其中一个input,一个output和一个inout都具有正确的宽度。