如何在verilog中使用const
使用而不是
module ... ( .. ) ;
#15
endmodule
我想要
module ... ( ... ) ;
// GateDelay is a const, like in c language const int GateDelay = 15 ;
# GateDelay
endmodule
使用或者同样的事情
module ... ( ... ) ;
// assume Wordsize is defined at " define Wordsize 15 "
reg [ Wordsize -1 : 0 ] mem ;
endmodule
我可以在verilog中实现这个愿望吗?
Instead of using
module ... ( .. ) ;
#15
endmodule
I want use
module ... ( ... ) ;
// GateDelay is a const, like in c language const int GateDelay = 15 ;
# GateDelay
endmodule
Or same thing
module ... ( ... ) ;
// assume Wordsize is defined at " define Wordsize 15 "
reg [ Wordsize -1 : 0 ] mem ;
endmodule
Can I do that wish in verilog ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您有几个选择:
`define
sparameter
slocalparam
s的宏这是一个包含所有这些选项的小示例。
You've a few options :
`define
sparameter
slocalparam
sHere's a small example with them all.
对于您列出的情况,我会推荐参数。
与 C 编译器指令一样,`define 对于编译来说是全局的。如果您的代码将与您无法控制的代码一起使用,则在此需要小心。
参数始终是模块范围的本地参数,因此不同设计元素中的相同名称的参数不会相互冲突。它们还具有可以在每个实例的基础上被覆盖的优点。
For the cases you listed, I would recommend parameters.
Like the C compiler directive, `define is global for the compilation. If your code is ever going to be used with code you don't control you will need to be careful here.
Parameters are always local to the module scope so identically named parameters in different design elements will not conflict with each other. They also have the advantage that they can be overridden on a per-instance basis.