SlideShare a Scribd company logo
1 of 21
オリジナルMIDIシーケンサ
    開発ノート
           2012年2月6日
概要
   この文書は、とある半導体部品の使い手である、一人の
   技術者の記録である。
   小型軽量で実用的なMIDIシーケンサを、個人レベルで
   開発して実現するのが本件の最終目標である。
   第1次試作品は既に完成している。Xilinx Spartan-3E FPGA
   にFM音源を搭載してポケットサイズに仕上げ、単3形
   NiMH 2本で動作するが、いくつかの課題も表面化した。
   課題解決のため、NXP LPC1769 MCUとSpartan-6 FPGAを
   採用した基板を既に製造済みである。
   2012年2月6日時点では、両基板を組み合わせてシステ
   ムとして動作させることが課題になっている。それに向け
   た現在検討中の計画案を、この文書に記載する。

2012年2月6日      オリジナルMIDIシーケンサ 開発ノート   you_ucchy   2
背景
   私が学生の頃、YAMAHAのQY70に出会い、以後今日
                 QY70
   まで愛用しているが、電池が6本も必要で携帯性に不満
   を感じていた。だが、より大型のQY100が10年前に登場
   して以降、新製品が出る気配は無いのが現状である。
   一方、21世紀に入って以降、最先端のMCUやFPGAが
   搭載された基板を秋葉原店頭や雑誌の付録などで安価
   に入手できるようになった。更にネットを通じて、部品の
   調達やプリント基板の発注も個人レベルで出来るように
   なっている。
   以上を踏まえ私の不満を解決すべく、MIDIシーケンサを
   自作してしまおうというのが、本件のテーマである。
   自作


2012年2月6日   オリジナルMIDIシーケンサ 開発ノート   you_ucchy   3
検討
   製品並のMIDIシーケンサを実現する上での課題は幾つ
   かあるが、主たる課題はその音源の実現方法である。
                  音源の実現方法
   今日の市販品に匹敵する音色を再現するのは、個人レベ
   ルでは大変困難であるのは言うまでもないが、かといって
   市販のGM音源チップでは音色に不満が残る。
   個人レベルで実現可能な音源方式としてFM音源が最適
                        音源
   であると思うが、それをソフトウェアで実現するのは、
   採用できるMCUの能力を考慮すると厳しい。
   そこでFM音源回路を、入手の容易なFPGAに実装する
                         実装
   のが現実的な解になると考えられる。
   主要部品にFPGAを採用するならば、音源の実現以外に
   表示器やキーの取り扱いも、そのFPGAで可能である。

2012年2月6日   オリジナルMIDIシーケンサ 開発ノート   you_ucchy   4
課題と対策
   部材       通販で調達可能である。

   外装       市販のケースを採用する。
            加工は一般の工具による手作業で対応する。

   基板       製造は業者へ発注する。
            部品実装は手付けで対応する。

   電源       単3形NiMH 2本から昇圧する。

   FPGA     音源部をはじめとする全ての機能ブロックを
            フルスクラッチで開発する。
            フルスクラッチで開発

2012年2月6日       オリジナルMIDIシーケンサ 開発ノート   you_ucchy   5
主要部品の選定
   FPGAは、Xilinx Spartan-3E (TQFP) を採用する。
       デバイスの評価にはCQ出版社 Design Wave Magazine
       付録基板を利用する。
       開発環境はXilinx ISE WebPackを利用する。
   表示器は、秋月電子通商で販売されている400x96ドット
   カラーグラフィックTFT液晶モジュールを採用する。




                                TFT液晶モジュール↑

                         ← 付録FPGA基板

2012年2月6日        オリジナルMIDIシーケンサ 開発ノート   you_ucchy   6
完成までの軌跡
            ← 2008年1月頃 付録基板を利用して製作


            ↓ 2008年10月頃 FPGA基板を製造して製作

                   ↓ 2009年6月頃 第1次試作機が完成




            ← 開発したSpartan-3E FPGA基板
