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

FPGA基础 -- Verilog 访问寄存器数组的指定位示例

涉及 Verilog 中的多维寄存器数组的访问 技巧。我们以如下定义为例展开讲解:

reg [7:0] reg_array [0:15];  // 定义了16个8位寄存器

一、访问指定偏移寄存器

这里的 reg_array 是一个 16 组、每组 8bit 的一维数组,数组下标范围为 0~15。访问其中第 i 个寄存器,只需要使用:

reg_array[i]

示例:

reg [3:0] index;
always @(posedge clk) begindata_out <= reg_array[index];  // 访问 reg_array[index] 的整个 8 位数据
end

二、访问 指定寄存器的某一位

reg_array[i] 是一个 8-bit 的向量,因此你可以像访问普通向量一样访问某一位:

reg_array[i][bit_pos]
  • i:寄存器编号(偏移)
  • bit_pos:位编号(0~7)

示例:

reg [3:0] index;
reg [2:0] bit_sel;
always @(posedge clk) beginsingle_bit <= reg_array[index][bit_sel];  // 访问 reg_array[index] 的 bit_sel 位
end

三、修改某一寄存器的某一位

如果你想置位某一位,比如将第 5 个寄存器的第 3 位置为 1,可以写:

reg_array[5][3] <= 1'b1;

如果你要用变量控制,写法如下:

reg [3:0] idx;
reg [2:0] pos;
always @(posedge clk) beginreg_array[idx][pos] <= 1'b1;
end

四、访问某个寄存器的多个连续 bit

你可以这样写:

reg [3:0] idx;
always @(posedge clk) beginnibble <= reg_array[idx][7:4];  // 访问 reg_array[idx] 的高 4 位
end

也支持组合切片赋值:

reg_array[idx][3:0] <= 4'b1010;

五、组合使用:同时访问多位多个寄存器

例如你要拼接两个寄存器的高4位:

wire [7:0] combined = {reg_array[3][7:4], reg_array[4][7:4]};

总结

类型Verilog 语法示例
访问某个寄存器reg_array[i]reg_array[3]
访问某寄存器某一位reg_array[i][j]reg_array[3][2]
访问某寄存器某一段位reg_array[i][MSB:LSB]reg_array[3][7:4]
动态访问位reg_array[i][bit_sel]reg_array[idx][pos]
组合访问多个寄存器的位{reg_array[i][3:0], reg_array[j][3:0]}{reg_array[3][3:0], reg_array[4][3:0]}
http://www.xdnf.cn/news/1134451.html

相关文章:

  • 详解SPFA算法-单源最短路径求解
  • AI Agent开发学习系列 - langchain之LCEL(2):LCEL 链式表达解析
  • 高性能上位机界面设计范式:C#与C++/C开发调试无缝衔接
  • 《图解技术体系》Four Implementation Methods of Distributed Transactions
  • 《设计模式之禅》笔记摘录 - 7.中介者模式
  • FATFS文件系统原理及其移植详解
  • 042_封装的实现(属性私有化 / 方法公开)
  • Gradle vs Maven:构建工具世纪对决 —— 像乐高积木与标准模型之间的选择艺术
  • LeetCode经典题解:141、判断链表是否有环
  • LLM指纹底层技术——模型架构
  • mysql 慢sql优化篇
  • OSPF作业
  • 开源 python 应用 开发(六)网络爬虫
  • 从零开发足球比分APP:REST API与WebSocket的完美搭配
  • 数据结构--准备知识
  • Git问题排查与故障解决详解
  • 汽车数字化——65页大型汽车集团企业IT信息化(管理架构、应用架构、技术架构)战略规划【附全文阅读】
  • 【代码】Matlab鸟瞰图函数
  • kimi-k2-api使用示例
  • 技术分享:如何用规则定义生成自定义文件时间戳
  • 面向向量检索的教育QA建模:九段日本文化研究所日本语学院的Prompt策略分析(6 / 500)
  • 【MAC】nacos 2.5.1容器docker安装
  • Python中的列表list、元组(笔记)
  • Vue在线预览Excel和Docx格式文件
  • CentOS网络配置与LAMP环境搭建指南
  • VUEX 基础语法
  • 如何解决WordPress数据库表损坏导致的错误
  • C语言 --- 函数递归
  • 蓝光三维扫描技术:汽车轮毂轴承模具检测的高效解决方案
  • Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比