<概要>
まず、本明細書中に開示されているシリコンモノリシック半導体集積回路装置(以下では、本LSIと呼ぶ)の概要について説明する。本LSIは、中央演算処理装置(以下では、CPU[Central Processing Unit]と呼ぶ)を内蔵した画像音声処理LSIである。
<特長>
次に、本LSIの特長について説明する。本LSIは、ドライブレコーダの開発を容易にするドライブレコーダ用のワンチップLSIである。本LSIは、ドライブレコーダに必要な3軸加速度センサやカメラモジュール、SDカードなどを制御する専用ハードウェアを内蔵している。専用ハードウェアは、CPUで制御することができ、さまざまなアプリケーションを実行することが可能となっている。
<CPU>
本LSIは、32bitCPUを内蔵している。CPUは命令/データ双方のキャッシュ、及び、密結合メモリ(以下ではTCM[Tightly Coupled Memory]と呼ぶ)を保有している。それぞれのデータサイズは、命令キャッシュ:4KB、データキャッシュ:4KB、命令TCM:64KB、データTCM:4KBである。命令TCMのイネーブルはTCM_SEL端子で行う。
リセット解除時には自動的に、命令TCM(以下ではI-TCMと呼ぶ)へ外部シリアルEEPROM[Electrically Erasable and Programmable Read Only Memory]またはシリアルFLASHからデータを読み込み、その後自動的にCPUをリセットし、プログラムを実行することが可能である。このとき、8Kバイトの固定長データをダウンロードする。このような動作により、外部シリアルブート機能が実現されている。
I-TCMにプログラムが収まる場合には、I-TCMをROMとして扱うことができ、外部バス接続のフラッシュROMが不要となる。この機能のイネーブルはAUTO_READ端子で行う。EEPROMには、CPUのプログラム上からもSPI[System Packet Interface]インタフェイスを介してアクセスすることができる。
また、本LSIは、プログラムデバッグ用にJTAG[Joint Test Action Group]インタフェイスを備えている。
各外部端子は以下の通りである。
EEPROM接続機能の端子:SSI_CLK, SSI_CSB, SSI_DIN, SSI_DOUT, SSI_WPB
JTAG接続機能の端子:TCK, TMS, TDI, TDO, nTRST
CPU設定機能の端子:TCM_SEL, AUTO_READ
<外部メモリインタフェイス>
本LSIは、80系メモリインタフェイスを有し、FLASH ROM, SRAMが接続可能である。データバスは8ビット、16ビットに対応している。8ビットでのアクセスを行う場合、リセット直後のブートデータを外部から取り込むときから8ビットにする必要がある。このとき、BIT_SEL端子はHIGHに設定しておくことが望ましい。ブート完了後はレジスタにて切り替えを行うことができる。
各外部端子は以下の通りである。
アドレス端子(21bit):EXT_ADR21〜EXT_ADR1
データ端子(16bit):EXT_DATA15〜EXT_DATA0
CSB端子(3本):EXT_CSB2〜EXT_CSB0(内部でCSB3を画像処理ブロックに割り当て)
WEB(書き込みイネーブル)端子:EXT_WEB
OEB(読み出しイネーブル)端子:EXT_OEB
バス幅8/16の切替え端子:BIT_SEL(外部メモリCSB0に接続するデバイスにのみ有効)
<割り込みコントローラ>
本LSIは、GPIO[General Purpose I/O]の共有外部入力割り込みを含めた内部の割り込みのマスク制御や、ハンドラアドレスの制御を行う割り込みコントローラを有している。
<ウォッチドッグタイマ(Watch Dog Timer)>
本LSIは、ウォッチドッグタイマを1チャンネル有している。カウンタは32bitであり、初期設定値から0までダウンカウントする。タイムアウト発生後は、以下の動作を選択可能である。
第1動作:システムリセットを発生
第2動作:まずインタラプトを出力し、次のタイムアウト発生時点でサービスルーチンからクリアされなければ、システムリセットを発生
<タイマ/タイマカウンタ(Timer, Timer Counter)>
本LSIは、32bitタイマを2チャンネル内蔵している。各タイマ共にフリーランモードとユーザー定義カウントモードをサポートしている。また、本LSIは、32bitタイマカウンタ(アップカウンタ)を1チャンネル内蔵しており、TIM_TRIG端子の立ち上がり回数をカウントする。カウント値がオーバーフローした場合にはカウント値が’0’に戻る。
各外部端子は以下の通りである。
カウントトリガ端子:TIM_TRIG
<UART[Universal Asynchronous Receiver Transmitter]>
本LSIは、シリアルインタフェイスとしてUARTを2チャンネル内蔵している。そのうち、1チャンネルはオートフロー制御が可能である。UARTブロックには16ワードのFIFOを内蔵している。データビット長(5bit-8bit)、パリティビット、ストップビット(1bit、1.5bit、2bit)を設定可能である。ボーレート設定は、レジスタによりプログラマブルに設定が可能である。また、UARTブロックは、受信エラーやタイムアウト等の割り込みによって、CPUに対して通信状態を通知することが可能である。
各外部端子は以下の通りである。
UART1機能端子:Tx1, Rx1, RTS1, CTS1
UART2機能端子:Tx2 Rx2
<GPIO(PWM[Pulse Width Modulation]/IRQ[Interrupt ReQuest]入力)>
本LSIは、入力設定、出力設定が各々独立に設定可能なGPIOポートを16ポート備えている。そのうち4ポートはIRQとしても利用可能である。別の4ポートはPWM出力としても利用可能である。分周比は1/2〜1/220、High区間幅、Low区間幅を個別に設定可能である。
各外部端子は以下の通りである。
GPIO専用端子(8bit):GPIO15〜GPIO8
GPIO/PWM併用端子(4bit):GPIO7〜GPIO4
GPIO/IRQ併用端子(4bit):GPIO3〜GPIO0
<AD[Analog/Digital]コンバータ>
本LSIは、8bitA/Dコンバータ(ADC)を4チャンネル内蔵している。逐次比較型のR-2R基準方式のADを1ch内蔵し、4チャンネル拡張をアナログスイッチでセレクトして使用する。チャンネル指定の変換、4チャンネルまとめての単掃引、4チャンネルまとめてのフリー掃引変換機能が使用できる。変換電圧レンジは0.1xAVDD〜0.9xAVDDの範囲となっている。ADコンバータは、独立した電源ADVDDを有している。
各外部端子は以下の通りである。
アナログ入力端子:ADIN0,ADIN1,ADIN2,ADIN3
<クロックコントローラ(Clock Controller)/PLL>
本LSIのクロックコントローラは、システムクロックとオーディオクロック用に2個の発振子用アンプを内蔵している。帰還抵抗は外付けになる。外部クロックの入力も可能である。本LSIは、PLLを内蔵している。PLLは、XIN端子に入力されるクロックから、CPU用クロック、カメラモジュール用クロックなどを生成する。本LSIの内部では、VIDEOエンコーダ用に27MHz、オーディオ用にサンプリング周波数の1024倍のクロックが必要になる。
外部端子は以下の通りである。
システムクロック入力及び発振端子:XIN, XOUT
オーディオクロック入力及び発振端子:AXIN, AXOUT
内部クロック供給は以下の7系統で、リセット直後、SYSCLKにはXINが供給され、SYS_CLK_WDTにもXINが供給され、他のブロックへのクロックはレジスタ設定により動かされる。
7系統の内部クロックは、以下の通りである。
SYS_CLK:CPUへのクロック
SYS_CLK_WDT:ウォッチドックタイマへのクロック
ADC_CLK:AD変換ブロックへのクロック
IMG_CLK:画像処理ブロックへのクロック
TVE_CLK:TVエンコーダへのクロック(周波数限定有り)
SDC_CLK:SDコントローラへのクロック
AUD_CLK:I2Sブロックへのクロック(周波数限定有り)
<SSI(Synchronous Serial Interface)>
本LSIには、CPUのI-TCMへの外部シリアルEEPROMデータ自動ブートロード用端子と共用で、SSIブロックが内蔵されている。SSIモードはSPI,SSP,Microwaveの3モードをサポートしている。
各外部端子は以下の通りである。
EEPROM機能接続端子:SSI_CLK, SSI_CSB, SSI_DIN, SSI_DOUT, SSI_WPB
<画像処理部:概要>
画像処理ブロックは、カメラインタフェイス、JPEGコーデック、TVエンコーダ、SDカードコントローラ、I2Cマスタインタフェイスなどをまとめたメガブロックとなっている。この画像処理部へのCPUからのアクセスは、外部メモリ用チップセレクトCSB3が割り当てられ、内部で接続されている。画像処理部へのアクセスは16ビット単位でのアクセスに制限されている。画像処理部の各ブロックはレジスタ設定でハード的に自走することができる。動作モードとしては、READY、CAMERA-JPEG、NORMAL-VIEWR、JPEG-DECODEの4モードがある。各ブロックの割り込みは、画像処理部内部に専用の割り込みコントローラがあり、CPUの割り込みコントローラへは画像処理部としての割り込みが入っている。
<画像処理部:カメラインタフェイス>
本LSIのカメラモジュールインタフェイスは、外部接続するカメラモジュールからのデータ、クロック、同期信号をレジスタ設定に従って取り込む処理を行う。取り込まれた撮影画像データは、IC内部で扱う共通のYUV4:4:4のフォーマットに変換され、画像加工のフィルタ処理、縮小処理、任意矩形の切り取り、輝度変換(D range Up/Down)の処理が施される。以上の処理を施されたカメラ画像データは、YUVからRGBに変換され、格納位置レジスタの設定に従って、フレームメモリに書き込まれる。フレームメモリ内でのデータフォーマットはRGB=5:6:5である。本LSIは、カメラの電圧がIO(外部バスなど)と異なる場合に対応して、独立した電源CAVDDを有している。
各外部端子は以下の通りである。
データ端子(8bit):CAMD0〜CAMD7
同期信号端子:HSync, VSync
クロック入力端子:CAMCKI
クロック出力端子:CAMCKO
<画像処理部:I2Cマスターコントローラ>
本LSIは、カメラやRTC[Real Time Clock]、EEPROMと通信できるように、I2Cマスターインタフェイスを内蔵している。シリアル信号は2組存在するが、本LSI内部では1chとして扱っている。電源電圧の異なるデバイスをつなぐ時にHIGH電圧の差による電力消費やノイズ耐性劣化を防ぐことが可能となる。電源はI1VDD,I2VDDの2系統を有している。
各外部端子は以下の通りである。
電源系1(I1VDD)に接続できるシリアルバス端子:SDC1, SDA1
電源系2(I2VDD)に接続できるシリアルバス端子:SDC2, SDA2
<画像処理部:画像ブロック内メモリ>
本LSIは、フレームメモリとしてQVGA[Quarter Video Graphics Array](320×240)の2面分、計320KBのメモリを内蔵している。2面のフレームを、カメラからの画像またはJPEG伸張画像を書き込む面と、VIDEOエンコーダへ送るデータを読み出す面に分けることにより、ノイズ(ティアリング)をなくすことができる。フレームメモリ内でのデータフォーマットはRGB=5:6:5である。フレームメモリには、CPUからリード/ライトアクセス可能である。フレームメモリに展開したJPEGデコード画像の上に、透明色機能を用いて、矩形以外の画像を上書きすることが可能である。
<TVエンコーダ>
本LSIは、画像フレームメモリの任意範囲を内蔵のTVエンコーダでNTSC/PALのアナログコンポジット信号(CVBS)として出力できる。フレームメモリを2画面で使って、一方の画面をTV出力中に次のJPEGをデコードし他方に格納する。デコードが完了すればVSYNCに同期してTV出力画面を切り替えて使用する。320KB(QVGA)をTVに出力することも可能であるが、JPEGデコードとTV出力が同時にフレームメモリをアクセスするので、TV画像にノイズ(ティア)が載る。アナログ信号は10ビットの電流DACを通して出力される。75Ω抵抗をVOUT端子とGNDとの間に付ければ75Ωドライバは不要である。また、TVエンコーダを使用する場合は27MHzが供給できるよう、XIN,XOUTでの発振周波数を決定することが望ましい。電源はDAC専用のDAVDDを有している。
各外部端子は以下の通りである。
VIDEO出力端子(コンポジットフォーマット):VOUT
基準電流設定端子:IREF
*リセット直後はDACがONした状態から始まる。
<画像処理部:JPEGコーデック>
本LSIは、ISO/IEC10918準拠ベースライン方式対応のJPEGコーデックを内蔵している。JPEGコーデックは、カメラモジュールインタフェイスで処理した画像をJPEGに圧縮することができる。圧縮形式はYUV=4:2:2(横方向間引き)である。圧縮率は32段階から選択できる。圧縮後のデータはリングメモリ(フレームメモリの1面と兼用で160KB)を経由してCPUへと読み出すことができる。また、CPUから圧縮JPEGデータをコードメモリ(16KB)へ書き込み、これを伸張処理して、さらにカメラモジュールインタフェイスで処理した後、フレームメモリに格納できる。伸張可能な圧縮形式はYUV=4:4:4, 4:2:2(横方向間引きのみ対応), 4:2:0, 4:1:1(横方向間引きのみ対応), グレースケールの5形式である。
<画像処理部:ADPCMオーディオインタフェイス>
本LSIは、外部デジタルオーディオコーデックとの接続のために、I2Sインターフェースを内蔵している。I2Sインタフェイスは、入力1ポート、出力1ポートを内蔵しており、左詰、右詰、IIS形式に対応している。CPUからはFIFO(1KB)を介してアクセスする。IISインターフェースを使用する際は、オーディオクロックとしてサンプリング周波数の1024倍のクロック(32kHzサンプリングの場合32.768MHz)が必要である。外部デジタルオーディオコーデックのマスタークロック用として、オーディオクロックを分周出力可能である。
各外部端子は以下の通りである。
I2S入力端子:ADCKI, ADLRI, ADDTI
I2S出力端子:ADCKO, ADLRO, ADDTO
クロック出力端子:AMCKO
<SDカードインタフェイス/SDカードコントローラ>
本LSIは、SD規格に準拠したSDカード/MMC[MultiMedia Card]のホストコントローラを1チャンネル内蔵している。上記のホストコントローラは、512バイトのカードアクセス用バッファRAMを内蔵している。インタフェイスは、SDバスモード(1bit、4bit)及びSPIモードをサポートしている。シリアル、パラレル(4ビット)でのアクセスであれば、SD2.0対応も可能となっている。また、MMC,MMC+への対応についても、上記制約のもとアクセス可能である。また、本LSIは、SDデバイス専用の電源SDVDDを有している。
各外部端子は以下の通りである。
クロック端子:SD_CLK
コマンド端子:SD_CMD
データ端子(4bit):SD_DAT3〜SD_DAT0
<電源系統、リセット他>
本LSIは、8系統の電源を持っている。電源系は図1のように分かれている。図1は、本LSIの電源系説明表である。リセットは全て非同期リセットである。また、ICテスト用にTEST端子を有している。TEST端子は必ずGNDに接続して使用する必要がある。
各外部端子は以下の通りである。
本LSI全てのリセットを行う端子:RESETB
テストモード機能に設定する端子:TEST(使用時はGNDに接続する必要あり)
<パッケージ>
本LSIは、VQFP[Very small Quad Flat Package]-T144モールドパッケージ(22mmx22mmx1.6mm、0.5mm Pin pitch)を採用している。
<端子説明、端子配置、外形寸法>
図2〜図4は、本LSIの端子機能説明表である。図5及び図6は、本LSIの入出力端子の等価回路構成図である。図7は、本LSIの端子配置図である。図8は、本LSIの外形寸法図である。なお、図2〜図4中の「未使用時処理」という項目に記載されている「※1」に関して、"PD-"はその後に続く信号にプルダウンされることを表しており、"PU-"はその後に続く信号にプルアップされることを表している。また、図2〜図4中の「回路構成」という項目に記載されている符号A〜符号Jは、図5及び図6の構成A〜構成Jに相当することを表している。
<電気的特性>
図9は、本LSIの電気的特性表である。なお、特に規定のない場合、次の条件を適用する。DVDD=1.50V、DAVDD=ADVDD=I1VDD=I2VDD=SDVDD=IOVDD=3.30V、CAVDD=2.85V(以下全ての電源端子はVDDとして表記)、DAVSS=ADVSS=DVSS=0.0V、Ta=25℃、fXIN=13.5MHz、fAXIN=16.384MHz、fSYS=41.0MHz(PLL使用時内部クロック)。また、下記でIOPWRと表記しているものは、全てのIO電源端子の総称としての意味を持つ。
<ブロック図>
図10は、本LSIのブロック図である。本図に示すように、本LSIは、CPU1と、命令キャッシュ2と、データキャッシュ3と、命令TCM4と、データTCM5と、オートリードSPIコントローラ6と、外部メモリコントローラ7と、高速システムバス8(以下では、AHB8[Advanced High performance Bus]と呼ぶ)と、タイマー9と、ウォッチドッグタイマー10と、AHB/APBブリッジ11と、割り込みコントローラ12と、中低速システムバス13(以下では、APB[Advanced Peripheral Bus]13と呼ぶ)と、タイマーカウンタ14と、UART15と、GPIO16と、ADコンバータ17と、クロックコントローラ18と、PLL19と、画像処理部20と、を有して成る。
画像処理部20は、ホストインタフェイス21と、カメラインタフェイス22と、JPEGコーデック23と、ADPCMオーディオインタフェイス24と、コードメモリ25と、オーディオバッファ26と、メモリインタフェイス27と、I2Cコントローラ28と、SD/MMCインタフェイス29と、第1フレームメモリ30と、メモリコントローラ31と、第2フレームメモリ32と、TVエンコーダ33と、を有して成る。
カメラインタフェイス22は、画像処理部22aと、多段ズーム部22bと、クロッピング部22cと、を有して成る。JPEGコーデック23は、JPEGコーデックエンジン23aと、ワークメモリ23bと、を有して成る。SD/MMCインタフェイス29は、SDC/MMCコントローラ29aと、SDデータバッファ29bと、を有して成る。TVエンコーダ33は、TV信号エンコーダ33aと、10bitビデオDAC33bと、を有して成る。
<機能説明>
なお、本LSI各部の機能概要については、先にも説明した通りであるが、以下では、本LSI各部の機能をより詳細に説明する。
<CPU>
本LSIは、CPUを内蔵している。本LSIではキャッシュ、密結合メモリ(TCM)の容量を以下のように内蔵している。
インストラクションキャッシュ(I-Cache): 4Kバイト
データキャッシュ(D-Cache): 4Kバイト
インストラクションTCM(I-TCM): 64Kバイト
データTCM(D-TCM): 4Kバイト
I-TCMの初期化、再ロードについて説明する。本LSIでは、外部リセット信号解除後に、I-TCMの初期化(プログラムダウンロード)をSSIインタフェイス経由でハードウェア的に行うことができる。ダウンロード中、CPUにはクロックが供給されず、ダウンロード完了後にクロック供給が始まり、0x00000000番地から実行が始まる。
なお、外部デバイス、インタフェイス、及び、設定は、以下の通りである。
外部デバイス:EEPROMシリアルモード
インターフェース:SSI_CLK,SSI_CSB0,SSI_DIN
設定:外部端子AUTO_READをHIGHに設定
外部のシリアルEEPROMやFLASHデバイスからI-TCMを初期化する場合、外部デバイスへのプログラム及びデータの格納は、4バイト単位でLSBバイトとMSBバイトの並びを逆にすることが望ましい。コンパイラでビッグエンディアンに変換すると、バイト、ワード(2バイト)のデータやコードなどがそれぞれの長さ単位で処理され、I-TCMにダウンロードした際に並びが変わってしまうので、留意すべきである。I-TCMの初期化ダウンロード機能は8KB固定で行われる。プログラム実行中、I-TCMに異なるプログラムをダウンロード(再ロード)する場合には、プログラム上でSSIインタフェイスを使って制御すればよい。図11は、オートリード時のシリアルメディアへの格納順番を示す図である。
CPUのメモリマップについて説明する。CPUのアドレス空間は32ビットあるが、外部アドレスは22ビット(4Mバイト)である。CPUのアドレス空間とメモリマップ(CSB0-3)のマッピングは、図12のように固定されている。図12は、CPUのメモリマップである。
<外部メモリコントロール>
本LSIは、4チャンネル(チップセレクト)のメモリエリアとのアクセスが可能で、CSB0〜CSB2は本LSI外部、CSB3は本LSI内部の画像処理ブロックに割り当てられている。外部メモリは8ビットアクセス、16ビットアクセスの2通りが可能である(16ビット時:4MByte空間、8ビット時:2MByte空間)。8ビットアクセスは、外部デバイスをセレクトするCSB0,CSB1,CSB2に繋がるデバイスとの間でのみ可能であり、本LSI内部の画像処理ブロックは16ビットアクセスのみ可能となっている。なお、インデックスアドレスレジスタ間接アクセスのため、0x30000008がインデックスレジスタで、0x3000000Cがデータレジスタである。
本LSIは、2チャンネルのメモリコントローラと外部バスインタフェイスにより、外部メモリ、画像処理ブロックへのアクセスが可能である。図13は、本LSIのメモリコントローラと外部バスインタフェイスの構成図である。
各CSBn(n=0〜3)のメモリ空間はデフォルトで決まっているが、メモリコントローラのレジスタを書き換えることで違うメモリ空間を設定することもできる。また、バスアクセスタイミングの設定もレジスタを書き換えることで可能となっている。図14は、メモリコントローラレジスタマップである。メモリコントローラ_1のベースアドレスは、0x90000000であり、メモリコントローラ_2のベースアドレスは0xA0000000である。
外部メモリコントローラに関連するレジスタ詳細とバスタイミングについて説明する。図15は、レジスタSCSLRn_LOW_mの詳細テーブルである。図16は、レジスタSMSKRn_LOW_mの詳細テーブルである。図17は、レジスタCSALIASn_LOW_mの詳細テーブルである。図18は、レジスタSMCTLRの詳細テーブルである。図19は、レジスタSMTMGR_SETn_mの詳細テーブルである。なお、図15〜図19において、"n"は同じメモリコントローラ内のCSB番号(0,1)を示しており、"_m"はメモリコントローラ番号(_1,_2)を示している。
図20は、外部メモリバスインタフェイスのリードタイミングを示すタイミングチャートである。図21は、外部メモリバスインタフェイスのページリードタイミングを示すタイミングチャートである。図22は、外部メモリバスインタフェイスのライトタイミングを示すタイミングチャートである。図23は、外部メモリバスインタフェイスの各アクセス間隔(ターンアラウンドタイム)を示すタイミングチャートである。
<割り込みコントローラ(INTCTL)>
本LSIは、割り込みコントローラを内蔵している。IRQ(通常割り込み)、FIQ(高速割り込み)がそれぞれ9本、1本ずつ割り当てられている。割り込みは全てLOWアクティブのレベル割り込みのみに対応している。
図24は、割り込みシステム図である。図24に示すように、IRQ,FIQ共にイネーブル制御、マスク制御、優先度フィルタ制御(システム優先度を設定するirq_plevelレジスタの値以上を有効とする)により、有効/無効処理を制御することができる。
図25は、本LSIの割り込み信号マップであり、IRQ、FIQのソースと優先度が示されている。優先度は15が最優先で、0が一番低い優先度を表している。本LSIではこの優先度は固定となっている。
図26は、割り込みブロックのレジスタマップである。なお、割り込みブロックのベースアドレスは0xC0007000である。
<ウォッチドッグタイマ(WDT)>
本LSIには、32ビット幅のウォッチドックタイマ(WDT)が内蔵されている。POWER_ON時及びWDTのタイムアウトが発生してリセットがかかったときには、WDTは初期状態で動作を行わない。WDT動作イネーブルビット(WDT_CR:WDT_EN)に"1"を書き込み動作させる必要がある。一度WDT動作を始めると、リセット(タイムアウトリセット含む)がかかるまでプログラムでは動作を止めることはできない。
図27は、ウォッチドッグタイマブロックのレジスタマップである。なお、ウォッチドッグタイマブロックのベースアドレスは0xC0003000である。
ウォッチドッグタイマの動作説明を行う。リセット直後、WDTは動作停止状態となっている。動作を開始するにはWDT_CR[0]:WDT_ENにHIGHを書き込む。一度WDTを動作させると外部リセット、またはタイムアウトによるリセットがかからない限り、WDT_ENはLOWにはできない。タイムアウトのモードは下記の2種類があり、WDT_CR[1]:RMODで選択する。
RMOD=”0”:1回目タイムアウトでWDTリセット生成
RMOD=”1”:1回目タイムアウトで割り込み生成し、2回目タイムアウト時に割り込みがクリアされていなければWDTリセット生成
また、タイムアウト時のリセット幅については、WDT_CR[4:2]:RPLの3ビットでクロック単位の設定が可能である。タイムアウト判定時間は、WDT_TORR[3:0]:TOPで設定可能である。カウンタが0x00000000になるとタイムアウト判定が行われる。
図28は、WDT_TORR:TOP設定とカウンタ初期値との関係表である。
WDTのカウンタの値は、WDT_CCVRレジスタを読むことで得られる。カウンタを初期値に戻してリスタートするには、WDT_CRRレジスタに0x76のデータを書き込む。この時、割り込みステータスが発生していた場合(WDT_STAT[0]="1")、このレジスタ値もクリアされる。カウンタをリスタートさせずに、割り込みステータスのみをクリアするには、WDT_EOIレジスタをリードする。
図29は、リスタート制御タイミングを示すタイミングチャートである。図30は、割り込み解除タイミングを示すタイミングチャートである。図31は、ウォッチドッグタイマのタイムアウトリセットタイミング(RMOD="1")を示すタイミングチャートである。
<タイマ(TMR)、タイマカウンタ(TMRC)>
本LSIは、内部クロックをカウントするタイマを2chと、外部パルスをカウントするタイマカウンタを1ch内蔵している。全てのタイマ、タイマカウンタのカウントビット幅は32ビットである。
図32は、タイマ、タイマカウンタの構成図である。TMR1,TMR2は、CPUクロックと同じクロックでカウントされ、TMRCは外部端子TIM_TRIG端子からの入力パルスでカウントされる。TMR1,TMR2,TMRCは、カウント入力パルスが異なるだけで、内部構成は同じである。
図33は、タイマブロックのレジスタマップである。なお、タイマブロックのベースアドレスは0xC0002000である。
タイマ動作について説明する。タイマカウンタは、TMR1,TMR2,TMRC毎に、下記の動作モードを設定することができる。
フリーランモード:0xFFFFFFFFから0までの間でモジュロダウンカウント動作をする。
ユーザ定義モード:TMR*LoadCount(*は1,2,またはC)から0までの間でモジュロダウンカウント動作をする。
どちらのモードの場合も0までダウンカウントした次にカウントでAPBバスクロックに同期して割り込みが発生する。なお、割り込み生成にはメタステーブル対策回路が含まれているため、リロードのタイミングからAPBバスクロック2サイクル後に出力される。タイマブロック内での割り込みステータスはTMR*EOI(*は1,2,またはC)をリードすることでクリアできる。割り込みはTMR1,TMR2,TMRC独立にTMR*Control[2](*は1,2,またはC)ビットの設定でマスクすることも可能である。また、割り込みステータスのクリアに関わらずカウント動作は継続する。なお、第1の注意点として、モードの変更は変更するタイマの動作を停止してから行うことが望ましい。また、第2の注意点として、フリーランモードの動作開始のみ、TMR*LoadCount(*は1,2,またはC)の値がロードされる。TMR*LoadCount(*は1,2,またはC)に値を設定していない場合、デフォルトの0x00000000がロードされ、すぐに割り込みが入るので、TMR*LoadCount(*は1,2,またはC)に0xFFFFFFFFを書き込んでからフリーランモードへ移行すればよい。
<UART>
本LSIには、非同期シリアル通信用にUARTが2チャンネル(UART1,UART2)内蔵されている。UARTは以下の機能を有している。
・1キャラクタ幅の設定(5,6,7,8)
・パリティビット(ODD,EVENの選択含む)の有無の設定
・ストップビット幅の設定(1,1.5,2)
なお、送受信FIFOは、UART1,2共に16バイト内蔵されている。UART1はオートフロー制御機能を有している。
図34は、UARTブロックの構成図である。なお、図34中のpclkはAPBバスクロックであり、SYS_CLKはCPUシステムクロックである。
図35は、UARTブロック(UART1,UART2)のレジスタマップである。なお、UART1ブロックのベースアドレスは0xC0000000であり、UART2ブロックのベースアドレスは0xC0001000である。
UARTブロックの基本動作説明を行う。データビットはスタートビット後にLSBファーストで送られる。受信データとしてエラーチェックの為のパリティビットはデータビットの後にストップビットの後に加えられる。このパリティビットはオプションである(LCR[3]:PEN)。データビットは幅は5ビットから8ビット幅(LCR[1:0]:DLS)、ストップビットは1,1.5,2ビット幅(LCR[2]:STOP)で可変となっている。
図36は、シリアルデータの転送フォーマットを示す図である。
ビット時間はDLL,DLHレジスタで16ビットの分周値まで設定可能である。この設定のときには、USR[0]:BUSY="0"のときに、LCR[7]:DLAB="0"としてから、DLL,DLHを変更することが望ましい。
fSYS_CLK=27MHzのビット時間設定範囲:592ns〜38.8ms
fSYS_CLK=13.5MHzのビット時間設定範囲:1.19μs〜77.67ms
fSYS_CLK=6.5MHzのビット時間設定範囲 :2.46μs〜161.3ms
受信データは、RBR[7:0]レジスタを読む。また、THR[7:0]レジスタには送信データが保持されている。なお、どちらの場合もLCR[7]="0"の時のみ有効である。LCR[7]の変更はUSR[0]="0"となって、データ転送が行われていない時に行うことが望ましい。
FCR[0]="0"とすることで16バイトの送受信FIFOを無効にしてRBR,THRレジスタのみでのデータ転送が行われる。FCR[0]="1"に設定すると、16バイトのFIFOを使った送受信が行われる。FIFOの状態をUSRレジスタやTFL(送信FIFO内のデータ数)レジスタ、RFL(受信FIFO内のデータ数)レジスタで確認しながらデータの送受信をハンドシェイクすることが望ましい。HTX[0]="1"とすることで送信停止し、送信FIFOにデータを貯めることができる。
UARTブロックの割り込みについて説明する。固定された4種類の優先順位がついた割り込みを生成することができる。IERレジスタでそれぞれの割り込みの有効/無効を設定できる。割り込みが発生した時にIIR[3:0]を読むと、発生している一番優先度の高い割り込み要因を知ることができる(詳細はIIRレジスタの説明を参照)。
・受信エラー発生時
・受信データが利用可能になった時
・FIFO使用時にキャラクタータイムアウト発生時
・送信データレジスタが空になった時
・BUSYステータス
・モデム割り込みが発生した時
UARTブロックのオートフロー制御について説明する。UARTブロックは、オートフロー制御機能を持っている。UART1のみでUART2にはオートフロー制御はない。
図37は、オートRTSのタイミングダイアグラムである。T+1データは受信される。送信側がrts_n(RTS1)を認識する前に送信される。T=Receiver FIFO Threshould Valueであり、sinはRX1端子の内部信号名である。rts_nは内部信号で反転している。rts_nの反転がRTS1端子に出力される。
オートRTSの条件は以下の通りである。
・MCR[5]:AFCE=”1” オートフローコントロールビット有効
・MCR[1]:RTS=”1” Request_To_Send信号有効
・FCR[0]:FiFOEnable=”1” 送受信FIFO有効
・FCR[7:6]:RCVR_Trigger TをFIFOの充填量で設定
図38は、オートCTSのタイミングダイアグラムである。soutはTX1端子の内部信号名である。cts_nは内部信号で反転している。CTS1端子の入力信号の反転がcts_n信号として使用される。
オートCTSの条件は以下の通りである。
・MCR[5]:AFCE=”1” オートフローコントロールビット有効
・FCR[0]:FiFOEnable=”1” 送受信FIFO有効
・FCR[7:6]:RCVR_Trigger TをFIFOの充填量で設定
受信デバイス側からのCTS1入力がLOWの時、UART1は送信を停止する。但し、送信停止はSTOPビット出力フェーズに同期している。STOPビット出力の1/2ビット時間後にCTS1入力がLOWになれば、UART1は次のデータを出力してから送信を停止する。UART1が送信を停止しても、送信FIFOにはデータを書き込むことが出来るのでオーバフローをおこすことがある。従って、USR[1]:TFENやTFL[7:0]で送信FIFOの状態を監視する必要がある。
UARTブロックに関連するレジスタ詳細について説明する。
図39は、受信バッファレジスタRBRの詳細テーブルである。図40は、送信保持レジスタTHRの詳細テーブルである。図41は、Divisorラッチ(下位)DLLの詳細テーブルである。図42は、Divisorラッチ(上位)レジスタDLHの詳細テーブルである。図43は、割り込みイネーブルレジスタIERの詳細テーブルである。図44は、割り込み識別レジスタIIRの詳細テーブルである。図45は、FIFOコントロールレジスタFCRの詳細テーブルである。図46は、ラインコントロールレジスタLCRの詳細テーブルである。図47は、モデムコントロールレジスタMCRの詳細テーブルである。図48は、ラインステータスレジスタLSRの詳細テーブルである。図49は、モデムステータスレジスタMSRの詳細テーブルである。図50は、スクラッチパッドレジスタSCRの詳細テーブルである。図51は、FIFOアクセスレジスタFARの詳細テーブルである。図52は、送信FIFOリードレジスタTFRの詳細テーブルである。図53は、受信FIFOライトレジスタRFWの詳細テーブルである。図54は、UARTステータスレジスタUSRの詳細テーブルである。図55は、送信FIFOレベルレジスタTFLの詳細テーブルである。図56は、受信FIFOレベルレジスタRFLの詳細テーブルである。図57は、送信停止レジスタHTXの詳細テーブルである。
<GPIO(IRQ_IN,PWM_OUT)>
本LSIは、16ビットのGPIO(General Purpose Input/Output)端子を有している。GPIO機能のほかに外部割込みにも使用できる。また、それ以外にPWM出力として使える端子が4ビットある。図58は、GPIO機能表である。
GPIO機能について説明する。16ビット分の端子は入力/出力を1ビット毎に独立して設定することが可能である。図59は、GPIO機能部のブロックダイアグラムである。GPIO機能部は、入出力に関わらずGPIO端子のデータを読むことが出来る。
GPIOに関連するレジスタについて説明する。なお、GPIOのベースアドレスは0xC0004000である。図60は、GPIO出力データレジスタgpio_swporta_drの詳細テーブルである。図61は、GPIOデータ方向レジスタgpio_swporta_ddrの詳細テーブルである。図62は、GPIO入力データレジスタgpio_ext_portaの詳細テーブルである。
GPIOの割り込み機能について説明する。本LSIは、GPIO端子のLSB側から4ビットを割り込み入力機能と併用することが出来る。各入力に対して、割り込み機能を有効/無効に設定することが出来る。GPIOブロックからの割り込みは、統合された1ビットの信号で出力される。どの端子からの割り込みかは、割り込みステータスレジスタの値で判断することができる。外部端子からの割り込み入力に対しては、各入力個別にマスクすることが出来る。また、割り込み入力をレベル割り込み/エッジ割り込み、アクティブレベルをアクティブLOW/アクティブHIGHに指定することが出来る。
割り込みレジスタについて説明する。なお、割り込みレジスタのベースアドレスはGPIOと同じ0xC0004000である。図63は、GPIO割り込みイネーブルレジスタgpio_intenの詳細テーブルである。図64は、GPIOポートA割り込みマスクレジスタgpio_intmaskの詳細テーブルである。図65は、ポートA割り込みレベルレジスタgpio_inttype_levelの詳細テーブルである。図66は、GPIO割り込み極性レジスタgpio_int_polarityの詳細テーブルである。図67は、GPIOポートA割り込みステータスgpio_intstatusの詳細テーブルである。図68は、GPIO生割り込みステータスgpio_rawintstatusの詳細テーブルである。図69は、GPIO割り込みクリアレジスタgpio_porta_eoiの詳細テーブルである。
GPIOのPWM機能について説明する。本LSIでは、GPIO[7:4]の4端子(4ch)をPWM出力として使用することができる。この時、GPIOとしての設定に制限はない。PWM制御レジスタPWM_MODのPWM出力イネーブルフラグpwm_out_enがGPIO、外部割込みに優先して機能する。GPIOを入力設定にしていて、外部割込みをイネーブルとしていると、思わぬ割り込みが発生するので留意すべきである。PWMの出力形式としては、ManualモードとAutoモードが用意されている。Manuarlモード時は、PWM転送制御レジスタpwm_trに"1"を書き込むことで設定されたPWM波形を出力する。pwm_trに"0"を書き込むと、出力がインアクティブレベルに戻ってPWM出力を停止する。Autoモード時は、pwm_trに"1"を書き込むと、設定されたPWM波形を出力する。出力の停止は、pwm_pulse_num[7:0]レジスタで設定されたパルスを出力した後に、自動的にインアクティブレベル出力に戻って停止する。この時、pwm_trはハード的に"0"に自動クリアされる。
図70は、Manualモードのタイミング例を示すPWM出力図である。図71は、Autoモードのタイミング例を示すPWM出力図である。PWM出力は、pwm_out_enレジスタの設定で出力イネーブル制御が可能であるので、HIGH-Z出力にすることも可能である。
図72は、PWM出力波形図である。pwm_hcnt[15:0]レジスタによりHIGH区間を、pwm_lcnt[15:0]レジスタによりLOW区間を決定する。それぞれ、pclk(SYS_CLK)をpwm_bsckdv[15:0]で分周したクロック(pwm_base_clk)のカウント数により決まる。IPWMのインアクティブ出力の論理レベルは、pwm_inactiveレジスタで設定可能である。
図73は、PWM周期範囲表である。図73に示すように、SYS_CLKを54MHzに設定しても音声周波数領域は生成可能である。
PWMブロックに関連するレジスタ説明を行う。図74は、GPIO端子名とPWMチャンネル番号との対応表である。なお、PWMブロックのベースアドレスは0xC0009000である。図75は、PWM機能イネーブルレジスタPWM_ENの詳細テーブルである。図76は、PWMモード設定レジスタPWM_MODの詳細テーブルである。図77は、PWMコントロールレジスタPWM_CNTの詳細テーブルである。図78は、PWMベースクロック分周設定レジスタPWM_BSCKDV*の詳細テーブルである。図79は、PWM出力LOW区間幅設定レジスタPWM_LCNT*の詳細テーブルである。図80は、PWM出力HIGH区間幅設定レジスタPWM_HCNT*の詳細テーブルである。図81は、PWM出力パルス数設定レジスタPWM_PULSE_NUM*の詳細テーブルである。なお、図78〜図81中の"*"はチャンネル番号を表している。また、チャンネル0をPWM0、チャンネル1をPWM1のように表記している(チャンネルは0〜3)。
<AD変換ブロック>
本LSIは、4チャンネルマルチプレクス8ビットA/D変換ブロックを有している。AD変換ブロックは、R-2R部とセグメント部で構成されたハイブリッド型10bitD/Aコンバータをリファレンスとする8bit逐次比較型A/Dコンバータである。図82は、ADCのブロックダイアグラムである。
AD変換ブロックの機能説明を行う。AD変換ブロックには4つのモードがある。A/D変換の入力選択別に3モード、A/D変換ブロックのサスペンドモードである。動作3モードは、フリー掃引モード、単発モード、単掃引モードがある。モードを変換した直後の初期データは保証されないので、モード変更後、変換動作を行ってデータを取得する必要がある。
フリー掃引モードでは、4チャンネル入力全ての電圧を繰り返しA/D変換する。1回の掃引には130クロック(ADC_CLK)サイクルが必要である。動作モード選択レジスタでフリー掃引モードに設定すると同時に掃引繰り返し動作が開始される。サンプリングデータレジスタには最新のA/D変換データが格納されている。このモードでは割り込み信号(割り込みステータス)は変化しない。
単発モードでは、選択した1チャンネルのみを1回だけA/D変換する。該当するチャンネルのソフトウェアサンプリングトリガでA/D変換が開始される。この時、A/D変換が完了すると、割り込み(及び割り込みステータス)が発生し、該当するサンプリングデータレジスタにA/D変換結果が格納される。ソフトウェアサンプリングトリガレジスタ値は自動的にクリアされる。
単掃引モードでは、4チャンネル入力全ての電圧を1回だけA/D変換する。動作モード選択レジスタで単掃引モードに設定し、チャンネル0のソフトウェアサンプリングトリガで掃引動作が開始される。A/D変換が完了すると、チャンネル0のソフトウェアサンプリングトリガレジスタ値は自動的にクリアされる。サンプリングデータレジスタには、A/D変換データが格納される。このモードでは割り込み信号(及び、割り込みステータス)が発生する。
サスペンドモードについて説明する。モード設定をサスペンドモードにすると、A/D変換ブロックの動作は停止し、低消費電力状態になる。この時、ADC_CLKも止めることで更なる省電力化が図れる。
ADCブロックに関連するレジスタ説明を行う。なお、ADCブロックのベースアドレスは0xC0005000である。図83は、ADC動作モード設定レジスタADC_MODの詳細テーブルである。図84は、ADCサンプリングトリガーイネーブルレジスタADC_TRIGENの詳細テーブルである。図85は、ADCサンプリングトリガチャンネル0レジスタADC_SOFTTRIG0の詳細テーブルである。図86は、ADCサンプリングトリガチャンネル1レジスタADC_SOFTTRIG1の詳細テーブルである。図87は、ADCサンプリングトリガチャンネル2レジスタADC_SOFTTRIG2の詳細テーブルである。図88は、ADCサンプリングトリガチャンネル3レジスタADC_SOFTTRIG3の詳細テーブルである。図89は、ADCチャンネル0サンプリングデータレジスタADC_DATA0の詳細テーブルである。図90は、ADCチャンネル1サンプリングデータレジスタADC_DATA1の詳細テーブルである。図91は、ADCチャンネル2サンプリングデータレジスタADC_DATA2の詳細テーブルである。図92は、ADCチャンネル3サンプリングデータレジスタADC_DATA3の詳細テーブルである。図93は、ADC変換完了割り込みマスクレジスタADC_INTMASKの詳細テーブルである。図94は、ADC変換完了割り込み発生(マスク前)レジスタADC_INTRSTATUSの詳細テーブルである。図95は、ADC変換完了割り込み発生レジスタADC_INTSTATUSの詳細テーブルである。図96は、ADC変換完了割り込みクリアレジスタADC_INTCLRの詳細テーブルである。
<クロックジェネレータ/システム制御>
本LSIは、XIN,AXINの2系統のクロック発振回路(XIN,AXINからの強制クロック入力も可能)を有している。XIN側からの外部クロックはPLLを使うことが可能である。図97は、クロックジェネレータのブロックダイアグラムである。図98は、PLL構成図である。図99は、VCO出力分周設定表である。REF_INクロックの入力を分周した値は2.5MHz〜7.5MHzになるように設定すればよい。位相比較器の周波数が一致する値にVCOのクロック周波数が決定される。
クロックジェネレータに関連するレジスタマップについて説明する。図100は、クロックジェネレータ制御を含むシステム系レジスタマップである。なお、システム系レジスタのベースアドレスは0xC0006000である。
<シリアルインタフェイス>
本LSIに内蔵されているシリアルインタフェイスは、SSI(Serial Synchronous Interface)方式のクロック同期インタフェイスである。フルデュプレックスのマスタインタフェイスであり、CPUからはデータ、制御、ステータス情報にアクセス可能である。DMA機能はサポートしていない。本SSIブロックは、シリアルマスタまたはシリアルデバイスと接続可能であり、以下のインタフェイス方式をサポートしている。CTRLR0のFRFビットの設定で下記プロトコルを選択する。
・Serial Peripheral Interface(SPI)
4線式フルデュプレックスのシリアルプロトコル
・Synchronous Serial Protocol(SSP)
4線式フルデュプレックスのシリアルプロトコル
スレーブセレクト信号はSSPではフレーム識別として使われる。
・Microwire
ハーフデュプレックスのシリアルプロトコル
マスタからターゲットのスレーブにコマンドデータを送って制御する。
転送クロックについて説明する。SSIブロック内部はSYS_CLKをベースとして動作している。SSI_CLKとSYS_CLKは以下の関係を持っている。
fSSI_CLK=fSYS_CLK/SCKDV
SCKDVはBAUDRレジスタで設定される値で、2〜65534の偶数の値を設定する。SCKDVに0を設定した時はSSI_CLKは止まる。図101は、SYS_CLK、SSI_CLK、SSI_DOUT/DINの関係を示すタイミングチャート(最高周波数設定時)である。
送受信FIFOについて説明する。SSIブロックの送受信FIFOは、独立に16ワード(1ワード=16ビット)となっている。データフレームは、4ビットから16ビットまで設定可能である。送信時のフレームデータは右詰めでFIFOに書く必要がある。受信時はSSIブロック内部で右詰めで受信FIFOに格納される。リセット直後とSSI_ENレジスタが"0"の時には送受信FIFOはクリアされている。
送信FIFOが設定したスレッショルド値(フレーム単位)以下になった時にはSSIはエンプティ割り込みを発生する。スレッショルド値はTXFTLRレジスタに設定する。また、すでに送信FIFOが一杯(16フレーム格納済み)の時、さらに送信FIFOへの書き込みを行うと、SSIはオーバフロー割り込みを発生する。
受信FIFOが設定したスレッショルド値(フレーム単位)+1となった時にはSSIはFIFOフル割り込みを発生する。スレッショルド値はRXFTLRレジスタに設定する。また、すでに受信FIFOが一杯(16フレーム格納済み)の時、さらに受信が行われると、SSIはオーバフロー割り込みを発生する。この時最新のデータは無効となる。逆に、エンプティ状態の受信FIFOを読み出そうとするとSSIは受信エンプティ割り込みを発生する。この時の読み出しデータは無効である。
SSI割り込みについて説明する。SSIブロック内部の割り込みとしては、5種類の割り込みのORが本LSIの割り込みコントローラに出力されている。それぞれの割り込みは独立にマスクが可能である。また、発生した割り込みのステータスはマスク前とマスク後のステータスとして読み出すことが可能である。
図102は、SSI割り込み表である。図102に示されている5種類の割り込みは、全てマスキング可能であり、マスク後の5つの割り込みのORが取られ、本LSIの割り込みコントローラに通知される。
転送モードについて説明する。転送モードとしては、送受信モード、送信モード、受信モード、EEPROMリードモードの4種類がサポートされている。モードの設定はCTRLR0レジスタのTMODビットを設定する。但し、Microwire形式の時、TMODは無視され、MWCRレジスタの設定が優先される。図103は、SSI転送モードを説明するための表である。
SSIブロックのレジスタマップについて説明する。図104〜図106は、それぞれ、SSIブロックのレジスタマップである。これらのレジスタは、内部32ビットバスにつながっているので、32ビット区切りでのオフセットアドレスを持つ。存在しないビットへの書き込みは何も起こらない。読み出すと"0"が読み出せる。SSIブロックのベースアドレスは0xC0008000である。
SSIブロックの動作説明を行う。本LSIのSSIブロックは、シングルシリアルマスタとして動作する。少なくとも1つのデータが送信FIFOに入っており(受信モード時はDUMMYデータ)、スレーブデバイスを選択している時に、SSIENR:SSI_EN="1"とセットする事で、データ転送が開始される。データ転送中はステータスレジスタ(SR)のビジー(BUSY)フラグが立っている。BUSYが解除されるまで次の転送シーケンスを行わないことが望ましい。BUSYフラグをポーリングする時には、転送開始からSSI_CLKの周波数によってBUSYフラグが立つタイミングが遅れるので注意すべきである。
SPI,SSP設定でのシリアル転送について説明する。送受信モードまたは送信モードの時(TMOD=00b,01b)に、送信FIFOのデータが空(EMPTY)となった時に転送が中断する。全てのデータが転送されるまで送信FIFOがEMPTYとならないようにTXFTLRレジスタにスレッショルド値を入れておき、割り込みによって、データを補充する必要がある。
受信モードの時(TMOD=10b)、スレーブデバイスを選択した後、送信FIFOにDUMMYデータを書けば、転送が始まる。複数データを受信する時は、DUMMYデータが出続ける。受信動作の完了は、CTRLR1レジスタのNDFに入力した受信データ数のフレームデータを受信した時である。この時、NDFには受信したいデータ数から1少ないフレームデータ数を入れる必要がある。
EEPROMリードモード時(TMOD=11b)、スレーブデバイス(EEPROM)を選択した後で送信FIFOにOPコードやアドレスを書けば転送が始まる。この時、送信EMPTYが発生する。EEPROMからCTRLR1レジスタのNDFに入力した受信データ数のフレームデータ数を受信した時に転送が完了する。この時、NDFには受信したいデータ数から1少ないフレームデータ数を入れる必要がある。転送制御のOPコードやアドレス以外の冗長データを書くと、受信データが無視されるので、注意すべきである。
図107は、SPIシリアル転送フォーマット(CTRLR0:SCPOL=0,SCPH=0,FRP=00b)を示すタイミングチャートである。図108は、SPIシリアル転送フォーマット(CTRLR0:SCPOL=1,SCPH=1,FRP=00b)を示すタイミングチャートである。図109は、SSPシリアル転送フォーマット(FRP=01b)を示すタイミングチャートである。
Microwire設定でのシリアル転送について説明する。Microwire設定ではハーフデュプレックス転送のみ可能である。SSIブロックからコントロールデータをスレーブに出力した後で、送信動作、受信動作が行われる。
SI_CSBnの立下りをトリガとしてSSIブロックからのコントロールデータ送信が開始される。SSI_CLKの半クロック後にSSI_DOに制御ビットのMSBが出力される。コントロールデータは、1ビットから16ビット(CTRLR0:CFS[15:12]で設定)の間で設定可能であり、SSI_CLKの立下りに同期して出力される。この時、SSI_DINはハイインピーダンスでスレーブからはドライブされない。送信、受信の切替えはMWCRレジスタのMDDビットで決定される。
データ受信時、SSIブロックからのコントロールデータ転送の次のクロックサイクルでスレーブはSSI_DINを"0"にドライブした後、SSI_CLKの立下りに同期して4ビットから16ビットのデータを転送する。SSI_CSBnはデータ転送完了の半サイクル後に"1"のインアクティブ状態に戻る。コントロールデータ転送1つに対して1フレームデータを読む場合は、MWCR:MWMOD="0"として、Non-Sequensialデータ転送を行う。連続してデータを受信する場合は、MWCR:MWMOD="1"として、Sequensialデータ転送設定をすると、スレーブ側からフレームデータが連続して出力される。
データ送信時、SSIブロックからのコントロールデータ転送に続けて次のクロックでフレームデータを送信する。SSIブロックはSequential送信をサポートしていないので、1コマンドと1フレームデータのペアを必要な回数だけ送信すればよい。1回のデータ送信(コマンド+データ)の度に、スレーブデバイスとハンドシェイクを行うことも出来る。MWCRレジスタのMHSビットを"1"に設定すると、1データフレーム転送後にSSI_DIN状態がREADYになるまで次の転送を待って、コマンドデータ送信を始める。
図110は、Microwire設定でのデータ受信フォーマット(FRP=10b)を示すタイミングチャートである。図1t11は、Microwire設定でのデータ送信フォーマットを示すタイミングチャートである。
<画像処理ブロック>
画像処理ブロックの概要について説明する。本LSIの画像処理ブロックには、大きく分けて、CameraI/FとVIDEO-Encoderが動作し、カメラ画像をTVに表示するNORMAL-VIEWERモード、CameraI/FとJPEG Encoderが動作し、カメラ画像の録画を行うCAMERA-JPEGモード、CameraI/FとJPEG Decoderが動作するJPEG-DECODEモードの計3モード動作モードがある。これらのモードの切り替えは、レジスタ設定で行える。
図112は、画像処理ブロック動作モード表である。全てのモードでレジスタアクセスやメモリアクセスが可能である。I2Cインタフェイスは画像処理用のクロック(IMG_CLK)が必要になるので、XIN,AXINクロックを止めると、どのモードでも動作しない。また、I2Sインタフェイス、SDコントローラについては、独立にクロックが生成されているので、AUD_CLK、SDC_CLKを止めない上記全てのモードで使うことが出来る。
本LSIの画像処理ブロックへのベースアドレスは0x30000000となっているが、画像処理ブロックへのアクセスは全て間接レジスタアドレッシングであり、IDXレジスタにアクセスするレジスタ、メモリのアドレスを書いて行う。本LSI内部において、画像処理ブロックへのCSはCSB3が接続されている。インデックスレジスタとその他のレジスタのアクセス制御は、アドレスA3,A2によって行う。
図113は、本LSIのレジスタアクセス制御を説明するための表である。なお、インデックスレジスタ以外のレジスタのアクセス方法は,以下のようになる。
(1)A3="1",A2="0"とし,アクセス対象レジスタのアドレスをインデックスレジスタに設定する。
(2)A3="1",A2="1"とし,アクセス対象レジスタにアクセスする。
図114は、インデックスレジスタを用いたレジスタアクセスの説明図である。図115は、インデックスレジスタIDXの詳細テーブルである。IDX[15:0]により、アクセスするレジスタのアドレスを指定する。インデックスレジスタの値を書き換えない限り,同じレジスタにアクセスできる。
画像処理ブロックのクロック系制御について説明する。図116は、クロック制御レジスタCLKCNTの詳細テーブルである。その内容は以下の通りである。
AUD_EN:本LSI内部のAudioブロックのクロックイネーブル
“0”:停止 “1”:供給
TE_EN:TVエンコーダI/Fブロックのクロックイネーブル
“0”:停止 “1”:供給
SCKEN:SCLK(画像処理ブロック内部のシステムクロック)のクロックイネーブル
“0”:停止 “1”:供給
SD_EN:SD Card I/Fブロックのクロックイネーブル
“0”:停止 “1”:供給
CMCKEN:CAMCKOのクロックイネーブル
“0”:停止 “1”:供給
画像処理ブロックの1/n分周波形について説明する。本LSIにおいて、1/n(nは整数)の分周波形は、CAMCKOの様に端子に出力されるクロックも、本LSI内部で使用されるクロックも、図117の様な分周波形として生成される。図117は、本LSIでの1/n分周波形を示す図である。なお、分周比の切り替えを行う場合、必ず対象のクロックのイネーブルをOFFにする必要がある。
図118は、クロック分周レジスタ1CLKDIV1の詳細テーブルである。SCLKDV[3:0]は、SCLKの分周比を設定する。ソースクロックはIMG_CLKである。分周比は1/(SCLKDV+1)で設定され,1/1〜1/16まで設定可能である。
図119は、クロック分周レジスタ3CLKDIV3の詳細テーブルである。
CMCKDV[3:0]は、CAMCKOの分周比を設定する。ソースクロックはIMG_CLKである。分周比は1/(CMCKDV+1)で設定され,1/1〜1/16まで設定可能である。
ACTSWは、SCLKとCAMCLKIの周波数比率を設定する。設定内容は以下の通りである。
00b:設定禁止
01b:fSCLK = fCAMCKIで使用する場合。
10b:fSCLK ≧ 2×fCAMCKIで使用する場合。
11b:設定禁止
(注) fCAMCKI >fSCLK、2×fCAMCKI >fSCLK >fCAMCKIは設定できない。
CAMCLKO_DLYは、CAMCKO出力の位相を設定する。設定内容は以下の通りである。
“0”:遅延付加無し
“1”:遅延付加 (Typical 5ns)
図120は、CAMCLKO_DLY回路の構成図である。
図121は、クロック分周レジスタ4CLKDIV4の詳細テーブルである。TEDVは、TVエンコーダI/Fブロックの分周比を設定する。ソースクロックはTVE_CLKである。設定内容は、以下の通りである。
“0”:分周なし
“1”:1/2分周
画像処理ブロックのモード制御について説明する。図122は、ハードウェア動作モード設定レジスタHWMODEの詳細テーブルである。
SD_OFFは、SDIFコントローラ機能をON/OFFする。設定内容は以下の通りである。なお、SDIFコントローラを使う場合には先ずこのビットをONすべきである。
“0”:SDコントローラ機能をOFFする。
“1”:SDコントローラ機能をONする。
CAMOFFは、カメラ関連端子のプルダウン抵抗をOFFにする。設定内容は、以下の通りである。
“0”:カメラ動作状態を想定している。
CAMVS,CAMHS,CAMD0-7,CAMCKIのPull-downはOFFになる。
SDA,SDC,CAMCKOの状態はレジスタ設定に従う。
“1”:カメラ停止状態を想定している。
CAMVS,CAMHS,CAMD0-7,CAMCKIのPull-downはONになる。
SDA,SDC,CAMCKOは”L”出力になる。
SUSPは、サスペンド制御を行う。HDMODE="0000"の時に、このビットに“1”を書き込むと、本LSIの画像処理ブロックへのクロック供給SCLKが停止し、消費電流を低減することができる(サスペンドモード)。このモードから復帰するには、このビットに“0”を書き込めばよい。
MODE_ENは、HDMODEを有効にする。リセット直後は"0"となっているので、"1"を書き込めばよい。
CAMACTは、CAM I/Fの動作状態をモニタする。その内容は、以下の通りである。
“0”: 動作停止。
“1”: 動作中。
HDMODE [3:0]は、*CAM I/F、JPEG Codecの動作モードを設定する。図123は、HDMODE[3:0]レジスタ設定値と動作モードの関係表である。動作モードの切り替えには、必ずREADYモードを経由すべきである。また、図123に示した以外のHDMODE[3:0],SUSPの組み合わせは設定すべきでない。
画像処理ブロックの割り込み制御について説明する。画像処理ブロック内部には、本LSIの割り込みコントローラと独立した、 割り込み信号制御レジスタ、割り込みステータスレジスタ、及び、割り込みマスクレジスタがある。CPUシステムの割り込みコントローラは、レベル割り込み、LOWアクティブで受ける為、画像処理ブロックの割込みは、INTCNTレジスタのイニシャル設定のままで割り込みがかかる。INTCNTの変更はすべきでない。
図124は、割り込み制御レジスタINTCNTの詳細テーブルである。
INT_POLは、割り込み論理を設定する。設定内容は以下の通りである。
“0”:”H”の割り込み発生
“1”:”L”の割り込み発生
INT_SELは、エッジ割り込み/レベル割込みを選択する。設定内容は以下の通りである。
“0”:レベル割り込み (ステータスの論理和が出力される)
“1”:エッジ割り込み (各割り込み要因ごとに32×tSCLKのパルスが出力される)
割り込み要因が発生した場合、画像処理ブロックは下記のレジスタ設定に従って割り込み信号を生成し、CPUの割り込みコントローラに画像処理ブロックの割り込みとして通知する。割り込みステータスレジスタは、割り込みが発生すると、対応するビットが"1"になる。このレジスタの各ビットに"0"を書き込むと,そのビットは"0"でクリアされる。割り込みはレベル割り込みでLOWアクティブ信号をCPU側の割り込みコントローラに出力すればよい(INTCNT設定)。
図125は、割り込みステータスレジスタ1:INTST1の詳細テーブルである。CAMST_INTは、カメラ画像取り込み開始割り込みステータスが読み出せる("1":割り込み発生)。CAMVS_INTは、CAMVS割り込みステータスが読み出せる("1":割り込み発生)。CAMED_INTはカメラ画像取り込み完了割り込みステータスが読み出せる("1":割り込み発生)。このように、割り込みが発生すると対応するビットが"1"になる。このレジスタの各ビットに"0"を書き込むと、そのビットは"0"でクリアされる。マスクを設定した場合は、ステータスビットに"1"が立たず、割り込みも発生しない。CAMVS_INTはCAMVSの立ち下がり(VSPOL=’L’の場合は立ち上がり)で割り込みを発生する。
図126は、割り込みステータスレジスタ2:INTST2の詳細テーブルである。AUDIO_INTは、AUDIOブロックが発生する割り込みに対して割り込みステータスが読み出せる("1":割り込み発生)。TE_HOST _INTは、TE-Encoder I/Fブロックが発生する割り込みに対して割り込みステータスが読み出せる("1":割り込み発生)。SD_INTは、SDカードI/F割り込みステータスが読み出せる("1":割り込み発生)。RING_INTは、バンクライト完了割り込みであり、CAMERA-JPEGモードでフレームメモリへの圧縮/伸張データのライトがフレームメモリへの1バンク終了毎に発生する("1": 割り込み発生)。JD_ED_INTは、JPEGデコード完了割り込みであり、JPEGデコード完了時発生する("1": 割り込み発生)。JE_ED_INTは、JPEGエンコード完了割り込みであり、JPEGエンコード完了時発生する("1": 割り込み発生)。このように、割り込みが発生すると対応するビットが"1"になる。このレジスタの各ビットに"0"を書き込むと、そのビットは"0"でクリアされる。マスクを設定した場合は、ステータスビットに"1"が立たず、割り込みも発生しない。
図127は、割り込みマスクレジスタ1:INTMSK1の詳細テーブルである。CAMST_MSKはカメラ画像取り込み開始割り込みをマスクする。CAMVS_MSKは、CAMVS割り込みをマスクする。CAMED_MSKは、カメラ画像取り込み完了割り込みをマスクする。いずれのレジスタも“0”でマスク解除、“1”でマスク設定を行う。なお、RESERVEビットには、"0"書き込みを行うべきではない。
図128は、割り込みマスクレジスタ2:INTMSK2の詳細テーブルである。AUDIO_MSKはAUDIOブロックが発生する割り込みをマスクする。TE_HOST_ MSKは、TE-Encoder I/Fブロックが発生する割り込みをマスクする。SD_ MSKは、SDカードI/F割り込みをマスクする。RING_MSKは、JPEGコードライト完了バンク割り込みをマスクする。JD_ED_MSKは、JPEGデコード完了割り込みをマスクする。JE_ED_MSKは、JPEGエンコード完了割り込みをマスクする。いずれのレジスタも、“0”でマスク解除、“1”でマスク設定を行う。なお、RESERVEビットには、"0"書き込みを行うべきではない。
CPUからの画像処理ブロックへのアクセスについて説明する。画像処理ブロックには、16ビット幅でホストから外部メモリインターフェースを経由してアクセスすることができる。CSB3が割り当てられている。CPUからのアクセス可能対象は、図129に示す通りである。図129は、本LSIシステムにおけるアクセス可能対象一覧表である。基本的に、CPUから画像処理ブロックのレジスタを設定、アクセスすることで、システムとしてのアクセス可能対象を制御できる。
画像処理ブロックのメモリ構成は図130のようになっており、各メモリアクセスレジスタまたは、ABSアクセスレジスタでリード/ライトが可能である。図130は、画像処理ブロックのABSアドレス配置図である。
<カメラモジュールインタフェイス>
画像処理ブロックのカメラモジュールインタフェイスは、外部接続するカメラモジュールからのデータ、クロック、同期信号をレジスタ設定に従って取り込む処理を行う。取り込まれた撮影画像データは、IC内部で扱う共通のYUV4:4:4のフォーマットに変換され、拡大、画像加工のフィルタ処理、フレームメモリでの画像サイズの設定や画像処理機能に従った縮小、任意矩形の切り取り、輝度変換(D range Up/Down)の処理が施される。レジスタ設定に従って生成されたフレームメモリに書き込むカメラ画像データは、格納位置レジスタの設定に従って、設定された画像サイズ内での任意の位置に貼り付けられる。フレームメモリ内でのデータフォーマットは、YUV=4:2:2、またはRGB=5:6:5(RGB_FRAME=IDX:0030hで選択可能)である。
図131は、カメラモジュールインタフェイスのブロック図である。
図132は、カメラモジュールとのインタフェイス信号一覧表である。なお、アクティブレベルが"*"表記の信号はレジスタによって設定可能である。
システムクロックとカメラクロックの関係について説明する。本LSIのIMG_CLKを分周設定してCAMCKOクロックとしてカメラモジュールに供給することができる(IMG_CLKの分周設定については、クロックジェネレータの項を参照)。カメラからのデータ同期クロックであるCAMCKIクロックとシステムクロックSCLKとの関係は、ACTSW(IDX:00D3h CLKDIV3[5:4])の設定により、以下の式を満たすように設定する必要がある。
ACTSW=”01b”の時:fSCLK =fCAMCKI
ACTSW=”10b”の時:fSCLK ≧ 2×fCAMCKI
但し、上式中、fSCLKは本LSIの画像処理ブロックへのクロック周波数であり、fCAMCKIはCAMCKI端子への入力クロック周波数である。なお、ACTSW=”00b”〜”11b”設定は禁止である。また、fCAMCKI >fSCLK、2×fCAMCKI >fSCLK >fCAMCKIは設定できない。
カメラクロックと画像データの関係について説明する。カメラからのデータ同期クロックであるCAMCKIクロックは、カメラの画像データが有効な区間だけでなく、画像データが無効な区間(Sync区間)にも本LSIに入力されている必要がある。各モードでCAMCKIが入力されるべき区間を図133に示す。図133は、カメラクロック(CAMCKI)必要区間を示す表である。
カメラモジュールインタフェイスでの画像データタイミングについて説明する。図134は、カメラモジュールインターフェースでのカメラ画像信号に関するタイミング条件を示すタイミングチャートである。図135は、ICMS、ICMHの設定表である。
カメラ画像処理制御について説明する。カメラモジュールインタフェイスのカメラ信号論理を設定するレジスタCAMIFを図136に示す。図136は、カメラ信号論理設定レジスタCAMIFの詳細テーブルである。
CAMRSTは、カメラモジュールI/Fブロック全体のリセットをかける。設定内容は以下の通りである。
“0”: カメラモジュールI/Fブロックが通常動作を行う。
“1”: カメラモジュールI/Fブロックをリセット状態に設定する。
(注)リセットをかける場合は、同一IDXアドレスのその他の値を変化すべきでない。
VSPOL は、CAMVS信号のアクティブ論理を設定する。設定内容は以下の通りである。
“0”: LOW区間が有効データ(HIGHがシンク区間)
“1”: HIGH区間が有効データ(LOWがシンク区間)
HSPOLは、CAMHS信号のアクティブ論理を設定する。設定内容は以下の通りである。
“0”: LOW区間が有効データ(HIGHがシンク区間)
“1”: HIGH区間が有効データ(LOWがシンク区間)
CKPOLは、CAMCKI信号のCAMDAT同期のアクティブエッジを設定する。設定内容は以下の通りである。
“0”: 立ち下がりアクティブ(立ち下がりに同期してCAMDATが変化)
“1”: 立ち上がりアクティブ(立ち上がりに同期してCAMDATが変化)
RGBは、CAMDATの色成分を設定する。設定内容は以下の通りである。
“0”: CAMDATの色成分がYUVの場合(4:2:2モードのみ)
“1”: CAMDATの色成分がRGBの場合(4:4:4モードのみ)
SUB_OFFSETは、CAMDATの色成分がYUVの場合に、Y成分のオフセットを設定する。設定内容は以下の通りである。ただし、RGB=”H”の場合、設定は無効になる。
“0”: Y色成分にオフセットがない。
“1”: Y色成分にオフセットがある。(Y成分から16を減算する。)
RGBORD[2:0]は、RGBデータの並びを設定する。設定内容は以下の通りである。
000b: RGBRGB… 001b: RBGRBG…
010b: GRBGRB… 011b: GBRGBR…
100b: BRGBRG… 101b: BGRBGR…
110b: 設定禁止 111b: 設定禁止
YUVORD[1:0]は、YUVデータの並びを指定する。設定内容は以下の通りである。
00b: YUYVYUYV… 01b: YVYUYVYU…
10b: UYVYUYVY… 11b: VYUYVYUY…
なお、RESERVEビット、RESERVE1ビットには、共に”0”書き込みを行うべきである。
図137は、カメラ信号フレーム開始画素位置レジスタCAMTIMの詳細テーブルである。CYS[7:0]は、Y方向フレーム開始画素位置を設定する(0〜255)。CXS[7:0]は、X方向フレーム開始画素位置を設定する(0〜255)。
カメラからの全データ範囲に対して、フィルタ処理を開始するスタートPIXEL位置をCAMTIMレジスタ(CXS[7:0],CYS[7:0])で設定する。水平走査方向ではCAMHS信号が有効レベルに変化した最初のデータ位置をX=0として扱う。垂直走査方方向ではCAMVS信号が有効レベルに変化した最初のCAMHS信号有効レベルへの変化をY=0として扱う。
図138は、カメラデータ処理開始位置指定を説明するための模式図である。
図139は、カメラ画像フィルタ処理選択レジスタCAMFLTの詳細テーブルである。CAMFLT[2:0] は、カメラ画像へのフィルタ処理方法を設定する(図140を参照)。
図140は、CAMFLTレジスタ設定値とフィルタ処理方法との相関表である。なお、エッジ抽出1では、白黒のエッジ抽出が行われる。また、エッジ抽出2では、エッジに原画像の色が保存される。
図141は、カメラ画像2階調化処理閾値レジスタFLTTHDの詳細テーブルである。FLTTHD[7:0]は、カメラ画像の2階調化処理の閾値を指定する。
P’(x) = (P(x) >= FLTTHD) ? 0FFh : 00h
P’(x):フィルタ処理後の位置xの画素
P (x):フィルタ処理前の位置xの画素
図142は、カメラ画像セピア処理係数レジスタFLTSEPの詳細テーブルである。SEPIAR[7:0]は、カメラ画像のセピア処理の際、R成分の加減算係数を設定する。SEPIAR[7]は符号ビットである。負の数を設定する際は2の補数の係数を設定すればよい。 SEPIAB[7:0]は、カメラ画像のセピア処理の際、B成分の加減算係数を設定する。SEPIAB[7]は符号ビットである。負の数を設定する際は2の補数の係数を設定すればよい。
図143は、カメラ画像セピア処理範囲レジスタSEPRNGの詳細テーブルである。SEPRNG[4:0]は、カメラ画像のセピア処理の際、計算データ範囲の設定を行う。
R'(x) = (G(x) <= SEPRNG || G(x) >= FFh-SEPRNG) ? G(x) : G + SEPIAR
G'(x) = G(x)
B’(x) = (G(x) <= SEPRNG || G(x) >= FFh-SEPRNG) ? G(x) : G + SEPIAB
R’(x):フィルタ処理後の位置xのR成分
G’(x):フィルタ処理後の位置xのG成分
B’(x):フィルタ処理後の位置xのB成分
R (x):フィルタ処理前の位置xのR成分
G (x):フィルタ処理前の位置xのG成分
B (x):フィルタ処理前の位置xのB成分
図144は、カメラ画像処理エッジ抽出1係数レジスタFLTCOEFの詳細テーブルである。
FLTEBS[3:0]は、カメラ画像のエンボス処理の際の係数を設定する。
00**b: 1/4倍 01**b: 1/2倍
1000b: 1倍 1001b: 2倍
1010b: 3倍 1011b: 4倍
1100b: 5倍 1101b: 6倍
1110b: 7倍 1111b: 8倍
P’(x) = FLTEBS×(P(x-1) - P(x+1)) + 80h
FLTEDG1[3:0]は、*カメラ画像のエッジ抽出1の際の係数を設定する。
00**b: 1/4倍 01**b: 1/2倍
1000b: 1倍 1001b: 2倍
1010b: 3倍 1011b: 4倍
1100b: 5倍 1101b: 6倍
1110b: 7倍 1111b: 8倍
tmp_P'(x) = FLTEDG1×(P(x-1) - P(x+1))
P’(x) = (tmp_P’(x) >= FLTTHD) ? 0FFh : 00h
図145は、カメラ画像処理エッジ抽出2係数レジスタFLTEDG2の詳細テーブルである。
FLTEDG2[3:0]は、カメラ画像のエッジ抽出2処理の際の係数を指定する。
00**b: 1/4倍 01**b: 1/2倍
1000b: 1倍 1001b: 2倍
1010b: 3倍 1011b: 4倍
1100b: 5倍 1101b: 6倍
1110b: 7倍 1111b: 8倍
EDG2OFS[6:0]は、カメラ画像のエッジ抽出2処理の際のRGB成分のオフセット値を指定する。
Tmp_P'(x) = FLTEDG2×(P(x-1) - P(x+1)) + 80h
P’(x) = (Tmp_P’(x)>80h+EDG2OFS || Tmp_P’(x)<80h-EDG2OFS) ? 00h : Tmp_P’(x)
なお、FLTTHD,FLTSEP,FLTCOFF,FLTEDG2は物理的に同一のレジスタである。あるフィルタ処理から他のフィルタ処理に移行する場合は、そのフィルタ処理に応じたレジスタ設定を行うことが望ましい。
図146は、X方向カメラ画像サイズレジスタCXSIZEの詳細テーブルである。CXSIZE[10:0]は、X方向カメラ画像サイズを設定する。偶数値を設定すべきである。
図147は、Y方向カメラ画像サイズレジスタCYSIZEの詳細テーブルである。CYSIZE[10:0]は、Y方向カメラ画像サイズを設定する。
図148は、X方向切り取り開始位置レジスタCAMRSXの詳細テーブルである。CAMRSX[10:0]は、縮小後のカメラ画像に対する切り取りのX方向開始位置を設定する。偶数値を設定すべきである。
図149は、Y方向切り取り開始位置レジスタCAMRSYの詳細テーブルである。CAMRSY[10:0]は、縮小後のカメラ画像に対する切り取りのY方向開始位置を設定する。
図150は、X方向切り取り終了位置レジスタCAMREXの詳細テーブルである。CAMREX[10:0]は、縮小後のカメラ画像に対する切り取りのX方向終了位置を設定する。奇数値を設定すべきである。
図151は、Y方向切り取り終了位置レジスタCAMREYの詳細テーブルである。CAMREY[10:0]は、縮小後のカメラ画像に対する切り取りのY方向終了位置を設定する。
なお、ローテーションの場合(ROT (IDX_ADDRESS : 0030h MEMCNT[10]=”1”)には、(CAMREY - CAMRSY + 1)が偶数になるように設定すべきである。
図152は、輝度成分拡大設定レジスタCAMYDの詳細テーブルである。CAMYD[2:0]は、輝度成分の拡大倍率を設定する。ただし、拡大設定で255を超えるピクセルは255でクランプされる。図153は、レジスタ設定値と拡大倍率の関係表である。
図154は、X方向縮小率設定レジスタCXSRKの詳細テーブルである。CXSRK[10:0]は、X方向(主走査方向)の縮小率を設定する。縮小率の設定は下式で計算される。なお、CXSRKレジスタには、"0"設定すべきでない。また、CXSRKは偶数設定、かつCXSIZE/16 ≦ CXSRK ≦ CXSIZE となるように設定すべきである。
X方向縮小率 = CXSRK/CXSIZE
図155は、Y方向縮小率設定レジスタCYSRKの詳細テーブルである。CYSRK[10:0]は、Y方向(副走査方向)の縮小率を設定する。縮小率の設定は下式で計算される。なお、CYSRKレジスタには、"0"設定すべきでない。また、CYSRKは偶数設定、かつCYSIZE/16 ≦ CYSRK ≦ CYSIZE となるように設定すべきである。
Y方向縮小率 = CYSRK/CYSIZE
図156は、縮小アルゴリズム設定レジスタSRKTYPEの詳細テーブルである。
YOFFSETは、Y方向のバイリニア計算時に、生成画素位置を常に参照ラインと現ラインの中間として計算する。設定内容は以下の通りである。
“0”: バイリニア演算に従う
“1”: 生成画素は参照ラインと現ラインの中間。
CYTYPEは、Y方向(副走査方向)の間引き処理時の加算平均ON/OFFを設定する。設定内容は以下の通りである。
“0”: 加算平均なし
“1”: 前ラインとの加算平均処理を行う。
CXTYPEは、X方向(主走査方向)の間引き処理時のフィルタ係数ON/OFFを設定する。設定内容は以下の通りである。
“0”: フィルタなし
“1”: X方向に対しフィルタ処理し間引きを行う(図157を参照)。
図157は、X方向フィルタ係数の一覧表である。
バイリニアについて説明する。生成画素を出力する際、関係する4点の画素の値に生成画素からの距離に応じて重み付けを行い、生成画素の出力値を計算する。なお、1ライン目の場合は主走査方向のみの値で、またラインの先頭の場合は副走査方向の値のみで出力画素値を決定する。生成画素の計算式は次式で表される。
生成画素 = (1/162)×(x×y×α1 + x’×y×α2 + x×y’×β1 + x’×y’×β2)
ただし、x+x’= y+y’= 16
図158は、バイリニアのアルゴリズム概要図である。
<2線式シリアル設定制御(I2C)>
本LSIは、カメラモジュールの設定変更、カメラモジュールの状態読み出しの為に、2線式シリアルインタフェイス(I2C)を内蔵している。スタートビットを"1"とすることで、8ビット単位でデータのリードまたはライトを行う。SERIB_SELビットにより、8ビット単位のバイト転送、または、シーケンス転送を選択できる。
リードシーケンス(スタート設定後の自動転送)は、以下の通りである。
(1)スタートコンディションの生成
(2)カメラモジュール固有アドレスの出力とライト設定の出力
(3)アクノリッジの受信
(4)カメラモジュール内の読み出し対象アドレスの出力(書き込み)
(5)アクノリッジの受信
(6)スタートコンディションの生成
(7)カメラモジュール固有アドレスの出力とリード設定の出力
(8)アクノリッジの受信
(9)カメラモジュールからの読み出しデータの取り込み
(10)アクノリッジの生成
(11)ストップコンディションの生成
ライトシーケンス(スタート設定後の自動転送)は、以下の通りである。
(1)スタートコンディションの生成
(2)カメラモジュール固有アドレスの出力とライト設定の出力
(3)アクノリッジの受信
(4)カメラモジュール内の読み出し対象アドレスの出力(書き込み)
(5)アクノリッジの受信
(6)書き込みデータの転送
(7)アクノリッジの受信
(8)ストップコンディションの生成
図159は、2線シリアルインタフェイスの動作を示すタイミングチャートである。2線シリアルインタフェイスのクロックSDC周期は、画処理ブロックに供給されるクロック周期(tIMG),IMG_CLKをレジスタで分周設定して発生させる内部システムクロック周期(tSCLK)、SCLKの1/32分周を更に分周設定して生成される。
tSDC =tSCLK×(2 + 32×(PERI_SDC[3:0]+1))
tSCLK:画処理ブロック内部のシステムクロックSCLKのクロック周期
PERI_SDC[3:0]:SDCクロック生成用のSCLKを1/32分周したクロックに対する分周設定
図160は、2線シリアルインタフェイスのタイミング条件を示す表である。このタイミング条件は、全てI1VDD×1/2、I2VDD×1/2のスレッショルドで規定されたものである。
2線式シリアル設定制御に関連するレジスタ説明を行う。
図161は、シリアルインタフェイス制御レジスタSERICNTの詳細テーブルである。
SERI_DAT[7:0]は、シリアル転送データを設定する。SERI_RWをWrite設定した時はスレーブデバイスへのWriteデータを設定する。SERI_RWをRead設定した時はスレーブデバイスレジスタからのReadデータが格納される。
PERI_SDC[3:0] は、SDC周期を設定する。シリアル転送クロック周期は、tSDC =tIMG×(2 + 32×(PERI_SDC + 1))となる。SDC周期は1〜16の範囲で設定可能である。
SERI_STは、シリアル転送スタートフラグである。“1”書き込みでシリアル転送を開始する。転送開始後、自動的に”0”になる。なお、読み出し時には常に”0”が読み出される。“1”書き込み後は5×tIMG間ホストはアクセスをすべきでない。
SERI_BSYは、シリアル転送中を示すビジーフラグである。設定内容は次の通りである。
“0”:アイドル状態
“1”:シリアル転送中
なお、このビットへのWrite動作は無視される。
ACK_STATは、シリアル転送のACKステータスである。Write転送時、デバイスアドレス、レジスタアドレス、Writeデータの各ACKのOR結果が読み出される。 Read転送時、デバイスアドレス発行2回、レジスタアドレスの各ACKのOR結果が読み出される。Readデータ転送後のACKは常にNon-ACK(“H”)であるので,このACKは無視される。設定内容は以下の通りである。
“0”: 正常転送
“1”: 転送時異常あり。
なお、このビットへのWrite動作は無視される。
SERI_RWは、シリアル転送Read/Writeを設定する。設定内容は以下の通りである。
"0": Read
"1": Write
図162は、シリアル転送デバイスアドレス設定レジスタSERIDEVADRの詳細テーブルである。
SERI_HZは、SDA, SDCを強制的に入力とする。設定内容は以下の通りである。
“0”:SDA, SDCの入出力は他の設定により決まる。
“1”:SDA, SDCは入力になる。
DEV_TYPEは、デバイスアドレスのビット幅の指定を行う。設定内容は次の通りである。
“0”:デバイスアドレス7bit(SERI_DEVADR[6:0]の設定値を転送する)
“1”:デバイスアドレス10bit(SERI_DEVADR[9:0]の設定値を転送する)
SERI_ENは、シリアル転送ブロックのイネーブル設定を行う。設定内容は以下の通りである。
“0”:動作禁止
“1”:動作許可
SERIB_SELは、バイト転送とシーケンス転送を選択する。設定内容は次の通りである。
“0”:シーケンス転送
“1”:バイト転送
SERI_DEVADR[9:0]は、カメラモジュールのデバイスアドレス設定を行う。7bitデバイスアドレスはSERI_DEVADR[6:0]に設定する。
SERI_HZ,CAMOFFとSDA1,SDA2,SDC1,SDC2の動作との関係は図163のようになる。図163は、SERI_HZ,CAMOFFとSDA,SDCの動作の関係表である。
図164は、シリアル転送レジスタアドレス設定レジスタSERI2NDADRの詳細テーブルである。SERI_2NDADR[7:0]は、カメラモジュールのレジスタアドレスを設定する。
図165は、各フラグと転送方式との関係表である。
シリアル転送はREADYモード、NORMAL-VIEWERモード、CAMERA-JPEGモードで動作可能である(IMG_CLKの供給有効時)。SDA1とSDA2及びSDC1とSDC2は、本LSIの内部でWired-AND論理入力を採用している。また、出力はマスタの1出力のみが双方の端子に出力される。
図166は、シリアルインタフェイスバイト制御レジスタSERIBYTECNTの詳細テーブルである。
SERIB_DAT[7:0]は、シリアルバイト転送データを設定する。SERI_RWをWrite設定した時はスレーブデバイスへのWriteデータを設定する。SERI_RWをRead設定した時はスレーブデバイスレジスタからのReadデータが格納される。
ADD_STARTは、シリアルバイト転送前にスタートコンディションを付加するか否かを決定する。設定内容は以下の通りである。
“0”: スタートコンディションを付加しない。
“1”: スタートコンディションを付加する。
ADD_STOPは、シリアルバイト転送後にストップコンディションを付加するか否かを決定する。設定内容は以下の通りである。
“0”: ストップコンディションを付加しない。
“1”: ストップコンディションを付加する。
NOACKは、シリアルバイトRead転送時にACKを送出しないか否かを決定する。設定内容は以下の通りである。
“0”: ACKを送出する。
“1”: ACKを送出しない。
CONTINUEは、シリアルバイト転送を継続する場合に“1”を設定する。“1”を設定すると転送は、ACKの後SDCが“L”に変化した状態で終了する。“0”を設定した場合は、SDCが“L”に変化した後、さらに、SDCが“H”に変化して終了する。設定内容は以下の通りである。
“0”: ACKの後SDCが“L” から“H”に変化して終了する。
“1”: ACKの後SDCが“L” に変化して終了する。
SERIB_STは、シリアルバイト転送スタートフラグである。“1”書き込みでシリアルバイト転送を開始する。転送開始後、自動的に”0”になる。なお、読み出し時には常に"0"が読み出される。“1”書き込み後は5×tSCLK間ホストはアクセスすべきでない。
図167は、シリアルバイトRead転送動作時の波形図である。なお、本図は、シリアルバイトRead転送を図中の設定で3回行ったときの波形を示している。
<画像ブロック内メモリ>
画像メモリサイズの設定について説明する。本LSIは、320x240ピクセル(QVGA)サイズのフレームメモリを2面格納できるメモリを持っている。フレームメモリを画像メモリとして使用する場合、横方向と縦方向のピクセルサイズを指定する必要がある。
図168は、フレームメモリ水平方向サイズ設定レジスタIMGHSIZEの詳細テーブルである。IMGH[8:0]は、フレームメモリの画像サイズの水平方向ピクセルサイズを指定する。2〜510まで設定可能である。IMGHには偶数値を設定すべきである。偶数値を設定されない場合は動作が保証されない。
図169は、フレームメモリ垂直方向サイズ設定レジスタIMGVSIZEの詳細テーブルである。IMGV[8:0]は、フレームメモリの画像サイズの垂直方向ピクセルサイズを指定する。2〜511まで設定可能である。IMGH×IMGV≦163840となるように設定すべきである。
320x240画像フレームを2面持った使い方をする場合、内部RAMを独立でアクセスできる境界を基準として2面扱いをする。内部には32KByteのRAMが10ブロックある。160KBを2面使うことで、片方にCAMERAからの画像を入力しながら、他方をTVに出力する、また、片方にJPEGでコード画像を展開しながら、他方ですでに展開したJPEG画像をTVに出力するといった使い方が可能となっている。
図170は、フレームメモリの2面使いを説明するためのメモリマップである。
メモリ操作に関するレジスタ説明を行う。
図171は、メモリ制御レジスタMEMCNTの詳細テーブルである。
RGB_FRAMEは、フレームメモリへのピクセルデータの格納フォーマットを設定する。設定内容は以下の通りである。
“0”:YUV422フォーマット
“1”:RGB=5:6:5 フォーマット
ROTは、CAM I/Fからのデータをフレームメモリに書き込む方向を設定する。設定内容は以下の通りである。
“0”:カメラ走査方向 = フレームメモリ画像走査方向
“1”:カメラ走査方向 = rot90 (rot90はメモリ格納方向の90°回転操作)
VFLIPは、CAM I/Fからの画像をX軸を中心に上下反転してメモリに格納する。設定内容は以下の通りである。
“0”:通常
”1”:上下反転
HFLIPは、CAM I/Fからの画像をY軸を中心に左右反転してメモリに格納する。設定内容は以下の通りである。
“0”:通常
”1”:左右反転
TRONは、透明色設定の有効/無効を設定する。設定内容は以下の通りである。
“0”:無効
”1”:有効
SWAP_BYTEは、内部メモリへのアクセス時におけるエンディアンを設定する。メモリアクセスレジスタMEMACS_ABS(IDX:0036h)、RING_RD(IDX:003Fh)、MEMACS_YUV(IDX:0033h)、MEMACS_RGB(IDX:0034h)、に対して有効である。本LSI内部では、全てのブロックがビックエンディアンで動作している。設定内容は以下の通りである。
“0”:ビックエンディアン
“1”:リトルエンディアン
INCMTHは、メモリアクセスレジスタにアクセスする場合のアドレスのインクリメント方法を設定する。設定内容は以下の通りである。
“0”:単純インクリメント(書き込み開始アドレスのみ有効である。書き込み終了アドレスを超える書き込みをしてもアドレスのインクリメントは行われる。)
“1”:矩形インクリメント
なお、RESERVEDビットに”1”を書き込むべきではない。
図172は、カメラ画像格納開始X位置設定レジスタMEMCSTAXの詳細テーブルである。MEMCSTA_X[8:0]は、カメラモジュールからの画像をフレームメモリに格納時のXスタートアドレスを設定する。0〜508まで設定可能である。MEMCSTA_Xには偶数値を設定すべきである。MEMCSTA_X < IMGHとなるように設定すべきである。
図173は、カメラ画像格納開始Y位置設定レジスタMEMCSTAYの詳細テーブルである。MEMCSTA_Y[8:0]は、カメラモジュールからの画像をフレームメモリに格納時のYスタートアドレスを設定する。0〜510まで設定可能である。MEMCSTA_Y < IMGVとなるように設定すべきである。
図174は、メモリアクセスレジスタYUV : MEMACS_YUVの詳細テーブルである。MEMACS_YUV[15:0]はフレームメモリのYUVフォーマットでのアクセスに使用する。カメラ画像取り込み中、TVエンコーダへのデータ転送中、JPEG Codec動作中の読み出し動作は無視され、読み出した値は無効な値となる。
図175は、YUVデータ書き込みフォーマットを示す表であり、図176は、YUVデータ読み出しフォーマットを示す表である。
リード動作、ライト動作は2回ずつ行うべきである。2回ずつのアクセスが行われない場合は、リード動作、ライト動作は保証されない。リードする場合は、最初に1回のダミーリードを行うべきである。フレームメモリがRGB=5:6:5フォーマットの場合は、最初に2回のダミーリードを行うべきである。また、アドレスは自動インクリメントされる。リードとライトどちらのアクセスでもアドレスはインクリメントされる。アクセスをする場合には、リードとライトのアクセスを混在させるべきではない。インデックスリードアクセスすることによって、リード動作、ライト動作はクリアされる。MEMACS_YUVアクセスを開始する前には、必ずインデックスリードアクセスを行うべきである。フレームメモリがRGB=5:6:5フォーマット時、YUV書き込みする場合は最後にダミーライトを行うべきである。
図177は、メモリアクセスレジスタRGB : MEMACS_RGBの詳細テーブルである。MEMACS_RGB[15:0]を読み出すとメモリの内容が読み出せる。カメラ画像取り込み中、TVエンコーダへのデータ転送中、JPEG Codecの動作中の読み出し動作は無視され、読み出した値は無効な値となる。
図178は、RGBデータ書き込みフォーマットを示す表であり、図179は、RGBデータ読み出しフォーマットを示す表である。
リード動作、ライト動作は2回ずつ行うべきである。2回ずつのアクセスが行われない場合は、リード動作、ライト動作は保証されない。リードする場合は、フレームメモリがYUV=4:2:2フォーマットの場合は最初に2回のダミーリード、フレームメモリがRGB=5:6:5フォーマットの場合は最初に1回のダミーリードを行うべきである。また、アドレスは自動インクリメントされる。リードとライトどちらのアクセスでもアドレスはインクリメントされる。アクセスをする場合は、リードとライトのアクセスを混在させるべきではない。インデックスリードアクセスすることによってリード動作、ライト動作はクリアされる。MEMACS_RGBアクセスの開始前には、必ずインデックスリードアクセスを行うべきである。
図180は、メモリアクセスレジスタABS : MEMACS_ABSの詳細テーブルである。MEMACS_ABS[15:0]は、本LSIの全メモリエリアへの絶対アドレス指定でのアクセスに使用する。カメラ画像取り込み中、TVエンコーダへのデータ転送中、JPEG Codec動作中の読み出し動作は無視され、読み出した値は無効な値となる。
リード動作、ライト動作は2回ずつ行うべきである。2回ずつのアクセスが行われない場合は、リード動作、ライト動作は保証されない。1回のアクセスが行われない場合は、リード動作、ライト動作は保証されない。リードする場合は、最初に1回のダミーリードを行うべきである。リードとライトどちらのアクセスでも、アドレスはインクリメントされる。アクセスをする場合は、リードとライトのアクセスを混在させるべきではない。インデックスリードアクセスすることによって、リード動作、ライト動作はクリアされる。MEMACS_ABSアクセスの開始前には、必ずインデックスリードアクセスを行うべきである。
図181は、メモリ矩形アクセス開始X位置設定レジスタMEM_ADR_STXの詳細テーブルである。MEM_ADR_STX[8:0]はフレームメモリへの矩形アクセス開始Xアドレスを設定する。0〜508まで設定可能である。MEM_ADR_STXには偶数値を設定すべきである。MEM_ADR_STX < IMGHとなるように値を設定すべきである。
図182は、メモリ矩形アクセス開始Y位置設定レジスタMEM_ADR_STYの詳細テーブルである。MEM_ADR_STY[8:0]はフレームメモリへの矩形アクセス開始Yアドレスを設定する。0〜509まで設定可能である。MEM_ADR_STY < IMGVとなるように値を設定すべきである。
図183は、メモリ矩形アクセス終了X位置設定レジスタMEM_ADR_EDXの詳細テーブルである。MEM_ADR_EDX[8:0]はフレームメモリへの矩形アクセス終了Xアドレスを設定する。1〜509まで設定可能である。MEM_ADR_EDXには奇数値を設定すべきである。MEM_ADR_EDX < IMGHとなるように値を設定すべきである。また,MEM_ADR_EDX > MEM_ADR_STXとなるように値を設定すべきである。
図184は、メモリ矩形アクセス終了Y位置設定レジスタMEM_ADR_EDYの詳細テーブルである。MEM_ADR_EDY[8:0]はフレームメモリへの矩形アクセス終了Yアドレスを設定する。1〜510まで設定可能である。MEM_ADR_EDY < IMGVとなるように値を設定すべきである。また、MEM_ADR_EDY > MEM_ADR_STYとなるように値を設定すべきである。
図185は、(x,y)アドレス指定とメモリアドレスの関係 (例:176x220設定時)を示す表である。
図186は、メモリ絶対アドレス設定1レジスタMEM_ADR_ABS1の詳細テーブルである。図187は、メモリ絶対アドレス設定2レジスタMEM_ADR_ABS2の詳細テーブルである。[MEM_ADR_ABS2[1:0],MEM_ADR_ABS1[15:0]]は、本LSIのメモリ空間への絶対アドレスを設定する。設定内容は以下の通りである。
MEM_ADR_ABS2[1] = MSB
MEM_ADR_ABS1[0] = LSB
図188は、メモリデータ透明色設定レジスタMEMTRANSの詳細テーブルである。MEMTRANS[15:0]は、フレームメモリへのデータ書き込み時の透明色を設定する。ここで設定されたデータと同じ値の書き込みデータは、フレームメモリへは書き込まれない。この機能を使用することにより,表示データ上でアイコンの移動が実現できる(図189参照)。透明色データが書き込まれてもアドレスはインクリメントされる。透明色機能が使用できるのは、RGBフォーマットデータの書き込みだけである。
図189は、透明色設定を用いたアイコンデータの書き込みを示した模式図である。
図190は、メモリデータ透明色マスクレジスタMEMTRMSKの詳細テーブルである。MEMTRMSK[15:0]は、フレームメモリへのデータ書き込み時の透明色に対するマスクビットを設定する。マスクビットを”1”にした場合、対応する透明色設定レジスタの値はDon’t careとなる。例えば、MEMTRANS=0xFFFFとしてMEMTRMSK=0x0001と設定した場合、本LSIは0xFFFFと0xFFFEを透明色と認識し、同色のフレームメモリへの書き込みを行わない。
<TVエンコーダ>
画像処理ブロックは、TVエンコーダブロックに内部で接続し、フレームメモリのデータをTVに出力するTVエンコーダ I/Fを有している。TVエンコーダ ICへのデータ出力の際に最大8倍のバイリニアによる拡大機能も備えている。画像処理ブロックとTVエンコーダとの接続例を図191に示す。図191は、画像処理ブロックとTVエンコーダとの接続例を示すシステム接続図である。
TVエンコーダ I/Fが動作するHDMODE(IDX:00D8h HWMODE[3:0])は下記2モードである。
・NORMAL-VIEWERモード
・JPEG-DECODEモード
TVエンコーダ I/Fは、X方向、Y方向独立に最大8倍までの拡大機能を備えている。拡大はバイリニアで行う。バイリニア拡大は次式により計算する。
生成画素 = (x×y×α1 + x’×y×α2 + x×y’×β1 + x’×y’×β2)
図192は、拡大時の画素位置と生成画素を示す模式図である。
TVエンコーダへのインターフェースに関するレジスタ説明を行う。
図193は、TVエンコーダコントロールレジスタTE_CNTの詳細テーブルである。
OUT_FMTは、データ出力のフォーマットを設定する。設定内容は以下の通りである。
”0”:ITU-R.BT.601フォーマット
“1”:ITU-R.BT.656フォーマット
TE_VIDEO_Mは、NTSCまたはPALを選択する。設定内容は以下の通りである。
”0”:NTSC
“1”:PAL
TE_VFLIPは、フレームメモリのデータを上下反転してTVエンコーダに出力する。設定内容は以下の通りである。
”0”:通常出力
“1”:上下反転出力
TE_HFLIPは、フレームメモリのデータを左右反転してTVエンコーダに出力する。設定内容は以下の通りである。
”0”:通常出力
“1”:左右反転出力
TE_BACK_COL[3:0]は、背景表示色の色の指定をする。設定内容は以下の通りである。
0000b:青 0001b:黒 0010b:赤 0011b:緑
0100b:黄 0101b:シアン 0110b:マゼンダ 0111b:50%白
1000b:100%白 other:設定禁止
ENC_ON[1:0]は、TVエンコーダ I/F動作モード設定を行う。図194は、TVエンコーダ I/F動作設定表である。
図195は、TVエンコーダコントロールレジスタ2 : TE_CNT2の詳細テーブルである。ENC_ON[1]=’H’設定にした場合、MODE_SHTは’H’設定にすべきである。
図196は、フレームメモリ転送X開始位置TE_STXの詳細テーブルである。TE_STX[8:0]は、TVエンコーダへのフレームデータ転送開始X座標を設定する。0〜508まで設定可能である。TE_STXは偶数値を設定すべきである。偶数値が設定されない場合の動作は保証されない。TE_STX<IMGHとなるように設定すべきである。また、TE_EDX-TE_STX+1≦320となるように設定すべきである。
図197は、フレームメモリ転送Y開始位置TE_STYの詳細テーブルである。TE_STY[8:0]は、TVエンコーダへのフレームデータ転送開始Y座標を設定する。0〜509まで設定可能である。TE_STY<IMGV、TE_EDY-TE_STY+1≦320となるように設定すべきである。
図198は、フレームメモリ転送X終了位置TE_EDXの詳細テーブルである。TE_EDX[8:0]は、TVエンコーダへのフレームデータ転送終了X座標を設定する。1〜509まで設定可能である。TE_EDXは奇数値を設定すべきである。奇数値が設定されない場合の動作は保証されない。TE_STX<TE_EDX<IMGH、TE_EDX-TE_STX+1≦320となるように設定すべきである。
図199は、フレームメモリ転送Y終了位置TE_EDYの詳細テーブルである。TE_EDY[8:0]は、TVエンコーダへのフレームデータ転送終了Y座標を設定する。1〜510まで設定可能である。TE_STY<TE_EDY<IMGVとなるように設定すべきである。RGB_FRAME=”L”(IDX:0030h MEMCNT[12])の場合は奇数値を設定すべきである。また、TE_EDY-TE_STY+1≦320となるように設定すべきである。
図200は、水平方向拡大設定レジスタTE_EXPHの詳細テーブルである。TE_EXPH[9:0]は、TVエンコーダへ転送する拡大画像の水平方向拡大サイズを設定する。偶数値を設定すべきである。また、下記水平方向サイズは常に偶数になるように設定すべきである。TVエンコーダに転送する画像サイズは次式となる。
水平方向サイズ = TE_EDX - TE_STX + 1 + TE_EXPH(ただし、1~8倍までの範囲)
図201は、垂直方向拡大設定レジスタTE_EXPVの詳細テーブルである。TE_EXPV[9:0]は、TVエンコーダへ転送する拡大画像の垂直方向拡大サイズを設定する。TVエンコーダに転送する画像サイズは次式となる。
垂直方向サイズ = TE_EDY - TE_STY + 1 + TE_EXPV(ただし、1~8倍までの範囲)
図202は、TVエンコーダ出力水平方向スタート位置設定レジスタTE_OUTSTHの詳細テーブルである。TE_OUTSTH [9:0]は、TVエンコーダへ転送する際の水平方向スタート位置を設定する。このレジスタはOUT_FMT(IDX:00B0h TE_CNT[15])=“0”設定のときのみ有効である。OUT_FMTが”1”設定の場合は、常にTE_OUTSTHは”0”設定すべきである。
図203は、TVエンコーダ出力垂直方向スタート位置設定レジスタTE_OUTSTVの詳細テーブルである。TE_OUTSTV [8:0]は、TVエンコーダへ転送する際の垂直方向スタート位置を設定する。このレジスタはOUT_FMT(IDX:00B0h TE_CNT[15])=“0”設定のときのみ有効である。OUT_FMTが”1”設定の場合は、常にTE_OUTSTVは”0”設定すべきである。
TVエンコーダブロックに関する説明を行う。TVエンコーダインタフェイスブロックからのTV出力データを受け取って、コンポジット信号(CVBS)をTVエンコーダブロックが生成する。内蔵の電流DACからVOUT端子に付けた75Ωプルダウン(DAVSS)に電流を流すことにより、TV側終端75Ω時に1.25VPP(TYP)が出力される。この時、IREF端子は2.4KΩでプルダウンすべきである(DAVSS)。
アナログコンポジット出力フォーマットについて説明する。
図204は、NTSC設定での垂直ブランキング区間の波形図である。デフォルト設定では23ライン目から262ライン目、かつ286ライン目から525ライン目が表示される。
図205は、PAL設定での垂直ブランキング区間の波形図である。デフォルト設定では46ライン目から285ライン目、かつ359ライン目から598ライン目が表示される。
図206は、NTSC設定でのカラーバー波形図である。設定により、白レベル:100IREを108IREに、黒レベル:7.5IREを0IREにすることができる。
図207は、PAL設定でのカラーバー波形図である。設定により、白レベル:100IREを108IREに、黒レベル:0IREを−7IREにすることができる。
TVエンコーダに関連するレジスタ説明を行う。
図208は、パラメータ更新レジスタPARAMSETの詳細テーブルである。PARAM_SETは、“1”を書き込むことでパラメータの更新が行なわれる。書き込み後のフレームの先頭で内部パラメータが更新される。このビットは、更新後自動クリアされる。RESERVEDのビットには”0”を書くべきである。
図209は、モードレジスタMODEの詳細テーブルである。
MODE[1:0]は、TVエンコーダの動作モードを設定する。図210は、動作モード一覧表である。
TH_TYPEは、スルーモードの動作タイプの設定を行う。内部パイプライン段数に関係する設定であるが、本LSIでは”1”を設定すべきである。
SUSPは、TVエンコーダのサスペンドモードの設定を行う。サスペンドモードではTV出力はされない。設定内容は以下の通りである。
0 : サスペンドモード解除
1 : サスペンドモード
RESERVED1には”1”を、RESERVEDには”0”を書き込むべきである。
図211は、入力インタフェイスフォーマット指定レジスタYUVIFSETの詳細テーブルである。
YUV_XST[1:0]は、Hsync有効後のデータ有効までのディレイを設定する。00bを設定すべきである。
YUVORD[1:0]は、TVエンコーダへのYCbCrの入力フォーマット(順番)を設定する。本LSIでは10bを設定すべきである。
ITU656ENは、入力、出力のデジタルインタフェイスを設定する。TECNTレジスタ:IDX00B0hのOUT_FMT設定に合わせるべきである。設定内容は以下の通りである。
0: Hsync , Vsync別信号
1: ITU656フォーマット
RESERVED1には”1”を書き込むべきである。
図212は、モニタX方向画素サイズ設定レジスタXSIZE_L,XSIZE_Hの詳細テーブルである。XSIZE[10:0]は、使用するカメラのX方向の画素数を設定する。144〜1024まで設定できる。
図213は、モニタY方向画素サイズ設定レジスタYSIZE_L,YSIZE_Hの詳細テーブルである。YSIZE[10:0]は、使用するカメラのY方向の画素数を設定する。
図214は、TVエンコーダリセットレジスタPWDの詳細テーブルである。
DAC_POWは、TV_ENCODER内蔵のDAC動作をON/OFFする。リセット解除後はDACはONした状態から始まる。設定内容は以下の通りである。
0 : DAC動作ON
1 : DAC動作OFF
LOGIC_POWは、TV_ENCODER内部のクロックON/OFF制御を行う。設定内容は以下の通りである。
0 : 内部クロックをOFFします。
1 : 内部クロックをONします。
なお、リセット直後のイニシャル状態ではDAC動作ON状態から始まる。
図215は、TVエンコーダ表示モードレジスタDISPの詳細テーブルである。
LEVELは、TV_ENCODER内蔵のTVエンコーダのDAC出力白レベルを調整する。設定内容は以下の通りである。
0 : 白レベル100IRE相当
1 : 白レベル108IRE相当
DISP0は、TV_ENCODER内部のTVエンコーダの動作モードを選択する。スクウェアピクセルモードでは、水平方向の640ピクセルを720ピクセルに伸張する。クロック入力が27MHz以外の場合は、このビットに"0"を書くべきである。設定内容は以下の通りである。
0 : 等価ピクセルモード
1 : スクウェアピクセルモード
図216は、TVエンコーダビデオモードレジスタVIDEOの詳細テーブルである。
NTPALは、TV_ENCODER内蔵のTVエンコーダのビデオ出力モードを選択する。設定内容は以下の通りである。
0 : NTSC
1 : PAL
Q_FSCは、TV_ENCODER内部のTVエンコーダのクロック動作モードを選択する。選択したモードのクロックを入れるべきである。設定内容は以下の通りである。
0 : 27MHzクロック動作
1 : 4fscクロック動作(クロック入力は8fsc)
PAL28は、TV_ENCODER内部のTVエンコーダのクロック動作モードがPALで28.375MHzの場合にONする。設定内容は以下の通りである。
0 : PALで28.375MHzクロック動作しない場合
1 : PALで28.375MHzクロック動作する場合
なお、RESERVEDのビットには”0”を書くべきである。
使用可能な設定は図217のようになる。他の設定はすべきでない。図217は、TVエンコーダ周波数設定の一覧表である。
図218は、TVエンコーダビデオモードレジスタCVBSの詳細テーブルである。
CVBS_OUTは、TV_ENCODER内蔵のTVエンコーダのビデオ出力(DAC)のON/OFFを選択する。設定内容は以下の通りである。
0 : DAC出力は出ない。(この時29/32*VF_DAの電圧が出る。)
1 : DAC出力はCVBS(コンポジットビデオ信号)が出力される。
IMAGE_OUT[1:0]は、TV_ENCODER内部のTVエンコーダのビデオ出力データを選択する。設定内容は以下の通りである。
00b : RESERVED
01b : BGCOLレジスタで選んだ色が全ての画面範囲で出力される。
10b : RESERVED
11b : 映像が出力される。バックグラウンドエリアにはBGCOLレジスタで選んだ色が出力される。
図219はバックグラウンドカラーレジスタBGCOLの詳細テーブルである。BGCOL[3:0]はTV_ENCODER内蔵のTVエンコーダのビデオ出力(DAC)のバックグラウンド色を選択する。設定内容は以下の通りである。
00(hex) : BLUE background color [Default]
01(hex) : BLACK background color
02(hex) : RED background color
03(hex) : GREEN background color
04(hex) : YELLOW background color
05(hex) : CYAN background color
06(hex) : MAGENTA background color
07(hex) : GRAY background color
08(hex) : WHITE background color
その他:設定すべきでない。
図220は、TVエンコーダカラーバーテストレジスタCOLBARの詳細テーブルである。COLBARは、TV_ENCODER内蔵のTVエンコーダの出力をカラーバー出力とする。設定内容は以下の通りである。
0 : TV_ENCODERの入力データを出力
1 : 強制的にカラーバーを出力
図221は、TVエンコーダセットアップレジスタSETUPの詳細テーブルである。SETUPはNTSCかPALに応じた設定を行うべきである。設定内容は以下のとおりである。
0 : NTSCの場合は、0を設定すべきである。
1 : PALの場合には、1を設定すべきである。
図222は、TVエンコーダガンマコレクションレジスタ(GM_A0,GM_A1,GM_A2,GM_X0,GM_X1,GM_X2,GM_X3,GM_Y0,GM_Y1,GM_Y2,GM_Y3)の詳細テーブルである。ガンマコレクションカーブの設定は、図223に示す4点の座標と3つの傾き係数により決定される。図223は、ガンマコレクションカーブを示す図である。3つの傾き係数GM_A0,GM_A1,GM_A2は、上位4ビットが整数で、下位4ビットが少数点以下を表している。
ガンマカーブは、下記条件で近似されるガンマカーブとなっている。
1) X < x0の時
Y= y0
2) x0 ≦ X < x1の時
Y = a0 * (X - x0) + y0
3) x1 ≦ X < x2の時
Y = a1 * (X - x1) + y1
4) x2 ≦ X < x3の時
Y = a2 * (X - x2) + y2
5) x3 ≦ Xの時
Y = y3
図224は、ガンマコレクションレジスタの設定例を示す表である。なお、出力値16(10h)が0IRE、235(EBh)が100IREに対応する。また、図224に示す表の設定の場合、出力は最大値が235(EBh)に制限され、TV出力の白レベルは100IREに制限される。
図225は、入力有効開始ピクセルオフセット設定レジスタOFS_h,OFS_lの詳細テーブルである。このレジスタは、H_POSがTVエンコーダ出力時の表示オフセットであるのに対して、入力でのHSYNCからの有効データ開始ピクセルの設定をする。
図226は、TVエンコーダ有効データ幅設定レジスタWID_VD_h,WID_VD_lの詳細テーブルである。このレジスタは、水平ライン中の有効ピクセル数を設定する。初期値は320ピクセルとなっている。設定値は偶数とすべきである。また、設定範囲は100ピクセルから896ピクセルの間である。設定内容は以下の通りである。
WID_VD[1:0] : この2ビットには“00b”を書くべきである。
WID_VD[9:0] : 000(hex)〜063(hex)の値は設定すべきでない。
064(hex) : 100 pixels
|
|
140(hex) : 320 pixels [Default]
| ex.) At QVGA image input
|
2D0(hex) : 720 pixels
|
|
3F0(hex) : 1008 pixels
3F1(hex)〜3FF(hex)の値は設定すべきでない。
なお、WID_VDレジスタは4の倍数となるよう設定すべきである。
図227は、TVエンコーダ有効ライン幅設定レジスタHT_VDの詳細テーブルである。このレジスタはフィールド内の有効ライン数を設定する。初期値は240である。設定できる値の範囲は100から254ラインまでである。設定内容は以下の通りである。
HT_VD[0] : このビットには“0”を書いて下さい。
HT_VD[7:0] : 00(HEX)〜63(HEX)の値は設定しないで下さい。
64(HEX) : 100 lines
|
|
F0(HEX) : 240lines ;デフォルト VGAイメージに相当する。
|
|
FE (HEX) : 254lines
図228は、TVエンコーダ水平表示位置オフセットレジスタH_POSの詳細テーブルである。このレジスタは、ライン内の水平表示位置のオフセットを設定する。初期値は0である。設定できる範囲は0〜504ピクセルである。表示される水平位置のオフセットは以下の式で表される。
表示水平位置のオフセット値 : H_POS[7:0] x 2 [Pixel]
また、H_POSレジスタの設定内容は以下の通りである。
H_POS[1:0] : この2ビットには“00b”を書き込むべきである。
H_POS[7:0] : 00(HEX) デフォルト位置
04(HEX) 右に8ピクセルシフトした位置のスクリーン上に表示
|
|
FC(HEX) 右に504ピクセルシフトした位置のスクリーン上に表示
FD(HEX)〜FF(HEX)の値は設定すべきでない。
図229は、TVエンコーダ垂直表示位置オフセットレジスタV_POSの詳細テーブルである。このレジスタは、フィールド内の垂直表示位置のオフセットを設定する。初期値は0である。設定できる範囲は0〜120ラインである。表示される垂直位置のオフセットは以下の式で表される。
表示垂直位置のオフセット値 : V_POS[7:0]+4(line in a field) (NTSCの場合)
表示垂直位置のオフセット値 : V_POS[7:0]+23(line in a field) (PALの場合)
また、V_POSレジスタの設定内容は以下の通りである。
V_POS[1:0] : この2ビットには“00b”を書き込むべきである。
V_POS[7:0] : 00(HEX) デフォルト位置
04(HEX) 上に8ラインシフトした位置のスクリーン上に表示
|
|
78(HEX) 上に240ラインシフトした位置のスクリーン上に表示
79(HEX)〜7F(HEX)の値は設定すべきでない。
80(HEX) デフォルト位置と同じ
84(HEX) 下に8ラインシフトした位置のスクリーン上に表示
|
|
F8(HEX) 下に240ラインシフトした位置のスクリーン上に表示
F9(HEX)〜FF(HEX)の値は設定すべきでない。
図230は入力有効開始ラインオフセット設定レジスタV_OFSの詳細テーブルである。このレジスタは、V_POSがTVエンコーダ出力時の表示オフセットであるのに対して、入力でのVSYNCからの有効データ開始ラインの設定をする。
図231は、表示位置変更レジスタの設定内容を示す模式図である。
図232は、初期化レジスタSRSTの詳細テーブルである。このレジスタは、ソフトウェアリセットレジスタである。“1”を書き込むことで該当ブロックがリセットされる。"1"を書き込むことのみ有効である。ソフトウェアリセット後100nsの間はアクセスすべきでない。ハードウェアリセット後、ソフトウェアリセットをする必要はない。設定内容は以下の通りである。
SRST_TVE : “1”を書き込むことでTVエンコーダブロックのリセットを行う。
“0”を書き込むことでリセットは解除される。
SRST_REG : “1”を書き込むことでレジスタのリセットを行る。
リセットは自動的に解除され、イニシャルの値に戻る。
<JPEG Codec>
本LSIは、ISO/IEC10918のベースライン方式に準拠したJPEG Codecを内蔵している。本LSIには下記2つのJPEG動作モードがある。
J-1:CAMERA-JPEGモード
CAMERA-JPEGモードでは、圧縮画像サイズの幅(CAMREX-CARSY+1)が4の倍数である必要があり、圧縮画像サイズの高さ(CAMREY-CAMRSY+1)が8の倍数である必要がある。
IDX:001Bh(CAMRSX)、IDX:001Ch(CAMRSY)、IDX:001Dh(CAMREX)、IDX:001Eh(CAMREY)
J-2:JPEG-DECODEモード
JPEG動作制御について説明する。
図233は、JPEG制御レジスタJPG_CNTの詳細テーブルである。
JE_CONTINUEは、Camera_JPEG連続モードを設定する。設定内容は以下の通りである。
"0":フレームメモリには1枚のカメラJPEGのみ
"1":フレームメモリに複数のカメラJPEGデータが書き込まれる
連続モード中に"0"を書き込むと、その時点でのJPEGエンコードが完了すると連続モードから抜け出す。
SWRSTは、JPEG Codecにソフトウェアリセットをかける。設定内容は次の通りである。
“0”: リセット解除
“1”: リセット
JD_STは、JPEGデコードスタートビットである。このビットに”1”を書き込むことによりJPEGデコードがスタートする。このビットはJPEG-DECODEモードでのみ使用可である。読み出し時は,常に“0”が読み出される。このビットへの“1”書き込み後、5×tSCLK間はホストアクセスすべきでない。
JE_STは、JPEGエンコードスタートビットである。このビットに”1”を書き込むことによりJPEGエンコードがスタートする。このビットはCAMERA-JPEGモード時でのみ使用可である。読み出し時は,常に”0”が読み出される。CAMERA-JPEGモード時にJE_STに”1”を書き込むと直近のカメラフレームを取り込み、エンコードが完了すると動作を停止する。このビットへの“1”書き込み後、5×tSCLK間はホストアクセスすべきでない。
なお、RESERVEレジスタに"1"書き込みを行うべきではない。
図234は、JPEGステータス1レジスタJPG_ST1の詳細テーブルである。
JE_STATは、JPEGエンコード中ステータスビットである。このビットは読み出し専用である。設定内容は以下の通りである。
“0”: エンコード停止
“1”: エンコード中
JD_STATは、JPEGデコード中ステータスビットである。このビットは読み出し専用である。設定内容は以下の通りである。
“0”: デコード停止
“1”: デコード中
なお、RESERVEレジスタに"1"書き込みを行うべきではない。
図235は、JPEGステータス2レジスタJPG_ST2の詳細テーブルである。
JE_WORD_SIZEは、JPEG圧縮データのコードサイズが奇数ワードか偶数ワードかを示す。JPEGコードサイズ=[JE_CSIZE2,JE_CSIZE1]は常に偶数値であるので、JE_WORD_SIZE=”1”の場合、ホストは[JE_CSIZE2,JE_CSIZE1] - 1)回の読み出しを行うべきである。設定内容は以下の通りである。
“0”: 偶数ワード
“1”: 奇数ワード
JE_ODD_LENは、JPEG圧縮データのコードサイズが奇数バイトであるか偶数バイトであるかを示す。奇数バイトの場合は、JPEG圧縮データの最終ワードの上位バイト(SWAP_BYTEが“0”のとき)が無効になるので、ホストで削除すべきである。設定内容は以下の通りである。
“0”: コードサイズは偶数バイト
“1”: コードサイズは奇数バイト
なお、オーバーフローが発生した場合は、SWRSTでJPEG Codecにソフトウェアリセットをかけるべきである。
JD_ERROR[4:0]は、JPEGデコードエラーステータスである。このビットは読み出し専用である。各ビットは1つのエラー要因に対応する。エラーが発生した場合はいずれかのビットが“1”になり、ただちにデコード動作が停止する。いったん終了して最初からデコードを行う場合は、一度READYモードに設定してSCLKを5クロック以上供給すればよい。
図236は、JPEGデコードエラーステータスの各ビットとエラー要因の一覧表である。
図237は、JPEGステータス3レジスタJPG_ST3の詳細テーブルである。RESERVEレジスタに"1"書き込みを行うべきではない。
JPEG ENCODEについて説明する。本LSIはエンコードする際、JPEGコードを2バイト単位で処理する。従って、エンコードのサイズによって、End Of Image(0xFFD9)の前に0xFFが挿入され、…FFFFD9となる場合がある。
図238は、JPEG圧縮制御レジスタJE_CNTの詳細テーブルである。
JE_HFLIPは、カメラJPEGエンコード画像の左右反転(Y軸を中心に反転)の有無を制御する。設定内容は以下の通りである。
“0”: カメラJPEGエンコード画像の左右反転なし。
“1”: カメラJPEGエンコード画像の左右反転あり。
JE_HEAD[0]は、JPEGエンコード時のヘッダの付加を制御する。設定内容は以下の通りである。
“0”: ヘッダなし
“1”: ヘッダあり。
JE_HEAD[1]は、DHTテーブルの付加を制御する。設定内容は以下の通りである。
“0”: DHTテーブルの付加なし
“1”: DHTテーブルの付加あり
JE_HEAD[2]は、DQTテーブルの付加を制御する。設定内容は以下の通りである。
“0”: DQTテーブルの付加なし
“1”: DQTテーブルの付加あり
JE_HEAD[3]は、"JFIF”識別子の付加を制御する。設定内容は以下の通りである。
“0”: “JFIF”の付加なし
“1”: “JFIF”の付加あり
JE_Q[4:0]は、JPEGエンコード時の圧縮率を選択する。設定内容は以下の通りである。
“00000”:最高画質(低圧縮率)
:
“11111”:最低画質(最高圧縮率)
なお、RESERVEレジスタに"1"書き込みを行うべきではない。
図239は、JPEGコードサイズレジスタ1 : JE_CSIZE1の詳細テーブルである。JE_CSIZE1[15:0]は、JPEG圧縮データのコードサイズを表す。[JE_CSIZE2,JE_CSIZE1[15:0]]でコードサイズを表す(16bit単位)。CAMERA-JPEGモードの時は書き込みデータが160KBをオーバーすると”0”に戻る。
図240は、JPEGコードサイズレジスタ2 : JE_CSIZE2の詳細テーブルである。JE_CSIZE2は、JPEG圧縮データのコードサイズを表す。[JE_CSIZE2,JE_CSIZE1[15:0]]でコードサイズを表す(16bit単位)。CAMERA-JPEGモードの時は書き込みデータが160KBをオーバーすると”0”に戻る。
JPEG圧縮データのコードサイズをバイト単位で求める場合の計算式は次のようになる。Nはリングメモリの読み出し周回数である。この時、JE_ODD_LENは各フレームごとの総和となる。
Code Size = 160×1024×N + (JE_CSIZE − JE_WORD_SIZE)×2 − JE_ODD_LEN (byte)
図241はJPEGコードサイズプリレジスタ1 : JE_CSIZE1_PREの詳細テーブルである。JE_CSIZE1_PRE[15:0]は、JPEG圧縮が完了し、JE_ED_INTが発生した時のJPEGデータのコードサイズを表す。[JE_CSIZE2_PRE,JE_CSIZE1_PRE[15:0]]でコードサイズを表す(16bit単位)。CAMERA-JPEGモードの時は書き込みデータが160KBをオーバーすると”0”に戻る。
図242はJPEGコードサイズプリレジスタ2 : JE_CSIZE2_PREの詳細テーブルである。JE_CSIZE2_PREは、JPEG圧縮が完了し、JE_ED_INTが発生した時のJPEGデータのコードサイズを表す。[JE_CSIZE2_PRE,JE_CSIZE1_PRE[15:0]]でコードサイズを表す(16bit単位)。CAMERA-JPEGモードの時は書き込みデータが160KBをオーバーすると”0”に戻る。
JPEG DECODEについて説明する。
図243は、JPEGコードYUVフォーマット設定レジスタJD_PICTYPEの詳細テーブルである。
JD_FILLは、Fillビットの確認方法を設定する。設定内容は以下の通りである。
“0”: Fillビットを確認しない。
“1”: 1Fillになっていなければエラーを発生する。
JD_CODE_SIZEは、JPEGコードを書き込む際のコードサイズを選択する。設定内容は以下の通りである。
“0”: 5KB毎に書き込み。
“1”: 16KB毎に書き込み。
JD_PICTYPE[2:0]は、デコードするJPEGコードのYUVフォーマットを設定する。設定するYUVフォーマットはヘッダのSOFnマーカから判別する。図244は、レジスタ設定値とYUVフォーマットの関係表である。
なお、RESERVEレジスタに"1"書き込みを行うべきではない。また、RESERVE1レジスタに"0"書き込みを行うべきではない。
図245はリスタートインターバル設定レジスタJD_INTERVALの詳細テーブルである。デコードするJPEGコードのヘッダからリスタートインターバル定義セグメント(DRI)を抽出して、JD_INTERVAL[15:0]に設定すべきである。
図246は、JPEGコードX方向サイズ設定レジスタJD_XSIZEの詳細テーブルである。JD_XSIZE[10:0]は、デコードするJPEGコードのX方向サイズを設定する。2〜1600まで設定可能である。デコード対象のJPEGファイルのヘッダからX方向サイズを抽出して設定すべきである。偶数値を設定すべきである。デコード対象のJPEGファイルのX方向が奇数の場合は、+1した値を設定すべきである。
図247は、JPEGコードY方向サイズ設定レジスタJD_YSIZEの詳細テーブルである。JD_YSIZE[10:0]は、デコードするJPEGコードのY方向サイズを設定する。1〜1600まで設定可能である。デコード対象のJPEGファイルのヘッダからY方向サイズを抽出して設定すべきである。
図248は、輝度DC成分用ハフマンテーブル1設定レジスタJD_HUF_Y_DC1の詳細テーブルである。JD_HUF_Y_DC1[3:0]は、デコードするJPEGコードのヘッダから輝度DC成分用のハフマンテーブルのコード部を抽出して設定すべきである。16データを1から16まで連続して書き込むべきである。読み出し時はインデックスリードをした後、レジスタリードを行うべきである。
図249は、輝度AC成分用ハフマンテーブル1設定レジスタJD_HUF_Y_AC1の詳細テーブルである。JD_HUF_Y_AC1[7:0]は、デコードするJPEGコードのヘッダから輝度AC成分用のハフマンテーブルのコード部を抽出して設定すべきである。16データを1から16まで連続して書き込むべきである。読み出し時はインデックスリードをした後、レジスタリードを行うべきである。
図250は、色差DC成分用ハフマンテーブル1設定レジスタJD_HUF_C_DC1の詳細テーブルである。JD_HUF_C_DC1[3:0]は、デコードするJPEGコードのヘッダから色差DC成分用のハフマンテーブルのコード部を抽出して設定すべきである。16データを1から16まで連続して書き込むべきである。読み出し時はインデックスリードをした後、レジスタリードを行うべきである。
図251は、色差AC成分用ハフマンテーブル1設定レジスタJD_HUF_C_AC1の詳細テーブルである。JD_HUF_C_AC1[7:0]は、デコードするJPEGコードのヘッダから色差AC成分用のハフマンテーブルのコード部を抽出して設定すべきである。16データを1から16まで連続して書き込むべきである。読み出し時はインデックスリードをした後、レジスタリードを行うべきである。
図252は、RESERVEレジスタ1,2:RESERVEの詳細テーブルである。RESERVEレジスタに"1"書き込みを行うべきではない。
メモリリングバッファモードについて説明する。リングバッファモードとしてCAMERA-JPEGモードがある。リングパッファのサイズはモードによって異なり、CAMERA-JPEGモードで160KBである(図253を参照)。
CAMERA-JPEGモードは、カメラからの画像データをJPEG圧縮する。JPEGコードがフレームメモリサイズ160KBを超える場合にフレームメモリをリングバッファとして使用することにより、160KB以上のコードをホストが読み出すことができる。ホストは、下記の2種類の割り込みでJPEGコードの書き込み状態を知ることができる。
RING_INT : JPEGコード/画像データバンクライト完了割り込み
JE_ED_INT : JPEGエンコード終了割り込み(IDX:00DCh)
CAMERA-JPEGモードに設定するとJPEG回路がリセットされるため、SWRST(IDX:0080h JPG_CNT[7])に”1”を書き込んでソフトリセットをかけるべきである。
本LSIのJPEGコードメモリ(フレームメモリを共有)は、図253のような構成になっている。図253は、フレームメモリバンク構成図である。
JPEGコードのコードメモリへの書き込みがRING_COUNTレジスタ(IDX:0086h)設定に従ったサイズになった時点でRING_INTを発生する。この割り込みを受けて、ホストは読み出し可能なJPEGコード/画像データをRING_RD, RING_RD_YUV, RING_RD_RGBレジスタにリードアクセスすることで読み出す。また、JPEG ENCODE時にJE_ED_INTが発生すると画像データのJPEGエンコードが終了しているので、JPEGコードサイズレジスタ(JE_CSIZE1(IDX:0091h), JE_CSIZE2(IDX:0092h))をアクセスしてフレームメモリ内に残っているJPEGコードを読み出すべきである。モード終了後は、BU1511KV2を一旦READY状態にすべきである。
図254はRING_INT発生制御レジスタRING_CNTの詳細テーブルである。RING_CNT[1:0]は、RING_INT割り込みの発生サイズを設定する。設定内容は以下の通りである。
“00”: 32KB毎に発生
“01”: 64KB毎に発生
“10”: 96KB毎に発生
“11”: 128KB毎に発生
図255は、RING_INT発生回数レジスタRING_COUNTの詳細テーブルである。RING_COUNT[7:0]は、RING_INT割り込みの発生回数を示す。
図256は、リングバッファリードデータRING_RDの詳細テーブルである。RING_RD[15:0]はCAMERA-JPEGモードで有効である。フレームメモリ中のJPEGコードの読み出しに使用する。このレジスタをリードアクセスすることでフレームメモリへのアドレスを自動インクリメントする。また、フレームメモリへのアドレスが160KBを超えないようにフレームアドレスが自動的に“0”になる自動フレームアドレスループ機能も備えている。フレームメモリへのアドレスは、HDMODEをREADYに移行させることによってリセットされる。モード移行後に最初にリードする場合は、1回のダミーリードを行うべきである。
<ADPCMオーディオインタフェイス>
本LSIは、I2Sインタフェイス、PCM入力インタフェイスを持っている。内部にはADPCMコーデックも内蔵し、図257のような構成となっている。図257は、オーディオインタフェイスとADPCMコーデックのブロックダイアグラムである。
ADPCM再生に関連するレジスタ説明を行う。
図258は、オーディオ・コモンセットアップレジスタ1 : COMMON_SETUP1の詳細テーブルである。
AUDOFは、オーディオシリアル入出力データのフォーマットを選択する。設定内容は以下の通りである。
“0”: Standard Left Justifiedフォーマット
“1”: IISフォーマット
AUDOENは、AUDDTO端子からのオーディオデータ出力イネーブルである。設定内容は以下の通りである。
“0”: 無効(AUDDTO= "L")
“1”: 有効
AUDCKSELは、使用するタイミング、クロックを設定する。設定内容は次の通りである。
“0”: AUDLRO,AUDCKOに同期する。
“1”: AUDLRI,AUDCKIに同期する。
AUDMCKENは、外部DACへのマスタークロック制御イネーブル/ディスエーブルである。設定内容は以下の通りである。
“0”: AUDMCKO端子出力をマスタークロックとしない(ディスエーブル)。
“1”: AUDMCKO端子出力をマスタークロックとします(イネーブル)。
AUD_MUTEは、ADPCM再生を強制的にミュートする。ADPCM録音は本ビットではミュートしない。設定内容は以下の通りである。
“0”: 通常再生
“1”: ミュート
RESERVEレジスタに"1"書き込みを行うべきではない。
図259は、オーディオ・コモンセットアップレジスタ2 : COMMON_SETUP2の詳細テーブルである。AUDOCKSELは、デジタルオーディオデータの出力タイミングを選択する。その設定内容は以下の通りである。
“0”: 内部クロック同期
(本LSIの内部クロックに同期してデジタルオーディオ出力する)
“1”: 外部クロック同期
(本LSI以外からのAUDCKI、AUDLRI信号に同期してデジタルオーディオ出力する)
なお、RESERVEレジスタに"1"書き込みを行うべきではない。また、RESERVE1レジスタに"0"書き込みを行うべきではない。
図260はADPCMチャンネルボリュームレジスタADPCM_CH_VOLの詳細テーブルである。
MASTER_SLAVEは、ADPCM decoderのチャンネルを選択する。設定内容は以下の通りである。
“0”: スレーブチャンネル出力ボリュームを選択
“1”: マスターチャンネル出力ボリュームを選択
ADPCM_CHANNEL_VOLUME[6:0]は、ADPCM decoderのボリュームを設定する。レベル特性はリニアである。マスター/スレーブチャンネルとも初期値は40hである。設定内容は以下の通りである。
00h: 最小(ミュート)
7Fh: 最大
図261は、ADPCMマスターチャンネルボリュームレジスタADPCM_MASTER_LR_VOLの詳細テーブルである。
MASTER_LRは、ADPCM マスターチャンネルのL/Rを選択する。設定内容は以下の通りである。
“0”: マスターチャンネルの左ボリュームを選択
“1”: マスターチャンネルの右ボリュームを選択
ADPCM_ MASTER_LR _VOLUME [6:0]は、ADPCM decoderマスターチャンネルのボリュームを設定する。レベル特性はリニアである。左右とも初期値は40hである。設定内容は以下の通りである。
00h: 最小(ミュート)
7Fh: 最大
図262は、ADPCMスレーブチャンネルボリュームレジスタADPCM_SLAVE_LR_VOLの詳細テーブルである。
SLAVE_LRは、ADPCM decoderスレーブチャンネルのL/Rを選択する。設定内容は以下の通りである。
“0”: スレーブチャンネルの左ボリュームを選択
“1”: スレーブチャンネルの右ボリュームを選択
ADPCM_ MASTER_LR _VOLUME [6:0]は、ADPCM decoderスレーブチャンネルのボリュームを設定する。レベル特性はリニアである。左右とも初期値は40hである。設定内容は以下の通りである。
00h: 最小(ミュート)
7Fh: 最大
IDX_ADDRESS : 0103h, 0104h, 0105hによるADPCMのトータルでの出力レベルは、マスターチャンネルを例にとると、20 log10((IDX_ADDRESS : 0103h設定値x IDX_ADDRESS : 0104h設定値) / (64 x 64)) [dB]となる。
図263は、ADPCM割り込みステータスレジスタ(READ時) : ADPCM_INT_STATUSの詳細テーブルである。なお、WRITE時は何も起こらない。
ADPCM_MASTER_INTは、ADPCMマスターFIFOに起因する割込みステータスが読み出せる。内容は以下の通りである。
“0”: 割り込みなし、もしくはクリア後
“1”: ADPCMマスターFIFOに起因する割り込み発生
EMPTY、NEAR_EP、NEAR_FL (IDX_ADDRESS : 0108h )、ADPCM_MASTER_FIFO_STATUS[7:5])のいずれかが“1”に変化
ADPCM_SLAVE_INTは、ADPCMスレーブFIFOに起因する割込みステータスが読み出せる。内容は以下の通りである。
“0”: 割り込みなし、もしくはクリア後
“1”: ADPCMスレーブFIFOに起因する割り込み発生
EMPTY、NEAR_EP、NEAR_FL (IDX_ADDRESS : 0109h)、ADPCM_SLAVE_FIFO_STATUS[7:5])のいずれかが“1”に変化
図264は、ADPCMマスターFIFOステータスレジスタ(WRITE時) : ADPCM_MASTER_FIFO_STATUSの詳細テーブルである。
CLEAR_EMPTYは、本レジスタのEMPTYをクリアする。設定内容は以下の通りである。
“0”: EMPTYをクリアしない
“1”: EMPTYをクリア
CLEAR_NEAR_EPは、本レジスタのNEAR_EPをクリアする。設定内容は以下の通りである。
“0”: NEAR_EPをクリアしない
“1”: NEAR_EPをクリア
CLEAR_NEAR_FLは、本レジスタのNEAR_FLをクリアする。設定内容は以下の通りである。
“0”: NEAR_FLをクリアしない
“1”: NEAR_FLをクリア
CLEAR_FULLは、本レジスタのFULLをクリアする。設定内容は以下の通りである。
“0”: FULLをクリアしない
“1”: FULLをクリア
FIFO_CLEARは、ADPCMマスターFIFOを初期化する。再生中に本ビットを操作した場合、再生曲は保証されない。設定内容は以下の通りである。
“0”: ADPCMマスターFIFOを初期化しない
“1”: ADPCMマスターFIFOを初期化
SLAVE_START2は、ADPCMスレーブチャンネルの動作を設定する。“1”書き込み後、自動的にクリアされる。FIFO_EMPTYが“1”になるまで、またはADPCMデータ0hを8回連続検出するまで再生は停止しない。再生中に本ビットを操作した場合は、再生音の保証はない。本ビットおよびMASTER_STARTを同時に利用することによってADPCMの2チャンネルを同期させてスタートすることができる。設定内容は以下の通りである。
“0”: ADPCMスレーブチャンネルデコードスタートしない
“1”: ADPCMスレーブチャンネルデコードスタート
MASTER_STARTは、ADPCMマスターチャンネルのスタート/停止を設定する。ADPCM演奏/録音のいずれの動作をするかは、ADPCM_MASTER_RECODE(IDX_ADDRESS : 0118h)、ADPCM_REC_MODE[4])設定により決定する。設定内容は以下の通りである。
“0”: ADPCMマスターチャンネル停止
“1”: ADPCMマスターチャンネルスタート
図265は、ADPCMマスターFIFOステータスレジスタ(READ時) : ADPCM_MASTER_FIFO_STATUSの詳細テーブルである。
EMPTYは、ADPCMマスターFIFOの状態がEMPTYでない状態からEMPTYに推移すると、”1”に切り替わる。内容は以下の通りである。
“0”: EMPTYでない、もしくはクリア後
“1”: ADPCMマスターFIFOの状態がEMPTYでない状態からEMPTYに推移
NEAR_EPは、ADPCMマスターFIFO内データ量がNEARLY_EMPTY_SETUP(IDX_ADDRESS :010Ch)であり、ADPCM_FIFO_SETUP[1:0])設定値に達したことが読み出せる。内容は以下の通りである。
“0”: NEAR_EPでない、もしくはクリア後
“1”: ADPCMマスターFIFOの状態がNEAR EMPTYでない状態からNEAR EMPTYに推移
NEAR_FLは、ADPCMマスターFIFO内データ量がNEARLY_FULL_SETUP (IDX_ADDRESS :010Ch)であり、ADPCM_FIFO_SETUP[5:4])設定値に達したことが読み出せる。内容は以下の通りである。
“0”: NEAR_FLでない、もしくはクリア後
“1”: ADPCMマスターFIFOの状態がNEAR FULLでない状態からNEAR FULLに推移
FULLは、ADPCMマスターFIFO内データ量がFIFO容量(1KBYTE)一杯になった時に”1”となる。内容は以下の通りである。
“0”: FIFO容量がFULL状態になっていない、もしくはクリア後
“1”: ADPCMマスターFIFOの状態がFULL状態になった時
EMPTY_AREAは、ADPCMマスターFIFO内データ量がNEARLY_EMPTY_SETUP(IDX_ADDRESS : 010Ch)であり、ADPCM_FIFO_SETUP[1:0])設定値より少ない状態にあることが読み出せる。内容は以下の通りである。
“0”: ADPCMマスターFIFO内データ量がNEARLY_EMPTY_SETUP設定値以上である
“1”: ADPCMマスターFIFO内データ量がNEARLY_EMPTY_SETUP設定値より少ない
FULL_AREAは、ADPCMマスターFIFO内データ量がNEARLY_FULL_SETUP (IDX_ADDRESS : 010Ch)であり、ADPCM_FIFO_SETUP[5:4])設定値より多い状態にあることが読み出せる。内容は以下の通りである。
“0”: ADPCM FIFO内データ量がNEARLY_FULL_SETUP設定値以下である
“1”: ADPCM FIFO内データ量がNEARLY_FULL_SETUP設定値より多い
BUSYは、ADPCMマスターチャンネルの動作/停止状態が読み出せる。内容は以下の通りである。
“0”: ADPCMマスターチャンネル停止中
“1”: ADPCMマスターチャンネル動作中
図266は、ADPCMスレーブFIFOステータスレジスタ(WRITE時) : ADPCM_SLAVE_FIFO_STATUSの詳細テーブルである。
CLEAR_EMPTYは、本レジスタのEMPTYをクリアする。設定内容は以下の通りである。
“0”: EMPTYをクリアしない
“1”: EMPTYをクリア
CLEAR_NEAR_EP は、本レジスタのNEAR_EPをクリアする。設定内容は次の通りである。
“0”: NEAR_EPをクリアしない
“1”: NEAR_EPをクリア
CLEAR_NEAR_FL は、本レジスタのNEAR_FLをクリアする。設定内容は次の通りである。
“0”: NEAR_FLをクリアしない
“1”: NEAR_FLをクリア
CLEAR_FULLは、本レジスタのFULLをクリアする。設定内容は以下の通りである。
“0”: FULLをクリアしない
“1”: FULLをクリア
FIFO_CLEARは、ADPCMスレーブFIFOを初期化する。再生中に本ビットを操作した場合、再生曲は保証されない。設定内容は以下の通りである。
“0”: ADPCMスレーブFIFOを初期化しない
“1”: ADPCMスレーブFIFOを初期化
SLAVE_STARTは、ADPCMスレーブチャンネルのスタート/停止を設定する。設定内容は以下の通りである。
“0”: ADPCMスレーブチャンネル停止
“1”: ADPCMスレーブチャンネルスタート
図267は、ADPCMスレーブFIFOステータスレジスタ(READ時) : ADPCM_SLAVE_FIFO_STATUSの詳細テーブルである。
EMPTYは、ADPCMスレーブFIFOの状態がEMPTYでない状態からEMPTYに推移すると、”1”に切り替わる。内容は以下の通りである。
“0”: EMPTYでない、もしくはクリア後
“1”: ADPCMスレーブFIFOの状態がEMPTYでない状態からEMPTYに推移
NEAR_EPは、ADPCMスレーブFIFO内データ量がNEARLY_EMPTY_SETUP(IDX_ADDRESS :010Ch)であり、ADPCM_FIFO_SETUP[1:0])設定値に達したことが読み出せる。内容は以下の通りである。
“0”: NEAR EMPTYでない、もしくはクリア後
“1”: ADPCMスレーブFIFOの状態がNEAR EMPTYでない状態からNEAR EMPTYに推移
NEAR_FLは、ADPCMスレーブFIFO内データ量がNEARLY_FULL_SETUP (IDX_ADDRESS :010Ch)であり、ADPCM_FIFO_SETUP[5:4])設定値に達したことが読み出せる。内容は以下の通りである。
“0”: NEAR FULLでない、もしくはクリア後
“1”: ADPCMスレーブFIFOの状態がNEAR FULLでない状態からNEAR FULLに推移
FULLは、ADPCMスレーブFIFO内データ量がFIFO容量(1KBYTE)一杯になった時に”1”となる。内容は以下の通りである。
“0”: FIFO容量がFULL状態になっていない、もしくはクリア後
“1”: ADPCMマスターFIFOの状態がFULL状態になった時
EMPTY_AREAは、ADPCMスレーブFIFO内データ量がNEARLY_EMPTY_SETUP(IDX_ADDRESS : 010Ch)であり、ADPCM_FIFO_SETUP[1:0])設定値より少ない状態にあることが読み出せる。内容は以下の通りである。
“0”: ADPCMスレーブFIFO内データ量がADPCM FIFOセットアップレジスタ設定値以上である
“1”: ADPCMスレーブFIFO内データ量がADPCM FIFOセットアップレジスタ設定値より少ない
FULL_AREAは、ADPCMスレーブFIFO内データ量がNEARLY_FULL_SETUP (IDX_ADDRESS : 010Ch)であり、ADPCM_FIFO_SETUP[5:4])設定値より多い状態にあることが読み出せる。内容は以下の通りである。
“0”: ADPCMスレーブFIFO内データ量がNEARLY_FULL_SETUP設定値以下である
“1”: ADPCMスレーブFIFO内データ量がNEARLY_FULL_SETUP設定値より多い
BUSYは、ADPCMスレーブチャンネルの動作/停止状態が読み出せる。内容は以下の通りである。
“0”: ADPCMスレーブチャンネル停止中
“1”: ADPCMスレーブチャンネル動作中
図268はADPCM FIFOセットアップレジスタADPCM_FIFO_SETUPの詳細テーブルである。
NEARLY_FULL_DISABLEは、ADPCM FIFO NEARY FULLの割り込みをマスクする。設定内容は以下の通りである。
“0”: マスク解除
“1”: マスク設定
NEARLY_FULL_SETUP[1:0]は、ADPCM FIFOの残り容量が本設定になるとNEAR_FL(IDX_ADDRESS : 0108h[5]、0109h[5])が“1”になる。設定内容は以下の通りである。ただし、( )内は2チャンネル再生モードでFIFOを使用時の場合である。
00b: 512バイト(256バイト)に設定
01b: 256バイト(128バイト)に設定
10b: 128バイト(64バイト)に設定
11b: 64バイト(32バイト)に設定
NEARLY_EMPTY_DISABLEは、ADPCM NEARY EMPTYの割り込みをマスクする。設定内容は以下の通りである。
“0”: マスク解除
“1”: マスク設定
NEARLY_ EMPTY _SETUP[1:0]は、ADPCM FIFOの残り容量が本設定になるとNEAR_EP(IDX_ADDRESS : 0108h[6]、0109h[6])が“1”になる。設定内容は以下の通りである。ただし、 ( )内は2チャンネル再生モードでFIFOを使用時の場合である。
00b: 511バイト(255バイト)に設定
01b: 255バイト(127バイト)に設定
10b: 127バイト(63バイト)に設定
11b: 63バイト(31バイト)に設定
本設定はADPCMのチャンネル毎の設定ができない。2チャンネルとも同一の設定になる。NEARLY_FULL_SETUP[1:0]、NEARLY_ EMPTY _SETUP[1:0]は、ADPCM再生中、録音中の変更は禁止である。NEARLY_FULL_DISABLE、NEARLY_EMPTY_DISABLEはINT端子のマスクを行う。IDX_ADDRESS : 0108h ADPCM_MASTER_FIFO_STATUS、0109h ADPCM_SLAVE_FIFO_STATUSは、この設定に関係なく動作する。
図269は、NEARLY_FULL_SETUP設定表である。ADPCMの再生モードはCH_CONTROL(IDX_ADDRESS : 0110h ADPCM_CH_CONTROL [7])によって決定する。
図270は、NEARLY_EMPTY_SETUP設定表である。ADPCMの再生モードはCH_CONTROL(IDX_ADDRESS : 0110h ADPCM_CH_CONTROL [7])によって決定する。
ADPCM録音に関連するレジスタ説明を行う。
図271は、ADPCM録音ボリュームレジスタADPCM_EXT_VOLの詳細テーブルである。ADPCM_EXT_VOL [7:0]は、ADPCM録音時のボリュームを設定する。レベル特性はリニアである。設定内容は以下の通りである。
00h: 最小(ミュート)
FFh: 最大
図272は、ADPCMマスターセットアップレジスタADPCM_MASTER_SETUPの詳細テーブルである。
MONO_STEREOは、ADPCMマスターチャンネル再生時のモノラル/ステレオを選択する。設定内容は以下の通りである。
“0”: モノラル
“1”: ステレオ
DATA_FORMAT[2:0]はADPCMマスターチャンネルのデータ格納フォーマットを選択する。再生時はADPCMデータにあわせて設定すべきである。録音時は設定したフォーマットのADPCMデータが生成される。設定内容は以下の通りである。
000b: ADPCM4bit(ROHM 4bit) 001b: PCM8bit(オフセットバイナリ)
010b: PCM8bit(2の補数バイナリ) 011b: PCM16bit(2の補数バイナリ)
100b: G711.1 u-Law(8bit) 101b: G711.1 A-Law(8bit)
110b: デジタルオーディオ入力(再生のみ) 111b: 設定禁止
SAMPLING_RATE[1:0]は、ADPCMマスターチャンネルのサンプリングレートを選択する。再生時はADPCMデータにあわせて設定すべきである。録音時は設定したフォーマットのADPCMデータが生成される。設定内容は以下の通りである。
00b: 4kHz(mainサンプリングレートに8倍アップサンプリング)
01b: 8kHz(4倍アップサンプリング)
10b: 16kHz(2倍アップサンプリング)
11b: 32kHz(アップサンプリングなし)
図273は、ADPCMスレーブセットアップレジスタADPCM_SLAVE_SETUPの詳細テーブルである。
MONO_STEREOは、ADPCMスレーブチャンネル再生時のモノラル/ステレオを選択する。設定内容は以下の通りである。
“0”: モノラル
“1”: ステレオ
DATA_FORMAT[2:0]はADPCMスレーブチャンネルのデータ格納フォーマットを選択する。ADPCMデータにあわせて設定すべきである。設定内容は以下の通りである。
000b: ADPCM4bit(ROHM 4bit) 001b: PCM8bit(オフセットバイナリ)
010b: PCM8bit(2の補数バイナリ) 011b: PCM16bit(2の補数バイナリ)
100b: G711.1 u-Law(8bit) 101b: G711.1 A-Law(8bit)
110b: デジタルオーディオ入力 111b: 設定禁止
SAMPLING_RATE[1:0]は、ADPCMスレーブチャンネルのサンプリングレートを選択する。再生時はADPCMデータにあわせて設定すべきである。設定内容は以下の通りである。
00b: 4kHz(mainサンプリングレートに8倍アップサンプリング)
01b: 8kHz(4倍アップサンプリング)
10b: 16kHz(2倍アップサンプリング)
11b: 32kHz(アップサンプリングなし)
図274は、ADPCMチャンネルコントロールレジスタADPCM_CH_CONTROLの詳細テーブルである。CH_CONTROLは、ADPCMチャンネル数を選択する。設定内容は以下の通りである。
“0”: マスター1チャンネルのみ。
このときADPCMマスターFIFO容量は1024バイトになる。
“1”: マスターチャンネルとスレーブチャンネルの2チャンネル使用可。
このときADPCMマスター/スレーブFIFO容量はともに512バイトになる。
図275は、PCM IFフォーマット設定レジスタPCMIF_FORMATの詳細テーブルである。
PCMIF_CLKI_POLARITYは、AUDDTIを取り込むAUDCKIの変化点を選択する。設定内容は以下の通りである。
“0”: AUDCKIの立ち上がり
“1”: AUDCKIの立ち下がり
PCMIF_LRI_POLARITYは、AUDLRIを取り込むAUDLRIの変化点を選択する。設定内容は以下の通りである。
“0”: AUDLRIの立ち上がり
“1”: AUDLRIの立ち下がり
PCMIF_DIFFERENT_EDGEは、AUDDTIとAUDLRIの変化点が同一/異なるかを選択する。設定内容は以下の通りである。
“0”: 変化点が同一
“1”: AUDDTIの変化点よりAUDLRIの変化点が1/2クロック早い
PCMIF_LONG_FORMATは、AUDLRIの変化後、有効なAUDDTI開始点を選択する。設定内容は以下の通りである。
“0”: AUDLRIの変化より1クロック後のAUDDTIをMSBとする(SHORT)
“1”: AUDLRIの変化と同一クロックのAUDDTIをMSBとする(LONG)
PCMIF_BITS[3:0]は、AUDDTIの有効ビット数を設定する。有効ビット数 = 設定値 + 1である。設定内容は以下の通りである。
1101b: 14bit
0111b: 8bit(最小)
1111b: 16bit(最大)
図276は、オーディオデジタルIF入力設定レジスタAUDDTI_IF_INPUT_FORMATの詳細テーブルである。
ADPCM _FORMAT[1:0]は、オーディオデジタル入力フォーマットを選択する。設定内容は以下の通りである。
00b: Standerd Left Justifiedフォーマット
01b: Standerd Right Justifiedフォーマット
10b: IISフォーマット
11b: 設定禁止
ADPCM _ENABLE は、オーディオデジタル入力の動作/停止を設定する。設定内容は以下の通りである。
“0”: 停止
“1”: 動作
図277は、インターバル設定レジスタINTERVAL_SETTINGの詳細テーブルである。
OVER_SAMPLE_ENABLEは、オーディオ出力に対して、4点補間によるスムージング処理の有効/無効を設定する。設定内容は以下の通りである。
“0”: 無効
“1”: 有効
AUDMCKO_MODEは、サンプリング周期に対してAUDMCKOの周期を選択する。設定内容は以下の通りである。
“0”: 256Fs
“1”: 設定禁止
AUDCKI_MODEは、サンプリング周期に対してAUDCKIの周期を選択する。設定内容は以下の通りである。
"0": 64Fs
"1": 32Fs
PLAY_INTERVAL_VALUE[2:0]は、INTERVAL TIMER割り込み(設定時間ごとの割り込み)発生間隔を選択する。設定内容は以下の通りである。
000b: INTERVAL TIMER割り込み無し 001b: 8ms間隔で発生
010b: 16ms間隔で発生 011b: 80ms間隔で発生
100b: 160ms間隔で発生 101b: 320ms間隔で発生
110b: 640ms間隔で発生 111b: 1280ms間隔で発生
なお、RESERVEレジスタに"1"書き込みを行うべきではない。
図278は、ADPCM録音モード設定レジスタADPCM_REC_MODEの詳細テーブルである。
ADPCM_MASTER_RECODEは、ADPCMマスターチャンネルの再生/録音モードを設定する。設定内容は以下の通りである。
“0”: 再生
“1”: 録音
ADPCM_MASTER_REC_PATH[1:0]は、ADPCMマスターチャンネル録音時に入力データのフォーマットを選択する。設定内容は以下の通りである。
00b: G711.1 u-Law 01b: G711.1 A-Law
10b: PCMリニア(負数は2の補数表現) 11b: デジタルオーディオ入力
00b、01b、10bの設定時はPCMIF_BITS(IDX_ADDRESS : 0111h PCMIF_FORMAT1[3:0])で入力データのビット数が決定する。11b設定時はADPCM_FORMAT(IDX_ADDRESS : 0115h AUDDTI_IF_INPUT_FORMAT[2])で入力フォーマットが決定する。
なお、RESERVEレジスタに"1"書き込みを行うべきではない。
図279は、ADPCMマスターFIFOアクセスレジスタ(WRITE時): ADPCM_MASTER_FIFO_WINDOWの詳細テーブルである。ADPCM_MASTER_FIFO_DATA [7:0]は、ADPCMデータのマスターチャンネルFIFOへの書き込みに使用する。
図280は、ADPCMマスターFIFOアクセスレジスタ(READ時): ADPCM_ENCODE_FIFO_WINDOWの詳細テーブルである。ADPCM_ENCODE_FIFO_DATA [7:0]は、ADPCMデータのFIFOから読み出しに使用する。
図281は、ADPCMスレーブFIFOアクセスレジスタADPCM_SLAVE_FIFO_WINDOWの詳細テーブルである。ADPCM_ SLAVE _FIFO_DATA [7:0]は、ADPCMデータのスレーブチャンネルFIFOへの書き込みに使用する。本レジスタはデコード中有効である。このADPCMスレーブFIFOデータに格納されるデコードデータは書き込み動作を介して読み出される。
図282は、サンプリング周波数設定レジスタSAMPLING_TIMING_SETUPの詳細テーブルである。
U_Lは、TIME_SETUPで設定する値が上位/下位を選択する。上位ビットを書き込む必要がある。設定内容は以下の通りである。
“0”: 下位
“1”: 上位
TIME_SETUP[6:0]は、AUDIO_CLKの周波数と、サンプリング周波数との比を設定する。周波数比は以下の通りである。なお、初期値は0400h=1024である。
サンプリング周波数 = AUDIO_CLK / [TIME_SETUP上位[6:0], TIME_SETUP下位[6:0]]
図283は、シーケンスコントロールレジスタ1 : SEQUENCE_CONTROLの詳細テーブルである。
RESETは、オーディオブロックにソフトウェアリセットをかける。FIFO、ADPCM、レジスタ0108h、0109h、がリセットされる。設定内容は以下の通りである。
“0”: リセット解除
“1”: リセット
STANDBYは、オーディオブロックをスタンバイ状態にする。スタンバイ解除後、RESETビットにライト(“1”を設定)すべきである。スタンバイ中はIDX_ADDRESS : 0140h[6]以外のオーディオブロックレジスタは、書き込み/読み出しともできない。設定内容は以下の通りである。
“0”: スタンバイ解除
“1”: スタンバイ
ADPCM_STANDBYは、ADPCMブロックの動作/停止を選択する。設定内容は以下の通りである。
“00”: 動作
“11”: 停止
<SDカードインターフェース(コントローラ)>
本LSIには、SD メモリカードインタフェイス、コントローラ(ここではSDIFと標記) 機能がある。SDIF機能はHDMODE(IDX:00D8h HWMODE[3:0]) のビット15フラグ(SD_OFF)に"0"を書くことで使用できる。SDIFブロックシステムを図284に示す。図284は、SDIFブロックシステム図である。
ホストからのSDIFブロック制御は、CPUの外部バス(CSB3)でレジスタの読み出し/書き込み、割り込み要求(INT信号からの)を処理することで行われる。SDIFブロックのレジスタは、制御レジスタや内部レジスタで構成される。
SDIFブロックからの割り込み要求信号は、画像処理ブロック内の他ブロックからの割り込み要求信号も含めて、画像処理ブロックのローカル割り込みコントローラで処理され、CPUシステムの割り込みコントローラに内部のINT信号で接続されている。
SDIFコントローラの特徴概要について説明する。SD memoryカードアクセス互換性がある。MMC(Multi Media Card)でも利用可能である。著作権保護機能はない。1ビット/4ビット共カードアクセスへのビット幅互換性がある(SDDAT3-SDDAT0ピン)。SD_CLK分周率をSD_CLK/29までに設定可能である。512バイトのデータバッファRAMを内蔵している。エラーチェック:CRC7(コマンドに対し)、CRC16(データに対し)に対応している。レジスタ設定で様々なレスポンスフレームフォーマットを認識可能である。転送データ長は29バイトから1バイトに設定可能である。マルチリード/ライト用のセクタカウンタを内蔵している。SD Association SDIF機能を使用する時は、SDAライセンスを取得する必要がある。
ライト転送タイミングについて説明する。図285は、本LSIのSDIF_Write転送タイミングを示す図である。図286は、本LSIからSDモジュールへのWrite転送タイミングを示す表である。
リード転送タイミングについて説明する。図287は、本LSIのSDIF_Read転送タイミングを示す図である。図288は、SDモジュールから本LSIへのRead転送タイミングを示す表である。
<セットアップレジスタ>
本LSIに電源を投入しリセットを解除した後、システム初期化のため、セットアップシーケンスを実行する必要がある。初期化シーケンス実行後、各HDMODE動作に移行すべきである。
セットアップに関連するレジスタ説明を行う。
図289は、セットアップシーケンス制御レジスタSETUPCNTの詳細テーブルである。
SETUP_RSTは、初期化回路にリセットをかける。設定内容は以下の通りである。
“0”: 通常動作
“1”: リセット状態
SETUP_ENは、初期化回路による補正を有効にする。設定内容は以下の通りである。
“0”: 補正は無効
“1”: 補正は有効
BIST_ENは、内蔵BIST回路にクロックを供給する。設定内容は以下の通りである。
“0”: クロックは停止。初期化回路による補正は動作可能である。
“1”: クロックを供給
BIST_ENDは、内蔵BISTの実行が完了したことを読み出せる。内容は以下の通りである。
“0”: BIST実行前または実行中
“1”: BIST実行後
BIST_BSYは、内蔵BISTの現在の状態を読み出せる。内容は以下の通りである。
“0”: BIST停止
“1”: BIST実行中
BIST_STは、“1”を書き込むことにより内蔵BISTをスタートする。このビットへの"1"書き込み後、5×tSCLK時間は画処理ブロックへのCPUからのアクセスはすべきでない。
ここで、BIST_ST=’H’を実行後、BIST_BSY=0、BIST_END=1になるまでの時間は、50MHz時で約36.5msである。
図290は、セットアップシーケンス設定レジスタSETUPSETの詳細テーブルである。このレジスタへの書き込みは行うべきではない。
プロダクトIDとRevision No.について説明する。本LSIは下記レジスタを読み出すことで、製品のID番号とRevision番号を読み出すことが出来る。
図291は、プロダクトIDレジスタPRODUCT_IDの詳細テーブルである。PRODUCT_IDは、本LSIの製品ID番号が読み出せる。
図292は、Revision No.レジスタREV_NOの詳細テーブルである。REV_NOは、本LSIの画像処理ブロックのRevision番号が読み出せる。
図293は、本LSIを用いたドライブレコーダの一構成例を示すブロック図である。本構成例のドライブレコーダは、交通事故発生時や危険運転時などに車両の運転状況データ(映像データや走行データなど)を記録する手段として用いられるものであり、本LSI100と、カメラ101と、リアルタイムクロック102(以下では、RTC[Real Time Clock]102と呼ぶ)と、EEPROM103と、加速度センサ104と、GPS[Global Positioning System]モジュール105と、スピーカ106と、マイク107と、オーディオコーデック108と、基本プログラム格納メモリ109と、テレビモニタ110と、SDカード111と、拡張プログラム格納メモリ112と、オプションカメラ113と、画像処理IC114と、IrDA[Infrared Data Association]コントローラIC115と、IrDAモジュール116と、を有して成る。
また、本構成例のドライブレコーダは、その電源系として、昇圧レギュレータ(電源IC)120と、ダイオード121〜123と、抵抗124と、二次電池125と、降圧レギュレータ(LDO[Low DropOut]レギュレータ)130〜132と、を有して成る。
本LSI100は、ドライブレコーダ全体の動作を統括的に制御するためのコントローラである。なお、本LSI100には、車両に搭載されているECU[Electric Control Unit](不図示)から、車両各部の動作状態データ(ランプ類(ヘッドランプ、テールランプ、ウィンカランプ、ハザードランプなど)の点灯状態データ、ドアロックの開閉状態データ、サイドミラーの開閉状態データ、ワイパーの駆動状態データ、パワーウィンドウの駆動状態データ、エアバックの駆動状態データ、ABS[Antilock Brake System]の駆動状態データなど)が伝達される。
また、車両には、車両各部や車両周辺の状況を検出する種々の車載センサ(不図示)が搭載されており、本LSI100には、これらの車載センサで得られる各種検出データも伝達される。なお、車載センサの一例としては、車両の前後/左右方向に生じる加速度を検出する加速度センサ、車両の鉛直軸周りの回転速度(車両の自転速度)を検出するヨーレートセンサ、車両の走行速度を検出する車速センサ、車輪(タイヤ)の回転速度を検出する車輪速センサ、ステアリングの操舵角を検出する操舵角センサ、ステアリングの操舵トルクを検出する操舵トルクセンサ、ブレーキペダルの踏み込み度合いを検出するブレーキペダルセンサ、車両各部の油圧を検出する油圧センサ、タイヤの空気圧を検出する空気圧センサ、車外気温や車内気温を検出する温度センサ、周囲の明るさを検出する照度センサ、路面状態を検出する路面センサ、車両前後の車間距離を検出する車間距離センサ、車両周辺の障害物を検出する障害物センサ(コーナセンサ)、及び、車両に生じた衝突を検出する衝突センサなどを挙げることができる。
カメラ101は、車両周辺(主に車両前方)を撮影する外部デバイス(2.8V駆動)であり、2線式シリアルバスI2C_1を介して、本LSI100と接続されている。カメラ101を構成する光電変換素子としては、CCD[Charge Coupled Devices]やCMOS[Complementary Metal Oxide Semiconductor]を用いればよい。カメラ101は、車両前方の様子を適切に動画撮影することが可能であって、かつ、運転者の視界を妨げることのない位置(バックミラーの裏面など)に取り付けることが望ましい。カメラ101で生成される撮像データは、専用のデータバスを介して本LSI100に出力される。このように、車両の運転状況データを構成する要素として、車両周辺を動画撮影した映像データを含めることにより、交通事故の原因究明を迅速かつ適切に行うことが可能となる。
RTC102は、日付と時刻に関する時刻データを生成して本LSI100に出力する外部デバイス(3.3V駆動)であり、2線式シリアルバスI2C_2を介して、本LSI100と接続されている。このように、車両の運転状況データを構成する要素として、日付と時刻を含めることにより、交通事故の発生に至る時間経過を事後解析することが可能となる。
EEPROM103は、所定のトリガ条件が満足されたときに、本LSI100でバッファされている運転状況データを不揮発的に格納する外部デバイス(3.3V駆動)であり、2線式シリアルバスI2C_2を介して、本LSI100と接続されている。
例えば、本LSI100は、加速度センサ104で検出された車両の加速度が所定の閾値を超えたとき(車両に対して所定の閾値を超える衝撃が加わったとき)に、所定のトリガ条件が満足されたと判定し、EEPROM103へのアクセスを行い、運転状況データを格納する。ここで、EEPROM103に格納される運転状況データは、上記のトリガ条件が満足されたタイミング前後の所定期間(数秒間〜数分間)に、本LSI100で一時格納される運転状況データである。
2線式シリアルバスI2C_1は、抵抗R1を介して、第1インタフェイス電圧VDD1(2.8V)の印加端にプルアップされており、2線式シリアルバスI2C_2は、抵抗R2を介して、第2インタフェイス電圧VDD2(3.3V)の印加端にプルアップされている。
このように、本LSI100は、接続する外部デバイスの電源電圧に合わせて2系統のシリアルバスを有している。ただし、本LSI100の内部において、2線式シリアルバスI2C_1、I2C_2は1系統として取り扱われる。このような構成とすることにより、電源電圧の異なる複数の外部デバイスを接続する場合であっても、各々の電源電圧に基づいて適切なグループ分けを行い、各グループ(上記では、2.8V駆動のグループと3.3V駆動のグループ)を別系統のシリアルバスに接続することにより、ハイレベル電圧の差に起因する電力浪費やノイズ耐性劣化を防ぐことが可能となる。また、上記構成を採用することにより、本LSI100の設計(部品選定、外部デバイスを動作保証範囲内のインタフェイス電圧で使いこなすための電源周りの安定化など)や、PCBの設計、品質評価の負担を低減することも可能となる。
なお、本LSI100は、装置外部に接続された2系統の2線式シリアルバスI2C_1、I2C_2を装置内部で同一のバスとして取り扱うためのバスインタフェイス回路を内蔵しているが、その構成及び動作については、後ほど詳細に説明する。
加速度センサ104は、互いに直交する3軸方向(X軸方向(=車両の進行方向)、Y軸方向(=車両の左右方向)、Z軸方向(=車両の上下方向))の加速度を各々検出し、これを加速度データとして本LSI100に出力する手段である。なお、加速度データの検出方式としては、ピエゾ抵抗方式や静電容量方式を用いることができる。このように、車両の運転状況データを構成する要素として、車両の加速度を示す加速度データを含めることにより、交通事故時に生じた車両の衝撃を事後解析することが可能となる。
GPSモジュール105は、GPS衛星からの衛星信号を利用して車両の現在位置(緯度、経度、高度)を検出し、これを車両位置データとして本LSI100に出力する手段である。なお、本LSI100とGPSモジュール105の間は、UART[Universal Asynchronous Receiver Transmitter]通信ポートを介して有線で接続されている。このように、車両の運転状況データを構成する要素として、車両位置データを含めることにより、交通事故の発生に至る走行経路を事後解析することが可能となる。
スピーカ106及びマイク107は、オーディオコーデック108を介して、本LSI100に接続されている。スピーカ106は、例えば、本LSI100からの指示に基づいて、運転者に危険な運転を控えるように警告を発する手段として用いられる。なお、上記の警告については、スピーカ106による音声のほか、テレビモニタ110による映像(若しくはそれらの組み合わせ)によって行えばよい。このような警告を発する構成であれば、運転者は常に安全運転を心掛けるようになるので、交通事故の抑制に寄与することが可能となる。なお、本LSI100は、車両の急発進、急ハンドル、急ブレーキ、急シフトチェンジ、夜間の無灯火、方向指示器の操作を伴わない車線変更、蛇行、周囲の車両や建造物との急接近などを検知したときに、スピーカ106やテレビモニタ110に対して上記の警告を発するように指示を送る。マイク107は、例えば、運転者からの音声指示を受け取る手段として用いられる。
基本プログラム格納メモリ109は、本LSI100の基本動作を実現するためのプログラムやデータを格納する手段であり、例えば、フラッシュメモリ(2Mbit)などを用いることができる。
テレビモニタ110は、例えば、カメラ101で得られる車両の周辺映像や、テレビジョン放送の番組映像、或いは、カーナビゲーションシステムの地図情報を表示するための手段であり、液晶ディスプレイなどを用いることができる。
SDメモリ111は、ドライブレコーダに着脱可能な外部メモリであり、例えば、EEPROM103に格納されている運転状況データを持ち出したり、本LSI100の動作プログラムを書き換えたりする際に用いられる。
拡張プログラム格納メモリ112、オプションカメラ113、画像処理IC114、IrDAコントローラIC115、及び、IrDAモジュール116は、いずれも、ドライブレコーダの機能を拡張するためのオプションデバイスであり、いずれもオプションデバイス接続用のパラレルバスを介して、本LSI100に接続されている。
拡張プログラム格納メモリ112は、基本プログラム格納メモリ109に格納しきれなかったプログラムやデータを格納する手段であり、例えば、フラッシュメモリ(2Mbyte)を用いることができる。オプションカメラ113は、カメラ101とは別視点(例えば車両後方)の映像を取得するための手段である。画像処理IC114は、オプションカメラ113で得られた映像データに所定の画像処理(アナログ/デジタル変換処理、ノイズ除去処理、色補正処理、画像圧縮処理など)を施して本LSI100に出力する手段である。IrDAコントローラIC115及びIrDAモジュール116は、携帯電話端末やリモートコントローラとの赤外線通信を行う手段である。
昇圧レギュレータ120は、入力電圧V1(例えば12Vまたは24V)を昇圧して出力電圧V2(例えば48V)を生成する電源ICである。
ダイオード121のアノードは、昇圧レギュレータ120の出力端に接続されている。ダイオード121のカソードは、抵抗124を介して二次電池125の正極に接続されている。ダイオード122のアノードは、昇圧レギュレータ120の出力端に接続されている。ダイオード122のカソードは、降圧レギュレータ130〜132の入力端に接続されている。ダイオード123のアノードは、二次電池124の正極に接続されている。ダイオード123のカソードは、降圧レギュレータ130〜132の入力端に接続されている。二次電池125は、ダイオード121及び抵抗124を介する充電経路により、出力電圧V2によって充電され、ダイオード123を介する放電経路により、正極から電池電圧V3が引き出される。降圧レギュレータ130〜132には、出力電圧V2と電池電圧V3のいずれか高い方が供給される。
降圧レギュレータ130〜132は、それぞれ内部電圧VDD0(例えば1.5V)、第1インタフェイス電圧VDD1(例えば2.8V)、及び、第2インタフェイス電圧VDD2(例えば3.3V)を生成し、これらをドライブレコーダの各部に供給する。
上記構成から成るドライブレコーダを車両に搭載しておけば、自責の交通事故や危険運転が記録されてしまうことを嫌い、運転者は常に安全運転を心掛けるようになるので、交通事故の抑制に寄与することが可能となる。また、万一、過失責任のない運転者が交通事故に巻き込まれてしまった場合には、ドライブレコーダに記録された運転状況データを事後解析することにより、運転者の正当性を立証することも可能となる。
図294は、バスインタフェイス回路の一構成例(シリアル入出力)を示す回路図である。本図に示すように、本LSI100は、コントローラ200と、バスインタフェイス回路300と、を有して成る。
バスインタフェイス回路300は、装置外部に接続された2系統の2線式シリアルバスI2C_1、I2C_2を装置内部で同一のバスとして取り扱うための双方向バスマルチプレクサであり、Nチャネル型MOS電界効果トランジスタ301と、Nチャネル型MOS電界効果トランジスタ302と、レベルシフタ311〜313と、レベルシフタ321〜323と、論理和演算器330と、を有して成る。
トランジスタ301のドレインは、2線式シリアルバスI2C_1のデータ線に接続されており、抵抗R1を介して、第1インタフェイス電圧VDD1の印加端にプルアップされている。トランジスタ301のソースは、接地端に接続されている。トランジスタ302のドレインは、2線式シリアルバスI2C_2のデータ線に接続されており、抵抗R2を介して、第2インタフェイス電圧VDD2の印加端にプルアップされている。トランジスタ302のソースは、接地端に接続されている。すなわち、2線式シリアルバスI2C_1、I2C_2は、各々に接続される外部デバイスの電源電圧に適合したインタフェイス電圧が与えられている。
トランジスタ301がオンのとき、2線式シリアルバスI2C_1のデータ線は、ローレベル(接地電圧GND)となる。トランジスタ301がオフのとき、2線式シリアルバスI2C_1のデータ線は、ハイレベル(第1インタフェイス電圧VDD1)となる。トランジスタ302がオンのとき、2線式シリアルバスI2C_2のデータ線は、ローレベル(接地電圧GND)となる。トランジスタ302がオフのとき、2線式シリアルバスI2C_2のデータ線は、ハイレベル(第2インタフェイス電圧VDD2)となる。
レベルシフタ311の入力端は、2線式シリアルバスI2C_1のデータ線に接続されている。レベルシフタ311の出力端は、論理和演算器330の第1入力端に接続されている。レベルシフタ321の入力端は、2線式シリアルバスI2C_2のデータ線に接続されている。レベルシフタ321の出力端は、論理和演算器330の第2入力端に接続されている。論理和演算器330の出力端は、コントローラ200のデータ信号入力端に接続されている。
レベルシフタ311は、第1インタフェイス電圧VDD1と接地電圧GNDとの間でスイングされるパルス信号を内部電圧VDD0と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。レベルシフタ321は、第2インタフェイス電圧VDD2と接地電圧GNDとの間でスイングされるパルス信号を内部電圧VDD0と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。論理和演算器330は、レベルシフタ311、321から各々入力されるパルス信号の論理和演算を行うことによって、内部電圧VDD0と接地電圧GNDとの間でスイングされる論理和信号を生成し、これをコントローラ200への入力データ信号INとして送出する。
レベルシフタ312、322の入力端は、いずれもコントローラ200のデータ信号出力端に接続されている。レベルシフタ312の出力端は、トランジスタ301のゲートに接続されている。レベルシフタ322の出力端は、トランジスタ302のゲートに接続されている。
レベルシフタ312は、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からの出力データ信号OUTを第1インタフェイス電圧VDD1と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。レベルシフタ322は、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からの出力データ信号OUTを第2インタフェイス電圧VDD2と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。
レベルシフタ313、323の入力端は、いずれもコントローラ200のクロック信号出力端に接続されている。レベルシフタ313の出力端は、2線式シリアルバスI2C_1のクロック線に接続されている。レベルシフタ323の出力端は、2線式シリアルバスI2C_2のクロック線に接続されている。
レベルシフタ313は、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からのクロック信号CLKを第1インタフェイス電圧VDD1と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。レベルシフタ323は、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からのクロック信号CLKを第2インタフェイス電圧VDD2と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。
上記したように、バスインタフェイス回路300は、コントローラ200から出力される単一の出力データ信号OUTを分配して2線式シリアルバスI2C_1、I2C_2の各データ線に伝達する信号分配機能部(トランジスタ301、302、及び、レベルシフタ312、322)と、同じく、コントローラ200から出力される単一のクロック信号CLKを分配して2線式シリアルバスI2C_1、I2C_2の各クロック線に伝達する信号分配機能部(レベルシフタ313、323)と、を有して成る。
また、バスインタフェイス回路300は、2線式シリアルバスI2C_1、I2C_2から各々入力される複数の入力信号を結合してコントローラ200への入力データ信号INを生成する信号結合機能部(レベルシフタ311、321及び論理和演算器330)を有して成る。
また、バスインタフェイス回路300は、コントローラ200と2線式シリアルバスI2C_1、I2C_2との間で信号の受け渡しを行う際、コントローラ200に与えられている内部電圧VDD0と2線式シリアルバスI2C_1、I2C_2に各々与えられているインタフェイス電圧VDD1、VDD2との間で、信号の電圧レベルを変換するレベルシフト機能部(レベルシフタ311〜313、321〜323)を有して成る。
このように、本LSI100は、接続する外部デバイスの電源電圧に合わせて2系統のシリアルバスを有している。ただし、本LSI100の内部において、2線式シリアルバスI2C_1、I2C_2は1系統として取り扱われる。このような構成とすることにより、電源電圧の異なる複数の外部デバイスを接続する場合であっても、各々の電源電圧に基づいて適切なグループ分けを行い、各グループ(上記では、2.8V駆動のグループと3.3V駆動のグループ)を別系統のシリアルバスに接続することにより、ハイレベル電圧の差に起因する電力浪費やノイズ耐性劣化を防ぐことが可能となる。従って、上記構成を採用することにより、例えば、従来モジュール(3.3V系)と最新モジュール(2.8V系)を同一のバスに接続して使用することが可能となる。また、上記構成を採用することにより、本LSI100の設計(部品選定、外部デバイスを動作保証範囲内のインタフェイス電圧で使いこなすための電源周りの安定化など)や、PCBの設計、品質評価の負担を低減することも可能となる。
図295は、インタフェイス電圧VDD1、VDD2の設定範囲を示す図である。本図に示したように、カメラ101、RTC102、及び、EEPROM103のそれぞれでインタフェイス電圧の推奨範囲(動作保証範囲)が異なっている場合であっても、インタフェイス電圧VDD1の設定可能範囲、及び、インタフェイス電圧VDD2の設定可能範囲を大幅に広げることが可能となる。また、電圧変換インタフェイスIC(レベルシフタIC)を別途設ける必要がなく、コストアップやセット規模の増大を招くおそれもない。
なお、コントローラ200は、2線式シリアルバスI2C_1、I2C_2に各々接続される外部デバイス(カメラ101、RTC102、及び、EEPROM103)のアドレス制御またはチップセレクト制御を行う構成とされている。このように、バスに接続されている複数の外部デバイスは、コントローラ200を主体として各々の信号出力動作が調停されているので、2系統の信号を結合させるときに支障が生じることはない。
なお、本発明の構成は、上記実施形態のほか、発明の主旨を逸脱しない範囲で種々の変更を加えることが可能である。
例えば、上記実施形態では、シリアルバスを介して複数の外部デバイスが接続される半導体装置に適用した構成を例に挙げて説明を行ったが、本発明の適用対象はこれに限定されるものではなく、パラレルバスを介して複数の外部デバイスが接続される半導体装置にも広く適用することが可能である。
図296は、バスインタフェイス回路の一構成例(4ビットパラレル入力)を示す回路図である。本構成例の半導体装置X1は、コントローラX2と、バスインタフェイス回路(単方向バスマルチプレクサ)X3と、を有して成る。
バスインタフェイス回路X3は、レベルシフタX10〜X13と、レベルシフタX20〜X23と、論理和演算器X30〜X33と、を有して成る。レベルシフタX10〜X13の各入力端は、パラレルバスBUS1の各ビット線に接続されている。レベルシフタX10〜X13の各出力端は、論理和演算器X30〜X33の各第1入力端に接続されている。レベルシフタX20〜X23の各入力端は、パラレルバスBUS2の各ビット線に接続されている。レベルシフタX20〜X23の各出力端は、論理和演算器X30〜X33の各第2入力端に接続されている。論理和演算器X30〜X33の各出力端は、コントローラX2のデータ信号入力端(4ビット)にパラレル接続されている。
レベルシフタX10〜X13は、第1インタフェイス電圧VDD1と接地電圧GNDとの間でスイングされるパルス信号を内部電圧VDD0と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。レベルシフタX20〜X23は、第2インタフェイス電圧VDD2と接地電圧GNDとの間でスイングされるパルス信号を内部電圧VDD0と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。論理和演算器X30〜X33は、レベルシフタX10〜X13、及び、レベルシフタX20〜X23から各々入力されるパルス信号の論理和演算を行うことによって、内部電圧VDD0と接地電圧GNDとの間でスイングされる論理和信号を生成し、これをコントローラ200への入力データ信号IN<0>〜IN<3>として送出する。
図297は、バスインタフェイス回路の一構成例(4ビットパラレル出力)を示す回路図である。本構成例の半導体装置Y1は、コントローラY2と、バスインタフェイス回路(単方向バスマルチプレクサ)Y3と、を有して成る。
バスインタフェイス回路Y3は、レベルシフタY10〜X13と、レベルシフタY20〜X23と、を有して成る。レベルシフタY10〜Y13の入力端は、それぞれコントローラ200のデータ信号出力端(4ビット)にパラレル接続されている。レベルシフタY10〜Y13の出力端は、それぞれ、パラレルバスBUS1の各ビット線に接続されている。レベルシフタY20〜Y23の入力端は、それぞれコントローラ200のデータ信号出力端(4ビット)にパラレル接続されている。レベルシフタY20〜Y23の出力端はそれぞれ、パラレルバスBUS2の各ビット線に接続されている。
レベルシフタY10〜Y13は、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からの出力データ信号OUT<0>〜OUT<3>を第1インタフェイス電圧VDD1と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。レベルシフタY20〜Y23は、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からの出力データ信号OUT<0>〜OUT<3>を第2インタフェイス電圧VDD2と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。
図298は、バスインタフェイス回路の一構成例(4ビットパラレル入出力)を示す回路図である。本構成例の半導体装置Z1は、コントローラZ2と、バスインタフェイス回路(双方向バスマルチプレクサ)Z3と、を有して成る。
バスインタフェイス回路Z3は、レベルシフタZ10a〜Z13aと、レベルシフタZ10b〜Z13bと、レベルシフタZ10c〜Z13cと、レベルシフタZ20a〜Z23aと、レベルシフタZ20b〜Z23bと、レベルシフタZ20c〜Z23cと、論理和演算器Z30〜Z33と、を有して成る。
レベルシフタZ10a〜Z13aの各入力端は、パラレルバスBUS1の各ビット線に接続されている。レベルシフタZ10a〜Z13aの各出力端は、論理和演算器Z30〜Z33の各第1入力端に接続されている。レベルシフタZ20a〜Z23aの各入力端はパラレルバスBUS2の各ビット線に接続されている。レベルシフタZ20a〜Z23aの各出力端は、論理和演算器Z30〜Z33の各第2入力端に接続されている。論理和演算器Z30〜Z33の各出力端は、コントローラZ2のデータ信号入力端(4ビット)にパラレル接続されている。
レベルシフタZ10b〜Z13bの入力端は、それぞれコントローラ200のデータ信号出力端(4ビット)にパラレル接続されている。レベルシフタZ10b〜Z13bの出力端は、パラレルバスBUS1の各ビット線に接続されている。レベルシフタZ20b〜Z23bの入力端は、それぞれコントローラ200のデータ信号出力端(4ビット)にパラレル接続されている。レベルシフタZ20b〜Z23bの出力端は、パラレルバスBUS2の各ビット線に接続されている。
レベルシフタZ10c〜Z13cの入力端は、いずれもコントローラ200の出力イネーブル信号出力端に接続されている。レベルシフタZ10c〜Z13cの出力端は、それぞれレベルシフタZ10b〜Z13bの各イネーブル制御端に接続されている。レベルシフタZ20c〜Z23cの入力端は、それぞれコントローラ200の出力イネーブル信号出力端に接続されている。レベルシフタZ20c〜Z23cの出力端は、それぞれレベルシフタZ20b〜Z23bの各イネーブル制御端に接続されている。
レベルシフタZ10a〜Z13aは、第1インタフェイス電圧VDD1と接地電圧GNDの間でスイングされるパルス信号を内部電圧VDD0と接地電圧GNDの間でスイングされるパルス信号にレベルシフトして出力する。レベルシフタZ20a〜Z23aは、第2インタフェイス電圧VDD2と接地電圧GNDの間でスイングされるパルス信号を内部電圧VDD0と接地電圧GNDの間でスイングされるパルス信号にレベルシフトして出力する。論理和演算器Z30〜Z33は、レベルシフタZ10a〜Z13a、及び、レベルシフタZ20a〜Z23aから各々入力されるパルス信号の論理和演算を行うことによって、内部電圧VDD0と接地電圧GNDとの間でスイングされる論理和信号を生成し、これをコントローラ200への入力データ信号IN<0>〜IN<3>として送出する。
レベルシフタZ10b〜Z13bは、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からの出力データ信号OUT<0>〜OUT<3>を第1インタフェイス電圧VDD1と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。レベルシフタZ20b〜Z23bは、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からの出力データ信号OUT<0>〜OUT<3>を第2インタフェイス電圧VDD2と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。
レベルシフタZ10c〜Z13cは、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からの出力イネーブル信号OENを第1インタフェイス電圧VDD1と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。レベルシフタZ20c〜Z23cは、内部電圧VDD0と接地電圧GNDとの間でスイングされるコントローラ200からの出力イネーブル信号OENを第2インタフェイス電圧VDD2と接地電圧GNDとの間でスイングされるパルス信号にレベルシフトして出力する。