有没有办法在不使用分配的情况下编辑输入输出端口?
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
我的目标是实现一个有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