当前位置: 首页 > 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.lryc.cn/news/590579.html

相关文章:

  • 从函数调用到进程通信:Linux下的多语言协作实践
  • 识别装甲板
  • 【Jupyter】个人开发常见命令
  • HugeGraph 【图数据库】JAVA调用SDK
  • ByteToMessageDecoder详解
  • Spring AI快速入门
  • VisualVM监控远程Linux的java进程
  • 【SpringBoot】实战-开发接口-用户-注册
  • matlab的伯德图为何从360度显示?应如何修改解决?
  • 基于大数据的网络文学推荐分析系统的设计与实现【海量书籍、自动爬虫】
  • Redis1:高并发与微服务中的键值存储利器
  • mongodb操作巨鹿
  • DHTMLX Suite 9.2 重磅发布:支持历史记录、类Excel交互、剪贴板、拖放增强等多项升级
  • Qt小组件 - 6 异步运行函数
  • Redis深度解析:从缓存到分布式系统的核心引擎
  • Java高并发编程(2)
  • beautiful-react-hooks库——入门实践常用hook详解
  • React之旅-09 useMemo,优化计算性能的利器
  • React 源码7:Lane、React和schedule优先级转换
  • WPF 多窗口分文件实现方案
  • 【MAC】nacos 2.5.1容器docker安装
  • QT——事件系统详解
  • 多语言json文件内\n换行不生效问题
  • React -自定义hooks - 封装双向数据绑定
  • React 中 props 的最常用用法精选+useContext
  • H3CNE综合实验之机器人
  • Antd中使用Table集成 react-resizable实现可伸缩列
  • PowerJob集群机器数为0问题
  • 深度剖析 TDMQ RabbitMQ 版经典队列底层存储机制
  • vue页面不销毁的情况下再返回,总是执行created,而不触发 activated