我想在我的控制器中使用双向数据总线。这是代码
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可能不是net:data_out。
它说assign data_out = a;
和assign data_out = 8'bz;
出错了
我知道assign应该在always或initial块中完成,但在使用这些块的任务中没用/给eroor
那么,我们如何才能在一项任务中改变公交车的方向?
答案 0 :(得分:1)
你不应该在initial和always块中使用assign。我不明白为什么你一定想要它在任务中? 只需单独使用分配。为双向端口分配值需要一个标志,指定应该执行什么操作 - 读取或写入。语法如下:
assign bidir_port = [flag] ? a : 1'bz;