RTL 设计:数据通路与流水线
先规定数值约定和周期约定,再设计 ALU、控制器、流水线以及 ready-valid 缓冲。四个可运行的参考模型实验会检查算术边界、停顿、FIFO 和顺序,最后完成流式计算综合项目。
你将学到什么
- 区分位宽、符号属性、进位和溢出的约定
- 安排寄存器传送、FSM 控制和同步存储器的时序
- 计算延迟、吞吐率和启动间隔
- 正确处理 ready-valid 停顿及 FIFO 边界,避免数据丢失
- 建立覆盖冒险和复位的记分板检查
- 利用独立模型验证流式计算综合项目
开始之前
浏览器练习使用教学模型,不会编译或运行 HDL。如需单独运行提供的源代码,请遵循适用于您操作系统的 Digital Design Studio 指南,并在操作要求时登录。
安装与首次启动 ↗ · 下载 ↗课程大纲
- 数值与算术约定
- 将方程转化为数据通路约定概念
在规定算术运算的同时,明确位宽、接收事件和有效结果。
- 位宽、符号扩展与溢出概念
用数值示例区分数值解释、扩展与位宽缩窄。
- 实验:八位 ALU 参考模型实验
在独立可执行程序中检查 ADD、SUB、AND、XOR、进位和借位。
- 检查:进位与有符号溢出测验
区分无符号解释和有符号解释下的数值边界。
- 寄存器传送与控制
- 在时钟沿分析寄存器传送概念
区分旧状态与下一状态,并追踪使能信号如何保持已存储的值。
- 用 FSM 调度共享资源概念
使用一个加法器累加四个数值,同时明确状态转换和采集行为。
- 存储器请求与响应的时序约定概念
区分同步读取、延迟后的标签和同地址冲突。
- 检查:保持已完成的结果测验
区分 DONE 状态下的交付与下一个请求的接收。
- 流水线时序与吞吐率
- 在流水线边界存储完整事务概念
将求和与缩放运算分级,同时保持 valid、标签和位宽对齐。
- 延迟、吞吐率和启动间隔概念
将单个事务的等待时间与持续完成速率分别计算。
- 实验:追踪两级流水线与气泡实验
根据旧状态计算下一状态,并比较输出标签、数值和时钟沿。
- 检查:II=1 的含义测验
避免混淆流水线级数与持续吞吐率。
- Ready-valid 流量控制
- 接收事件与停顿期间的稳定性概念
分配源端与接收端的职责,并保持停顿期间的有效载荷。
- 设计单槽弹性寄存器概念
接收输入到空槽,或替换同一时钟沿被取走的数据项。
- 实验:检查 1024 种停顿模式实验
用全部十周期 ready 模式测试保持、替换和置空。
- 检查:停顿事务的计数测验
区分 valid 持续时间与实际握手次数。
- FIFO 与冒险边界
- FIFO 空、满与同时传送概念
区分占用量与指针,并规定边界上的入队/出队行为。
- 依赖、资源冒险与转发概念
当操作需要先前结果时,比较停顿和转发。
- 在清空和复位期间保持事务计数概念
区分取消与交付,并使有效状态和预期队列一致。
- 检查:满 FIFO 中的替换测验
计算同时入队和出队时的占用量与顺序。
- 验证与流式计算器
- 结合记分板与局部不变量概念
从已接收事务检查数值、顺序、占用量和停顿稳定性。
- 综合实验:FIFO 与两级流式计算器实验
连接深度二的输入 FIFO、两个弹性级和记分板。
- 测量性能并审查设计概念
规定观察窗口、诊断停顿,并明确模型证据的范围。
- 最终检查:无损停顿与排空测验
结合算术、未完成事务计数和完成条件。