0

我想在我的控制器中使用双向数据总线。这是代码

module controller ( clk, data_out);
// Port Declaration
input   clk;
inout   [7:0] data_out;

reg     [7:0] a;
reg     [7:0] b;
wire    [7:0] c;

// data should write to data_out (data_out act as output)

task write; 
input c;
begin

assign data_out = a;
data_out <= c;

end
endtask

// data should read from data_out (data_out act as input)

task read; 
output b;
begin

assign data_out = 8'bz;
b <= data_out;

end
endtask

endmodule

当我编译这个我得到一个错误说

程序连续分配中的 LHS 可能不是一个网络:data_out。

它说有一个错误 assign data_out = a;assign data_out = 8'bz; 我知道分配应该在总是或初始块中完成,但在使用这些块的任务中是无用的/给 eroor

那么,我们如何在任务中改变公交车的方向呢?

4

1 回答 1

1

您不应该在 initial 和 always 块中使用 assign。我不明白你为什么一定要在任务中使用它?只需单独使用assign。将值分配给双向端口需要一个标志,该标志指定应该执行什么操作 - 读取或写入。语法如下:

  assign bidir_port = [flag] ? a : 1'bz;
于 2017-03-15T18:27:18.407 回答