我试图评估集成在各种PIC微控制器上的A/Ds的最大物理速率(Nyquist性能极限)。
但是,要进行计算,需要我没有在数据表中显式说明的参数,特别是Tacq、Fosc、TAD和除数参数。
我先做了一些假设,但如果能进行一次健康检查会很有帮助--我是否正确地进行了最大物理速率的计算?
仅为说明起见,我采取了最简单的PIC10F220,有一个模数转换器。这是为了特别关注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]所以:
- 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性能极限时对数据表的正确分配/解释吗?
谢谢,
发布于 2010-05-01 08:15:38
您将无法在8条指令中完成很多处理,但是假设您只是在做一些简单的事情,比如将传入的样本存储到缓冲区,或者检测到阈值,那么您的分析就会看起来很好。
发布于 2010-05-01 12:09:04
我正在考虑的实际芯片是dsPIC33FJ128MC804 (16 b A/D)或dsPIC30F3014 (12 b A/D)。
这是一个重要的区别;dsPIC ADC同时支持多通道的ping pong传输,因此可以将每个示例的有效软件开销降到最低。这使得计算结果有点不同。您需要根据采样速率和DMA缓冲区大小确定采样缓冲区中断之间的时间;即处理每个缓冲区所需的处理时间。如果你使用的是微芯片的DSP库,它给出了每种算法的精确循环时间公式,而块处理比逐个样本处理要有效得多。
我的最后一个项目是在一个dsPIC33上,在48 two和32字采样缓冲器上采样两个通道(给667 of处理每对缓冲器)。因此,软件处理完全独立于采样,因为通过使用DMA,它们是同时进行的。
https://stackoverflow.com/questions/2749217
复制相似问题