0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog数值转换知识总结

冬至子 来源:数字IC与好好生活的两居室 作者:除夕之夜啊 2023-06-01 11:32 次阅读

本节主要对有符号数的十进制与二进制表示以及一些数值变换进行简单的总结。

定义一个宽度为 DW 的二进制补码格式的数据 dbin ,其表示的有符号十进制数字为 ddec 。

reg [DW-1:0]     dbin ;
  1. 十进制有符号数转二进制补码

正数的补码为原码。

假如十进制数 ddec 为负数,则计算其对应的二进制补码的方法主要有 2 种:

◆将ddec 最高位符号位改写为 1,剩余数值部分取反加一

例如,4bit 数字 -6 的数值部分为 4'b0110,取反加一后为 4'b0010,高位改写后为 4 'b1010。

dbin = {1'b1, ~3'b110 + 1'b1} ;    //4'b1010

◆将负数 ddec 直接与其代表的最大数值范围数相加(有人称之为模数)

例如,4bit 数字 -6 与 16(2 的 4 次幂)的和为 10, 即对应 4'b1010。

dbin = ddec + (1< < 4) ;        //4'b1010
  1. 二级制补码转十进制有符号数

当 dbin 最高位为 0 时,其数值大小即为其表示的十进制正数。

当 dbin 最高位为 1 时,计算其表示的十进制有符号数方法主要有 2 种:

◆将 dbin 取反加一,并增加符号位

例如,4bit 数字 -6 的补码为 4'b1010,取反加一后为 4'b0110,增加符号位后为 -6。

ddec = -(~4'b1010 + 1'b1) ;  //-6

◆将 dbin 代表的无符号数值与其代表的最大数值范围数直接相减

例如,4bit 数字 -6 的补码为 4'b1010,即无符号数值为 10,10 减 16 便可得到 -6 。

ddec = dbin - (1< < 4) ;  //-6
  1. 绝对值

求 dbin 的绝对值逻辑如下:

dbin_abs = (dbin[DW-1]? ~dbin : dbin) + 1'b1 ;

例如,4bit 数字 -6 的补码为 4'b1010,取反加 1 后的值为 4'b0110(6),即为 -6 的绝对值。

但如果 dbin 为正数,加 1 后的值比其真正的绝对值要大 1,此步操作只是为了让正数部分的绝对值数量与负数部分一致。因为一定位宽下,由于 0 值的存在,有符号数表示的负数数量会比正数多 1 个。

  1. 有符号数转无符号数

将有符号数扩展成为无符号数的逻辑如下:

dbin_unsigned = {!dbin[DW-1], dbin[DW-2:0]) ;

例如 4'b1010 (-6) -> 4'b0010 (2),4'b0010 (2) -> 4'b1010 (10) 。

其实转换原则是将数据代表的数值范围移动到 0 以上,有符号数转换成无符号数之后,数据相对间的差并没有改变。

  1. 扩展符号位

计算时有时会根据需要对有符号数位宽进行扩展。假设位宽增量为 W,扩展逻辑如下:

dbin_extend = {{(W){dbin[DW-1]}}, dbin} ;

扩展原则就是将信号代表符号位的最高位,填充至扩展的高位数据位中。

例如 4'b1010 (-6) 扩展到 8bit 为 8'b11111010,计算其对应的负数仍然是 -6。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    778

    浏览量

    41557
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109918
收藏 人收藏

    评论

    相关推荐

    Verilog HDL练习题和Verilog基础知识适合verilog新人

    Verilog HDL练习题和Verilog基础知识适合verilog新人Verilog HDL练习题.pdfVerilog基础
    发表于 08-15 15:08

    Verilog基础知识

    Verilog基础知识
    发表于 09-30 08:50

    verilog HDL语法总结

    verilog HDL语法总结
    发表于 03-16 14:26

    Verilog HDL数字系统设计教程》(第四版)学习笔记 part1 Verilog数字设计基础——第一章知识总结

    内容,有的没写在总结里,有的在总结里标注出了“存疑”二字,请各位读者阅读时留意。最后也欢迎各位读者指出文章中出现的错误!目录第一章Verilog基础知识1.1
    发表于 03-22 10:26

    路由器常用基础知识总结

    路由器常用基础知识总结路由器常用基础知识总结路由器常用基础知识总结
    发表于 10-30 18:08 0次下载

    Verilog基础知识

    Verilog基础知识,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-10 15:29 4次下载

    Verilog_HDL基础知识非常好的学习教程 (1)

    Verilog_HDL基础知识非常好的学习教程 (1)
    发表于 01-04 12:33 0次下载

    linux Android基础知识总结

    linux Android基础知识总结
    发表于 10-24 09:00 6次下载
    linux Android基础<b class='flag-5'>知识</b><b class='flag-5'>总结</b>

    DSP教程之DSP数值运算基础总结的详细资料说明

    本文档的主要内容详细介绍的是DSP教程之DSP数值运算基础总结的详细资料说明主要内容包括了:1.相关基础知识复习,2.定点基本概念,3.定点运算实现的基本原理,4.DSP定点算术运算实现的基本原理,5.浮点数的表示格式。
    发表于 03-12 18:00 9次下载
    DSP教程之DSP<b class='flag-5'>数值</b>运算基础<b class='flag-5'>总结</b>的详细资料说明

    Verilog编程语言界面入门知识简介

    即使Verilog成功,许多经验丰富的Verilog用户仍然认为其编程语言界面( PLI)作为“软件任务”。一步一步的方法可以帮助您在编写PLI函数时“打破僵局”。通过学习PLI设计的基本知识而不会被太多细节困扰,您将获得可以立
    的头像 发表于 08-13 17:31 5824次阅读

    Verilog教程之Verilog HDL数字集成电路设计方法和基础知识课件

    本文档的主要内容详细介绍的是Verilog教程之Verilog HDL数字集成电路设计方法和基础知识课件
    发表于 12-09 11:24 53次下载
    <b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b> HDL数字集成电路设计方法和基础<b class='flag-5'>知识</b>课件

    Verilog的基础知识

    本节主要讲解了 Verilog 的基础知识,包括 7 个小节,下面我们分别给大家介绍这 7 个小节的内容。
    的头像 发表于 08-15 09:04 2354次阅读

    固态相变知识总结

    固态相变知识总结
    的头像 发表于 07-14 10:32 1688次阅读
    固态相变<b class='flag-5'>知识</b><b class='flag-5'>总结</b>

    Verilog到VHDL转换的经验与技巧总结

    Verilog与VHDL语法是互通且相互对应的,如何查看二者对同一硬件结构的描述,可以借助EDA工具,如Vivado,打开Vivado后它里面的语言模板后,也可以对比查看Verilog和VHDL之间的差异。
    的头像 发表于 04-28 17:47 2079次阅读
    <b class='flag-5'>Verilog</b>到VHDL<b class='flag-5'>转换</b>的经验与技巧<b class='flag-5'>总结</b>

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识
    的头像 发表于 10-24 15:00 129次阅读
    <b class='flag-5'>Verilog</b> HDL的基础<b class='flag-5'>知识</b>