首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >verilog中的片隐总线

verilog中的片隐总线
EN

Stack Overflow用户
提问于 2014-07-08 08:42:43
回答 1查看 501关注 0票数 2

我正在使用Xilinx ISim (ISE)。

我有以下分配声明:

代码语言:javascript
复制
assign dwToAlign = {first_aligned >> 3}[7:0]  - {i_address >> 3}[7:0];

当我尝试做一个行为模拟时,它会抛出一个内部编译器错误。如果我评论这个特定的行,它就会正确编译。我确信昨天编译的完全相同的代码(我把它背到我的git上了)。

如果我合成,然后做一个后pnr仿真,代码合成和正确地模拟。

这是有效的verilog?

编辑: EDAPlayground http://www.edaplayground.com/x/3wW上的代码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-08 09:25:49

不,这是无效的。您的示例使用{}连接操作符,我认为您应该使用括号()

如果您需要使用部件选择,那么首先声明移位。这都是组合逻辑,并将产生相同的硬件。

代码语言:javascript
复制
assign temp1     = (first_aligned >> 3);
assign temp2     = (i_address >> 3);
assign dwToAlign = temp1[7:0]  - temp2[7:0];

值得注意的是,如果使用了部件选择,即使指定了全部范围,signed算法也将被忽略。

如果在访问温度17:0时,temp1和temp2被声明为wire signed [7:0] temp1,则忽略签名的属性。如果需要,可以使用$signed( temp1[7:0] )强制执行。如果您需要保留符号信息,可以使用有符号移位(>>>)作为有符号的数据类型。

“任择议定书”还在评论中指出,对于他们的情况,他们也可以使用:

代码语言:javascript
复制
assign dwToAlign = first_aligned[10:3] - i_address[10:3];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24627365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档