我是靠谱客的博主 痴情雪糕,这篇文章主要介绍verilog 计算log2的值,现在分享给大家,希望可以做个参考。

在进行涉及到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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(99)

评论列表共有 0 条评论

立即
投稿
返回
顶部