(57)【特許請求の範囲】
【請求項１】
入力端子として構成された第１の端子と、出力端子として構成された第２の端子とを含んでいるｋ個の入出力端子と、
前記入力端子である第１の端子により受信された特徴づけ信号に応答する少なくとも１つの修飾回路手段と、
１以上のイベントを定めるデータを記憶する第１メモリと、
（ｎ＋ｍ）ビットのデータフォーマットの第２メモリと、
第１のイベントと第2のイベントのそれぞれの実行時に少なくとも第１のイベント出力信号および第２のイベント出力信号を発生して前記第１のイベント出力信号が前記出力端子に送られて出力信号を発生させるように構成されているイベント実行回路手段と、
前記修飾回路手段に応答する第１のアドレス指定回路手段と、
前記イベント実行回路手段から送られる前記第２のイベント出力信号に応答する第２のアドレス指定回路手段とを具備し、
前記各イベントは前記第１メモリのアドレス指定可能な出発アドレスを有し、
前記第２メモリの（ｎ＋ｍ）ビットのデータは、１つの入出力端子の構成を特定するｍビットデータと、第１メモリのイベント出発アドレスを規定するｎビットデータを有しており、
前記第１のアドレス指定回路手段は前記修飾回路手段に応答して前記イベント実行回路手段を動作可能にして、前記イベント出発アドレスで定められた前記第１イベントを実行するように構成され、
前記第２のアドレス指定回路手段は前記第２のイベント出力信号に応答して前記第２のメモリの前記（ｎ＋ｍ）ビットのデータフォーマットを更新するように構成されているプログラマブル制御装置。
【請求項２】
１以上の外部修飾電気信号に応答して制御装置により１以上のイベントを実行する方法において、
前記制御装置は、入力端子として構成されている少なくとも１つの端子および出力端子として構成されている少なくとも１つの端子とを備え、
前記方法は、
(1)それぞれ制御装置の１以上の端子の状態を規定しているｘ個（ｘは１以上の整数）の端子構成状態を指定するステップと、
(2)前記制御装置により実行されるｙ個（ｙは１以上の整数）のイベントを指定するステップと、
(3)前記ステップ(1)で指定された構成状態毎に、前記制御装置の各入力端子に対する入力修飾状態を指定するステップと、
(4)ステップ(3)の各入力端子に対して、前記入力端子に供給された入力信号が前記入力修飾状態を満足したとき前記制御装置により実行されるべきイベントをさらに指定するステップと、
(5)ステップ(1)で指定された各構成状態に対して、前記制御装置の各出力端子のそれぞれに対する出力状態を指定するステップと、
(6)動作される構成状態となるべき構成状態の１つを指定するステップと、
を含む方法。
【請求項３】
さらに、ｐ個のサブイベント（ここで、ｐは２以上の整数である）から成るイベントのうち少なくとも１つを指定するステップを含んでいる請求項２記載の方法。
【請求項４】
さらに、以下の結果、すなわち、
（ａ）オーディオ信号の発生；
（ｂ）タイミング信号の発生；
（ｃ）論理ハイ／ロー信号の発生；
（ｄ）パルシング信号の発生；
（ｅ）別のイベントの活性化；
（ｆ）活性構成状態としての別の構成状態の指定のうちの１つを生じさせるようにイベントまたはサブイベントを指定するステップを含んでいる請求項３記載の方法。
【請求項５】
さらに、前記タイミング信号の終了によって実行されるべきイベントを指定するステップを含んでいる請求項４記載の方法。
【請求項６】
前記イベントのうち少なくとも１つが可変イベントであり、さらに、この可変イベントを別の定めたイベントと等しくするステップを含んでいる請求項２記載の方法。
【請求項７】
前記入出力端子のうちの少なくとも１つがプログラム可能な入出力端子であり、さらに、前記入出力端子を入力端子、出力端子、入出力端子または高インピーダンス端子のいずれかとして構成するステップを含んでいる請求項２記載の方法。
【請求項８】
さらに、プログラミング仕様を少なくとも２つのフィールドに構成するステップを含み、第１のフィールドが１以上の端子構成状態を指定し、第２のフィールドが１以上のイベントおよびサブイベントを指定している請求項２記載の方法。
【請求項９】
さらに、前記ステップによって指定されたデータの少なくとも一部をテーブル・フォーマットに編成するステップを含んでいる請求項２記載の方法。
【請求項１０】
さらに、構成状態およびイベントの仕様をイベント実行のために前記制御装置に記憶されるべきディジタルデータに変換するステップを含んでいる請求項２記載の方法。
【請求項１１】
さらに、前記ディジタルデータをフォトマスクに移送して前記制御装置を作り上げるステップを含んでいる請求項１０記載の方法。
【請求項１２】
構成状態およびイベントの仕様を異なったフォーマットの二次プログラミング言語に翻訳するステップを含んでいる請求項２記載の方法。
【請求項１３】
さらに、ディスプレイ装置上で制御装置の動作を対話式にシミュレートするために次のステップ、すなわち、
（7)少なくとも１つの構成状態の仕様を表示するステップ、
（8)少なくとも１つのイベントの仕様を表示するステップ、
（9)活性構成状態を指示するステップ、
(10)修飾トリガー信号を受信するように端子を指定するステップ、
(11)イベントまたはサブイベントを実行下で指示またはシミュレートするか、あるいはこれら両方を行うステップを含んでいる請求項２記載の方法。
【請求項１４】
さらに、表示されたデータを編集するステップを含んでいる請求項１３記載の方法。
【請求項１５】
さらに、２つのフィールドをブロックとこれらのブロックを相互接続するパスとからなるフローチャートと相関させるステップを含み、各ブロックが前記第１のフィールドの１以上の端子構成状態に対応し、各パスが前記第２のフィールドのイベントに対応する請求項１３記載の方法。
【請求項１６】
さらに、構成状態およびイベントの前記仕様に応答する入出力回路手段を配置し、この入出力回路手段を外部アプリケーション回路と接続して前記制御装置の動作をエミュレートするステップを含んでいる請求項１３記載の方法。
【請求項１７】
前記ｘ個の端子構成状態および前記ｙ個のイベントの仕様が互いに連続した関係に位置づける必要がない請求項２記載の方法。
【請求項１８】
前記プログラミングステップがライン命令セットのいずれも含んでおらず、前記命令セットが１つの演算と少なくとも１つのオペランドによって規定される命令からなる請求項２記載の方法。
【請求項１９】
さらに、前記制御装置のパワーアップ条件を指定するステップを含んでいる請求項２記載の方法。
【請求項２０】
さらに、前記構成状態およびイベントを前記制御装置によって符号化するステップを含んでいる請求項２記載の方法。
【請求項２１】
前記制御装置がマイクロプロセッサである請求項２記載の方法。
【請求項２２】
前記入出力端子が前記制御装置内に設置した機能デバイスに接続されている請求項２記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部電気シミュレーションに応答してシミュレーテッド・オーディオ信号とディジタル駆動信号とからなる出力信号を対話式に発生するプログラマブル制御装置に関する。
【０００２】
【従来の技術】
伝統的なサウンド合成装置は、アナログ・オーディオ・ソース信号をサンプル採取し、サンプル採取された信号を種々の圧縮アルゴリズムでディジタルデータに符号化してからメモリに格納する。再生時には、このディジタル信号を復号し、アナログ信号に変換してオーディオ・トランスジューサを駆動する。後に開発されたプログラム可能なサウンド・シンセサイザは、さらに、デザインをマイクロプロセッサと一体化され、ステップ・バイ・ステップ・アセンブリ言語プログラミング・プロセスによる外部電気シミュレーションに従って合成音を対話式に発生することができる。
【０００３】
【発明が解決しようとする課題】
本発明の目的は、アセンブリ言語の命令セットを学ぶのになんら困難を伴わず、アセンブリ言語プログラミングの概念および技術を徹底的にトレーニングすることなく、また、マイクロプロセッサ・アーキテクチャを理解することなく、普通の人間がプログラミング・プロセスを実施できるようにした簡単な構造のプログラミング・プロセスと共に低コストのプログラム可能なサウンド合成装置を開発することにある。
【０００４】
本発明は、プログラム可能なサウンド合成装置にとって望ましい基礎要素を研究すること、なんら徹底した専門的なトレーニングを受けることなく普通の人間が実施するに充分な程度の単純さで制御システムの動作を表すようにグラフィック・モデルを構築すること、必要なプログラミング機能を組織的に文書化するために簡単なプログラミング・フォーマットを開発すること、最終的に、このモデルおよび開発した簡単なプログラミング・フォーマットで作動する符号化システムならびにハードウェア回路を開発することの創意ある諸段階に向けたものである。
【０００５】
【課題を解決するための手段】
本発明の簡単なプログラミング・プロセスは、２つのテーブルまたは２つのデータ・フィールドを書き入れる段階からなる。第１のデータ・フィールドは、入出力端子の種々の安定または遷移構成状態に名前を付け、入出力端子の構成を定め、入力端子が修飾トリガ信号を受け取ったときに実行されるべきイベントを指定する。第２のデータ・フィールドは修飾トリガ信号を受信したときのイベントの応答を定める。
【０００６】
本発明のハードウェアの実施例は、合成したオーディオ信号またはディジタル出力信号あるいはこれら両方を発生するプログラマブル装置の入出力（Ｉ／Ｏ）構造およびデータ・メモリ構造に向けたものである。代表的なハードウェア実施例は、多数の入出力端子（Ｉ／Ｏ端子）からなり、各Ｉ／Ｏ端子は所定の修飾入力信号を検出するために多数の信号修飾回路；出力信号を送出するための多数の出力信号ドライバ；修飾信号受信時に実行されるべきイベントを記憶するイベント・データ・メモリ；修飾トリガ信号受信時にＩ／Ｏピンの入出力状態を構成すると共にイベント・データ・メモリをアドレス指定するように構成したデータを記憶するＩ／Ｏ状態構成メモリ；イベント・データ・メモリからデータを受信して種々の出力信号を発生するイベント実行回路；イベント・データ・メモリおよびＩ／Ｏ状態構成メモリをアドレス指定するアドレス指定回路からなる。
【０００７】
このプログラミング・プロセスのデバッグも簡単なプログラミング構造の利点を採用している。多くの場合、プログラム・デバッグ・プロセスは、モニタ・スクリーンに表示されているただ１つのページ・データ・テーブルのトリガリング・モードを対話式にアドレス指定することによって実施することができる。この簡単なプログラミング構造は、対話式制御特徴を持つ製品を開発するに要する開発コスト、プログラミング時間、デバッグ時間をかなり低減することができる。
【０００８】
本発明の最も簡単で最小単位で構成した実施例の構造の主たる相違は、マイクロプロセッサ・べースの制御装置と比較した場合、プログラム・カウンタ、演算論理ユニット（ＡＬＵ）、命令コード・デコーダをなんら含んでいないばかりか、スタック・メモリをなんら含んでいないということにある。制御装置のたいていの機能ブロックによって共有されるべき特殊な共通データバスやアドレス指定用バスが全くないのである。クロック信号は、信号を発生するために信号発生器によって要求されない限り不要である。イベントの実行は、マイクロプロセッサの命令セット関連時計回路によるなんらの遅延も生じさせることなく瞬間的である。この簡単なハードウェア構造により、本発明の制御装置のコストは、通常のマイクロプロセッサ・べース・コントローラと比べて低い。
【０００９】
本発明のプログラミング構造は、プログラミング手続きを通常のアセンブリ言語プログラミングで要求されるような逐次論理オーダーとする必要がなく、プログラマが命令セットをなんら学ぶ必要がない。本発明の簡単な構造では、普通の人間が最低限のトレーニングで制御装置を効果的にプログラムすることができる。
【００１０】
サウンド合成機能を削除することによって、本装置は、ＬＥＤアレイのような外部コンポーネントあるいはソレノイドやモータのような適当なモーション・トランスジューサを対話式に駆動するのに使用できる限られた能力のプログラマブル制御装置に縮小される。
【００１１】
本発明の実施例は、たとえば、対話サウンド効果やディジタル信号を発生して外部トランスジューサ装置を駆動する低コストのプログラム可能なサウンド合成装置で用いるのに特に適している。このようなプログラム可能なサウンド合成装置は、多くの電子消費製品、たとえば、セキュリティ・システム、トーキング・クロック、電子玩具、ドアベル、季節贈答品等々における重要な構成要素として広く用いられている。
さらに、本発明の実施例は多くの他の用途、たとえば、論理コントローラ、対話式コントローラ、タイマに有用性を見出している。
本発明の新規な特徴は特に添付の特許請求の範囲に記載してある。本発明は、添付図面と一緒に以下の説明を読んだときに最も良く理解してもらえよう。
【００１２】
【発明の実施の形態】
本発明を理解するためのより簡単な方法は、応用例として図示したプログラマブル装置の好ましい実施例の仕様を定義し、プログラム可能なサウンド・シンセサイザをプログラムするプログラミング・プロセスを研究することである。次のステップはいくつかの簡単な応用例を研究することである。次に、本発明の制御装置、制御方法のハードウェア実施例に説明を敷延し、発明を集積回路に作り、最後に、プログラム・シミュレーション・デバッグ・システムの好ましい実施例を創作する。
【００１３】
応用例と共に説明しようとしている代表的な実施例の仕様は次の通りである。
１．本制御装置は８つのプログラム可能な入出力端子と１つの付加的なオーディオ出力端子とからなる。各端子の参照符号は３ビット二進数で表わしてある。
２．各端子は、入力端子、出力端子、「ドントケア」高インピーダンス端子としてプログラムすることができる。
３．各入力端子は「修飾」特徴づけ入力トリガ信号に応答するようにプログラムされる。好ましい実施例については、４つの代表的な特徴づけ入力信号は次のように定義される。
（ａ）立ち上がりエッジによって特徴づけられ、記号「Ｒ」で表される信号；
（ｂ）立ち下がりエッジによって特徴づけられ、記号「Ｆ」で表される信号；
（ｃ）信号がサンプル採取されたときに論理ハイレベルで特徴づけられ、記号
「１」で表される信号；
（ｄ）信号がサンプル採取されたときに論理ローレベルで特徴づけられ、記号
「０」で表される信号。
４．各出力端子は出力信号を送出するようにプログラムできる。出力信号の３つの例は次のように定義される。
（ａ）記号「Ｈ」で表される論理ハイレベルの出力信号；
（ｂ）記号「Ｌ」で表される論理ローレベルの出力信号；
（ｃ）記号「Ｐ」で表される６ヘルツ方形波パルスからなる出力信号。
５．「ドントケア」高インピーダンス状態は記号「Ｘ」で表わされる。各端子は、上記したような８つの可能性のある状態Ｒ，Ｆ，１，０，Ｈ，Ｌ，Ｐ，Ｘのうちの１つとして指定するようになっている。１つの端子の８つの可能性のあるＩ／Ｏ構成の各々は３ビット二進数で表される。
６．可能性のある構成状態は、最大１６個あり、I/O State# 0からI/O State# 15として示してある。各Ｉ／Ｏ構成状態は、４ビット二進数で表してある。一度にＩ／Ｏ状態の１つだけがプログラムによって指定されて制御装置のＩ／Ｏ構成を表わす。I/O State# 0はデフォルトの活性Ｉ／Ｏ構成状態、すなわち、制御装置が最初にパワーアップされたときの活性Ｉ／Ｏ構成状態として定められている。
７．１つのＩ／Ｏ構成状態の１つの入力端子が修飾トリガ信号を受信したときにはいつでも、所定のイベントを実行するように命令される。
８．最大で３２の所定イベントがある。各イベントは、５ビット二進数で表わされている。
【００１４】
ここで、１つのＩ／Ｏ端子を構成する方法や実施例のＩ／Ｏ状態およびイベントの最大数が例示であることは了解されたい。Ｉ／Ｏ構成状態およびイベントの数は任意融通性のある数であってもよいが、実際には、数が増えれば、それだけ内部レジスタやメモリ・データ長でより多くのビットを必要とし、したがって、製品コストが高くなる。制御装置の設計時にちょうど良い数を定めるのが好ましい。
【００１５】
本発明に従ってプログラム可能なサウンド・シンセサイザをプログラムする好ましいプログラミング・プロセスの一例が、図１のプログラミング・フォーマットによって表わしてある。このプログラミング・フォーマットは２つのフィールドからなる。第１のフィールドは、テーブル１０に示されており、全部で８つのＩ／Ｏ端子を列挙する第１座標１２と、すべてのＩ／Ｏ構成状態を列挙する第２座標１１とからなる。テーブルの各要素は或る特定のＩ／Ｏ構成状態での１つの端子の構成を表わしている。プログラミング・プロセスの第１部分は、先に定義したような８つの記号Ｒ、Ｆ，１，０，Ｘ，Ｈ，Ｌ，Ｐのうちの１つでテーブルの各要素を特定するものである。１つの端子が入力端子として構成された場合にはいつでも、番号を付けたイベントが指定されることになる。これは、修飾入力信号が受け取られたときに実行されるべきイベントである。要素１３の「F:E11」はI/O State# 1の端子の構成（Pin 1）を示し、「F」は修飾信号が立ち下がりエッジで特徴づけられたことを示し、F:E11は立ち下がりエッジ信号が端子１によって受信されたときに実行されるべきEvent# 1を示している。要素１４の「F:E11」は、立ち上がりエッジ信号が端子２で検出されたときにEvent# 2が実行されるべきであることを示している。要素１５は、端子６がドントケア端子であることを示している。入力端子が「Ｘ」に構成されたときにはいつでも、この端子によって受信された任意のトリガ信号が無視される。出力端子が「Ｘ」に構成されたときにはいつでも、出力端子は高出力インピーダンスを持つように構成される。
【００１６】
さて、テーブル２０に注目されたい。このテーブルはプログラミング・フォーマットの第２部分からなり、実行されるべきイベントを定義している。或るイベントは１つまたはそれ以上のサブイベントからなる可能性がある。実行時、各イベントまたはサブイベントは、出力信号を発生すること、活性Ｉ／Ｏ構成状態を修正すること、タイマ・カウンタを始動すること、実行を別のイベントに指示すること、などのようなタスクを実施する。テーブル２０はテーブル１０に従って実行されるべきイベントすべての詳細な内容を列挙している。行２１は、Event# 1が３つのサブイベント２２（STATE# 1），２３（SOUND 1），２４（EVENT# 1）からなる。I/O State# 0が活性Ｉ／Ｏ構成状態であると仮定すると、端子１の立ち上がりエッジ信号の受信がEvent# 1の実行をトリガする。すなわち、サブイベント２２，２３，２４が順番に実行されることになる。サブイベント２２は、活性Ｉ／Ｏ構成状態がI/O State# 0からI/O State# 1へ変化したことを示している。
【００１７】
次いで行われるオーディオ信号の再生が「SOUND 1」として示してある。サウンドの再生が完了すると、サブイベント２４が実行され、実行を「EVENT# 1」にループバックし、別のサイクルにわたって「SOUND 1」を再演する。このルーピングは、I/O State# 1の端子１から４までのいずれかが修正信号を受信するまで続く。たとえば、端子１が立ち下がりエッジ信号を検出すると、Event# 1の「SOUND 1」ルーピングが中断され、Event# 11が実行される。Event# 11はコントローラに命令し、I/O State# 0に活性Ｉ／Ｏ構成状態として戻させる。「ＥＮＤ」記号はイベントの終了を示しており、制御装置はI/O State# 0によって定義されるように次の修正入力信号を受信すべく待機するアイドル・モードになる。
【００１８】
制御装置のパワーアップで、Ｉ／Ｏ構成状態はデフォルト・パワーアップＩ／Ｏ状態として定義されることになる。すなわち、制御装置のパワーアップ直後の活性Ｉ／Ｏ構成状態と定義されることになる。便利な表記法では、I/O State# 0をデフォルト・パワーアップＩ／Ｏ状態と定義することである。あるいは、Event# 1をパワーアップで最初に実行されるべきデフォルト・パスと定義してもよい。
【００１９】
ここで、各Ｉ／Ｏ構成状態が他のそれぞれとなんら順序関係を持たず、テーブル１０を任意の順序に配置できるということに注目されたい。同様に、テーブル２０に列挙されたイベントは、いずれも、行２１におけるように別のイベントのサブイベントとして示されない限り、別のイベントとの順序関係をなんら持たない。イベントは任意の順序で番号を付けることができ、望むならばプログラマが番号をスキップしても良い。順序関係を有するサブイベントは、すべて、単一のイベント行リスティングに配置される。この配置により、通常のアセンブリ言語プログラミングの多数行リスティングと比較して、プログラマはより鮮明なプログラム・ピクチャを得ることができる。
【００２０】
図１のプログラム・テーブルは前述したように２つのフィールドに構成してあるが、本発明のプログラミング・プロセスについての学習の簡便さおよびトレース性の容易さを保ちながらプログラミング・テーブルのフォーマット構造に種々の修正を加えることも可能である。
【００２１】
図２および図３は別の簡単な応用例を示しており、ここでは、制御装置の１つのトリガ・ピンがトリガできないトリガ入力端子としてプログラムされる。図３の行４１はPin２からPin 8までがすべてドントケア端子であることを示している。要素４２は、立ち上がりエッジ信号がPin 1に受信されたときに、Event# 1が実行されることを示している。テーブル５０は、Event# 1が最初にサブイベント５１を活性化することを示している。このサブイベントは、「SOUND」５２が発生させられる前にState# 1を活性Ｉ／Ｏ構成状態であると特定したものである。テーブル４０の行４５は、Pin 1が「SOUND」５２の発生中、高インピーダンス状態に変わり、したがって、Pin 1がトリガできないトリガ・ピンとなることを示している。サウンドの再生の終了時、I/O State# 0は活性状態として示され、Pin 1は別の修正済みのトリガ信号を受信する準備が整っている。
【００２２】
２つのＩ／Ｏ構成状態およびEvent# 1は図２に示すように信号フローチャートによって表わすことができる。I/O State# 0およびI/O State# 1の各々はブロックで表されている。矩形のブロック３１は、I/O State# 0が安定状態であることを示している。楕円形のブロック３４は、I/O State# 1が遷移状態であることを示している。矢印線３２は、活性状態がテーブル５０におけるEvent# 1のサブイベント５１の命令に従ってI/O State# 0からI/O State# 1へ切り替えられたことを示している。矢印線３３は、「SOUND」５２が再生された後に活性状態をI/O State# 0へ戻すサブイベント５３を表わしている。
【００２３】
図４および図５は別の応用例を示しており、ここでは、制御装置は４種類のサウンド（SOUND# 1からSOUND# 4）とトリガするようにプログラムした４つのトリガ端子（Pin 1からPin 4）を持つように構成してある。サウンドの再生中、対応するトリガ端子はそれ自体のトリガ信号によってトリガできないが、他の出力端子の受信した修正トリガ信号によって中断され、再トリガされることになる。  図５の行７７は、Pin 5からPin 8までがすべてドントケア端子であることを示している。要素７４は立ち上がりエッジ信号をPin 4が受信したときに、Event# 4が実行されることを示している。テーブル８０は、Event# 4が最初にサブイベント８２を活性化することを示している。このサブイベントは、「SOUND# 4」８３の発生前にI/O State# 4を活性Ｉ／Ｏ構成状態であると特定したものである。テーブル７０の行７８は、「SOUND# 4」８３の発生中にPin 4が高インピーダンス状態に変化したことを示している。したがって、Pin 4はトリガ不能のトリガ・ピンとなる。行７８はPin 1からPin 3にも命令してトリガ可能状態を保持し、 Pin 1からPin 3の受信した任意の修正トリガ信号が「SOUND# 4」の再生を中断することになるようにする。サウンド再生終了時、State# 0はサブイベント８４に従って活性状態と指定され、Pin 4が別の修正トリガ信号を受信する準備を整える。
【００２４】
５つのＩ／Ｏ構成状態および４つのイベントは、図４に示すように、単一のフローチャートで表わすことができる。I/O State# 0からI/O State# 4の各々はブロックで表わしてある。矩形のブロック６４は、 I/O State# 0が安定状態であることを示している。楕円形のブロック６１、６５、６６、６７は、I/O State# 1からI/O State# 4が遷移状態であることを示している。矢印線６９は、活性状態がテーブル８０におけるEvent# 4のサブイベント８２の命令に従ってI/O State# 0からI/O State# 4へ切り替えられたことを示している。矢印線71は、「SOUND# 4」８３が再生された後に活性状態をI/O State# 0へ戻すサブイベント８４を表わしている。
【００２５】
図２，図４のフローチャートは、プログラミング・テーブル４０，５０，７０，８０それぞれの内容と密接に相関している。より複雑な用途では、それが初めてフローチャートをスケッチするときに非常に役立ち、Ｉ／Ｏ構成状態やイベントに番号を振るよりも意味のある名前を与えることができるということにユーザは気がつくであろう。フローチャートに従って必要なＩ／Ｏ構成状態およびイベントの数を定め、最後に、フローチャートの相互連結した矢印線によって示すようにＩ／Ｏ構成テーブルとイベント・リストを書き込む。
【００２６】
図６および図７は、別の応用例を示しており、ここでは、制御装置は、２つのトリガ端子と「ＯＦＦ」端子（Pin 1、Pin 2）と６つの出力端子（Pin 3〜Pin 8）を持つように構成してある。出力端子は、各々、１つのＬＥＤを駆動するように接続してある。６つのＬＥＤは一列に接続してあって、明滅効果を示す。Pin 1が最初にトリガされてＬＥＤの列の順番の明滅を開始させる。各ＬＥＤは順次に０．５秒間オンとなる。Pin 1が再びトリガされると、制御装置は第２明滅モードに変わり、１つ置き３つのＬＥＤが同時に0.５秒間オンになる。Pin 1の順次のトリガ操作が２つの明滅モードをトグルすることになる。この明滅プロセスはPin 2がトリガされるまで継続する。
【００２７】
最初に図６に示すようなフローチャートを計画立てることによって、この応用例をユーザがプログラムすることがより容易となる。矩形のブロック９１は、I/O State# 0を、パワーアップ状態および待機状態の両方を表わす安定状態として示している。修正済みのトリガが受信されると、逐次ＬＥＤ明滅モード９２がEvent# 1の開始を表わす矢印線９４を通して開始される。このルーピング・プロセス９７は６種類のＬＥＤ出力状態からなる。ルーピング・プロセス９７の各状態は０.５秒間隔で異なったＬＥＤを順次に点灯させる。Pin 2が停止パルスを受信すると、明滅シーケンスが中断され、活性状態が矢印線９５で示すようにEvent# 3を通ってI/O State# 0に戻される。引き続く修飾信号をPin 1が受信したならば、ルーピング・プロセス９７が中断され、矢印線９６で示すようにEvent# 2を通して交互明滅モード９３に切り替わる。交互明滅モードのルーピング・プロセス９８は２つのＬＥＤ出力状態からなる。各状態は０．５秒間３つのＬＥＤを点灯する。トリガ・パルスが再び受信されると、明滅プロセスがEvent# 1を介して逐次明滅モード９２に戻る。停止パルスが受信されると、活性状態がEvent# 3を介してブロック９１に切り替えられ、制御信号が待機モードに戻る。
【００２８】
このフローチャートからは、このプログラミング・プロセスが９つのＩ／Ｏ構成状態を必要としていることがわかる。I/O State# 0はパワーアップＩ／Ｏ構成状態と待機モードを表わしている。６つのＩ／Ｏ構成状態は逐次ＬＥＤ明滅モードのために必要であり、２つのＩ／Ｏ構成状態は交互ＬＥＤ明滅モードに必要である。さらに、３つのイベントを定義しなければならない。Event# 1は逐次ＬＥＤ明滅モードを示し、Event# 2は交互ＬＥＤ明滅モードを示し、Event# 3は待機モードを示す。
【００２９】
図６のフローチャートはテーブル１００、１２０の構造に向けたものである。各Ｉ／Ｏ構成状態およびイベントを数字で示す代わりに、各Ｉ／Ｏ構成状態およびイベントに意味のある名前が付けてある。同様に、各Ｉ／Ｏ端子にも名前が付けてあってプログラミング・プロセスを容易にしていている。テーブル１００において、Pin 1はトグルピンとして「ＴＧ」の名前が付けてあり、Pin 2は明滅プロセスを停止させる「ＯＦＦ」端子である。Pin 3からPin 8はＬＥＤ１からＬＥＤ６として示してあり、これらの端子ピンがそれぞれＬＥＤ１からＬＥＤ６に接続してあることを示している。I/O State# 0は、要素１０２で示すように、「STANDBY MODE」として示してある。I/O State# 1は、要素１０１で示すように、「LED1 ON」として示してある。I/O State# 7は、要素１０１で示すように、「ALT 1」の名前が付けてあり、第１の交互ＬＥＤライトアップ・パターンを表わしている。I/O State# 8は、要素１１１で示すように、「ALT 2」という名前が付けてあり、第２の交互ＬＥＤライトアップ・パターンを表わしている。
【００３０】
パワーアップ時、I/O State# 0はパワーアップ活性Ｉ／Ｏ構成状態として定められる。Pin 1のみが立ち上がりエッジ修正信号を検出できる。他のすべての端子は高インピーダンス状態にある。コーディング要素１０７で示すように、Pin 1が修飾トリガ信号を受信したとき、Event# 1、１２１が実行され、活性Ｉ／Ｏ状態を、サブイベント１２２で命令された通りにI/O State# 1に切り替え始め、段階的にI/O State# 6まで切り替える。各Ｉ／Ｏ構成状態は、別のＩ／Ｏ構成状態が制御を引き継ぐまで、「DELAY 0.5」の遅延時間だけ維持される。I/O State# 1により、ＬＥＤ１のみが０．５秒間点灯する。このルーピング・プロセスは修正トリガ信号をPin 1またはPin 2が受信するまでPin 4からPin 8まで繰り返される。ここで、I/O State# 1からI/O State# 6までのルーピング・プロセス中、Pin 1の受信した任意の修正信号がEvent# 2、１２４を指し示すことに注目されたい。このイベントが次いでI/O State# 7とI/O State# 8を切り替える。１１２で示す３つの交互のＬＥＤは、Pin 1またはPin 2が別の修正信号を受信するまで同時に点灯する。ここで、I/O State# 1からI/O State# 8までの間に立ち上がりエッジ信号がPin 2によって受信されたときに、行１２５に示すEvent# 3が実行され、サブイベント１２７で命令された通りに活性状態をI/O State# 0の待機モードへ戻すことに注目されたい。
【００３１】
このプログラミング・プロセスのアーキテクチャは、なんら構造プログラミング概念を知らないか、あるいは、或る用途を組織的にプログラムするマイクロプロセッサ・アーキテクチャを理解していない未熟なプログラマのためのビルトイン式構築法を提供する。このプログラミング・プロセスは、容易に学習でき、構造簡単で、フォローすべき複雑な設計ルールをなんら含まないフローチャートで始めることができる。実際のプログラミング・プロセスでは、設定したフローチャートに従って２つのテーブルにグループ分けした仕様の書き込みがある。取り扱うべき二進数も十六進数もなく、学習すべきメモリマップＩ／Ｏ概念もなく、気をつけるべきメモリ・オーバーフローその他の保持状態もなく、注意を払うべき参入点またはプログラム・カウンタもなく、覚えておくべき命令セットもない。さらに、通常、行毎の命令コードと１つまたはそれ以上のオペランドからなる命令セットもない。このプログラミング方法は、「LOAD R1, 64H」とか「JUMP LINE 4FFH」などという命令セットで混乱する普通の人間にとっては非常にユーザフレンドリーである。もっと重要なのは、この簡単なフローチャートの構造が実際のプログラミング・プロセスに直接統合されるということであり、テーブルの書き込みは、本来、プログラムの流れのクリーンカット構造を提供するということである。異なったＩ／Ｏ構成状態における各Ｉ／Ｏ端子の状態は良く組織化され、はっきりと一緒に列記され、論理の流れのトレースを容易にする。通常、完全なプログラムを１頁の紙に列記することができ、これは普通の人間がプログラムのフルピクチャをマスタするのに非常な助けとなる。
【００３２】
ここで、本発明の簡単なプログラミング・プロセスが２つのテーブルのプログラムしたデータを、マイクロプロセッサべースの制御装置によって解釈されるべき別のプログラミング言語に翻訳する翻訳プログラムを設計することによって現存のマイクロプロセッサべース制御装置をプログラムすることに応用できることに注目されたい。他のプログラミング言語としては、機械語、アセンブリ言語、BASICのようなマクロ言語またはハイレベル言語がある。さらなる強化プログラミング・ステップとしては、翻訳されたプログラムを再検討して冗長な命令を除き、プログラム・メモリを節約したり、翻訳されたプログラミング言語で書いた付加的なプログラム・セグメントによってプログラム内容を強化したりすることがある。
【００３３】
あるいは、前述のプログラミングのイベントが別の言語で書いたサブイベントを含んでいてもよい。この構成によれば、本発明のプログラミング方法によって提供されるユーザフレンドリー構造を維持しながらシステムによって支援される他のプログラミング言語をフルに活用できる。他の言語で書いたプログラム・セグメントと共存する本発明の簡単なプログラミング方法の扱いやすい性質により、Ｉ／Ｏ関連プログラミングを構築する理想的なプログラミング方法を得ることができる。
【００３４】
本発明の易しいプログラミング方法をアセンブリ言語に翻訳したとき、図１に示すテーブル１０の各Ｉ／Ｏピンの状態は、状態の変化の有無に係わらず、アセンブリ言語によって書かれた種々のＩ／Ｏプログラミングに翻訳され得る。もし、たとえば、テーブル１０の例におけるように、ピン１〜４がトリガを入力することにのみ供され、ピン５〜８が出力にのみ供されるようにマイクロコントローラが構成されているならば、テーブル１０は２つのテーブルに分割することができる。第１のテーブルは４つの入力ピン１〜４のみを指定するようにする。第２のテーブルは４つの出力ピン５〜８のみを指定するようにする。この修正により、インタプリタ・プログラミングを簡略化し、プログラミング・メモリを節約することができる。
【００３５】
前記のことからわかるように、本プログラミング方法の好ましい実施例は普通の人間による制御装置の組織的なプログラミングを容易にするように開示したものである。開示したプログラミング方法と密接に相関するハードウェア・デザインの好ましい実施例が図８に示してある。ハードウェア実施例およびプログラミング方法との関係の説明を容易にするために、プログラミング方法を説明するために記載したプログラマブル制御装置の仕様を採用する。ここで、本発明の範囲および応用がこの仕様に限らないことは理解してもらいたい。入出力回路１４４は、プログラミング方法応用例で定義したような８つの端子１４５と、各端子の状態を構成する制御回路と、端子が出力端子として構成されたときに信号を駆動するドライバ回路と、端子が入力端子として構成されたときにトリガ信号を検出する修飾回路とからなる。
【００３６】
入出力回路１４４は、Ｉ／Ｏ構成状態メモリ（Ｉ／Ｏ状態メモリ）１３２から制御信号を受け取り、Ｉ／Ｏ端子１４５を最大１６個の可能性のある状態のうちの１つに構成する。Ｉ／Ｏ構成状態メモリは１６頁のメモリからなり、各頁のメモリは８つのＩ／Ｏ端子１４５の各々を構成するのに必要なデータを含む１つのＩ／Ｏ構成状態を表わしている。制御装置のパワーアップ時、パワーアップ回路１３１が１頁のＩ／Ｏ構成状態メモリ１３２をデフォルトＩ／Ｏ構成状態または活性Ｉ／Ｏ構成状態として活性化し、この頁のデータは入出力回路１４４に送られてＩ／Ｏ端子を構成する。
【００３７】
修飾済みのトリガ信号の受信時、Ｉ／Ｏ状態メモリ１３２から得られた対応するイベント・アドレス情報が信号パス１４６を通してイベント・アドレス指定回路１４７に送られる。対応するイベント・データ・メモリ１４９の出発アドレスがアドレスバス１４８でセットアップされ、イベント実行回路１３８の制御の下にイベントが実行される。このイベント実行回路１３８は対応するイベント・データ・メモリ１４９に含まれるイベント・サブイベント情報を分析し、反応する。サウンドを発生するサブイベントがイベント実行回路１３８内に設置したサウンド再生回路を活性化することになる。こうして生じたオーディオ信号は、信号パス１４１および代替出力端子１４０を通して出力信号１３５として発生させられる。あるいは、６ヘルツ・パルス列のような出力信号を「Ｐ」Ｉ／Ｏ構成コードによって定義されるように発生させてもよい。このパルス列はＩ／Ｏ端子１４５の１つおよび信号パス１３９を通して送られる。サブイベントが図１のサブイベント２４のような別のイベントを始動する操作を要求するときには、イベント実行回路１３８が情報をイベント・アドレス指定回路１４７に送り、新しいイベントが開始させられる。
【００３８】
サブイベントが図１のサブイベント２２のような別の入出力構成状態を活性化する操作を要求するときには、イベント実行回路１３８は情報をＩ／Ｏ状態アドレス指定回路１３４に送り、制御パス１３３を介して別の頁のＩ／Ｏ状態メモリ１３２を活性化する。
図９は図８に示す入出力回路１４４の機能ブロックの詳細な回路図である。回路１７２は端子１の入出力回路を示している。ここには、図示実施例の仕様によって定義されているように端子２〜８に対応する７つの同一の回路１７３〜１７４がある。入出力回路の各端子はＩ／Ｏ構成状態メモリ１３２から３ビット・コード１５１を受け取り、端子の構成を定める。３ビット・コードは復号され、３ないし８行デコーダ１５７によって８つの可能性のある入出力構成１５８のうちの１つを選ぶ。
【００３９】
修飾回路１６２は、「Ｒ」，「Ｆ」，「１」または「０」の入力構成コードによって構成される特徴づけ信号に応答するように設計してある。入力構成コード「Ｒ」，「Ｆ」，「１」または「０」の１つによって端子が入力端子として構成されたときには、選定された入力構成に対応するイネーブル・ライン１６０が修飾回路１６２の対応する部分を活性化して端子パッド１７１から受け取る信号をモニタする。もし修飾されたトリガ信号が検出されたときには、修飾回路イネーブル・ライン１７０が、対応するイベント・アドレス・ポインタ・コードが論理回路１５６を通って図８のイベント・アドレス指定回路１４７に送られるのを可能とする。図８のＩ／Ｏ構成状態メモリ１３２から得られたイベント・アドレス・ポインタ・コード１５２は、応用例装置のデザイン仕様において定義したように、３２種類のイベントをアドレス指定する５ビット・コードである。
【００４０】
「Ｈ」，「Ｌ」，または「Ｐ」コードによって端子が出力端子として構成された場合には、修飾回路１６２は、同時に入力端子、出力端子の両方として役立つことをこの端子に要求する特殊目的デザインがない限り、通常は使用禁止とされる。出力ドライバ１６１は制御信号１５９に従って端子パッド１７１へ適切に駆動される出力信号を与える。もしこの出力信号が「Ｈ」または「Ｌ」レベル以外の波形信号、たとえば、デザイン仕様で定義された６ヘルツ・パルスである場合には、この波形信号を端子ピンを通して送出するために出力信号ソースが要求される。この応用例では、６ヘルツ信号がイベント実行回路１３８または独立したオシレータ回路のいずれかから与えられる。この信号は、「Ｐ」コードが選ばれたときに端子パッド１７１へ送られる。ここで、このデザインが図８の代替端子１４０に加えて入出力端子のいずれかを通してオーディオ信号を発生させることができることに注目されたい。
【００４１】
端子が入力端子として構成された場合、出力ドライバ１６１は通常使用禁止とされる。端子が記号「Ｘ」で示すドントケア状態または高インピーダンス状態を持って構成された場合には、修飾回路１６２、出力ドライバ１６１の両方が使用禁止とされる。制御装置のコストを低減するために、いくつかの端子を入力専用端子として指定して出力ドライバ１６１のコストを節約してもよい。この場合、いくつかの端子を出力専用端子として指定して対応する修飾回路１６２のコストを低減してもよい。
【００４２】
ここで、指定された８つのＩ／Ｏ構成が例示であり、特殊な機能の任意の修飾回路や出力信号発生器を加えて制御装置のパワーを強化してもよいことは了解されたい。たとえば、正誤装置を電話製品のテストのためにプログラマブル・テスト機として使用する場合に、 ＤＴＭＦトーンの検出を修飾回路として加えてもよいし、周波数スウィーピング信号を出力信号として発生させてもよい。
【００４３】
ここで、図１０には、図８のＩ／Ｏ構成状態メモリ１３２、Ｉ／Ｏ状態アドレス指定回路１３４の好ましい実施例が示してある。メモリ１８４はＩ／Ｏ構成状態State# 0のための８つのＩ／Ｏ端子を構成するのに必要な１頁のデータを包含する。このメモリ頁は８バイトのデータからなり、８つの端子を構成する。８つのＩ／Ｏ構成組み合わせをあらわす各データ・バイトの最初の３つのビットは１つの端子のＩ／Ｏ構成を定め、データバス１９２を介して図９の３ないし８行デコーダ１５７に送られる。最後の５つのビットは３２のイベント出発アドレスを表わしている。これら５ビット・データはデータバス１９２を通して図９の論理回路１５６に送られ、修正済みの入力トリガが受信されたときに図８のイベント・アドレス指定回路１４７に送られる。３ビット・データおよび５ビット・データが対となって作用するので、これらのデータは、好ましい実施例に示すように同じワードの部分とするのにより便利であり、あるいは、同様の動作原理によってアドレス指定されるべき種々のメモリ・ブロックに配置するのにより便利である。
【００４４】
１つのＩ／Ｏ端子が出力端子として構成された場合、５ビット・データの内容はイベント・アドレス指定回路に不適となる。この場合、５ビット・データは、スケールファクタのような出力信号の出力特性をさらに定めて出力信号の振幅を調節するのに使用することができる。別の実施例において、データの最初の３つのビットは１出力フラグ・７入力構成を定めるように構成してもよい。出力フラグが検出されたとき、データの残り５つのビットを使用してどの種類の出力信号を発生させるべきかを指定する。この構成によれば、メモリサイズをさらに大きくすることなく８ビット・フォーマットによってアドレス指定されるべき入出力構成の数を効果的に増やすことができるが、メモリの最初の３つのビットを復号し、出力フラグが検出されたときにメモリの次の５つのビットを参照するのにより多くのハードウェアを必要とすることになる。
【００４５】
実施例１８０は、１６種類のプログラマブルＩ／Ｏ構成状態を表わす１６頁のＩ／Ｏ構成状態メモリからなる。一時にこのＩ／Ｏ構成状態の１つだけが活性Ｉ／Ｏ構成状態として指定される。前述したように、I/O State# 0をパワーアップ・デフォルトＩ／Ｏ構成状態として決めておくと便利である。図８のＩ／Ｏ状態アドレス指定回路１３４は、図１０の４ないし６行デコーダ１８２または１６ビット・ラッチで表わすことができる。イベント実行回路が新しい活性Ｉ／Ｏ構成状態アドレスを受け取ったときにはいつでも、デコーダ１８２に情報が送られ、このデコーダがアドレスを復号し、１６頁のメモリの１頁を使用可能として活性Ｉ／Ｏ構成状態メモリとする。このメモリ頁は次に入出力回路にダウンロードされてＩ／Ｏ端子を構成する。
【００４６】
図１１はイベント・データ・メモリ、イベント実行回路および関連したアドレス指定回路の実施例を示す。５ビット・イベント・ポインタ２０５が５ないし３２行デコーダ２１０に送られ、ここにおいて、ルックアップ・テーブル２１２に記憶された３２のイベント出発アドレスの１つがピックアップされる。各イベント出発アドレスはイベント・データ・メモリ２１３に置かれたイベントの出発ポイントを定める。この出発アドレスはイベント・アドレス・カウンタ２１１にロードされ、イベント実行回路２０２を始動し、イベント・データ・メモリ２１３から得られたデータに従って出力信号を発生させる。イベント実行回路２０２は制御装置の要求に従ってこの技術分野では周知の種々の一般的な回路からなる。たとえば、音声合成コントローラの場合、イベント実行回路は、ＰＣＭデコーダ、ディジタル・アナログ変換器のような通常のサウンド・シンセサイザ・チップに必要なハードウェア回路からなり、イベント・データ・メモリに記憶されたデータは符号化／圧縮されたサウンド・データおよび関連タイミング・データである。イベント実行回路の別の実施例として、ＤＴＭＦトーン発生器、音符発生器、制御装置の特殊用途で必要とされる他の任意の信号操作回路または信号発生回路がある。これらいずれでも、イベント・データ・メモリは発生しようとしている信号を記述するデータを記憶する。イベント実行回路によって発生させられた出力信号は代替出力端子２０４または図９の出力ドライバ１６１に送られる。
【００４７】
イベント・データ・メモリが図１のサブイベント２４によって示されるような別の宛先イベントの実行に向けられたサブイベントを包含する場合、この宛先イベントのアドレスがパス２０９を通してイベント実行回路２０２によってアドレス・カウンタ２１１にロードされ、宛先イベントの実行を開始させる。イベント・メモリが図１のサブイベント２２によって示されるような別のＩ／Ｏ構成状態を活性化することに向けられたサブイベントからなる場合には、４ビットＩ／Ｏ構成状態アドレス指定信号がパス２０１を通して図１０のアドレス・デコーダ１８２に送られてＩ／Ｏ構成状態メモリの所望頁を活性化する。
【００４８】
５ないし３２行イベント・アドレス・デコーダ２１０およびイベント・アドレス・ルックアップ・テーブル２１２は、５ビット・アドレス、「ｑ」ビット・データの別のメモリで置き換えることができる（ここで、「ｑ」ビットは通常５ビットよりも長いイベント・データ・メモリのアドレス長を表わしている）。この行デコーダは、回路を実際の集積回路に作られたときにメモリ・スペースおよびトレース・ルーティング・オーバーヘッドを節約するのに使用される。同様に、図９の３ないし８行デコーダ１５７は、Ｉ／Ｏ端子を直接構成する８ビット・メモリを使用することによって除くことができる。また、図１０の４ないし１６行デコーダの代わりに、１６頁のＩ／Ｏ構成状態メモリの１頁を選ぶ１６ビット・メモリあるいは１６ビット・シフト・レジスタを用いてもよい。
【００４９】
イベント実行回路の最も簡単な実施例では、イベントのイベント・データ・メモリ２１３は、イベント実行回路のどのハードウェア・ジェネレータをスイッチオンとすべきかを指定し、また、後続のイベントのアドレスを指定するメモリ・データの単一ワードであってもよい。この場合、イベント・アドレス・カウンタ２１１およびパス２０８を介してカウンタを増分させるクロック回路は不要となる。サウンド・シンセサイザ・チップの場合、符号化した信号サンプルを連続的に取り込み、ディジタル／アナログ変換器を制御するためにクロックが必要である。より複雑な実施例では、イベント実行回路２０２がマイクロプロセッサべースの構造を含んでもよい。全ハードウェア・コストはあまり低減しないが、本発明の実施例は入力・トリガリングに対する瞬間的な応答性を与える。
さらに、本発明はマイクロプロセッサを支援し、それをＩ／Ｏ端子をポーリングすることから解放する。その結果、全体の応答時間がさらに短くなる。より重要なのは、この構造が革新的なユーザフレンドリーなプログラミング方法によってプログラマを効果的に支援するということである。
【００５０】
大量生産では、図８〜図１１に示すような実施例は集積回路（I.C.）に作らなければならない。図７のテーブル１００、１２０のような用途のプログラムしたデータをＩ／Ｏ構成状態メモリ１３２、図８のイベント・データ・メモリ１４９および図１１のルックアップ・テーブル２１２に格納されるべき二進数データに変換するのに簡単な復号プロセスが必要である。集積回路を作る標準のプロセスに続いて、これらの二進数データは最初はフォトマスクに変換され、こうしてできたフォトマスクを用いて通常の集積回路作製プロセスを通して集積回路を作る。通常、大量生産では、図８のＩ／Ｏ構成状態メモリ１３２、イベント・データ・メモリ１４９および図１１のルックアップ・テーブル２１２はリードオンリメモリ（ROM）として作られる。プログラム開発プロセスの状況では、上記の読み取り専用メモリの代わりに読み取り書き込みメモリ（RAM）、消去可能なプログラム可能読み取り専用メモリ（EPROMおよびEEPROM）あるいは一時プログラム可能読み取り専用メモリ（OTP）からなる特殊な集積回路が、プログラムを実験し、高価で時間のかかる完全なI.C.作製プロセスを通すことなく実演サンプルを提供するのに望ましい。変換されたプログラム・データは、次に、外部データ・ソースを通してこれらのメモリ領域にダウンロードされる。
【００５１】
制御装置のプログラム可能特徴を強化するためには、限られた量の読み取り書き込みメモリ（RAM）またはレジスタを上記のプログラム可能メモリ領域に加えると望ましい。図１２は、２つの読み取り書き込みレジスタをイベント・ルックアップ・テーブル２１２に加えたことを除いて、図１１の実施例と基本的に同じ実施例を示している。第１レジスタは「TIMER」レジスタという名前が付けてあり、タイマのカウント終了時に実行されるべきイベントを示すのに用いられる。「TIMER REGISTER」２３０を活性化するストローブ線２３４はイベント実行回路２０２内に設置したタイマ・カウンタからタイムアウト信号を得る。イベント・テーブルをプログラムするとき、サブイベントは図１３に示すようなフォーマットで示され、タイマ・カウンタを活性化する。
【００５２】
EVENT# 1、２９１のプログラミングに従って、サブイベント２９３「TIMER 6 SEC:EVENT# 3」は、図７のテーブル１２０に示す先のタイミング・フォーマット「DELAY 0.5 SEC」と比べて同一の動作となる。ただし、このとき、タイマは次のサブイベント２９４と並列に作動し、６秒の期間終了時にEVENT# 3の実行を開始する。また、タイマが作動している間、タイマを再始動したり、タイミング動作を停止させたりすることも望ましい。再始動は「TIMER t SEC:EVENT# k」サブイベントを再アドレス指定することによって簡単に達成される。タイマ・カウンタを停止させるには「TIMER OFF」で示す別のサブイベントが必要である。
【００５３】
読み取り書き込みレジスタ２３１は、間接的にイベントをアドレス指定することができる。この特徴により、或るイベントの宛先アドレスをプログラムの流れの要求に従って時々刻々変えることができる。イベント・テーブルをプログラミングするとき、サブイベントは図１４に示す方法で示してイベントの間接アドレスを活性化することができる。EVENT# 1，３０４は、立ち上がりエッジがコーディング要素３０５に従ってPin １，３０４によって最初に受信されたときに「可変イベント」のアドレスを定める。TG 1がトリガされる毎に、EVENT# 4，３１７が実行される。EVENT# 4は、最初、すべてのトリガ・ピンをオフとし、次いで、ホーン・サウンドを再生する。その後、「可変イベント」のアドレスに従ってこの別のサウンドが再生される。可変イベントがEVENT# 1におけると同様にEVENT# 2に等しくなるように定められると、或る期間にわたって、サイレン・サウンドが発生させられる。ここで、EVENT# 2が「可変イベント」をEVENT# 3，３１６に再構成し、したがって、次にPin 1が修正済みのトリガ信号を受信し、EVENT# 4が実行されたときに、ホーン・サウンドに続いてEVENT# 3，３１６によって命令された通りにエンジン作動サウンドが発生することになる。EVENT# VAR=EVENT# kフォーマットが受信されたときにはいつでも、EVENT# kのアドレスが図１２の「可変イベント・レジスタ」に送られる。EVENT# VARが後にアドレス指定されると、「可変イベント・レジスタ」２３１の内容によってアドレス指定されたイベントが実行されることになる。
【００５４】
この簡単な単頁プログラムはプログラミング・プロセスのデバッグ・プロセスを容易にする。図１５はデバッグ・ツールの好ましい実施例を示しており、ここでは、プログラム全体がビデオ・スクリーンに表示され、プログラムの流れをシミュレートして対話式のデバッギング・プロセスを容易に行える。活性Ｉ／Ｏ構成状態および実行中のイベントは、常に、スクリーン上にハイライト状態で示される。トリガ・ピン・ボタン３４５，３５６および修飾信号ボタン３４１，３４２，３４３，３４４はプログラマが入力ピンのトリガをシミュレートできるように設計されている。制御装置が「パワーアップ」ボタン３３８をトリガすることによってパワーアップされたとき、I/O State# 0，３２１はハイライト表示される。次に、Pin １がP1ボタン３４５および立ち上がりエッジ・ボタン３４１をトリガすることによってトリガされる。EVENT# 1のサブイベントが論理の流れに従って１つずつハイライト表示され、テーブル３２０のハイライト領域が変化し、それに従ってＩ／Ｏ構成状態が活性として指定される。サブイベント３３２が実行されると仮定すると、I/O State# 4，３２３が次に活性状態となり、ハイライト表示される。Pin １がこの時にトリガされると、プログラムの流れが中断され、EVENT# 2が実行される。オートラン・ボタン３３６が押されると、修飾入力ピンを１つずつ自動的にトリガすることによってシミュレータがすべての可能性のあるプログラム・ラン組み合わせを自動的に試みることができる。任意のオープンエンド・プログラムあるいは閉ループがオートラン・プロセスが完了した後に１つずつ列挙される。プログラマは、次に、オープンエンド・プログラムまたは閉ループが望ましいかどうかを検査することができる。
【００５５】
シミュレータ・デバッグ・ツールは、８つのＩ／Ｏピンを開発システムのインタフェース回路を通じて外部の応用回路と接続することによって回路エミュレータ内でリアルタイムに容易に修正することができる。プログラミング方法と同様に、デバッグ・ツールの好ましい実施例は、論理の流れがスクリーン上にはっきりとハイライト表示され、実際の用途におけると同様の方法で段階的にトレースされるので、プログラマを支援するきわめてユーザフレンドリーのデバッグ・ツールである。さらに、ユーザが学ぶべき複雑なシミュレータや回路内エミュレータ制御命令もまったくない。好ましい実施例の普通でないメモリ構造の故に、集積回路の実際のレイアウトにおいて、Ｉ／Ｏ構成状態メモリはメイン・イベント・メモリから分離して実際の集積回路をレイアウトするときに相互接続トレーシング・オーバーヘッドを低減すると好ましい。Ｉ／Ｏ構成状態メモリの位置は、図１６に示すようなアドレス指定可能な入出力端子の数に従って種々の小さいメモリ・ブロックに分解すると好ましい。たとえば、図１０に示すように、各頁の最初のバイト・メモリを端子＃１に関連付ける。１６頁（１６個のＩ／Ｏ構成状態）１８４〜１８６の最初のバイトのすべてを共にグループ分けし、図９に示すように、端子１あるいは関連した出力ドライバ１６１、修飾回路１６２に接近してメモリを位置決めすることが好ましい。図１６において、領域３８３は、実際の集積回路レイアウト３８０の端子１の端子結合パッドを表わしている。領域３８２は、図９の関連した出力ドライバ１６１、修飾回路１６２の領域を表わしている。領域３８１は、図１０の１６頁のＩ／Ｏ構成状態１８４〜１８６の最初のバイトを表わしている。領域３８６は、対応する端子結合パッドに近接して分布させたＩ／Ｏ構成状態メモリから分離したメイン・イベント・メモリを表わしている。この配置によれば、集積回路のチップサイズを縮小し、製造業者、ユーザの両方にとってコストの利益を与えることができる。集積回路のこの経済的な構造は、マイクロプロセッサべースの制御装置に改造することができる。マイクロプロセッサはＩ／Ｏ端子の構成を定めるように供した付加的なメモリ・ブロックからなるように改造できる。
【００５６】
前述のことからわかるように、制御装置のハードウェア実施例は、電子回路技術者が低コストのプログラマブル装置を開発し、本発明のユーザフレンドリーなプログラミング方法と効果的に対話できるように適切に開示されている。
【００５７】
ここに説明した本発明の好ましい実施例は例示であり、種々の改造、仕様バリエーション、回路再配置を容易に実施して均等な結果を得ることができる。これらはすべて添付の特許請求の範囲内に含まれることを意図している。たとえば、入出力端子の定義は集積回路の接続端子に限るべきではない。同様の集積回路内に組み込まれた別の機能デバイスに「内部的に接続した」入力端子あるいは出力端子であってもよい。図８に示すように、イベント実行回路１３８は、信号パス１３９を経由してオーバーフロー信号を与えて入出力回路１４４の「内部」入力端子をトリガするタイマ・カウンタであってもよい。
【図面の簡単な説明】
【図１】  制御装置をプログラムするデータ・フォーマットを示すプログラマブル構成テーブルの実施例を示している。
【図２】  或る応用例のフローチャートである。
【図３】  図２のフローチャートに従ってプログラムされたテーブルである。
【図４】  別の応用例のフローチャートである。
【図５】  図４のフローチャートに従ってプログラムされたテーブルである。
【図６】  別の応用例の別のフローチャートである。
【図７】  図６のフローチャートに従ってプログラムされたテーブルである。
【図８】  ハードウェアの構造を示すブロック図である。
【図９】  代表的な入出力回路の構造を示す回路図である。
【図１０】  Ｉ／Ｏ構成状態メモリの代表的な構造およびアドレス指定回路を示す回路図である。
【図１１】  代表的なイベント・データ・メモリ、イベント実行回路および関連したアドレス指定回路のインタフェース状態を示す回路図である。
【図１２】  図１１の拡大回路図である。
【図１３】  タイマ・プログラミング機能を示すプログラマブル構成テーブルの実施例を示す。
【図１４】  間接的アドレス指定機能を示すプログラマブル構成テーブルの実施例を示す。
【図１５】  プログラム構成テーブルのデバッギングのためのプログラムの流れをシミュレートする代表的なスクリーン・ディスプレイである。
【図１６】  集積回路内のＩ／Ｏ構成状態メモリを示すレイアウト設計例を示す。
【符号の説明】
１０…テーブル
１１…第２座標
１２…第１座標
１３…要素
１５…要素
２０…テーブル
２１…行
２２…サブイベント
２３…サブイベント
２４…サブイベント
３１…矩形ブロック
３２…矢印線
３３…矢印線
３４…楕円ブロック
４０…テーブル
４１…行
４２…要素
４５…行
５０…テーブル
７４…要素
７７…行
８０…テーブル
８２…サブイベント
９１…矩形ブロック
９２…逐次ＬＥＤ明滅モード
９４…矢印線
９７…ルーピング・プロセス
１００…テーブル
１０７…コーディング要素
１１２…交互のＬＥＤ
１２２…サブイベント
１２５…行
１２７…サブイベント
１３２…Ｉ／Ｏ状態メモリ
１３５…出力信号
１３８…イベント実行回路
１４０…代替端子
１４４…入出力回路機能ブロック
１４５…端子
１４７…イベントアドレス指定回路
１４９…イベント・データ・メモリ
１５６…論理回路
１５９…制御信号
１６０…イネーブル・ライン
１６２…修飾回路
１７１…端子パッド
１７２…回路
１７３…回路
１７４…回路
１８２…４ないし１６行デコーダ
１８４…メモリ
１９２…データバス
２０２…イベント実行回路
２０５…５ビット・イベント・ポインタ
２０９…パス
２１０…５ないし３２行イベント・アドレス・デコーダ
２１１…イベント・アドレス・カウンタ
２１２…イベント・アドレス・ルックアップ・テーブル
２１３…イベント・データ・メモリ
３０２…ルックアップ・テーブル
３１２…ルックアップ・テーブル
３３８…「パワーアップ」ボタン
３３６…オートラン・ボタン
３４１…立ち上がりエッジ・ボタン
３４５…トリガ・ピン・ボタン
３４６…トリガ・ピン・ボタン
３４１…修飾信号ボタン
３４２…修飾信号ボタン
３４３…修飾信号ボタン
３４４…修飾信号ボタン
【図１】
0004057079.tif 000002
【図２】
0004057079.tif 000003
【図３】
0004057079.tif 000004
【図４】
0004057079.tif 000005
【図５】
0004057079.tif 000006
【図６】
0004057079.tif 000007
【図７】
0004057079.tif 000008
【図８】
0004057079.tif 000009
【図９】
0004057079.tif 000010
【図１０】
0004057079.tif 000011
【図１１】
0004057079.tif 000012
【図１２】
0004057079.tif 000013
【図１３】
0004057079.tif 000014
【図１４】
0004057079.tif 000015
【図１５】
0004057079.tif 000016
【図１６】
0004057079.tif 000017