(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024066594
(43)【公開日】2024-05-16
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06F 9/34 20180101AFI20240509BHJP
G06F 15/78 20060101ALI20240509BHJP
【FI】
G06F9/34 330
G06F15/78 513
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022176047
(22)【出願日】2022-11-02
(71)【出願人】
【識別番号】000116024
【氏名又は名称】ローム株式会社
(74)【代理人】
【識別番号】110001933
【氏名又は名称】弁理士法人 佐野特許事務所
(72)【発明者】
【氏名】山田 ▲琢▼己
【テーマコード(参考)】
5B033
5B062
【Fターム(参考)】
5B033BD04
5B033DD01
5B062EE05
(57)【要約】
【課題】記憶回路の一部ビットへのデータ書き込みを簡素な動作で実現する。
【解決手段】半導体装置に複数の記憶回路及びアクセス回路が設けられる。複数の記憶回路はマスク用記憶回路(REG[32])を含む。アクセス回路は、相手側装置からライト命令を受信したとき、複数の記憶回路の内、ライト命令にて指定された対象記憶回路に対し、マスク用記憶回路の記憶データに応じて第1ライトアクセス(基本ライトアクセス)又は第2ライトアクセス(マスクライトアクセス)を行う。アクセス回路は、第1ライトアクセスにおいて、ライト命令にて指定される複数ビット分のライトデータを対象記憶回路に書き込み、第2ライトアクセスにおいて、マスク用記憶回路の記憶データに応じてライトデータの一部の対象記憶回路への書き込みをマスクする。
【選択図】
図12
【特許請求の範囲】
【請求項1】
複数ビットを有する記憶回路を複数備えるとともに、
相手側装置とシリアル通信を行うよう構成された通信回路と、
前記シリアル通信にて前記相手側装置から受信した命令に基づき何れかの記憶回路にアクセスするよう構成されたアクセス回路と、を備え、
複数の記憶回路はマスク用記憶回路を含み、
前記アクセス回路は、前記相手側装置からライト命令を受信したとき、前記複数の記憶回路の内、前記ライト命令にて指定された対象記憶回路に対し、前記マスク用記憶回路の記憶データに応じて第1ライトアクセス又は第2ライトアクセスを行い、
前記アクセス回路は、前記第1ライトアクセスにおいて、前記ライト命令にて指定されるデータであって且つ前記複数ビット分のライトデータを前記対象記憶回路に書き込み、
前記アクセス回路は、前記第2ライトアクセスでは、前記マスク用記憶回路の記憶データに応じて、前記ライトデータの一部の前記対象記憶回路への書き込みをマスクする
、半導体装置。
【請求項2】
前記マスク用記憶回路における各ビットは第1の値又は第2の値を有し、
前記アクセス回路は、前記相手側装置から前記ライト命令を受信した場合において、前記マスク用記憶回路における全ビットが前記第1の値を有するときには前記第1ライトアクセスを行い、前記マスク用記憶回路における全ビットに前記第1の値及び前記第2の値が混在するときには前記第2ライトアクセスを行う
、請求項1に記載の半導体装置。
【請求項3】
前記複数の記憶回路は夫々に第1~第nビットを有し、
前記アクセス回路は、前記第2ライトアクセスにおいて、前記マスク用記憶回路における第jビットが前記第1の値を有しているときには、前記ライトデータにおける第jビットの値を前記対象記憶回路の第jビットに書き込み、前記マスク用記憶回路における第jビットが前記第2の値を有しているときには、前記ライトデータにおける第jビットの値の、前記対象記憶回路の第jビットへの書き込みをマスクし、
nは2以上の整数を表し、jはn以下の自然数を表す
、請求項2に記載の半導体装置。
【請求項4】
前記アクセス回路は、前記マスク用記憶回路を前記対象記憶回路に指定した第1ライト命令を前記相手側装置から受信したとき、前記マスク用記憶回路の記憶データに依らず、前記対象記憶回路としての前記マスク用記憶回路に対し前記第1ライトアクセスを行い、
前記第1ライト命令にて指定される前記ライトデータの何れか1以上のビットは前記第2の値を有し、
前記アクセス回路は、前記第1ライト命令の受信後、前記マスク用記憶回路以外の記憶回路を前記対象記憶回路に指定した第2ライト命令を前記相手側装置から受信したとき、前記第2ライト命令にて指定された前記対象記憶回路に対し、前記マスク用記憶回路の記憶データに応じて前記第2ライトアクセスを行う
、請求項2又は3に記載の半導体装置。
【請求項5】
前記アクセス回路は、前記マスク用記憶回路を前記対象記憶回路に指定した第1ライト命令を前記相手側装置から受信したとき、前記マスク用記憶回路の記憶データに依らず、前記対象記憶回路としての前記マスク用記憶回路に対し前記第1ライトアクセスを行い、
前記第1ライト命令にて指定される前記ライトデータの何れか1以上のビットは前記第2の値を有し、
前記複数の記憶回路は、前記マスク用記憶回路とは異なる第1記憶回路及び第2記憶回路を含み、
前記アクセス回路は、前記第1ライト命令の受信後、前記第1記憶回路を前記対象記憶回路に指定した第2ライト命令を前記相手側装置から受信したとき、前記第1記憶回路に対し前記マスク用記憶回路の記憶データに応じて前記第2ライトアクセスを行い、更にその後、前記第2記憶回路を前記対象記憶回路に指定した第3ライト命令を前記相手側装置から受信したとき、前記第2記憶回路に対し前記マスク用記憶回路の記憶データに応じて前記第2ライトアクセスを行う
、請求項2又は3に記載の半導体装置。
【請求項6】
前記アクセス回路は、前記マスク用記憶回路を前記対象記憶回路に指定した第1ライト命令を前記相手側装置から受信したとき、前記マスク用記憶回路の記憶データに依らず、前記対象記憶回路としての前記マスク用記憶回路に対し前記第1ライトアクセスを行い、
前記第1ライト命令にて指定される前記ライトデータの何れか1以上のビットは前記第2の値を有し、
前記複数の記憶回路は、前記マスク用記憶回路とは異なる2以上の記憶回路を含み、
前記アクセス回路は、前記第1ライト命令の受信後、前記2以上の記憶回路の夫々を前記対象記憶回路に指定した第2ライト命令を前記相手側装置から受信したとき、前記2以上の記憶回路に対し前記マスク用記憶回路の記憶データに応じて前記第2ライトアクセスを行う
、請求項2又は3に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、半導体装置に関する。
【背景技術】
【0002】
シリアル通信が可能な第1装置及び第2装置を有するシステムがある。シリアル通信のインターフェースの例としてI2Cがあり、I2Cを用いたシステムが多数存在する(例えば下記特許文献1参照)。上記システムにおいて第2装置内の記憶回路に記憶されたデータの一部のみの書き換えが要求されることがある。ここにおける記憶回路の代表例はレジスタである。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えばレジスタが8ビット分の記憶容量を有する場合において、当該レジスタの上位側4ビットの値のみの書き換えが要求されるケースがある。ここで、第1装置がライト命令及びリード命令の送信主体であるとする。当該ケースでは、まず第1装置が第2装置に対してリード命令を送信することで対象となるレジスタの記憶データ(8ビット分の記憶データ;例えば0x0A)を取得する。その後、第1装置は、取得した記憶データにおける下位側4ビットの値(0xA)と、対象となるレジスタの上位側4ビットに書き込まれるべき値(例えば0x3)とに基づき、対象となるレジスタに書き込まれるべきライトデータ(例えば0x3A)を導出する。その後、第1装置は、ライトデータ(例えば0x3A)を含むライト命令を第2装置に送信する。
【0005】
このように、レジスタの一部ビットへのデータ書き込みは、一般的に、命令送信側での演算を含む複雑な動作が必要となる。レジスタの一部ビットへのデータ書き込みを簡素な動作で実現できれば有益である。レジスタに分類されない任意の種類の記憶回路についても同様である。
【0006】
本開示は、記憶回路の一部ビットへのデータ書き込みを簡素な動作で実現する半導体装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示に係る半導体装置は、複数ビットを有する記憶回路を複数備えるとともに、相手側装置とシリアル通信を行うよう構成された通信回路と、前記シリアル通信にて前記相手側装置から受信した命令に基づき何れかの記憶回路にアクセスするよう構成されたアクセス回路と、を備え、複数の記憶回路はマスク用記憶回路を含み、前記アクセス回路は、前記相手側装置からライト命令を受信したとき、前記複数の記憶回路の内、前記ライト命令にて指定された対象記憶回路に対し、前記マスク用記憶回路の記憶データに応じて第1ライトアクセス又は第2ライトアクセスを行い、前記アクセス回路は、前記第1ライトアクセスにおいて、前記ライト命令にて指定されるデータであって且つ前記複数ビット分のライトデータを前記対象記憶回路に書き込み、前記アクセス回路は、前記第2ライトアクセスでは、前記マスク用記憶回路の記憶データに応じて、前記ライトデータの一部の前記対象記憶回路への書き込みをマスクする。
【発明の効果】
【0008】
本開示によれば、記憶回路の一部ビットへのデータ書き込みを簡素な動作で実現する半導体装置を提供することが可能となる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、本開示の実施形態に係る通信システムの全体構成図である。
【
図2】
図2は、本開示の実施形態に係るレジスタブロックの構成図である。
【
図3】
図3は、本開示の実施形態に係り、ライト命令が複数の単位信号から成る様子を示す図である。
【
図4】
図4は、本開示の実施形態に係り、リード命令が複数の単位信号から成る様子を示す図である。
【
図5】
図5は、本開示の実施形態に係り、1つの単位信号の構成図である。
【
図6】
図6は、本開示の実施形態に係り、1つのレジスタの構成図である。
【
図7】
図7は、本開示の実施形態に係り、1つのライトデータの構成図である。
【
図8】
図8は、本開示の実施形態に係り、ライト命令の受信に基づく動作の説明図である。
【
図9】
図9は、本開示の実施形態に係り、ライト命令の受信に基づく動作の説明図である。
【
図10】
図10は、本開示の実施形態に係り、ライト命令の受信に基づく動作の説明図である。
【
図11】
図11は、参考例に係り、命令の送受信及びレジスタ内のデータの変化を示す図である。
【
図12】
図12は、本開示の実施形態に属する第1実施例に係り、ライト命令及びライトアクセスの流れを示す図である。
【
図13】
図13は、本開示の実施形態に属する第2実施例に係り、ライト命令及びライトアクセスの流れを示す図である。
【
図14】
図14は、本開示の実施形態に属する第4実施例に係り、通常レジスタに設けられるビット回路の構成図である。
【
図15】
図15は、本開示の実施形態に属する第4実施例に係り、マスク用レジスタの構成図である。
【
図16】
図16は、本開示の実施形態に属する第4実施例に係り、マスク用レジスタに設けられるビット回路の構成図である。
【発明を実施するための形態】
【0010】
以下、本開示の実施形態の例を、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、情報、信号、物理量、機能部、回路、素子又は部品等を参照する記号又は符号を記すことによって、該記号又は符号に対応する情報、信号、物理量、機能部、回路、素子又は部品等の名称を省略又は略記することがある。
【0011】
まず、本開示の実施形態の記述にて用いられる幾つかの用語について説明を設ける。レベルとは電位のレベルを指し、任意の注目した信号又は電圧についてハイレベルはローレベルよりも高い電位を有する。任意の注目した信号において、ローレベルからハイレベルへの切り替わりをアップエッジと称し、ハイレベルからローレベルへの切り替わりをダウンエッジと称する。アップエッジをライジングエッジに読み替えて良い。ダウンエッジをフォーリングエッジに読み替えて良い。回路を形成する複数の部位間についての接続とは、特に記述なき限り、電気的な接続を指すと解して良い。
【0012】
図1に本実施形態に係る通信システムSYSの構成を示す。
図1の通信システムSYSは、半導体装置1及びMPU(Micro Processing Unit)2を備える。半導体装置1とMPU2はシリアル通信用の配線群を介して互いに接続される。半導体装置1はシリアル通信用の配線群を介してMPU2とシリアル通信が可能に構成される。MPU2は、半導体装置1にとって、通信の相手側装置の例である。
【0013】
本実施形態では、シリアル通信のインターフェースとしてI
2C(Inter-Integrated Circuit)によるインターフェースを用いることを想定する。換言すれば、半導体装置1及びMPU2間のシリアル通信としてI
2Cによるシリアル通信を行うことを想定する。シリアル通信用の配線群は、クロック信号SCLを伝送するためのクロック配線WR
SCLと、データ信号SDAを伝送するためのデータ配線WR
SDAと、を有する。I
2Cのシリアル通信において、MPU2がマスタとして機能し、半導体装置1がスレーブとして機能する。尚、
図1の通信システムSYSにおいて、半導体装置1及びMPU2とは異なる他の装置(不図示)が他のスレーブとして設けられる場合もある。
【0014】
半導体装置1は、通信回路10、アクセス回路20、レジスタブロック30及び機能回路40を備える。半導体装置1は、半導体基板上に形成された半導体集積回路を有する半導体チップと、半導体チップを収容する筐体(パッケージ)と、筐体から半導体装置1の外部に対して露出する複数の外部端子と、を備えた電子部品である。半導体集積回路にて通信回路10、アクセス回路20、レジスタブロック30及び機能回路40が形成されて良い。
【0015】
通信回路10は、クロック配線WRSCL及びデータ配線WRSDAに接続され、MPU2とシリアル通信を行う。詳細には、通信回路10と、通信回路10と異なり且つMPU2に設けられた他の通信回路と、の間でシリアル通信が行われる。
【0016】
MPU2はクロック配線WRSCL及びデータ配線WRSDAに接続される。MPU2はクロック配線WRSCLを介し通信回路10に対してクロック信号SCLを送信し、通信回路10はMPU2からのクロック信号SCLを受信する。クロック信号SCLは、ローレベル、ハイレベルの信号レベルを交互にとる矩形波信号である。尚、本明細書において、任意の注目信号に関し、注目信号の送信と注目信号の出力は同義であり、注目信号の受信と注目信号の入力は同義である。また、通信回路10は半導体装置1の構成要素であるので、通信回路10による信号の送信、受信は、半導体装置1による信号の送信、受信であると解することもできる。
【0017】
データ配線WRSDAに対してデータ信号SDAを送信するデバイスをトランスミッタと称し、データ配線WRSDAにて伝送されるデータ信号SDAを受信するデバイスをレシーバと称する。ここにおけるデバイスは、MPU2又は半導体装置1である。I2Cの規定に従い、任意の時刻において、データ配線WRSDAに接続されたデバイスの内、1つのみがトランスミッタとなり得る。
【0018】
MPU2がトランスミッタとして機能するとき、MPU2はデータ配線WRSDAを介し半導体装置1に対してデータ信号SDAを送信し、半導体装置1は通信回路10にてMPU2からのデータ信号SDAを受信する。半導体装置1がトランスミッタとして機能するとき、半導体装置1は通信回路10からデータ配線WRSDAを介しMPU2に対してデータ信号SDAを送信し、MPU2は半導体装置1からのデータ信号SDA(通信回路10からのデータ信号SDA)を受信する。
【0019】
MPU2は各種の命令を半導体装置1に送信できる。半導体装置1は通信回路10にてMPU2から送信された命令を受信する。MPU2がトランスミッタとして機能するときにおいて、MPU2が送信するデータ信号SDAにより命令の内容が指定される。
【0020】
アクセス回路20は、通信回路10にて受信した命令に従ってレジスタブロック30に対してアクセスする。
【0021】
図2にレジスタブロック30の構造を示す。レジスタブロック30はm個のレジスタを備える。mは2以上の任意の整数を表す。ここでは、“m=33”であるとする。各レジスタは単位記憶容量を持つ。単位記憶容量はnビット分の記憶容量である。nは2以上の任意の整数を表す。ここでは“n=8”であるとする。8ビットは1バイトである。即ち、ここでは単位記憶容量は1バイトであるとする。
【0022】
レジスタブロック30に設けられる計33個のレジスタには各々固有のアドレスが割り当てられる。アドレスは数値にて表現され、或る注目アドレスから見て、より小さな数値にて示されるアドレスは注目アドレスの下位側のアドレスであり、より大きな数値にて示されるアドレスは注目アドレスの上位側のアドレスである。
図2の構成において、レジスタブロック30における最下位アドレスは“0x00”であり、レジスタブロック30における最上位アドレスは“0x20”である。尚、本実施形態では、適宜、アドレス又はデータを16進数で表記する。アドレス又はデータを示す数値の先頭に付加される文字列“0x”は、文字列“0x”に続く数値が16進数であることを表す。故に、“0x00”は10進数表記では“0”を表し、“0x1F”は10進数表記では“31”を表し、“0x20”は10進数表記では“32”を表す。
【0023】
レジスタブロック30内のレジスタの内、10進数表記で“i”のアドレスが割り当てられたレジスタを、レジスタREG[i]と称する。iは任意の整数を表す。そうすると、レジスタブロック30に設けられるm個のレジスタはレジスタREG[0]~REG[32]から成る。それらの内、レジスタREG[0]~REG[31]は通常レジスタであり、レジスタREG[32]はマスク用レジスタである。通常レジスタ及びマスク用レジスタの相違については後述される。
【0024】
機能回路40は半導体装置1が実現すべき機能動作を実行する。例えば、半導体装置1がモータドライバである場合、機能回路40は半導体装置1に接続された三相モータ(不図示)を駆動するための電力を三相モータに供給する機能動作を実行し、これによって三相モータを回転駆動させる。或いは例えば、半導体装置1がLEDドライバである場合、機能回路40は半導体装置1に接続されたLED(発光ダイオード:不図示)を発光させるための駆動電流をLEDに供給する機能動作を実行し、これによってLEDを発光させる。更に或いは例えば、半導体装置1と必要な外付け部品とでDC/DCコンバータが形成される場合、機能回路40は直流の入力電圧を電力変換する機能動作を実行し、これによって直流の出力電圧を生成する。また、半導体装置1にて実行される各種の保護動作(過電流保護動作、過熱保護動作、低電圧保護動作など)も機能動作に含まれ得る。この他、機能動作は任意である。
【0025】
機能回路40は、通常レジスタ内のデータを参照し、参照したデータに基づいて機能動作を行う。これに関する具体例は後に述べる。
【0026】
MPU2は半導体装置1に対して複数種類の命令を送信することができる。命令を表す信号を特に命令信号と称する。MPU2は、予め定められたプロトコルに従い、クロック信号SCLを送信しつつ任意の命令を表す命令信号を送信することで、半導体装置1に対して当該命令を送信する。半導体装置1は、上記プロトコルに従い、クロック信号SCLに同期して命令を表す命令信号を通信回路10にて受信することにより当該命令を受け取る。上記プロトコルは、I2Cにて定義された通信のプロトコルであると共に、半導体装置1及びMPU2間で定められた通信のプロトコルである。
【0027】
複数種類の命令にライト命令及びリード命令が含まれる。
【0028】
ライト命令として複数種類のライト命令が存在しうる。但し、ここでは、ライト命令として、対象アドレスに1バイト分のライトデータを書き込むことを指令する命令を想定し、ライト命令の中で対象アドレスが指定されるものとする。ライト命令において対象アドレスは書き込みの対象となるアドレスを指す。ライト命令における対象アドレスを特にライト対象アドレスと称する。本実施形態においてライト対象アドレスは“0x00”~“0x20”の何れかである(
図2参照)。ライト対象アドレスが割り当てられたレジスタをライト対象レジスタと称する。ライトデータはライト命令の中で指定される1バイト分のデータである。
【0029】
リード命令として複数種類のリード命令が存在しうる。但し、ここででは、リード命令として、リード対象アドレスに格納された1バイト分のデータを読み出することを指令する命令を想定し、リード命令の中で対象アドレスが指定されるものとする。リード命令において対象アドレスは読み出しの対象となるアドレスを指す。リード命令における対象アドレスを特にリード対象アドレスと称する。本実施形態においてリード対象アドレスは“0x00”~“0x20”の何れかである(
図2参照)。リード対象アドレスが割り当てられたレジスタをリード対象レジスタと称する。
【0030】
通信回路10における命令の受信内容はアクセス回路20に伝達される。アクセス回路20は、通信回路10にて受信した命令の内容に従ってレジスタブロック30にアクセスする。レジスタブロック30に対するアクセスとしてライトアクセスとリードアクセスがある。
【0031】
アクセス回路20は、通信回路10にてライト命令が受信されたときライトアクセスを行う。ライトアクセスにおいて、アクセス回路20はレジスタブロック30内のライト対象レジスタに対してライトデータを書き込む。
【0032】
アクセス回路20は、通信回路10にてリード命令が受信されたときリードアクセスを行う。リードアクセスにおいて、アクセス回路20は、レジスタブロック30内のリード対象レジスタに格納された1バイト分のデータを読み出し、読み出したデータをリードデータとして通信回路10に送る。その後、半導体装置1がトランスミッタとして機能し、通信回路10はアクセス回路20から送られたリードデータをMPU2に送信する。
【0033】
尚、上述したように、
図1の通信システムSYSにおいて、半導体装置1及びMPU2とは異なる他の装置(不図示)が他のスレーブとして設けられる場合もある。各スレーブには固有のスレーブアドレスが割り当てられ、命令の中で1つのスレーブアドレスが指定される。命令中に指定されたスレーブアドレスに対応するスレーブのみが、MPU2からの命令に対して応答する。
【0034】
図3にライト命令の構造を示す。ライト命令は3つの単位信号W_U1、W_U2及びW_U3にて構成される。各単位信号はシリアル信号であるデータ信号SDAによりトランスミッタ及びレシーバ間で送受信される。各単位信号は8ビット分の信号である。ライト命令が送受信される際、MPU2から単位信号W_U1、W_U2及びW_U3が、この順番で半導体装置1(通信回路10)に対して送信される。単位信号W_U1により、スレーブアドレスが指定され且つ単位信号W_U1~W_U3から成る命令がライト命令であることが示される。単位信号W_U2にてライト対象アドレスが指定される。単位信号W_U3はライトデータを表す(即ち単位信号W_U3にてライトデータが指定される)。
【0035】
図4にリード命令の構造を示す。リード命令は4つの単位信号R_U1、R_U2、R_U3及びR_U4にて構成される。リード命令が送受信される際、MPU2から単位信号R_U1、R_U2及びR_U3が、この順番で半導体装置1(通信回路10)に対して送信され、その後に半導体装置1(通信回路10)からMPU2に対して単位信号R_U4が送信される。単位信号R_U1及びR_U3により、スレーブアドレスが指定され且つ単位信号R_U1~R_U4から成る命令がリード命令であることが示される。単位信号R_U2にてリード対象アドレスが指定される。単位信号R_U4にてリードデータが表される。
【0036】
図5に単位信号の構造を示す。各単位信号は8ビットのシリアル信号である。各単位信号はビットa[0]~a[7]の信号から成る。ビットa[j+1]はビットa[j]よりも上位側のビットである。jは任意の整数を表すが、ビットa[j]におけるjは0以上且つ7以下の整数を表す。単位信号がMPU2から半導体装置1に送信される際、ビットa[j]の信号の次にビットa[j-1]の信号が送信される。1クロック区間において1ビットの信号が送受信される。1クロック区間とは、クロック信号SCLにおける互いに隣接する2つのアップエッジ間の区間を指す。但し、クロック信号SCLにおける互いに隣接する2つのダウンエッジ間の区間が1クロック区間であっても良い。ライト命令に関しては、単位信号W_U3におけるビットa[0]~a[7]の値によりライトデータが表される。リード命令に関しては、単位信号R_U4におけるビットa[0]~a[7]の値によりリードデータが表される。
【0037】
データ信号SDAはハイレベル又はローレベルを有する二値信号である。データ信号SDAがハイレベルであるとき、データ信号SDAは“1”の値を持ち、且つ、データ信号SDAがローレベルであるとき、データ信号SDAは“0”の値を持つ(但し、その逆であっても良い)。
【0038】
尚、I2Cによるシリアル通信では、スタートコンディションの確立後に命令の送信が開始され、ストップコンディションの確立により命令の送信が終了する。また、レシーバとして機能するデバイス(半導体装置1又はMPU2)は、8ビット分の単位信号を受信すると、1クロック区間だけトランスミッタとして機能してデータ配線WRSDAに対し1ビットのアクノリッジ信号を送信する。スタートコンディション、ストップコンディション及びアクノリッジ信号については、I2Cの規定として周知であるため、ここでは、それらの存在を無視して説明を行う。
【0039】
図6にレジスタREG[i]の構造を示す。レジスタREG[0]~REG[32]は互いに同じ構造を有し、レジスタREG[i]はレジスタREG[0]~REG[32]の内の任意の何れかを指す。レジスタREG[i]は計8つのビットであるビットb[0]~b[7]を備える。ビットb[0]~b[7]はレジスタREG[i]における第1~第8ビットに相当する。ビットb[j+1]はb[j]よりも上位側のビットである。故に、レジスタREG[i]においてビットb[7]が最上位ビットであり、ビットb[0]が最下位ビットである。jは任意の整数を表すが、ビットb[j]におけるjは0以上且つ7以下の整数を表す。レジスタREG[i]においてビットb[0]~b[7]は夫々に“0”又は“1”の値を記憶する。レジスタREG[i]の記憶データはビットb[0]~b[7]の記憶データから成る。例えば、レジスタREG[i]の記憶データは、ビットb[0]~b[7]の記憶データが全て“1”であれば“0xFF”であり、ビットb[0]~b[7]の記憶データが全て“0”であれば“0x00”である。
【0040】
図7にライトデータの構造を示す。ライトデータは8ビットデータであり、ビットc[0]~c[7]の値にて表される。ビットc[0]~c[7]はライトデータにおける第1~第8ビットに相当する。ライトデータにおいてビットc[j]の値をライト値WD[j]と称する。そうすると、ライトデータはライト値WD[0]~WD[7]にて表さされる。ライト値WD[0]~WD[7]は夫々に“0”又は“1”である。ビットc[j+1]はビットc[j]よりも上位側のビットである。故にライトデータの値は、“WD[7]・2
7+WD[6]・2
6+WD[5]・2
5+WD[4]・2
4+WD[3]・2
3+WD[2]・2
2+WD[1]・2
1+WD[0]”にて表される。
【0041】
半導体装置1の特徴的なアクセス動作として、ライトアクセスには基本ライトアクセスとマスクライトアクセスとがある。
【0042】
基本ライトアクセスにおいて、アクセス回路20は、ライトデータをライト対象レジスタに書き込む。ライトデータは、上述したように、ライト命令にて指定されるデータであって且つnビット分のデータ(即ち単位記憶容量分のデータ)であり、ここでは1バイト分のデータである。基本ライトアクセスでは、ライト値WD[0]~WD[7]が、夫々、ライト対象レジスタのビットb[0]~b[7]に書き込まれる。
【0043】
マスクライトアクセスにおいて、アクセス回路20は、nビット分のライトデータの内、一部のデータのみをライト対象レジスタに書き込み、残部のデータのライト対象レジスタへの書き込みをマスクする。書き込みのマスクとは、書き込みを禁止すること(換言すれば書き込みを非実行とすること)を指す。
【0044】
通信回路10にてライト命令が受信されたときに、基本ライトアクセス及びマスクライトアクセスの何れが行われるかは、マスク用レジスタであるレジスタREG[32]の記憶データに依存する。
【0045】
ライト対象アドレスが通常レジスタのアドレス(即ち“0x00”~“0x1F”の何れか)である場合において、レジスタREG[32]の記憶データが“0x00”であるとき、ライトアクセスとして基本ライトアクセスが実行される。レジスタREG[32]の記憶データが“0x00”である状態は、レジスタREG[32]のビットb[0]~b[7]に全て“0”が記憶されている状態に相当する。また、ライト対象アドレスがマスク用レジスタのアドレス(即ち“0x20”)である場合には、レジスタREG[32]の記憶データに依らず、ライトアクセスとして常に基本ライトアクセスが実行される。
【0046】
ライト対象アドレスが通常レジスタのアドレス(即ち“0x00”~“0x1F”の何れか)である場合において、レジスタREG[32]の記憶データが“0x00”と相違するとき、ライトアクセスとしてマスクライトアクセスが実行される。レジスタREG[32]の記憶データが“0x00”と相違する状態は、レジスタREG[32]のビットb[0]~b[7]の記憶データに“0”と“1”が混在している状態に相当する。
【0047】
マスクライトアクセスにおいて、アクセス回路20は、レジスタREG[32]の記憶データに応じてビットごとに、ライト対象レジスタへのライトデータの書き込みを実行する又はマスクする。
【0048】
具体的には、マスクライトアクセスにおいて、レジスタREG[32]のビットb[j]が“0”の値を有するとき、アクセス回路20は、ライトデータにおけるビットc[j]の値をライト対象レジスタのビットb[j]に書き込む。ライトデータにおけるビットc[j]の値はライト値WD[j]である(
図7参照)。
【0049】
マスクライトアクセスにおいて、レジスタREG[32]のビットb[j]が“1”の値を有するとき、アクセス回路20は、ライトデータにおけるビットc[j]の値の、ライト対象レジスタのビットb[j]への書き込みをマスクする(当該書き込みを禁止して、ライト対象レジスタのビットb[j]の値を変更しない)。換言すれば、マスクライトアクセスにおいて、レジスタREG[32]のビットb[j]が“1”の値を有するとき、アクセス回路20は、ライトデータにおけるビットc[j]の値をライト対象レジスタのビットb[j]へ書き込む動作をマスクする(禁止する)。
【0050】
図8にライト命令610が通信回路10にて受信されたときの動作の流れを示す。ライト命令610にて指定されるライト対象アドレスは“0x04”であり、ライト命令610にて指定されるライトデータは“0x35”である。故に、ライト命令610におけるライト対象レジスタはレジスタREG[4]である。また、ライト命令610が通信回路10にて受信されたときにおいて、レジスタREG[32]の記憶データは“0x00”である。そうすると、ライト命令610の受信に応答してアクセス回路20は基本ライトアクセス612を実行する。尚、ライト命令610の送受信直前及び送受信時においてレジスタREG[4]の記憶データは“0x0A”である。
【0051】
基本ライトアクセス612において、アクセス回路20は、ライト命令610にて指定されるライトデータ、即ち“0x35”をライト対象レジスタであるレジスタREG[4]に書き込む。結果、レジスタREG[4]の記憶データは“0x0A”から“0x35”に変更される。
【0052】
図9にライト命令620が通信回路10にて受信されたときの動作の流れを示す。ライト命令620にて指定されるライト対象アドレスは“0x20”であり、ライト命令620にて指定されるライトデータは“0x0F”である。故に、ライト命令620におけるライト対象レジスタはレジスタREG[32]である。そうすると、ライト命令620の受信に応答してアクセス回路20はレジスタREG[32]の記憶データに依らず基本ライトアクセス622を実行する。尚、ライト命令620の送受信直前及び送受信時においてレジスタREG[32]の記憶データは“0x00”である。
【0053】
基本ライトアクセス622において、アクセス回路20は、ライト命令620にて指定されるライトデータ、即ち“0x0F”をライト対象レジスタであるレジスタREG[32]に書き込む。結果、レジスタREG[32]の記憶データは“0x00”から“0x0F”に変更される。
【0054】
図10にライト命令630が通信回路10にて受信されたときの動作の流れを示す。ライト命令630にて指定されるライト対象アドレスは“0x05”であり、ライト命令630にて指定されるライトデータは“0x30”である。故に、ライト命令630におけるライト対象レジスタはレジスタREG[5]である。また、ライト命令630が通信回路10にて受信されたときにおいて、レジスタREG[32]の記憶データは“0x0F”である。そうすると、ライト命令630の受信に応答してアクセス回路20はマスクライトアクセス632を実行する。尚、ライト命令630の送受信直前及び送受信時においてレジスタREG[5]の記憶データは“0x0A”である。
【0055】
マスクライトアクセス632において、レジスタREG[32]のビットb[j]の値が“0”であるとき、アクセス回路20は、ライト命令630のライトデータにおけるビットc[j]の値を、ライト対象レジスタ(ここではレジスタREG[5])のビットb[j]に書き込む。上述したように、ライトデータにおけるビットc[j]の値はライト値WD[j]である(
図7参照)。
【0056】
マスクライトアクセス632において、レジスタREG[32]のビットb[j]の値が“1”であるとき、アクセス回路20は、ライト命令630のライトデータにおけるビットb[j]の値の、ライト対象レジスタ(ここではレジスタREG[5])のビットb[j]への書き込みをマスクする。即ち、マスクライトアクセス632において、レジスタREG[32]のビットb[j]の値が“1”であるとき、アクセス回路20は、ライト命令630のライトデータにおけるビットc[j]の値に依らず、ライト対象レジスタ(ここではレジスタREG[5])のビットb[j]の値を不変に保持する。
【0057】
このため、マスクライトアクセス632では、レジスタREG[5]のビットb[4]~b[7]に対してライト命令630のライトデータにおけるビットc[4]~c[7]の値(WD[4]~WD[7])が書き込まれる。一方、マスクライトアクセス632において、レジスタREG[5]のビットb[0]~b[3]に対する書き込みはマスクされる。即ち、マスクライトアクセス632において、ライト命令630のライトデータにおけるビットc[0]~c[3]の値(WD[0]~WD[3])に依らず、レジスタREG[5]のビットb[0]~b[3]の値は不変に保持される。
【0058】
結果、マスクライトアクセス632により、レジスタREG[5]の記憶データは“0x0A”から“0x3A”に変更される。即ち、マスクライトアクセス632において、ライト命令630のライトデータの上位側4ビットだけが(“0x30”中の“3”の部分だけが)レジスタREG[5]の上位側4ビットに書き込まれ、レジスタREG[5]の下位側4ビットの値は不変に保持される。
【0059】
尚、ライト命令630にて指定されるライトデータの下位側4ビット(即ちc[0]~c[3])の値は、マスクライトアクセス632の結果に影響を与えないので、任意であって良い。
【0060】
ここで参考例に係る動作を説明する。参考例ではマスク用レジスタが機能せず、ライトアクセスとして基本ライトアクセスのみが実行可能である。
【0061】
今、レジスタREG[5]の下位側4ビットの値を不変に保持しつつ、レジスタREG[5]の上位側4ビットの値だけ“0x3”に変更することが必要なケースCS1を考える。レジスタREG[i]の下位側4ビットとは、レジスタREG[i]のビットb[0]~b[3]を指す。レジスタREG[i]の上位側4ビットとは、レジスタREG[i]のビットb[4]~b[7]を指す。
【0062】
ケースCS1に係る参考例では、ライト命令によってレジスタREG[5]の下位側4ビットが変わらないようにするために、
図11に示す如く、まずMPU2はリード命令によってレジスタREG[5]の現状の記憶データを確認する。その後、参考例に係るMPU2は、確認した記憶データに応じて、レジスタREG[5]に書き込むべき値を演算し、演算結果をライトデータに反映させたライト命令を行う必要がある。
【0063】
より具体的には、ケースCS1において参考例に係るMPU2は、まずリード命令の実行を通じてレジスタREG[5]の現状の記憶データを確認する。ここで確認された記憶データ(MPU2にて受信したリードデータ)が“0x0A”であったとする。そうすると、ケースCS1において参考例に係るMPU2は、確認した記憶データ“0x0A”を元に、レジスタREG[5]に書き込むべき値“0x3A”を演算し、ライトデータ“0x3A”を指定するライト命令を行う。
【0064】
即ち、参考例では、或る1つのレジスタの一部のビットの値のみを変更する際、
当該レジスタを対象とするリード命令の送受信動作(第1ステップ)と、
リード命令の結果に基づく演算(第2ステップ)と、
演算結果に基づくライト命令の送受信動作(第3ステップ)と、が必要となる。
【0065】
以下、複数の実施例の中で、通信システムSYSに関わる幾つかの具体的な動作例、応用技術、変形技術等を説明する。本実施形態にて上述した事項(但し参考例に関わる事項を除く)は、特に記述無き限り且つ矛盾無き限り、以下の各実施例に適用される。各実施例において、上述の事項と矛盾する事項がある場合には、各実施例での記載が優先されて良い。また矛盾無き限り、以下に示す複数の実施例の内、任意の実施例に記載した事項を、他の任意の実施例に適用することもできる(即ち複数の実施例の内の任意の2以上の実施例を組み合わせることも可能である)。
【0066】
<<第1実施例>>
図12を参照し、上述のケースCS1に関わる通信システムSYSの実施例を第1実施例として説明する。
【0067】
第1実施例において、MPU2は、まずライト命令620を半導体装置1に送信する。ライト命令620の内容は上述した通りである(
図9参照)。つまり、ライト命令620におけるライト対象レジスタはレジスタREG[32]であり、ライト命令620におけるライトデータは“0x0F”である。ライト命令620におけるライト対象レジスタはマスク用レジスタ(即ちREG[32])であるので、ライト命令620の受信に応答してアクセス回路20は基本ライトアクセス622を実行する。基本ライトアクセス622の内容は上述した通りである(
図9参照)。従って、基本ライトアクセス622にてレジスタREG[32]に“0x0F”が書き込まれる。
【0068】
その後、MPU2はライト命令630を半導体装置1に送信する。ライト命令630の内容は上述した通りである(
図10参照)。つまり、ライト命令630におけるライト対象レジスタはレジスタREG[5]であり、ライト命令630におけるライトデータは“0x30”である。ライト命令630の送受信直前及び送受信時におけるレジスタREG[32]の記憶データは“0x00”でないので、ライト命令630の受信に応答してアクセス回路20はマスクライトアクセス632を行う。マスクライトアクセス632の内容は上述した通りである(
図10参照)。従って、マスクライトアクセス632にてレジスタREG[5]の上位側4ビットの値だけ“0x3”に変更される。マスクライトアクセス632の送受信直前及び送受信時においてレジスタREG[5]が“0x0A”の値を記憶しているとする。そうすると、マスクライトアクセス632により、レジスタREG[5]の記憶データが“0x0A”から“0x3A”に変更される。
【0069】
このように、本実施形態に係る半導体装置1によれば、
図11の参考例の如くリード命令及びリードデータに基づく演算を要することなく、任意のレジスタの一部のビットの値のみを変更することが可能となる。つまり、レジスタへのデータ書き込み時における演算負荷(MPU2の演算負荷)が軽減される。
【0070】
<<第2実施例>>
図13を参照し、ケースCS2に関わる通信システムSYSの実施例を第2実施例として説明する。ケースCS2は、レジスタREG[5]及びREG[6]の夫々の上位側4ビットだけデータを書き換えるケースである。詳細には、ケースCS2では、レジスタREG[5]の上位側4ビットの値を“0x3”に変更すること、及び、レジスタREG[6]の上位側4ビットの値を“0x7”に変更することが必要とされる。加えて、ケースCS2では、レジスタREG[5]の下位側4ビットの値及びレジスタREG[6]の下位側4ビットの値を不変に保持することが必要とされる。
【0071】
この場合、まずMPU2はライト命令620を半導体装置1に送信し、ライト命令620の受信に応答してアクセス回路20は基本ライトアクセス622を実行する。次にMPU2はライト命令630を半導体装置1に送信し、ライト命令630の受信に応答してアクセス回路20はマスクライトアクセス632を実行する。ここまでの動作は第1実施例と同様である。
【0072】
その後、ケースCS2に係るMPU2はライト命令640を半導体装置1に送信する。ライト命令640におけるライト対象アドレスは“0x06”であり、従ってライト命令640におけるライト対象レジスタはレジスタREG[6]である。ケースCS2では、レジスタREG[6]の上位側4ビットの値を“0x7”に変更することが必要とされるため、ライト命令640におけるライトデータは“0x70”に設定される。
【0073】
ライト命令640の送受信直前及び送受信時におけるレジスタREG[32]の記憶データは“0x00”でないので、ライト命令640の受信に応答してアクセス回路20はマスクライトアクセス642を行う。マスクライトアクセス642の直前においてレジスタREG[6]の記憶データは“0x96”であるとする。
【0074】
マスクライトアクセス642では、レジスタREG[6]のビットb[4]~b[7]に対してライト命令640のライトデータにおけるビットc[4]~c[7]の値が書き込まれる。一方、マスクライトアクセス642において、レジスタREG[6]のビットb[0]~b[3]に対する書き込みはマスクされる。即ち、マスクライトアクセス642において、ライト命令640のライトデータにおけるビットc[0]~c[3]の値に依らず、レジスタREG[6]のビットb[0]~b[3]の値は不変に保持される。
【0075】
結果、マスクライトアクセス642により、レジスタREG[6]の記憶データは“0x96”から“0x76”に変更される。即ち、マスクライトアクセス642において、ライト命令640のライトデータの上位側4ビットだけが(“0x70”中の“7”の部分だけが)レジスタREG[6]の上位側4ビットに書き込まれ、レジスタREG[6]の下位側4ビットの値は不変に保存される。
【0076】
尚、ライト命令640にて指定されるライトデータの下位側4ビット(即ちc[0]~c[3])の値は、マスクライトアクセス642の結果に影響を与えないので、任意であって良い。
【0077】
上述の参考例(
図11参照)の方法にてケースCS2の要求を満たすためには、レジスタREG[5]を対象とするリード及びライトと、レジスタREG[6]を対象とするリード及びライトとが必要となる。詳細には、上述の参考例の方法にてケースCS2の要求を満たすためには、
レジスタREG[5]を対象とする第1リード命令の送受信動作(“0x0A”の読み込み)と、
第1リード命令の結果に基づく第1演算(レジスタREG[5]に対するライトデータ“0x3A”の導出演算)と、
レジスタREG[5]をライト対象レジスタとした、第1演算結果に基づく第1ライト命令の送受信動作(“0x3A”の書き込み)と、
レジスタREG[6]を対象とする第2リード命令の送受信動作(“0x96”の読み込み)と、
第2リード命令の結果に基づく第2演算(レジスタREG[6]に対するライトデータ“0x76”の導出演算)と、
レジスタREG[6]をライト対象レジスタとした、第2演算結果に基づく第2ライト命令の送受信動作(“0x76”の書き込み)と、が必要となる。つまり、2回分の演算と、4回分の命令の送受信が必要となる。
【0078】
第2実施例に係る半導体装置1によれば、レジスタへのデータ書き込み時における演算負荷(MPU2の演算負荷)が軽減されることに加えて、データ書き込みに必要な通信時間が短縮される(参考例では4回分の命令の送受信が必要であるのに対し、第2実施例では3回分の命令の送受信で足る)。
【0079】
マスクライトアクセス642の後、他の通常レジスタ(レジスタREG[0]~REG[4]及びREG[7]~REG[31]の何れか)における上位側4ビットにデータを書き込む場合、MPU2は、ライト命令640に続けて、上記他の通常レジスタをライト対象レジスタとするライト命令を送信するすれば良い。例えば、レジスタREG[7]の上位側4ビットの値を“0xB”に変更することが必要な場合、MPU2は、“0x07”のライト対象アドレス及び“0xB0”のライトデータに指定したライト命令を、ライト命令640に続けて半導体装置1に送信すれば良い。連続的に書き込みを行う通常レジスタの個数が増えるほど、参考例との比較における通信時間の短縮効果が高まる。
【0080】
ライト命令の一種として連続ライト命令があっても良い。連続ライト命令は、連続するアドレスが割り当てられた複数のレジスタに対してライトデータを書き込むことを指定する命令である。例えば、上記複数のレジスタがレジスタREG[5]~REG[7]であるとき、連続ライト命令には、レジスタREG[5]に割り当てられたアドレスを指定する単位信号と、レジスタREG[5]へのライトデータを指定する単位信号と、レジスタREG[6]へのライトデータを指定する単位信号と、レジスタREG[7]へのライトデータを指定する単位信号と、が含まれる。
【0081】
この連続ライト命令が通信回路10にて受信されたとき、アクセス回路20は、連続ライト命令に基づき、レジスタREG[5]へのライトデータをレジスタREG[5]に書き込むライトアクセスと、レジスタREG[6]へのライトデータをレジスタREG[6]に書き込むライトアクセスと、レジスタREG[7]へのライトデータをレジスタREG[7]に書き込むライトアクセスと、を連続的に実行する。仮に、当該連続ライト命令の送受信直前及び送受信時におけるレジスタREG[32]の記憶データが“0x00”以外であったならば、連続ライト命令に応答して実行されるライトアクセスは全てマスクライトアクセスとなる。即ち例えば、ライト命令620の受信に応答して基本ライトアクセス622が実行された後(
図13参照)、上記連続ライト命令が受信されたとき、アクセス回路20は、レジスタREG[5]~REG[7]に対し、レジスタREG[32]の記憶データに応じたマスクライトアクセスを順次行うことになる。
【0082】
上記連続ライト命令は、レジスタREG[5]~REG[7]の夫々をライト対象アドレスに指定するライト命令であると言える。連続ライト命令においてマスクライトアクセスを利用することにより、参考例との比較における通信時間の短縮効果が顕著となる。
【0083】
<<第3実施例>>
通信システムSYSの第3実施例を説明する。第3実施例では、通常レジスタ内のデータに基づく機能回路40の機能動作を例示する。
【0084】
例えば、機能回路40が8つのハーフブリッジ回路を有する構成(以下、構成EX3aと称する)を考える。8つのハーフブリッジ回路はハーフブリッジ回路HB[0]~HB[7](不図示)から成るものとする。各ハーフブリッジ回路は互いに直列接続されたハイサイドトランジスタ及びローサイドトランジスタを備える。構成EX3aに係る機能回路40は、レジスタREG[0]のビットb[j]の値が“1”であればハーフブリッジ回路HB[j]のハイサイドトランジスタをオンに制御し、レジスタREG[0]のビットb[j]の値が“0”であればハーフブリッジ回路HB[j]のハイサイドトランジスタをオフに制御する。構成EX3aに係る機能回路40は、レジスタREG[1]のビットb[j]の値が“1”であればハーフブリッジ回路HB[j]のローサイドトランジスタをオンに制御し、レジスタREG[1]のビットb[j]の値が“0”であればハーフブリッジ回路HB[j]のローサイドトランジスタをオフに制御する。
【0085】
構成EX3aにおいて、ハーフブリッジ回路HB[0]~HB[3]の各ハイサイドトランジスタの状態を不変に保持しつつ、ハーフブリッジ回路HB[4]~HB[7]の各ハイサイドトランジスタをオンに設定することがMPU2にて決定された場合を考える。この場合、MPU2はレジスタREG[32]に“0x0F”を記憶させるライト命令の送信を行ってから、レジスタREG[0]に“0xF0”を記憶させるライト命令の送信を行えば良い。
【0086】
構成EX3aにおいて、ハーフブリッジ回路HB[0]及びHB[1]の各ハイサイドトランジスタの状態を不変に保持しつつ、ハーフブリッジ回路HB[2]~HB[7]の各ハイサイドトランジスタをオンに設定することがMPU2にて決定された場合を考える。この場合、MPU2はレジスタREG[32]に“0x03”を記憶させるライト命令の送信を行ってから、レジスタREG[0]に“0xFC”を記憶させるライト命令の送信を行えば良い。
【0087】
また例えば、機能回路40が第1及び第2LEDに駆動電流を供給する構成(以下、構成EX3bと称する)を考える。構成EX3bに係る機能回路40は、レジスタREG[2]の上位側4ビットの値に応じて第1LEDの駆動電流の大きさを設定し、且つ、レジスタREG[2]の下位側4ビットの値に応じて第2LEDの駆動電流の大きさを設定するものとする。
【0088】
構成EX3bにおいて、第1LEDの駆動電流の大きさを不変に保持しつつ、第2LEDの駆動電流の大きさを所望値に設定することがMPU2にて決定されたとする。この場合、MPU2はレジスタREG[32]に“0xF0”を記憶させるライト命令の送信を行ってから、レジスタREG[2]をライト対象レジスタとするライト命令の送信を行えば良い。この際、レジスタREG[2]をライト対象レジスタとするライト命令において、ライトデータの下位側4ビットに上記の所望値に応じた値を設定すれば良く、ライトデータの上位側4ビットの値は任意で良い。
【0089】
この他、機能回路40の構成及び動作は半導体装置1の種類に応じて様々であって良い。
【0090】
<<第4実施例>>
通信システムSYSの第4実施例を説明する。各レジスタはビットごとに“0”又は“1”の値を記憶する回路(以下、ビット回路と称する)を備える。即ち、レジスタREG[0]~REG[32]は夫々に8つのビット回路を有する。
【0091】
図14に各通常レジスタ(即ちレジスタREG[0]~REG[31]の夫々)に設けられるビット回路100の構成を示す。
図14のビット回路100は、1つの通常レジスタにおけるビットb[j]の値を記憶するビット回路である。各通常レジスタにおいて8つのビット回路の構成は互いに同じである。ビット回路100は、AND回路101と、セレクタ102及び103と、フリップフロップ104(以下、FF104と称する)と、を備える。
【0092】
図15に示す如く、レジスタREG[32]におけるビットb[j]の値をマスク値MSK[j]と称する。
【0093】
1つのビットb[j]に対するビット回路100の構成を説明する。AND回路101は、ライトイネーブル値WENと、マスク値MSK[j]を反転させた値と、の論理積信号を出力する。従って、(WEN,MSK[j])=(1,0)である場合に限り、AND回路101の出力信号は“1”の値を有し、それ以外の場合においてAND回路101の出力信号は“0”の値を有する。アクセス回路20は、ライトアクセス(基本ライトアクセス又はマスクライトアクセス)の実行期間においてのみライトイネーブル値WENに“1”を設定し、それ以外の期間においてライトイネーブル値WENに“0”を設定する。
【0094】
セレクタ102は、FF104の出力信号値又はライト値WD[j]を、AND回路104の出力信号値に応じて選択的に出力する。AND回路101の出力信号値が“1”であるとき、セレクタ102はライト値WD[j]を選択及び出力し、AND回路101の出力信号値が“0”であるとき、セレクタ102はFF104の出力信号値を選択及び出力する。
【0095】
セレクタ103は、セレクタ102の出力信号値又は所定のデフォルト値VDFLTを、リセット信号RSTBの値に応じて選択的に出力する。リセット信号RSTBの値が“1”であるとき、セレクタ103はセレクタ102の出力信号値を選択及び出力し、リセット信号RSTBの値が“0”であるとき、セレクタ103はデフォルト値VDFLTを選択及び出力する。半導体装置1は特定の条件下においてのみリセット信号RSTBに“0”の値を設定する。例えば、MPU2からのリセット命令が通信回路10にて受信されたとき、リセット信号RSTBに“0”の値が設定される。半導体装置1の起動時においてリセット信号RSTBに“0”が設定されることがあっても良い。以下では、リセット信号RSTBの値は“1”に維持されるものとし、故に、セレクタ103の出力信号値はセレクタ102の出力信号値と一致するものとする。
【0096】
FF104は、クロック信号SCLに同期してセレクタ103の出力信号値を保持する。FF104は自身が保持する値を出力する。具体的には、FF104は、クロック信号SCLのアップエッジが生じたタイミングにおいてセレクタ103の出力信号値を取り込んで保持する。FF104の保持値はクロック信号SCLに次回のアップエッジが生じるまで不変に維持される。レジスタREG[i]のビットb[j]に対するビット回路100において、FF104の保持値がレジスタREG[i]のビットb[j]の記憶値に相当する。
【0097】
図10を再度参照し、レジスタREG[32]の記憶データが“0x0F”である状態でライト命令630が通信回路10にて受信されたケースEX4aを考える。当該ケースEX4aにおいて、ライト命令630のライト対象レジスタ(即ちREG[5])内のビット回路100の動作を説明する。
【0098】
レジスタREG[5]のビットb[4]の値を記憶するためのビット回路100を便宜上、ビット回路100[5,4]と称する。ビット回路100[5,4]において、ライト命令630に基づくマスクライトアクセス632の前は、FF104に“0”の値が保持される。即ち、マスクライトアクセス632の前において、レジスタREG[5]のビットb[4]の値は“0”である(
図10参照)。ライト命令630におけるライトデータは2進数表記で“00110000”であるので、ライト命令630におけるライト値WD[4]は“1”である。そして、マスクライトアクセス632が実行されるとき“MSK[4]=0”であるので(
図10参照)、ビット回路100[5,4]において、セレクタ102の出力信号値はライト値WD[4]となる。そうすると、ビット回路100[5,4]において、セレクタ102の出力信号値(即ちライト値WD[4])がクロック信号SCLのアップエッジに同期してFF104に取り込まれ且つ保持される。結果、マスクライトアクセス632の後、レジスタREG[5]のビットb[4]の値は“0”から“1”に変更される(
図10参照)。レジスタREG[5]のビットb[5]~b[7]についても同様である。
【0099】
レジスタREG[5]のビットb[3]の値を記憶するためのビット回路100を便宜上、ビット回路100[5,3]と称する。ビット回路100[5,3]において、ライト命令630に基づくマスクライトアクセス632の前は、FF104に“1”の値が保持される。即ち、マスクライトアクセス632の前において、レジスタREG[5]のビットb[3]の値は“1”である(
図10参照)。ライト命令630におけるライトデータは2進数表記で“00110000”であるので、ライト命令630におけるライト値WD[3]は“0”である。但し、マスクライトアクセス632が実行されるとき“MSK[3]=1”であるので(
図10参照)、ビット回路100[5,3]において、セレクタ102の出力信号値はFF104の出力信号値となる。そうすると、ビット回路100[5,3]において、セレクタ102の出力信号値(即ちFF104の出力信号値)がクロック信号SCLのアップエッジに同期してFF104に取り込まれ且つ保持される。結果、マスクライトアクセス632の前後において、レジスタREG[5]のビットb[3]の値は“1”のままで不変である(
図10参照)。レジスタREG[5]のビットb[0]~b[2]についても同様である。
【0100】
上述の構成からも理解されるよう、マスクライトアクセスでは、ライト対象レジスタに対するライトデータの書き込みをビットごとにマスクすることができる(ライト対象レジスタに対するライトデータの書き込みの実行又は非実行をビットごとに設定できる)。
【0101】
図14に示すビット回路100は通常レジスタにおけるビット回路であり、
図16にマスク用レジスタ(即ちレジスタREG[32])におけるビット回路110を示す。ビット回路100からAND回路101を削除する変形が施されることでビット回路110が得られる。但し、AND回路101の削除の伴い、ビット回路110のセレクタ102は、FF104の出力信号値又はライト値WD[j]を、ライトイネーブル値W
ENに応じて選択的に出力する。即ち、ビット回路110において、“W
EN=1”であるとき、セレクタ102はライト値WD[j]を選択及び出力し、“W
EN=0”であるとき、セレクタ102はFF104の出力信号値を選択及び出力する。マスク用レジスタにおけるビット回路110にはAND回路101が設けられないので、マスク用レジスタをライト対象レジスタとするライトアクセスは常に基本ライトアクセスとなる。
【0102】
<<第5実施例>>
通信システムSYSの第5実施例を説明する。
【0103】
上述のレジスタREG[i]は単位記憶容量を有する記憶回路の例である。本開示において、記憶回路がレジスタであることは必須ではなく、記憶回路はデータの書き換えが可能な任意の種類のメモリであって良い。
【0104】
単位記憶容量はnビット分の記憶容量である。“n=8”である例を上述したが、単位記憶容量の大きさは任意であり、例えば“n=16”又は“n=32”であっても良い。
【0105】
半導体装置1及びMPU2間のシリアル通信のインターフェースとしてI2Cを用いるときの構成及び動作を上述したが、当該インターフェースはI2Cに限定されない。例えば、半導体装置1及びMPU2間のシリアル通信のインターフェースとして、SPI(Serial Peripheral Interface)、又は、Microwireによるインターフェースを用いても良い。
【0106】
本開示の実施形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。以上の実施形態は、あくまでも、本開示の実施形態の例であって、本開示ないし各構成要件の用語の意義は、以上の実施形態に記載されたものに制限されるものではない。上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
【0107】
<<付記>>
上述の実施形態にて具体的構成例が示された本開示について付記を設ける。
【0108】
本開示の一側面に係る半導体装置(1)は、複数ビットを有する記憶回路(REG[i])を複数備えるとともに、相手側装置(2)とシリアル通信を行うよう構成された通信回路(10)と、前記シリアル通信にて前記相手側装置から受信した命令に基づき何れかの記憶回路にアクセスするよう構成されたアクセス回路(20)と、を備え、複数の記憶回路(REG[0]~REG[32])はマスク用記憶回路(REG[32])を含み、前記アクセス回路は、前記相手側装置からライト命令を受信したとき、前記複数の記憶回路の内、前記ライト命令にて指定された対象記憶回路(ライト対象レジスタ)に対し、前記マスク用記憶回路の記憶データに応じて第1ライトアクセス(基本ライトアクセス)又は第2ライトアクセス(マスクライトアクセス)を行い、前記アクセス回路は、前記第1ライトアクセスにおいて、前記ライト命令にて指定されるデータであって且つ前記複数ビット分のライトデータを前記対象記憶回路に書き込み、前記アクセス回路は、前記第2ライトアクセスでは、前記マスク用記憶回路の記憶データに応じて、前記ライトデータの一部の前記対象記憶回路への書き込みをマスクする構成(第1の構成)である。
【0109】
これにより、リード命令の送受信、及び、リード命令の結果に基づきライトデータを導出するための演算を要することなく、記憶容量における一部のビットの値のみを変更することが可能となる。即ち、記憶回路の一部ビットへのデータ書き込みを簡素な動作で実現することができる。
【0110】
上記第1の構成に係る半導体装置において、前記マスク用記憶回路における各ビットは第1の値(0)又は第2の値(1)を有し、前記アクセス回路は、前記相手側装置から前記ライト命令を受信した場合において、前記マスク用記憶回路における全ビットが前記第1の値を有するときには前記第1ライトアクセスを行い、前記マスク用記憶回路における全ビットに前記第1の値及び前記第2の値が混在するときには前記第2ライトアクセスを行う構成(第2の構成)であっても良い。
【0111】
尚、第1の値は上述の実施形態において“0”の値に対応し、第2の値は上述の実施形態において“1”の値に対応する。しかしながら、第1の値及び第2の値の内、何れを“0”又は“1”に対応付けるかは任意である。
【0112】
上記第2の構成に係る半導体装置において、前記複数の記憶回路は夫々に第1~第nビットを有し、前記アクセス回路は、前記第2ライトアクセスにおいて、前記マスク用記憶回路における第jビットが前記第1の値を有しているときには、前記ライトデータにおける第jビットの値を前記対象記憶回路の第jビットに書き込み、前記マスク用記憶回路における第jビットが前記第2の値を有しているときには、前記ライトデータにおける第jビットの値の、前記対象記憶回路の第jビットへの書き込みをマスクし、nは2以上の整数を表し、jはn以下の自然数を表す構成(第3の構成)であっても良い。
【0113】
上記第2又は第3の構成に係る半導体装置において、前記アクセス回路は、前記マスク用記憶回路を前記対象記憶回路に指定した第1ライト命令(620)を前記相手側装置から受信したとき、前記マスク用記憶回路の記憶データに依らず、前記対象記憶回路としての前記マスク用記憶回路に対し前記第1ライトアクセス(622)を行い、前記第1ライト命令にて指定される前記ライトデータの何れか1以上のビットは前記第2の値を有し、前記アクセス回路は、前記第1ライト命令の受信後、前記マスク用記憶回路以外の記憶回路を前記対象記憶回路に指定した第2ライト命令(630)を前記相手側装置から受信したとき、前記第2ライト命令にて指定された前記対象記憶回路に対し、前記マスク用記憶回路の記憶データに応じて前記第2ライトアクセス(632)を行う構成(第4の構成)であっても良い。
【0114】
上記第2又は第3の構成に係る半導体装置において、前記アクセス回路は、前記マスク用記憶回路を前記対象記憶回路に指定した第1ライト命令(620)を前記相手側装置から受信したとき、前記マスク用記憶回路の記憶データに依らず、前記対象記憶回路としての前記マスク用記憶回路に対し前記第1ライトアクセス(622)を行い、前記第1ライト命令にて指定される前記ライトデータの何れか1以上のビットは前記第2の値を有し、前記複数の記憶回路は、前記マスク用記憶回路とは異なる第1記憶回路(REG[5])及び第2記憶回路(REG[6])を含み、前記アクセス回路は、前記第1ライト命令の受信後、前記第1記憶回路を前記対象記憶回路に指定した第2ライト命令(630)を前記相手側装置から受信したとき、前記第1記憶回路に対し前記マスク用記憶回路の記憶データに応じて前記第2ライトアクセス(632)を行い、更にその後、前記第2記憶回路を前記対象記憶回路に指定した第3ライト命令(640)を前記相手側装置から受信したとき、前記第2記憶回路に対し前記マスク用記憶回路の記憶データに応じて前記第2ライトアクセス(642)を行う構成(第5の構成)であっても良い。
【0115】
上記第2又は第3の構成に係る半導体装置において、前記アクセス回路は、前記マスク用記憶回路を前記対象記憶回路に指定した第1ライト命令(620)を前記相手側装置から受信したとき、前記マスク用記憶回路の記憶データに依らず、前記対象記憶回路としての前記マスク用記憶回路に対し前記第1ライトアクセス(622)を行い、前記第1ライト命令にて指定される前記ライトデータの何れか1以上のビットは前記第2の値を有し、前記複数の記憶回路は、前記マスク用記憶回路とは異なる2以上の記憶回路を含み、前記アクセス回路は、前記第1ライト命令の受信後、前記2以上の記憶回路の夫々を前記対象記憶回路に指定した第2ライト命令(連続ライト命令)を前記相手側装置から受信したとき、前記2以上の記憶回路に対し前記マスク用記憶回路の記憶データに応じて前記第2ライトアクセスを行う構成(第6の構成)であっても良い。
【符号の説明】
【0116】
SYS 通信システム
1 半導体装置
2 MPU
10 通信回路
20 アクセス回路
30 レジスタブロック
40 機能回路
SCL クロック信号
SDA データ信号
WRSCL クロック配線
WRSDA データ配線
REG[0]~REG[32] レジスタ
W_U1~W_U3、R_U1~R_U4 単位信号
a[0]~a[7]、b[0]~b[7]、c[0]~c[7] ビット
WD[0]~WD[7] ライト値
610、620、630、640 ライト命令
612、622 基本ライトアクセス
632、642 マスクライトアクセス
100、110 ビット回路
101 AND回路
102、103 セレクタ
104 FF
MSK[0]~MSK[7] マスク値
WEN ライトイネーブル値
VDFLT デフォルト値
RSTB リセット信号