verilog parameter 用法请教

[复制链接]
17841|34
 楼主| yuxhuitx 发表于 2011-10-21 14:45 | 显示全部楼层 |阅读模式
各位,有没有用过用parameter定义的常数做赋值语句的位宽限制,比如parameter SIZE = 10;

reg [SIZE-1:0] cnt;

cnt <= SIZE'b00_0000_0000;//这边直接SIZE这样用有问题,曾经在xilinx的某个IP生成的文件中看到这种用法(具体是paramerter还是·define忘了),但具体写法忘了,哪位兄弟知道的
eaivip 发表于 2011-10-21 14:49 | 显示全部楼层
试验之:)
GoldSunMonkey 发表于 2011-10-21 14:51 | 显示全部楼层
语法
parameter Name = ConstantExpression
 楼主| yuxhuitx 发表于 2011-10-21 14:54 | 显示全部楼层
cnt <= ?SIZE'b00_0000_0000;这句中的SIZE好像要加一个什么符号  ??
GoldSunMonkey 发表于 2011-10-21 15:04 | 显示全部楼层
在Verilog-1995中,在不指定基数的情况下为大于32位的变量赋高阻值,
只能使其低32位为高阻值,其他高位会被设置为0,此时需要指定基数值才能将高位赋值为高阻。
Verilog-1995:
parameter WIDTH = 64;
reg [WIDTH-1:0] data;
data = 'bz; //fills with 'h00000000zzzzzzzz
data = 64'bz; //fills with 'hzzzzzzzzzzzzzzzz
而在Verilog-2001中并没有这一限制。
Verilog-2001:
parameter WIDTH = 64;
reg [WIDTH-1:0] data;
data = 'bz; //fills with 'hzzzzzzzzzzzzzzzz
 楼主| yuxhuitx 发表于 2011-10-21 15:22 | 显示全部楼层
收到,谢谢
GoldSunMonkey 发表于 2011-10-21 15:30 | 显示全部楼层
;P  给我加分:)
jakfens 发表于 2011-10-21 15:33 | 显示全部楼层
AutoESL 发表于 2011-10-21 15:35 | 显示全部楼层
cnt
yuxhuitx 发表于 2011-10-21 14:54

可以这样写:   cnt <= {SIZE{1'b0}};
GoldSunMonkey 发表于 2011-10-21 15:37 | 显示全部楼层
不给
jakfens 发表于 2011-10-21 15:33

以后你的问题我不回答
AutoESL 发表于 2011-10-21 15:39 | 显示全部楼层
AutoESL 发表于 2011-10-21 15:40 | 显示全部楼层
斑竹威胁人啊;P
AutoESL 发表于 2011-10-21 15:41 | 显示全部楼层
好象我的回答才是lz想要的答案啊:D
 楼主| yuxhuitx 发表于 2011-10-21 16:06 | 显示全部楼层
GoldSunMonkey 发表于 2011-10-21 16:20 | 显示全部楼层
好象我的回答才是lz想要的答案啊:D
AutoESL 发表于 2011-10-21 15:41

你的不是,他是问前面应该加什么。但是Verilog2001已经没有这个限制了。
AutoESL 发表于 2011-10-21 16:37 | 显示全部楼层
GoldSunMonkey 发表于 2011-10-21 16:39 | 显示全部楼层
你觉得你押中楼了么??
 楼主| yuxhuitx 发表于 2011-10-21 22:03 | 显示全部楼层
兄弟,还是不行啊
parameter CHANNEL = 396;
reg [CHANNEL-1:0] pwm_cs;
54:pwm_cs <= {(CHANNEL-1){1'b0},1'b1;
65:pwm_cs <= {CHANNEL){1'b0}};
ERROR:HDLCompiler:806 - "E:/FPGA/PWM/PWM_SETxn.v" Line 54: Syntax error near ",".
ERROR:HDLCompiler:806 - "E:/FPGA/PWM/PWM_SETxn.v" Line 65: Syntax error near ")".
ERROR:ProjectMgmt:497 - 2 error(s) found while parsing design hierarchy.
ERROR:HDLCompiler:806 - "E:/FPGA/PWM/PWM_SETxn.v" Line 54: Syntax error near ",".
ERROR:HDLCompiler:806 - "E:/FPGA/PWM/PWM_SETxn.v" Line 65: Syntax error near ")".
ERROR:ProjectMgmt:497 - 2 error(s) found while parsing design hierarchy.
GoldSunMonkey 发表于 2011-10-21 22:05 | 显示全部楼层
用我的方法。他的方法,是他猜的
 楼主| yuxhuitx 发表于 2011-10-21 22:06 | 显示全部楼层
不好意思,64行是笔误,多了一个")";
拼接运算里是否不能存在“()”
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

108

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部