afw.h

説明を見る。
00001 /** \file afw.h
00002  *  \brief フレームワーク宣言ファイル
00003  *  \author アナログ・デバイセズ株式会社
00004  *  \version 1.0
00005  *  \date    2006.Sep.8
00006  *
00007  * 各種パラメータの宣言ファイル。パラメータのうち、afw::SAMPLE_PER_INTRはユーザーが変更して
00008  * もよい。メインルーチンからはafw::initとafw::startAudioを呼び出してオーディオ処理を開始する。
00009  */
00010 #pragma once
00011 
00012 /** オーディオ・フレームワーク
00013 *
00014 * ADSP-BF537 EZ-KIT Lite上で動作するオーディオフレームワーク関連の関数および変数を含む名前空間。
00015 * プログラマは以下の関数を呼んでオーディオ処理を開始する。
00016 * - afw::init
00017 * - afw::startAudio
00018 */
00019 //--------------------------------------------------------------------------//
00020 // Header files                                                             //
00021 //--------------------------------------------------------------------------//
00022 //#include <sys\exception.h>
00023 #include <signal.h>
00024 #include <cdefBF537.h>
00025 #include <shortfract>
00026 
00027 namespace afw{
00028 
00029     //--------------------------------------------------------------------------//
00030     // Symbolic constants                                                       //
00031     //--------------------------------------------------------------------------//
00032     /** 左チャンネル指定定数
00033       *
00034       * afw::rxBufferおよび、 afw::txBufferにアクセスする際、最下位の添え字を指定
00035       * するときに使う。
00036       *
00037       */
00038     const int LEFT_CH = 0;
00039     /** 右チャンネル指定定数
00040       *
00041      * afw::rxBufferおよび、 afw::txBufferにアクセスする際、最下位の添え字を指定
00042       * するときに使う。
00043       *
00044       */
00045     const int RIGHT_CH = 1;
00046 
00047     /** バッファ数宣言定数
00048       *
00049       * DMA用のバッファ領域を afw::txBufferおよび afw::rxBufferとして
00050       * 確保する際に、割り込みいくつ分のバッファを用意するかを宣言する。
00051       * 具体的にいえば、トリプルバッファなので3を宣言する。過去3回の割り込み分のデータをバッファに
00052       * 格納できるということである。
00053       *
00054       */
00055     const int INTR_PER_BUFFER  = 3; // 変更してはならない。トリプルバッファのために3つの領域を確保
00056 
00057     /** サンプルあたりチャンネル数の宣言
00058       *
00059       * サンプルあたり何チャンネルのデータを伝送するか宣言する。I2Sはステレオなので、この値は2である。
00060       * この値はユーザーが変更してはならない。
00061       *
00062       */
00063     const int CH_PER_SAMPLE  = 2;   // 変更してはならない。I2Sはサンプルあたり2チャンネルのデータを持つ
00064 
00065     /** 割り込みあたりのサンプル数
00066       *
00067       * 何サンプルのデータを受信したら割り込みをかけるかを指定する。この値を大きくするほど
00068       * 効率がよくなるが、遅延も増大し、また、必要なメモリ量も増える。したがって、これらの
00069       * バランスを考えながらユーザーが値を決めることになる。
00070       */
00071     const int SAMPLE_PER_INTR = 8;  // 変更可能。何サンプルごとに割り込みをかけるか指定する。
00072 
00073     /** オーディオ・コーデックのリセット時間
00074       *
00075       * EZ-KIT Lite BF537では、オーディオ・コーデックのリセット信号がADSP-BF537のPF12に
00076       * 接続されている。コーデックの使用に先立って、この信号をアサートしなければならない。
00077       *
00078       * このマクロは、リセット信号をアサートする時間を与える。時間はループの繰り返し
00079       * 回数なので、あまり精度は高くない。注意深い値が必要である。
00080       */
00081     const int CODEC_RESET_PULS_WIDTH  = 0x10000;
00082 
00083     /** SPORT0のワード長
00084       *
00085       * SPORT0設定時に使うワード長である。EZ-KIT BF537に搭載されているコーデックは
00086       * I2S回線のデータを24bit使うので、ここでは24を用意している。
00087       */
00088     const int SPORT0_SLEN_24 = 0x0017;
00089 
00090 
00091     //--------------------------------------------------------------------------//
00092     // 大域変数                                                                 //
00093     //--------------------------------------------------------------------------//
00094 
00095     /** SPORT0 DMA 送信バッファ
00096       *
00097       * DMAが利用するバッファ。トリプル・バッファ構成をとるので、
00098       * 3D配列の最上位の添え字は、そのバッファ切り替えに使う。2番めの添え字は
00099       * 割り込み内のサンプル位置、3番目の添え字はサンプル内のチャンネル位置を
00100       * 与える。
00101       */
00102     extern volatile int txBuffer[][SAMPLE_PER_INTR][CH_PER_SAMPLE];
00103     /** SPORT0 DMA 受信バッファ
00104       *
00105       * DMAが利用するバッファ。トリプル・バッファ構成をとるので、
00106       * 3D配列の最上位の添え字は、そのバッファ切り替えに使う。2番めの添え字は
00107       * 割り込み内のサンプル位置、3番目の添え字はサンプル内のチャンネル位置を
00108       * 与える。
00109       */
00110     extern volatile int rxBuffer[][SAMPLE_PER_INTR][CH_PER_SAMPLE];
00111 
00112     //--------------------------------------------------------------------------//
00113     // 関数プロトタイプ                                                         //
00114     //--------------------------------------------------------------------------//
00115 
00116     void init(void);
00117     void startAudio(void);
00118 
00119     void rxISR( int signal );
00120 
00121         // processdata.cpp
00122     void initProcessData(void);
00123     void processData( 
00124                      const shortfract leftIn[], 
00125                      const shortfract rightIn[], 
00126                      shortfract leftOut[], 
00127                      shortfract rightOut[],
00128                      int count
00129                     );
00130 };
00131 

IIR filter sample by wrapper classに対してMon Dec 18 17:29:47 2006に生成されました。  doxygen 1.5.1-p1