假设除一条输入线路外的所有输入线路都处于Hi-Z状态。我们想把这些线连接到一条线上(例如数据总线)。在SystemVerilog中如何做到这一点呢?
发布于 2015-09-27 23:20:27
如果您指的是模块输入,那么alias构造可以做到这一点:
module a(input wire a,b,c); wire bus; // use if you want a different internal name alias a = b = c = bus; endmodule
我敢肯定这不会是可合成的。
发布于 2015-09-28 23:01:30
假设只有一个输入不是Z的条件成立,那么我们可以遍历并找到最后一个非Z输入,并将其值赋给输出。不知道这个能不能合成。
module merge_bus
#(parameter BUSW = 8)
(
input [BUSW-1:0] bus_in,
output wire_out
);
always_comb begin
wire_out = 1'bz;
for(int i = 0; i<BUSW; i++) begin
if(bus_in[i] !== 1'bz) wire_out = bus_in[i];
end
end
endmodule发布于 2015-09-30 18:10:36
您可以使用verilog中的wor/wand数据类型。
https://stackoverflow.com/questions/32802537
复制相似问题