我们可以在 always 块中使用三元运算符吗? MOD(%) 运算符是否可综合?

Can we use ternary operator inside an always block? Is MOD(%) operator synthesizable?

我正在尝试在 always 块中使用三元运算符,它是可综合的吗? MOD (%) 运算符是否可以在 verilog 中综合?因为当我模拟代码时,结果似乎是正确的,而当在硬件中实现时,它的行为很奇怪。我研究了一些除法运算符也不可合成的内容,除非除法器是 2 的幂。这是真的吗? 我正在使用 vivado 工具来综合我的代码。

据我所知,三元运算符是可综合的,因为它在理论上可以映射到一个简单的 2*1 多路复用器。

我不确定,但是 mod(%) 运算符不能合成。乘法、除法、模数,这些是编程术语,但对于真正的硬件,您实际上需要一个硬件,它可以进行乘法或除法或 modulo 运算。所以工具不能制造那个硬件,只是在你的代码中按 %。

可合成 verilog 结构的一个参考 - http://asic-soc.blogspot.in/2013/06/synthesizable-and-non-synthesizable.html