• R/O
  • HTTP
  • SSH
  • HTTPS

dsp: 提交

TRX-305内蔵DSPのフレームワーク開発リポジトリ。


Commit MetaInfo

修訂f886f1487fceef42085e782ce054b3e7710fdfb5 (tree)
時間2015-06-06 15:27:32
作者suikan <suikan@user...>
Commitersuikan

Log Message

スケーリング機能実装。動作OK

Change Summary

差異

--- a/trx305/framework.c
+++ b/trx305/framework.c
@@ -359,13 +359,28 @@ static void pack_af_sample( short left, short right, unsigned int * pri_ch, unsi
359359 */
360360 static void unpack_wide_fm ( unsigned int pri_ch, unsigned int sec_ch, int* idata, int* qdata )
361361 {
362- int command, data;
362+ int command, data, exp, i, q;
363363
364364
365365 // iデータとqデータを抽出する。両者とも16bitで、bit14からbit29に格納されている
366- *idata = ( pri_ch << 2 ) & 0xFFFF0000;
367- *qdata = ( sec_ch << 2 ) & 0xFFFF0000;
366+ i = ( pri_ch << 2 ) & 0xFFFF0000;
367+ q = ( sec_ch << 2 ) & 0xFFFF0000;
368368
369+ // ブロック浮動小数点処理。expでスケーリングする。
370+ exp = ( pri_ch >> 10 ) & 0x0F;
371+ *idata = i >> exp;
372+ *qdata = q >> exp;
373+
374+#ifdef DEBUG_BLOCK_FLOAT
375+ {
376+ static int tested = 0;
377+ if ( (i & 0x80000000) && ! tested )
378+ {
379+ tested = 1;
380+ syslog( LOG_NOTICE, "i: %8x, exp: %d, idata:%8x", i, exp, *idata);
381+ }
382+ }
383+#endif
369384 // パラメータ・データを配列に格納する。
370385 // 配列インデックスは comaddr、データはcomdataから。
371386 // comdataはpri/secに分散している。
@@ -388,7 +403,7 @@ static void unpack_wide_fm ( unsigned int pri_ch, unsigned int sec_ch, int* idat
388403 * \param sec_ch セカンダリ・チャンネルからのデータ
389404 * \param idata 抽出したIデータ。[-1,1.0)の固定小数点形式。valid_iqが真の時のみ有効
390405 * \param qdata 抽出したQデータ。[-1,1.0)の固定小数点形式。valid_iqが真の時のみ有効
391- * \param valid_iq IQデータが有効の時真、向こうの時は偽
406+ * \param valid_iq IQデータが有効の時真、無効の時は偽
392407 * \detail
393408 */
394409
@@ -422,11 +437,10 @@ static void unpack_non_wide_fm( unsigned int pri_ch, unsigned int sec_ch, int*
422437
423438 /**
424439 * \brief SHからのコマンドとパラメタを保存する
425- * \param command
426- * \param data
427- * \details このルーチンはcfgファイルで宣言され、SPORT0 RX 割り込みハンドラとして登録される。
428- * SPORT0 RX DMAがバッファの受信を終えるたびに呼び出される。
429- * 割り込み専有時間を小さくするため、実際には、割り込みのクリアと受信タスクへの通知しかしていない。
440+ * \param command コマンド種別
441+ * \param data コマンドパラメータ
442+ * \details このルーチンはSHからFPGA経由で受け取ったコマンドとそのデータを内部変数に格納する。
443+ * 格納されたデータはユーザーが実装した復調アルゴリズムから、API経由で利用される。
430444 */
431445 static void set_command_data( unsigned int command, unsigned int data )
432446 {
--- a/trx305/framework.h
+++ b/trx305/framework.h
@@ -54,10 +54,11 @@
5454 *
5555 * コメントアウトすると機能がディセーブルになる
5656 */
57- #define DEBUG_QUEUEDEPTH // シリアルポートから、タスク間Queueの深さを表示させる
58- #define DEBUG_DSPLOAD // シリアルポートからDSP負荷率を表示させる
59-#define DEBUG_COMMAND // DSPに送られてくるコマンドの表示
60-//#define DEBUG_COMMAND_API // 復調器から使えるAPIのデバッグ用
57+// #define DEBUG_QUEUEDEPTH // シリアルポートから、タスク間Queueの深さを表示させる
58+// #define DEBUG_DSPLOAD // シリアルポートからDSP負荷率を表示させる
59+// #define DEBUG_COMMAND // DSPに送られてくるコマンドの表示
60+// #define DEBUG_COMMAND_API // 復調器から使えるAPIのデバッグ用
61+// #define DEBUG_BLOCK_FLOAT // WFMモードでブロック浮動小数点の整数化がうまく出来ているかダンプする。
6162
6263 /**
6364 * \brief RX_IF受信SPORTバッファのDMAサイズ
Show on old repository browser