1
第 2 章 C 言語のままマイコンでディジタル信号処理するメリットとデメリット 22 1.マイコンでディジタル信号処理 する際の注意点と問題点 マイコンなら C 言語のままプログラムをハードウェ ア(ROM)化できます.もしそれで十分な性能が得ら れるのなら,わざわざ HDL 化する必要はありません. ここではマイコンによるリアルタイム信号処理の可能 性を探ってみます. マイコンにおける C 言語はハードウェア独特の記 述が必要 ご存知のように,最近のマイコン開発はほぼC言語 で行います.ただ第1章のコラム1で述べたように, ハードウェア化を意識した記述にする必要があります. FPU を持たないマイコンなら全部整数で計算させる また,今回使用するマイコンdsPICはFPU(Floating Point Unit)を持っていないので,事実上信号処理の 演算は整数に限定されます 注1 .したがって変数や係数 を固定小数点化する必要があります. ビット数の制限による性能の劣化 FPGA の場合,ディジタル・フィルタの係数などの ビット数は任意に設定できます.それに対しマイコン の場合,ビット数はある決まった数に限定されます. 例えばdsPICは16ビット・マイコンなので,その信 号処理機能をフルに引き出すには係数のビット数は 16である必要があります.第1章のWindowsアプリ ケーションでは20ビットだったので,それに比べる と確実にSN 比は劣化します. FPGA は並列処理,マイコンは逐次処理 サンプリング・レート変換器では,A-Dコンバータ から常時入ってくるデータを信号処理し,D-A コンバー タに次から次へと渡します.したがって,一定時間に 一連の処理を終えるリアルタイム性が必要になります. FPGAは並列処理が容易です.同じ処理をもう1 チャネル増やしたいなら,同じ回路をもう一つ並列に 動かせばよいだけだからです. それに対しマイコンは逐次処理なので,1チャネル で処理が間に合ったとしても,2チャネルに増やした ときに間に合うとは限りません.タイマやDMAなど, 独立して動く機能もありますが,基本的には一度に一 つの仕事しかできないからです. ちょっとした信号処理システムならマイコンでも できそう マイコンには,WindowsアプリケーションからC 言語で書かれたプログラムをサクッと拝借して実装で きるという魅力がありますが,FPGA と比較すると既 に説明したような欠点が確実にあります. それではマイコンならどれくらいの演算量のシステ ムがどれくらいの精度でできるのでしょうか?これか ら 7/5 倍レート変換を dsPIC に実装してみます. 2.ディジタル信号処理用マイコン dsPIC でレート変換してみる dsPIC は Microchip 社が提供する 16 ビット・マイコ ンです(命令長は24ビット).その名前から分かるよ dsPIC33FJ128GP804 DSPエンジン内蔵 出力 入力 パソコンから 信号入出力 写真1 ディジタル信号処理ボードdsPICマイコン版 (DFdsPIC804) 注 1:浮動小数点でも開発できるが,サイクル数が何倍もかかっ て演算が間に合わなくなる. 特集 2 DSPエンジンを持つ信号処理用マイコンdsPICでサンプリング・レート 変換してみる 第 1 章でサンプリング・レート変換アルゴリズムである 147/160 倍処理を,固定小数演算のみで処理できるよう になりました.このC言語プログラムであれば,組み込みマイコンでも動作させられそうです.ここでは Microchip社製dsPIC搭載DSPマイコン・ボードに作成したC言語プログラムを移植し,DSPマイコンでサンプ リング周波数変換の一部の処理を実行してみます. C 言語のままマイコンでディジタル信号処理する メリットとデメリット 岩田 利王 Toshio Iwata マイコンで動かす!

C言語のままマイコンでディジタル信号処理する メ … › fpga › sample › 0011 › FPGA11_022.pdf22 第2章 C言語のままマイコンでディジタル信号処理するメリットとデメリット

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

第2章 C言語のままマイコンでディジタル信号処理するメリットとデメリット22

1.マイコンでディジタル信号処理 する際の注意点と問題点

 マイコンならC言語のままプログラムをハードウェア(ROM)化できます.もしそれで十分な性能が得られるのなら,わざわざHDL化する必要はありません.ここではマイコンによるリアルタイム信号処理の可能性を探ってみます.● マイコンにおけるC言語はハードウェア独特の記

述が必要 ご存知のように,最近のマイコン開発はほぼC言語で行います.ただ第1章のコラム1で述べたように,ハードウェア化を意識した記述にする必要があります.● FPUを持たないマイコンなら全部整数で計算させる また,今回使用するマイコンdsPICはFPU(Floating Point Unit)を持っていないので,事実上信号処理の演算は整数に限定されます注1.したがって変数や係数を固定小数点化する必要があります.● ビット数の制限による性能の劣化 FPGAの場合,ディジタル・フィルタの係数などのビット数は任意に設定できます.それに対しマイコンの場合,ビット数はある決まった数に限定されます.

例えばdsPICは16ビット・マイコンなので,その信号処理機能をフルに引き出すには係数のビット数は16である必要があります.第1章のWindowsアプリケーションでは20ビットだったので,それに比べると確実にSN 比は劣化します.● FPGAは並列処理,マイコンは逐次処理 サンプリング・レート変換器では,A-Dコンバータから常時入ってくるデータを信号処理し,D-Aコンバータに次から次へと渡します.したがって,一定時間に一連の処理を終えるリアルタイム性が必要になります. FPGAは並列処理が容易です.同じ処理をもう1チャネル増やしたいなら,同じ回路をもう一つ並列に動かせばよいだけだからです. それに対しマイコンは逐次処理なので,1チャネルで処理が間に合ったとしても,2チャネルに増やしたときに間に合うとは限りません.タイマやDMAなど,独立して動く機能もありますが,基本的には一度に一つの仕事しかできないからです.● ちょっとした信号処理システムならマイコンでも

できそう マイコンには,WindowsアプリケーションからC言語で書かれたプログラムをサクッと拝借して実装できるという魅力がありますが,FPGAと比較すると既に説明したような欠点が確実にあります. それではマイコンならどれくらいの演算量のシステムがどれくらいの精度でできるのでしょうか?これから7/5倍レート変換をdsPICに実装してみます.

2.ディジタル信号処理用マイコン dsPICでレート変換してみる

 dsPICはMicrochip社が提供する16ビット・マイコンです(命令長は24ビット).その名前から分かるよ

dsPIC33FJ128GP804DSPエンジン内蔵

出力

入力

パソコンから信号入出力

写真1 ディジタル信号処理ボードdsPICマイコン版(DFdsPIC804)注1:浮動小数点でも開発できるが,サイクル数が何倍もかかっ

て演算が間に合わなくなる.

特集

第2章 DSPエンジンを持つ信号処理用マイコンdsPICでサンプリング・レート 変換してみる

 第1章でサンプリング・レート変換アルゴリズムである147/160倍処理を,固定小数演算のみで処理できるようになりました.このC言語プログラムであれば,組み込みマイコンでも動作させられそうです.ここではMicrochip社製dsPIC搭載DSPマイコン・ボードに作成したC言語プログラムを移植し,DSPマイコンでサンプリング周波数変換の一部の処理を実行してみます.

C言語のままマイコンでディジタル信号処理する メリットとデメリット

岩田 利王 Toshio Iwata

マイコンで動かす!