我是靠谱客的博主 痴情雪糕,最近开发中收集的这篇文章主要介绍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 计算log2的值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部