PSoC5LP Prototyping Kit (25) --- SPDIF_Tx と DMA (13)
DFB (Digital Filter Block) コンポーネントへの入出力を全て DMA で行なうプログラム「spdif_dma」ができました。 近日中に公開したいと思います。
トップレベルの回路図を下に示します。
必要な DMA チャネルの数を減らすために、Filter コンポーネントのカスタマイザで生成された DFB プログラムに変更を施したものを DFB コンポーネントに読み込み、「L/R インターリーブ (オルタネート) モード」とでも呼ぶべき動作をさせています。
上の回路図では、DMA コンポーネントが DMA0 / DMA1 / DMA2 / DMA_tx0 の合計 4 チャネルありますが、DMA0 から DMA2 までの 3 個は「フル DMA モード」の場合に有効になり、DMA_tx0 は「プログラムド I/O モード」の時に有効になります。
DFB の動作を変更しているので、Filter コンポーネントを使った場合のプログラムとは多少の違いがあります。
フィルタの特性も、外部の等リプル FIR フィルタ設計プログラムを使い、等リプル近似で設計した「カスタム・フィルタ係数」を Filter コンポーネントに読み込んで得られた係数に差し替えてあります。
Filter コンポーネントでカスタム係数を読み込んだ際に表示される周波数特性を下に示します。 (DC ゲインは +9 dB)
spdif_dma プログラムを実行して、WaveSpectra で観測した周波数特性を下に示します。
通過域では明瞭ではありませんが、減衰域は設計通りの等リプル特性となっていることが分かります。