2012年2月6日    オリジナルMIDIシーケンサ 開発ノート   you_ucchy   7
考察
   電源に関する不満
       電源ONのまま放置すると電池を過放電させてしまう。
       連続動作時間が2時間程度と短い。

   キーに関する不満
       キーが押しにくく、簡単な曲の演奏ですら困難。
       キーが少なく操作しづらい。

   機能に関する不満
       編集機能が実現できておらず、期待を大幅に下回っている。
       機能充実にはFPGA搭載回路を変更しなくてはならない。



2012年2月6日      オリジナルMIDIシーケンサ 開発ノート   you_ucchy   8
取り組むべき課題
   電池の過放電への対策
       終止電圧到達でシャットダウンする機能を電源回路に追加した。
   連続動作時間の延長
       表示器の変更 携帯電話用の液晶(QVGA)を採用
               消費電力を大幅削減、解像度アップ
       FPGAの変更 Xilinx Spartan-6 LX9 (TQFP) を採用
               消費電力削減、回路規模アップ

⇒ 単3x2で2時間から
 単4x2で4時間以上へ
       時間以上
 大幅に改善した!
 小型化も同時に実現!
                             新開発の Spartan-6 FPGA 基板↑
2012年2月6日           オリジナルMIDIシーケンサ 開発ノート     you_ucchy   9
取り組むべき課題
   キーの押しづらさへの対策   プロトタイプ
    部品変更で改善する見込み。 に便利な
   キーが少ない問題への対策 mbed ↓ →
       編集・操作用のキーを増やし
       改善させる予定。
   編集機能の充実
       MCUにNXP LPC1769を採用し、
               LPC1769
       編集機能はソフトウェアで実現
       させる。
       新機能の拡充もソフトウェアで
       対応する。性能がソフトウェア
       単独で満たされない場合は、
       FPGAに回路を追加することで
       対応する。              新開発したMCU基板による試作機↑
2012年2月6日        オリジナルMIDIシーケンサ 開発ノート   you_ucchy   10
今後の課題
   本件の今後の課題を以下に列挙する。
       外装   見劣りするのを何とかしたい。
       基板   主要基板は製造済みだが一部評価が未完了。
            編集キー用基板が未開発。
       電源   過放電対策済み。連続動作時間も実用レベル。
            電池電圧低下の警告機能が欲しい。
            電源OFFの制御をMCU側でさせたい。
       FPGA 機能追加が非常に困難な構造を改善したい。
            機能追加が非常に困難な構造を改善したい
       ドライバ 未開発。MCU-FPGAアクセスを早急に実現したい。
                        アクセスを早急に
       アプリ 未開発だが、予想される技術的課題は特に無い。

   FPGA機能ブロックの再開発(論理回路設計)と
       機能ブロックの再開発
   MCUアクセス開通が、当面の重要課題となる。
      アクセス開通
2012年2月6日       オリジナルMIDIシーケンサ 開発ノート   you_ucchy   11
予定しているFPGA内部機能ブロック図
       FPGA内部構成は、MCU I/F・音源系・表示系などの各マスタ機
       能ブロックと、Block RAM・SRAMなどの各メモリI/Fブロックで構
       能ブロック                          ブロック
       成され、両者はトランザクタとHUBで構成される内部バスに接続
                                  内部バス
       されている。




2012年2月6日        オリジナルMIDIシーケンサ 開発ノート   you_ucchy   12
内部バスの特徴
   本件で採用する内部バスは2種類ある。
   内部メモリバスは、16bit幅のスプリットトランザクション型
   を採用する。バースト転送もサポートする。但し転送の最
   小単位は32bitとし、バースト長は必ず偶数になる。アドレ
   ス空間は最大32bit(下位2bitは0固定)=4GBである。
   内部レジスタバスは、MicroBlaze MCSの I/O Bus や
   MMCM等のDRPと等価なインターロック型を採用する。
   転送単位は32bit固定となる。
   レジスタブリッジにより、内部メモリバスから内部レジスタ
   バスへの変換が行われる。したがって、マスタ機能ブロッ
   クは内部メモリバスへのアクセスによって各レジスタへア
   クセスすることが可能である。

