【发布时间】:2017-12-06 02:16:52
【问题描述】:
我对 Verilog 比较陌生,我一直在从事一个项目,在理想情况下,我希望有一个如下的赋值语句:
assign isinbufferzone = a > (packetlength-16384) ? 1:0;
包含这种类型行的文件将被编译,但isinbufferzone 不会在它应该变高的时候变高。我假设它对条件中的减法不满意。我可以通过移动东西来使模块工作,但结果比我认为的要复杂得多,并且延迟确实开始增加。有人对最简洁的方法有什么想法吗?预先感谢您的帮助。
【问题讨论】:
-
x ? 1 : 0只是x。 -
isinbufferzone、a和packetlength是如何声明的? -
您好,感谢您的回复。 Isinbufferzone 是一条线,a 和 packetlength 是 17 位宽 regs
-
我在iverilog.com 在线模拟器中试过这个,它可以工作。条件语句中的算术工作得很好。也许在这个语句之前做减法,看看它是否能在没有太多延迟的情况下工作?
-
@Qazi 当然,减法有效,但如果
packetlength小于 16384,它就会溢出。
标签: conditional verilog