« トラ技の78K0基板にも手を出してみる | トップページ | ΔΣ型D-Aコンバータを作ってみる(その2) »

2008年7月26日 (土曜日)

ΔΣ型D-Aコンバータを作ってみる(その1)

今回はトラ技2008年8月号の記事にある、「ΔΣ型D-Aコンバータ」の記事を基に、FRボードで実際に作ってみた。

なぜFRボードなのかといえば、

理由は簡単で、トラ技の78K0ボードはまだ開封しただけで開発環境も含め、何も準備ができていないからである。まぁ、まだ78K0ボードのアーキテクチャや開発手法が飲み込めていないので今回は理論だけ拝借させてもらい、78K0に比べたら確実に慣れ親しんでいる、FRボード上で実践をしてみたと言うわけ。

ちなみに理論としてはトラ技の記事以外にも以下の内容も読んでみた。

ちなみにΔΣ型D-Aコンバータとは、オーディオ製品で耳にする事のある「1bitDAC」の事なのだが、初めてこの言葉を見聞きしたのは十数年前のオーディオ関係のカタログだったと記憶している。大学の通信工学などの講義でデジアナ変換の基礎は習ったうえで、「16bitでA-D変換されたらD-A変換器も当然16bit以上でないとクオリティが維持できないんじゃない?」という固定観念を持っていただけに初めて聞いた時には衝撃を受けた記憶がある。

その後、詳しく調べる時間も無いまま、十数年が過ぎたが今回のトラ技でやっとその原理を理解する事ができた。

と言う事で、早速実践だが、今回はターゲットとして、

  • 量子化ビット数:8bit
  • サンプリング周波数:8KHz
  • 波形:440Hz(いわゆるラの音)のサイン波

としてみた。FRボードで音楽演奏のエントリではPPG出力のOn/Offをそのまま出力にする(つまり矩形波)だったので音声データは作らずとも周波数だけ考えればよかったが、今回はOn/Offだけではダメなのでまずはサイン波のデジタルデータを作成。

具体的にはExcelにデータを入力し、一周期分のデータ(440Hzのサイン波は1周期が約2.3ms)を作成し後はこれを使いまわす。8bit符号つきならば-128~127のデータであるが、デジタル出力の0/1を今回対応させるので0~255となるようにシフトしておく。

Sinwavedata001 データはこんな感じ。後はこの1周期分をshortの配列で定数として持つ

後は、トラ技2008年8月号P159のロジックでアプりを組む。今回は汎用出力ポートのOn/OffができればいいのでPPGは不要。FRボードで音楽演奏のエントリで使用した外部回路をそのまま流用できないかなぁとFRボードのピン配置を見ると、奇遇にもCN1のPPG1とGNDがCN2の汎用出力ポートP61とGNDとベストマッチ!汎用出力ポートP61は他の機能と兼任しておらず、IO_PFRレジスタの設定も不要でらくちん。

トラ技の記事の個人的な理解では量子化ビット数と同等のオーバーサンプリングを行えばよさそうなので、8kHzをさらに256分割して0.5μsec単位(厳密には0.488μsecだけどね)の割り込みとした。後はトラ技のロジックでオーバーサンプリング回数を超えるたびにサイン波のデータを順番に読ませていく。

これで、上手く行くはずだったのだが・・・次回に続く。

|

« トラ技の78K0基板にも手を出してみる | トップページ | ΔΣ型D-Aコンバータを作ってみる(その2) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2790/41977159

この記事へのトラックバック一覧です: ΔΣ型D-Aコンバータを作ってみる(その1):

« トラ技の78K0基板にも手を出してみる | トップページ | ΔΣ型D-Aコンバータを作ってみる(その2) »