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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5008|回复: 11

[求助] define用法

[复制链接]
发表于 2012-3-15 10:50:41 | 显示全部楼层 |阅读模式

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

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

x
我现在想在子模块用define定义个位宽,使之可以在调用的时候调节,比如输入为a时定义位宽为10,输入为b时定义位宽为20,不知道该如何定义,希望能有简单的代码说明,谢谢
 楼主| 发表于 2012-3-15 10:55:56 | 显示全部楼层
希望能用简单的代码说明下,有点迷茫
 楼主| 发表于 2012-3-15 10:57:52 | 显示全部楼层
比如在子模块中'define  a=8;
                      reg [(a-1):0]b;
那么在调用这个模块的时候  我该怎么写才能让位宽改变
发表于 2012-3-15 16:54:05 | 显示全部楼层
‘define WIDTH_A  10
‘define WIDTH_B  20

assign wid_sig=(din==a)? ‘WIDTH_A :‘WIDTH_B;
reg 【wid_sig-1 :0】 sig;

试试这样行不行

一个模块摸个信号的位宽必须是固定的,你定义为register,则位宽是几综合出来时几个寄存器,若位宽变掉,难道硬件也跟着变?个人见解,仅供参考
发表于 2012-3-15 19:40:13 | 显示全部楼层
你应该用parameter,不是define,你是要实现模块可以参数化吧
发表于 2012-3-15 22:06:39 | 显示全部楼层
`define WIDTH 10

reg [`WIDTH-1:0] bus_a;
发表于 2012-3-15 22:46:09 | 显示全部楼层
parameter
localparam
发表于 2012-3-17 07:52:48 | 显示全部楼层
localparam参数传递不进去
发表于 2012-3-17 19:07:25 | 显示全部楼层
用parameter,比如 YOUR_MODULE 定义了parameter1,parmaeter2

传递的方法:

UP_MODULE #( transfer_parameter1, transfer_parameter2) INST_YOUR_MODULE ( port_map);
发表于 2012-3-17 20:41:58 | 显示全部楼层
回复 4# shxr


    貌似你这样写不可综合,寄存器的位宽必须固定,我以前也是在寄存器中使用可变位宽,结果不可综合。

不过这是1年多之前的事情了,不知道现在的综合工具能不能综合这样的代码了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 09:15 , Processed in 0.021980 second(s), 7 queries , Gzip On, Redis On.

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