当前位置: 首页 > news >正文

4.FPGA字符格式

        在Verilog中,数值的表示方法灵活多样,主要分为常量表示变量声明两部分。以下是详细介绍:

一、常量数值表示法

Verilog的常量格式为:

[位宽]'[进制标识][数值]
1. 位宽(可选)
  • 指定数值的二进制位数,若省略则由编译器隐式决定(通常为32位)。
  • 示例:
8'd255     // 8位十进制数255(二进制:1111_1111)
16'hA15    // 16位十六进制数A15(二进制:0000_1010_0001_0101)
4'b1010    // 4位二进制数1010(十进制:10)
2. 进制标识
  • bB:二进制(Binary)
  • oO:八进制(Octal)
  • dD:十进制(Decimal,默认)
  • hH:十六进制(Hexadecimal)
  • 示例:
8'b1010_1010    // 二进制(下划线仅为可读性,无实际意义)
3'o7             // 八进制(7 → 二进制:111)
16'd65535        // 十进制(默认进制)
4'hF             // 十六进制(F → 二进制:1111)
3. 特殊符号
  • xX:表示不确定值(高阻态)
  • zZ:表示高阻态(等同于 ?
  • 示例:
4'b10xz      // 4位二进制,第3位不确定,第4位高阻
8'hFF        // 8位全1(高电平)
8'bzzzz_zzzz // 8位全高阻

二、变量声明与赋值

变量需先声明位宽,再赋值。常见数据类型包括 regwireinteger 等。

1. 固定位宽变量
  • 使用 [MSB:LSB] 语法声明位宽:
reg [7:0] data;       // 8位寄存器变量(MSB=7,LSB=0)
wire [15:0] address;  // 16位连线型变量
  • 赋值时需匹配位宽:
data = 8'd255;        // 正确:8位赋值
data = 16'd65535;     // 错误:截断为低8位(实际值为255)
2. 默认位宽变量
  • 若未显式声明位宽,默认为32位:
integer count;        // 32位有符号整数
count = 32'd100;      // 正确赋值

三、数值截断与扩展

1. 截断(Truncation)
  • 当赋值的数值超过目标位宽时,只保留低N位:
reg [3:0] low4bits;
low4bits = 8'd255;    // 255的二进制为1111_1111,截断后为1111(十进制15)
2. 符号扩展(Signed Extension)
  • 有符号数赋值到更大位宽时,高位补符号位:
reg [3:0] signed_num = 4'b1000;  // 有符号数-8(补码表示)
reg [7:0] extended;
extended = signed_num;           // 扩展为8'b1111_1000(十进制-8)
3. 零扩展(Zero Extension)
  • 无符号数赋值到更大位宽时,高位补零:
reg [3:0] unsigned_num = 4'b1000;  // 无符号数8
reg [7:0] extended;
extended = unsigned_num;           // 扩展为8'b0000_1000(十进制8)

四、常见误区

  1. 省略位宽的风险
assign data = 'd255;  // 隐式为32位,可能导致位宽不匹配
  1. 进制混淆
8'd255   // 正确:十进制255(二进制1111_1111)
8'h255   // 错误:十六进制255 → 十进制597(超过8位,截断为低8位=93)
  1. 符号位处理
reg [3:0] num = -4;   // 实际存储为4'b1100(补码表示)

五、系统任务中的数值表示

  • $display 格式化输出
$display("Dec: %d, Hex: %h, Bin: %b", num, num, num);
  • 参数化位宽
parameter WIDTH = 8;
reg [WIDTH-1:0] data;  // 动态位宽

总结

特性

示例

说明

二进制

8'b1010_1010

8位二进制数

十进制

16'd65535

16位十进制数

十六进制

4'hF

4位十六进制数

不确定值

2'b1x

第2位为不确定值

高阻态

8'bzzzz_zzzz

8位全高阻

符号扩展

$signed(4'b1000)

扩展为32位有符号数

合理使用位宽和进制表示,可避免硬件设计中的潜在错误,提高代码可靠性。

http://www.dtcms.com/a/618771.html

相关文章:

  • 网站服务器有问题怎么办啊南宁手机建站公司
  • 【Java 基础】4 面向对象 - 封装:面向对象三大特征之一
  • vps建设网站需要条件瀑布流资源网站模板
  • 还有做网站的必要吗识图 WordPress
  • 俄语 俄文 俄罗斯语外贸网站建设礼品定制
  • 郑州好的建网站公司wordpress 采集器
  • 轻松设置-系统优化万能工具
  • query加强之深度解析ReDI:通过分解与解释增强query理解的推理方法
  • 观点动力学和回音室
  • 中小学网站建设域名论坛网站
  • 5.网络原理之TCP_IP
  • 全球访问量top100网站建设银行官方网站-云服务
  • 小梦音乐下载 1.0.5 | 提供三条音源,支持多种音质选择和批量下载的音乐下载工具
  • GIS:揭开你神秘的面纱
  • 怎么做网站小图标有的网站域名解析错误
  • 安徽省网站肥建设网站湖北望新建设有限公司网站
  • 机器学习周报二十二
  • 计算二叉树的深度 | C语言
  • 什么网站算是h5做的网络推广企划
  • 传导案例:某医疗仪器传导骚扰整改案例
  • 做跨境电商有没推荐的网站新闻稿件代发平台
  • C++篇(18)类型转换与IO库
  • 海口中小企业网站制作3D特效做首页的网站
  • 专业做家政网站( )是网站可以提供给用户的价值
  • 网站活动专题页面学校网站建设制作方案
  • 【C++】从理论到实践:类和对象完全指南(上)
  • 网站不排名一切等于零做网站推广维护需要学些什么
  • 公考面试资源合集
  • 网站建设 预付款自己怎么做软件
  • 41、C#什么是单例设计模式