ご購入はこちら 高速ワンチップ・マイコンではじめる サンプル ・ プログラ ム 付き! ソフトウェア無線 第 11 回 信号処理結果のスペクトラム表示 高橋 知宏 fS =12MHz fS =80kHz fS =8kHz CIC FIR NCO IIR コーデックIC NCO ADC LPC-Link2 マイコン基板 1/150 1/10 CIC FIR 2 I S TLV320 AIC3204 IIR 1300Hz メインコア (M4) 表示するスペクトラムを切り替え 窓関数 サブコア (M0APP) N =1024 FFT スペクトラム 描画 各種情報描画 SPI LPC4370 ILI9341 グラフィックス LCD 320×240 図 1 ソフトウェア無線信号処理の各ステージの波形をグラフィックス液晶ディスプレイでリアルタイム・モニタできるようにした FFT 計算や画面表示は,メイン Cortex-M4F コアじゃなくて,サブ Cortex-M0 コアにやらせる 前回(第 10 回,2016 年 7 月号)は,ソフトウェア無 線信号処理の各ステージの波形をグラフィックス LCD でリアルタイム・モニタするために,追加する FFT 処理とマルチコア・プログラミング方法を紹介 しました(図 1). 今回は実際に動かしてみます. ターゲット ARMマイコンの マルチコア動作 ● サブコアの動作 ターゲット LPC4370 マイコンはメイン Cortex-M4F コア(M4)に加えて Cortex-M0 コア(M0APP)を内蔵 しています.FFT と描画はこのサブコアで行います. リセット時にはサブコアは起動していません.メイ ンコアの main() 関数の先頭部分で,明示的にサブ コアを実行開始している箇所があります(リスト 1) . この呼び出しを行うことでサブコアの実行が開始さ れます.内部的には,サブコア用の渡されたイメー ジ・アドレスにより,PC やスタック・ポインタが格 納されたベクタを設定した後,リセット状態を解除す ることで,サブコアが起動されるようになっていま す.イメージを参照するシンボル(__core_m0app_ START__)は,リンカ・スクリプトで定義されるよ リスト 1 メインコアの main 関数でサブコアを起動している部分 int main(void) { // Start M0APP slave processor #if defined (__MULTICORE_MASTER_SLAVE_M0APP) cr_start_m0(SLAVE_M0APP,&__core_m0app_START__); #endif // Start M0SUB slave processor #if defined (__MULTICORE_MASTER_SLAVE_M0SUB) cr_start_m0(SLAVE_M0SUB,&__core_m0sub_START__); #endif 152 うになっています. サブコアは Cortex-M0 ですが,メインコアと違っ ていくつか注意点があります. ▶(1)クロック設定が不要 クロックはメインコアと共用ですので,サブコアで は設定する必要がありません.これに関係する落とし 穴として,設定不要であるが故にライブラリが必要と するクロック関係の呼び出しやソフトウェア的な設定 が行われておらず,ペリフェラルを扱うライブラリが 第 1 回 AM ラジオを作る(2015 年 10 月号) 第 2 回 AM ラジオで行う信号処理(2015 年 11 月号) 第 3 回 短波ラジオを受信する(2015 年 12 月号) 2016 年 8 月号
© Copyright 2024 ExpyDoc