2012年2月6日     オリジナルMIDIシーケンサ 開発ノート   you_ucchy   13
内部メモリバスの動作概要
       各マスタ機能ブロックからのバスアクセスは、トランザクタで変換
       処理される。HUBはクロスバースイッチと等価な構造であるが、
       FPGAリソース使用量が少なくて済む構成になっている。




2012年2月6日      オリジナルMIDIシーケンサ 開発ノート   you_ucchy   14
内部メモリバスの制御方式(1)
   AXIやOCPなどの一般的なバスでは、データ転送時に受
   信側のREADY信号を常に監視する必要があるため、制
   御が複雑になりタイミング改善も難しい傾向にある。
   この内部バスでは、送信側は受信側に対して予め転送要
   求を発行し、許可を受けた後で無条件にデータを送信す
   る。これにより制御が単純になり、タイミング改善も容易に
   対応可能である。

  VALID              REQ
  DATA               GNT
  READY              VALID
                     DATA
    一般的なバスの場合                  本件の方式

2012年2月6日   オリジナルMIDIシーケンサ 開発ノート   you_ucchy   15
内部メモリバスの制御方式(2)
   トランザクタは、マスタ機能ブロックから要求されたアドレスを
   デコードし、対応するHUB内アービタへリクエストを発行する。
   アービタはメモリI/Fブロックに対してリクエストを発行し、
   許可(GNT)を得られたら、リクエストがあったトランザクタの
   1つを選択して許可を出す。
   許可を得たトランザクタは、それをマスタ機能ブロックへ通知し、
   リクエストデータを出力する。
                Req      HUB(reQ)         Req
                                   reQ                  Memory
 Transactor     Gnt                        Gnt
                                  Arbiter              Interface
            reQuest Data                  reQuest Data
                                                         Block
                  Req                               Req
                                         reQ                              Memory
                  Gnt                               Gnt
 Transactor                             Arbiter                          Interface
                                                    reQuest Data
              reQuest Data                                                 Block
2012年2月6日                    オリジナルMIDIシーケンサ 開発ノート                  you_ucchy         16
内部メモリバスの制御方式(3)
   メモリI/Fブロックがレスポンスデータを返す場合は、
   先ず対応するHUB内アービタへリクエストを発行する。
   アービタは、リクエストがあったメモリI/Fブロックのうちの1つを
   選択して許可を出す。
   メモリI/Fブロックはレスポンスデータを出力する。
   トランザクタはレスポンスデータをマスタ機能ブロックへ返す。
   マスタ機能ブロックはこれを無条件に受け入れる。
                                  HUB(Resp)      Req
                          Resp                             Memory
                                                 Gnt
 Transactor               Arbiter                         Interface
            Response Data                   Response Data   Block
                                                          Req
                                 Resp                                       Memory
                                                          Gnt
 Transactor                      Arbiter                                   Interface
              Response Data
                                                     Response Data           Block
2012年2月6日                     オリジナルMIDIシーケンサ 開発ノート                   you_ucchy         17
機能ブロック一覧
   内部バスI/Fブロック                             音源系ブロック
       Transactor                            FM音源部
       HUB                                   ミキサー, エフェクター
       Register Bus Bridge                   I2SRX/TX
   ホストI/Fブロック                                PWM Phone Out
       MCU I/F (SPI Slave & UART)          表示系ブロック
       MicroBlaze MCS I/O Bridge             表示出力部
       (w/Cache Ctrl.)                       AVIデコーダ
       Programmable Interrupt Ctrl.          BitBlt・矩形Fill
   メモリI/Fブロック                                直線描画・三角形描画
       Block RAM
       SPI Flash ROM                       その他
       非同期SRAM                               MMC I/F
       MIG (DDR-SDRAM) Bridge                キー制御
※赤字
 赤字は過去に開発実績あり。                               GPIO

2012年2月6日                    オリジナルMIDIシーケンサ 開発ノート      you_ucchy   18
Appendix




2012年2月6日   オリジナルMIDIシーケンサ 開発ノート   you_ucchy   19
実装上のヒント
     からFPGAをコンフィグレーション
