我的目标是从示波器开始制造基于Pi的仪器。因此,我阅读了



哪些RPI可用的模数转换器的答案?
如何连接模数转换器(ADC)? />似乎可以以非常低的采样率读取模拟输入,但是我想知道是否可以达到每秒大量采样的速率。如果有可能,那么连续数据采集可能会很困难,因此我可以不用它。皮会为此配备不足吗?我想先观察连接到Pi的显示器上的波形,然后再观察我的移动设备上的波形(而Pi则向它们发送无线数据)。

我对片上系统的经验告诉我,这些系统在连续的I / O上可能很容易饱和。 Pi也是如此吗?

#1 楼

让我们对示波器的功能进行高层次的概述:首先,我们有模拟前端。在这里,我们为探头提供了阻抗匹配网络(但探头也必须具有电容匹配部分),衰减部分(非常重要,因此我们不会使ADC过载或让高压进入),触发并连接至模数转换器。我不会过多地谈论这一点,因为我不太喜欢模拟东西,但最重要的是:在这一部分,我们无法用Pi做任何事情。

接下来,我们有了模数转换器部分。每个通道至少需要一个ADC。更多可以用于更高的采样率。在传统范围内,ADC连接到ASIC或FPGA器件。之所以使用它们,是因为传统的计算机不够实时(并且不能将实时与快速混淆!)来处理ADC提供的数据。然后将该数据存储到某种RAM中。有些设备将使用静态RAM,而另一些设备将使用动态RAM。通常,SRAM方法是更传统的方法,并且在大型制造商中也可以看到,而DRAM的使用似乎是在较便宜的中国设计单位中看到的新方法。

RAM的数量及其速度将决定可以存储多少样本。几乎总是ADC是8位ADC,因此对于一个兆采样,我们将需要8 b乘以100000 = 8 Mb或1 MB RAM。对于一个MSa / s,我们需要可以这种速度工作的RAM。今天,这应该相对容易实现。 FPGA通常直接驱动RAM,并负责在其中存储数据。它的工作方式是在仍然有空房间的情况下填充示例内存,然后在空间满时将其覆盖。当每个通道有多个ADC时,FPGA将对其进行设置,使其首先开始采样,然后在下一个时钟秒开始,依此类推。当他们完成采样后,第一个ADC的采样将首先被写入存储器,然后是第二个ADC的采样。这将使ADC看起来比实际采样的速度快。

本节的下一点是采样时间应等距。这是在示波器中使用PC的主要问题,也是FPGA和ASIC占主导地位的原因。如果某些样本迟到或过早,则屏幕上显示的图像将不正确。

在这一部分中,我们看到了Pi的首次可能使用。如果采样率足够低,我们也许可以直接从Pi驱动ADC,并将其结果存储在Pi的RAM中。我们能走多快取决于ADC与Pi的连接方式以及Pi进行I / O的方式。根据我的阅读,Pi的I ^ 2C端口的最高速度为150 MHz(在GNU / Linux中实现这一难易程度是另一个问题),而最高的标准速度为5 MHz,而SPI的最高速度为Pi是250 MHz。我不确定SPI的最高标准速度是多少,但我希望它最大可以在100 MHz范围内。

因此,从理论上讲,我们在Pi上具有足够的速度来在低MSa / s范围内运行ADC。我感觉RAM速度在这里不会成为问题,但是我没有任何数据可以备份。如果真是这样,那么我们将比通常的范围有一个很大的好处:将有大量的捕获内存可用。例如,如果我们将32 MiB的RAM专用于程序用于样本存储,而我们有两个通道,那么每个通道将有16 MiB的空间,或者每个通道多于134 Mb或134 megasample。即使到了今天,许多示波器也无法做到这一点。

缺点是我们需要对操作系统进行大量修改,才能在此处获得准确的采样。我没有使用实时Linux的经验,所以我不知道这会多么容易。

无论如何,让我们继续下一步。因此,我们有一个填充RAM的采样系统。下一部分是触发器。触发器与屏幕刷新率密切相关。它基本上所做的是找到一个有趣的样本并将其保存在内存中。示波器触发时,它将在触发后继续采样,直到填满内存,然后将其发送并进行处理并显示在屏幕上。在处理数据时,采样系统(如果经常冻结)并等待数据显示。这就是为什么低端示波器的刷新率较低,而高端示波器将具有特殊的高刷新率显示,并且花费更少的时间等待数据被显示。

在本节中,通常是另一个将对样本进行信号处理的ASIC或FPGA,如果示波器支持,则可以进行任何协议解码并实际驱动显示器本身。

