ZHCSHQ5A February 2018 – June 2018 OPT3101
PRODUCTION DATA.
AFE 具有片上序列发生器,可用于执行各种操作。Table 19 中列出了序列发生器命令。每条指令为 12 位,其中的前四个 MSB 位作为操作码,后八个位作为操作数。序列发生器可以执行幅度或相位与寄存器阈值 COMPARE_REG1、COMPARE_REG2 的比较,并生成信号 COMP_STATUS(可以通过 DIG_GPO_SEL0 = 8 和 gpo1_mux_sel = 2 设置在 GP1 上观察到此信号)。可以使用 COMP_IN_SEL 来选择比较输入类型。序列发生器每个样本执行一条命令。执行命令的序列发生器中断可以在数据准备好之后和下一个样本开始之前置于样本的开头或样本的末尾。可以使用 TG_SEQ_INT_START、TG_SEQ_INT_END、TG_SEQ_INT_MASK_START 和 TG_SEQ_INT_MASK_END 寄存器对序列发生器中断进行编程。TG_SEQ_INT_START 和 TG_SEQ_INT_END 用于定义子帧内中断脉冲的位置。TG_SEQ_INT_MASK_START 和 TG_SEQ_INT_MASK_END 用于定义启用脉冲的子帧。
序列发生器的一些用例包括:
操作码 | 功能 | 说明 |
---|---|---|
0000 | NOP | 操作数指示应该执行 NOP 的周期数。0 表示 1 个周期,1 表示 2 个周期,以此类推。例如,0000-0000 1111 表示在接下来的 16 个周期中,序列发生器不执行任何操作。 |
0001 | WRITE | 此命令将操作数写入 STATUS_OUT 寄存器。例如,0001-0110 0110 在 STATUS_OUT 端口 0110 01100 上生成值。STATUS_OUT 端口映射到Table 20 中列出的特定关键寄存器。仅当 EN_PROCESSOR_VALUES = 1 时,STATUS_OUT 值才会覆盖寄存器值。 |
0010 | GOTO | 程序计数器 (PC) 转到操作数指示的行。此命令对循环很有用。下一条命令在下一个序列发生器中断处执行。例如,0010-0000 0000 将 PC 设置为程序存储器的第一行,从而在循环中执行指令。 |
0011 | DGOTO | 在此命令中,仅当 STATUS_IN_REG 位为 1 时,PC 才会转到操作数指示的行。否则,PC 将保持相同的命令,直到 STATUS_IN_REG 寄存器值变为 1。下一条命令在下一个帧 VD 处执行。例如,0011-0000 0000 会暂停程序,直到 STATUS_IN_REG 位设置为 1。执行此设置后,循环将重新开始。 |
0100 | DrGOTO | 在此指令中,PC 不经过任何延迟而直接进入操作数指示的行。这种情况下还会执行下一条指令。下一条命令在同一个帧 VD 处执行。 |
0101 | COMP0 | 在此命令中,CPU 比较 COMP_IN 和 COMPARE_REG1。如果 COMP_IN ≤ COMPARE_REG1,程序计数器将保持原样,且 COMP_STATUS 端口为 0。如果比较失败,程序计数器将移动到操作数指示的行,且 COMP_STATUS 变为 1。 |
0110 | COMP0_INV | 与 COMP 类似,但使用的比较为:COMP_IN ≥ COMPARE_REG2 |
0111 | COMP_WINDOW | 在此命令中,PC 永远保持相同的命令。如果 (COMP_IN ≥ COMPARE_REG1) 且 (COMP_IN ≤ COMPARE_REG2),则 COMP_STATUS 变为 1,否则 COMP_STATUS = 0。 |
1000 | COMP2 | 如果 (COMP_IN ≥ COMPARE_REG1) 且 (COMP_IN ≤ COMPARE_REG2),则 COMP_STATUS 变为 1,否则 COMP_STATUS = 0。如果条件为 TRUE,则程序计数器保持相同的命令,否则移动到操作数指示的行。 |
1001 | COMP3 | 与 COMP2 相似。不同之处在于,无论比较结果如何,程序计数器都会移动到操作数指向的指令。如果满足比较要求,则 COMP_STATUS 设置为 1,否则设置为 0。 |
1010 | COMP_HYST | 在此命令中,PC 永远保持相同的命令。比较中存在迟滞。如果 (COMP_IN ≤ COMPARE_REG1),则 COMP_STATUS = 0,否则如果 (COMP_IN ≥ COMPARE_REG2),则 COMP_STATUS = 1。 |
1011 | COMP1 | 在此命令中,CPU 比较 COMP_IN 和 COMPARE_REG1。如果 COMP_IN ≤ COMPARE_REG1,程序计数器将保持原样,且 COMP_STATUS 端口为 0。如果比较失败,程序计数器将移动到操作数指示的行,且 COMP_STATUS 变为 1。执行此命令并在同一中断处移至下一条命令。 |
1100 | COMP1_INV | 与 COMP1 类似,但使用的比较为 COMP_IN ≥ COMPARE_REG2。序列发生器执行此命令并在同一中断处移至下一条命令。 |
1101–1111 | 无效 |
STATUS_OUT | 寄存器映射 |
---|---|
[0] | INT_XTALK_CALIB |
[1] | EN_DEALIAS_MEAS |
[2] | START_FREQ_CALIB |
[4:3] | SEL_TX_CH |
[5] | SEL_HDR_MODE |
[7:6] | 无效 |
寄存器 | 地址 | 说明 |
---|---|---|
COMP_IN_SEL | 13h[2:0] | 选择用于 comp_in 的值。
0:AMP_OUT | 1:DEALIAS_BIN | 2:去混叠模式下的相位输出 | 3:PHASE_OUT |
COMPARE_REG1 | 13h[18:3] | 序列发生器比较阈值 1 |
COMPARE_REG2 | 14h[15:0] | 序列发生器比较阈值 2 |
EN_SEQUENCER | 14h[16] | 启用序列发生器。 |
EN_PROCESSOR_VALUES | 14h[17] | 使用处理器值而不是寄存器值。 |
STATUS_IN_REG | 14h[18] | 此寄存器用于控制 CPU 中的程序流 |
DIS_INTERRUPT | 14h[19] | 禁用可触发序列发生器的中断。 |
COMMAND0 至 COMMAND19 | 15h[11:0] 至 1Eh[23:12] | 序列发生器命令寄存器。共有 20 个命令寄存器可用。 |