H8は、1988(昭和63)年に、日立製作所から発売された、日本の純国産マイコンでした。2003年から、ルネサスが製造・販売事業を継承していますが、現在、シリコン・デバイスの新規の注文は受け付けていません。(新規採用非推奨)
シリコン・デバイスの代替品としては、RXマイコンをおすすめしています。しかし、今でも、ルネサスは、H8マイコンをIPとしてなら販売しています。 IPは、8ビット、16ビット、32ビットそれぞれのH8系マイコン製品として、次のようなラインアップをそろえています。
CPUのビット幅 | IP |
---|---|
8 | H8/300 |
16 | H8S |
32 | H8SX |
しかし、H8と名前の付くマイコンの中で一番よく知られたのは、おそらくH8/300HのH8/3048Fグループでしょう(あるいは、ほぼ同じ構成で、フラッシュROMがちがう、H8/3052F) 。2003年当時のカタログが見つかったので、その一部を図1に示します。
図1. 2003年のフラッシュ内蔵マイコンのカタログの一部 H8/3048は最初の製品の1つで、
その後、単一電源化されている(H8/3048F-ONE)
このような経緯をふまえるなら、H8/3048Fを16ビット・マイコンの代表製品としてIPにすべきかもしれません。しかし、ルネサスは、あえてH8SをIPにしてみました。
それは、H8SがH8/3048Fの上位機種であり、上位互換性を持つからです。
さらに、H8/3048Fが開発された(少なくとも1994年の発売以前の)当時は、Verilog-HDLなどのハードウェア記述言語による設計は行っておらず、CADによる回路図設計を行っていました。そのCPU部分の写真を図2に示します。構造が見て取れると思います。
図2. H8/300Hの最初の製品のCPU部
上部が命令デコーダ、下部がデータバス
一方で、H8Sの設計は、その後、H8/300Hの回路をVerilog-HDLで書き直したものへ、さらに機能を追加したものです。したがって、今にちのEDAツールによる論理合成が可能です。 そのようなわけで、ルネサスでは人気機種であったH8/3048Fではなく、H8SをIPとして販売しています。
H8/3048FのようなH8/300HマイコンのかわりにH8Sを使おうとする場合、いくつか不安を持たれると思います。そこで、以下に、それらへの回答をまとめておきました。
- 命令セットがちがうのでは?
H8Sは、H8/300Hへの上位互換性を持っているので心配はいりません。H8/3048Fの命令数が62種類であるのに対し、H8Sは、CPUがH8S/2000の場合は65種類、H8S/2600の場合は69種類に増えていますが減っているものはありません。 - MCU動作モードがちがうのでは?
H8/3048Fの拡張モード(動作モード1~6)では、外部バス権を外部に解放して、外部アドレス空間を利用します。H8S IPでは、この機能はサポートしません。
これは、ASICの場合、外部アドレス空間にDRAMをつけるくらいなら、チップ内部に組み込めばよいという発想からです。(*)
(*)正確に言えば、派生IPで、サポートしたこともあります。しかし、この場合も、バスはオリジナルの3ステートバス駆動ではなく、セレクタによるものに変更しています。これは、FPGAでの実装を考慮したためです。 - フラッシュメモリがちがうのでは?
H8/3048Fの"F"は、フラッシュメモリの"F"です。このフラッシュメモリに関しては、オリジナルではなく、別途新しいフラッシュメモリ IPを接続していただきます。
H8/3048Fに付いていたオリジナルのフラッシュメモリは、電源12Vでデータを書き込まなければなりませんでした。これはあまりに古く、今にちのチップで再現する意味はありません。
お客様の好みに応じて、ご自由にフラッシュメモリを追加していただければよいと思います。 - バス・インターフェースがちがうのでは?
前記のように、チップ外部に別のデバイスをつなぐための外部バスはサポートしていません。 周辺モジュールをつなぐための内部バスのインタフェースはH8S仕様なので、H8/3048Fとは相違があります。しかし、新規モジュールのバスへの接続は、ほとんどの場合は可能だと思います。 - 周辺モジュールの種類がちがうのでは?
H8/3048Fからの置き換えをしやすいように、H8Sコアに、H8/3048Fと同じような周辺モジュール(割り込みコントローラ、タイマユニットなど)をつなげたH8S C3000サブシステム IPを用意しました。
H8/3048グループの周辺モジュールのサポート状況は以下の通りです。 なお、〇になっているモジュールも、H8/3048Fのオリジナルそのものではなく、オリジナルを改良した新版モジュールになっています。
H8/3048グループの周辺モジュール | H8S IPサブシステムのサポート状況 |
---|---|
割り込みコントローラ | ○ |
バスコントローラ | △(タイミングはH8S相当です) |
リフレッシュコントローラ | △(インターバルタイマ機能のみ) |
DMAコントローラ | ○ |
I/Oポート | △(拡張モードでの外部バス関連信号の端子機能はサポートしていません) |
16ビットインテグレーテッドタイマユニット(ITU) | ○ |
プログラマブルタイミングパターンコントローラ(TPC) | ○ |
ウォッチドッグタイマ(WDT) | ○ |
シリアルコミュニケーションインタフェース(SCI) | ○ |
スマートカードインタフェース | ○ |
A/D変換器 | FPGA用の参考実装を用意しています |
D/A変換器 | 外付け用の参考実装を用意しています |
RAM | 同期式メモリのインタフェースを用意しています |
マスクROM | 同期式メモリのインタフェースを用意しています |
フラッシュメモリ | × |
クロック発振器 | × |
〇のついた新版モジュールでは、例えば、レジスタの空きビットに新しい機能を割り当てるなどをしています。したがって、デバイス製品のH8/3048Fと100%同じではありません。しかし、新版モジュールの方が、拡張、デバッグ、RTLコードの整理がなされているので、断然こちらをおすすめします。
実際にこれをFPGAに実装し、「H8/300Hアプリケーションノート内蔵I/O編」のアセンブラプログラムを実行した例を図3に示します。
ブログ: FPGAマイコンご紹介 ~FPGAにH8Sを組み込もう~
図3.「H8/300Hアプリケーションノート内蔵I/O編」のIPによる実行
左が「4相ステッピングモータ出力例」の実行の様子
右が「サイン波出力」の出力(H8/3048のレジスタを介して、外部D/A変換器を制御)
このように、ほとんどは同じように使えますが、細かい点で気になることがあれば、
弊社 [email protected]
まで、お問い合わせください。また、IPはソースコードを開示しますので、周辺モジュールについては、気に入らないところをお好みで修正していただけます。例えば、初期値を変更して、初期設定を不要にするなどができます。
H8/3048F、あるいはH8/3052FなどのH8/300HマイコンのIPをさがしているお客様には、断然H8S IPを利用するようにおすすめします。