本格ディジタル信号処理マシン

連 載
ダウンロード・データあります
84MHz 動作 Cortex-M4 マイコンで DSP 並みフィルタ& FFT
激安! 1500円mbed Nucleoで作る
本格ディジタル信号処理マシン
第
5回
FIR ヒルベルト変換フィルタによる周波数シフト
音源により
切り替える
パソコン
周波数変換
マイク
より
音源
ライン
出力
より
マイク・
アンプ回路
LPF回路
バッファ・
アンプ回路
いろいろな周波数の
正弦波やオーディオ
信号を入力
USB
ケーブル
アナログ信号
A0
Nucleo
F401RE
本稿で紹介したプログラムは
インターネット
mbedのWebサイトで公開して
(mbed.orgへ)
います.
http://developer.mbed.
org/users/CQpub0Mikami/
D-AコンバータIC
MCP4922
アクティブ・スピーカ,
オシロスコープなどへ
5V
アンチエイ
リアシング
A-DコンバータはMCU
に内蔵のものを使用
SPI
三上 直樹
レギュレータ
XC6202P332
3.3V マイク・アンプ,バッファ・アンプ,
D-Aコンバータ,LPF へ
図 1 実験のハードウェア構成…正弦波を入力して周波数変換してみる
今回は周波数変換器を作ります.周波数変換の方法
にはいくつかありますが,FIR フィルタで作るヒルベ
ルト(Hilbert)変換を使った周波数変換器に挑戦して
みます.
音声信号などのオーディオ信号を周波数シフトして
みると,基本波に対する倍音の周波数が,基本波の整
数倍ではなくなります.そのため,周波数変換器に
オーディオ信号を入力して,その出力をスピーカで音
にして聞いてみると,とても奇妙な音になっているこ
とを確かめることができます.周波数変換は無線の
SSB 通信などでも使われる技術です.
ります 注 1.そこで,最初に単一の周波数の正弦波で
考えます.
まず,式(1)で表される周波数 f1 の正弦波注 2x(t)を
● 実験のハードウェア構成
方へシフトするには,cos(2πfUt)
,sin(2πfUt)のほか
に sin(2πf1t)という正弦波が必要になります.この中
今回の実験で使うハードウェアの構成を図 1に示し
ます.周波数変換で出力された信号をオシロスコープ
で観察します.D-A 変換器の出力にアクティブ・スピー
カをつなげば,音として聴いてみることもできます.
周波数シフトの原理
● 基本の考え方
オーディオ信号をはじめとする信号は,いろいろな
周波数でいろいろな振幅の正弦波を加え合わせたもの
と考えられますが,これを式で表すとわかりにくくな
注 1:フーリエ級数やフーリエ変換を使えば表せます.
108
周波数変換することを考えます.
x(t)= cos(2πf1t)……………………………………(1)
この正弦波の周波数を,f1 から fU だけ高い方へシフ
トして f1 + fU に変換するにはどうしたらよいでしょう
か.これは,三角関数の加法定理を使えば解決できま
す.つまり,次のように計算できます.
cos[2π
(f1 + fU)t]=cos(2πf1t)cos(2πfUt)
− sin(2πf1t)sin(2πfUt)………(2)
したがって,式(1)の正弦波の周波数を fU だけ高い
で,cos(2πfUt)と sin(2πfUt)は計算で簡単に作ること
ができます.また,周波数 f1 がわかっていれば,cos
(2πf1t)から sin(2πf1t)を作ることも,それほど難し
いわけではありません.
● 周波数の cos と sin がほしい
しかし,実際には f1 はわかりません.たとえ周波数
f1 がわかったとしても,現実のオーディオ信号にはい
注 2:sin と cos は,単に位相が違っているだけで,本質的な違い
はありません.そのため,以降でも同様に,式の上では
cos になっていても正弦波と呼びます.
第 1 回 メイン回路の構成(2014 年 10 月号)
第 2 回 D-A コンバータ / フィルタ / マイク・アンプ…音声信号処理実験の準備(2014 年 11 月号)
第 3 回 音声入力に定番 FIR フィルタをかける(2014 年 12 月号)
2015 年 3 月号