ZHCUCT2 February 2025 LMH1229 , LMH1239
LMH12x9 可配置为输出 PRBS-7、PRBS-9、PRBS-23 和 PRBS-31。根据选择的 PRBS 多项式和极性,在加载初始种子后生成数据。生成的 32 位数据由串行器时钟读取。该模式可以输出到 SDI_OUT±、OUT0± 和/或 OUT1±。
| 命令 | 寄存器 | 值 | MASK | //注释 |
|---|---|---|---|---|
RAW | FF | 04 | 07 | //选择 CDR 寄存器页面 |
RAW | 2C | 80 | C0 | //通过启用 VCO_PD 覆盖并将 0 写入 VCO_PD 来启用 VCO |
RAW | 45 | 88 | CE | //启用 PFD |
RAW | 41 | 80 | C0 | //启用解串器 |
RAW | 3F | 00 | 20 | //启用 PDIQ |
RAW | 3F | 00 | 07 | //选择 VCO 标量分频器 |
//Reg0x3F[2:0] = 3'b000 全速率 | ||||
//Reg0x3F[2:0] = 3'b001 2 分频 | ||||
//Reg0x3F[2:0] = 3'b010 4 分频 | ||||
//Reg0x3F[2:0] = 3'b011 8 分频 | ||||
//Reg0x3F[2:0] = 3'b100 40 分频 | ||||
RAW | 3F | 08 | 08 | //启用 PDIQ 覆盖 |
RAW | 3F | 48 | 48 | //启用 PDIQ PD 覆盖 |
RAW | 54 | 80 | E0 | //Reg0x54[7:5]= OUT0 上的 3'b100 PRBS 数据 |
10 | 1C | //Reg0x54[4:2]= OUT1 上的 3'b100 PRBS 数据 | ||
03 | 03 | //Reg0x54[1:0]= SDI_OUT 上的 2'b11 PRBS 数据 | ||
RAW | 53 | 02 | 02 | //覆盖独立输出控制 |
RAW | 40 | 20 | 20 | //启用串行器 |
RAW | 82 | 40 | 40 | //允许串行器时钟驱动 PRBS-core |
RAW | FF | 05 | 07 | //选择 EQ/驱动器寄存器页面 |
RAW | 34 | 40 | 40 | //禁用 TX0 断电功能 |
RAW | 36 | 40 | 40 | //禁用 TX1 断电功能 |
RAW | 38 | 80 | 80 | //禁用 SDI_OUT± 断电功能 |
RAW | FF | 00 | 07 | //选择共享寄存器页面 |
RAW | 0C | 04 | 04 | //将串行器时钟保持在复位状态 |
RAW | 0B | 04 | 04 | //启用串行器时钟 |
RAW | 0C | 00 | 04 | //使串行器时钟退出复位状态 |
RAW | FF | 04 | 07 | //选择 CDR 寄存器页面 |
RAW | 79 | 00 | 30 | //Reg0x79[5:4] = 2'b00 PRBS7 |
10 | 30 | //Reg0x79[5:4] = 2'b01 PRBS9 | ||
20 | 30 | //Reg0x79[5:4] = 2'b10 PRBS23 | ||
30 | 30 | //Reg0x79[5:4] = 2'b11 PRBS31 | ||
RAW | 7A | 00 | 01 | //在生成的数据上不强制极性反转 |
RAW | 79 | 02 | 02 | //将逻辑设置为 PRBS 生成器 |
RAW | 79 | 01 | 01 | //启用 PRBS 功能 |
RAW | FF | 00 | 07 | //选择共享寄存器页面 |
RAW | FE | 08 | 0C | //覆盖 OUT0± |
在生成器模式下对 LMH12x9 进行编程时,器件能够生成无错误的 PRBS。通过翻转所生成数据中的一位,可以向生成的数据注入一位错误。用户可以通过设置自清除注入位将错误分配到 32 个位之一。执行此操作后,输出数据将携带一位错误。
| 命令 | 寄存器 | 值 | MASK | //注释 |
|---|---|---|---|---|
RAW | FF | 04 | 07 | //选择 CDR 寄存器页面 |
RAW | 82 | xx | 1F | //0x82[4:0]= 5'bxxxxx 选择 32 位地址以注入单个位错误 |
RAW | 82 | 20 | 20 | //触发 PRBS 生成器,只在生成的数据流中注入一位错误。自清除。 |
如果模块设置为检查 PRBS,则传入的解串器数据首先作为种子加载到器件中。根据状态机选择的 PRBS 多项式和极性,器件生成一个新值,并在下一个数据时钟周期将此值与解串器数据进行比较。对 64 个时钟周期重复执行此过程,如果来自器件的数据与所有 64 个时钟周期中的解串器数据匹配,状态机 (SM) 将声明 PRBS-lock,这意味着 SM 在传入的数据中找到匹配的 PRBS 多项式。否则,SM 会切换至测试相反极性,然后测试另一个多项式。重复此过程,直到 SM 找到 PRBS 锁定。但是,如果传入的信号与任何受支持 PRBS 多项式均不匹配,此过程将一直持续。
| 命令 | 寄存器 | 值 | MASK | //注释 |
|---|---|---|---|---|
RAW | FF | 04 | 07 | //选择 CDR 寄存器页面 |
RAW | 40 | 20 | 20 | //初始化时钟信号以进行 PRBS 检查 |
RAW | 82 | 40 | 40 | //初始化时钟信号以进行 PRBS 检查 |
RAW | 82 | 00 | 40 | //初始化时钟信号以进行 PRBS 检查 |
RAW | 40 | 00 | 20 | //初始化时钟信号以进行 PRBS 检查 |
RAW | 8B | 00 | 80 | //关闭下电上电 |
RAW | 82 | 80 | 80 | //允许解串器时钟驱动 PRBS-core |
RAW | 79 | 04 | 04 | //将逻辑设置为 PRBS 校验器 |
RAW | 79 | 10 | 10 | //启用 PRBS 功能 |
RAR | 73 | 0F | //读取 PRBS_PATT_DET 以检测正在提供哪个 PRBS | |
//寄存器 0x73[3:0] = 检测到 4'b1000 PRBS-31 | ||||
//寄存器 0x73[3:0] = 检测到 4'b0100 PRBS-23 | ||||
//寄存器 0x73[3:0] = 检测到 4'b0010 PRBS-9 | ||||
//寄存器 0x73[3:0] = 检测到 4'b0001 PRBS-7 | ||||
RAR | 74 | 07 | //读取 11 位宽错误总和的高三位。最大总错误数为 2047。 | |
//Reg0x74[2:0] = 3'bxxx | ||||
RAR | 75 | FF | //读取 11 位宽错误总和的低八位 | |
//Reg0x75[7:0] = 8'bxxxxxxxx |