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

FPGA基础 -- Verilog语言要素之向量线网与标量线网

Verilog 向量线网 vs 标量线网


一、定义与区别概述

类型含义位宽应用场景
标量线网单个位线(1位信号)1-bit控制信号、时钟、复位
向量线网多个位组成的总线N-bit数据总线、地址总线

二、标量线网(Scalar Net)

1. 定义与使用示例

wire clk;
wire rst_n;
wire done;
  • 每个信号是 单比特(1-bit)
  • 常用于时钟信号(clk)、复位信号(reset)、标志位(flag)

2. 特点

  • 默认 wire clk; 等价于 wire [0:0] clk;
  • 在仿真和综合中无歧义,适合逻辑控制建模

三、向量线网(Vector Net)

1. 定义与格式

wire [7:0] data_bus;      // 8位总线,从bit 7到bit 0
wire [31:0] address_bus;  // 32位地址线
语法结构:
<type> [MSB:LSB] <net_name>;
  • MSB(Most Significant Bit):高位编号
  • LSB(Least Significant Bit):低位编号
  • 位宽 = abs(MSB - LSB) + 1

2. 位宽不一定要高到低

wire [0:7] my_bus;  // 也是8位,从低到高编号(不常见)
  • 不影响功能,但在代码中访问方向反转,容易出错,建议统一用高到低

四、向量访问与操作

1. 单位访问(按位)

wire [7:0] data;
assign bit0 = data[0];
assign bit7 = data[7];

2. 范围访问(位切片)

assign lower4 = data[3:0];  // 低 4 位
assign upper4 = data[7:4];  // 高 4 位

3. 拼接与重复

assign concat = {data[3:0], data[7:4]}; // 拼接两个部分
assign repeat = {4{1'b1}};             // 重复 4 次:4'b1111

五、向量线网的用途场景

应用场景示例
数据总线wire [7:0] data_bus;
地址总线wire [15:0] addr;
控制字节wire [3:0] ctrl_flags;
嵌套模块连接module(.in(data[3:0]))

六、向量线网在模块端口中的使用

1. 模块定义

module alu (input  wire [7:0] a,input  wire [7:0] b,output wire [7:0] result
);

2. 实例连接

wire [7:0] x, y, z;
alu u_alu (.a(x), .b(y), .result(z));

七、向量线网 vs 向量变量(reg)

类型wire [7:0]reg [7:0]
类型分类线网类型(必须被驱动)变量类型(过程块中赋值)
用途组合逻辑、模块连接寄存器建模、状态存储
赋值方式assign/dataflow/gate驱动always块中赋值
多驱动支持

八、设计建议与注意事项

建议原因
统一向量方向为 [MSB:LSB](如 [7:0]增强代码可读性与一致性
定义明确位宽,如 wire [31:0]避免宽度不一致造成位错或综合问题
多位控制信号亦使用向量表达wire [3:0] ctrl_flag 优于 4 个单独信号
向量线网不要在 always 块中赋值否则编译错误,应使用 reg 类型

✅ 总结对比表

项目标量线网向量线网
位宽1-bit多 bit,如 [7:0], [31:0]
用途单位控制、时钟、复位数据、地址、总线
访问方式信号名位访问、切片、拼接
赋值方式assign 或模块驱动assign、拼接、常用于 bus
http://www.lryc.cn/news/571272.html

相关文章:

  • 自然语言处理(NLP)核心技术:从词嵌入到Transformer
  • 微信小程序一款不错的文字动画
  • 密度泛函涨落理论在医疗人工智能中的应用与展望:多尺度物理驱动智能的新范式
  • Spring Boot + MyBatis + Redis Vue3 Docker + Kubernetes + Nginx
  • OpenCV 视频文件读取
  • Linux核心文件(core file)详解
  • Vue 3 常用响应式数据类型详解:ref、reactive、toRef 和 toRefs
  • 【Linux系统】初识虚拟地址空间
  • Java微服务-新建demo
  • UTF-8 发展历史以及与 UTF-16/GBK 之间的差异
  • AI办公提效,Deepseek + wps生成ppt
  • 网络安全之任意文件读取利用
  • 如何在应用中实现地图关键字搜索和标记聚合功能?
  • 图扑软件 | 3D 场景视频嵌入应用
  • 【pytest进阶】Pytest之conftest详解
  • Kafka网络模块全链路源码深度剖析与设计哲学解读
  • RAG 架构地基工程-Retrieval 模块的系统设计分享
  • 测试:网络协议超级详解
  • 国产数据库KingbaseES零基础实战:Oracle兼容功能从入门到精通
  • 探索KingbaseES在线体验平台:国产数据库新体验
  • 力扣Hot100每日N题(19~24)
  • 性能测试|数据说话!在SimForge平台上用OpenRadioss进行汽车碰撞仿真,究竟多省时?
  • 页面配置文件pages.json和小程序配置
  • 金仓数据库在线体验平台:开启国产数据库云端探索之旅
  • 【万元大奖】2025年第二届教育信息技术应用创新大赛——操作系统技能创新挑战赛 开始报名啦!!!
  • 资产结构分析怎么做?以固定资产和存货为例
  • LLM大模型系列(十):深度解析 Prefill-Decode 分离式部署架构
  • 红队攻防渗透技术实战流程:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份
  • 项目的难点
  • 接雨水 - 困难