【機能本位の機能系統図】

機能系統図は当然”機能”をベースに構成されるべきです。

しかし、電子回路の場合、下位の構成要素が”市販部品”の場合がほとんどで、どうしても“部品に引きづられた”系統図になりがちです。

例としてメモリブロックの回路を示します。
(判りやすくするために、SRAMでの構成としています)

〇メモリブロック

  • 全体で[32kアドレス * 8bit]
  • [8kアドレス * 8bit]のSRAMを4個使用
  • SRAM4個を上位アドレスで指定するために、アドレスデコーダー(74139)を使用

ごく簡単なメモリブロックの回路です。

32k*8bitメモリブロック回路

32k*8bitメモリブロック回路

さて、このブロックの機能系統図を考えてみます。

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ヵ所の変更になってしまいます。

 

このように、機能ベースでの機能系統図でより抽象化して記述する事により、変更・改善がしやすくなります。