#ミルフィーユ基板(mille-feuille board)とは
ミルフィーユ基板の使用方法概要はこちら→http://qiita.com/my_mil_info/items/ac484c96c867c1b3e702
ソフトの書き方も、間もなく公開します!
ここではハードの仕組みを説明します。基本的にミルフィーユはデジタルスイッチ群を介して自動配線をしながら動いています。Raspberry Pi・ブレッドボード・デバイス間を手で配線していた作業を、この仕組みが手の代わりに自動で行うことによって試作開発の時間を短縮できます。
デバイスボードは理論上、電力が届く限り積層可能ですが、最大数4列×5段を想定して設計されています。
##ミルフィーユ基板の構成
ミルフィーユはRaspberry Pi、ベースボード、モジュール、フラットケーブル、デバイスボードで構成されています。(国内外で特許取得済みですが、デバイスボード部分はオープンハードです。)
###Raspberry Pi
Raspberry Pi A+、B+、2、Zero、3が使用可能です。
B+と同じIO端子ならどれでも使用できますので、今後も新しいRaspberry Piが発売された場合は、B+と同じIO端子であるかを確認してみてください。
Raspberry Piだけではなく、CortexM3やM4版も開発予定です。
自動配線機能は、3線SPI 17MHz 信号で行っています。
(旧MCU GearはI2C 1MHzでしたが、ミルフィーユではより高速なSPI 17MHzに変更しました)
###ベースボード(Baseboard)
ベースボートには2つのチップが搭載されています。
1、デジタルスイッチ群
配線のためのマルチプレクサに似たデジタルスイッチ群があらかじめ書き込まれたFPGA
2、ARM Cortex-M0
デジタルスイッチの動作を補うサブコントローラー
レジスタや通信など比較的面倒な処理を管理しています
ベースボードではFPGAのチップを使用していますが、ユーザーがFPGAそのものをverilog HDLなどで書き換えるわけではありません。
ユーザーが「このデバイスに接続して!」と命令プログラムをライブラリから実行すると、ユーザーの見えないところでFPGAにあらかじめ書き込まれているマルチプレクサが、命令されたデバイスを接続するよう切り替わるという仕組みです。
ミルフィーユはプログラマ向けのデバイスのため、ユーザーが高度なFPGAを駆使して論理回路を再合成する仕組みではありません。
一度デジタルスイッチで配線が終わった後は、デバイスを手で配線したような状態で動かすことができます。
###モジュールボード(Module board)
モジュールボードの役割はベースボード・デバイスボード間の接続制御です。
6層基板にARM Cortex-M0を搭載し、バススイッチをコントロールしています。6層基板でもギリギリの配線です。
1、アドレスの一体化
モジュールボードにデバイスボードを接続すると、自動的にデバイスボードに搭載されているEEPROMからアドレスを読み取り、何のデバイスが接続されたかを認識します。
その際にモジュールボード自体にもデバイスボードと同じアドレスが割り振られます。そうすることでモジュールボードとデバイスボードが一体化・一つのボードとなり、ユーザーからの命令をコントロールできます。
モジュールボードはデバイスボードに繋げてから自分自身のアドレスが割り振られるため、デバイスボード毎にモジュールボードを付け替える必要がなく、どのデバイスボードにも対応できます。
2、信号の保持機能
デバイスボードへの接続終えた際、使用していないデバイスボードのゲートが閉じてしまうため信号がハイインピーダンスになり、その信号がHighかLowか分からなくなってしまします。この信号保持機能は、ゲートが閉じる直前のHighなのかLowなのかの信号を読み取り保持する役割を担っています。
この機能はライブラリ内で自動制御されています。
3、通信遅延
デバイスボードとの通信において、以下の通信遅延が生じます。
・SPI通信:約2nsec
・GPIO通信:約25nsec
・I2C通信:直結
4、独立した電源回路
モジュールボードには3.3Vの独立した電源回路が搭載されており、1つのモジュールボードに対して最大300mAが流せます。
図はRaspberry PiのGPIOを自動配線した際のデジタル端子の詳細です。
・PIN1~4はマルチプレクサやバススイッチを介したGPIO
・SCL、SDAはI2C
###デバイスボード(Device board)
ミルフィーユのデバイスボードには、ブレークアウト基板などにフレキシブルケーブルのコネクタ、デバイスアドレス用のEEPROMが搭載されたものになります。
このEEPROMや基板の配線方法がモジュールボードと連動し、pythonライブラリ、Web上の回路図自動生成ツール、ファームウェア自動変換ツールを操作することが可能です。
・オープンハード(2017年開始予定)
ベースボード、モジュールボードはオープンハードではありませんが、デバイスボードはオープンハードです。また、ユーザーがミルフィーユ対応のデバイスボードを開発し販売することも可能です。
ミルフィーユのデバイスボードには個々にアドレスが設定されています。
ユーザーが開発したデバイスボードにもアドレスを発行し、ミルフィーユ対応のデバイスボードとして別のユーザーにも使ってもらうことができます。
オリジナルのデバイスボードを開発し、モノづくりをもっと楽しみましょう。
###おまけ:UART(serial)バス
UART(serial)バスはベースボード横のフレキシブルケーブルコネクタを使用します。基本的には1対1で動作させることを目的としており固定された配線です。
図はRaspberry PiのGPIOを自動配線した際のデジタル端子の詳細です。
・PIN1,2はマルチプレクサを介したGPIO