スピーカアレイ駆動システム 動作確認(2) FPGA内蔵FIFOを使う場合

FPGA

FPGAのハードウェアARRAY_DRIVER_FIFO8to64.vhdにより合成しました。このハードウェア構成は,FPGA内部にFIFOバッファを構築しています。このとき,PC → USB → FT232H → FPGAという経路でのデータを転送し,出力波形がどうなるかを確認をしました。3MHzのオーディオサンプリングクロックに同期して0, 1の反転を繰り返す波形が出力することを期待しています。

設定と条件

  • 送信データ
    FWriteToFT232H_Test.cppを使用し,8192×2バイトのデータを送信
    送信データは,全てのチャンネルが3MHzのオーディオ信号のサンプリングクロック毎に反転するパターンになっている。
	 case 1: // 全チャンネルが同じ位相で反転を繰り返す信号
		 for (int i = 0;i < N_CH * N_BYTE; i++) {
			 data[i] = 0xFF; // 全てのチャンネルのデータの全ビットを1に
			 data[N_CH * N_BYTE + i] = ~data[i]; // 半周期経過したら反転
		 }
		 break;
  • FPGAの設定
    ハードウェア記述:ARRAY_DRIVER_FIFO8to64.vhd
     内蔵FIFOバッファの容量は16kByte
     ピン配置は,以下の図のとおり
MachXO2_BB基板のヘッダピンへの信号割り当て
J2,J4ヘッダピン
J1,J3ヘッダピン
  • 波形の観測
    スピーカ駆動信号のチャンネル0のビット0であるdrive[0][0],FT232Hへのフラグ信号RXFの波形を観測する。
    波形の観測にはUSB接続計測モジュールADALM2000とオシロスコープソフトScopyを使用した。

測定

1)CH1:drive[0][0] ,CH2:RXF

Scopyのオシロスコープモードによる観測波形,CH1:drive[0][0], CH2:RD

観測波形は図のようになりました。これからわかることは

  • 出力drive[0][0]の周期は安定している(ようだ)
    これは通信過程でのデータ欠落や遅延によるデータ送信間隔のばらつきがFIFOにより吸収されたためと考えられます。ただし,周期が安定しているというのは目視による判断です。観測時間の長さを大きくし,周波数スペクトルを観測する必要がありそうです。
  • RXFは,断続的に1,0を繰り返している
    RXFは連続して0になっているのではなく,間欠的に1となっています。これは,USBを介するデータ転送が途切れる時間帯があることを示しています。

結論

出力波形のジッタは見られなくなりました。しかし,今回の動作確認で使ったオーディオ信号のデータ量は,8192×2バイトで,これが64ビット・サンプリングクロック周波数3MHzの信号になっている。つまり,時間サンプル数は,
8192×2/64 = 256
であり,時間にしてわずか256/3μs ≒ 85μsにすぎない。

今後は,長時間継続するオーディオ信号を使った動作確認と評価が必要となる。そのためには,テスト信号の発生プログラムを作り直すことになるだろう。

コメント