verilog $clog2 取位宽函数

这篇具有很好参考价值的文章主要介绍了verilog $clog2 取位宽函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自定义函数获取位宽

//定义
function integer clogb2(input integer size);
    begin
      size = size - 1;
      for(clogb2=1; size>1; clogb2=clogb2+1)begin
        size = size >> 1;
      end
    end
endfunction

//使用
localparam PIX_WIDTH = clogb2(PIX);//PIX位宽

问题在于:
1、每次使用到计算PIX位宽时都需要定义该函数,工作量重复、效率较低。
2、因为函数定义在模块内部,无法对输入输出信号使用该函数。

$clog2()——verilog-2005标准新增的一个系统函数

其功能就是对输入整数实现以2为底取对数,其结果向上取整。在Vivado 2017以后的版本中,可以直接使用系统函数$clog2()。且可以直接在输入输出端口使用:

output   [$clog2(pix)-1:0]  pix_width; //pix位宽

兼容性问题

1、VCS是否支持clog2函数:Makefile中添加+v2k或者-sverilog选项即可。
2、vivado老版本是否支持clog2函数:Xilinx官网有一个相关提问(57984),官方回答:之前的Vivado支持Verilog 2001和System Verilog,clog2函数可以作为System Verilog特性的一部分被支持。要实现该功能,可以在verilog文件中打开-sv开关。如:read_verilog -sv test.v。

Vivado2016.4实际使用clog2函数结果:

module logtest (
    output [$clog2(256)-1 :0] clog_width,
    output [$clog2(384)-1 :0] clog2_width,
    output [$clog2(512)-1 :0] clog3_width,
    output [$clog2(768)-1 :0] clog4_width,
    output [$clog2(1024)-1 :0] clog5_width,
    output [$clog2(1280)-1 :0] clog6_width
  );
 endmodule

综合结果与Vivado2018.3一样,输出信号的位宽均与预期相同。文章来源地址https://www.toymoban.com/news/detail-583081.html

到了这里,关于verilog $clog2 取位宽函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FPGA】定点数 数据位宽 运算 位宽截取

    在FPGA中,经常使用定点数表示小数,在进行各种运算时,定点数的位宽会发生变化,并且需要在适当地时候对数据的位宽进行截取。 运算要求和引起的位宽变化 假设存在两个数A、B,假定A位宽为m,小数位宽为a,B位宽为n,小数位宽为b。 无符号数加法:A+B,需要先将A和B的

    2024年02月01日
    浏览(39)
  • Verilog实现32位到8位数据位宽转换

    Verilog实现32位到8位数据位宽转换 数据位宽的转换在数字电路设计中是一项必要的任务。在FPGA中,通过Verilog语言实现数据位宽转换可以有效地减小硬件资源的占用,提高系统效率。本篇文章将介绍如何使用Verilog语言实现32位到8位的数据位宽转换。 首先,我们需要定义输入和

    2024年02月10日
    浏览(33)
  • (45)Verilog实现数据位宽转换【8位-32位】

    1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog实现数据位宽转换【8位-32位】 5)结语 FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有

    2024年02月08日
    浏览(32)
  • hdlbits系列verilog解答(8位宽移位寄存器)-24

    这项练习是module_shift移位寄存器的延伸。模块端口不是只有单个引脚,我们现在有以向量作为端口的模块,您将在其上附加线向量而不是普通线网数据。与 Verilog 中的其他位置一样,端口的向量长度不必与连接到它的导线匹配,但这会导致向量的零填充或截断。本练习不使用

    2024年02月08日
    浏览(22)
  • Verilog功能模块——读写位宽不同的异步FIFO

    FIFO系列文章目录: Verilog功能模块——异步FIFO-CSDN博客 Verilog功能模块——同步FIFO-CSDN博客 Verilog功能模块——读写位宽不同的异步FIFO-CSDN博客 Verilog功能模块——读写位宽不同的同步FIFO-CSDN博客 Verilog功能模块——标准FIFO转FWFT FIFO-CSDN博客 前面的博文已经讲了异步FIFO和同步

    2024年02月01日
    浏览(30)
  • Verilog中两种位宽声明方式在赋值和例化时的思考

    近来在学习VHDL时发现其有TO和DOWNTO两种声明位宽的方式,不同方式在赋值操作时存在差异,容易混淆。想来Verilog也存在这种问题,故在此进行一个简单的讨论。 众所周知,在Verilog中声明数据位宽有两种方式: 第一种为DOWNTO方式,这种方式是我们通常使用的声明位宽的方法,

    2024年02月13日
    浏览(28)
  • 基于FPGA的任意位宽乘法器VHDL代码Quartus仿真

    名称:基于FPGA的任意位宽乘法器VHDL代码Quartus仿真(文末获取) 软件:Quartus 语言:VHDL 代码功能: 任意位宽乘法器 设计一个任意位宽乘法器,通过可调参数N,可以配置为任意位宽,N可以自由修改 可调参数N定义如下: N : INTEGER := 16--N位乘法器,N可以自由修改,默认为16位

    2024年02月21日
    浏览(32)
  • FPGA Verilog Cordic算法实现三角函数计算,可计算sin cos arctan,精度达到,10e-5,有完整资料说明

    FPGA Verilog Cordic算法实现三角函数计算,可计算sin cos arctan,精度达到,10e-5,有完整资料说明。 另有串口收发,可上板后在串口助手检测 图文无关,在altera板子上有完整工程。 FPGA Verilog Cordic算法实现三角函数计算 FPGA在近年来得到越来越广泛的应用,针对三角函数计算的需

    2024年02月01日
    浏览(32)
  • 【PostgreSQL的CLOG解析】

    同样还是这张图,之前发过shared_buffer和os cache、wal buffer和work mem的文章,今天的主题是图中的clog,即 commit log,PostgreSQL10之前放在数据库目录的pg_clog下面。PostgreSQL10之后修更名为xact,数据目录变更为pg_xact下面,表现形式是一些物理文件。 PostgreSQL为什么要使用clog呢,众所周知

    2024年02月12日
    浏览(19)
  • FPGA模块使用Verilog调用另一个Verilog模块

    FPGA模块使用Verilog调用另一个Verilog模块 在FPGA设计中,常常需要将一个大的模块分解成多个子模块来实现。而这些子模块通常由Verilog代码编写而成。在设计中,我们需要通过调用这些子模块来实现整体的功能。本文将介绍如何使用Verilog调用另一个Verilog模块。 为了说明这个过

    2024年02月07日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包