1

我正在尝试评估集成在各种 PIC 微控制器上的 A/D 的最大物理速率(奈奎斯特性能限制)。

但是,要进行计算需要我在数据表中没有明确说明的参数,特别是 Tacq、Fosc、TAD 和除数参数。

我已经进行了一些假设,但进行健全性检查会有所帮助——我是否正确地进行了最大物理速率计算?

仅出于说明目的,我采用了具有 ADC 的最简单的 PIC10F220。这是为了特别关注 Tacq、Fosc、TAD 和除数参数的解释,而不是建议在这个非常基本的芯片上可以实现任何实际功能。(这是克利福德在下面评论中的观点。)

计算

Nyquist Performance Analysis of PIC10F220
- Runs at clock speed of 8MHz.
- Has an instruction cycle of 0.5us  [4 clock steps per instruction]

所以:

- Get Tacq = 6.06 us  [acquisition time for ADC, assuming chip temp. = 50*C]
                      [from datasheet p34]

- Set Fosc := 8MHz     [? should this be internal clock speed ?]
- Set divisor := 4     [? assuming this is 4 from 4 clock steps per CPU instruction ?]
- This gives TAD = 0.5us          [TAD = 1/(Fosc/divisor) ]
- Get conversion time is 13*TAD   [from datasheet p31]
- This gives conversion time 6.5 us
- So ADC duration is 12.56 us   [? Tacq + 13*TAD]

假设在下一个样本之前实时完成了 10 条简单的加载/存储/阈值指令(这只是一个存根——重点是计算的其余部分):

- This adds another 5 us   [0.5 us per instruction]
- To give total ADC and handling time of 17.56 us    [ 12.56us + 1us + 4us ]
- before the sampling loop repeats  [? Again Tacq ? + 13*TAD + handling ]

- If this is correct, then the max sampling rate is 56.9 ksps   [ 1/ total time ]
- So the Nyquist frequency for this sampling rate is 28 kHz.    [1/2 sampling rate]

这意味着该系统的(理论)性能——带有假设实时处理代码的芯片 A/D——适用于带宽限制为 28 kHz 的信号。

在获取 Tacq、Fosc、TAD 和除数参数并使用它们来获得该芯片的最大物理速率或 Nyquist 性能限制时,这是对数据表的正确分配/解释吗?

谢谢,

4

2 回答 2

2

您将无法在 8 条指令中进行大量处理,但假设您只是在做一些简单的事情,例如将传入的样本存储到缓冲区或检测阈值,那么您的分析看起来不错。

于 2010-05-01T08:15:38.727 回答
1

我正在考虑设计的实际芯片是 dsPIC33FJ128MC804(带 16b A/D)或 dsPIC30F3014(带 12b A/D)。

这是一个重要的区别。dsPIC ADC 同时支持多个通道的 ping-pong DMA 传输,因此可以最大限度地减少每个样本的有效软件开销。这使得计算有点不同。您需要根据采样率和 DMA 缓冲区大小确定采样缓冲区中断之间的时间;这就是您必须处理每个缓冲区的处理时间。如果您使用的是 Microchip 的 DSP 库,它会为每个算法提供精确的周期时间公式,并且块处理比逐个样本的处理效率要高得多。

我的上一个项目是在一个 dsPIC33 上,它有两个以 48KHz 采样的通道和 32 个字的采样缓冲区(处理每对缓冲区的时间为 667us)。因此,软件处理完全独立于采样,因为通过使用 DMA,它们同时发生。

于 2010-05-01T12:09:04.683 回答