verilog中的参数文件
时间:10-02
整理:3721RD
点击:
如何将工程中各个模块所需的常量参数定义在一个单独的参数文件里?
file2: use_define.v
module.v
原因是define定义的是全局变量,对整个工程有效的,这不利于代码今后的维护。
比如你做的模块A,人家做的模块B,都define了IDLE,那以后如果有个工程调用了这两个模块,弄得不好就有模块A调用了模块B的IDLE参数的可能。
在单独文件中用“`define”定义常量,在需要用到该常量的文件中“`include”这个常量定义文件。
eg.
file1: defines.v
- `define WIDTH 8
file2: use_define.v
- `include defines.v
- ...
- input [`WIDTH:0] data_i;
- ...
跟楼上意见差不多,不过建议用parameter,不要用define。
parameter.v
- parameter IDLE=4'h0;
- ....
module.v
- module example (.....);
- `include "parameter.v"....
原因是define定义的是全局变量,对整个工程有效的,这不利于代码今后的维护。
比如你做的模块A,人家做的模块B,都define了IDLE,那以后如果有个工程调用了这两个模块,弄得不好就有模块A调用了模块B的IDLE参数的可能。
嗯,这两种方法我都知道。 我之前把`define 和 parameter都试过了,不过compile报错,不知道怎么回事。
写parameter.v的时候需要写“module parameter();”么?还是直接就"parameter xx=uu;"?
报错肯定是你语法不对啦。
写parameter.v时什么都不要,直接就“parameter xx=uu;”。
你记住`include就是把被包含的文件贴到当前位置。你联系上下文想想贴过来了语法对不对就行了。
还是不行诶,我写一个parameters.v的文件 然后在module A中include它, A的编译是通过的,但是parameter编译不通过,报错“Global declarations are illegal in Verilog 2001 syntax.”
编译时只要编译A.v就行了,parameters.v会自动加载。
不要把A.v和parameters.v一起编译。
嗯嗯 我发现了 虽然Parameter.v 报错 但是A没有报错。没有问题
谢谢啦
原来parameter还能这样写啊,学习了
