我正在寻找对总线进行逻辑或运算。
工作代码:
parameter Width = 8;
wire my_bus [Width-1:0];
wire bus_or = (my_bus[0] || my_bus[1] || ... || my_bus[Width-1])
这工作正常,但完全不适合大型总线(即 64 位)
我见过:(从这里)
wire bus_or = |my_bus;
然而,这只是抱怨错误:一元运算符'|'的非法操作数 和连续分配的非法右手边。
有趣的是语法:
wire bus_or = |{my_bus[0], my_bus[1], ..., my_bus[Width-1]}
工作正常,尽管连接创建了一个总线,原始的未拆分对象是一个总线开始......
我们正在使用生成块来创建各种信号、线路、寄存器等,目的是实现可扩展的参数化代码。如果总线 OR 的语法如此容易出错,这似乎是一种耻辱。
我想要的是像wire bus_or = |my_bus; 这样简单的东西。
对不起。很简单的回答!!!
wire bus_or = |my_bus;
当总线被声明为向量但不是数组时,该符号工作正常:请参见此处。