我绝不是 Verilog 专家,我想知道是否有人知道这些增加值的方法中哪一种更好。抱歉,如果这个问题太简单了。
Way A:
在组合逻辑块中,可能在状态机中:
//some condition
count_next = count + 1;
然后在一个连续块中的某个地方:
count <= count_next;
或者方式B:
组合块:
//some condition
count_en = 1;
顺序块:
if (count_en == 1)
count <= count + 1;
我见过A路的次数比较多。方式 B 的一个潜在好处是,如果您在状态机的许多位置递增相同的变量,也许它只会使用一个加法器而不是多个;或者这是假的?
哪种方法是首选,为什么?两者都有明显的缺点吗?
谢谢。
方式 B 的一个潜在好处是,如果您在状态机的许多位置递增相同的变量,也许它只会使用一个加法器而不是多个;或者这是假的?
任何综合工具都会尝试自动资源共享。他们做得如何取决于所编写的工具和代码。这是一个描述一些功能的文档设计编译器 http://acms.ucsd.edu/info/documents/dc/dcrmo.pdf。请注意,在某些情况下,面积越小意味着时机越差。
哪种方法是首选,为什么?两者都有明显的缺点吗?
这取决于。 Verilog(用于综合)是实现某些逻辑电路的一种方法,但规范没有具体说明这是如何完成的。方式 A 可能与 FPGA 上的方式 B 相同,但由于无条件顺序分配,方式 A 与 ASIC 上的低功耗设计不一致。使用复位网络几乎是 ASIC 的一项要求,但由于许多 FPGA 都是在已知状态下启动的,因此如果不使用复位网络,您可以节省大量资源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)