我需要做这样的事情。我需要把数组分成单独的信号。我没有指定方向的使能信号。而且,"assign“语句是行不通的。还有其他建议吗?
module conv (
inout [1:0] array,
inout a,
inout b
);
assign {a, b} = array;
endmodule发布于 2020-08-28 14:20:09
你想给一个信号的名字起别名。请参阅IEEE 1800-2017 LRM中的第10.11节净混叠。
module conv ( inout [1:0] array, inout a, inout b );
alias {a,b} = array;
endmodule发布于 2020-09-01 16:28:06
做同样事情的Verilog方法是:
module conv ( .array(io), .a(io[1]), .b(io[0]) );
inout [1:0] io;
endmodule这是IEEE 1364-2001及更高版本的投诉。(可能也是IEEE 1364-1995的问题,但LRM不是很清楚)。如果你需要一些绝对需要符合Verilog-95的东西,那么你可以使用bellow。我不认为下面的代码支持在模块实例化时通过名称连接。
module conv ( io, io[1], io[0] );
inout [1:0] io;
endmodule还有一个原语tran。我还没有使用过支持它的合成器,即使它是在IEEE1364-1995中。
module conv ( inout [1:0] array, inout a, b );
tran t1(array[1],a);
tran t0(array[0],b);
endmodule如果您的工具支持SystemVerilog alias,那么这将是首选方法。我很少看到上面使用的样式,尽管LRM支持已经有几十年了。
如果您的合成器不喜欢alias或以上任何一种,请检查标准单元库。它可能有一个等效的特殊单元格。
https://stackoverflow.com/questions/63627095
复制相似问题