在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2607|回复: 8

[求助] verilog中的参数文件

[复制链接]
发表于 2013-2-28 22:53:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
如何将工程中各个模块所需的常量参数定义在一个单独的参数文件里?
发表于 2013-3-1 09:09:09 | 显示全部楼层
本帖最后由 rvnistelrooy 于 2013-3-1 09:11 编辑

回复 1# zerorenee


在单独文件中用“`define”定义常量,在需要用到该常量的文件中“`include”这个常量定义文件。

eg.
file1: defines.v
  



  1. `define WIDTH 8


复制代码


file2: use_define.v
  



  1. `include defines.v
  2. ...
  3. input [`WIDTH:0] data_i;
  4. ...


复制代码
发表于 2013-3-1 22:04:30 | 显示全部楼层
本帖最后由 orlye 于 2013-3-1 22:06 编辑

跟楼上意见差不多,不过建议用parameter,不要用define。

parameter.v




  1. parameter IDLE=4'h0;
  2. ....


复制代码


module.v




  1. module example (.....);
  2. `include "parameter.v"....


复制代码


原因是define定义的是全局变量,对整个工程有效的,这不利于代码今后的维护。
比如你做的模块A,人家做的模块B,都define了IDLE,那以后如果有个工程调用了这两个模块,弄得不好就有模块A调用了模块B的IDLE参数的可能。
 楼主| 发表于 2013-3-2 10:58:23 | 显示全部楼层
回复 3# orlye


   嗯,这两种方法我都知道。   我之前把`define 和 parameter都试过了,不过compile报错,不知道怎么回事。。

   写parameter.v的时候需要写“module parameter();”么?还是直接就"parameter xx=uu;"?
发表于 2013-3-2 13:25:48 | 显示全部楼层
报错肯定是你语法不对啦。
写parameter.v时什么都不要,直接就“parameter xx=uu;”。
你记住`include就是把被包含的文件贴到当前位置。你联系上下文想想贴过来了语法对不对就行了。
 楼主| 发表于 2013-3-11 19:26:10 | 显示全部楼层
回复 5# orlye


   还是不行诶,我写一个parameters.v的文件 然后在module A中include它, A的编译是通过的,但是parameter编译不通过,报错“Global declarations are illegal in Verilog 2001 syntax.”
发表于 2013-3-11 22:11:55 | 显示全部楼层
编译时只要编译A.v就行了,parameters.v会自动加载。
不要把A.v和parameters.v一起编译。
 楼主| 发表于 2013-3-11 23:18:21 | 显示全部楼层
回复 7# orlye

嗯嗯 我发现了 虽然Parameter.v 报错 但是A没有报错。没有问题

谢谢啦~~
发表于 2013-3-13 10:15:45 | 显示全部楼层
原来parameter还能这样写啊,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-26 09:22 , Processed in 0.022165 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表