12.1.2. 功能描述

12.1.2.1. 非实时采样与实时采样

针对ADC应用模块传递给本模块的采样命令分类两类:低优先级非实时采样,高优先级实时采样。

低优先级非实时采样,通常是面对非实时需求,例如GPAI的多数应用场景,以及THS温度传感器采样的应用场景, 这些场景里,没有严格的完成时间要求(时序要求),只需要在大概的时间内对某个输入量进行采样量化并返回给ADC应用模块即可。

高优先级实时采样,通常是面对有实时性需求的场景(例如RTP模块)。RTP模块的采样需要配合以外部的驱动电路, 有较高的时序要求,RTP模块需要明确知道采样的起始和结束时间,而且期望在较快的时间内完成,以获得更好的用户体验。 在本模块内部,对于两类命令有不同的处理和响应机制。

../../../_images/3.png

图 12.3 两类命令的响应机制

如上图所示,高优先级命令(PRI=1)响应优先级高于低优先级命令(PRI=0);同样优先级,同时接收到的 命令,通常通道号越小优先级越高,但不建议以通道号大小来判断响应优先级;低优先级的非实时命令会根据 先请求先排队(同时请求通道号小的先排队)先装入内部FIFO进行排队并等待响应;高优先级的实时命令不会经过FIFO,直接参与仲裁响应。

12.1.3. 采样命令接口说明

采样命令由{优先级,通道号,捕获时长}三部分构成。优先级对应高优先级的实时采样和低优先级的非实时采样, 由对应通道的PRI信号控制;通道号为0~15,通道号在模块内部产生,直接对应不同通道的端口;捕获时长是一个 以ADC_CLK的周期为单位的计数值,来自对应通道的ACQx[3:0]信号, TACQx = (ACQx[3:0]+1)*TADC_CLK

注意:每个通道的捕获时长控制信号ACQx[3:0]直接反映ADC应用模块对每个通道的配置值。不要在已经发出采样命令却还没收到返回的采 样数据值之前去尝试改变这个配置值。

下面举例说明非实时采样命令,与实时采样命令的输入/输出时序。

../../../_images/4.png

图 12.4 非实时采样命令时序图

如上图所示非实时采样命令时序图,从ENx有效,到ACKx有效,中间会经过不确定的时钟周期数的时间,原因是:

  1. 多个通道同时发送采样命令,本模块不能及时响应。

  2. 如果内部FIFO已经满,则会通过ACKx信号延迟命令接收。

从ACKx有效到ENx无效只需要经历一个周期。ACKx有效意味着本采样命令已经被接收到命令FIFO,等待处理。

../../../_images/5.png

图 12.5 实时采样命令时序图

如上图所示实时采样命令时序图,从ENx有效,到ACKx有效,与非实时采样命令时序图一样,中间会经过不确定的时钟周期数, 原因是:

  1. 正在处理的低优先级非实时命令,需要先处理完这一个命令。

  2. 有其他的同样是高优先级的实时采样命令正在处理。

从ACKx有效到ENx无效只需要一个时钟周期。ACKx有效意味着本采样命令已经被接收并立即处理。

12.1.4. 采样数据返回接口说明

采样数据返回通道包括{DVAL, CH[3:0], DATA[11:0]},16个通道的数据通过共同的数据返回通道传递给不同的ADC 应用模块(例如RTP/GPAI/THS等等)。

ADC应用模块根据DVAL锁存有效数据,随后跟自己的有效通道号进行对比,如果 与自己的有效通道号匹配,则保留该数据,否则直接丢弃。(只取与自身通道号匹配的采样值)

由于ADC采样数据是从ADC模拟电路串行输入,并转化为并行数据输出,所以DVAL信号不存在连续多个时钟周期有效的情况, 都是一个个单周期的有效信号。数据返回通道的时序图如下图所示。

../../../_images/6.png

图 12.6 数据返回通道时序图

12.1.5. ADC校准功能说明

除了以上应用所需的采样功能,本模块还支持一个特殊的采样功能,就是ADC的硬件自动校准。这个功能本质上就是让 ADC对一个参考电平的中间值进行采样。理论上返回结果应该是 2^12/2=2048,但实际上总会存在偏差,那么硬件会计算 出此偏差,并把此偏差应用于对后续采样数据的校准。

默认情况下,本模块输出到ADC应用模块的DATA[11:0]都是经过校准后的结果。 软件也可以通过寄存器,对校准值进行修改,或者禁止硬件校准功能。

ADC校准的算法: DATA[11:0] = ADC_DATA[11:0] (CALVAL - 2048)。 其中DATA[11:0]是本模块经过校准后输出到ADC应用模块的数据,ADC_DATA[11:0]是ADC数据串并转换后未经过校准的数据, CALVAL则是CALCSR.CALVAL寄存器值。