(57)【特許請求の範囲】
【請求項１】
所定の動作用クロックに従って動作する半導体装置であって、
上記動作用クロックに基づく単位転送時間に従って外部との間で順序的な通信を行うシリアルコミュニケーションインタフェースを含み、
上記シリアルコミュニケーションインタフェースは、
上記動作用クロックをカウントし、そのカウント結果に基づいて、上記単位転送時間を規定するための基本クロックを生成するボーレートジェネレータと、
上記ボーレートジェネレータによって生成された基本クロックに従って送受信制御を行うための送受信コントローラと、
予め設定された情報に従って、上記動作用クロックの上記ボーレートジェネレータへの供給を部分的にマスクすることで所望のビットレートを実現可能なビットレートモジュレータと、を含み、
上記ビットレートモジュレータは、上記動作用クロックをカウントする第１カウンタと、
上記第１カウンタの出力ビットに対する重みを反転するための重み反転回路と、
上記基本クロックのデューティを決定するための情報を設定可能な第１レジスタと、
上記重み反転回路の出力と上記レジスタの出力とを比較する第１比較器と、
上記比較器の比較結果と上記動作用クロックとの論理演算を行うことで、上記動作用クロックの上記ボーレートジェネレータへの供給を部分的にマスクするための論理ゲートと、を含むことを特徴とする半導体装置。
【請求項２】
上記重み反転回路は、上記第１カウンタの出力ビットの配列の並びを変更することで、上記第１カウンタの出力ビットに対する重みを反転する請求項１記載の半導体装置。
【請求項３】
上記ボーレートジェネレータは、上記論理ゲートの出力をカウントする第２カウンタと、
ビットレートを設定するための第２レジスタと、
上記第２カウンタの出力と上記台２レジスタの出力とを比較することで上記基本クロックを形成する第２比較器と、を含んで成る請求項１記載の半導体装置。
【請求項４】
上記単位転送時間は、上記第２カウンタでの複数のカウント単位で構成され、
上記送受信コントローラは、外部から上記シリアルコミュニケーションインタフェースに取り込まれたスタートビットを検出して上記カウント単位を同期化する機能を含み、
上記同期化後の上記第２カウンタによる所定のカウント結果に基づいて、上記シリアルコミュニケーションインタフェースへの入力がサンプリングされる請求項３記載の半導体装置。
【請求項５】
上記シリアルコミュニケーションインタフェースの動作を制御するＣＰＵを含んでマイクロコンピュータとして形成された請求項４記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、さらにはそれにおけるシリアル通信技術に関し、例えばマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
半導体装置の一例とされるマイクロコンピュータ（データ処理装置あるいはマイクロプロセッサとも称される）は、機器制御用途に広く用いられている。マイクロコンピュータには、シリアルデータ通信を行うためのシリアルコミュニケーションインタフェース（ＳＣＩ：Serial Communication Interface）が内蔵される。ＳＣＩでは、データを１ビットずつ送信または受信する。１ビットを送受信する速度をビットレートと呼ぶ。ＳＣＩには、送信側と受信側で、予めビットレートを決めておく調歩同期式モードがある。送信側と受信側のビットレートの相違あるいは誤差は小さくなければならない。また、ビットレートには、一般的に使用される特定の速度がある。例えば、４６０．４ｋｂｐｓなどである。
【０００３】
マイクロコンピュータの内部では、マイクロコンピュータないしＳＣＩの動作用クロックを基本として、１ビット期間を計測する。マイクロコンピュータの動作用クロックも、一般的に使用される特定の周波数がある。例えば１０．６６７ＭＨｚなどである。
【０００４】
調歩同期式の場合、通信状態をデータのみで検出する必要があるため、ビットレートの８倍あるいは１６倍の基本クロックが用いられる。基本クロックは、マイクロコンピュータやＳＣＩの動作用クロックに基づいて形成される。この基本クロックを基準に、スタートの検出を行い、予め決めたビットレートに従い、後続のデータを、当該ビットの中央でサンプリングするようにする。上記の１ビット期間の計測は、この基本クロックを計測し、さらにこれを８個あるいは１６個計測することになる。
【０００５】
シリアルデータ通信技術について記載された文献の例として、特許文献１，２を挙げることができる。
【０００６】
特許文献１には、データ転送速度が大きく変化した場合でも、データの取りこぼしをなくすための技術が記載されている。
【０００７】
特許文献２には、入力クロックとして目的とするシリアル転送速度のＮ倍（Ｎは自然数）の周波数が供給できない場合においても、該転送速度におけるデータを受信可能にする受信シリアルクロック発生回路を実現するための技術が記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−１６８８５３号公報
【特許文献２】特開平１１−１４９３２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、マイクロコンピュータに内蔵されたＳＣＩにおいて、動作用クロックとビットレートが独立に与えられるが、送信側と受信側とでビットレートの誤差を実用可能な程度に抑えることができない場合がある。例えば、マイクロコンピュータの動作用クロックが１０．６６７ＭＨｚ、ビットレートが４６０．４ｋｂｐｓで、当該マイクロコンピュータに内蔵されるＳＣＩにおける基本クロックをビットレートの８倍とする場合、動作用クロックを２個カウントして、基本クロックを生成すると、ビットレートは６６６．７ｋｂｐｓとなってしまう。これに対して、上記の２個のカウントを１個のカウントに変更すれば、ビットレートは１３３３．３ｋｂｐｓとなり、３個のカウントに変更すればビットレートは３５５．６ｋｂｐｓとなり、実現できるビットレートがとびとびになる。これでは、所要のビットレートを実現できない。逆に、ビットレートに対して、マイクロコンピュータの動作用クロックの周波数が十分に高いと、基本クロックを計測するカウント値が十分大きくなり、より細かい調整を行うことができる。しかしこの場合は、通信速度が遅くなってしまう。
【００１０】
そこで本願発明者は、受信側の基本クロックを所定の割合で間引くようにし、所要のビットレートに、平均的に近づける方式について検討した。それによれば、基本クロックを間引くと、送信の場合の１ビット期間や、受信の場合のスタートの検出や、データのサンプリングなど、送受信のタイミングがずれることが見いだされた。また、その場合、設計時に決めた、特定の動作用クロックとビットレートの組合せには対応可能であるが、それ以外の任意の組合せに対応させるのは困難である。
【００１１】
このような課題について、上記特許文献１，２では考慮されていない。
【００１２】
尚、基本クロックは外部から取り込むこともできる。その場合には、任意のビットレートを動作用クロックと独立に制御することができる。しかしその場合には、外部クロックとして入力する信号を生成するための別のリソースが必要になってしまう。また、マイクロコンピュータの基板上の配線を増やすことになる。特に、送受信の相手は、同一基板上に存在しない場合には、配線を増やすことが困難であるため、送受信の相手から基本クロックを供給してもらえるとは限らない。
【００１３】
本発明の目的は、受信側の動作用クロックに基づいて基本クロックを生成する場合において、上記動作用クロックの周波数にかかわらず、所要のビットレートに近いビットレートでシリアル通信するための技術を提供することにある。
【００１４】
本発明の上記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１６】
すなわち、半導体装置には、所定の動作用クロックに従って動作し、上記動作用クロックに基づく単位転送時間に従って外部との間で順序的な通信を行うシリアルコミュニケーションインタフェースが設けられる。上記シリアルコミュニケーションインタフェースは、上記動作用クロックをカウントし、そのカウント結果に基づいて、上記単位転送時間を規定するための基本クロックを生成するボーレートジェネレータと、上記ボーレートジェネレータによって生成された基本クロックに従って送受信制御を行うための送受信コントローラとを含む。さらに上記シリアルコミュニケーションインタフェースは、予め設定された情報に従って、上記動作用クロックの上記ボーレートジェネレータへの供給を部分的にマスクすることで所望のビットレートを実現可能なビットレートモジュレータを含む。
【００１７】
上記ビットレートモジュレータ２０３は、予め設定された情報に従って、上記動作用クロックの上記ボーレートジェネレータへの供給を部分的にマスクすることで所望のビットレートを実現する。このことが、上記動作クロックの周波数にかかわらず、所要のビットレートに近いビットレートでのシリアル通信を実現する。
【発明の効果】
【００１８】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１９】
すなわち、送信側の動作用クロックに基づいて基本クロックを生成する場合において、上記動作用クロックの周波数にかかわらず、所要のビットレートに近いビットレートでシリアル通信するための技術を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明にかかる半導体装置の一例とされるマイクロコンピュータの構成例ブロック図である。
【図２】上記マイクロコンピュータに含まれるＳＣＩの構成例ブロック図である。
【図３】上記ＳＣＩに含まれるボーレートジェネレータ及びビットレートモジュレータの構成例ブロック図である。
【図４】上記ビットレートモジュレータにおけるイネーブル信号出力態様の説明図である。
【図５】上記ＳＣＩにおける基本クロック生成のタイミング図である。
【図６】上記ＳＣＩにおけるビットレートの誤差についての説明図である。
【図７】調歩同期式モードの受信データサンプリングのタイミング図である。
【図８】上記マイクロコンピュータの適用例を示すブロック図である。
【発明を実施するための形態】
【００２１】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２２】
〔１〕本発明の代表的な実施の形態に係る半導体装置（１００）は、所定の動作用クロックに従って動作し、上記動作用クロックに基づく単位転送時間に従って外部との間で順序的な通信を行うシリアルコミュニケーションインタフェース（１０９）を含む。上記シリアルコミュニケーションインタフェースは、上記動作用クロックをカウントし、そのカウント結果に基づいて、上記単位転送時間を規定するための基本クロック（ＢＣＫ）を生成するボーレートジェネレータ（２０２）と、上記ボーレートジェネレータによって生成された基本クロックに従って送受信制御を行うための送受信コントローラ（２０１）とを含む。さらに上記シリアルコミュニケーションインタフェースは、予め設定された情報に従って、上記動作用クロックの上記ボーレートジェネレータへの供給を部分的にマスクすることで所望のビットレートを実現可能なビットレートモジュレータ（２０３）を含む。上記動作クロックとして、内部クロック（ＩＣＫ）を用いることができる。
【００２３】
〔２〕上記〔１〕において、上記ビットレートモジュレータ（２０３）には、上記動作用クロックをカウントする第１カウンタ（ＭＣＮＴ）と、上記第１カウンタの出力ビットに対する重みを反転するための重み反転回路（３０３）と、上記基本クロックのデューティを決定するための情報を設定可能な第１レジスタ（ＢＭＲ）とを含めることができる。さらに上記ビットレートモジュレータ（２０３）には、上記重み反転回路の出力と上記レジスタの出力とを比較する第１比較器（３０４）と、上記比較器の比較結果と上記動作用クロックとの論理演算を行うことで、上記動作用クロックの上記ボーレートジェネレータへの供給を部分的にマスクするための論理ゲート（３０２）とを含めることができる。
【００２４】
〔３〕上記〔２〕において、上記重み反転回路は、上記第１カウンタの出力ビットの配列の並びを変更することで、上記第１カウンタの出力ビットに対する重みを反転するように構成することができる。
【００２５】
〔４〕上記〔２〕において、上記ボーレートジェネレータは、上記論理ゲートの出力をカウントする第２カウンタ（ＢＣＮＴ）と、ビットレートを設定するための第２レジスタ（ＢＲＲ）と、上記第２カウンタの出力と上記第２レジスタの出力とを比較することで上記基本クロックを形成する第２比較器（３０１）とを含んで構成することができる。
【００２６】
〔５〕上記〔４〕において、上記単位転送時間は、上記第２カウンタ（ＢＣＮＴ）での複数のカウント単位で構成され、上記送受信コントローラ（２０１）は、外部から上記シリアルコミュニケーションインタフェースに取り込まれたスタートビットを検出して上記カウント単位を同期化する機能を含み、上記同期化後の上記第２カウンタによる所定のカウント結果に基づいて、上記シリアルコミュニケーションインタフェースへの入力がサンプリングされるように構成することができる。
【００２７】
〔６〕上記〔５〕において、上記半導体装置は、上記シリアルコミュニケーションインタフェースの動作を制御するＣＰＵを含んでマイクロコンピュータとして形成することができる。
【００２８】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２９】
＜実施の形態１＞
図１には、本発明にかかる半導体装置の一例とされるマイクロコンピュータが示される。図１に示されるマイクロコンピュータ１００は、公知の半導体集積回路製造技術に従って、単結晶シリコン基板などの一つの半導体基板に形成される。このマイクロコンピュータ１００は、クロック発生回路（ＣＰＧ）１０１、ＣＰＵ（Central Processing Unit）１０２、割り込み制御回路（ＩＮＴ）１０４、タイマ（ＴＩＭ）１０５、ＲＯＭ（Read Only Memory）１０６、ＲＡＭ（Random Access Memory）１０７、Ａ／Ｄ変換器１０８、ＳＣＩ１０９、及び入出力ポートＩＯＰ０〜ＩＯＰ６を含む。
【００３０】
上記ＲＡＭ１０７は、上記ＣＰＵ１０２による上記動作プログラムの実行で処理されるデータを保存し、また、上記ＣＰＵ１０２の演算過程での一時的な記憶領域すなわち作業領域ともなる。上記クロック発生回路１０１は、クロックを外部から入力したり、水晶発振子等を接続するための外部端子（ＥＸＴＡＬ，ＸＴＡＬ）に結合され、特定の周波数の内部クロックＩＣＫを生成する。生成された内部クロックＩＣＫはマイクロコンピュータ１００の動作用クロックとしてクロックラインを介して各部に供給される。ＣＰＵ１０２は、ＲＯＭ１０６に格納されたプログラム等に基づいてマイクロコンピュータ１００の制御を行う。ＲＯＭ１０６は、上記ＣＰＵ１０２の動作プログラムや当該プログラムに必要な固定データを格納する。上記タイマ１０５は、設定された時間をカウントし、設定時間に達するとフラグのセットや割り込み要求を発生させる。Ａ／Ｄ変換器１０８は、入力されたアナログ信号をデジタル信号に変換する。上記ＳＣＩ１０９は、外部装置との間でシリアル通信を行う。割り込み制御回路１０４は、上記Ａ／Ｄ変換器１０８、上記タイマ１０５、上記ＳＣＩ１０９から上記ＣＰＵ１０２に対する割り込み要求が生じた場合、所定の優先順位に従って当該割り込み要求を処理する。上記入出力ポートＩＯＰ１〜ＩＯＰ６は、外部との間で各種信号の入出力を行う。
【００３１】
上記ＣＰＵ１０２、上記割り込み制御回路１０４、上記ＲＯＭ１０６、上記ＲＡＭ１０７、上記Ａ／Ｄ変換器１０８、上記タイマ１０５、上記ＳＣＩ１０９、上記入出力ポートＩＯＰ１〜ＩＯＰ６は、それぞれ内部バス１０３を介して接続される。また、上記ＳＣＩ１０９は、上記入出力ポートＩＯＰ４に結合され、上記入出力ポートＩＯＰ４を介して外部装置との間でシリアル通信を行う。このシリアル通信における送信データはＴｘＤとされ、受信データはＲｘＤとされる。
【００３２】
図２には、上記ＳＣＩ１０９の構成例が示される。
【００３３】
上記ＳＣＩ１０９は、受信データレジスタＲＤＲ、受信シフトレジスタＲＳＲ、送信データレジスタＴＤＲ、送信シフトレジスタＴＳＲ、送受信コントローラ２０１、ボーレートジェネレータ２０２、及びビットレートモジュレータ２０３を含む。
【００３４】
受信シフトレジスタＲＳＲには、入力データＲｘＤが１ビットずつ格納される。所定のデータ（例えば８ビット分のデータ）の受信が完了すると、その内容が受信データレジスタＲＤＲに転送される。受信データレジスタＲＤＲの内容は、内部バス１０３を介して、ＣＰＵ１０２によって読み出すことができる。
【００３５】
ＣＰＵ１０２は、内部バス１０３を介して送信データレジスタＴＤＲに送信データの書き込みを行うことができる。送信が開始されると、送信データレジスタＴＤＲの内容は、送信シフトレジスタＴＳＲに転送される。この送信シフトレジスタＴＳＲは、１ビットずつデータを出力する。これが出力データＴｘＤとされる。
【００３６】
送受信コントローラ２０１は、送受信のモードやフォーマットの指定を行うとともに、そのステータスを表示する。このため、モード指定のためのモードレジスタＳＭＲや拡張モードレジスタＳＥＭＲ、フォーマット指定のためのコントロールレジスタＳＣＲ、及びステータスビットが保持されるステータスレジスタＳＳＲが設けられる。また、この送受信コントローラ２０１は、パリティチェックのために、受信データに含まれるパリティビットを取り込んだり、送信データにパリティビットを付加したりする。尚、割り込み要求のための割り込み信号（ＴＥＩ，ＴＸＩ，ＲＸＩ，ＥＲＩ）は、上記送受信コントローラ２０１で生成される。
【００３７】
ビットレートモジュレータ２０３は、ビットレートモジュレーションレジスタＢＭＲ、ビットレートモジュレーションカウンタＭＣＮＴを含み、上記ビットレートモジュレーションレジスタＢＭＲの設定情報に基づいて、内部クロックＩＣＫの上記ボーレートジェネレータ２０２への供給を部分的にマスクすることによって所望のビットレートを実現する。上記内部クロックＩＣＫの部分的にマスクは、ＳＣＩ１０９における単位転送時間が複数のカウント単位にわたって平均化されるように行われる。
【００３８】
ボーレートジェネレータ２０２は、ビットレートレジスタＢＲＲ、ビットレートカウンタＢＣＮＴを含み、単位転送時間を規定するための基本クロックＢＣＫを生成する。基本クロックＢＣＫは、上記ビットレートモジュレータ２０３から伝達された内部クロックＩＣＫをカウントし、そのカウント結果に基づいて生成される。尚、ボーレートジェネレータ２０２は、設定により、外部クロックＳＣＫを用いて基本クロックＢＣＫを生成することもできる。
【００３９】
図３には、上記ボーレートジェネレータ２０２及び上記ビットレートモジュレータ２０３の構成例が示される。
【００４０】
上記ビットレートモジュレータ２０３は、アンドゲート３０２、ビットレートモジュレーションカウンタＭＣＮＴ、重み反転回路３０３、比較器３０４、ビットレートモジュレーションレジスタＢＭＲを含んで成る。上記ビットレートモジュレーションカウンタＭＣＮＴは、例えば８ビット構成とされ、内部クロックＩＣＫを０〜２５５までカウントする。上記ビットレートモジュレーションカウンタＭＣＮＴの出力は、重み反転回路３０３で重みが反転されてから比較器３０４に伝達される。上記重み反転回路３０３による重み反転は、上記ビットレートモジュレーションカウンタＭＣＮＴの出力のビット配列の並び替えによって実現される。例えば上記ビットレートモジュレーションカウンタＭＣＮＴの出力のビット配列を、ＭＣＮＴ[7],...,ＭＣＮＴ[1],ＭＣＮＴ[0]とすると、上記重み反転回路３０３によって、ＭＣＮＴ[0],ＭＣＮＴ[1],...,ＭＣＮＴ[7]のようにビット配列が並び替えられる。上記ビットレートモジュレーションレジスタＢＭＲには、イネーブル信号ＥＮのデューティ（パルス幅をパルス周期で割ったもの）が設定される。上記比較器３０４は、上記重み反転回路３０３の出力と、上記ビットレートモジュレーションレジスタＢＭＲの出力とを比較することで、イネーブル信号ＥＮを形成する。つまり、ビットレートモジュレーションカウンタＭＣＮＴの出力の１周期の間（２５６単位）であって、ビットレートモジュレーションレジスタＢＭＲの出力によって特定される期間にイネーブル信号ＥＮが例えばハイレベルにアサートされる。このため、ＢＭＲ≧{ＭＣＮＴ[0],ＭＣＮＴ[1],...,ＭＣＮＴ[7]}が成立するとき、イネーブル信号ＥＮがアサートされる。上記重み反転回路３０３により上記ビットレートモジュレーションカウンタＭＣＮＴのビットの重みを反転するのは、イネーブル信号ＥＮのアサートタイミングを上記ビットレートモジュレーションカウンタＭＣＮＴのカウント周期において偏らないように平滑化するためである。上記イネーブル信号ＥＮは、上記アンドゲート３０２における一方の入力端子に伝達される。上記アンドゲート３０２における他方の入力端子には、内部クロックＩＣＫが伝達される。これにより、内部クロックＩＣＫは、上記イネーブル信号ＥＮのハイレベルの期間に、上記アンドゲート３０２を介して上記ボーレートジェネレータ２０２に伝達され、上記イネーブル信号ＥＮのローレベルの期間は上記ボーレートジェネレータ２０２に伝達されない。
【００４１】
上記ボーレートジェネレータ２０２は、ビットレートレジスタＢＲＲ、比較器３０１、ビットレートカウンタＢＣＮＴを含んで成る。上記ビットレートカウンタＢＣＮＴは、ビットレートモジュレータ２０３におけるアンドゲート３０２を介して伝達される内部クロックＩＣＫをカウントする。上記ビットレートカウンタＢＣＮＴの出力は、比較器３０１によって、常にビットレートレジスタＢＲＲの出力と比較される。この比較器３０１の出力が、基本クロックＢＣＫとされる。上記比較器３０１での比較において、両者が一致すると、上記ビットレートカウンタＢＣＮＴが「０」にクリアされる。これによって、周期的なカウントが行われ、上記基本クロックＢＣＫが生成される。
【００４２】
図４には、上記イネーブル信号ＥＮの出力態様が示される。
【００４３】
上記の通り、ＢＭＲ≧{ＭＣＮＴ[0],ＭＣＮＴ[1],...,ＭＣＮＴ[7]}が成立するとき、比較器３０４によって、イネーブル信号ＥＮがアサートされる。図４では、横軸にＭＣＮＴカウント値、縦軸にＢＭＲのカウント値を示す。図４における○印の箇所で、イネーブル信号ＥＮがアサートされる。例えば、ＢＭＲ＝２に設定すると、ＭＣＮＴ＝１２７、１９５、２５５のときに、イネーブル信号ＥＮがアサートされる。また、ＢＭＲ＝６３に設定すると、ＭＣＮＴが４の倍数＋３のときに、イネーブル信号ＥＮがアサートされる。ＢＭＲ＝１２７に設定すると、ＭＣＮＴが偶数のときに、イネーブル信号ＥＮがアサートされる。図３に示される構成では、上記重み反転回路３０３により上記ビットレートモジュレーションカウンタＭＣＮＴのビットの重みが反転されることによって、○印の箇所が横軸方向で局在化せずに均一に配置される。換言すれば、イネーブル信号ＥＮの活性状態は、周期内での偏りが小さくなるように分配されるように平滑化される。
【００４４】
図５には、上記基本クロックＢＣＫの生成タイミングが示される。
【００４５】
尚、ここでは、動作クロックに比較してビットレートが最も高い、ＢＲＲ＝０の場合が示される。この場合は、ビットレートカウンタＢＣＮＴのカウントアップ毎に、基本クロックＢＣＫがトグルされる。
【００４６】
イネーブル信号ＥＮによって、ビットレートカウンタＢＣＮＴのカウントアップが抑止される。図５（Ａ）は、ＢＭＲ＝１７０（約６７％）にした場合で、平均して、元のカウントアップクロック（選択した内部クロックＩＣＫ）７回のうち４回で、ビットレートカウンタＢＣＮＴに入力されるカウントアップクロックが得られる。イネーブル信号ＥＮがローレベルにネゲートされている場合、ビットレートカウンタＢＣＮＴへのカウントアップクロックはマスクされるため、ビットレートカウンタＢＣＮＴはカウントアップされない。
【００４７】
図５（Ｂ）は、ＢＭＲ＝１９５（７５％）にした場合で、平均して、元のカウントアップクロック（選択した内部クロックＩＣＫ）の７回のうち５回で、ＢＣＮＴのカウントアップクロックが得られる。図５（Ａ）に示される場合と同様に、イネーブル信号ＥＮがローレベルにネゲートされている場合、ビットレートカウンタＢＣＮＴへのカウントアップクロックはマスクされるため、ビットレートカウンタＢＣＮＴはカウントアップされない。
【００４８】
このようにして生成された基本クロックＢＣＫは、元のカウントアップクロック（内部クロックＩＣＫ）に対して、最大１周期分の誤差に抑えられている。
【００４９】
図６には、上記マイクロコンピュータ１００の内部クロックＩＣＫに対して所要のビットレートが高い場合において、ビットレートモジュレータ２０３を使用しない場合と使用する場合のビットレート誤差が示される。尚、ビットレートモジュレータ２０３を使用しない場合には、ビットレートカウンタＢＣＮＴに内部クロックＩＣＫがカウントアップクロックとしてそのまま入力されるものとする。
【００５０】
ビットレートモジュレータ２０３を使用しない場合のビットレート誤差は次式によって示される。
【００５１】
誤差＝((φ×106)/(B×64×22n-1×(BRR+1))-1)×100
ビットレートモジュレータ２０３を使用した場合のビットレート誤差は次式によって示される。
【００５２】
誤差＝((φ×106)/(B×64×22n-1×((BMR+1)/256)×(BRR+1))-1)×100
上式において、「φ×106」は内部クロックＩＣＫの周波数、「B」は期待のビットレート、「BMR」はビットレートモジュレーションレジスタの出力値、BRRはビットレートレジスタＢＲＲの出力値である。
【００５３】
ビットレートモジュレータ２０３を使用しない場合、ビットレート誤差は最大５０％になる。ビットレートモジュレータ２０３を使用すると、ビットレートモジュレーションカウンタＭＣＮＴとビットレートモジュレーションレジスタＢＭＲが８ビットの場合に、２５６の分解能で補正するため、ビットレート誤差は約０．２％程度にできる。
【００５４】
図７には、上記ＳＣＩ１０９の動作タイミングが示される。
【００５５】
調歩同期式モードでは、ビットレートの８ないし１６倍の周波数の基本クロックＢＣＫで動作する。本図では、ビットレートの１６倍の周波数の基本クロックＢＣＫが用いられている。ここでクロック１６個分の時間が単位転送時間とされ、そのうちのクロック１個分がカウント単位とされる。
【００５６】
受信時はスタートビットの立ち下がりを基本クロックＢＣＫでサンプリングしてＳＣＩ１０９の内部が同期化される。また、受信データを基本クロックＢＣＫの８ヶ目の立ち上がりエッジでサンプリングすることで、各ビットの中央でデータが取り込まれる。尚、図７では、同期化サンプリングタイミングが基本クロックＢＣＫの立ち下がりエッジ、データサンプリングタイミングが基本クロックＢＣＫの立ち上がりエッジとして表現されている。
【００５７】
基本クロックＢＣＫの誤差は、元のカウントアップクロックの最大１周期分であり、かつ、誤差を平滑化しているので、１ビット毎の時間のばらつきも同様に抑えることができ、平均的に所望の転送レートを得ることができる。送受信のデータは、当該ビットの中央となるタイミングでサンプリングするようにするので、１ビット毎の時間にばらつきが生じても、サンプリングタイミングに対して、データが遅れたり、早くなったりしなければよい。
【００５８】
上記のように基本クロックＢＣＫの生成タイミングが調整されることにより、サンプリングタイミングのばらつきも小さくできる。これによりＳＣＩ１０９では、柔軟で精度の高い送受信を行うことができる。
【００５９】
図８には、上記マイクロコンピュータ１００が適用された通信システムが示される。
【００６０】
マイクロコンピュータ１００が、モータ制御用ＬＳＩ８０１を制御する。モータ制御用ＬＳＩ８０１は、モータ８０２の駆動制御を行う。上記マイクロコンピュータ１００におけるＳＣＩ１０９を介して、モータ制御用ＬＳＩ８０１の状態を確認したり、モータ制御用ＬＳＩ８０１に対して制御用コマンドを与えたりすることができる。
【００６１】
上記ＳＣＩ１０９によれば、基本クロックＢＣＫの生成タイミングが調整されることにより、柔軟で精度の高い送受信を行うことができるので、無駄なエネルギー消費を控えることができる。モータ制御用ＬＳＩの動作周波数が高い場合には、マイクロコンピュータの動作周波数が比較的低くても、誤差が少なく、品質の高い通信を行うことができる。
【００６２】
実施の形態１によれば以下の作用効果が得られる。
【００６３】
（１）マイクロコンピュータ１００は、所定の動作用クロックに従って動作し、上記動作用クロックに基づく単位転送時間に従って外部との間で順序的な通信を行うシリアルコミュニケーションインタフェース１０９を含んでおり、このシリアルコミュニケーションインタフェースは、ボーレートジェネレータ２０２と、送受信コントローラ２０１と、ビットレートモジュレータ２０３とを含んで構成される。上記ビットレートモジュレータ２０３は、予め設定された情報に従って、上記動作用クロックの上記ボーレートジェネレータへの供給を部分的にマスクすることで所望のビットレートを実現する。図６を参照しながら説明したように、ビットレートモジュレータ２０３を使用しない場合、ビットレート誤差は最大５０％になる。ビットレートモジュレータ２０３を使用すると、ビットレートモジュレーションカウンタＭＣＮＴとビットレートモジュレーションレジスタＢＭＲが８ビットの場合に、２５６の分解能で補正するため、ビットレート誤差は約０．２％程度にできる。このように上記ビットレートモジュレータ２０３を用いることでビットレート誤差を大幅に低減することができるので、上記内部クロックＩＣＫの周波数にかかわらず、所要のビットレートに近いビットレートでシリアル通信を行うことができる。
【００６４】
（２）上記ビットレートモジュレータ２０３は、アンドゲート３０２、ビットレートモジュレーションカウンタＭＣＮＴ、重み反転回路３０３、比較器３０４、ビットレートモジュレーションレジスタＢＭＲを含んで容易に構成することができる。上記ビットレートモジュレーションカウンタＭＣＮＴは、例えば８ビット構成とされ、内部クロックＩＣＫを０〜２５５までカウントする。上記ビットレートモジュレーションカウンタＭＣＮＴの出力は、重み反転回路３０３で重みが反転されてから比較器３０３に伝達される。上記重み反転回路３０３による重み反転は、上記ビットレートモジュレーションカウンタＭＣＮＴの出力のビット配列の並び替えによって実現される。上記重み反転回路３０３により上記ビットレートモジュレーションカウンタＭＣＮＴのビットの重みを反転することにより、イネーブル信号ＥＮのアサートタイミングを上記ビットレートモジュレーションカウンタＭＣＮＴのカウント周期において偏らないように平滑化することができる。
【００６５】
（３）上記重み反転回路３０３は、上記ビットレートモジュレーションカウンタＭＣＮＴの出力のビット配列の並び替えを行うための配線によって容易に構成することができる。
【００６６】
（４）上記ボーレートジェネレータ２０２は、上記アンドゲート３０２の出力をカウントするビットレートカウンタＢＣＮＴと、ビットレートを設定するためのビットレートレジスタＢＲＲと、上記ビットレートカウンタＢＣＮＴの出力と上記ビットレートレジスタＢＲＲの出力とを比較することで上記基本クロックＢＣＫを形成する比較器３０１とを含んで容易に構成することができる。
【００６７】
（５）上記単位転送時間は、上記ビットレートカウンタＢＣＮＴでの複数のカウント単位で構成され、上記送受信コントローラ２０１は、外部から上記ＳＣＩ１０９に取り込まれたスタートビットを検出して上記カウント単位を同期化する機能を含む。このとき、上記同期化後の上記ビットレートカウンタＢＣＮＴによる所定のカウント結果に基づいて、上記ＳＣＩ１０９への入力がサンプリングされるように構成することによって、受信データのサンプリングを的確に行うことができる。
【００６８】
（６）上記構成のマイクロコンピュータ１００によれば、上記ビットレートモジュレータ２０３を用いることでビットレート誤差を大幅に低減することができるので、上記内部クロックＩＣＫの周波数にかかわらず、所要のビットレートに近いビットレートでシリアル通信を行うことができ、例えば上記マイクロコンピュータ１００が適用された通信システム（図８参照）においては、基本クロックＢＣＫの生成タイミングが調整されることにより、柔軟で精度の高い送受信を行うことができるので、無駄なエネルギー消費を控えることができる。また、モータ制御用ＬＳＩの動作周波数が高い場合には、マイクロコンピュータの動作周波数が比較的低くても、誤差が少なく、品質の高い通信を行うことができる。
【００６９】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７０】
例えば、上記重み反転回路３０３では、上記ビットレートモジュレーションカウンタＭＣＮＴの出力のビット配列の並び替えを行うようにしたが、これに限定されるものではない。例えば上記ビットレートモジュレーションカウンタＭＣＮＴの出力に基づいて所定のテーブルを参照することで重みを変更するようにしても良い。この場合、上記テーブルには、図４に示されるようなイネーブル信号ＥＮの出力態様を実現するための情報が格納される。
【００７１】
また、上記ＳＣＩ１０９は、マイクロコンピュータ１００以外の半導体装置に搭載することができる。例えば、デジタル信号処理に特化したＤＳＰ（Digital Signal Processor）に上記ＳＣＩ１０９を搭載する場合が考えられ、かかる場合においても本発明を適用することができる。
【符号の説明】
【００７２】
１００  マイクロコンピュータ
１０１  クロック発生回路
１０２  ＣＰＵ
１０３  内部バス
１０４  割り込み制御回路
１０５  タイマ
１０６  ＲＯＭ
１０７  ＲＡＭ
１０８  Ａ／Ｄ変換器
１０９  ＳＣＩ
ＩＯＰ１〜ＩＯＰ６  入出力ポート
２０１  送受信コントローラ
２０２  ボーレートジェネレータ
２０３  ビットレートモジュレータ
３０１  比較器
３０２  アンドゲート
３０３  重み反転回路
３０４  比較器
８０１  モータ制御用ＬＳＩ
８０２  モータ
ＢＣＮＴ  ビットレートカウンタ
ＢＭＲ  ビットレートモジュレーションレジスタ
ＢＲＲ  ビットレートレジスタ
ＭＣＮＴ  ビットレートモジュレーションカウンタ
【図１】
0005414479.tif 000002
【図２】
0005414479.tif 000003
【図３】
0005414479.tif 000004
【図４】
0005414479.tif 000005
【図５】
0005414479.tif 000006
【図６】
0005414479.tif 000007
【図７】
0005414479.tif 000008
【図８】
0005414479.tif 000009