微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 位宽一定要对齐,要不害死人

位宽一定要对齐,要不害死人

时间:10-02 整理:3721RD 点击:
以前一直觉得VHDL规则这么多,一点都没verilog灵活好用,昨天调试pcie接口时遇到的一个问题让我真真切切的感觉到了规则的威力
synplify下综合下面两种表述的结果是不一样的
表述1:
if((waddr-raddr) <= 1)
     alempty = 1'b1;
else
     alempty = 1'b0;
表述2:
if((waddr-raddr) <= 6'd1)
     alempty = 1'b1;
else
     alempty = 1'b0;
其中waddr和raddr均为6bit
表述1中如果waddr<raddr 例如6'h00 - 6'h3f , alempty为1的条件是不成立的
做fpga的兄弟们,任何时候位宽都要对齐啊
这种如果在vhdl中是会报错的

在verilog里面不会报错

以前我写VHDL,也是FIFO地址处理时,通常会加两种判断,
if (addr_a > addr_b + num) or (addr_a < addr_b && addr_a + fifo_deep > addr_b + num)
大致如此,语法现在都印象模糊了。

判断要用加法呀,怎么用减法呢
又不是有符号数

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top