【機能本位の機能系統図】
機能系統図は当然”機能”をベースに構成されるべきです。
しかし、電子回路の場合、下位の構成要素が”市販部品”の場合がほとんどで、どうしても“部品に引きづられた”系統図になりがちです。
例としてメモリブロックの回路を示します。
(判りやすくするために、SRAMでの構成としています)
〇メモリブロック
- 全体で[32kアドレス * 8bit]
- [8kアドレス * 8bit]のSRAMを4個使用
- SRAM4個を上位アドレスで指定するために、アドレスデコーダー(74139)を使用
ごく簡単なメモリブロックの回路です。
さて、このブロックの機能系統図を考えてみます。
F0は「32k*8bitのデータを記憶する」です。
問題はその後です。
部品本位に、74139の機能、SRAMの機能をそれぞれ下位レベルの機能にすると、
機能分野がそれぞれの部品(74139,SRAM)になります。
ある意味これは判り易いです。 機能分野と実際の部品がそのまま対応しているからです。
しかし、SRAMの内部には8kのアドレスを選択するためのアドレスでコードの機能が含まれています。
もちろんRead/Writeを制御する機能と8bitのデータを記憶する機能も一緒です。
74139はアドレスの上位2bitをデコードします。 つまり74139も”アドレスをデコードする(選択する)”機能です。74139もSRAM内部のアドレスでコーダも、機能的に行っていることは同じです。
従って、この「アドレスをデコード(選択)する」をひとつの機能としてまとめる事ができます。
これをまとめた機能系統図を作ると、部品境界をまたがった機能が配置される事になります。
そしてその下位機能として、
- 「メモリを選択する」→74139
- 「下位アドレスをデコードする」→SRAM内部のアドレスでコーダ
が定義されます。
このようにすると、F0の下位機能が、
- アドレスを選択する機能分野
- Read/Writeを制御する機能分野
- 8bitデータを記憶する分野
となり、部品に依存しない、抽象化された機能となります。
こうする事により、より容量の大きいSRAM(例えば16k*8bit) が出てきた場合、F0直下の機能の変更は無く、更に下位レベルでの変更にとどまります。
実際には、次に市販されるのは32k*8bit SRAMでしょうから、F0レベルで置き換わってしまうのですが、考え方として、より抽象化された機能系統図と言う事になります。
先の例のように、部品ベースの機能系統図になっていると、機能分野をまたがった2ヵ所の変更になってしまいます。
このように、機能ベースでの機能系統図でより抽象化して記述する事により、変更・改善がしやすくなります。