(57)【要約】【課題】冗長な回路を排除し、半導体集積回路の回路増を抑える。【解決手段】半導体集積回路のレジスタブロックにおいて、１つの減算器と、１つの加算器と、データを記憶する複数の記憶素子と、複数の記憶素子の特定の１つを選択する選択回路と、データを前記複数の記憶素子に書き込む際に、減算器でマイナス１して書き込むか、そのまま書き込むか、を切り換える切り換え回路と、を備える。【選択図】図３
2014006622.tif 000002
【特許請求の範囲】
【請求項１】
外部ハードウェアとバスインターフェースで接続されるデータ信号で、データの書き込みと読み出しを行なうレジスタブロックを備える半導体集積回路において、
前記レジスタブロックは、
１つの減算器と、
１つの加算器と、
データを記憶する複数の記憶素子と、
前記複数の記憶素子の特定の１つを選択する選択回路と、
データを前記複数の記憶素子に書き込む際に、前記減算器でマイナス１して書き込むか、そのまま書き込むか、を切り換える切り換え回路と、
を備えたことを特徴とする半導体集積回路のレジスタブロック。
【請求項２】
前記複数の記憶素子の中で、前記減算器でデータをマイナス１して書き込まれた記憶素子から、データの読み出しを行う際は、記憶されているデータを前記加算器でプラス１して出力することを特徴とする請求項１に記載の半導体集積回路のレジスタブロック。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の処理を実行する複数の機能ブロックを１個の半導体に集積する半導体集積回路技術に関する。
【背景技術】
【０００２】
一般に、半導体集積回路の内部に搭載されている機能ブロックと呼ばれるハードウェアを動作させるためには、動作モードや画像の縦横サイズ等、各種の変数を設定する必要がある。これらの変数は、ＣＰＵ等からバスインターフェイスを介して、半導体集積回路に搭載されている機能ブロック毎に配置されているレジスタ（フリップフロップ等の記憶素子）に保存する。この時、画像の縦横サイズ等は、変数の取り得る値が０という値はなく、１からの値になるため、ソフトウェアで設定する値も、１からの実際の値で設定されるのが一般的である。
【０００３】
一方、これらの値を使用して動作する半導体集積回路内部のハードウェアは、０という値を使用しているので、設定された変数の値をマイナス１して使用している。例えば、入力画像の水平サイズが１〜２５６ピクセルで変化する場合、水平サイズを管理するカウンタは、０〜２５５で変化するようにし、画像の右端を、設定された水平サイズからマイナス１した値で検出している。
【０００４】
図１は、従来の半導体集積回路の一実施例を示すブロック図である。
図１において、１０は半導体集積回路、２０はＣＰＵ等の外部ハードウェアである。
ここで、半導体集積回路１０は、内部バス１００、機能ブロックＡ（１１０Ａ）、機能ブロックＭ（１１０Ｍ）、機能ブロックＮ（１１０Ｎ）、減算器Ｍ（１２０Ｍ）、減算器Ｎ（１２０Ｎ）、レジスタＡ（１３０Ａ）、レジスタＭ（１３０Ｍ）、レジスタＮ（１３０Ｎ）、等で構成されている。
【０００５】
ＣＰＵ２０は、半導体集積回路１０の機能ブロックＡ（１１０Ａ）、機能ブロックＭ（１１０Ｍ）、機能ブロックＮ（１１０Ｎ）を動作させる際、バスインターフェイスを介して、各機能ブロック毎に配置されているレジスタＡ（１３０Ａ）、レジスタＭ（１３０Ｍ）、レジスタＮ（１３０Ｎ）に、必要な設定値を書き込む。
【０００６】
これらの機能ブロックの内、機能ブロックＡ（１１０Ａ）は、レジスタＡ（１３０Ａ）に設定された値をそのまま使用する機能ブロック、機能ブロックＭ（１１０Ｍ）と機能ブロックＮ（１１０Ｎ）は、レジスタＭ（１３０Ｍ）とレジスタＮ（１３０Ｎ）に設定された値をマイナス１して使用する機能ブロックとすると、機能ブロックＭ（１１０Ｍ）と機能ブロックＮ（１１０Ｎ）には、レジスタＭ（１３０Ｍ）、レジスタＮ（１３０Ｎ）の値をマイナス１するための減算器Ｍ（１２０Ｍ）、減算器Ｎ（１２０Ｎ）が必要となる。
【０００７】
また、他の手法としては、設定値をマイナス１する減算器は用いずに、ソフトウェアで設定する値を予めマイナス１して設定する方法がとられる。この場合、ソフトウェア設計者がレジスタに設定する値をマイナス１し忘れると、システム機器のバグに繋がり、機器が不具合を起こすという問題があり、このような課題を解決するために、レジスタ設定値の間違いを監視するレジスタ設定値監視モジュールを備えた、半導体集積回路が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−２９３６４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
このように、従来の半導体集積回路内部には、レジスタに正しい値を設定するための冗長な回路が、存在しているという課題があった。
【００１０】
本発明は、前記従来の課題を解決するために、半導体集積回路の回路増を抑える技術を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の半導体集積回路のレジスタブロックは、１つの減算器と、１つの加算器と、データを記憶する複数の記憶素子と、複数の記憶素子の特定の１つを選択する選択回路と、データを前記複数の記憶素子に書き込む際に、減算器でマイナス１して書き込むか、そのまま書き込むか、を切り換える切り換え回路と、を備える。
【００１２】
なお、複数の記憶素子の中で、減算器でデータをマイナス１して書き込まれた記憶素子から、データの読み出しを行う際は、記憶されているデータを加算器でプラス１して出力する、ことが望ましい。
【発明の効果】
【００１３】
本発明のレジスタブロックを搭載した半導体集積回路は、従来、各機能ブロック毎に用意していた設定値−１のための減算器やレジスタ設定値監視モジュールが必要なくなり、半導体集積回路の回路面積を削減することができる。
【００１４】
また、データ値をマイナス１という減算をすることで、変数のビット幅を小さくできる場合があり、変数を記憶するレジスタ（記憶素子）を減らせ、回路面積を削減する効果が増す。このレジスタ（記憶素子）の削減というのは、例えば、１〜２５６の値を扱う際に、そのまま１〜２５６のデータを処理する場合は９ビット幅が必要であるが、データ値をマイナス１して、０〜２５５の値で扱えば、８ビット幅ですむという理由からである。
【００１５】
更に、これらの回路面積の削減は、半導体集積回路の消費電力の削減にも繋げることができる。
【図面の簡単な説明】
【００１６】
【図１】従来の半導体集積回路のブロック図である。
【図２】本発明による半導体集積回路のブロック図である。
【図３】本発明によるレジスタブロックのブロック図である。
【図４】本発明によるレジスタブロックのタイミングチャートである。
【発明を実施するための形態】
【００１７】
図２は、本発明における半導体集積回路の一実施例を示すブロック図である。
図２において、１０は半導体集積回路、２０はＣＰＵ等の外部ハードウェアである。
ここで、半導体集積回路１０は、内部バス１００、機能ブロックＡ（１１０Ａ）、機能ブロックＭ（１１０Ｍ）、機能ブロックＮ（１１０Ｎ）、レジスタブロック１４０、等で構成されている。
【００１８】
図３は、本発明におけるレジスタブロック１４０の一実施例を示すブロック図である。
ここで、レジスタブロック１４０は、書き込みデータｗｄａｔａを減算（マイナス１）する減算器１４１、書き込みデータｗｄａｔａを保存する記憶素子１４２Ａ、１４２Ｍ、１４２Ｎ、アドレス信号ａｄｄｒｅｓｓから記憶素子１４２Ａ、１４２Ｍ、１４２Ｎの位置（アドレス番地）を特定するアドレスデコーダー１４３、減算して保存したデータを加算（プラス１）する加算器１４４、等で構成されている。
【００１９】
以下、図２、図３に基づいて本発明の実施例を具体的に説明する。
ＣＰＵ２０は、半導体集積回路１０の機能ブロックＡ（１１０Ａ）、機能ブロックＭ（１１０Ｍ）、機能ブロックＮ（１１０Ｎ）を動作させる際、バスインターフェイスを介して、レジスタブロック１４０に、必要な設定値を書き込む。
【００２０】
これらの機能ブロックの内、機能ブロックＡ（１１０Ａ）は、設定された値をそのまま使用する機能ブロックであり、機能ブロックＭ（１１０Ｍ）と機能ブロックＮ（１１０Ｎ）は、設定された値をマイナス１して使用する機能ブロックとする。
【００２１】
また、レジスタブロック１４０の記憶素子１４２Ａは、機能ブロックＡ（１１０Ａ）を動作させるための設定値を保存し、アドレス０番地に対応する記憶素子であり、記憶素子１４２Ｍは、機能ブロックＭ（１１０Ｍ）を動作させるための設定値を保存し、アドレス１番地に対応する記憶素子であり、記憶素子１４２Ｎは、機能ブロックＮ（１１０Ｎ）を動作させるための設定値を保存し、アドレス２番地に対応する記憶素子とする。
【００２２】
レジスタブロック１４０の内部では、記憶素子１４２Ａは、設定された値をそのまま使用する機能ブロックＡ（１１０Ａ）用の記憶素子であるため、書き込みデータｗｄａｔａ（Ｔ４）がそのまま記憶されるように結線され、記憶素子１４２Ｍ、１４２Ｎは、設定された値をマイナス１して使用する機能ブロックＭ（１１０Ｍ）、機能ブロックＮ（１１０Ｎ）用の記憶素子であるため、減算器１４１の出力信号Ｗｄａｔａ−１（Ｔ５）が記憶されるように結線されている。
【００２３】
次に、レジスタブロック１４０の動作について説明する。
ある特定の位置（アドレス番地）にある記憶素子を制御する場合、バスインターフェイス信号を介して実現する。バスインターフェイス信号は、クロックｃｌｏｃｋ（Ｔ０）、アドレス信号ａｄｄｒｅｓｓ（Ｔ１）、チップイネーブルｃｅ（Ｔ２）、ライトイネーブルｗｅ（Ｔ３）、書き込みデータｗｄａｔａ（Ｔ４）、読み出しデータｒｄａｔａ（Ｔ８）で構成される。
【００２４】
記憶素子にデータを記憶する場合（ライト・オペレーション）は、記憶させたい記憶素子の位置（アドレス番地）をアドレス信号ａｄｄｒｅｓｓ（Ｔ１）で指定し、チップイネーブルｃｅ（Ｔ２）をｈｉｇｈ、ライトイネーブルｗｅ（Ｔ３）をｈｉｇｈ、記憶させたい値を書き込みデータｗｄａｔａ（Ｔ４）で指定する。
【００２５】
このライト・オペレーションをアドレス０番地に対して実行すると、アドレスデコーダー１４３により記憶素子１４２Ａが特定され、書き込みデータｗｄａｔａ（Ｔ４）で指定された値がそのまま記憶素子１４２Ａに記憶され、機能ブロックＡ（１１０Ａ）を動作させる設定値Ａｄａｔａ（Ｔ６）となる。
また、ライト・オペレーションをアドレス１番地、及び２番地に対して実行すると、アドレスデコーダー１４３により記憶素子１４２Ｍ、及び１４２Ｎが特定され、減算器１４１により書き込みデータｗｄａｔａ（Ｔ４）で指定された値からマイナス１された値が、記憶素子１４２Ｍ、及び１４２Ｎに記憶され、機能ブロックＭ（１１０Ｍ）、機能ブロックＮ（１１０Ｎ）を動作させる設定値Ｍｄａｔａ（Ｔ７）、及びＮｄａｔａとなる。
【００２６】
次に、記憶素子に記憶されているデータを読み出す場合（リード・オペレーション）は、各記憶素子に記憶されているデータの中から、アドレス信号ａｄｄｒｅｓｓ（Ｔ１）で指定された記憶素子のデータを選択して出力する。
【００２７】
このリード・オペレーションをアドレス０番地に対して実行すると、アドレスデコーダー１４３により記憶素子１４２Ａが特定され、記憶素子１４２Ａに記憶されているデータが、読み出しデータｒｄａｔａ（Ｔ８）としてそのまま出力されるが、アドレス１番地、及び２番地に対して実行すると、アドレスデコーダー１４３により記憶素子１４２Ｍ、及び１４２Ｎが特定され、記憶素子１４２Ｍ、１４２Ｎに記憶されているデータに加算器１４４でプラス１された値が、読み出しデータｒｄａｔａ（Ｔ８）として出力される。
【００２８】
このように本発明のレジスタブロックは、加算器と減算器を各々１個のみ使用して、ある特定の位置（アドレス番地）の記憶素子に対してのみ、マイナス１したデータを記憶し、このマイナス１したデータは、プラス１して出力することを特徴としたレジスタ・インターフェイス回路である。
【００２９】
なお、レジスタブロック１４０の構成は、前記実施形態に例示したものは一例であり、これに限られるものではない。
【００３０】
図４は、レジスタブロック１４０の動作例を示すタイミングチャートである。
図４で示すように、記憶素子１４２Ａに記憶されるデータは、書き込みデータｗｄａｔａ（Ｔ４）の２５０という値がそのまま記憶され、Ａｄａｔａ（Ｔ６）となっているが、記憶素子１４２Ｍに記憶されるデータは、書き込みデータｗｄａｔａ（Ｔ４）の１００という値がマイナス１された９９という値が記憶され、Ｍｄａｔａ（Ｔ７）となっているのがわかる。
【００３１】
また、読み出しデータｒｄａｔａ（Ｔ８）は、記憶素子１４２Ａを読み出した場合も、書き込みデータをマイナス１をした値を記憶した記憶素子１４２Ｍを読み出した場合でも、読み出された値は、書き込みデータｗｄａｔａ（Ｔ４）の２５０、及び１００という値が出力されているのがわかる。
【００３２】
前記実施例で説明したように、本発明の半導体集積回路のレジスタブロックは、減算器と加算器を各々１個のみ備え、ＣＰＵからのバスインターフェースで接続されるデータ信号を、そのまま使用するデータ（スルーデータ）と、予め減算器でマイナス１に減算したデータ（減算データ）の２つを用意して、記憶素子に記憶するアドレス番地毎に（設定する変数毎に）、スルーデータか減算データかを選択して記憶する。すなわち、設定するデータの値がデータ値−１が必要なレジスタ（記憶素子）には減算データを書き込み、設定するデータの値が入力データそのままで良いレジスタ（記憶素子）にはスルーデータを書き込むようにした。
【００３３】
また、各レジスタ（記憶素子）に設定されたデータをＣＰＵで読み出す場合は、データ値−１の減算データを書き込んだレジスタ（記憶素子）の値は、加算器でプラス１した値をバスインターフェースに出力するようにしたので、ハードウェアを制御しているソフトウェア側では、ハードウェア内部のデータの持ち方（マイナス１したデータで処理するか、そのままの値で処理するか）を意識する必要はない。
【００３４】
そして、このように構成された本発明の半導体集積回路のレジスタブロックは、従来、各機能ブロック毎に用意していた設定値−１のための減算器やレジスタ設定値監視モジュールが必要なくなり、半導体集積回路の回路面積を削減することができる。
また、データ値をマイナス１という減算をすることで、変数のビット幅を小さくできる場合があり、変数を記憶するレジスタ（記憶素子）を減らせ、回路面積を削減する効果が増す。
更に、これらの回路面積の削減は、半導体集積回路の消費電力の削減にも繋げることができる。
【００３５】
以下に、本出願の特許請求の範囲に記載された発明を付記する。
[請求項１]
外部ハードウェアとバスインターフェースで接続されるデータ信号で、データの書き込みと読み出しを行なうレジスタブロックを備える半導体集積回路において、
前記レジスタブロックは、
１つの減算器と、
１つの加算器と、
データを記憶する複数の記憶素子と、
前記複数の記憶素子の特定の１つを選択する選択回路と、
データを前記複数の記憶素子に書き込む際に、前記減算器でマイナス１して書き込むか、そのまま書き込むか、を切り換える切り換え回路と、
を備えたことを特徴とする半導体集積回路のレジスタブロック。
[請求項２]
前記複数の記憶素子の中で、前記減算器でデータをマイナス１して書き込まれた記憶素子から、データの読み出しを行う際は、記憶されているデータを前記加算器でプラス１して出力することを特徴とする請求項１に記載の半導体集積回路のレジスタブロック。
【符号の説明】
【００３６】
１０      半導体集積回路
２０      ＣＰＵ
１００    内部バス
１１０Ａ  機能ブロックＡ
１１０Ｍ  機能ブロックＭ
１１０Ｎ  機能ブロックＮ
１２０Ｍ  減算器M
１２０Ｎ  減算器N
１３０Ａ  レジスタＡ
１３０Ｍ  レジスタＭ
１３０Ｎ  レジスタＮ
１４０    レジスタブロック
１４１    減算器
１４２Ａ  記憶素子
１４２Ｍ  記憶素子
１４２Ｎ  記憶素子
１４３    アドレスデコーダー
１４４    加算器
Ｔ０      システムクロックｃｌｏｃｋ
Ｔ１      アドレス信号ａｄｄｒｅｓｓ
Ｔ２      チップイネーブルｃｅ
Ｔ３      ライトイネーブルｗｅ
Ｔ４      書き込みデータｗｄａｔａ
Ｔ５      減算Ｗｄａｔａ−１
Ｔ６      設定値Ａｄａｔａ
Ｔ７      設定値Ｍｄａｔａ
Ｔ８      読み出しデータｒｄａｔａ
【図１】
2014006622.tif 000003
【図２】
2014006622.tif 000004
【図３】
2014006622.tif 000005
【図４】
2014006622.tif 000006