微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > Vivado中阶乘(**)的问题

Vivado中阶乘(**)的问题

时间:10-02 整理:3721RD 点击:
表达式如下:
localparam     BURST_LENGTH = 10;
reg[15:0]         length_cnt_down;

always@(posedge sys_clk)begin
        if(init_len_en)begin
             length_cnt_down <= 2**BURST_LENGTH;
        end else begin
             if(length_cnt_down > 16'b0)begin
                    length_cnt_down <= length_cnt_down - 1'b1;
             end
       end
end

以此为例,在modelsim和ISE14.7下,每当init_len_en拉高时,length_cnt_down的值为16'h0400;而在vivado2014.4和vivado2016.2下,值变了,变成了16'h03FF,而最终length_cnt_down的值会停留在16'hFFFF;请问下有人遇到过这种问题吗?难道是阶乘符号(**)在不同的编译器下的结论不一致,在ISE下是移位操作,而在vivado下却变成了拼接操作吗?希望各路大神予以指导;另外,设置BURST_LENGTH主要是为了扩展位宽时用的,所以没有直接定义为所需要的值;

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

网站地图

Top