■ MCUから
     から    をコンフィグレーション
 MCUからアクセスできるストレージにFPGAコンフィグファ
 イルを置いておき、電源投入後MCUがそのファイルを読
 み込んでFPGAをコンフィグレーションする。
       ストレージは、mbed内蔵Flash又はMMCなどが想定される。

      に格納したコードをMCSで実行
■ MMCに格納したコードを
      に格納したコードを      で実行
 MicroBlaze MCSの内蔵メモリにブートローダを格納し、
 MMCから読み込んだ実行コードを、I/O Bus空間にマッピ
 ングされた任意のメモリ上に配置し実行させる。
       μClinuxなら動作させられるかもしれない。【※要検証】
       I/O Bridgeのキャッシュ機能に性能が左右される。

2012年2月6日       オリジナルMIDIシーケンサ 開発ノート   you_ucchy   20
2012年2月6日   オリジナルMIDIシーケンサ 開発ノート   you_ucchy   21

More Related Content

What's hot

0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきことmao999
 
第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料magoroku Yamamoto
 
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-mainShotaro Uchida
 
4章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 34章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 3mao999
 
Odyssey MAX 10 FPGA入門セミナーテキスト
Odyssey MAX 10 FPGA入門セミナーテキストOdyssey MAX 10 FPGA入門セミナーテキスト
Odyssey MAX 10 FPGA入門セミナーテキストTsuyoshi Horigome
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt AffinityについてTakuya ASADA
 
FPGAベースのソーティングアクセラレータの設計と実装
FPGAベースのソーティングアクセラレータの設計と実装FPGAベースのソーティングアクセラレータの設計と実装
FPGAベースのソーティングアクセラレータの設計と実装Ryohei Kobayashi
 
OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)Takeshi HASEGAWA
 
Bitvisorをベースとした既存Windowsのドライバメモリ保護
Bitvisorをベースとした既存Windowsのドライバメモリ保護Bitvisorをベースとした既存Windowsのドライバメモリ保護
Bitvisorをベースとした既存Windowsのドライバメモリ保護Kuniyasu Suzaki
 

What's hot (12)

0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
 
Adk2012
Adk2012Adk2012
Adk2012
 
第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料第4回名古屋Android勉強会資料
第4回名古屋Android勉強会資料
 
retrobsd-2012-JUL-07 at JNUG BSD BoF
retrobsd-2012-JUL-07 at JNUG BSD BoFretrobsd-2012-JUL-07 at JNUG BSD BoF
retrobsd-2012-JUL-07 at JNUG BSD BoF
 
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
 
4章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 34章 Linuxカーネル - 割り込み・例外 3
4章 Linuxカーネル - 割り込み・例外 3
 
Google 20130218
Google 20130218Google 20130218
Google 20130218
 
Odyssey MAX 10 FPGA入門セミナーテキスト
Odyssey MAX 10 FPGA入門セミナーテキストOdyssey MAX 10 FPGA入門セミナーテキスト
Odyssey MAX 10 FPGA入門セミナーテキスト
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
FPGAベースのソーティングアクセラレータの設計と実装
FPGAベースのソーティングアクセラレータの設計と実装FPGAベースのソーティングアクセラレータの設計と実装
FPGAベースのソーティングアクセラレータの設計と実装
 
OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)OSC2011 Tokyo/Fall 濃いバナ(virtio)
OSC2011 Tokyo/Fall 濃いバナ(virtio)
 
Bitvisorをベースとした既存Windowsのドライバメモリ保護
Bitvisorをベースとした既存Windowsのドライバメモリ保護Bitvisorをベースとした既存Windowsのドライバメモリ保護
Bitvisorをベースとした既存Windowsのドライバメモリ保護
 

Similar to オリジナルMIDIシーケンサ 開発ノート

High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...Takuma Usui
 
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみたMovidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみたNISHIMOTO Keisuke
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例についてMasanori Itoh
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会Hitoshi Sato
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表Hirotaka Kawata
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoTakefumi MIYOSHI
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)Insight Technology, Inc.
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発Shinya Takamaeda-Y
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3オラクルエンジニア通信
 
