図面 (/)
課題
解決手段
概要
背景
図2(a),(b)は、従来のDSPの概略の構成図であり、同図(a)はハードウエアの構成、及び同図(b)はソフトウエアの構成を示している。このDSPは、図2(a)に示すように、マスクROM(Read Only Memory)1aとEEPROM(Electrically Erasable Programmable ROM)1bで構成されたメモリ回路1を有している。マスクROM1aは、このDSPで行う処理のプログラムとデータを格納したものであり、EEPROM1bは、このマスクROM1aのプログラムの変更や追加部分を書き込むためのメモリである。
メモリ回路1には、このメモリ回路1から命令コード等のデータDATを読み出す読取回路2が接続され、この読取回路2には、読み出された命令コードを解読して該当する実行命令に復号する復号回路3が接続されている。復号回路3には、復号された実行命令に従って処理を実行する実行回路4及び制御回路5が接続されている。制御回路5は、アドレスを指定するためのプログラム・カウンタ(以下、「PC」という)5aを有し、読取回路2がメモリ回路1から読み出すアドレスの順序や全体の動作の制御を行うものである。
また、このDSPは、制御回路5に対して周期的あるいは設定されたタイミングで割り込みを行う割込回路6、サブルーチンの戻り先のアドレス等を格納するためのスタック7、及びEEPROM1bの書き込みを行うための書込インタフェース8を有している。
図2(b)は、マスクROM1aとEEPROM1bに格納されたソフトウエアの概略を示している。なお、以下の説明では、分岐を伴わない一般的な命令、分岐命令、及び無操作命令のニモニック・コードを、それぞれINS、JMP、NOPと記載する。
例えば、マスクROM1aは、0000〜0999番地が割り当てられ、0000番地から順次処理プログラムが格納されている。但し、マスクROM1aの処理プログラムの途中には、後で発見されるかも知れないプログラムの誤り(バグ)や処理内容の追加に備えて、要所要所にEEPROM1bの所定の番地への分岐命令(JMPxxxx)が挿入されている。この図2(b)の例では、0000番地、0100番地及び0200番地に、それぞれEEPROM1bの1000番地、1001番地及び1002番地に分岐する命令が格納されている。
一方、EEPROM1bは、1000〜1299番地が割り当てられ、マスクROM1a中の処理プログラムに対する変更や追加処理のプログラムが書き込まれている。例えば、マスクROM1aの0000〜0099番地の処理プログラムに変更がなければ、1000番地には、0001番地への分岐命令(JMP0001)が格納される。また、マスクROM1aの0200番地以降の処理プログラムに変更がなければ、1002番地には、0201番地への分岐命令(JMP0201)が格納される。
この図2(b)の例では、マスクROM1aの0181番地の命令(INS181X)を、別の命令(INS181A)に変更するために、1001番地に1003番地への分岐命令(JMP1003)が格納されている。更に、1003〜1082番地には、0101〜0180番地に対応するプログラムが格納され、1083番地には変更後の命令(INS0181A)が格納されている。そして、1084番地に、マスクROM1Aの0182番地への分岐命令(JMP0182)が格納されている。
次に、動作を説明する。DSPがリセットされてPC5aに0000がセットされ、その後このDSPの動作が開始すると、読取回路2によって、メモリ回路1の0000番地のデータ(JMP1000)が読み取られる。読取回路2で読み取られたデータは復号回路3で解読され、その解読結果の命令が実行回路4及び制御回路5に出力される。これによって、制御回路5ではPC5aの値が分岐先の1000番地に書き換えられる。
読取回路2では、PC5aから与えられるアドレス信号に基づいて、EEPROM1bの1000番地のデータ(JMP0001)が読み取られる。読取回路2で読み取られたデータは復号回路3で解読され、その解読結果の命令が実行回路4及び制御回路5に出力される。これにより、制御回路5ではPC5aの値が分岐先のアドレスである0001に書き換えられる。
読取回路2では、PC5aから与えられるアドレスに基づいて、マスクROM1aの0001番地のデータ(命令INS0001)が読み取られる。読取回路2で読み取られたデータは復号回路3で解読され、その解読結果の命令が実行回路4及び制御回路5に出力される。復号回路3から出力された命令が分岐命令でなければ、実行回路4によって所定の処理が行われると共に、制御回路5によってPC5aの値が1だけ増加される。これにより、PC5aの値は0002となる。
その後、マスクROM1aの0002〜0099番地に格納された命令が順次読み取られて実行される。そして、0100番地の命令(JMP1001)の実行により、PC5aの値が1001にセットされ、EEPROM1bの1001番地へ分岐される。
EEPROM1bの1001番地には、1003番地への分岐命令が格納されているので、PC5aの値が1003にセットされ、EEPROM1bの1003番地へ分岐される。そして、1003番地以降に格納された命令が順次実行される。1083番地に格納された変更後の命令(INS181A)が実行された後、次の1084番地に格納された分岐命令(JMP0182)が実行され、マスクROM1aの0182番地へ戻る。
このように、図2(a)のDSPでは、マスクROM1aに加えて、書き換え可能なEEPROM1bを有しているので、プログラムの修正や変更に柔軟に対応することができるようになっている。
概要
小容量のEEPROMでプログラムの追加や修正が可能なDSPを提供する。
PC(プログラム・カウンタ)15aの値とレジスタ18a〜18nに登録されたアドレスが比較回路19a〜19nで比較され、一致すると判定回路20を介して制御回路15に一致検出信号が出力される。これにより、PC15aの値は、EEPROM11b内の所定のアドレスにセットされ、実行プログラムは、マスクROM11a中の処理プログラムから、このEEPROM11b内の追加・修正用のプログラムへ切り換えられる。
目的
本発明は、前記従来技術が持っていた課題を解決し、小容量のEEPROMでプログラムの変更や修正が可能なDSPを提供するものである。
効果
実績
- 技術文献被引用数
- 2件
- 牽制数
- 0件
この技術が所属する分野
(分野番号表示ON)※整理標準化データをもとに当社作成
請求項1
書き換え不可能な第1メモリ及び書き換え可能な不揮発性の第2メモリを有し、処理プログラムが格納された記憶回路と、前記第1メモリの特定アドレスが登録された書き換え可能な不揮発性のレジスタと、前記記憶回路から読み出して実行する前記処理プログラムのアドレスが順次格納されるプログラム・カウンタと、前記プログラム・カウンタの値と前記レジスタの値を比較し、該プログラム・カウンタの値が前記特定アドレスに一致したか否かを検出する判定回路と、前記判定回路で一致が検出されたときには前記第2メモリの所定のアドレスを前記プログラム・カウンタにセットし、一致が検出されないときには前記処理プログラムに基づいて該プログラム・カウンタの値を更新する制御回路と、前記プログラム・カウンタの値に従って前記記憶回路から前記処理プログラムを読み取る読取回路と、前記読取回路で読み取られた前記処理プログラムを解読して対応する実行命令に復号する復号回路と、前記復号回路で復号された実行命令を実行する実行回路とを、備えたことを特徴とするディジタル信号処理装置。
請求項2
請求項3
前記レジスタは、前記第1メモリの複数の特定アドレスを登録できるように構成したことを特徴とする請求項1または2記載のディジタル信号処理装置。
技術分野
0001
本発明は、ディジタル信号処理装置(以下、「DSP」という)、特に書き換え不可能なメモリと書き換え可能な不揮発性メモリを備えたDSPに関するものである。
背景技術
0002
図2(a),(b)は、従来のDSPの概略の構成図であり、同図(a)はハードウエアの構成、及び同図(b)はソフトウエアの構成を示している。このDSPは、図2(a)に示すように、マスクROM(Read Only Memory)1aとEEPROM(Electrically Erasable Programmable ROM)1bで構成されたメモリ回路1を有している。マスクROM1aは、このDSPで行う処理のプログラムとデータを格納したものであり、EEPROM1bは、このマスクROM1aのプログラムの変更や追加部分を書き込むためのメモリである。
0003
メモリ回路1には、このメモリ回路1から命令コード等のデータDATを読み出す読取回路2が接続され、この読取回路2には、読み出された命令コードを解読して該当する実行命令に復号する復号回路3が接続されている。復号回路3には、復号された実行命令に従って処理を実行する実行回路4及び制御回路5が接続されている。制御回路5は、アドレスを指定するためのプログラム・カウンタ(以下、「PC」という)5aを有し、読取回路2がメモリ回路1から読み出すアドレスの順序や全体の動作の制御を行うものである。
0004
また、このDSPは、制御回路5に対して周期的あるいは設定されたタイミングで割り込みを行う割込回路6、サブルーチンの戻り先のアドレス等を格納するためのスタック7、及びEEPROM1bの書き込みを行うための書込インタフェース8を有している。
0005
図2(b)は、マスクROM1aとEEPROM1bに格納されたソフトウエアの概略を示している。なお、以下の説明では、分岐を伴わない一般的な命令、分岐命令、及び無操作命令のニモニック・コードを、それぞれINS、JMP、NOPと記載する。
0006
例えば、マスクROM1aは、0000〜0999番地が割り当てられ、0000番地から順次処理プログラムが格納されている。但し、マスクROM1aの処理プログラムの途中には、後で発見されるかも知れないプログラムの誤り(バグ)や処理内容の追加に備えて、要所要所にEEPROM1bの所定の番地への分岐命令(JMPxxxx)が挿入されている。この図2(b)の例では、0000番地、0100番地及び0200番地に、それぞれEEPROM1bの1000番地、1001番地及び1002番地に分岐する命令が格納されている。
0007
一方、EEPROM1bは、1000〜1299番地が割り当てられ、マスクROM1a中の処理プログラムに対する変更や追加処理のプログラムが書き込まれている。例えば、マスクROM1aの0000〜0099番地の処理プログラムに変更がなければ、1000番地には、0001番地への分岐命令(JMP0001)が格納される。また、マスクROM1aの0200番地以降の処理プログラムに変更がなければ、1002番地には、0201番地への分岐命令(JMP0201)が格納される。
0008
この図2(b)の例では、マスクROM1aの0181番地の命令(INS181X)を、別の命令(INS181A)に変更するために、1001番地に1003番地への分岐命令(JMP1003)が格納されている。更に、1003〜1082番地には、0101〜0180番地に対応するプログラムが格納され、1083番地には変更後の命令(INS0181A)が格納されている。そして、1084番地に、マスクROM1Aの0182番地への分岐命令(JMP0182)が格納されている。
0009
次に、動作を説明する。DSPがリセットされてPC5aに0000がセットされ、その後このDSPの動作が開始すると、読取回路2によって、メモリ回路1の0000番地のデータ(JMP1000)が読み取られる。読取回路2で読み取られたデータは復号回路3で解読され、その解読結果の命令が実行回路4及び制御回路5に出力される。これによって、制御回路5ではPC5aの値が分岐先の1000番地に書き換えられる。
0010
読取回路2では、PC5aから与えられるアドレス信号に基づいて、EEPROM1bの1000番地のデータ(JMP0001)が読み取られる。読取回路2で読み取られたデータは復号回路3で解読され、その解読結果の命令が実行回路4及び制御回路5に出力される。これにより、制御回路5ではPC5aの値が分岐先のアドレスである0001に書き換えられる。
0011
読取回路2では、PC5aから与えられるアドレスに基づいて、マスクROM1aの0001番地のデータ(命令INS0001)が読み取られる。読取回路2で読み取られたデータは復号回路3で解読され、その解読結果の命令が実行回路4及び制御回路5に出力される。復号回路3から出力された命令が分岐命令でなければ、実行回路4によって所定の処理が行われると共に、制御回路5によってPC5aの値が1だけ増加される。これにより、PC5aの値は0002となる。
0012
その後、マスクROM1aの0002〜0099番地に格納された命令が順次読み取られて実行される。そして、0100番地の命令(JMP1001)の実行により、PC5aの値が1001にセットされ、EEPROM1bの1001番地へ分岐される。
0013
EEPROM1bの1001番地には、1003番地への分岐命令が格納されているので、PC5aの値が1003にセットされ、EEPROM1bの1003番地へ分岐される。そして、1003番地以降に格納された命令が順次実行される。1083番地に格納された変更後の命令(INS181A)が実行された後、次の1084番地に格納された分岐命令(JMP0182)が実行され、マスクROM1aの0182番地へ戻る。
発明が解決しようとする課題
0015
しかしながら、従来のDSPでは、次のような課題があった。マスクROM1aに格納するプログラムの要所要所に、EEPROM1bへ分岐するための命令を予め埋め込んでおく必要があり、その配置を決めることが困難であった。また、EEPROM1bには、マスクROM1aに埋め込まれた分岐命令に対応して、マスクROM1aに戻るためのプログラムを格納しておく必要があり、EEPROM1bの使用量と処理時間の負担が増加していた。
0016
更に、例えば、図2(b)における1003〜1083番地のように、EEPROM1bへの分岐箇所(例えば、図2(b)における0100番地)から変更を必要とする命令の位置(例えば、図2(b)における0180番地)までの処理を、EEPROM1b側のプログラムとして実行する必要がある。このため、予め埋め込んだ分岐命令の位置と、変更が必要になった命令の位置が離れている場合を想定して、比較的容量の大きなEEPROM1bを準備しておく必要があるという課題があった。
0017
本発明は、前記従来技術が持っていた課題を解決し、小容量のEEPROMでプログラムの変更や修正が可能なDSPを提供するものである。
課題を解決するための手段
0018
前記課題を解決するために、本発明の内の第1の発明は、DSPにおいて、書き換え不可能な第1メモリ及び書き換え可能な不揮発性の第2メモリを有し、処理プログラムが格納された記憶回路と、前記第1メモリの特定アドレスが登録された書き換え可能な不揮発性のレジスタと、前記記憶回路から読み出して実行する前記処理プログラムのアドレスが順次格納されるPCと、前記PCの値と前記レジスタの値を比較し、該PCの値が前記特定アドレスに一致したか否かを検出する判定回路と、前記判定回路で一致が検出されたときには前記第2メモリの所定のアドレスを前記PCにセットし、一致が検出されないときには前記処理プログラムに基づいて該PCの値を更新する制御回路と、前記PCの値に従って前記記憶回路から前記処理プログラムを読み取る読取回路と、前記読取回路で読み取られた前記処理プログラムを解読して対応する実行命令に復号する復号回路と、前記復号回路で復号された実行命令を実行する実行回路とを備えている。
0020
第3の発明は、第1または第2の発明におけるレジスタを、第1メモリの複数の特定アドレスを登録できるように構成している。
0021
本発明によれば、以上のようにDSPを構成したので、次のような作用が行われる。制御回路によってPCの値が順次セットされ、このPCの値に従って記憶回路から処理プログラムが順次読み出され復号されて実行される。ここで、PCの値がレジスタに登録された第1メモリの特定アドレスに一致すると、判定回路によって一致が検出され、更に制御回路によってこのPCの値が第2メモリの所定のアドレスにセットされる。これにより、実行アドレスは、第2メモリの所定のアドレスに切り換えられる。
発明を実施するための最良の形態
0022
図1は、本発明の実施形態を示すDSPの構成図である。このDSPは、書き換えができないマスクROM11aと電気的に消去及び書き込みが可能なEEPROM11bで構成されるメモリ回路11、このメモリ回路11から命令コード等のデータを読み出す読取回路12、この読取回路12で読み出された命令コードを解読して該当する実行命令に復号する復号回路13、及びこの復号回路13で復号された実行命令に従って処理を実行する実行回路14を備えている。
0023
また、このDSPは、読取回路12がメモリ回路11から読み出すアドレスADRを指定するためのPC15aを有し、処理の順序や全体の動作の制御を行う制御回路15、この制御回路15に対して周期的あるいは設定されたタイミングで割り込みを行う割込回路16、及びサブルーチンの戻り先のアドレス等を格納するためのスタック17を備えている。
0024
更に、このDSPは、マスクROM11a中の変更箇所等の特定アドレスを格納するための、電気的に書き換えが可能な不揮発性のレジスタ(REG)18a,18b,…,18n、これらのレジスタ18a〜18nとPC15aの内容をそれぞれ比較する比較回路(CMP)19a,19b,…,19n、これらの比較回路19a〜19nの比較結果に基づいて変更箇所か否かを判定する判定回路20、及びEEPROM11bとレジスタ18a〜18nの書き込みを行うための書込インタフェース21を備えている。
0025
マスクROM11aは、このDSPで行う処理のプログラムとデータを格納したものであり、EEPROM11bは、このマスクROM11aのプログラムに対する変更や追加部分を書き込むためのメモリである。読取回路12は、制御回路15からの制御に従って、前の周期にメモリ回路11から読み取って保持していた命令を復号回路13に送ると同時に、この制御回路15のPC15aで指定されるアドレスADRのデータDATを命令コードとしてメモリ回路11から読み取って新たに保持するものである。
0026
復号回路13は、読取回路12から送られてきた命令を解読して該当する実行命令を保持すると共に、その前の周期に解読して保持しておいた実行命令を実行回路14及び制御回路15に出力するものである。実行回路14は、演算器、乗算器、アナログ・ディジタル変換器等で構成され、復号回路13から与えられる実行命令に従って所定の処理を実行するようになっている。これらの読取回路12、復号回路13及び実行回路14は、それぞれが同一時間に並列して動作するパイプライン処理を行うように構成されている。
0027
図3は、図1のソフトウエアの概略を示す説明図である。このソフトウエアは、マスクROM11aとEEPROM11bに格納されている。例えば、マスクROM11aには、0000〜0999番地が割り当てられ、0000番地から順次処理プログラムが格納されている。この処理プログラム中には、EEPROM11bへの分岐命令は組み込まれていない。
0028
一方、EEPROM11bには、1000〜1019番地が割り当てられ、マスクROM11a中の処理プログラムに対する変更や追加処理のプログラムが書き込まれている。例えば、マスクROM11aの0204番地の命令(INS204X)と0205番地の命令(INS205X)を、それぞれ命令(INS204A)と命令(INS205A)に変更する場合には、EEPROM11bの1000番地に分岐命令(JMP1010)が格納される。更に、1010,1011番地には、変更後の命令(INS204A)と命令(INS205A)がそれぞれ格納され、1012番地に、マスクROM11aの0206番地へ戻るための分岐命令(JMP0206)が格納される。
0029
更に、マスクROM11aの0204番地において、EEPROM11bの1000番地へ分岐することを登録するために、レジスタ18aの値は、0204に設定される。これらのEEPROM11b及びレジスタ18aの内容の変更は、書込インタフェース21を介して図示しない書込装置等によって行われるようになっている。
0030
図4は、図1の動作を示す説明図である。以下、図3及び図4を参照しつつ、図1の動作を説明する。周期T000において、DSPがリセット状態のとき、PC15aの値は0000にセットされ、読取回路12及び復号回路13には無操作命令(NOP)がセットされる。
0031
周期T001において、DSPの動作が開始すると、PC15aにセットされた値に従い、読取回路12によってメモリ回路11の0000番地のデータ(INS000)が読み取られて保持される。このとき、復号回路13に保持されていた無操作命令(NOP)は実行回路14へ出力されて保持され、読取回路12に保持されていた無操作命令(NOP)が、復号回路13へ出力されて保持される。周期T001の後半で、PC15aの値は1だけ増加され、0001となる。
0032
周期T002において、PC15aの値に従って読取回路12によってメモリ回路11の0001番地のデータ(INS001)が読み取られて保持される。このとき、復号回路13に保持されていた無操作命令(NOP)は実行回路14へ出力されて保持され、読取回路12に保持されていた命令(INS000)が、復号回路13へ出力されて解読された後、保持される。周期T002の後半で、PC15aの値は1だけ増加され、0002となる。
0033
周期T003において、PC15aの値に従って読取回路12によってメモリ回路11の0002番地のデータ(INS002)が読み取られて保持される。このとき、復号回路13に保持されていた命令(INS000)は実行回路14へ出力されて実行され、読取回路12に保持されていた命令(INS001)が、復号回路13へ出力されて解読された後、保持される。周期T003の後半で、PC15aの値は1だけ増加され、0003となる。
0034
このような動作により、マスクROM11aに格納されている処理プログラムに従って、読取回路12、復号回路13及び実行回路14によるパイプライン処理が順次続行される。
0035
周期T204において、PC15aの値が0204になると、制御回路15から出力されるアドレス信号ADRが0204となり、レジスタ18aに格納されている値と一致する。これにより、比較器19aから一致検出信号が出力され、判定回路20に与えられる。判定回路20では、どの比較器19から一致検出信号が出力されたかが判定され、その判定結果が制御回路15へ与えられる。
0036
制御回路15では、判定回路20から与えられた判定結果に基づいて、PC15aの値が変更される。この場合、PC15aには、マスクROM11aの0204番地の変更プログラムに対応するEEPROM11bのアドレスである1000がセットされる。また、このとき、既に読取回路12によって読み取られていた0204番地の命令(INS204X)は、無操作命令(NOP)に書き替えられる。
0037
周期T205において、PC15aの値に従って読取回路12によってメモリ回路11の1000番地のデータ(JMP1010)が読み取られて保持される。このとき、復号回路13に保持されていた命令(INS203)は実行回路14へ出力されて実行され、読取回路12に保持されていた命令(NOP)が、復号回路13へ出力されて解読された後、保持される。周期T205の後半で、PC15aの値は1だけ増加され、1001となる。
0038
周期T206において、PC15aの値に従って読取回路12によってメモリ回路11の1001番地のデータ(INS1001=NOP)が読み取られて保持される。このとき、復号回路13に保持されていた命令(NOP)は実行回路14へ出力されて実行され、読取回路12に保持されていた命令(JMP1010)が、復号回路13へ出力されて解読される。
0039
解読された実行命令は、分岐命令であるので、その結果が制御回路15へ与えられ、PC15aの値は分岐先のアドレスである1010に変更される。また、読取回路12によって読み取られていた命令(INS1001)は無操作命令(NOP)に書き替えられる。このような処理により、EEPROM11bの1010〜1012番地の処理が実行され、マスクROM11aの0206番地へ戻る。
0040
以上のように、本実施形態のDSPは、マスクROM11aからEEPROM11bへ分岐するアドレスをセットするためのレジスタ19a〜19nと、PC15aの値とこれらのレジスタ19a〜19nの値を比較して一致したときに、EEPROM11bの所定のアドレスへ分岐させるための比較回路19a〜19n及び判定回路20を有している。これにより、マスクROM11aの処理プログラムに、予めEEPROM11bへの分岐命令を埋め込んでおく必要がなくなり、プログラミング上の煩わしさを回避することができる。また、不必要な分岐命令の実行が無くなり、処理速度を向上させることができる。
0041
更に、必要な箇所だけをEEPROM11bへの分岐して処理することができるので、大容量のEEPROM11bを用意しておく必要がなくなるという利点がある。
0042
なお、本発明は、上記実施形態に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
(a)メモリ回路11の容量は例示したものに限定されず、処理に必要な容量のものを使用することができる。
0043
(b) DSPの全体構成は、例示したものに限定されない。例えば本実施形態では、読取回路12、復号回路13及び実行回路14がパイプライン処理を行うように構成されているが、パイプライン処理を行わない構成のDSPにも同様に適用可能である。
0044
(c)マスクROM11aからEEPROM11bへ分岐するアドレスをセットするために、複数のレジスタ19a〜19nを有しているが、変更等がほとんど考えられない場合には、単一のレジスタ19のみでも、同様に適用可能であり同様の利点が得られる。
発明の効果
0045
以上詳細に説明したように、第1の発明によれば、第1メモリの特定アドレスを登録するレジスタと、該レジスタの値とPCの値を比較する判定回路と、該判定回路で一致が検出されたときに第2メモリの所定のアドレスをこのPCにセットする制御回路を有している。これにより、第1メモリの処理プログラム中に第2メモリへの分岐命令を予め埋め込んでおく必要がなくなり、プログラムの作成が容易になる。また、不必要な分岐命令による処理時間の増加がなくなる。更に、任意の特定アドレスから第2メモリへ分岐できるので、この第2メモリの処理量、即ちメモリ容量を小さくすることができる。
0046
第2の発明によれば、読取回路、復号回路及び実行回路は、パイプライン処理を行うように構成されている。これにより、処理速度を向上させることができる。
0047
第3の発明によれば、レジスタは、第1メモリの複数の特定アドレスを登録できるように構成している。これにより、第1メモリの処理プログラム中の複数箇所に対して、追加や変更の処理を行うことができる。
図面の簡単な説明
--
0049
11メモリ回路
11aマスクROM
11b EEPROM
12 読取回路
13復号回路
14実行回路
15制御回路
15a PC(プログラム・カウンタ)
18レジスタ
19比較回路
20判定回路
21書込インタフェース