JP2797137B2 - 電子楽器用処理装置 - Google Patents

電子楽器用処理装置

Info

Publication number
JP2797137B2
JP2797137B2 JP2170161A JP17016190A JP2797137B2 JP 2797137 B2 JP2797137 B2 JP 2797137B2 JP 2170161 A JP2170161 A JP 2170161A JP 17016190 A JP17016190 A JP 17016190A JP 2797137 B2 JP2797137 B2 JP 2797137B2
Authority
JP
Japan
Prior art keywords
data
scpu
mcpu
address
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2170161A
Other languages
English (en)
Other versions
JPH0460595A (ja
Inventor
隆二 宇佐美
康祐 斯波
広一郎 太期
和夫 小倉
潤 細田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2170161A priority Critical patent/JP2797137B2/ja
Priority to US07/709,101 priority patent/US5200564A/en
Publication of JPH0460595A publication Critical patent/JPH0460595A/ja
Priority to US08/001,184 priority patent/US5691493A/en
Priority to US08/486,606 priority patent/US5584034A/en
Application granted granted Critical
Publication of JP2797137B2 publication Critical patent/JP2797137B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

【発明の詳細な説明】 [発明の技術分野] この発明は電子楽器用処理装置に関し、特に電子楽器
用処理装置の構造的なアーキテクチャに関する。
[発明の背景] 近年、電子楽器はコンピュータ化されている。しか
し、大量で高速のデータ処理が必要な楽音の生成に係る
部分は音源回路と呼ばれる専用構造のハードウェアで行
われており、マイクロコンピュータは楽器への制御入力
(鍵盤やコンソールパネルからの入力、MIDIその他の外
部制御入力、内部または外部の演奏メモリからの入力
等)を処理し、音源回路に適したコマンドを音源回路に
転送するに留まっている。
楽音生成処理は音源回路ハードウェアで行い、楽器の
制御入力の処理をマイクロコンピュータで行うという電
子楽器のシステムアーキテクチャーにはいくつかの問題
がある。第1の音源回路ハードウェアは楽音パラメータ
を処理する種々の処理段階の随所にデータを一時的に記
憶する記憶装置、演算を行う演算回路を必要とするので
必然的に回路規模が大きくなる。第2に音源回路ハード
ウェアを設計変更する場合に、しばしば大規模な回路変
更が余儀なくされ、多大の開発時間、労力を要する。更
にマイクロコンピュータと音源回路ハードウェアとの間
のインターフェースについても、音源回路ハードウェア
ごとに検討し直し、開発し直す必要がある。
以上の理由から、本件出願人は音源回路ハードウェア
を使用することなくマイクロコンピュータのプログラム
制御だけで楽音を生成することのできる電子楽器用処理
装置を提案した(特願昭63−334158号)。
この出願の実施例は単一のCPUがプログラムを実行し
て楽音を生成する構成を示している。この場合、楽音生
成能力を上げるにはCPUの処理速度を上げる必要があ
る。残念ながら、CPUの処理速度は使用する半導体デバ
イスの動作速度限界等によって制限されるため、実現で
きる楽音生成能力に限界があった。
[発明の目的] したがって、この発明の目的は音源回路ハードウェア
を使用することなく比較的高い楽音生成能力を有する電
子楽器用処理装置を提供することである。
[発明の構成、作用] この発明によれば、メインCPU及びこのメインCPUによ
って制御される少なくとも1つのサブCPUからなり、前
記メインCPUは、楽器への入力を処理するための入力処
理プログラムと楽音を生成するための処理を行う楽音生
成プログラムを記憶するMCPUプログラム記憶手段と、所
定のサンプリング周期で割り込み信号を発生するタイマ
ーインターラプト制御手段と、通常は前記MCPUプログラ
ム記憶手段から入力処理プログラムを読み出すととも
に、このタイマーインターラプト制御手段からの割り込
み信号を受ける毎に前記MCPUプログラム記憶手段から前
記入力処理プログラムに代えて楽音生成プログラムを読
み出すMCPUアドレス制御手段と、前記MCPUアドレス制御
手段により前記MCPUプログラム記憶手段から読み出され
たプログラムの各命令を解読するMCPU解読手段と、前記
MCPU解読手段にて解読された楽音生成用プログラムの各
命令に基づき、前記MCPU解読手段により解読された入力
処理プログラムの各命令に基づいて生成された、楽音の
生成に必要なデータを用いて楽音生成に必要な演算処理
を行って第1の楽音データを生成するMCPU演算処理手段
と、前記MCPU演算処理手段による第1の楽音データの生
成終了に応答して前記サブCPUに対して起動信号を供給
するとともに、前記サブCPUにて生成された第2の楽音
データを読み取るサブCPU制御手段と、前記MCPU演算処
理手段にて生成された第1の楽音データ及び前記サブCP
Uにて生成された第2の楽音データを出力する出力手段
と、を有し、前記サブCPUは、楽音を生成するための処
理を行う楽音生成プログラムを記憶するSCPUプログラム
記憶手段と、前記メインCPUからの起動信号を受ける毎
に前記SCPUプログラム記憶手段から楽音生成処理プログ
ラムを読み出すSCPUアドレス制御手段と、前記SCPUアド
レス制御手段により前記SCPUプログラム記憶手段から読
み出されたプログラムの各命令を解読するSCPU解読手段
と、前記SCPU解読手段にて解読された楽音生成処理プロ
グラムの各命令に基づき、楽音の生成に必要なデータを
用いて楽音生成に必要な演算処理を行って第2の楽音デ
ータを生成するSCPU演算処理手段と、を有することを特
徴とする電子楽器用処理装置が提供される。
この構成によれば、従来のような音源回路ハードウェ
アを必要とせずにCPUの数に応じて高い楽音生成能力を
有する電子楽器用処理装置を得ることができる。また、
個々のCPU自体のハードウェアは構造上、格別の差異が
ない同一のものを使用でき、基本的には各CPUが実行す
るプログラムについてのみ、各CPUの処理目的に合わせ
たものを使用すればよく、電子楽器用処理装置としての
システム構築が容易となる。
楽音信号の生成処理を並列に実行する手段は、1例と
して、複数のCPUの各々が音源チャンネルを分担する形
式で並列処理を行う態様をとる。例えば、第1のCPUが
N個の音源チャンネルに対する楽音信号生成処理を取り
扱い、第2のCPUが別のN個の音源チャンネルに対する
楽音信号生成処理を取り扱う。この構成は同時発音可能
なポリフォニック数を増大させるのに有効である。
[実施例] 以下、図面を参照してこの発明の実施例を説明する。
<概 要> 本実施例はこの発明の電子楽器を適用したものであ
る。本実施例(第1〜第34図)は種々の特徴を含んでい
る。第1の特徴は、楽音信号を生成する音源としてプロ
グラムで動作する複数のマイクロコンピュータ処理装置
(CPU)を使用することであり、従来のような専用構造
のハードウェア音源は不要である。1つのCPUがメインC
PUあるいはマスターCPU(10)として働き、音源処理の
みでなくアプリケーション(この場合、楽器)に従う入
力装置(鍵盤、機能キー等)、出力装置(DAC等)を取
り扱う(第4図、第5図)。他のCPUはマスターCPUに対
してサブCPUないしスレーブCPU(20)として働き、音源
処理を実行する(第6図)。したがって、音源処理につ
いて各CPUの負担が分担される構成である。
第2の特徴はサブCPUが動作を開始し、終了するメカ
ニズムを関係しており、本実施例によれば、サブCPUの
動作は、マスターCPUに対して音源処理を要求するタイ
マインタラプトを合図として開始し、その結果、マスタ
ーCPUとサブCPUにおいて音源処理が並行に実行される。
サブCPUの動作(音源処理)が終了するとその終了信号
によってサブCPUはリセット状態(停止状態)に移行す
るとともにその終了信号がマスターCPUに伝えられる
(第8図、第16図)。この特徴により、マスターCPUは
サブCPUの動作期間を有効に管理、把握できる。更に、
この特徴により、高速処理が要求される音源処理タスク
(楽音信号のデジタルサンプルを生成する仕事)を効率
よく実行できる。
本実施例の第3の特徴はメインプログラムからタイマ
インタラプト処理ルーチンに渡すデータの更新(転送)
問題に関係する。インタラプト処理ルーチンの実行の結
果、インタラプト処理ルーチンにおいて参照すべき複数
のデータ(例えばエンベロープ目標値、エンベロープレ
ートのようなエンベロープパラメータ)を更新する必要
が生じる。この複数のデータの更新の実行命令はメイン
プログラム中に含まれる。即ち、この複数のデータはメ
インプログラムが更新し、タイマインタラプト処理ルー
チンが参照するデータである。このような複数のデータ
は、全体として意味ある情報を構成するので、メインプ
ログラムにおいて複数のデータのすべてが更新されない
うちにインタラプト処理ルーチンに制御が移ってはなら
ない。これを防止するため、第1の方式としてデータ更
新が完了するまでインタラプトをマスクしてインタラプ
ト処理ルーチンへの移行を禁止する方式が開示され(第
16図、第17図)、第2の方式として、複数のデータの更
新(転送)をメインプログラム中の単一命令で実行する
方式が開示される(第18図〜第21図)。この結果、イン
タラプト処理ルーチンの処理結果(楽音信号のサンプ
ル)が正しい値を示し、正しい動作が保証される。
本実施例の第4の特徴はマスターCPUからスレーブCPU
に対するデータアクセス問題に関する。従来の複数CPU
マイクロコンピュータシステムでは、一般に、CPU間の
データ転送は一連のシーケンスを通して行われ、相当の
時間を要する。代表的には、データのアクセスを要求す
るCPUからアクセスが要求されるCPUに対し、アクセス要
求信号を送る。このアクセス要求信号に対しアクセスが
要求されるCPUは実行中のオペレーションを完了した後
に承認(アクノリッジ)信号をCPUに渡して停止状態と
なる。アクセス要求信号送信後、承認信号が受信される
までの間、要求側のCPUは待ち状態になる。承認信号を
受けて要求側のCPUは被要求側のCPUの内部メモリに対
し、実際のデータアクセスを実行する。このように従来
のCPU間データアクセス方式は時間を要するので高速処
理が望まれる電子楽器のようなアプリケーションには適
さない。これを解決するため、本実施例では、第1のデ
ータアクセス方式として、上記第2の特徴を利用してサ
ブCPUが停止状態にあるときにマスターCPUがサブCPUの
内部メモリ(206)に対しデータをリード/ライト(ア
クセス)する停止モード制御方式が開示され(第22
図)、第2のデータアクセス方式として待ち状態なしに
マスターCPUがサブCPUをデータアクセスする(サブCPU
はデータアクセス中のみ強制的に停止状態にされる)瞬
時データアクセス方式とが開示される(第23図〜第25
図)。
本実施例の第5の特徴はデータ源としてのCPU外部メ
モリを複数のCPUで共用する場合における複数CPUからの
アクセスの競合(衝突)問題に関する。本実施例によれ
ば後述するメモリ装置競合回避回路(50)を設けること
により、共用メモリに対するアクセスの競合を解消し、
一定の待ち時間の後、共用メモリからのデータを得られ
るようにしている。
本実施例の第6の特徴はデータ変換処理(シフト、反
転、一部取り出し等)の高速化に関する。従来において
は、上述したCPU外部メモリのようなデータメモリ内の
データから、CPU内部メモリ(演算用メモリ)上に変換
されたデータを得るために、転送(リードアクセス)命
令により、データメモリのデータを演算用メモリに移
し、しかる後、変換命令により、演算用メモリのデータ
をALUを介して変換する。所望のデータ変換を行うため
に複数の変換命令を実行する必要もしばしば生じる。こ
のように、従来においてはデータ変換の処理に時間がか
かるという問題があり、特に音源処理のように高速処理
が要求されるアプリケーションにおいては大きな問題と
なる。これを解決するため、この実施例によれば、デー
タ・アドレス変換ハードウェア(60、70)を設け、特殊
な転送命令(変換付転送命令)を実行することにより、
その命令に応答するデータ・アドレス変換ハードウェア
を介して所望のデータ変換が施されたデータが演算用メ
モリ(106、206)に取り込まれるようにしている。した
がって、所望の変換データを得るのに、複数の命令を実
行するのではなく単一の命令を実行すればよく処理の高
速化が図れる。
<全体構成(第1図)> 第1図は電子楽器の処理装置として構成した本実施例
の全体構成を示すブロック図である。本システムは2つ
の中央演算処理装置(一方をMCPU10、他方をSCPU20で示
す)を有する。各CPU10、20はプログラムを内蔵してお
り、それぞれのプログラムに従って動作する。MCPU10は
音源処理(第5図)以外にシステム全体の制御、例えば
入力ポート118、出力ポート120に接続される入力装置
(例えば鍵盤、機能キー等)からの入力情報の処理、デ
ジタル楽音信号をアナログ楽音信号に変換するDAC100の
制御等を行う(第4図)。これに対し、SCPU20は音源処
理に専用される(第6図)。
90は音源制御データ、波形データ等のデータ源として
のメモリである。データメモリ90はここでは、LSIチッ
プ(第1図の残りのデバイスを搭載している)に外付け
されたROMで構成されている。集積度が高ければ、単一
のLSIチップ上にデータメモリ90を内部メモリとして形
成可能である。外部メモリ90はMCPU10とSCPU20に共用さ
れる。MCPU10からのアドレス情報はMCPU10に結合するア
ドレスバスMA、外部メモリアドレスラッチ30のMCPU外部
メモリアドレスラッチ30M、アドレス切り換え回路40、
アドレス変換回路60を介して外部データメモリ90のアド
レス入力に加えられる。一方、SCPU20からのアドレス情
報はSCPU20に結合するアドレスバスSA、SCPU外部メモリ
アドレスラッチ30S、アドレス切り換え回路40、アドレ
ス変換回路60を通して外部データメモリ90のアドレス入
力に加えられる。外部データメモリ90からMCPU10へのデ
ータ伝送径路は外部データメモリ90のデータ出力、デー
タ変換回路70、外部メモリデータラッチ80のMCPU外部メ
モリデータラッチ80M、MCPU10に結合するデータバスMD
によって構成される。これに対し、外部データメモリ90
からSCPU20へのデータ伝送径路は外部データメモリ90の
データ出力、データ変換回路70、SCPU外部メモリデータ
ラッチ80S、SCPU20に結合するデータバスSDによって構
成される。
メモリ装置競合回避回路50はMCPU10とSCPU20の両CPU
による外部メモリ90のアクセスを制御し、その競合を回
避するものである。メモリ装置競合回避回路50はMCPU10
からの外部メモリアクセスを要求する信号romaとSCPUか
らの外部メモリアクセスを要求する信号romaの各々に応
答してアドレス切り換え回路40を制御してアドレス切り
換え回路40にMCPU10からのアドレスとSCPU20からのアド
レスのいずれかを外部メモリ90へのアドレスとして選択
させる。このためにメモリ装置競合回避回路50からの選
択信号MSELによりアドレス切り換え回路40は選択動作を
行う。外部メモリ90へのアドレスが確定するとメモリ装
置競合回避回路50は外部メモリ90に対するチップ選択信
号CEと出力イネーブル信号OEをアクティブにする。これ
により外部メモリ90からデータが出力され、データ変換
回路70を通してそのデータが外部メモリラッチ80の入力
バスに現われる。ここで、メモリ装置競合回避回路50は
データアクセスを要求したCPUにデータを送るためにMCP
U外部メモリデータラッチ80M、SCPU外部メモリデータラ
ッチ80Sのいずれかを作動してデータをラッチさせる。
このためにMCPU外部メモリデータラッチ80Mはメモリ装
置競合回避回路50からのラッチ信号MDLによりラッチ動
作し、SCPU外部メモリデータラッチ80Sはメモリ装置競
合回避回路50からのラッチ信号SDLによりラッチ動作す
るようになっている。
アドレス変換回路60とデータ変換回路70は外部データ
メモリ90のデータを変換したデータがCPU10、20に取り
込まれるようにするための変換デバイスである。アドレ
ス変換回路60はアドレス切り換え回路40を通ったアドレ
ス、即ち、CPU(MCPU10からSCPU20)から出力されたア
ドレス(論理アドレス)を選択的に変更して外部データ
メモリ90に実際に入力されるアドレスを形成するもので
あり、データ変換回路70は外部データメモリ90から出力
されたデータを選択的に変更してCPU(MCPU10かSCPU2
0)に実際に入力されるデータを形成するものである。
各変換回路60、70における変換の態様を指定するため
に、制御信号が使用される。各CPU10、20において、外
部データメモリ90に対するデータアクセスは転送命令を
実行することで行われる。転送命令に基づいてCPUで生
成される制御信号をMR1、MR2、MR3(MCPU10の場合)、S
R1、SR2、SR3(SCPU20の場合)で示してある。これらの
信号は外部メモリアドレスラッチ30、アドレス切り換え
回路40を通った後、信号R1、R2、R3と呼ばれる(MRi→L
MRi→RiまたはSRi→LSRi→Ri)。変換の態様を指定する
ため、制御信号R1、R2がアドレス変換回路60に入力され
る。更に、データ変換回路70における変換の態様を特定
するため、制御信号R1、R2、R3とアドレス変換回路60か
らのアドレスビット12の信号A12とアドレスビット15の
信号A15がデータ変換回路70に加えられる。アドレス変
換回路60とデータ変換回路70の詳細については後述す
る。
MCPU10とSCPU20との間にインタフェースを定めるた
め、両CPU間で複数の信号が伝送される。信号AはMCPU1
0からSCPU20に送られるSCPU20の処理開始を表わす信
号、信号BはSCPU20からMCPU10に送られるSCPU20の処理
終了を表わす信号、MaはMCPU10からSCPU20に送られるSC
PU20の内部メモリ(第3図の206)のアドレス情報、信
号CはMCPU10からSCPU20に送られるSCPU20の内部メモリ
の読み書き制御信号、DinはSCPU20からMCPU10に送られ
るSCPU20の内部メモリからの読出しデータ、DOUTはMCPU
10からSCPU20に送られるSCPU20の内部メモリへの書き込
みデータを表わす、CPU間インタフェースの詳細につい
ては後述する。
上述したように音源処理によりMCPU10とSCPU20とでデ
ジタル楽音信号が生成される。生成結果はMCPU10から、
右DAC100Rと左DAC100Lとから成るデジタルアナログ変換
器(DAC)100が送られ、アナログ楽音信号に変換されて
外部に出力される。
<MCPUとSCPUの構成(第2、第3図)> 第2図にMCPU10の内部構造を示し、第3図にSCPU20の
内部構造を示す。
第2図において制御用ROM102には楽器の各種制御入力
を処理するメインプログラムと楽音を生成するインタラ
プト処理プログラムが記憶されており、ROMアドレス制
御器114からROMアドレスデコーダ104を介して指定され
たアドレスにあるプログラム語(命令)をインストラク
ション出力ラッチ102aを介して順次出力していく。な
お、具体的実施例では、プログラム語長は28ビットであ
り、プログラム語の一部が次に読み出されるべきプログ
ラム語を記憶するアドレスの下位部(ページ内アドレ
ス)としてROMアドレス制御部114に入力されるネクスト
アドレス方式となっているが、代りにプログラムカウン
タ方式を使用してもよい。RAMアドレス制御部114は制御
用ROM102からの命令のオペランドがレジスタを指定して
いる場合に、RAM106内に対応するレジスタのアドレスを
指定する。RAM106は演算用メモリを構成するレジスタ群
であり、汎用演算、フラグ演算、楽音の演算等に使用さ
れる。ALU部(加減算器及び論理演算部)108と乗算器11
0は制御用ROM102からの命令が演算命令のときに用いら
れる。特に乗算器110は楽音波形の演算に使用してお
り、そのための最適化として第1と第2のデータ入力
(例えば16ビットデータ)を乗算して入力と同じ長さ
(16ビット)のデータを出力するようになっている。上
記RAM106、加減算器108、乗算器110により、減算回路が
構成される。オペレーション制御回路112は制御用ROM10
2からの命令のオペコードを解読し、指示されるオペレ
ーションを実行するために、回路の各部に制御信号(全
体をCNTRで示す)を送る。また条件付分岐命令の実行の
際にオペレーション制御回路112はALU部108からのステ
ータス信号S(例えばオーバーフロー信号、ゼロフラグ
信号等)により分岐条件成立を検出してROMアドレス制
御部114を介してアドレスを分岐先のアドレスにジャン
プさせる。
所定時間ごとに制御用ROM102の楽音生成プログラムを
実行するため、この実施例ではタイマインタラプトを採
用している。すなわち、タイマ(ハードウェアカウン
タ)を有するインタラプト発生部116により、一定時間
ごとにROMアドレス制御部114に制御信号INT(割込要求
信号)を送り、この信号により、ROMアドレス制御部114
は次に行うメインプログラムの命令のアドレスを退避
(保持)し、楽音の生成が行われるインタラプト処理プ
ログラム(サブルーチン)の先頭アドレスを代りにセッ
トする。これにより、インタラプト処理プログラムが開
始される。インタラプト処理プログラムの最後にはリタ
ーン命令があるので、このリターン命令がオペレーショ
ン制御回路112で解読された時点で、ROMアドレス制御部
114は退避してあったアドレスを再度セットし、メイン
プログラムに復帰する。更に、インタラプト発生部116
からの制御信号INTはDAC100における楽音信号のデジタ
ル/アナログ変換サンプリング速度を定めるためにDAC1
00に供給される。なお、インタラプト発生部116は図の
上ではMCPU10の内部要素として描いてあるが、MCPU10に
対して現在行っている仕事を停止させ特別の処理を要求
するものであり、論理的にはMCPU10の外部要素(周辺装
置)である。
クロック発生回路136はマスタークロック発生回路
(図示せず)からの2相のマスタークロックCK1とCK2を
受け、オペレーション制御回路112を初めとする回路の
各部に加える種々のタイミング信号(T1、T2、T3、T1CK
1、T2CK2、T3CK3等)を発生する。
第2図の残りの要素はMCPU20の外部装置とのインタフ
ェースに係っている。122は外部メモリアクセス用アド
レスバスMA(第1図)にMCPU内部バスを接続するための
バスインタフェースとしてのゲートを表わし、124は外
部メモリデータバスMDにMCPU内部バスを接続するための
ゲートを表わし、126はDACデータ転送バスにMCPU内部バ
スを接続するためのゲートを表わす。また、入力ポート
118と出力ポート120はMCPU内部バスを外部の入力装置に
結合するためのインタフェースである。128はSCPU内部R
AMアドレス指定バスにMCPU内部バスを接続するためのゲ
ート、130はSCPU内部RAM書込データバスにMCPU内部バス
を接続するためのゲート、132はSCPU内部RAM読出データ
バスをMCPU内部バスに接続するためのゲートを表わす。
SCPUリセット制御部134はSCPU20の動作期間を管理す
るためのデバイスである。この実施例に従いSCPUリセッ
ト制御部134はインタラプト発生部116からのインタラプ
ト信号INTに応答して、SCPU20の処理開始を示す信号A
を発生する。この信号AはSCPU20のROMアドレス制御部2
14(第3図)に送られ、これによりROMアドレス制御部2
14のアドレス更新動作が開始し、SCPU20の動作(音源処
理を含む)が開始する。SCPU20の動作が終了するとSCPU
20のオペレーション制御回路212から処理終了を示す信
号Bが発生し、この信号BがSCPUリセット制御部134に
送られる。これに対し、SCPUリセット制御部134はSCPU2
0の動作を停止するために信号Aを反転し、これによりS
CPU20のROMアドレス制御部214の動作を停止させる、と
ともに、SCPU20が停止中であることを表わすSCPU状態フ
ラグ信号をオペレーション制御回路112に送る。オペレ
ーション制御回路112は制御用ROM102からのSCPU状態の
検査命令の実行時に、このSCPU状態フラグ信号を読むこ
とにより、SCPU20の状態を検出できる。
第3図のSCPU20のブロック図において、要素202、202
a、204、205、206、208、212、214、222、224、236はそ
れぞれ、第2図のMCPU10のブロック図における要素10
2、102a、104、105、106、108、110、112、114、122、1
24、136に対応する要素である。ただし、SCPU20の制御
用ROM202には基本的に音源処理のためのプログラムのみ
が記憶されており、SCPU20を音源処理専用の処理装置と
して機能させてくる。
240はSCPU20の演算用メモリとしてのRAM206へ入力す
るデータをMCPU10からのデータ(MCPU10からゲート13
0、データバスDOUTを通ったデータ)とSCPU20の生成
(演算)したデータ(ALU部208または乗算器210からの
データバスDB上のデータ)とから選択するRAMデータイ
ン切り換え部である。RAMデータイン切り換え部240は信
号Aによってその選択モードが制御され、信号Aが“SC
PU20動作中”を表わしているときにはSCPU20で演算した
データを選択し、信号Aが“SCPU20停止中”を表わして
いるときにはMCPU10からのデータを選択する。
また、RAMアドレス制御部205も、信号Aによってその
モードが制御され、信号Aが“SCPU20動作中”を表わし
ているときには制御用ROMのインストラクション出力ラ
ッチ202aからのバスSA上の情報をRAM206のアドレスとし
て選択し、信号Aが“SCPU20停止中”を表わしていると
きにはMCPU10からバスゲート128(信号Aにより開いて
いる)を経てバスMa上にあるMCPU10からの情報をRAM206
のアドレスとして選択する。同様に、ライト信号切り換
え部242も信号Aによってそのモードが制御され、信号
Aが“SCPU20動作中”を表わしているときにはSCPU20の
オペレーション制御回路212からのRAMリードライト信号
を選択してRAM206のリードライト入力/Wに結合し、信
号Aが“SCPU20停止中”を表わしているときにはSCPU20
ではなくMCPU10のオペレーション制御回路112からのSCP
URAMリードライト信号を選択してRAM206のリードライト
入力/Wに結合する。
以下、本実施例の諸特徴を更に詳細に説明する。
<複数CPU音源機能(第1〜第7図、第9〜第11図)> 第4図はMCPU10のメインプログラム(バックグラウン
ドプログラム)によるMCPU10の動作を示すフローチャー
ト、第5図はタイマインタラプト信号INTによって起動
されるMCPU10のインタラプト処理ルーチンによるMCPU10
の動作を示すフローチャート、第6図はタイマインタラ
プト信号INTによって起動されるSCPU20のプログラムに
よるSCPU20の動作を示すフローチャート、第7図はMCPU
10のSCUP20のそれぞれが実行する音源処理のフローチャ
ートである。
第1〜第3図に関して述べたように、本実施例の電子
楽器処理システムはMCPU10とSCPU20とから成る複数のCP
Uを備えており、両CPUが協働して電子楽器のための処理
を実行する。特にMCPU10は、第5図に示すようなインタ
ラプト処理ルーチンにより音現処理を行い、SCPU20は第
6図に示すようなプログラムにより音源処理を行う。更
にMCPU10は第4図に示すメインプログラムにより、シス
テム全体の制御のための種々のタスクを実行する。
第4図のメインプログラムのフローにおいて、4−1
は電源投入時にシステムを初期化する処理であり、MCPU
10はRAM106、RAM206のクリアや、リズムテンポ等の初期
値の設定等を行う。4−2でMCPU10は出力ポート120か
らキー走査のための信号を出力し、鍵盤、機能スイッチ
等の入力装置の状態を入力ポート118から取り込むこと
により、鍵盤キー、鍵盤キーの状態をRAM106のキーバッ
ファエリアに記憶する。4−3では4−2で得た機能キ
ーの新しい状態と前回の状態とから、状態の変化した機
能キーを識別し、指示される機能の実行を行う(例え
ば、楽音番号のセット、エンベロープ番号のセット、リ
ズム番号のセット等)。4−4では4−2で得た鍵盤の
最新の状態と前回の状態とから、変化した鍵(押鍵、離
鍵)を識別する。次の4−5で4−4の処理結果から、
発音処理4−9のためのキーアサイン処理を行う。4−
6では機能キーでデモ演奏キーが押鍵されたとき外部メ
モリ90から、デモ演奏データ(シーケンサデータ)を順
次読み出し、処理することにより、発音処理4−9のた
めのキーアサイン処理等を行う。4−7ではリズムスタ
ートキーが押鍵されたとき外部メモリ90からリズムデー
タを順次読み出し、発音処理4−9のためのキーアサイ
ン処理を行う。フロー一周タイマ処理4−8では、メイ
ンフローで必要なイベントのタイミングを知るために、
フロー一周時間(これは、フローを一周する間に実行さ
れたタイマインタラプトの回数を計数することで得られ
る。この計数処理は後述のインタラプトタイマ処理5−
2で行われる。)を基に演算を行い、エンベロープ用タ
イマ(エンベロープの演算周期)やリズム用の基準値を
得る。発音処理4−9では4−5、4−6、4−7でセ
ットされたデータから、実際に楽音を発音させるための
各種演算を行い、結果をRAM106、RAM206内の音源処理レ
ジスタ(第11図)にセットする。4−10は次のメインフ
ローのパスのための準備処理であり、今回のパスで得た
押鍵状態への変化を示すNEW ON状態をON中にしたり、離
鍵状態への変化を示すNEW OFF状態をOFF中に変える等の
処理を行う。
インタラプト発生部116からインタラプト信号INTが発
生すると、MCPU10は実行中のメインプログラムを中断
し、第5図に示すインタラプト処理ルーチンを実行し、
SCPU20は第6図に示すプログラムを実行する。ここでMC
PU10は第5図のフローにおいて楽音信号を生成し、SCPU
20は第6図のフローにおいて楽音信号を生成するように
なっている。
詳細に述べるとMCPU10は5−1で各チャンネルに対す
る楽音波形データを生成し、累算し、記憶する。従来は
この処理を音源回路ハードウェアで行っていた。次のイ
ンタラプト処理タイマ処理5−2でMCPU10はインタラプ
トが一定時間ごとにかかることを利用して、フロー一周
計時用のタイマレジスタ(RAM106内)を通過の都度、プ
ラス1する。5−3でMCPU10はSCPU20の音源処理6−1
が終了しているかどうかを検査し、終了していれば、5
−4に進んで、SCPU20で生成されたRAM206上の楽音波形
データをRAM106内に読み込む。そして5−5でMCPU10は
MCPU10の生成した楽音波形データとSCPU20で生成した楽
音波形データをDAC100に出力する。
音源処理5−1、6−1の詳細を第7図に示す。本例
では、各CPU(MCPU10、SCPU20)はそれぞれ8チャンネ
ル分の楽音波形データを生成可能であり、システム全体
として16チャンネル分の楽音波形データを生成可能とし
ている。7−1で波形加算用RAM領域(RAM106内、RAM20
6内)をクリアし、7−2〜7−9で第1チャンネルか
ら第8チャンネルまでの各チャンネル音源処理を順次実
行する。各チャンネル音源処理の最後で、チャンネルの
楽音波形値が波形加算用RAM領域のデータに加算され
る。
次にチャンネル音源処理の例について第9図〜第11図
を参照して説明する。この例では、波形読み出し(PC
M)方式の楽音合成を採用している(他の楽音合成方
式、例えばFM合成も実現可能であり、この発明は特定の
楽音合成方式には制御されない)。チャンネル音源処理
は大きくわけて、エンベロープ処理(9−1〜9−7)
と、エンベロープ付加を含む波形処理(9−8〜9−2
1)とから成る。各CPU(MCPU10、SCPU20)はチャンネル
音源処理を実行する際に、そのチャンネルに対する音源
処理レジスタ群、即ち第11図に示すように、エンベロー
プ△x用タイマー、目標エンベロープ、エンベロープ△
x、加減フラグ付エンベロープ△y、現在エンベロー
プ、アドレス加算値、ループアドレス、エンドアドレ
ス、スタートアドレス兼現在アドレスを参照し、所望の
レジスタを更新する。エンベロープは振幅変調のために
基本波形に付加すべきもので、全体としていくつかのセ
グメント(ステップ)から成っている。エンベロープ△
x用タイマーと目標エンベロープとエンベロープ△xと
加減フラグ付エンベロープ△yは現在進行中のエンベロ
ープセグメントを定義するエンベロープパラメータであ
り、このエンベロープパラメータは、MCPU10のメインプ
ログラム(第4図)の発音処理4−9内において、エン
ベロープ値がセグメントの目標値に到達の都度、更新さ
れる情報であり、インタラプト処理ルーチン(第5図、
第6図)ではこれらのエンベロープパラメータはエンベ
ロープ△x用タイマーを除いて単に参照されるだけであ
る。エンベロープ△xはエンベロープの演算周期を表わ
し、目標エンベロープは現セグメントにおけるエンベロ
ープの目標値を表わし、加減フラグ付エンベロープ△y
は演算周期ごとのエンベロープの変化分を表わし、現在
エンベロープは現在のエンベロープ値を表わす。アドレ
ス加算値、ループアドレス、エンドアドレス及びスター
トアドレス兼現在アドレスは外部メモリ90に置かれる基
本波形に対するアドレス情報であり、スタートアドレス
は基本波形メモリ(外部メモリ90内)のスタートアドレ
ス、ループアドレスは基本波形を繰り返し読み出す場合
の戻り先のアドレス(第10図ではスタートアドレスと同
一)、エンドアドレスは基本波形のエンドアドレスを表
わし、現在アドレスは基本波形の現在の位相を表わすア
ドレスであり、その整数部が、基本波形メモリに現実に
存在する記憶場所を表わし、その小数部が、この記憶場
所からのずれを表わし、アドレス加算値はタイマインタ
ラプト処理ルーチンの時間間隔ごとに現在アドレスに加
算されるべき値であり、生成する楽音のピッチに正比例
する。
詳細に述べると、9−1でエンベロープの演算周期△
xと比較するためのタイマレジスタをインタラプトごと
にインクリメントし、9−2で△xと一致したとき9−
3でエンベロープ変位分のデータ△yの加減算フラグ
(符号ビット)をテストしてエンベロープが上昇中か下
降中かを判別し、9−4、9−5でそれぞれ現在エンベ
ロープの減算または加算を行う。9−6で現在エンベロ
ープが目標エンベロープ値に達したかどうかをチェック
し、達しておれば、現在エンベロープに目標レベルをセ
ットする。これによりメインプログラムの発音処理4−
9で次のエンベロープステップのデータがセットされる
ことになる。また発音処理4−9でゼロの現在エンベロ
ープを読んだときには発音の終了として処理される。
次に、波形処理9−8〜9−21について述べる。波形
処理では、現在アドレスの整数部を使って基本波形メモ
リから隣り合う2つアドレスの波形データを読み出し、
(整数部+小数部)で示される現在アドレスに対して想
定される波形値を補間で求めている。補間が必要な理由
は、タイマインタラプトによる波形サンプリング周期が
一定であり、アドレスの加算値(ピッチデータ)が楽器
への応用上、ある音域にわたるためである(音階音しか
出力しない楽器で音階音ごとに波形データを用意すれば
補間の必要はないが許容できない記憶容量の増大とな
る)。補間による音色の劣化、歪みは高音域の方が著し
いため、原音の記録サンプリング周期より高速の周期で
原音を再生するのが好ましい。この実施例では原音(4
−4)再生の周期を2倍にしている(第10図)。したが
って、アドレス加算値が0.5のとき、A4の音が得られる
ようになっている。この場合、A#4ではアドレス加算
値は0.529となり、A3のとき、1となる。これらのアド
レス加算値はピッチデータとして制御データ兼波形外部
メモリ90内に記憶されており、押鍵時には発音処理4−
9において、鍵に対応するピッチデータと選択されてい
る音色の波形スタートアドレス、波形エンドアドレス及
び波形ループアドレスがRAM106またはRAM206の対応する
レジスタ、すなわち、アドレス加算値レジスタ、スター
トアドレス兼現在アドレスレジスタ、エンドアドレスレ
ジスタ、ループアドレスレジスタにセットされる。
参考までに、第10図に時間に対する補間波形データを
示す。図中、白丸は基本波形メモリの記憶場所にある波
形データ値、×印は補間値を含む出力サンプルを示して
いる。
補間の方式はいろいろあるが、ここでは直線補間を採
用している。詳細に述べると、まず、9−8で現在アド
レスにアドレス加算値を加算して新しい現在アドレスを
得る。9−9で現在アドレスとエンドアドレスを比較
し、現在アドレス>エンドアドレスならば、9−10、9
−11により、現在アドレス<エンドアドレスのときは9
−12により、物理上(番地上)または論理上(動作上)
の次のアドレスを計算し、9−14でその整数部により基
本波形メモリをアクセスして次回波形データを得る。ル
ープアドレスは動作上エンドアドレスの次のアドレスで
ある。すなわち、第10図の場合、図示の波形は繰り返し
読み出される。したがって、現在アドレス=エンドアド
レスのときは次のアドレスとしてループアドレスの波形
データを読み出す(9−13)。9−15、9−16により、
現在アドレスの整数部で基本波形をアクセスして今回の
波形データを読み出す。次に、9−17で次回波形値から
今回波形値を減算し、9−18でその差に現在アドレスの
小数部を乗算し、その結果を9−19で今回の波形値に加
えることにより、波形の直線補間値を求める。この直線
補間したデータに現在エンベロープ値を乗算してチャン
ネルの楽音データ値を得(9−20)、それを波形加算用
レジスタの内容に加えて楽音データを累算する(9−2
1)。このレジスタに累算されたデジタル楽音データが
タイマインタラプト処理ルーチン(第5図)の5−5で
DAC100に送出される。これに関連し、第1図ではDAC100
はステレオ出力を得るべく右DAC100Rと左DAC100Lから成
っている。この場合、MCPU10、SCPU20の処理する音源チ
ャンネルの夫々を左右のDACのいずれに割り当てるかを
決めるようにするとよい。具体的には、各チャンネル用
の音源データとして内部RAM106、206上に、選択DAC指示
データをもたせ、また、2つの波形加算用領域、即ち、
左DAC用波形加算用領域と左DAC用波形加算用領域を設け
る。また、7−1に対応するステップで左右のDAC用の
各波形加算用領域をクリアし、9−20の処理の後、処理
チャンネルに割り当てているDACを選択DAC指示データか
ら判別し、対応する波形加算用領域に処理チャンネルの
楽音波形データを加算する。そして、MCPU10のインタラ
プト処理ルーチン(第5図)のステップ5−4に対応す
るステップで、SCPU20の生成した左DAC用楽音波形デー
タと右DAC用楽音波形データとをそれぞれMCPU10で生成
した左DAC用楽音波形データと右DAC用楽音波形データに
加算し、加算結果である左DAC用と右DAC用の楽音波形デ
ータを5−5に相当するステップで、それぞれ左DAC100
Lと右DAC100Rに送出する。
このように、本実施例の電子楽器用処理装置はMCPU10
とSCPU20という複数のCPUを有し、各CPUにおいて、内蔵
されるプログラムに従って音源処理を実行することがで
きる。なお実施例では1つのSCPUを使用しているが、音
源処理を行う複数のSCPUを設けるようにしてもよい。
<SCPU動作開始・終了機能(第12〜第15図、第2〜第6
図、第8図)> 本実施例によればMCPU10はSCPU20の動作期間を管理、
把握する機能を有している。この目的のため、 (イ)MCPU10はタイマ・インタラプト発生部116からイ
ンタラプト信号が発生したときに、これを合図してSCPU
20の動作を開始させ、MCPU10のオペレーション制御回路
112が参照するSCPU状態フラグを“SCPU動作中”にセッ
トする。
(ロ)SCPU20は動作(音源処理)を完了したときに、こ
れに応答して停止状態に移行し、MCPU10に動作完了信号
を送り、MCPU10のオペレーション制御回路112が参照す
るSCPU状態フラグを“SCPU停止中”にセットする。
第2図〜第6図を参照すると、MCPU10はメインプログ
ラム(第4図)の実行中に、インタラプト発生部116
(第2図)からインタラプト信号を受けると、ROMアド
レス制御部114を介してメインプログラムを中断し、楽
音生成のために第5図に示すタイマインタラプト処理ル
ーチンを実行する。更に、MCPU10はインタラプト信号に
対し、SCPUリセット制御部134を介してSCPU20にSCPU動
作開始信号Aを送り、これを受けてSCPU20はROMアドレ
ス制御部214を介して第6図に示す楽音生成のためのプ
ログラムを実行する(なお信号Aにより、バスゲート12
8、RAMアドレス制御部204、RAMデータイン切り換え部24
0、ライト信号切り換え部242も、SCPU20自身の動作のた
めにセットされる)。このプログラムの終了に伴い、SC
PU20はオペレーション制御回路212から動作終了信号B
を発生する。この信号BはSCPUリセット制御部134に送
られ、これを受けてSCPUリセット制御部134はSCPU20の
動作を停止するために信号AとBを反転する。反転され
た信号Aを受けてSCPU20のROMアドレス制御部214のアド
レス更新動作が停止し、SCPU20は停止する。また信号B
は“SCPU停止中”を示す信号としてMCPU10のオペレーシ
ョン制御回路112に与えられる。MCPU10のインタラプト
処理ルーチン(第5図)の5−3に示すSCPU状態検査命
令を実行する際、MCPU10のオペレーション制御回路112
はSCPU状態フラグBを読む。フラグBが“SCPU停止中”
を示し、したがって、SCPU20での音源処理(第6図)が
完了しているときにMCPU10は5−4に進んでSCPU20の生
成した楽音波形データを読み込む。MCPU10は第5図のイ
ンタラプト処理ルーチン終了時にオペレーション制御回
路112からROMアドレス制御部114にメインプログラムへ
の復帰コマンド信号を与えて、中断していたメインプロ
グラムに制御を戻す。
第8図に、時間の流れに沿う本実施例の動作の流れを
示す。A〜Fはメインプログラムの断片である。5A〜5F
は第5図のMCPUインタラプト処理ルーチンを表わし、6A
〜6Fは第6図のSCPUインタラプト処理ルーチンを表わ
す。図示のように、インタラプト信号INTが発生する
と、MCPU10は実行中のプログラムを中断し、インタラプ
ト処理が各CPU10、20において開始し、音源の並行処理
が実行される。
第12図に上述したSCPUの動作開始・終了機能を実現す
る構成を詳細に示し、第13図〜第15図にその動作のタイ
ムチャートを示す。第13図のタイムチャートにおいて、
CK1、CK2はMCPU10とSCPU20におけるクロック発生回路13
6、236に入力される2相のマスタークロックであり、こ
のマスタークロックCK1、CK2からクロック発生回路136
はMCPU10動作のための基本タイミングを与える3相のク
ロックT1、T2、T3を生成する。この3相クロックの繰り
返し周期がマシンサイクル(最短の命令実行時間)を定
める。クロックT1CK1、T2CK2、T3CK3はそれぞれ、T1とC
K1、T2とCK2、T3とCK3の論理積信号である。オペレーシ
ョンラッチ信号はMCPU10の制御用ROM102のインストラク
ション出力ラッチ102aにROM102からのインストラクショ
ンをラッチさせるための信号である。第13図には図示し
ないが、SCPU20のクロック回路236も同様のクロック信
号を生成する(第3図、第25図参照)。なお、MCPU10と
SCPU20に共通のクロック発生回路を使用してもよい。
第12図において、点線16の右側はSCPU20であり左側は
MCPU10である。左側の要素のうち、ラッチL1、ラッチL
2、ゲート1142〜1154はMCPU10(第2図)のROMアドレス
制御部114に含まれる回路要素である。ラッチL1にはMCP
U10の実行すべき次の命令のROM102アドレス情報AN(ROM
102からの現命令に含まれる情報)がクロックT1CK1でラ
ッチされる。メインプログラム(第4図)の実行中、ラ
ッチL1の出力は次アドレスBNとしてMCPU10のROMアドレ
スデコーダ104に入力される。即ち、ラッチL1の出力は
インバータ1144、3状態インバータゲート1146(イネー
ブルされている)を通ってROMアドレスデコーダ104への
アドレス入力BNとなる。ここでインタラプト発生部116
からインタラプト信号INTが発生すると、この信号INTを
受けるORゲート1154から、インバータ1148を介してラッ
チL1の出力側にある3状態インバータゲート1146をオフ
(ハイインピーダンス)にする信号が加えられ、代り
に、ORゲート1154からの信号により、割込入口/戻先ア
ドレス選択ゲート1150の出力側にある3状態インバータ
ゲート1152がゲート1150の出力をROMアドレスデコーダ1
04のアドレス入力BNに通す。割込入口/戻先アドレス選
択ゲート1150はインタラプト信号INTとラッチL2からの
出力信号を受けるNORゲート群で構成され、“H"のイン
タラプト信号INT発生時に、インタラプト処理ルーチン
(第5図)の入口(エントリポイント)を表わすオール
“0"の信号を出力し、この信号は3状態インバータゲー
ト1152で反転されて、オール“1"の信号BNとしてMCPUの
ROMアドレスデコーダ104に入力される。そして次のオペ
レーションラッチ信号により、制御用ROM102からインス
トラクション出力ラッチ102aにインタラプト処理ルーチ
ンの最初の命令がフエッチされる。以上により、MCPU10
の制御がインタラプト処理ルーチンに移る。
更に、インタラプト発生部116からのインタラプト信
号INTはクロックT2CK2のタイミングでANDゲート1142を
通り、ラッチ信号としてラッチL2を動作させる。これに
より、ラッチL2はバスAN上にあるメインプログラムの次
命令のアドレスをラッチ(退避)してメインプログラム
を中断させる。
更にインタラプト発生部116からのインタラプト信号I
NTはSCPUリセット制御部134に供給される。SCPUリセッ
ト制御部134は図示のように結合されたDフリップフロ
ップ1342、NANDゲート1344、R−Sフリップフロップ13
46から成る。メインプログラムの実行中、R−Sフリッ
プフロップ1346はリセット状態にある(Q=“L")。な
お、図示しないがR−Sフリップフロップ1346はシステ
ムのパワーオン時にリセット状態に初期化される。イン
タラプト信号INTは、クロックT2CK1のタイミングでDフ
リップフロップ1342に取り込まれ、次のクロックT1CK1
のタイミングでNANDゲート1344から反転されて出力さ
れ、R−Sフリップフロップ1346をセットする。この結
果、R−Sフリップフロップ1346の出力、即ち信号A
が“H"から“L"に切り換え、Q出力、即ちSCPU状態フラ
グが“L"(SCPU停止中を示す)から“H"(SCPU動作中を
示す)に変化する。信号Aは、SCPU20における次命令の
アドレスSANをラッチするためのラッチL3にリセット解
除信号(ラッチL3のイネーブル信号)として入力され
る。この結果、ラッチL3は次のクロックT1CK1のタイミ
ングでバスSANに乗っているSCPUプログラム(第6図)
の最初の命令のアドレスをSBNとしてSCPU20のROMアドレ
スデコーダ204に入力する。このようにして、インタラ
プト発生部116からのインタラプト信号INTに応答してSC
PU20の動作を開始し、第6図に示す音源処理が実行され
る。
SCPU20が音源処理の最後の命令を実行する際、SCPU20
のオペレーション制御回路112の内部で動作終了信号
(復帰コマンド信号)SRTが発生する。この信号SRTはD
フリップフロップ2122にクロックT2CK1のタイミングで
取り込まれた後、次のT1CK1のタイミング(次のダミー
命令のラッチタイミング)で動作するNANDゲート2124で
反転され、ローパルスの動作終了信号BとしてSCPUリセ
ット制御部134のR−Sフリップフロップ1346をリセッ
トする。この結果、R−Sフリップフロップ1346の出
力、即ち、信号Aは“L"から“H"に切り換り、Q出力、
即ち、SCPU状態フラグはSCPU動作中に示す“H"からSCPU
20停止中を示す“L"に切り換る。“H"レベルの信号A
(リセット信号)により、ラッチL3の動作は禁止され、
ラッチL3出力、つまり、アドレスデコーダ204の入力は
ダミー命令の(NOP命令)のアドレスに固定される。こ
のときラッチL3の入力バスSANにはSCPU音源処理プログ
ラム(第6図)の最初の命令のアドレス情報(NOP命令
語に含まれる)が乗っている。
MCPU10はインタラプト処理ルーチン(第5図)のSCPU
状態検査命令5−3の実行時にオペレーション制御回路
112を介してSCPU状態フラグのレベルを検査し、SCPUの
停止中、即ちSCPU20の音源処理の完了を確認してから、
SCPU20の処理結果である楽音波形データをRAM206からRA
M106に読み取る(5−4)。これによりMCPU10はSCPU20
の正しい処理結果を効率よく得ることができる。
MCPU10はインタラプト処理ルーチンの最後の命令の実
行時に、オペレーション制御回路112から復帰コマンド
信号RTのパルスを発生する。この信号パルスRTはORゲー
ト1654、インバータ1148を通って、ラッチL1の出力側の
アドレスゲート1146を一時的にオフし、代りに、ラッチ
L2に結合する割込入口/戻先アドレス選択ゲート1150の
出力側にあるアドレスゲート1152を一時的に開く。この
時点で、割込入口/戻先アドレス選択ゲート1150はラッ
チL2に退避してあった中断されたメインプログラムの命
令のアドレスを反転して通すインバータとして働き、こ
のゲート1150の反転出力が信号パルスRTによりインバー
タとして働く3状態ゲート1152において再度反転され
る。この結果、MCPU10のROMアドレスデコーダ104には中
断されていたメインプログラムの命令のアドレスが入力
され、次のオペレーションラッチ信号により、制御用RO
M102からインストラクション出力ラッチ102aを介してそ
の命令が取り出される。このようにして、MCPU10の制御
はメインプログラムに復帰する。
以上のように、本実施例の電子楽器処理装置は、MCPU
10によるSCPU20の動作期間の管理をSCPUリセット制御部
134のような簡単な管理インタフェース構成を設けるこ
とで効率よく、確実に行うことができる。
<複数データ転送> CPUを用いたある種のアプリケーションでは、CPUはメ
インプログラム(第1のプログラム)の実行において複
数のデータを更新し、インタラプト処理ルーチン(第2
のプログラム)の実行において、その処理の目的のため
にこれら複数のデータを参照する。これはメインプログ
ラムからインタラプト処理ルーチンへデータを渡す問題
である。このような複数のデータは、インタラプト処理
ルーチンによってメインプログラムが中断される前に、
メインプログラムにおいて全てのデータを更新しなけれ
ばならない。メインプログラムが複数のデータの一部だ
けを更新した時点で中断されてインタラプト処理ルーチ
ンにCPUの制御が移ってしまうとインタラプト処理ルー
チンの処理結果を誤ったものになる。
本実施例の電子楽器処理装置の場合も、MCPU10のメイ
ンプログラム(第4図)からMCPU10のタイマインタラプ
ト処理ルーチン(第5図)(及び第6図に示すSCPU20の
タイマインタラプト処理ルーチン)に渡す複数のデータ
がある。エンベロープ△x(エンベロープ演算周期)、
加減フラグ付エンベロープ△y(エンベロープ変化分)
目標エンベロープから成るエンベロープパラメータはそ
の例である。データ源である外部データメモリ90はエン
ベロープのセグメント(例えばアタックセグメント、デ
ィケィセグメント、サスティンセグメント等)ごとにエ
ンベロープパラメータを記憶している。MCPU10のメイン
プログラムは発音処理4−9において、押鍵(ノートオ
ン)あるいはインタラプト処理ルーチンのチャンネル音
源処理(第9図)内で検出されたエンベロープの目標値
への到達(9−6、9−7参照)に応答して所定のセグ
メントについてのエンベロープパラメータ(新しい目標
エンベロープ、エンベロープ△x、加減フラグ付エンベ
ロープ△y)を外部データメモリ90から取り出してMCPU
内部RAM106(またはSCPU内部RAM206)の対応するチャン
ネル音源処理レジスタにセットすることによって複数の
データから成るエンベロープパラメータを更新する必要
がある。このような複数のデータはインタラプト発生部
116からのインタラプト信号INTによってメインプログラ
ムが中断される前に、メインプログラムにおいて更新を
完了させておかなければならない。
このような複数のデータ転送(更新)の問題を解決す
るために、本実施例では2つの解決手段を開示する。第
1の解決手段はデータ更新の間、インタラプトをマスク
してメインプログラムのデータ更新命令群の実行が中断
されないようにするインタラプトマスク方式であり、第
2の解決手段は複数のデータ転送を一命令で実行する機
能を利用した一命令方式である。
インタラプトマスク方式(第16、第17、第2〜第7図) この方式によれば、インタラプト発生部116からのイ
ンタラプトはメインプログラム、特に発音処理4−9に
おけるデータ更新命令群によって内部RAMのチャンネル
音源レジスタ群にデータをセットする間、マスクされ
て、MCPU10の制御がメインプログラム(第4図)からイ
ンタラプト処理ルーチン(第5図)に移るのが禁止され
る。
第17図に複数のデータ転送を含むエンベロープ処理
(メインプログラムの発音処理4−9内にある)のフロ
ーを示し、第16図にインタラプトマスクに関連するハー
ドウェアを示す。
第17図においてMCPU10は17−1で指定音源チャンネル
の現在エンベロープが目標エンベロープに到達している
かどうかを調べる。到達すればMCPU10は17−2に進み、
外部データメモリ90(第1図)から、次のエンベロープ
セグメントに関するエンベロープパラメータ、即ち、新
しい目標エンベロープ、加減フラグ付エンベロープ△
y、エンベロープ△xを取り出し、内部RAM106内の転送
バッファにセットする。ここに転送バッファはデータ源
とデータ目的地との間の中間的な記憶部でありインタラ
プト処理ルーチン(第9図)によって参照されないRAM
領域であるので、この時点でのインタラプトマスクは不
要である。転送バッファを設けた理由はデータ源である
メモリ90がMCPU10とSCPU20によって共用される外部メモ
リであり、そのデータアクセス時間が内部RAM相互のデ
ータ転送時間より長くなること等による。ブロック17−
2の機能は外部データメモリ90から内部RAM100への複数
のデータ転送命令を順次実行することで処理される。
転送バッファからチャンネル音源用レジスタ群(イン
タラプト処理ルーチンにおいて参照される)へのデータ
転送はブロック17−4で実行される。このデータ転送中
にMCPU10の制御がタイマインタラプト処理ルーチン(第
5図)に移行しないようするため(あるいはSCPU20の制
御が第6図のプログラムに移行しないようにするた
め)、MCPU10はブロック17−4に先立ってブロック17−
3でインタラプトをマスクする命令を実行する。このイ
ンタラプトマスク命令の実行中に、MCPU10のオペレーシ
ョン制御回路112からローアクティブのマスク信号MASK
が発生する。このマスク信号MASKはインタラプト発生部
116からのインタラプト信号INTをマスクして、インタラ
プト処理ルーチン(第5図、第6図)への制御の移行を
禁止するように作用する。この目的のため、第16図にお
いて、インタラプト発生部116に結合するマスク解除待
機部150が設けられる。マスク解除待機部150は図示のよ
うに結合したR−Sフリップフロップ1502、ANDゲート1
504、及びDフリップフロップ1506を含む。
マスク信号MASKがマスク解除を示す“H"レベルのと
き、インタラプト発生部116からのインタラプト信号INT
により、R−Sフリップフロップ1502がセットされ、そ
の出力が“H"のMASKによりイネーブルされているANDゲ
ートを通って、Dフリップフロップ1506にT1CK1のタイ
ミングで取り込まれ、このDフリップフロップ1506の出
力が、実際のインタラプト信号A−INTとしてMCPU10のR
OMアドレス制御部114に入力される。その結果、SCPU動
作開始・終了機能のところで述べたように、ROMアドレ
ス制御部114のゲート1152からROMアドレスデコーダ104
にインタラプト処理ルーチン(第5図)のエントリポイ
ントのアドレスが入力されるとともに、次のメインプロ
グラム命令のアドレスがバスANからラッチL2に退避され
て、MCPU10の制御がインタラプト処理ルーチンに移行
し、メインプログラムは中断される。また、信号A−IN
TはSCPUリセット制御部134に入力され、その結果、SCPU
動作開始・終了機能のところで述べたようにSCPU20のプ
ログラム(第7図)動作が開始する。Dフリップフロッ
プ1506からのHレベルの出力はR−Sフリップフロップ
1502をリセットし、その結果、次のT1CK1のタイミング
でDフリップフロップ1506の出力(マスク解除待機部15
0の出力)はLレベルに切り換る。
これに対し、第17図の17−3に示すようにインタラプ
トマスク命令の実行により、オペレーション制御回路11
2からローアクティブのマスク信号MASKがマスク解除待
機部150に入力される場合には、インタラプト発生部116
からのインタラプト信号はANDゲート1504によってマス
クされる。その結果、マスク解除待機部1504はマスク信
号MASKがローアクティブの間、その出力A−INTを“L"
の割込禁止レベルに、ROMアドレス制御回路114の通常動
作を継続させ、MCPU10に対するメインプログラムの制御
を続行させる。
したがって、ブロック17−4に示す転送命令群(及び
エンベロープ△x用タイマーのクリア命令)の実行は、
実行の途中で、インタラプト発生部116からインタラプ
ト信号INTが発生した場合にも中断されない。これによ
り、インタラプト処理ルーチン(第5図、第6図)は正
しく更新されたエンベロープパラメータを参照でき、正
しい演算結果(楽音波形データ)を得ることができる。
しかる後、MCPU10はブロック17−5に示すインタラプ
トマスク解除命令を実行する。この結果、オペレーショ
ン制御回路112からマスク解除待機部150に供給される信
号MASKはマスク解除を示す“H"レベルに切り換る。複数
のデータ転送を含むブロック17−4の実行中に、インタ
ラプト発生部116からインタラプト信号が発生したよう
な場合には、マスク解除待機部150のR−Sフリップフ
ロップ1502の出力によって、このマスク解除命令の実行
後にインタラプトの要求が受け付けられ、上述したよう
にしてメインプログラムが中断され、インタラプト処理
ルーチンに制御が移行する。
一命令方式(第18〜第21図) この方式はメインプログラム(第4図)において複数
のデータをインタラプト処理ルーチンの参照する内部RA
M領域にセットするために、ロング命令と呼ばれる複数
データ一括転送のための単一命令を利用し、ロング命令
の実行が終了するまでインタラプト処理ルーチンにMCPU
10の制御が移行しないようにしたものである。
単一の命令(ロング命令)で複数のデータ転送が可能
なCPUは例えば特公昭60−47612号に開示されており、本
実施例にこの技術が適用できる。特公昭60−47612号に
よれば、ロング命令は連続するアドレスにある複数のレ
ジスタ間(例えばレジスタA0〜A3をレジスタB0〜B3)の
転送に適用可能である(ここにレジスタとはRAMの1記
憶場所を意味し、A、BはRAMのアドレス上位、即ち行
アドレスを表わし、0、3はRAMのアドレス下位、即ち
列アドレスを表わす)。制御用ROM(本実施例の要素102
に対応する)からのロング命令語にはソースレジスタの
行アドレス(上の例でいえばA)、ディスティネーショ
ンレジスタの行アドレス(B)、最初のデータ転送に係
るレジスタの列アドレス(0)、最後のデータ転送に係
るレジスタの列アドレス(3)の情報が含まれる。RAM
アドレス制御部(本実施例の要素105に対応する)はロ
ング命令の実行に適するように構成され、列アドレスを
最初の転送の列アドレスから最後の転送の列アドレスま
でデータ転送の都度、1ずつ更新するカウンタ(その出
力がRAMの列アドレス入力に順次加えられる)と、すべ
てのデータ転送が完了したことを検出するためカウンタ
出力と最後のデータ転送の列アドレス値とを比較し、一
致したときにロング命令実行完了信号を発生する一致回
路とを含んでいる。
以下の説明において、本実施例の制御用ROM102のメイ
ンプログラム内には上述したようなロング命令が含まれ
るものとし、RAMアドレス制御部105、205は上述したよ
うなロング命令の実行を適用できるように構成されてい
るものとする。
第18図にロング命令の実行中、インタラプト信号INT
によるメインプログラムの中断を禁止する回路を含むハ
ードウェアのブロック図を示し、第19図にロング命令を
エンベロープパラメータの転送に適用した場合のRAMの
メモリマップを示し、第20図にロング命令(単一転送命
令)と複数の転送命令との動作の比較を示し、第21図に
ロング命令を使用したエンベロープパラメータの転送に
関連するフローチャートを示す。
第18図において、インタラプト発生部116の転送終了
待機部152が結合している。この回路152はロング命令の
実行中、インタラプト信号によるメインプログラムの中
断を禁止する。転送終了待機部152は図示のように結合
されたR−Sフリップフロップ1522、ANDゲート1524、
Dフリップフロップ1526から成り、Dフリップフロップ
1526の出力(転送終了待機部152の出力)が実際に作用
するインタラプト信号A−INTとしてROMアドレス制御部
214とSCPUリセット制御部134に結合している。ANDゲー
ト1524に入力される信号〜LONGが“L"の間は、インタラ
プト発生部116からインタラプト信号INTが発生しても、
Dフリップフロップ1526の出力は“L"のままであり、RO
Mアドレス制御部214とSCPUリセット制御部134はインタ
ラプト信号INTの作用を受けない。ここに、信号〜LONG
はロング命令の実行中に“L"となる信号であり、ロング
命令の実行完了に伴ってRAMアドレス制御部104の一致回
路から発生するロング命令実行完了信号に応答して“H"
に復帰する。信号〜LONGのレベルが“H"のときには、イ
ンタラプト発生部116からのインタラプト信号INTは転送
終了待機部152を通ってROMアドレス制御部214とSCPUリ
セット制御部134に作用し、MCPU10の制御をメインプロ
グラム(第4図)からインタラプト処理ルーチン(第5
図)に移行させ、SCPU20のプログラム(第6図)動作を
開始させる。
エンベロープパラメータの更新に一命令方式を適用す
る場合において、インタラプト処理ルーチン(第5図、
第6図)のチャンネル音源処理サブルーチン(第9図)
が参照し、メインプログラムのエンベロープ処理サブル
ーチン(第21図)が設定(更新)するエンベロープパラ
メータはエンベロープ△x用タイマー、新目標エンベロ
ープ、新エンベロープ△x、新加減フラグ付エンベロー
プ△yである。本実施例において、これらのエンベロー
プパラメータのデータ源は外部メモリ90(第1図)にあ
る。エンベロープパラメータの更新の際に(21−1)。
外部データメモリ90から内部RAM106、206のチャンネル
音源データ領域への直接の転送は望ましくないので、外
部データメモリ90からのエンベロープパラメータはいっ
たん内部RAM106内の転送用バッファ領域に移し(21−
2)、次に、転送用バッファ領域からチャンネル音源デ
ータ領域に移す(21−3)。
この転送用バッファ領域からチャンネル音源データ領
域へのデータ転送処理21−3に上述したロング命令が使
用される。ロング命令を適用するために、転送用バッフ
ァ領域はRAM上に連続した領域であることを必要とし、
同様にエンベロープパラメータのチャンネル音源データ
領域も連続した領域であることを必要とする。この例を
第19図に示す。ここで、エンベロープパラメータの転送
用バッファ領域は、レジスタX4〜X7の連続領域はマッピ
ングされエンベロープパラメータについての1チャンネ
ル音源データ領域はレジスタA4〜A7の連続領域にマッピ
ングされている。したがって、1チャンネルでエンベロ
ープパラメータを更新する必要のあるときには、21−3
で、レジスタX4〜X7をレジスタA4〜A7に転送するロング
命令を実行すればよい。この命令が実行されている間
は、上述したようにインタラプト信号INTがインタラプ
ト発生部116から発生しても、転送終了待機部152のロン
グ命令完了待機機能により、ロング命令が終了するまで
はインタラプト信号の作用がROMアドレス制御部114、SC
PUリセット制御部134に波及しない(第20図(B)参
照)。この結果、チャンネル音源データ領域のエンベロ
ープパラメータが全て正しい更新値に変更された後にイ
ンタラプト処理ルーチンが開始するので、その演算結果
(楽音波形データ)が正しい値を示し、誤りのない動作
が保証される。
これに対しもし、21−3に示す転送処理機能を複数の
転送命令(一命令ごとに1つのエンベロープパラメータ
を転送する)の実行によって果たそうとした場合には、
転送の途中で、例えば、第20図(A)に示すように転送
命令1の実行中にインタラプト信号INTが発生すると次
のマシンサイクルで転送命令2の代りにインタラプト処
理ルーチンの最初の命令が実行されてエンベロープ転送
処理は途中で中断されてしまう。この結果、インタラプ
ト処理ルーチンの処理結果(楽音波形データ)は誤った
値となってしまう。
一命令方式による複数データの転送(更新)処理では
17−3、17−5に示すようなインタラプトマスク命令、
インタラプト解除命令を実行する必要がなく、オーバー
ヘッドなしの最短時間で、転送処理を実行することがで
きる利点もある。
変形例として、第18図に示すような転送終了待機部15
2の代りに、ロング命令の実行中、制御用ROM102、202か
らの命令をフェッチするインストラクション出力ラッチ
102aの動作を禁止する手段を使用してもよい。即ち、制
御用ROM102からラッチ102aを介して与えられるロング命
令語に含まれるモード信号(命令がロングであることを
示している)によって、インストラクション出力ラッチ
102a、202aに加えるオペレーションラッチ信号の発生を
禁止し、ロング命令の実行完了信号に応答して次のマシ
ンサイクルでオペレーションラッチ信号を発生する回路
をオペレーション制御回路112内に設ければ、インタラ
プト信号INTがロング命令の実行中に発生しても制御用R
OM102、202からインタラプト処理ルーチンの最初の命令
語はロング命令の実行が終了するまではインストラクシ
ョン出力ラッチ102a、202aにフェッチされない(したが
って実行もされない)ので実施例と同様の効果が得られ
る。
<MCPUからのSCPUアクセス機能> 本実施例の装置はMCPU10からSCPU20の内部RAM206にデ
ータを高速にアクセス(リードまたはライト)する機能
を有している。この課題は一般に複数のCPU間のデータ
アクセス問題として把えられている。従来技術ではこの
種のインターCPUデータアクセスに時間がかかる問題が
ある。従来技術ではアクセスを要求するCPUからアクセ
スを要求されるCPUに対し、要求信号を与える。アクセ
スを要求されるCPUはこの要求信号に対し、ただちに要
求側CPUからのデータアクセスを許可する承認信号を発
生することはできず、実行中のオペレーションが完了す
るまで承認信号の発生を遅延させる。したがって、従来
のインターCPUデータアクセス方式は高速処理が要求さ
れるアプリケーションにおける障害の1つとなってい
る。
本実施例では高速のインターCPUデータアクセスのた
めに2つの解決手段、即ち、SCPU停止モード利用方式と
瞬時強制アクセス方式を開示する。
SCPU停止モード利用方式(第22図、第2、第3図) この方式は上述したSCPU動作開始・終了機能を利用し
たものである。この機能によりSCPU20のプログラム(第
6図)動作はMCPU10におけるインタラプト処理ルーチン
(第5図)の開始と同時に開始し、MCPU10のインタラプ
ト処理ルーチンが終了する前に終了する。したがって、
MCPU10においてメインプログラム(第4図)が動作して
いる間はSCPU20は停止モード(リセット状態)にある。
第2図に示すように停止モード中では、リセット制御部
134からの信号Aが“SCPU停止中”を示す“H"レベルに
なる。この信号Aにより、SCPU20(第3図)ではROMア
ドレス制御部214の動作が停止し、RAMアドレス制御部20
4はSCPU20の制御用ROM202からのRAMアドレスバスSAでは
なく、MCPU10からバスゲート128を介してRAMアドレスMa
に結合してMCPU10からのSCPU内部RAM206の指定アドレス
を受けるように動作モードが設定され、RAMモードに切
り換え部240はSCPU20のオペレーション結果(ALU部208
出力または乗算器210出力)を運ぶデータバスDBではな
くMCPU10からのデータを運ぶデータバスDOUTにRAM206の
データインを結合する動作モードに設定され、ライト信
号切り換え部242はSCPUオペレーション制御回路212から
のリード/ライト制御信号ではなくオペレーション制御
回路112からのリード/ライト制御信号CをRAM206のリ
ード/ライト制御入力に結合する動作モードに設定され
る。このように停止状態ととき、SCPU20はMCPU10によっ
てデータアクセスが可能な状態に置かれている。
したがって、本実施例によれば、MCPU10はメインプロ
グラムにおいてSCPU20の内部RAM206を自由にアクセスす
ることができる。この様子を第22図に示す。SCPU20の停
止状態(音源処理完了)の確認、即ちMCPUオペレーショ
ン制御回路112におけるSCPUリセット制御部134からのSC
PU状態フラグの検査はMCPU10のインタラプト処理ルーチ
ン(第5図)のなかで1回だけ行えばよい(5−3参
照)。いったん停止状態が確認されれば、次のインタラ
プト信号INTが発生するまで、再度の確認をする必要な
しに、一命令の実行で、MCPU10はSCPU20の内部RAM206を
アクセスできる。したがって、従来に比べ、SCPU20への
データアクセスに要する時間が大幅に短縮される。
瞬時強制アクセス方式(第23〜第25図) この方式はデータアクセスのためにMCPU10とSCPU20と
の間で従来のようなアクセスの要求と承認という手続を
踏むことなく、MCPU10からのSCPUデータアクセス時にSC
PU20の動作を強制的に一時停止させ、その間にMCPU10が
SCPU20の内部RAM206にアクセスするものである。この方
式によれば、MCPU10は任意のときにSCPU20の状態を調べ
る必要なしにSCPU20を高速に(一命令実行で)アクセス
できる。
このような特徴を備えたMCPU10のブロック図とSCPU20
のブロック図をそれぞれ第23図と第24図に示す。なお、
このMCPUとSCPUは上述したSCPU動作開始終了機能に関す
る要素(第2図のSCPUリセット制御回路134その他)を
含む第23図と第24図では簡略化のため図示を省略してあ
る。この場合、リセット制御回路134からのSCPU動作起
動/停止信号AはSCPU20(第24図)のROMアドレス制御
部214にのみ供給すれば十分である。第23図と第24図のM
CPU10とSCPU20の瞬時強制アクセスに関する動作のタイ
ムチャートを第25図に示す。
瞬時強制アクセス方式を使用する場合、MCPU10とSCPU
20は別個のクロック発生回路136、236Mを必要とする。S
CPU20のクロック発生回路236Mは、SCPU20へのデータア
クセス命令実行時にMCPU10のオペレーション制御回路11
2Mから出力されるハイアクティブのSCPUアクセス信号D
に応答してその動作を停止する。これに関連し、MCPU10
のクロック発生回路136とSCPU20のクロック発生回路236
Mは共通の2相マスタークロック信号CK1、CK2を受ける
が、出力するクロックのタイミングは独立である。MCPU
10ではクロック発生回路136からの3相のクロック信号T
1、T2、T3の一周期でマシンサイクル(最短の一命令実
行時間)が規定され、一方、SCPU20ではクロック発生回
路236Mからの3相のクロック信号ST1、ST2、ST3の一周
期でそのマシンサイクルが規定される。第25図におい
て、SCPUアクセス信号Dが発生する前において、MCPU10
に関するクロックT1のタイミングはSCPU20に関するクロ
ックST1ではなくクロックST2のタイミングに一致してい
る。両CPU間で取り得る他のタイミング関係はT1がST1に
一致する関係とT1がST3に一致する関係である。
MCPU10におけるSCPUアクセス命令実行中にオペレーシ
ョン制御回路112から出力されるSCPUアクセス信号D
は、SCPU20のクロック発生回路236Mを停止させてSCPU20
で実行中のオペレーションを停止させるとともに、その
停止中にMCPU10がSCPU20の内部RAM206をアクセスできる
ように、MCPU1からの内部RAM206の指定アドレスに係る
バスゲート128、SCPU内部RAM206に対するアドレス制御
部204、データイン切り換え部240、及びライト信号切り
換え部242の各動作モードを“SCPU側”から“MCPU側”
に切り換える機能を有する。このために、SCPUアクセス
信号はこれらの要素128、204、240、242の動作モードを
選択する制御入力にDフリップフロップ250とANDゲート
252とから成る遅延回路を介して結合している。このよ
うなアクセス可能状態の下で、MCPU10はバスゲート12
8、RAMアドレス制御部204を介してSCPU内部RAM206をア
ドレッシングし、リードアクセスの場合にはSCPU内部RA
M206から出力されるデータをバスゲート132を介してMCP
U内部RAM106に読み込み、ライトアクセスの場合には、
バスゲート130を介して書き込みデータをデータバスD
OUTに乗せ、SCPU内部RAM206にライト信号Cを与えてデ
ータを書き込む。
MCPU10からのSCPUアクセス信号DによってSCPU20のオ
ペレーションを中断する場合に、オペレーションの中間
結果が失われないようにする必要があり、SCPUアクセス
信号Dの解決後に、予め保持した中間結果を用いてSCPU
20がオペレーションの残り部分を実行できるようにする
必要がある。このために、SCPU内部RAM206のデータ出力
を一時的に記憶するラッチ206a、206bを設けている。ラ
ッチ206aはRAM206からの演算数(第1オペランド)をST
1CK1のタイミングでラッチし、ラッチ206bはRAM206から
の被演算数(第2オペランド)をST2CK1のタイミングで
ラッチする。
第25図を参照して動作例を述べると、この例では、MC
PU10はSCPUアクセス信号Dがハイアクティブレベルの間
にSCPU20の内部RAM206に対するライトアクセスを実行し
ている。MCPU10ではこのデータ書込オペレーションの最
初のタイムスロットT1の間に、MCPU内部RAM106から転送
データ(RAM206に書き込むべきデータ)を取り出す。次
のタイムスロットT2でMCPU10はSCPU内部RAM206をアドレ
ッシングする。最後のタイムスロットT3でMCPU10はSCPU
内部RAM206にライト信号Cを与えてRAM206にデータを書
き込む。SCPU20側にとってMCPU10からのSCPUアクセス信
号DはSCPU20のオペレーション2がタイムスロットST2
に移るときはアクティブに変化している。このオペレー
ション2はSCPU20のRAM206にある被演算数と演算数をAL
U部208または乗算器210で演算するような命令のオペレ
ーションであり得る。MCPU10からのSCPUアクセスタイム
の直前のタイムスロットであるオペレーション2の最初
のタイムスロットST1でSCPU20はRAM106から演算数のデ
ータを取り出し、そのデータをクロックT1CK1により演
算数ラッチ106aにラッチしている。MCPU10からのSCPUア
クセス信号Dが発生しなければ、SCPU20は次のタイムス
ロットST2でRAM106から被演算数を取り出して被演算数
ラッチ10bにラッチし、最後のタイムスロットST3でALU
部108または乗算器110で演算を実行してRAM106の被演算
数レジスタに書き込む。実際には図示のようにオペレー
ション2の最初のタイムスロツトST1に続いてMCPU10か
らのSCPUアクセス信号Dが発生している。この場合、1
つの対策はオペレーション2の残り2つのタイムスロッ
トST2とST3で実行すべき処理をSCPUアクセス信号Dが除
去されるまで、即ちMCPU10のSCPUアクセスオペレーショ
ンが終了するまで中断することである。この方式でもMC
PU10はSCPU20をアクセスするオペレーションを最短時間
(MCPU10の内部RAM106をアクセスするのと同じ時間)内
に実行できるが、SCPU20にとっては最適ではなくMCPU10
からのSCPUアクセスオペレーションの都度、SCPU20のオ
ペレーションがタイムスロット3つ分遅延されることに
なる。都合のよいことに、MCPU10のSCPUアクセスオペレ
ーションの最初のタイムスロットT1で実行される処理は
SCPU20に影響を与えない処理である。この特徴を利用
し、実施例ではMCPU10からSCPUアクセス信号Dが与えら
れても、MCPU10のタイムスロットT1の間に、SCPU20自身
のオペレーションが継続できるようにして、SCPU20の動
作遅れをできるだけ短かくしている。第25図の例でいえ
ば、SCPU20はMCPU10のSCPUデータ書込オペレーションの
最初のタイムスロットT1の間に、RAM206から被演算数の
データを取り出し、ラッチ206bにクロックST2CK1を与え
て被演算後をラッチさせている。その後、SCPUクロック
発生回路236の動作はSCPUアクセス信号Dが除去される
まで停止し、SCPU20は待ち状態に置かれる。そしてこの
待ち状態の間、SCPU20の要素128、264、240、242はSCPU
アクセス信号Dにより“MCPU側”に切り換えられ、MCPU
10のSCPUデータ書込オペレーションにおけるタイムスロ
ットT2、T3に関する処理が実行されてSCPU内部RAM206に
MCPU10からのデータが書き込まれる。
MCPU10からのSCPUアクセス信号Dが除去されると、SC
PUクロック発生回路236は動作を再開し、クロックST3を
“H"に変化させる、更に、SCPUアクセス信号Dの除去に
より、SCPU20の要素128、204、240、242が“SCPU側”に
戻され、SCPU20自身の動作が可能な状態になる。そこで
SCPU20はこのタイムスロットST3において、ALU部208ま
たは乗算器210の演算出力をRAM206に書き込んでオペレ
ーション2の残りの部分を実行する。
第25図のタイムチャートに示すように、SCPU20の動作
がMCPU10からのSCPUアクセスオペレーションの都度、中
断される時間はタイムスロット2つ分だけである。
なお、MCPU10がSCPU20の内部RAM206からのデータを読
み出すリードアクセスオペレーションの場合、そのタイ
ムスロットT2でMCPU10はSCPU内部RAM206をアドレッシン
グし、タイムスロットT3でMCPU内部RAM106をアドレッシ
ングしてSCPU内部RAM206からのデータをバスゲート132
を介してMCPU内部RAM106に取り込む。
以上のように、瞬時強制アクセス方式によればMCPU10
はSCPU20の内部RAM206に対するアクセスをMCPU自身のRA
M106に対するアクセスと同様に最短時間内で実行でき、
待ち時間命令を実行する必要がない。更に、瞬時強制ア
クセス方式によれば、SCPU20のオペレーションを途中で
中断し、MCPU10のSCPUアクセスオペレーション後に、中
断されたところからオペレーションを再開できる。した
がって、MCPU10はSCPU20に対するアクセスに先立ってSC
PU20の状態を検査する必要はなく、任意のときに、例え
ば、インタラプト処理ルーチン(第5図)中でも自由に
SCPU20をアクセスすることができる。
<共用メモリアクセス競合解消機能(第26、第27図、第
1図)> 第1図において外部メモリ90は複数のCPU、即ちMCPU1
0とSCPU20に共用されるデータメモリである。したがっ
て外部データメモリ90に対する複数のアクセス、即ち、
MCPU10からの外部データメモリ90アクセスと、SCPU20か
らの外部データメモリ90アクセスをサポートする手段が
必要である。更に、外部データメモリ90を共用化する場
合においてMCPU10とSCPU20とが外部データメモリ90を同
時にアクセスを試みることを許容するのが望まれる。MC
PU10とSCPU20との間で外部データメモリ90に対する使用
権(トークン)を交換する機能を設けることにより、MC
PU10とSCPU20が同時には外部データメモリ90をアクセス
しないようにすることもできるが、トークンの手続は外
部データメモリアクセスのための準備時間を占めるの
で、外部データメモリアクセスに要するトータルの時間
が長くなり、効率的でない。一方、MCPU10とSCPU20によ
る外部データメモリ90の同時アクセスを許容する場合、
メモリ90自体は物理的に同時アクセス不能であるので、
同時アクセスによるアクセス競合を解消する手段が必要
となる。
これらの手段を実現するため、第1図に示すようにMC
PU10からの外部メモリアドレス情報はアドレスバスMA、
MCPU外部メモリアドレスラッチ30M、アドレス切り換え
回路40、アドレス変換回路60を介して外部メモリ90のア
ドレス入力に結合されており、外部メモリ90からのデー
タ出力はデータ変換回路70、MCPU外部メモリデータラッ
チ80M、データバスMDを介してMCPU10に結合されてい
る。一方、SCPU20からの外部メモリアドレス情報はアド
レスバスSA、SCPU外部メモリアドレスラッチ30S、アド
レス切り換え回路40、アドレス変換回路60を介して外部
メモリ90のアドレス入力に結合されており、外部メモリ
90からのデータ出力はデータ変換回路70、SCPU外部メモ
リデータラッチ80S、データバスSDを介してSCPU20に結
合されている。そして、MCPU10とSCPU20からの外部デー
タメモリアクセス要求を表わす信号MCPU−romaとSCPU−
romaを受けるメモリ装置競合回避回路50により、上記MC
PU外部メモリアドレスラッチ30Mは、SCPU外部メモリア
ドレスラッチ30S、アドレス切り換え回路40、MCPU外部
メモリデータラッチ80M、SCPU外部メモリデータラッチ8
0Sが制御されるようになっている。このメモリ装置競合
回避回路50に上述したアクセスの競合を回避する機能が
含まれている。
第26図にメモリ装置競合回避回路50のブロック図を示
し、第27図にアクセスの競合に対する動作のタイムチャ
ートを示す。
第26図において、メモリ装置競合回避回路50には入力
としてMCPU10からのアクセス要求信号MCPU−roma、SCPU
20からのアクセス要求信号SCPU−roma、更に、MCPUリセ
ット信号MRES及びSCPUリセット信号SRES(第1図におい
て図示省略)が結合する。MCPUリセット信号MRESはセッ
トリセット回路(R−Sフリップフロップ)502とその
出力に結合するセットリセット回路506をリセットし、
信号MCPU−romaは、セットリセット回路502をセットす
る。セットリセット回路502はMCPU10からのアクセス要
求を一時記憶し、出力側セットリセット回路506はセッ
ト状態において、MCPU10からのアクセス要求が受け付け
られて外部メモリデータアクセス制御信号発生回路510
を介してアクセスのオペレーションが実行中であること
を示す。同様にSCPUリセット信号SRESはセットリセット
回路504とその出力に結合するセットリセット回路508を
リセットし、信号SCPU−romaはセットリセット回路504
をセットする。セットリセット回路504はSCPU20からの
アクセス要求を一時記憶し、出力側セットリセット回路
508はセット状態においてSCPU20からのアクセス要求が
受け付けられアクセスのオペレーションが実行中である
ことを示す。
詳細に述べると、MCPUアクセス要求セットリセット回
路502のセット状態の出力“H"はSCPUアクセス実行セッ
トリセット回路508がセット状態でないことを条件とし
て、即ち、SCPU20のアクセスオペレーションが実行中で
ないことを条件として(他入力が508からのインバータ5
22を介した反転入力に結合するANDゲート524を介して)
MCPUアクセス実行セットリセット回路506をMCPUアクセ
ス実行状態にセットし、このMCPUアクセス実行セットリ
セット回路506をセットする信号により、ORゲート512
(他入力がリセット信号MRESに結合する)を介してMCPU
アクセス要求セットリセット回路502をリセットする。
同様に、SCPUアクセス要求セットリセット回路504のセ
ット状態の出力“H"はMCPUアクセス実行セットリセット
回路506がセット状態でないことを条件として、即ちMCP
U10のアクセスオペレーションが実行中でないことを条
件として(他入力の1つが506からのインバータ520を介
した反転入力に結合するANDゲート526)を介してSCPUア
クセス実行セットリセット回路508をSCPUアクセス実行
状態にセットし、このSCPUアクセス実行セットリセット
回路508をセットする信号により、ORゲート516(他入力
がリセット信号SRESに結合する)を介してSCPUアクセス
要求セットリセット回路504をリセットする。以上の構
成により、片方のCPU(例えばSCPU20)からアクセス要
求があっても、他方のCPU(MCPU10)に関するアクセス
オペレーションが実行中のときは、その実行が完了する
まではアクセスを要求したCPU(SCPU20)に関するアク
セスオペレーションは実行されない。これにより、アク
セスの競合が基本的に回避される。
更に、MCPU10とSCPU20とが完全に同時にアクセスを要
求する場合がある。このアクセス競合に対し、実施例で
は、MCPU10からのアクセス要求を優先させ、MCPU10のア
クセスオペレーションを実行してから、SCPU20のアクセ
スオペレーションを実行している。このために、MCPUア
クセス要求セットリセット回路502がセット状態のとき
はその出力信号“H"によりインバータ525を介してANDゲ
ート526を禁止しており、セットリセット回路502がセッ
ト中のときはSCPUアクセス要求セットリセット回路504
がセット状態でもSCPUアクセス実行セットリセット回路
508がセットされないようにしている。
外部メモリデータアクセス制御信号発生回路510は、
セットリセット回路506と508からの出力に結合し、いず
れかのセットリセット回路の出力がセット状態“H"に変
化すると、そのセット状態が示すCPUアクセスのオペレ
ーションを一連のシーケンスで実行する。外部メモリデ
ータアクセス制御信号発生回路510から出力される信号C
EとOEは外部メモリ7からデータを出力するための制御
信号であり、信号MDLはMCPU外部メモリデータラッチ80M
に外部メモリ90からのデータをラッチするための制御信
号であり、信号SDLはSCPU外部メモリデータラッチ80Sに
外部メモリ90からのデータをラッチするための制御信号
である。外部メモリデータアクセス制御信号発生回路51
0はアクセスオペレーションの実行を終了するとEND信号
を発生する。このEND信号により、セット状態にあった
アクセス実行セットリセット回路はリセットされる。即
ち、END信号は他入力がセットリセット回路506の出力に
結合するANDゲート528と他入力がMCPUリセット信号MRES
に結合するORゲート514を介してセットリセット回路506
のリセット入力に結合し、また他入力がセットリセット
回路508の出力に結合するANDゲート530と他入力がSCPU
リセット信号SRESに結合するORゲート518を介してセッ
トリセット回路508のリセット入力に結合する。
SCPUアクセス実行セットリセット回路508の出力はイ
ンバータ532を介してアドレス切り換え回路40に対する
アドレス選択信号MSELを発生する。したがって、アドレ
ス切り換え回路40は、SCPU20のアクセスオペレーション
が実行中のときに、SCPU外部メモリアクセス用アドレス
ラッチ305からのSCPUアドレスを選択し、その他の場合
はMCPU外部メモリアクセス用アドレスラッチ30MからのM
CPUアドレスを選択する。
第27図の場合、MCPU10とSCPU20は“MCPUオペレーショ
ンのroma"、“SCPUオペレーションのroma"に示すように
同時に外部メモリ90に対するアクセスを要求している。
このroma命令のオペレーションにおいて、MCPU10はアド
レスバスMAにアドレス情報を送出し、信号MCPU−romaを
出力してMCPU外部メモリアクセス用アドレスラッチ30M
にアドレス情報をラッチさせ、同様にSCPU20はアドレス
バスSAにアドレス情報を送出し、信号SCPU−romaを出力
してSCPU外部メモリアクセス用アドレスラッチ30Sにア
ドレス情報をラッチさせる。同時に発生するMCPU−roma
信号とSCPU−roma信号により、メモリ装置競合回避回路
50のMCPUアクセス要求セットリセット回路502とSCPUア
クセス要求セットリセット回路504は同時にセットされ
る。これに対し、上述したMCPUアクセス優先論理に従
い、MCPUアクセス実行セットリセット回路506がただち
にセット状態に変化し、それにより外部メモリデータア
クセス制御信号発生回路510が外部メモリ90に対するMCP
U10のアクセスオペレーションを実行する。この時点で
アドレス切り換え回路40はMCPU10からのアドレス情報を
選択している。MCPU10のアクセスオペレーションの期間
を第27図の左方の期間lで示す(なお、回路510は2相
のマスタークロックCK1、CK2で動作するが、第26図では
図示を省略してある)。外部メモリデータアクセス制御
信号発生回路510は期間nでチップイネーブル信号CEを
ローアクティブにし、期間nの後半の期間mで出力イネ
ーブル信号OEをローアクティブする。したがって、この
期間mにおいて外部メモリ90からMCPU10が要求したデー
タが出力され、この期間m内に外部メモリデータアクセ
ス要求信号発生回路510から発生する信号MDLにより、こ
の出力データがMCPU外部メモリデータラッチ80Mにラッ
チされる。これにより、外部メモリデータアクセス要求
信号発生回路510はMCPU10のためのアクセスオペレーシ
ョンは完了するので、回路510はエンド信号ENDを出力す
る。これにより、MCPUアクセス実行セットリセット回路
506はリセツトされ、代りにSCPUアクセス実行セットリ
セット回路508がセットされる。これにより信号MSELはS
CPUアドレス選択を示す“L"レベルに変化し、アドレス
切り換え回路40はSCPU20からのアドレスを選択して外部
メモリ90をアドレッシングする。更に、SCPUアクセス実
行セットリセット回路508からのセット信号に応答して
外部メモリデータアクセス制御信号発生回路510がSCPU2
0のためのアクセスオペレーションを実行する。この期
間を第27図の右側の期間lで示す。このオペレーション
において外部メモリデータアクセス制御信号発生回路51
0は信号CEをローアクティブにし、その後半の期間pで
信号OEをローアクティブにしてSCPU20の要求したデータ
を外部メモリ90から出力させ、その出力中に信号SDLを
発生してSCPU外部メモリデータラッチ80SにSCPU20の要
求したデータをラッチさせる。これにより、外部メモリ
データアクセス制御信号発生回路510のSCPU20のための
アクセスオペレーションは完了するので同回路510はエ
ンド信号ENDを出力してSCPUアクセス実行セットリセッ
ト回路508をリセット状態に戻す。
これ以降、MCPU10とSCP20はそれぞれデータバスMD、S
Dに乗っている外部メモリデータラッチ80M、80Sの出力
データを読むことにより、要求したデータを得ることが
できる。
このようにして各CPU10、20はroma命令(外部メモリ
アクセス要求命令)を実行後、メモリ装置競合回避回路
50が両CPUのためのアクセスオペレーションを実行する
所定の期間2lだけ待てば要求したデータを得ることがで
き、アクセス競合の問題が解消される。更に、待機時間
が一定(2l)なので、各CPU10、20はこの期間を他の命
令の実行に使用することができ、プログラム命令の実行
効率が最適化される。
なお、MCPU−roma信号とSCPU−roma信号のタイミング
関係がその他のタイミング関係となる場合については図
示を省略しているが、いかなる場合でも、各CPU10、20
はroma命令を実行後、所定の期間2l待てばその時点で既
に各CPUの外部データラッチには要求したデータがラッ
チされているので、そのデータの入手が可能である。
<アドレス・データ変換ハードウェア(第28〜第32図、
第1図)> 一般に、CPUを含むマイクロコンピュータシステムに
おいて、データメモリにある原データから演算用メモリ
上に原データを変換したデータ(原データから抽出され
る所望の情報)を作成することがしばしば望まれる。特
にこの種のデータは変換はデータメモリの記憶容量を効
率的に使用したような場合にその補償として必要にな
る。この目的のため、従来では、データメモリから演算
用メモリへの転送命令を実行して、データメモリの原デ
ータを演算用メモリに移し、次に1以上の変換命令を実
行して、演算用メモリにあるデータをALUを介して変換
する。したがって、従来の場合、演算用メモリ上に所望
のデータを得るためのデータ変換手続に時間がかかり、
高速処理が要求されるアプリケーションにおける障害の
1つとなっている。
本実施例ではCPU10、20がデータメモリである外部メ
モリ90から演算用メモリである内部RAM106または206に
データを転送する命令(roma命令)を実行するだけで、
所望の変換が施されたデータが内部RAM106、206に読み
込まれるようにして、データ変換処理の高速化を図って
いる。この目的を実現するため、CPU10、20と外部メモ
リ90との間のアドレス径路上にアドレス変換回路60が設
けられ、また外部メモリ90とCPU10、20との間のデータ
径路上にデータ変換回路70が設けられ、各変換回路60、
70はroma命令の実行時にCPU10、20から与えられる制御
信号に応答して所望の変換を実行する。
第28図に外部メモリアクセス命令romaのリストを示
す。第1の命令roma0は変換なしの転送命令であり、こ
れに対し、アドレス変換回路60はCPU10、20から与えら
れる入力アドレスをそのまま出力アドレスとして外部デ
ータメモリ90に通し、データ変換回路70も外部データメ
モリ90からのデータ(16ビットデータ)を無変換で通し
てCPU10、20に渡す。この無変換転送命令roma0ではCPU1
0、20から変換回路60、70に与えられる変換制御用の信
号R1、R2、R3はいずれも“L"レベルとなる。
第2の命令roma1は特殊波形の読み出しに適した命令
である。この命令に対し、アドレス変換回路60はCPU1
0、20から送られてきた入力アドレスの第13ビットA12が
“0"のときは下位12ビットを無変換で通すが第13ビット
A12が“1"のときは下位12ビットを反転させる。なお、
アドレス変換回路60の出力アドレスの第13ビットは入力
アドレスの第13ビットA12の値にかかわらず“0"に固定
される。また、この命令に対し、データ変換回路70はCP
U10、20から送られてきた入力アドレスの第13ビットA12
をCPU10、20に送るデータの第13ビットD12とするととも
にA12が“1"のとき下位の12ビットデータを反転する形
式で外部メモリ90からのデータを変換する。したがっ
て、外部メモリ90のアドレス領域0000〜0FFFに第28図に
示すような有効データビット数12の特殊波形データ(00
00〜0FFF)があるとすると、CPU10、20がこの命令を指
定アドレス0000〜1FFFの範囲について繰り返し実行した
場合に、アドレス変換回路60から出力される外部メモリ
アドレスはいったん0000から0FFFに進み、この間、デー
タ変換回路70は外部メモリ90からのデータをそのまま通
し、その後、アドレス変換回路60の反転動作により、外
部メモリ90へのアドレスは0FFFから0000に後進し、この
間、データ変換回路70は外部メモリ90から出力されるデ
ータの下位12ビットを反転し、第13データビットD12を
“1"にして変換されたデータを出力する。結局、CPU1
0、20がアドレスを0000〜1FFFに動かして命令roma1を繰
り返し実行した場合に、CPU10、20は実際に受け取る波
形は第28図のroma1の欄の右方に示すような波形とな
る。この変換波形は左方に示す外部メモリ90内の原波形
を所定の態様で延長した繰り返し波形(アドレス0FFF、
データ0FFFの点について対称な波形)である。この結
果、記憶容量の点についていうと、変換波形のデータ自
体を予め外部データメモリ90に記憶させる方式に比べ、
波形データ記憶容量が半分になる利点がある。この命令
roma1の場合、制御信号R1、R2、R3のうちR1のみが“H"
レベルになる。
第3の命令ROMA2は外部メモリデータの一部(半語)
の読み出しを指示する命令である。この命令の場合、R2
のみが“H"レベルになる。外部データメモリ90の1アド
レス(1語)当りの記憶容量は16ビットである。この命
令roma2に対し、データ変換回路70は、CPU10、20からの
アドレスの第16ビットA15が“0"のときは、外部データ
メモリ90からの16ビットデータのうち、下位の8ビット
を残し、上位の8ビットを“0"にマスクする変換を実行
し、A15が“1"のときは外部データメモリ90から16ビッ
トデータのうち、上位の8ビットを下位8ビットにシフ
トする(残った上位8ビットはマスク)変換を実行す
る。また、データ変換回路70において入力アドレスの第
16ビットA15を制御信号として使用しているので、アド
レス変換回路60ではA15の値にかかわらず出力アドレス
の第16ビットを所定値“0"にマスクする。なお、この場
合において外部データメモリ90からの16ビット情報の上
位8ビットと下位ビットとの関係は、1つのデータ(例
えば位相データ)における上位データ部分(例えば整数
部)と下位データ部分(例えば小数部)のような関係で
あってもよいし、異なる2種類の8ビットデータ(例え
ばレートデータとレベルデータ)の各々であるような独
立な関係であってもよい。
第4の命令ROMA3は外部メモリデータをシフトして一
部を読み出す命令である。この命令の場合、R3のみが
“H"レベルになる。この命令に対し、データ変換回路70
は外部メモリ90からの16ビットデータのうち、bit15は
そのままにして上位12ビットのbit15〜bit4をbit14〜bi
t3にシフトし、下位の3ビットbit2〜bit0を0にマスク
する変換を行う。ここに、外部メモリ90の16ビツトデー
タのうち上位12ビットは例えばbit15を符号ビットとす
る波形データであり、下位4ビットは別のデータを表わ
す。この場合、上記の変換により、CPU10、20は内部RAM
106、206上で使用するのに適したフォーマットの波形デ
ータを高速に読み取ることができる。
第29図にアドレス変換回路60のブロック図を示す。こ
のアドレス変換回路60にはMCPU10またはSCPU20からアド
レスラッチ30M、30S、アドレス切り換え回路40を介して
入力される16ビットのアドレスのうち、下位12ビット
(bit0〜bit11)が詳細を第30図に示す反転回路610に入
力される。この反転回路610は信号R1が命令roma1を表わ
す“1"でアドレスのA12が“1"のときANDゲート612から
の信号により動作して入力されるアドレスの下位12ビッ
トを反転させる。また、命令roma1の実行時に“1"とな
る信号R1はインバータ602を介して、ANDゲート604を禁
止し、入力アドレスのA12の値にかかわらず出力アドレ
スの対応ビット(bit12)を“0"にする。入力アドレス
のA13とA14はそのまま出力アドレスの対応ビット(bit1
3、bit14)として出力される。入力アドレスのA15(MS
B)はANDゲート608を介して出力アドレスの対応ビット
(bit15)となる。命令roma2の実行中を表わす“1"の信
号R2が発生しているとき、この信号R2がインバータ606
を介してANDゲート608を禁止して出力アドレスのbit15
(MSB)を“0"にマスクする。
したがってアドレス変換回路60は、無変換命令roma0
とシフト読み出し命令roma3に対してはR1=“0"、R2=
“0"なので入力アドレスを出力アドレスとしてそのまま
通し、特殊波形読出し命令roma1に対してはR1=“1"な
ので出力アドレスのbit12を“0"にマスクし、A12=“1"
の間反転回路610により入力アドレスの下位12ビット(b
it0〜bit11)を反転して出力アドレスとする。更に、一
部読み出し命令roma2に対してはR2=“1"なので出力ア
ドレスのbit15を“0"にマスクする。このようにして、
第28図に関して述べたアドレス変換回路の機能が実現さ
れる。
第31図にデータ変換回路70のブロック図を示し、第32
図にその詳細を示す。これらの図においてデータ入力は
第1図の外部メモリ90から供給されるデータである。第
32図において、入力データの上位8ビットに結合する3
状態ゲート回路702と入力データの下位8ビットに結合
する3状態ゲート回路704は出力するデータの下位8ビ
ットとして入力データの上位8ビットを選択するが、入
力データの下位8ビットを選択するかを決めるためのも
のである。R2=“1"(roma2命令)でA15=1のとき、AN
Dゲート706の“1"出力信号とその反転信号であるインバ
ータ708の出力信号“0"により、ゲート回路702が導通
し、ゲート回路704がオフして入力データの上位8ビッ
トが出力データの下位8ビットとして選択される。その
他の場合は、ゲート回路702がオフし、ゲート回路704が
導通するので入力データの下位8ビットがそのまま出力
データの下位8ビットとして出力される。更にR2=“1"
(roma命令)のときは、入力データの上位8ビットに結
合するANDゲート回路710が禁止されて出力データの上位
8ビットを“0"にマスクする。即ち、R2=“1"のときは
インバータ712とNORゲート714を介して禁止信号がANDゲ
ート回路710に加わってANDゲート回路710における入力
データ上位8ビットの通過が阻止される。また、ANDゲ
ート回路710における入力データの上位3ビットと結合
するANDゲート素子はR1=“1"(roma1命令)のときにNO
Rゲート714を介して禁止され、出力データの上位3ビッ
トを“0"にマスクする。
EX−ORゲート回路716は入力データの下位12ビットを
選択的に反転するための回路である。EX−ORゲート回路
716はR1=“1"(roma1命令)でA12=1のとき、ANDゲー
ト718からの反転信号“1"により、下位12ビットデータ
を反転し、その他の場合は下位12ビットデータをそのま
ま通す。回路710内のANDゲート素子を介して入力データ
のbit12に結合する状態ゲート722はR1=“1"(roma1命
令)のときに、信号R1に結合するインバータ720を介し
て与えられる信号“0"によりオフし、代りに、A12に結
合する3状態ゲート724が信号R1によって導通して出力
データのbit12を発生する。シフトマスク回路726は選択
的に入力されたデータのbit15〜bit4を出力データのbit
14〜bit3にシフトし、出力データのbit2〜bit0を“0"に
マスクするための回路であり、R3=“1"(roma3命令)
のとき信号R3に結合するインバータ728からの信号“1"
によってこの変換を実行する。
したがって、データ変換回路70は、無変換命令roma0
(R1=R2=R3=“0")のときは、入力される16ビットデ
ータをそのまま通し、特殊波形読み出し命令roma1(R1
=“1")のときは入力アドレスの上位4ビット(bit15
〜bit12)が“0000"(A12=0のとき)か“0001"(A12
=1のとき)かによって、出力データの下位12ビットを
そのまま入力データの下位12ビットとする(A12=0の
とき)か、或は、出力データの下位12ビットを入力デー
タの下位12ビットが反転されたデータとなる(A12=
1)ようにデータ変換を行い、一部読み出し命令roma2
(R2=“1")のときは出力データの上位8ビットがオー
ルゼロで、出力データの下位8ビットが入力データの下
位8ビットとなるように(A15=0のとき)、或は、出
力データの上位8ビットがオールゼロで、出力データの
下位8ビットが入力データの上位8ビツトとなる(A15
=1のとき)ようにデータ変換を行い、シフト読み出し
命令roma3(R3=1)のときは出力データの下位3ビッ
ト(bit0〜bit2)がオールゼロで、出力データのbit3〜
bit14が入力データのbit4〜bit15で、出力データのbit1
5(MSB)が入力データのbit15(MSB)となるようにデー
タ変換を行う。このようにして第28図で述べたデータ変
換機能が達成されている。
以上により、アドレス変換回路60とデータ変換回路70
とを設けたことによる利点は明らかである。即ち、CPU1
0、20にとつて、データメモリである外部メモリ90に対
するアクセス命令romaを実行するだけで、回路60と70の
変換機能により、所望の変換が施されたデータをただち
に得ることができ、従来のように、外部メモリ90のデー
タを演算用メモリである内部RAM106、206にいったん取
り込んだ後に、ALU部108、208のようなALUを介して変換
を実行する必要がなく、処理が高速化される利点があ
る。
なお、第28図に示したアクセス命令romaのリストは例
示にすぎず、拡張、変更は容易である。
<DACサンプリング(第33、第34図)> 本実施例においてDAC100はMCPU10とSCPU20が生成した
デジタル楽音信号をアナログ楽音信号に変換するもので
ある。第5図の5−5に示すように、MCPU10はタイマイ
ンタラプト処理ルーチンのなかで、MCPU10とSCPU20が生
成したデジタル楽音信号のサンプルをDAC100にセットす
る。この処理5−5の実行間隔は平均としてはタイマイ
ンタラプト発生部116の発生するインタラプト信号INTの
発生間隔に等しいが、実際の実行間隔はプログラム動作
のために変動する。したがって、処理5−5の実行間隔
をD/A変換の変換周期としてD/A変換を行ったとするとア
ナログ楽音信号に大きな歪みが生じてしまう。
第33図に右DAC100Rまたは左DAC100Lの構成例を示す。
第33図の(A)に示す構成では、処理5−5の実行時
に、MCPU10のオペレーション制御回路112の制御の下
に、内部RAM106内の波形加算用レジスタが指定され、そ
こに記憶されている最新のデジタル楽音データが取り出
され、データバスに乗せられる。そして、データバスに
デジタル楽音データが乗っているタイミングでラッチ10
04のクロック入力にストローブ用のプログラム制御信号
がオペレーション制御回路112から与えられるデータバ
ス上のデータがセットされ、ラッチ1004から新しいデジ
タル楽音データがD/A変換器1002に入力される。したが
って、第34図(A)に示すように、D/A変換器1002に入
力されるデジタル楽音データはプログラム制御のために
不安定な周期で切り換わることになる。D/A変換器1002
の変換周期(サンプリング周期)は非常に安定していな
ければ、その変換において大きな歪みが発生する。
この問題は第33図(B)に示すような構成をとること
により解決される。すなわち、オペレーション制御回路
112からのプログラム制御信号によって制御されるソフ
ト制御ラッチ1004と、デジタル楽音信号をアナログ楽音
信号に変換するD/A変換器1002との間に、インタラプト
発生部116からの正確なタイミング信号であるインタラ
プト信号INTで制御されるインタラプト制御ラッチ1006
を設ける。インタラプト信号の発生周期はクロック発振
器の安定度に従うので極めて安定である。ラッチ1006の
出力はインタラプト信号のタイミングに同期して切り換
わる。すなわち、インタラプト信号の発生周期がD/A変
換器1002の変換(サンプリング)周期となる。第33図
(B)の構成に対するタイムチャートを第34図(B)に
示す。図示のように、ラッチ1004の出力が切り換わるタ
イミングはインタラプト処理に移行するタイミングのず
れや、該インタラプト処理に要する時間(斜線部の長
さ)によって変動するがインタラプト信号で動作するラ
ッチ1006があるのでD/A変換器1002の入力データが切り
換るタイミングはインタラプト信号と同期する。これに
より、第33図(A)の構成における歪み問題が解決され
る。
[変形例] 以上で実施例の説明ろ終えるが、この発明の範囲内で
種々の変形、変更が可能である。
例えば、1つのCPUではなく2以上のCPUに各々メイン
プログラムをもたせて、電子楽器のシステム制御を各CP
Uで分担するようにしてもよい。この場合、各CPUが内蔵
するメインプログラムはシステム制御の分担部分に応じ
て異なる。例えば第1のCPUはメインプログラムにおい
て機能キーからの入力を処理し、第2のCPUはメインプ
ログラムにおいて鍵盤キーからの入力を処理するといっ
た具合である。
[発明の効果] 最後に特許請求の範囲に記載の発明の効果、利点につ
いて述べる。
請求項1の構成によれば複数のCPUが各々のプログラ
ムに従って動作して楽音信号の生成を協働して行うので
従来のような専用構造の音源回路ハードウェアに頼るこ
となく音源としての能力の高い電子楽器用処理装置を提
供することができる。また、装置の機能の追加、変更は
基本的に各CPUで実行するプログラムを変更することに
よって達成し得、大幅な回路変更を必要としない。
また、上記の効果以外に複数のCPU間のアクセス量
(システムの動作効果の低下につながる)を最小にする
ことができる利点、単一のメインCPU使用によりシステ
ム制御が容易になる利点、各CPUのハードウェアを同様
の回路で構成できるだけでなく各CPUが内蔵するプログ
ラムも可能なかぎり共通なものが使用できる利点、結果
として電子楽器用処理装置のシステム構築が容易になる
利点等がある。
【図面の簡単な説明】
第1図はこの発明を適用した電子楽器用処理装置の全体
構成図、 第2図は第1図のMCPUのブロック図、 第3図は第1図のSCPUのブロック図、 第4図はMCPUの実行するメインプログラムのフローチャ
ート、 第5図はMCPUの実行するインタラプト処理ルーチンのフ
ローチャート、 第6図はSCPUの実行するプログラムのフローチャート、 第7図は音源処理のフローチャート、 第8図は時間の経過に沿う実施例の動作のフローチャー
ト、 第9図はチャンネル音源処理のフローチャート、 第10図は波形データを示す図、 第11図は音源処理用RAMテーブルを示す図、 第12図はSCPU動作開始終了機能に関係する回路のブロッ
ク図、 第13図、第14図、第15図は第12図の回路の動作のタイム
チャート、 第16図はインタラプトマスク機能を有する回路のブロッ
ク図、 第17図はインタラプトマスク方式によるエンベロープ設
定処理のフローチャート、 第18図は単一命令で複数のデータを転送する間インタラ
プト信号によるメインプログラムの中断を禁止する機能
を有する回路のブロック図、 第19図は複数のデータを単一命令で転送するのに適した
RAMのメモリマップ例を示す図、 第20図は複数の転送命令による動作と単一の転送命令に
よる動作とを比較して示す図、 第21図は単一転送命令方式によるエンベロープ設定処理
のフローチャート、 第22図はSCPUの停止モード利用によるMCPUからのSCPUア
クセス機能を説明するのに用いたフローチャート、 第23図はSCPUに対する瞬時強制アクセス機能を有するMC
PUのブロック図、 第24図はSCPUに対する瞬時強制アクセス機能に適合する
SCPUのブロック図、 第25図はMCPUからSCPUの内部RAMにデータを書き込む場
合の動作のタイムチャート、 第26図は第1図のメモリ装置競合回避回路のブロック
図、 第27図は第26図の回路の動作のタイムチャート、 第28図は外部メモリからのデータを変換して取り込む命
令を含む外部メモリアクセス命令のリストを示す図、 第29図は第1図のアドレス変換回路のブロック図、 第30図は第29図の反転回路の回路図、 第31図は第1図のデータ変換回路のブロック図、 第32図はデータ変換回路の回路図、 第33図は第1図のDACのサンプリング周期が不安定にな
る構成とサンプリング周期を安定化した構成とを比較し
て示す図、 第34図はDACのサンプリング周期が不安定な場合のタイ
ムチャートと安定な場合のタイムチャートとを比較して
示す図である。 10……MCPU(メインCPU) 20……SCPU(サブCPU) 102……制御用ROM(MCPUプログラム記憶手段) 106……RAM(MCPUデータ記憶手段) 108……ALU部(MCPU演算処理回路手段) 110……乗算器(MCPU演算処理回路手段) 112……オペレーション制御回路(MCPUオペレーション
制御回路手段) 114……ROMアドレス制御部(MCPUアドレス制御回路手
段) 202……制御用ROM(SCPUプログラム記憶手段) 206……RAM(SCPUデータ記憶手段) 208……ALU部(SCPU演算処理回路手段) 210……乗算器(SCPU演算処理回路手段) 212……オペレーション制御回路(SCPUオペレーション
制御回路手段) 214……ROMアドレス制御部(SCPUアドレス制御回路手
段)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 太期 広一郎 東京都西多摩郡羽村町栄町3丁目2番1 号 カシオ計算機株式会社羽村技術セン ター内 (72)発明者 小倉 和夫 東京都西多摩郡羽村町栄町3丁目2番1 号 カシオ計算機株式会社羽村技術セン ター内 (72)発明者 細田 潤 東京都西多摩郡羽村町栄町3丁目2番1 号 カシオ計算機株式会社羽村技術セン ター内 (58)調査した分野(Int.Cl.6,DB名) G10H 1/00 - 7/12

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】メインCPU及びこのメインCPUによって制御
    される少なくとも1つのサブCPUからなり、 前記メインCPUは、 楽器への入力を処理するための入力処理プログラムと楽
    音を生成するための処理を行う楽音生成プログラムを記
    憶するMCPUプログラム記憶手段と、 所定のサンプリング周期で割り込み信号を発生するタイ
    マーインターラプト制御手段と、 通常は前記MCPUプログラム記憶手段から入力処理プログ
    ラムを読み出すとともに、このタイマーインターラプト
    制御手段からの割り込み信号を受ける毎に前記MCPUプロ
    グラム記憶手段から前記入力処理プログラムに代えて楽
    音生成プログラムを読み出すMCPUアドレス制御手段と、 前記MCPUアドレス制御手段により前記MCPUプログラム記
    憶手段から読み出されたプログラムの各命令を解読する
    MCPU解読手段と、 前記MCPU解読手段にて解読された楽音生成用プログラム
    の各命令に基づき、前記MCPU解読手段により解読された
    入力処理プログラムの各命令に基づいて生成された、楽
    音の生成に必要なデータを用いて楽音生成に必要な演算
    処理を行って第1の楽音データを生成するMCPU演算処理
    手段と、 前記MCPU演算処理手段による第1の楽音データの生成終
    了に応答して前記サブCPUに対して起動信号を供給する
    とともに、前記サブCPUにて生成された第2の楽音デー
    タを読み取るサブCPU制御手段と、 前記MCPU演算処理手段にて生成された第1の楽音データ
    及び前記サブCPUにて生成された第2の楽音データを出
    力する出力手段と、を有し、 前記サブCPUは、 楽音を生成するための処理を行う楽音生成プログラムを
    記憶するSCPUプログラム記憶手段と、 前記メインCPUからの起動信号を受ける毎に前記SCPUプ
    ログラム記憶手段から楽音生成処理プログラムを読み出
    すSCPUアドレス制御手段と、 前記SCPUアドレス制御手段により前記SCPUプログラム記
    憶手段から読み出されたプログラムの各命令を解読する
    SCPU解読手段と、 前記SCPU解読手段にて解読された楽音生成処理プログラ
    ムの各命令に基づき、楽音の生成に必要なデータを用い
    て楽音生成に必要な演算処理を行って第2の楽音データ
    を生成するSCPU演算処理手段と、を有することを特徴と
    する電子楽器用処理装置。
JP2170161A 1990-06-29 1990-06-29 電子楽器用処理装置 Expired - Lifetime JP2797137B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2170161A JP2797137B2 (ja) 1990-06-29 1990-06-29 電子楽器用処理装置
US07/709,101 US5200564A (en) 1990-06-29 1991-05-29 Digital information processing apparatus with multiple CPUs
US08/001,184 US5691493A (en) 1990-06-29 1993-01-07 Multi-channel tone generation apparatus with multiple CPU's executing programs in parallel
US08/486,606 US5584034A (en) 1990-06-29 1995-06-07 Apparatus for executing respective portions of a process by main and sub CPUS

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2170161A JP2797137B2 (ja) 1990-06-29 1990-06-29 電子楽器用処理装置

Publications (2)

Publication Number Publication Date
JPH0460595A JPH0460595A (ja) 1992-02-26
JP2797137B2 true JP2797137B2 (ja) 1998-09-17

Family

ID=15899815

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2170161A Expired - Lifetime JP2797137B2 (ja) 1990-06-29 1990-06-29 電子楽器用処理装置

Country Status (1)

Country Link
JP (1) JP2797137B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5283386A (en) * 1991-08-30 1994-02-01 Casio Computer Co., Ltd. Musical-tone signal generating apparatus and musical-tone controlling apparatus including delay means and automatic reset means
JP4642348B2 (ja) * 2003-12-22 2011-03-02 株式会社河合楽器製作所 データ処理用lsi

Also Published As

Publication number Publication date
JPH0460595A (ja) 1992-02-26

Similar Documents

Publication Publication Date Title
US5691493A (en) Multi-channel tone generation apparatus with multiple CPU's executing programs in parallel
US5319151A (en) Data processing apparatus outputting waveform data in a certain interval
JP2838645B2 (ja) 動的ボイス割当をおこなうオープンアーキテクチャー構成のミュージックシンセサイザー
JPH0997064A (ja) 自動演奏データ処理装置
EP0910827A3 (en) Circuits, system, and methods for processing multiple data streams
WO1998035301A9 (en) Circuits, system, and methods for processing multiple data streams
US5584034A (en) Apparatus for executing respective portions of a process by main and sub CPUS
US5852729A (en) Code segment replacement apparatus and real time signal processor using same
JP2797137B2 (ja) 電子楽器用処理装置
JPS62115542A (ja) 情報処理装置
US4644841A (en) Electronic musical instrument
EP0376342B1 (en) Data processing apparatus for electronic musical instruments
JP2797142B2 (ja) 電子楽器用処理装置
JP2797138B2 (ja) 電子楽器用処理装置
JPH0460722A (ja) デジタルマイクロコンピュータ
JPH0460744A (ja) デジタルマイクロコンピュータ
JPH0460746A (ja) デジタルマイクロコンピュータ
JPH0460724A (ja) デジタルマイクロコンピュータ
JPH0460723A (ja) デジタルマイクロコンピュータ
JPH0460749A (ja) デジタルマイクロコンピュータ
JPH0460725A (ja) デジタルマイクロコンピュータ
JP2576616B2 (ja) 処理装置
JPS621030A (ja) カウンタ回路
JP2678974B2 (ja) 楽音波形発生装置
JP3116447B2 (ja) デジタル信号処理プロセッサ

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070703

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080703

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090703

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090703

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100703

Year of fee payment: 12

EXPY Cancellation because of completion of term