从我可以看到的那部分来看,Pi确实可以发光。它可以驱动漂亮的1920x1080显示屏(示波器通常在800x600像素以下),并且可以很好地进行协议解码。我能看到的唯一问题是速度以及处理过程如何影响延迟时间。如果我们的刷新率很低,那么我们可以得到一个非常好的逻辑分析仪。示波器进行输入和采样,并将采样数据发送到PC,以进行主机应用程序的处理。基本上,Pi也可以完成类似的操作。通常,PC应用程序的设计不当,并且充满错误。下一个不好的部分是USB本身。它被宣传为快速总线,在“高速”模式下可以达到480 Mb / s。事实是,找到能够支持如此高速度的USB控制器非常罕见(平均速度似乎比我看到的速度高出约250 Mb / s),并且它作为协议并不十分适合任何实际应用。时间申请。首先,它在集线器上的所有设备之间共享(Pi仅具有一个连接了以太网+ USB集线器的USB端口),具有相对较高的开销(与SPI相比),并且具有较高的延迟(请记住,速率为1 MSa / s每个样本仅持续1 µs,因此我们必须在板上有内存,因为我们无法通过USB实时发送样本。最终,使用USB将使数据采集成为其他USB示波器的一部分,这就是我们失去使用Pi的任何好处:传统台式计算机更加普遍,更快,更容易获得并且具有更好的USB功能。

编辑
我阅读了Gert van Loo的一篇相对较新的文章,据他介绍,Pi的I ^ 2C的实际速率为400 kHz,SPI的实际速率为20 MHz。 >

评论


那么,您的答案的最高点是什么?这更像维基。

– Piotr Kula
13年1月29日在12:56

@ppumkin是的,像这样的问题需要这样的答案。我们没有提供有关所需设备预期性能的足够信息,因此,假设Pi可以进行采集,那么对于足够低的频率,底线是“是”。如果Pi不做采集,那么使用Pi会因为USB性能不佳而毫无意义。

– AndrejaKo
13年1月29日在16:00

#2 楼

我们发现Raspberry Pi是运行此类项目所需软件的绝佳平台。问题是首先将信号放入RPi,并在运行O / S和应用软件的同一CPU上执行高速无抖动实时信号捕获。我们的解决方案是BitScope Raspberry Pi示波器,该示波器将BitScope(用于高速混合信号波形捕获)与运行所有必需软件的Raspberry Pi配对。



评论


无耻的插头=)

– lenik
2013年9月23日23:37

棒极了。但这与答案无关!还是可以证明Pi不能作为示波器使用?

– Piotr Kula
2013年9月25日上午8:56

Pi并非“太弱”,但它不具有(高速)波形采集所需的I / O功能。用原始问题的话来说,就是“为此配备不足” :-)

– BitScope
2013年9月25日在12:57

#3 楼

N.B:这更像是一个“大声思考”的文本,而不是真正的答案。

这个想法在不久前也浮现在我的脑海,我仍然喜欢这个总体想法!

据我所知,高端示波器是15年来(甚至更长),只是带有大量专用高速I / O的计算机(PC)。我认为,当将类似的I / O设计/连接到RPi时,结果可能会令人惊讶。

恕我直言,做到这一点的一种好方法是让RPi仅存储和显示收集的数据(例如通过USB端口接收),并让一些专用硬件进行高速测量。然后,RPi也可以根据用户输入或类似的东西来控制此高速测量单元。

在RPi的第一个版本中,USB端口存在某些问题,我还没有最近搜索了是否解决了这些问题。我还听到了一个谣言,即RPi的新2.0版本应该没有这些问题,但是我也没有检查这个谣言。

我认为没有任何外部(专用)硬件的结果是有限的,因为I / O端口数量以及整个OS都在上面运行的事实(这限制了实时选项)。除非您打算编写自己的操作系统?

为此目的,例如使用I2C芯片将没有足够的速度来完成真正出色的工作。 SPI已经提供了更多的带宽(从我的头顶到最高100Mhz),但是我会选择USB并根据需要压缩,或者在发送数据之前使用一些好的编码方案来获得更多的带宽。

所以我想有可能,但是需要添加到RPi的硬件​​要比RPi本身昂贵得多。

最后但并非最不重要的(在我停止对此做白日梦之前)主题)如果在互联网上进行搜索会导致某些小组已经忙于执行此操作,我不会感到惊讶。

#4 楼

答案是肯定的。

它足够强大!但仅适用于某些频率-正如已经指出的那样,由于其局限性。

SO! ->您必须问自己要测量的内容吗?


因为您没有明确询问要测量的内容,所以答案很容易猜测。
所以让我向您介绍替代方案和建议。也许您可以提出一个更具体的问题,而不是Raspberry,而不是普通的振荡器主题!

