量産前に適切なハードウェア検証とストレステストを実施することで、リコールや再設計にかかる数百万ドルを節約できます。このアプリケーションノートでは、Moku:Go ロジックアナライザ / パターンジェネレーター 入力を切り替えて対応する出力を記録することで、デジタル 4 ビット加算器を検証するために使用されます。さらに、クロック レートを変更してクロック周波数を上げてハードウェアのストレス テストを実施し、ユーザーが障害について理解できるようにします。
Moku:Go
Moku:Go は、2つのアナログ入力、2つのアナログ出力、16個のデジタル I/O ピン、およびオプションの統合電源を備えた1つの高性能デバイスに13台以上のラボ機器を組み合わせています。
イントロダクション
すべてのデジタル回路の中心には、電気信号のオン/オフを切り替えるために使用される基本的な半導体デバイスであるトランジスタがあります。 これらのスイッチのさまざまな配置は、コンピューティングの基本要素を構成する論理演算子に取って代わられます。 最も複雑な集積チップ (IC) であっても、これらの基本的な構成要素を使用して構築できます。 このアプリケーションノートでは、さまざまな論理ゲートを備えた4ビット加算回路を構築することで、デジタル回路の設計プロセスを体験します。 Moku:Go ロジックアナライザ/パターンジェネレーターを利用して設計を検証します。 その後、Moku:Go MATLAB API を利用して検証プロセスをスケールアップおよび自動化し、ストレス テストを実行して回路の最大クロックレートを決定します。
回路設計
4ビット加算器は、4つの完全な1ビット加算器回路で構成されています。 各加算器には2つのデータ入力 An と Bn が含まれており、1つは入力 Cin を伝送します。 論理演算の後、入力 Sn の合計が生成され、出力 Cout が送信されます。 論理ゲートには、3つの既製論理集積回路 (IC) 74LS86、74LS08、および 74LS32 が XOR、AND、OR ゲートに使用されました。 論理 IC の詳細なレイアウトと論理ゲート間の配線接続は、それぞれ図1 (a) と (b) に示されています。

図1: (a) AND、XOR、OR ゲートとして使用されたロジックIC。 (b) 1ビット全加算器を構築するロジック。
4ビット加算器回路は、Coutポートを下位桁加算器から次の有効桁の Cinに接続することによって構築されました。 最下位桁の Cin は一定の低いままのままです。 最上位加算器 (C3) の Coutは、システム全体の最上位桁を表すために使用されました。 4ビット加算器は、ポート A0-3、B0-3を介して2つの4ビット数値を受け取り、結果をピン S0-3に提供しました。 両方の入力が 0b1111 に設定されている場合、C3は High になります。 それ以外の場合は、ロー状態のままです。 図2は、回路図 (a) とブレッドボード上に構築された実際の回路を示しています。

図2: (a) 4ビット加算器の回路図 (b) ブレッドボードのレイアウト。
Moku:Go のロジックアナライザを使用したシステム検証
計測器の接続
回路を検証するために、4ビット加算器の入力と出力を Moku:Go 16ピン デジタル I/O に接続しました。詳細な接続とピン配置マップを図3に示します。

図3: Moku:Go デジタル I/Oと4ビット加算器の間の詳細な接続マップ。
単一入力テスト
まず、入力レベルを手動で切り替えて回路をテストしました。 図4では、ロジックアナライザの出力 (ピン0~8) は 0b0101 (A)および0b0110(b)に設定されており、10進数で5+4に変換されます。 ピン9~12から0b1001を読み取ります。これは 10進数の9に対応します。 ピン10のキャリーアウト信号は Low であり、オーバーフローがないことを示していました。

図4: 回路は入力ロジックレベルの手動切り替えで最初にテストされた。
ランダムパターンとストレステスト
テストセットをスケールアップし、限界値を把握するために、Moku:Go Logic Analyzerのランダムパターン生成機能を利用しました。長さ1024のランダムパターンを、62.5Hzから62.5MHzまでの可変クロック周波数で生成しました。生成された出力パターンと入力パターンは、MATLABで記録・解析しました。

図5: 回路のストレス テストにランダムに生成されたパターンが使用された。
自動検証のための MATLAB スクリプト
自動検証スクリプトでは、各加算器内の論理ゲートの動作が MATLAB 組み込み論理演算子を使用して明示的にシミュレートされました。 次のコード スニペットは、PIN 1と2でランダムに生成された信号を読み取り、全加算器1(FA1) の S0と C1の予想される出力を計算します。
%%%FA1 の i = 1:n S0(i) = xor(xor(data(i,2),data(i,3)),Cin); C1(i) = or(and(Cin,xor(data(i,2),data(i,3))),and(data(i,2),data(i,3))); end
計算された C1は、次のコードブロックで使用され、次の FA の動作をシミュレートします。
%%%FA2 の i = 1:n S1(i) = xor(xor(data(i,4),data(i,5)),C1(i)); C2(i) = or(and(C1(i),xor(data(i,4),data(i,5))),and(data(i,4),data(i,5))); end
回路全体の最終的なヒット率は、次のコードブロックによって計算されました。
hit = 0; の i = 1:n if data(i,10)==S3(i) && data(i,11)==S2(i) && data(i,12)==S1(i) && data(i,13)==S0(i) hit = hit +1; end end hit_rate = hit/n*100;
4ビット加算回路の最終的なヒット率をクロック周波数の関数としてプロットしたものが図6です。ヒット率はy軸にヒット率(%)で表され、x軸にはヘルツ(Hz)単位で測定されたクロック周波数が表示されています。回路は1.25MHzまで安定していました。クロック周波数がさらに上昇すると、パフォーマンスが大幅に低下することが確認されました。このことから、回路は31.25Hz~1.25MHzの周波数範囲で安定して動作していたと結論付けることができます。

図6: クロック周波数の関数としての4ビット加算器のヒット率。
結論
チュートリアルのパート2では、MathWorks の Simulink と HDL Coder を利用して Moku:Pro 上で DSP モデルを構築、検証、展開する方法について説明しました。 MATLAB のみのアプローチと比較して、Simulink では、DSP ライブラリを介して DSP を設計し、固定小数点モデルを使用してモデルを最初から構築するオプションが提供されます。 これは、複雑な DSP システムを構築する場合におすすめです。
ご質問等ございますか?印刷可能なバージョンが必要ですか?
当社までご連絡ください: support@liquidinstruments.com




