鳥なき里のマイコン屋(38) Rabbit(Digi)、独自の進化を遂げた強力8bit CISC

Digi International社というと、ZigBeeなどの無線モジュール製品などを思い浮かべる方が多いのではないかと思われます。開発キットなども充実していて使いやすい製品がそろっている印象です。実験、試作、少量生産に適する「出来合いの通信モジュール」の会社という理解で、使用しているマイコン類などのチップは全て外部から調達しているものと考えていました。勿論、外部から調達しているチップも多いのですが、一部は自社内に持っていたのです。

今回調べさせていただく Rabbit という名のプロセッサはもともとRabbit Semiconductorという会社の製品だったのですが、いつの間にかDigi社に買収されており、RabbitはDigi社のブランドになっておりました。それだけでなく、Digi社の方向性とマッチして、独自の進化を遂げておりました。なかなか強力。

※「鳥なき里のマイコン屋」投稿順Indexはこちら

※「うさちゃんと一緒」投稿順Indexはこちら 「うさちゃんと一緒」シリーズではRabbit4000プロセッサを実際に使っていろいろやってます。

今回取り上げさせていただくRabbitを、Digi社はマイクロプロセッサと呼称しており、「自己申告」的にはマイクロコントローラ、MCUとは言い難くはあったのです。しかし、以下の理由から「こちら側(MCU)」に含めることにいたしました。

全てコンパクトなモジュール製品として販売されており、モジュールとしての機能を見れば、ROM/RAM積んだマイクロコントローラと呼ぶのに全く問題ない。

ちと拡大解釈気味ですが、ご勘弁ください。その背景には、

Rabbitプロセッサは、「基本8ビットのCISC」なので今更マイクロプロセッサ分類でもないだろ~

という偏見(贔屓目)も多少含まれていると言わざるを得ません。しかし、「基本8ビットのCISC」と侮るなかれ、最新機種(といっても6年くらいは経過しているみたいですが)の Rabbit6000 は、かなり強力なコントローラに仕上がっています。

まずは、CISCたるRabbitプロセッサのベースですが、命令セットマニュアルを読むと直ぐに想像されるのが、

ザイログ・ニーモニックで書かれたZ80

との類似性です。懐かしさがこみあげてきます。実際、マニュアルによると Z80、Z180、HD64180(古い日立のZ80上位互換機)などへの「リスペクト」が垣間見えるのです。引用させていただきましょう。

Rabbit microprocessor designers have had years of experience using Z80, Z180, and HD64180 microprocessors in small single-board computers.

ただし、Z80とバイナリ互換性を保っているわけではなく、Z80のテイストを残した独自のアーキテクチャと言うべきでしょう。8ビットがベースといいつつも、アドレス、データバスなども拡張され、16ビットクラスの構造です。しかし、なかなか凄いのが、集積している周辺回路なのです。古いRabbit Semiconductor社時代の機種でも周辺回路はかなりいろいろ集積していたのですが、Digi社の傘下に入ったことが効いたのか、最上位機種Rabbit 6000は強力です。

    1. Ethernet (10/100Base-T)
    2. WiFi (802.11a/b/g)
    3. USB Host(2.0)

EthernetはPHYまで入っています。(過去の機種見ると、例えば、Ethernetは初期は外付けチップ使用だったのが、MACまでとりこむようになったとか、進化を続けてきたことが分かります。)これ以外に、通常のMCUが持っているような、シリアルポート類、タイマ類、パラレルポート、アナログ系の入出力も使えます。なお、Rabbit6000は、1MバイトのRAMもチップ上に搭載しており、コードはモジュール上のシリアルFlashからRAMにブートロードする型式です。そして、

このクラス、「8ビット」としては超速の200MHz動作

Rabbitは、それほど日本では有名ではないですが、海外ではRabbitに根強いファンがついていることも納得できる近代的なスペックだと思います。その上、Digi社がモジュールとして販売しているので、コネクタにEthernetケーブルを接続すれば即使えるお手軽さです。M2M、IoT向けの応用には適した組み込みモジュールに見えます。もしZ80愛を感じるならば。

根強いファン層が付いている理由の一つとして、開発環境もあるようです。私は残念ながら使ったことが無いのですが

Dynamic C

というC言語、といっても、世の中標準のCとはちょっと違う(最近は互換性改善したようですが、昔は標準Cからの移植はしずらかったようです)環境です。このC言語も独自進化を遂げており、並列な処理など簡単に書けてしまうようです。多くのMCUでは実時間処理が多く、割り込み多用、複数の仕事を並列に処理しないとならないことも多いと思います。32ビットクラスでは、RTOS(リアルタイムOS)などを導入してそういった管理を任せますが、8ビットクラスでは、全部自分らで書かないとイケないことが多い筈。めんどい。そんな折、言語仕様に一癖あるとはいっても、それほどな切実なリアルタイム性はないにせよ、Cで簡単に書けてしまうというのは魅力かも。

ただ、この頃、この手の組み込み用マイコン・モジュールは

Linux搭載機、大抵、Arm Cortex-AベースのSoCプロセッサ機

など増えています。ネットワークとのコネクティビティ向けで使うことを考えると、その辺の上のクラスとぶつかる可能性も多いような気もします。特にZ80何?というような若者には。個人的には今後も生き延びて欲しいマイコンに思うのですけれど。

鳥なき里のマイコン屋(37) Bridgetek 熱帯のマイコン屋 へ戻る

鳥なき里のマイコン屋(39) MarvellのWiFi MCU へ進む