概述
在进行涉及到MEM的设计中,地址位宽是根据存储的深度来确定的,深度一般设置为2^N;在参数化的设计中,给定的存储深度参数一般都是深度而不是地址位宽,因为需要先计算对于用户不友好;所以逻辑内部涉及到给定MEM的深度来计算位宽的情形,目前了解到的逻辑实现如下所示:
function integer clog2;
input
integer v;
integer value;
begin
value = v - 1;
for(clog2 = 0; value > 0; clog2 = clog2 + 1)begin
value = value >> 1;
end
end
endfunction
原理比较好理解:
1)当输入值小于等于1时,输出0,因为1的log2值为1而负数的log2不存在(实际应用中不会出现都是按照无符号数处理)
2)当输入值大于1时,每次右移一位相当于除以2,而log2就是看有多少个2相乘,该算法最终只是判断输入数据最高位权重是多少,而不关心低位,所以对于数据要求是2^n计算非常适合,当开的空间深度是8、7、6、5 的时候,该function计算得到的地址位宽都是3
最后
以上就是痴情雪糕为你收集整理的verilog 计算log2的值的全部内容,希望文章能够帮你解决verilog 计算log2的值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复