memcached + selinux engine
memcached + selinux enginememcached + selinux engine
memcached + selinux engineKohei KaiGai
 
FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み
FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試みFPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み
FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試みRyohei Kobayashi
 
201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobeYamauchi isamu
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pitokudahiroshi
 
Scale flux roi&performance_acri
Scale flux roi&performance_acriScale flux roi&performance_acri
Scale flux roi&performance_acri直久 住川
 
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方FPGAアクセラレータの作り方
FPGAアクセラレータの作り方Mr. Vengineer
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料Shin-ya Koga
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 

Similar to オリジナルMIDIシーケンサ 開発ノート (20)

High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
 
Movidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみたMovidius Neral Compute Stickを使ってみた
Movidius Neral Compute Stickを使ってみた
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例について
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Myoshimi extreme
Myoshimi extremeMyoshimi extreme
Myoshimi extreme
 
seccamp2012 チューター発表
seccamp2012 チューター発表seccamp2012 チューター発表
seccamp2012 チューター発表
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
 
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
 
memcached + selinux engine
memcached + selinux enginememcached + selinux engine
memcached + selinux engine
 
FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み
FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試みFPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み
FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み
 
201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobe
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
 
Scale flux roi&performance_acri
Scale flux roi&performance_acriScale flux roi&performance_acri
Scale flux roi&performance_acri
 
FPGAアクセラレータの作り方
FPGAアクセラレータの作り方FPGAアクセラレータの作り方
FPGAアクセラレータの作り方
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 

