日曜技術者のメモ

趣味でやった事のメモ書きです。

FPGAでAM送信機を作ってみた-1-

大学の卒論で作成したAM送信機のVHDLコードが見つかった。
卒論発表会の時AMラジオを横において実演したのを覚えている。

今読むといろいろひどいコードなので作りなおす事にした。
(非同期対策をしてなかったりROMテーブルをswich case文で長々書いてたり・・・)

すっかり忘れているので理論から
AM変調の数式は↓の通り(昔のメモからコピー。ちょっと変形しているはずです。)

f:id:ginnyu-tei:20121113193049j:plain

sinが搬送波でcosが信号mが変調度(だったと思う)
この式を元に作成した回路が下図

この時は確かm=1にして+1は8bitPCMを使って回避しました。
この1+は信号にマイナスの値が無いようにオフセットしています。
(cos(pt)は-1~1の値をとる。1をたして0~2になりマイナス値が無くなる)
8bitPCMは0~255の値をとるのでマイナス値がなくそのまま乗算できます。

搬送波はDDSを作成して526.5kHz~1606.5kHzを生成しています。
当時は可変にする時間がなかったので固定で使用していました。
Nの値を変化させる事で周波数を自由に変更できます。

あと大切なのは帯域です。AM放送の帯域は15kHzまでです
AM放送は9kHz間隔なので上下合わせて18kHzまでありますが
ガードバンドとして少し余裕をもたせています。
AM変調の帯域は大体信号の帯域×2位なので7.5kHzまでとなり
PCMだとサンプリング周波数が15kHz位まで使えます。

必要な理論はこの位かな

改善点としては
・PCM16bit化
・サンプリング周波数を上げる(?)
・周波数を可変にする(ロータリーエンコーダーとか使う)

AMステレオ放送とか面白そうだけど受信できるラジオがない。

次回はZedboardへの実装を考えます。