Embedded 计算微控制器上ADC的最大物理速率(奈奎斯特性能限制)

Embedded 计算微控制器上ADC的最大物理速率(奈奎斯特性能限制),embedded,microcontroller,pic,analog-digital-converter,Embedded,Microcontroller,Pic,Analog Digital Converter,我试图评估各种PIC微控制器上集成的A/Ds的最大物理速率(Nyquist性能极限) 但是,要进行计算,需要数据表中没有明确说明的参数,特别是Tacq、Fosc、TAD和除数参数 我已经做了一些假设,但这有助于进行健康检查——我是否正确地进行了最大物理速率计算 仅出于说明目的,我采用了最简单的PIC10F220,它有一个ADC。这是为了特别关注Tacq、Fosc、TAD和除数参数的解释,而不是建议在这个非常基本的芯片上实现任何实用功能。(这是Clifford在下面评论中的观点。) 计算: Nyq

我试图评估各种PIC微控制器上集成的A/Ds的最大物理速率(Nyquist性能极限)

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

我已经做了一些假设,但这有助于进行健康检查——我是否正确地进行了最大物理速率计算

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

计算

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

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

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

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


谢谢,

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

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

这是一个重要的区别;dsPIC ADC支持同时进行多个通道的乒乓DMA传输,因此可以将每个采样的有效软件开销降至最低。这使得计算结果有所不同。您需要根据采样率和DMA缓冲区大小确定采样缓冲区中断之间的时间;这就是处理每个缓冲区所需的处理时间。如果您使用的是Microchip的DSP库,它会为每个算法提供精确的循环时间公式,并且块处理比逐样本处理效率更高


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

考虑到部分微小的内存(16字节的SRAM)和有限的I/O(它总共只有6个管脚,其中只有三个管脚能够进行数字输出),一旦有了这些样本,您将如何处理它们?您无法存储样本,也无法以捕获样本的速度将样本输出到其他设备(因为位碰撞是您唯一的选择)。我很清楚,这些设备并不适用于需要这种性能的应用。您的实际性能、应用要求和预算是什么?“这比使用外部A/D芯片更可取。”:我想知道的是外部?那部分不能内置ADC吗?您所建议的部件的性能已经不如大多数SPI或I2C ADC设备。@Clifford:选择上面示例中的PIC10F220只是为了浏览简单的示例,以检查我在进行这种奈奎斯特分析时是否正确解释了Tacq、Fosc、TAD和除数。我正在考虑设计的实际芯片是dsPIC33FJ128MC804(具有16b A/D)或dsPIC30F3014(具有12b A/D)。Re:“比使用外部A/D芯片更可取”--我的意思是PIC选项很有吸引力,因为如果它合适的话,它将意味着取消专用A/D芯片和独立的专用DSP,以及这种设计所需的所有支持芯片。该设备只有16字节的SRAM-缓冲不多!它还具有有限的I/O;位敲出数据至少需要8个指令周期。(+1)请欣赏详细的硬件特定答案。然而,我希望有人能完成计算步骤,验证/发现我使用的假设中的缺陷。我的兴趣与硬件无关——这是关于我是否真的可以得出结论,A/D的理论最大性能是一个28kHz的带限信号。不同的处理器以不同的方式工作,因此每次的计算都会不同——参考数据表。问题是,如果采样中存在软件开销,例如中断或非确定性控制流,将导致采样的非周期性。这对信号保真度来说可能是灾难性的。如果您试图以尽可能高的采样率进行采样,那么这种影响将是显著的。DMA缓冲是解决这个问题的一种方法,当需要相对于处理器时钟频率的高采样率时,应该使用DMA缓冲。说得对。但是,考虑到您关于软件开销的观点,您如何确定给定a/D的性能范围?您如何估计它可以处理的最高带宽?@AKE:最大物理速率由您计算的硬件和时钟决定。如果这是自由运行而不是软件触发,则速率将完全是周期性的,但是如果您必须对每个样本执行处理,则处理必须在样本时间内完成,否则您将无法跟上,未处理的样本将被覆盖。如果您的软件触发采样,您不会错过采样,但它们可能是非周期性的、不确定的或非特定频率的。@AKE:如果您没有DMA,则可能会触发
- 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]
- 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]