Hybrid Statesの意図

HybridStatesの当初の目的は、ISP(インシステムプログラミング)PLD/FPGAをダイナミックに書き換えて使用できないかという発想のもとに作られました。S-RAMベースのPLDやFPGAでは何度でもPLDの中身のハードウェアを書き換えることができます。必要に応じて、あたかもメインメモリにプログラムをダウンロードするようにハードウェアを書き換えられれば、時間平均回路使用集積密度を向上させることができます。すなわち、その時間その時間、必要な回路を流し込むことで、回路の使用効率を上げることができるわけです。他のページで紹介しているWLA1640ロジアナオシロもそういったコンセプトがあり、主要部分のハードウェアをダウンローダブルにすることで、回路使用効率を上げることで、多機能化と全体的に見てコストダウンを図ることを考えていました。
流し込む回路はどういったものが適するか、という点に関しては大変難しい問題があります。これらの学術的考察に関しては多方面でやられていると思いますし、専門でもないので言及できません。HybridStatesではその点に関しては深く考えているわけではありませんが、設計の方向として、ハードウェアとソフトウェアをもう少し近づけて、シームレスに設計できる方向性はあったほうが良いという考えがありました。 ハードウェアとソフトウェアとの大きな違いとして、物理的にハードウェアのリソースは限られるという点があります。ソフトウェアでは逐次処理によってできることが、ハードウェアではチップの容量としてどうしても不足する場合が考えられます。この場合に、すぐにソフトウェアに切り替えて処理できるような機能と、またその振り分けが動的にスイッチ可能にするためには、プログラム設計の記述、もしくはスキームそのものから変えたほうが良いと考えられ、実現に一番近い方法としてのHybridStatesのHybrid表現を用いた訳です。
HybridStatesを作るにあたって、最終的にはハードウェアとソフトウェアのコデザインのようなことも考えていましたが、まずは、ハードウェア部分もブロック化されたソフトシミュレーション方式で実現し、その後ハードウェアへの追い出しを図るというスケジュールを考えていました。 しかし、後者の部分は未だ実現していません。実は、前者の部分、プログラムの部分的論理式記述そのものが、便利であることに気付き、本末転倒ではあるものの、そこから水平的進化をしているのが現状のHybridStatesなのです。
HybridStatesは、イベントドリブンで処理を行うプログラムの作成に適しています。このような、特には制御用のプログラムを作る際には、最近盛んな状態遷移図を用いたプログラミングが相性が良いですが、状態遷移図と論理式はまた相性が大変良いものです。
5.HYS-C サンプルプログラム(2)JTAG解析では、ロジックアナライザで採取したJTAGデータの解析プログラムを紹介していますが、この様に、まさに状態遷移図(すでに分かっている)通りに推移するようなデータを処理するプログラムに関しては、プログラムの構造についてはもはや一切設計する必要がありません。プログラミングにかかる時間は大幅に削減されます。

論理式記述された部分をソフトウェアで実行する、論理シミュレーションモジュールは別の意味合いではプログラムの実行制御をするカーネルであるとも言え、イベントドリブンでマルチタスクに実行制御を行う、簡易的なリアルタイムOSのような感覚でも使えるというおまけまでつきます。

プログラムの制御構造と個別処理を完全に分離できる点にも利点があります。論理式記述した、プログラム制御構造に関して修正を行う場合は、プログラム本体の再コンパイルの必要はなく、さらに、動的に制御構造のみをロードすることも可能です。このような設計技法を用いることでスパゲッティプログラミングは駆逐できます。
制御構造とプログラム構造が1対1対応できるプログラミング記述方式を用いた場合、極端な話、設計仕様書が不要です。このような環境で作成されたプログラムは可読性に富み、メンテナンスや拡張に非常に効率良く対応できます。
戻る