オシロスコープの概要を見てみましょう。
まず、アナログフロントエンドがあります。ここには、プローブ用のインピーダンスマッチングネットワークがあります(ただし、プローブにもキャパシタンスマッチング部分が必要です)、減衰セクション(非常に重要なので、ADCに過負荷をかけたり、高電圧を入れたりしない)、トリガーおよび接続アナログからデジタルへのコンバータ。私はこれについてあまり語りません。なぜなら、私はアナログのものがあまり得意ではないからです。しかし、結論は次のとおりです。このセクションではPiでできることは何もありません。
次に、アナログからデジタルへのコンバーター部分があります。各チャネルに少なくとも1つのADCが必要です。より高いサンプルレートには、より多くを使用できます。従来のスコープでは、ADCはASICまたはFPGAデバイスに接続されます。従来のコンピューターでは、ADCが提供するデータを処理するのに十分なリアルタイムではないため(リアルタイムと高速を混同しないでください!)、これらが使用されます。そのデータは、ある種のRAMに保存されます。静的RAMを使用するデバイスもあれば、動的RAMを使用するデバイスもあります。一般に、SRAMアプローチはより伝統的で有名メーカーで見られますが、DRAMの使用は安価な中国設計のユニットで見られる新しいアプローチのようです。
RAMの量とその速度により、保存できるサンプル数が決まります。ほとんどの場合、ADCは8ビットADCであるため、たとえば1メガサンプルでは8 b×100000 = 8 Mbまたは1 MBのRAMが必要になります。1 MSa / sの場合、その速度で動作できるRAMが必要です。今日、それは比較的簡単に入手できるはずです。FPGAは通常RAMを直接駆動し、RAMにデータを保存します。空きスペースがまだある間にサンプルメモリを満たし、満杯になると上書きします。チャネルごとに複数のADCがある場合、FPGAは、最初にサンプリングを開始し、次に次のクロックで2番目などのようにそれらを設定します。サンプリングが終了すると、最初のADCのサンプルが最初にメモリに書き込まれ、次に2番目のADCのサンプルがメモリに書き込まれます。これにより、ADCが実際よりも速くサンプリングしているように見えます。
このセクションの次のポイントは、サンプルが時間的に等距離であることです。これは、オシロスコープでPCを使用する場合の主な問題であり、FPGAとASICが主流である理由です。一部のサンプルが遅いまたは早い場合、画面に表示される画像は正しくありません。
この部分では、Piの最初の可能な使用方法を確認します。サンプルレートが十分に低い場合、ADCをPiから直接駆動し、その結果をPiのRAMに保存できる場合があります。どれだけ早く処理できるかは、ADCがPiに接続されている方法と、PiがそのI / Oを実行する方法によって異なります。私が読んだことから、PiのI ^ 2Cポートの最高速度は150 MHzです(GNU / Linuxで簡単に達成できるかどうかは別の質問です)が、最高の標準速度は5 MHzで、SPIの最高速度はPiは250 MHzです。SPIの最高標準速度が何であるかはわかりませんが、最大で100 MHzの範囲内になると予想しています。
したがって、理論上、低MSa / s範囲でADCを実行するのに十分な速度でPiを使用できます。ここでは、RAMの速度は問題にならないと感じていますが、それをバックアップするデータはありません。その場合、通常のスコープに比べて大きな利点があります。非常に大量のキャプチャメモリが利用可能になります。たとえば、32 MiBのRAMをサンプルメモリ専用のプログラムに割り当て、2つのチャネルがある場合、各チャネルに16 MiB、またはチャネルごとに134 Mbまたは134メガサンプルより少し多くなります。これは、今日でも多くのオシロスコープにはないものです。
欠点は、ここで正確なサンプリングを取得できるように、オペレーティングシステムに大幅な変更が必要になることです。リアルタイムLinuxの経験がないので、これがどれほど簡単かはわかりません。
とにかく、次のステップに進みましょう。したがって、RAMをいっぱいにするサンプリングシステムがあります。次の部分はトリガーです。トリガーは、画面のリフレッシュレートと密接に関連しています。基本的には、興味深いサンプルを見つけてメモリに保持します。スコープがトリガーされると、スコープをトリガーし、メモリがいっぱいになるまでサンプリングを続け、送信して処理し、画面に表示します。データの処理中に、サンプリングシステムが頻繁にフリーズし、データが表示されるのを待っている場合。そのため、ローエンドスコープのリフレッシュレートは低くなりますが、ハイエンドスコープのリフレッシュレートは特別に高くなり、データが表示されるまでの待機時間が大幅に短くなります。
このセクションには、サンプルで信号処理を行う別のASICまたはFPGAがあります。スコープがサポートしている場合はプロトコルをデコードし、ディスプレイ自体を実際に駆動します。
これは、私が見ることができるものから、Piが本当に輝くことができる部分です。それは素敵な1920x1080ディスプレイを駆動でき(スコープは多くの場合800x600未満の土地にあります)、プロトコルデコードを非常にうまく行うことができます。私が見ることができる唯一の問題は、速度と処理がホールドオフ時間に与える影響です。リフレッシュレートを低くすると、非常に優れたロジックアナライザーを使用できます。
最後に、USBオシロスコープと、このタイプのプロジェクトでUSBが一般に悪い理由について説明します。従来のUSBオシロスコープは、入力とサンプリングを行い、ホストアプリケーションが存在する処理のためにサンプリングデータをPCに送信します。基本的に、Piでも非常によく似たことが行われます。通常、PCアプリケーションは適切に設計されておらず、バグでいっぱいです。次の悪い部分はUSB自体です。「高速」モードで480 Mb / sを実行できる高速バスとして宣伝されています。真実は、そのような高速をサポートできるUSBコントローラを見つけることは非常にまれであり(平均は私が見たものから約250 Mb / sであると思われる)、プロトコルとしては実際のどんなものにもあまり適していないということですタイムアプリケーション。まず、ハブ上のすべてのデバイスで共有されます(Piには、Ethernet + USBハブが接続されるUSBポートが1つしかありません)。比較的高いオーバーヘッドがあり(SPIと比較した場合)、待ち時間が長い(1 MSa / sで各サンプルが1 µsだけ続くことを思い出してください。サンプルをリアルタイムで送信できないため、ボードにメモリが必要です) USB経由)。最後に、USBを使用すると、データ収集部分がスコープの単なる別のUSBオシロスコープになります。ここで、Piを使用するメリットを失います。
編集 Gert van Looによる
比較的最近の投稿を読んだことがあり、彼によると、PiのI ^ 2Cの現実的なレートは400 kHzで、SPIの場合は20 MHzです。