オリジナルMIDIシーケンサ 開発ノート

  • 1. オリジナルMIDIシーケンサ 開発ノート 2012年2月6日
  • 2. 概要 この文書は、とある半導体部品の使い手である、一人の 技術者の記録である。 小型軽量で実用的なMIDIシーケンサを、個人レベルで 開発して実現するのが本件の最終目標である。 第1次試作品は既に完成している。Xilinx Spartan-3E FPGA にFM音源を搭載してポケットサイズに仕上げ、単3形 NiMH 2本で動作するが、いくつかの課題も表面化した。 課題解決のため、NXP LPC1769 MCUとSpartan-6 FPGAを 採用した基板を既に製造済みである。 2012年2月6日時点では、両基板を組み合わせてシステ ムとして動作させることが課題になっている。それに向け た現在検討中の計画案を、この文書に記載する。 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 2
  • 3. 背景 私が学生の頃、YAMAHAのQY70に出会い、以後今日 QY70 まで愛用しているが、電池が6本も必要で携帯性に不満 を感じていた。だが、より大型のQY100が10年前に登場 して以降、新製品が出る気配は無いのが現状である。 一方、21世紀に入って以降、最先端のMCUやFPGAが 搭載された基板を秋葉原店頭や雑誌の付録などで安価 に入手できるようになった。更にネットを通じて、部品の 調達やプリント基板の発注も個人レベルで出来るように なっている。 以上を踏まえ私の不満を解決すべく、MIDIシーケンサを 自作してしまおうというのが、本件のテーマである。 自作 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 3
  • 4. 検討 製品並のMIDIシーケンサを実現する上での課題は幾つ かあるが、主たる課題はその音源の実現方法である。 音源の実現方法 今日の市販品に匹敵する音色を再現するのは、個人レベ ルでは大変困難であるのは言うまでもないが、かといって 市販のGM音源チップでは音色に不満が残る。 個人レベルで実現可能な音源方式としてFM音源が最適 音源 であると思うが、それをソフトウェアで実現するのは、 採用できるMCUの能力を考慮すると厳しい。 そこでFM音源回路を、入手の容易なFPGAに実装する 実装 のが現実的な解になると考えられる。 主要部品にFPGAを採用するならば、音源の実現以外に 表示器やキーの取り扱いも、そのFPGAで可能である。 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 4
  • 5. 課題と対策 部材 通販で調達可能である。 外装 市販のケースを採用する。 加工は一般の工具による手作業で対応する。 基板 製造は業者へ発注する。 部品実装は手付けで対応する。 電源 単3形NiMH 2本から昇圧する。 FPGA 音源部をはじめとする全ての機能ブロックを フルスクラッチで開発する。 フルスクラッチで開発 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 5
  • 6. 主要部品の選定 FPGAは、Xilinx Spartan-3E (TQFP) を採用する。 デバイスの評価にはCQ出版社 Design Wave Magazine 付録基板を利用する。 開発環境はXilinx ISE WebPackを利用する。 表示器は、秋月電子通商で販売されている400x96ドット カラーグラフィックTFT液晶モジュールを採用する。 TFT液晶モジュール↑ ← 付録FPGA基板 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 6
  • 7. 完成までの軌跡 ← 2008年1月頃 付録基板を利用して製作 ↓ 2008年10月頃 FPGA基板を製造して製作 ↓ 2009年6月頃 第1次試作機が完成 ← 開発したSpartan-3E FPGA基板 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 7
  • 8. 考察 電源に関する不満 電源ONのまま放置すると電池を過放電させてしまう。 連続動作時間が2時間程度と短い。 キーに関する不満 キーが押しにくく、簡単な曲の演奏ですら困難。 キーが少なく操作しづらい。 機能に関する不満 編集機能が実現できておらず、期待を大幅に下回っている。 機能充実にはFPGA搭載回路を変更しなくてはならない。 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 8
  • 9. 取り組むべき課題 電池の過放電への対策 終止電圧到達でシャットダウンする機能を電源回路に追加した。 連続動作時間の延長 表示器の変更 携帯電話用の液晶(QVGA)を採用 消費電力を大幅削減、解像度アップ FPGAの変更 Xilinx Spartan-6 LX9 (TQFP) を採用 消費電力削減、回路規模アップ ⇒ 単3x2で2時間から 単4x2で4時間以上へ 時間以上 大幅に改善した! 小型化も同時に実現! 新開発の Spartan-6 FPGA 基板↑ 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 9
  • 10. 取り組むべき課題 キーの押しづらさへの対策 プロトタイプ 部品変更で改善する見込み。 に便利な キーが少ない問題への対策 mbed ↓ → 編集・操作用のキーを増やし 改善させる予定。 編集機能の充実 MCUにNXP LPC1769を採用し、 LPC1769 編集機能はソフトウェアで実現 させる。 新機能の拡充もソフトウェアで 対応する。性能がソフトウェア 単独で満たされない場合は、 FPGAに回路を追加することで 対応する。 新開発したMCU基板による試作機↑ 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 10
  • 11. 今後の課題 本件の今後の課題を以下に列挙する。 外装 見劣りするのを何とかしたい。 基板 主要基板は製造済みだが一部評価が未完了。 編集キー用基板が未開発。 電源 過放電対策済み。連続動作時間も実用レベル。 電池電圧低下の警告機能が欲しい。 電源OFFの制御をMCU側でさせたい。 FPGA 機能追加が非常に困難な構造を改善したい。 機能追加が非常に困難な構造を改善したい ドライバ 未開発。MCU-FPGAアクセスを早急に実現したい。 アクセスを早急に アプリ 未開発だが、予想される技術的課題は特に無い。 FPGA機能ブロックの再開発(論理回路設計)と 機能ブロックの再開発 MCUアクセス開通が、当面の重要課題となる。 アクセス開通 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 11
  • 12. 予定しているFPGA内部機能ブロック図 FPGA内部構成は、MCU I/F・音源系・表示系などの各マスタ機 能ブロックと、Block RAM・SRAMなどの各メモリI/Fブロックで構 能ブロック ブロック 成され、両者はトランザクタとHUBで構成される内部バスに接続 内部バス されている。 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 12
  • 13. 内部バスの特徴 本件で採用する内部バスは2種類ある。 内部メモリバスは、16bit幅のスプリットトランザクション型 を採用する。バースト転送もサポートする。但し転送の最 小単位は32bitとし、バースト長は必ず偶数になる。アドレ ス空間は最大32bit(下位2bitは0固定)=4GBである。 内部レジスタバスは、MicroBlaze MCSの I/O Bus や MMCM等のDRPと等価なインターロック型を採用する。 転送単位は32bit固定となる。 レジスタブリッジにより、内部メモリバスから内部レジスタ バスへの変換が行われる。したがって、マスタ機能ブロッ クは内部メモリバスへのアクセスによって各レジスタへア クセスすることが可能である。 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 13
  • 14. 内部メモリバスの動作概要 各マスタ機能ブロックからのバスアクセスは、トランザクタで変換 処理される。HUBはクロスバースイッチと等価な構造であるが、 FPGAリソース使用量が少なくて済む構成になっている。 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 14
  • 15. 内部メモリバスの制御方式(1) AXIやOCPなどの一般的なバスでは、データ転送時に受 信側のREADY信号を常に監視する必要があるため、制 御が複雑になりタイミング改善も難しい傾向にある。 この内部バスでは、送信側は受信側に対して予め転送要 求を発行し、許可を受けた後で無条件にデータを送信す る。これにより制御が単純になり、タイミング改善も容易に 対応可能である。 VALID REQ DATA GNT READY VALID DATA 一般的なバスの場合 本件の方式 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 15
  • 16. 内部メモリバスの制御方式(2) トランザクタは、マスタ機能ブロックから要求されたアドレスを デコードし、対応するHUB内アービタへリクエストを発行する。 アービタはメモリI/Fブロックに対してリクエストを発行し、 許可(GNT)を得られたら、リクエストがあったトランザクタの 1つを選択して許可を出す。 許可を得たトランザクタは、それをマスタ機能ブロックへ通知し、 リクエストデータを出力する。 Req HUB(reQ) Req reQ Memory Transactor Gnt Gnt Arbiter Interface reQuest Data reQuest Data Block Req Req reQ Memory Gnt Gnt Transactor Arbiter Interface reQuest Data reQuest Data Block 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 16
  • 17. 内部メモリバスの制御方式(3) メモリI/Fブロックがレスポンスデータを返す場合は、 先ず対応するHUB内アービタへリクエストを発行する。 アービタは、リクエストがあったメモリI/Fブロックのうちの1つを 選択して許可を出す。 メモリI/Fブロックはレスポンスデータを出力する。 トランザクタはレスポンスデータをマスタ機能ブロックへ返す。 マスタ機能ブロックはこれを無条件に受け入れる。 HUB(Resp) Req Resp Memory Gnt Transactor Arbiter Interface Response Data Response Data Block Req Resp Memory Gnt Transactor Arbiter Interface Response Data Response Data Block 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 17
  • 18. 機能ブロック一覧 内部バスI/Fブロック 音源系ブロック Transactor FM音源部 HUB ミキサー, エフェクター Register Bus Bridge I2SRX/TX ホストI/Fブロック PWM Phone Out MCU I/F (SPI Slave & UART) 表示系ブロック MicroBlaze MCS I/O Bridge 表示出力部 (w/Cache Ctrl.) AVIデコーダ Programmable Interrupt Ctrl. BitBlt・矩形Fill メモリI/Fブロック 直線描画・三角形描画 Block RAM SPI Flash ROM その他 非同期SRAM MMC I/F MIG (DDR-SDRAM) Bridge キー制御 ※赤字 赤字は過去に開発実績あり。 GPIO 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 18
  • 19. Appendix 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 19
  • 20. 実装上のヒント からFPGAをコンフィグレーション ■ MCUから から をコンフィグレーション MCUからアクセスできるストレージにFPGAコンフィグファ イルを置いておき、電源投入後MCUがそのファイルを読 み込んでFPGAをコンフィグレーションする。 ストレージは、mbed内蔵Flash又はMMCなどが想定される。 に格納したコードをMCSで実行 ■ MMCに格納したコードを に格納したコードを で実行 MicroBlaze MCSの内蔵メモリにブートローダを格納し、 MMCから読み込んだ実行コードを、I/O Bus空間にマッピ ングされた任意のメモリ上に配置し実行させる。 μClinuxなら動作させられるかもしれない。【※要検証】 I/O Bridgeのキャッシュ機能に性能が左右される。 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 20
  • 21. 2012年2月6日 オリジナルMIDIシーケンサ 開発ノート you_ucchy 21