振荡器的价格范围从简单的低频到5USD,然后其他人可以处理到50Ghz + -那和一所小房子一样贵! 75,000USD-100,000USD!

我认为Raspberry足以测量低于千兆的频率,例如433MHz无线信号,低速CPU总线通信,TTS / UART,I2C调试-真的不多。而且较高的频率将不会真正准确,因为Raspberry在设计上无法运行实时OS。因此,您将需要从操作系统(或如上所述的外部实时设备开始,那又有什么意义呢?)

但是如果您真的想测量信号,那么您可以购买一个真正的价格合理的设备,与Raspberry规格相当。但是已经设计精良,功能齐全,设计上确实很成熟,并且证明了在业余爱好者环境中很方便。

这里不需要重新发明轮子。例如,单价低于100美元的DSO Nano。



200美元以下的DSO Nano四通道



然后,什么是Raspberry或类似设备无法做的呢?

又花了一笔不小的钱...




/>最高110Ghz,带有硬盘驱动器,可存储数据,极其精确的模拟和触发器。
可测量Buuetooth,WCDMA / EDGE / 3G / 4G,无线A / B / G / N 2.4Ghz / 5Ghz,SATA,AGP / PCI / PCI-Express,原始卫星信号,硬盘驱动器通道,以太网等。 。


评论


我可以像Rohde&Schwarz一样让我的RPi LOOK看起来很漂亮,也许在山上,案例mod :-)

– ikku
2013年1月29日12:56



大声笑!那将是眼睛酸痛的景象:)

– Piotr Kula
13年1月29日在12:58

#5 楼

您可以将我们的TiePie工程Handyscope HS5示波器/任意波形发生器之一连接到USB端口。可下载为Raspberry Pi编译以同时使用一个或多个示波器的库。仪器使用自己的定时和存储器,因此不会造成性能损失。所以是的,Pi足以用于示波器项目。



示波器的关键规格:2通道,14位,500 MS / s,250 MHz带宽,20 MS / s 14位连续无间隙流传输,每个通道32 MS内存,1 ppm时基精度。

1 µHz至30 MHz波形,240 MS / s,14位,64 MS内存,-12至12 V输出(24 Vpp),1 ppm时基精度。

评论


你好。将来,请披露您与所宣传产品的隶属关系。谢谢。

–user46
13年1月29日在12:16

拜托我!看价格!看起来不错。不在我的预算范围内。

– Piotr Kula
13年1月29日在13:59

不了解从属关系披露的必要性。更改了文字以表明我隶属于TiePie工程。

– Marthein
13年1月30日在10:12

#6 楼

最好的机会是尝试sigrok及其前端libsigrok是否可以在Pi上编译,然后购买一些兼容的示波器硬件。这样,您可以每秒捕获多达24兆样本的信号。有了足够的知识,您就可以以任何需要的方式自定义软件,包括无线传输到移动设备。

#7 楼

有人谈论西格罗克。我认为最接近的方法是将使用成熟的CY7C68013A与驱动程序EZ-USB FX2LP结合使用。在台式机上,它不能与Weezy一起使用,但在Jessy上,可以很好地工作。这是关于24 Msps的已知限制。
我在考虑使用摄像头界面的另一种方法。该接口可以管理2.1兆像素和每秒30帧,这意味着它可以以超过60兆“样本” /秒的速度将数据传输到GPU。声音比20MHz的SPI或USB有用。

评论


这些是数字接口,因此除非您用高速ADC的输出驱动它们,否则不会产生示波器。大多数实用的解决方案可以更快地采样数量级,但不能连续采样-这更适合常见问题。

–克里斯·斯特拉顿(Chris Stratton)
15年1月27日在17:44



#8 楼

如果您不介意局限于音频,我会使用便宜的MCP3202 12位双通道A / D转换器通过spidev在pi上进行采集,并使用pydatascope来显示通过TCP套接字通过以太网传递的数据。 Pydatascope还可以用作频谱分析仪!

我对pydatascope开源代码做了相对琐碎的更改,使其具有双通道,主要是因为这很容易,而且并不是我真正需要的。 br />如果您有任何疑问,请发布后续消息或直接邮寄给我,我们将很乐意为您提供帮助。

评论


您未经许可使用了我拥有版权的图像。请从您的网站上删除受版权保护的图像。

–詹姆斯·菲利普斯(James Phillips)
2014年1月16日,0:44

感谢您的回答@James Philips。我从您的答案中删除了该图片。它正在等待审查。请注意,我不是添加它的人。您能否提供您的网站地址,其中包含有兴趣的人浏览的图片?

–niw3
2014年1月21日在10:48