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

集成电路流片随笔26:tinyriscv的三级流水线细则pc

`include "defines.v"// PC寄存器模块
module pc_reg(input wire clk,input wire rst,input wire jump_flag_i,                 // 跳转标志input wire[`InstAddrBus] jump_addr_i,   // 跳转地址input wire[`Hold_Flag_Bus] hold_flag_i, // 流水线暂停标志input wire jtag_reset_flag_i,           // 复位标志output reg[`InstAddrBus] pc_o           // PC指针);always @ (posedge clk) begin// 复位if (rst == `RstEnable || jtag_reset_flag_i == 1'b1) beginpc_o <= `CpuResetAddr;// 跳转end else if (jump_flag_i == `JumpEnable) beginpc_o <= jump_addr_i;// 暂停end else if (hold_flag_i >= `Hold_Pc) beginpc_o <= pc_o;// 地址加4end else beginpc_o <= pc_o + 4'h4;endendendmodule

📌 模块功能概述

pc_reg模块负责控制指令地址(PC)的更新。它根据以下几种情况更新或保持PC值:

  1. 复位(Reset)
  2. 跳转(Jump)
  3. 流水线暂停(Hold)
  4. 正常递增

📥 输入端口解释

端口名位宽说明
clk1 bit时钟信号
rst1 bit全局复位信号(高电平有效)
jump_flag_i1 bit跳转使能信号(高电平表示需要跳转)
jump_addr_iInstAddrBus跳转目标地址
hold_flag_iHold_Flag_Bus保持流水线的标志位(如取指阶段暂停)
jtag_reset_flag_i1 bit来自JTAG接口的调试复位信号

📤 输出端口

端口名位宽说明
pc_oInstAddrBus当前PC值(即指令地址)

🔁 always 块说明

always @ (posedge clk)

在每个时钟上升沿,根据以下优先级更新 PC 值:

🥇 1. 复位信号优先
if (rst == `RstEnable || jtag_reset_flag_i == 1'b1)pc_o <= `CpuResetAddr;

当外部复位或JTAG调试复位触发时,PC重置为预设地址(如:0x00000000)。

🥈 2. 跳转信号
else if (jump_flag_i == `JumpEnable)pc_o <= jump_addr_i;

当检测到跳转请求时,将PC设置为跳转目标地址。

🥉 3. 流水线暂停(Hold)
else if (hold_flag_i >= `Hold_Pc)pc_o <= pc_o; // 保持不变

如果当前需要暂停(如因为缓存未命中或其他流水线控制信号),保持PC值不变。

🏁 4. 正常执行(地址加4)
elsepc_o <= pc_o + 4'h4;

如果无跳转或暂停,PC递增4字节,执行下一条指令。


✅ 总结:状态机行为

条件PC更新为
复位 or JTAG复位CpuResetAddr
跳转使能jump_addr_i
暂停标志 >= Hold_Pc保持不变
正常pc_o + 4

相关文章:

  • Windows 10 无法启动或黑屏的修复指南(适用于更新失败或磁盘故障)
  • ResNet详解
  • 全层微调:解锁预训练模型的无限潜力
  • js-getSelection获取选中内容
  • tcpdump 的用法
  • CDGP重点知识梳理(82个)
  • Auto DOP:让并行执行实现智能调优 | OceanBase 实践
  • 达梦、PostgreSQL数据库讲json解析成临时表(json_table函数的使用)
  • 通用外设驱动模型(四步法)
  • 微信小程序地图缩放scale隐性bug
  • [AI Tools] Dify 平台插件开发全解:如何构建 Tools 插件并解析输出逻辑
  • OpenCV中适用华为昇腾(Ascend)后端的逐元素操作(Per-element Operations)
  • 【质量管理】TRIZ因果链分析:解码质量问题的“多米诺效应“
  • 经典计算核心问题在于多项式时间内无法求解
  • 重庆工商职业学院“户卫者”团队为建筑外墙检测技术推广创新赋能
  • PostgreSQL创建只读账号
  • 自适应混合索引创建与管理:一种智能数据库优化机制的研究
  • PH热榜 | 2025-05-09
  • 『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!
  • 鸿蒙电脑:五年铸剑开新篇,国产操作系统新引擎
  • 重庆大学通报本科生发14篇SCI论文:涉事学生及其父亲被处理
  • 重庆大学通报本科生发14篇SCI论文处理结果
  • 欧洲理事会前主席米歇尔受聘中欧国际工商学院特聘教授,上海市市长龚正会见
  • 上海证监局规范辖区私募经营运作,6月15日前完成自评自纠
  • 来论|建设性推进缅北和平进程——中国的智慧与担当
  • 中国海警依法驱离日非法进入我钓鱼岛领海船只