開発履歴 / バグ / To Do

HOME

● 開発履歴

開発は次のような順番で行いました。

  1. デザインウェーブマガジン 2006 年 3 月号付属基板 ADuC7026
  2. 秋月 H8/3048 ボード
  3. インターフェース 2006 年 6 月号付録基板 SH7144F
  4. デザインウェーブマガジン 2006 年 3 月号付属基板 ADuC7026
  5. Atmel ATtiny2313
  6. Atmel ATmega168
  7. インターフェース 2007 年 5 月号付属基板 V850ES/JG2

この開発の発端は、(1) の ADuC7026 基板です。 LED チカチカ程度はうまく動くのに、記事にしたがって gdb でデバッグしようとすると、 不安定に悩まされていました。

その後、ネット上の情報で、デカップリング・コンデンサが不足していることが分かりました。  コンデンサを追加して安定に動くようになったので、内蔵 12 ビット DAC を利用して 何か音の出るものを作りたいなと思ったのがきっかけです。

はやりのサンプリング音源では ROM 容量の問題や、サンプリングする「音ネタ」の問題が あるので、旧式ですが原理は極めて簡単な FM 音源方式を採用しました。

開発の当初は、「遅いチップ」が実装されている基板を使っていました。  この基板上で、サンプリング周波数が約 15 kHz、同時発音数3音の性能が得られました。

(2)の H8/3048 については、フラッシュ ROM に書き込んだルネサス・モニタで、 外部に設けた 8 ビット幅の RAM 上にプログラムをダウンロードして 実行させる方式をとりました。

当然、メモリアクセスに時間がかかるので性能が落ちます。  また、C コンパイラに gcc を使ったこともあって、十分な性能が得られず、 予備的な実験の段階で同時発音数2音以上になる見込みがないことから、 プログラムの移植は断念しました。

次に、(3) の SH2 基板に移植を試みました。SH2 基板には、裏面に高速 SRAM 用のパターンが 用意されていますが、指定の SRAM は高価なので、この本来の方法は使っていません。

代わりに、手持ちの 486 時代のマザーボードから外した 32K x 8 ビットのキャッシュ用 SRAM 2個を使って外部 RAM を増設しました。

H8/3048 の時と同様に、SH2 でもフラッシュ ROM にはルネサス・モニタを書込み、プログラムを 外部 RAM にダウンロードして実行させる方式をとりました。

ボード上にフォトカプラを使った MIDI インターフェースを実装したり、 ディジタル・オーディオ用 DAC を載せたりと、 ハードウェア的には最も豪華なものとなっています。

移植の結果は、同時発音数3音程度の性能が得られました。  この当時の FM 音源プログラムは、現在のものとは違っており表現力が低いのと、 また、ハードウェアの環境が特殊なため、今回は SH2 版のプログラムの公開は見送りました。

その後は、(4) の ADuC7026 版に戻って、プログラムの改良に取り組みました。  特に、エンベロープ・ジェネレータは全面的に書き換え、現在の形になりました。

LCD サポートを付けたのもこの頃です。 デバッグに役立ちましたが、この時期には、すでに プログラムの大部分が出来上がった状態でしたから、もっと早く LCD を付けていれば良かったと 感じました。

そのうちに、秋月で ATtiny2313 が単価 120 円で売られていることを知り、 それまで何となく手を出せないでいた AVR を、ものは試しと買ってきました。

フラッシュ書込みには自作 ByteBlaster MV 互換ケーブルを使うつもりでしたが、 それまで、ほとんど使っていなかった「MINI EZ-USB」が AVR 書込みに使えることを思い出し、 利用することにしました。

MINI EZ-USB 側から +5V 電源、24 MHz クロック、シリアル入出力を供給できるので、 回路の組み立てで手数を省けました。

(5) の ATtiny2313 版では、スピードの制約よりも、メモリの制約のほうが先にきて、 「ピッチベンド」は実装することができましたが、同時発音数1音、 しかも音色の変更や、エンベロープの変化を付けられない状態になりました。

そんなわけで、今回は ATtiny2313 版のプログラムの公開は見送りました。  なんとか、もう少しプログラムを整理して、「MIDI 音源」は無理でも、 「MIDI オルゴール」程度のものにして公開したいと思います。

ATtiny2313 では、満足のいく結果が得られなかったので、ATmega168 を購入して、 (6) の ATmega への移植を試みました。

AVR は 8 ビットプロセッサですから、32 ビット RISC である ADuC7026 用のコードでは速度が出ず、 かなりの部分を 8 ビット向けに書き直し、さらには、一部をアセンブラで書きました。

結果としては、ROM 容量の制約から、LCD サポートと内蔵デモ曲は両立しませんでしたが、 性能は、24 MHz クロック時、サンプリング周波数が約 16 kHz で同時発音数2音となりました。

(7) の V850 暫定版では、まず最初にプロセッサの能力を知りたくて、 付属基板上に外部回路を組んでプログラムの移植を進めました。 その結果、サンプリング周波数が約 17 kHz で同時発音数6音となりました。

その後 LCD サポートを加え、V1.01 となりました。  V850 版が現状では最も性能がいいので、 今後は ADuC7026 版メインから V850 版メインに移行したいと思っています。

このページのトップへ戻るHOME

● バグ

このページのトップへ戻るHOME

● To Do (予定は未定)

このページのトップへ戻るHOME