有没有办法在不使用分配的情况下编辑输入输出端口?

is there any way to edit an inout port without using assign?

我的目标是实现一个有inout端口的模块,这个模块的描述是行为的,要实现这个模块,我的老师说,我不应该使用assign命令。

那么有什么方法可以在不使用分配的情况下编辑输入输出端口吗?

这是我的代码:

module DRAM(addr,rw,data);

parameter N=8;
parameter M=8;


input rw;
input [N-1:0] addr;
inout [M-1:0] data;


reg [M-1:0] data;
reg [M-1:0] loc_data [512:0];


always @(*)
 begin

 if(rw)
  begin
   loc_data[addr]=data;
  end
 else if(!rw) 
 begin
  data=loc_data[addr]; //this is my problem.

 end 
 else
 begin
 end
end

endmodule

如果您只是需要避免使用 assign 关键字,则可以改用连线声明赋值。

module DRAM#(parameter N=8,M=8) (
    input         rw,
    input [N-1:0] addr,
    inout [M-1:0] .data(data_w)
);

reg  [M-1:0] data_r;
wire [M-1:0] data_w = rw ? {M{1'bz}} : data_r;
reg  [M-1:0] loc_data [512:0];

always @(*)
 if(rw)
   loc_data[addr]=data_w;
 else if(!rw) 
  data_r=loc_data[addr];
 
endmodule