第四节:信号值解读——二进制、十六进制、十进制、有符号数在波形中的显示

波形图里那些跳来跳去的数字,到底在说什么?

说实话,我见过不少新手,盯着波形图看了半天,最后问我:“老师,这个值是‘1’还是‘-1’?”

嗯,这个问题问得好。信号值的显示方式,直接决定了你能不能看懂波形。今天我们就来把这四种进制彻底讲透。

4.1 二进制:最原始,也最直观

二进制是数字电路的老祖宗。每个bit只有0和1,简单粗暴。

在波形图里,二进制信号通常显示为“0101”这样的串。我个人习惯在调试控制信号时用二进制,比如状态机的状态编码、使能信号、标志位。为什么?因为一眼就能看出哪个bit变了。

举个例子:

你看到一个信号值是“1010”,二进制。你马上知道:bit3=1, bit2=0, bit1=1, bit0=0。如果换成十六进制显示成“0xA”,你还要在脑子里转个弯。

但二进制也有缺点——太长了。一个32位的数据,显示出来就是32个0和1,看着眼晕。所以,实际项目中,我们很少用二进制看大数据总线。

我的习惯:

控制信号、状态机、单bit信号 → 用二进制显示。

数据总线、地址总线 → 用十六进制或十进制显示。

4.2 十六进制:工程师的“速记法”

十六进制就是二进制的压缩版。每4个bit压缩成一个十六进制字符。0-9、A-F,一共16个符号。

比如二进制“1111 1010 1100 0011”,写成十六进制就是“0xFAC3”。是不是清爽多了?

我在项目中遇到过一件事:一个同事用二进制看AXI总线的地址,看了半天没发现问题。我让他切成十六进制,他立刻发现地址跳变不对——因为十六进制下,地址对齐问题一目了然。

注意:

十六进制显示时,波形工具通常会在前面加“0x”前缀。但有些工具不加,你要自己判断。比如显示“FF”,你得知道这是十六进制的255,不是二进制的“11111111”。

4.3 十进制:人类最舒服的阅读方式

十进制不用多解释,我们从小用到大。在波形里,十进制显示特别适合看计数器的值、数据采样结果、或者任何你关心“数值大小”的场景。

举个例子:你有一个计数器,从0数到100。用二进制看,你得盯着8个bit的变化,脑子还要算“现在是多少”。用十进制看,直接显示“0, 1, 2, 3...”,多省心。

但十进制有个坑——它默认是无符号的。如果你信号定义的是有符号数,十进制显示可能会让你误判。

避坑指南:

我曾经在调试一个音频处理模块时,用十进制看采样值。看到“65535”时,我以为数据正常。后来才发现,这个信号是有符号的16位数据,65535其实是-1!

从那以后,我养成了一个习惯:看数据之前,先确认信号是有符号还是无符号。

4.4 有符号数:最容易翻车的显示方式

有符号数在波形里显示,通常用补码形式。最高位是符号位,0表示正数,1表示负数。

比如一个8位有符号数:

  • “0000 0001” = 1
  • “1111 1111” = -1
  • “1000 0000” = -128

在波形工具里,如果你把显示模式设为“有符号十进制”,那么“1111 1111”就会显示成“-1”。如果你设为“无符号十进制”,它显示成“255”。

你看,同一个二进制值,显示结果天差地别。

重要提醒:

波形工具不会自动判断你的信号是有符号还是无符号。你需要手动设置显示模式。很多bug就是因为这个设置错了,导致看了半天也没发现问题。

4.5 四种显示方式的对比

显示方式 适用场景 优点 缺点
二进制 控制信号、状态机、单bit 最直观,每个bit独立 太长,大数据总线不适用
十六进制 地址、数据总线、寄存器值 简洁,与二进制转换方便 需要熟悉0-F的对应关系
十进制(无符号) 计数器、采样值、普通数据 人类最习惯,数值大小一目了然 不能表示负数
十进制(有符号) 音频数据、传感器数据、差值计算 能表示负数,符合数学直觉 容易与无符号混淆

4.6 实战技巧:如何快速切换显示模式

大部分波形工具(比如Verdi、DVE、Simvision)都支持右键点击信号,然后选择“Radix”或“Display Format”来切换显示模式。

我个人习惯:

  1. 先把所有信号设为十六进制,快速浏览一遍。
  2. 遇到控制信号,切成二进制,看bit变化。
  3. 遇到数据信号,根据是否有符号,切成对应的十进制。

你想想看,如果一开始就用二进制看32位数据,那不是自找麻烦吗?

一个小技巧:

在Verdi里,你可以选中多个信号,然后批量修改显示模式。不用一个一个改,省时间。

4.7 知识体系图

下面这张图总结了四种显示方式的核心逻辑和适用场景:

信号值显示方式知识体系 信号值显示方式 二进制 (Binary) 十六进制 (Hex) 十进制 (无符号) 十进制 (有符号) 控制信号 状态机 单bit信号 地址总线 数据总线 寄存器值 计数器 采样值 普通数据 音频数据 传感器数据 差值计算 ⚠️ 注意事项 • 波形工具不会自动判断有符号/无符号,需要手动设置 • 同一个二进制值,不同显示模式结果不同(如1111 1111 = 255 或 -1) 💡 个人建议 先切十六进制快速浏览 → 控制信号切二进制 → 数据信号根据有无符号切十进制

4.8 总结

信号值的显示方式,说白了就是“用什么语言看波形”。

二进制是底层语言,十六进制是工程师的速记法,十进制是人类最舒服的语言,有符号十进制则是处理负数时的必备工具。

我建议你养成一个习惯:拿到波形后,先花10秒钟确认每个信号的显示模式对不对。这个习惯,能帮你省下至少半小时的调试时间。

一句话记住:

显示模式错了,你看到的波形就是“假波形”。

可可精品资料库