Aurora drp动态调速测试

本实验利用Aurora的drp接口对CPLL参数进行修改,实现线速率的动态修改。(详情参考UG476)

线速率修改公式如下图所示,图中Fpllclkin为IP 的GT参考时钟(实验中为125Mhz):

寄存器地址映射如下图:

仿真测试如下:

用一个确定速率的IP(aurora_64b66b_drp)去测试需要动态修改速率的模块。这里aurora_64b66b_drp的线速率设为1.25Gbps,被测试的IP初始线速率为6.25Gbps。

DRP接口时序如图所示:

上图为6.25Gbps----> 1.25Gbps, 注意在操作DRP接口后对被测IP进行整体复位。

w_user_clk为IP输出的用户时钟,可以看到修改线速率之前的周期为10.240ns,修改之后为51.200ns。并且channel_up、lane_up拉高证明双方LINK成功。

### DRP 动态配置 PLL 方法及实例 #### 使用 MMCME2_ADV 原语进行动态重配置 (DRP) MMCME2_ADV 提供了强大的动态重配置端口(DRP),允许在系统运行期间修改 MMCM 配置参数,从而实现实时调整和优化时钟管理[^2]。 为了利用 DRP 对 PLL 进行动态配置,在 Vivado 或其他开发环境中需遵循以下方法: 1. **创建 IP 核** 设计阶段应加入 `clk_wiz` IP 核来生成所需的时钟树结构。该 IP 支持通过 AXI 接口访问内部的 DRP 寄存器。 2. **使能 DRP 端口** 在 `clk_wiz` 的设置界面中启用 "Dynamic Phase Shift" 和 "Dynamic Reconfiguration Port" 选项。这会暴露必要的控制信号以便后续编程操作。 3. **编写 HDL 代码** 下面是一个简单的 Verilog 实例展示如何触发一次相移更新: ```verilog module drp_example ( input wire clk, // 输入时钟 output reg done, // 完成标志 inout wire [8:0] drp_addr, inout wire [31:0] drp_di, inout wire [31:0] drp_do, inout wire drp_den, inout wire drp_dwe, inout wire drp_rdy ); reg [9:0] addr; reg [31:0] data; // 设置地址和数据值准备写入 initial begin addr = 10'h0; // 调整为目标寄存器的实际地址 data = 32'd12345678; // 替换为实际期望的数据 @(posedge clk); // 开始写周期 drp_addr <= addr; drp_di <= data; drp_den <= 1'b1; drp_dwe <= 1'b1; while (!drp_rdy) @ (posedge clk); // 等待就绪 // 结束写周期并标记完成 drp_den <= 1'b0; drp_dwe <= 1'b0; done <= 1'b1; end endmodule ``` 此代码片段展示了基本框架,具体应用时需要根据实际情况调整目标寄存器地址(`addr`)及其对应的数据值(`data`)。 4. **集成与测试** 将上述模块与其他部分连接起来形成完整的电路图,并下载至 FPGA 上执行。借助外部调试工具监控输出波形的变化情况以验证配置效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值