如果在Verilog中只有一个高电流,则导线高

Dax*_*ohl 4 verilog

如果我有一个9线的阵列,是否有一种简单的方法可以制作一个高的新线,如果9个中的一个很高?我知道我能做到

wire[8:0] data;
wire exactlyOneActive;
assign exactlyOneActive = (data[0] & !data[1] & !data[2] ...) | 
                          (!data[0] & data[1] & !data[2] ...) |
                          (!data[0] & !data[1] & data[2] ...) |
                          ...etc
Run Code Online (Sandbox Code Playgroud)

但是,对,对吧?特别是因为九根导线在某些时候可能是25根.有没有更好的方法,也许使用generate?它也必须是可合成的.

Cli*_*ngs 6

assign zeroOrOnehot     = ~|(data & (data-1));
assign atLeastOneBitSet = |data;
assign exactlyOneActive = zeroOrOnehot & atLeastOneBitSet;  
Run Code Online (Sandbox Code Playgroud)

问候 - Cliff Cummings - Verilog&SystemVerilog Guru