Verilog定义计算位宽的函数clogb2

Posted 小翁同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog定义计算位宽的函数clogb2相关的知识,希望对你有一定的参考价值。

在很多情况下要计算输入输出的位宽,比如你写一个8*8的ram,那么地址需要三位去表示,那么这个函数的方便就体现出来了,你需要使用函数定义就好了。

//位宽计算函数
function integer clogb2 (input integer depth);
begin
    for (clogb2=0; depth>0; clogb2=clogb2+1) 
        depth = depth >>1;                          
end
endfunction

举个栗子

parameter p_cnt_max = p_rev_time*p_clk_fre*1000_000 - 1; //翻转时间内所需计数的最大值
//位宽计算函数
function integer clogb2 (input integer depth);
begin
    for (clogb2=0; depth>0; clogb2=clogb2+1) 
        depth = depth >>1;                          
end
endfunction

wire [clogb2(p_cnt_max)-1:0] w_cnt_max;

 

以上。

以上是关于Verilog定义计算位宽的函数clogb2的主要内容,如果未能解决你的问题,请参考以下文章

verilog里的位宽是啥概念?

请问在FPGA Verilog设计中,使用关键字parameter定义常数有什么好处?

一起学习用Verilog在FPGA上实现CNN----SoftMax层设计

FPGA位宽的转换和定义

嵌入式中位宽的计算

verilog HDL中定义位宽到底是[高位:0]还是[0:高位] 为啥看到了两种写法