我正在尋找一個總線邏輯或。Verilog:大總線或合成
工作代碼:
parameter Width = 8;
wire my_bus [Width-1:0];
wire bus_or = (my_bus[0] || my_bus[1] || ... || my_bus[Width-1])
這工作正常,但完全不適合大總線(即64位)
我所看到的:(從here)
wire bus_or = |my_bus;
然而這只是抱怨錯誤:一元運算符'|'的非法操作數和非法右側的連續分配。
有趣的語法:
wire bus_or = |{my_bus[0], my_bus[1], ..., my_bus[Width-1]}
做工精細,雖然串聯創建一個總線,與原來未拆分的對象是下手......
我們正在使用生成塊總線以可擴展的參數化代碼爲目標創建各種信號,線路,寄存器等。如果總線OR的語法如此容易出錯,這似乎是一種恥辱。
我喜歡的是像bus那樣簡單的東西bus_or = | my_bus;
對不起。 非常簡單的答案!當總線被聲明爲矢量BUT NOT
的wire bus_or = |my_bus;
符號正常工作時,其陣列:見here。