ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
图 13-5、图 13-6 和图 13-7 显示了可用于操作 PKA 引擎的几个操作序列。接口总线事务和主中断输出(中断输出总线的位 [1])的行为以程式化的方式进行描述。
图 13-5 所示序列的左侧显示了启动行为。中断在模块复位期间处于无效状态(低电平),在启动序列发生器程序后的 10 个模块时钟周期内处于有效状态(高电平)。在使用程序 ROM 的情况下,当释放模块复位时,序列发生器会立即启动。对于配备了程序 RAM 的引擎,必须首先加载序列发生器固件,然后将序列发生器退出复位状态(向 PKA_SEQ_CTRL 寄存器的位 [31] 写入 0b),以启动序列发生器程序。
图 13-5 的右侧显示了正常操作序列。正常操作序列首先在 PKA 数据 RAM 中写入输入向量,并将向量指针和长度值写入 PKA 引擎控制寄存器(可以按任意顺序完成)。操作通过对 PKA_FUNCTION 寄存器的写入来启动,这会在设置 RUN 位后的两个时钟周期内使主中断输出变为无效。当 PKA 引擎完成执行请求的操作后,主中断将再次激活,并可以从状态寄存器中读取结果状态(如果需要)。结果向量可以从 PKA 数据 RAM 中读取。
图 13-5 运行时序
图 13-6 显示了更优化的交错操作序列。当有足够的 PKA 数据 RAM 可用时,可以使用 RAM 中的不同区域来交错写入输入向量和读取结果向量。第一个操作执行期间,写入第二个操作的输入向量。指针和长度寄存器的写入以及第二个命令的实际启动,都在从 PKA 数据 RAM 读取第一个命令的结果向量之前完成。第三个操作的输入向量可以在读取第一个结果后立即写入,所有这些都在第二个操作执行期间完成。
图 13-6 交错操作序列图 13-7 显示了一个高度优化的基本 PKCP 操作序列。对于基本的 PKCP 操作,向量指针和长度寄存器是双缓冲的;它们可以在操作进行期间被写入。有了这种能力,在第一个操作执行期间,对第二个操作的向量、指针和长度寄存器的写入可以实现更优化的总线访问交错。当中断激活发生时,只需要第二个操作的命令即可启动。
图 13-7 还显示第一个操作的状态是在第二个命令启动之后读取的;为确保此状态不会因第二个操作的提前完成而改变,第二个操作必须在 Stall Result 位(PKA_FUNCTION 寄存器的位 [24])写入为 1b 的情况下启动。读取状态后,必须复位 Stall Result 位以允许状态更新。如果第一个操作没有需要检查的状态,则不需要设置 Stall Result 位。
图 13-7 基本 PKCP 操作序列