亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> VHDL

掌握VHDL Signed与Unsigned类型实战指南

在VHDL中,signed和unsigned是专用位向量,让你能在数据总线上执行算术运算。与适合路由信号但不适合计算的std_logic_vector不同,编译器将这些类型解释为数值。

尝试添加std_logic_vector触发编译错误:No feasible entries for infix operator "+",因工具无法确定如何将原始位模式视为数字。

基础VHDL教程系列之一。

为启用算术,将向量声明为signed或unsigned:

signal <name> : signed(<N-1> downto 0) := <initial_value>; signal <name> : unsigned(<N-1> downto 0) := <initial_value>;

范围可用to或downto,但downto 0最常用。初始值可选;省略则所有位默认'U'。

为何偏好signed/unsigned而非传统integer?数字设计师常需精确控制位宽。这些向量类型溢出回绕,而integer超限制会引发运行时错误。此外向量可含'U'和'X'等元值,有助尽早暴露设计bug。

视频演示

配套视频探讨signed和unsigned信号的相似与差异。

示例代码

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T12_SignedUnsignedTb is end entity; architecture sim of T12_SignedUnsignedTb is signal UnsCnt : unsigned(7 downto 0) := (others => '0'); signal SigCnt : signed(7 downto 0) := (others => '0'); signal Uns4 : unsigned(3 downto 0) := "1000"; signal Sig4 : signed(3 downto 0) := "1000"; signal Uns8 : unsigned(7 downto 0) := (others => '0'); signal Sig8 : signed(7 downto 0) := (others => '0'); begin process is begin wait for 10 ns; -- Wrapping counter UnsCnt <= UnsCnt + 1; SigCnt <= SigCnt + 1; -- Adding signals Uns8 <= Uns8 + Uns4; Sig8 <= Sig8 + Sig4; end process; end architecture; 

波形分析

ModelSim波形聚焦关键事件,为清晰以十六进制显示所有值:

掌握VHDL Signed与Unsigned类型实战指南

计数器示例中,UnsCnt和SigCnt均从0开始,增至FF(十进制255),回绕到0——演示相同回绕行为。

4位信号Uns4和Sig4均持二进制1000,无符号为十进制8,有符号为-8(二补数)。

将这些4位数加到8位累加器时,符号扩展起作用。无符号数补零,有符号数补符号位。结果Uns8增8,Sig8减8。

可视化符号扩展过程阐明差异:

掌握VHDL Signed与Unsigned类型实战指南

掌握VHDL Signed与Unsigned类型实战指南

关键要点

  • signed和unsigned均为支持算术运算的向量类型。
  • 溢出静默;值按位宽回绕。
  • 加不同长度操作数时符号扩展可能产生不同结果。

进入下一教程深入了解。

VHDL

  1. PIC18 单片机全解析:特性、性能、编程与应用指南
  2. 参考标识符详解:如何规范标注PCB组装连接
  3. 掌握VHDL有符号与无符号类型:实战洞察
  4. 利用进程内过程简化VHDL状态机设计
  5. 使用VHDL不纯函数提升FSM可读性与可维护性
  6. 掌握VHDL函数:高效设计实战指南
  7. 在VHDL中使用过程:用可复用代码简化设计
  8. 利用VHDL常量与泛型映射实现灵活模块设计
  9. 掌握VHDL端口映射实例化实战指南
  10. 掌握VHDL Case-When语句:高效多路选择器设计
  11. 掌握 VHDL 条件逻辑:If-Then-Elsif-Else 详解
  12. 免费 VHDL 仿真器与编辑器安装指南:学生版