説明

半導体装置

【課題】CRC機能を有し、ライト動作とリード動作を高速に行うことができる半導体装置を提供する。
【解決手段】メモリセルアレイ(メモリセルアレイ11)と、巡回冗長論理符号を生成する誤り検出符号生成回路(誤り検出符号生成回路20)と、メモリセルアレイから読み出されたデータに巡回冗長論理符号を付加してデータ入出力端子を介して半導体装置の外部へリードデータとして出力し、或いは半導体装置の外部からライトデータが入力されて、前記メモリセルアレイへ書き込むデータを誤り検出符号生成回路に出力するデータ入出力部(データ入出力部19)と、メモリセルアレイとデータ入出力部との間に配置されるバス配線(リードライトバス)と、誤り検出符号生成回路とデータ入出力部との間に配置される巡回冗長論理符号配線(CRC信号線)と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、巡回冗長検査機能を備える半導体装置に関する。
【背景技術】
【0002】
半導体装置、例えばDRAM(Dynamic Random Access memory)とメモリコントローラとの間においてデータの授受を行う際のデータの転送速度が高速化しつつある。そのため、データの授受を行う際に用いるデータバスが外部からのノイズなどの影響を受けやすくなり、転送データにエラーが発生する恐れがある。そこで、半導体装置が内部で生成した巡回冗長検査(CRC:Cyclic Redundancy Check)符号(誤り検出符号)を、転送データに付加してメモリコントローラに出力する。そして、メモリコントローラでは、送られてきた転送データと誤り検出符号に基づいて転送データにエラーがあるか否かの判定処理を行う。そして、転送データにエラーがある場合、例えば半導体装置から転送データを再送することで、データバスにおけるデータ転送の信頼性を向上している。
特許文献1には、このような巡回冗長検査機能を備える半導体装置(DRAM)が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−87485号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1記載の半導体装置では、各々がデータを記憶するメモリセルを複数備えたメモリセルアレイと、外部のデータバスにデータを出力するデータアウトバッファ(データ入出力部)との間に、リードライトバス(バス配線)を設けている。特許文献1記載の半導体装置では、リード動作において、メモリセルアレイからのデータと、誤り検出符号生成回路がこれらのデータに基づいて演算した誤り検出符号とを、リードライトバス上で時分割処理する。そのため、データ入出力部は、リードライトバスに入力端子が接続されるFIFOバッファを備え、メモリセルアレイから読み出されたデータと、誤り検出符号とをそれぞれ時系列に取り込み保持する。データ入出力部は、リード動作において、このFIFOバッファが保持するデータを、外部クロックに同期して連続して外部のデータバスに出力する。
【0005】
半導体装置において、例えば半導体装置のモードレジスタにCRCを有効にするフラグが立っているかどうかによって、CRCを使用するか否かの判断が行なわれる。そのため、特許文献1記載の半導体装置において、上記リード動作を行う場合、CRCを使用するか否かの判断によってリードライトバス上のデータの取扱を変更する必要が発生し、FIFOバッファの制御が複雑になるという問題がある。またリードライトバスにCRCの制御が入ること、リードライトバスが誤り検出符号生成回路の出力にも接続されてメモリセルアレイの負荷(リードライトバスの容量)が増えることにより、半導体装置にアドレス及びデータが入力されてから書込みが完了するまでの時間(ライト時間)、又は、半導体装置にアドレスが入力されてから半導体装置からデータが出力されるまでの時間(リード時間)が長くなってしまうという問題がある。
【課題を解決するための手段】
【0006】
本発明は、データを記憶する複数のメモリセルを有するメモリセルアレイと、前記メモリセルアレイから読み出されたデータ、或いは前記メモリセルアレイへ書き込むデータに基づいて巡回冗長論理符号を生成する誤り検出符号生成回路と、前記メモリセルアレイから読み出されたデータに前記巡回冗長論理符号を付加してデータ入出力端子を介して半導体装置の外部へリードデータとして出力し、或いは半導体装置の外部からライトデータが入力されて、前記メモリセルアレイへ書き込むデータを前記誤り検出符号生成回路に出力するデータ入出力部と、前記メモリセルアレイと前記データ入出力部との間に配置され、前記メモリセルアレイから読み出されたデータ、または前記メモリセルアレイへ書き込むデータを転送するバス配線と、前記誤り検出符号生成回路と前記データ入出力部との間に配置され、前記巡回冗長論理符号を転送する巡回冗長論理符号配線と、を備えることを特徴とする半導体装置である。
【発明の効果】
【0007】
本発明の半導体装置によれば、リードライトバス(バス配線)と、巡回冗長論理符号配線とを別々に設けたことにより、リードライトバスとデータ入出部との間の回路構成を、CRC機能を有さない従来の半導体装置の回路構成から変更する必要性が無くなる。そのため、CRC機能を有しても、リードライトバスにおける時分割処理が不要となり、また、メモリセルアレイの負荷(リードライトバスの容量)が従来の半導体装置に比べて増えないので、半導体装置のライト動作とリード動作を従来の半導体装置と同程度にまで高速に行うことができる。
【図面の簡単な説明】
【0008】
【図1】半導体装置10の構成を示すブロック図である。
【図2】半導体装置10を含むメモリシステム10sの構成を示すブロック図である。
【図3】誤り検出符号生成回路20の構成を示すブロック図である。
【図4】データ入出力部19の構成を示すブロック図である。
【図5】シリアライザ35の回路構成を示す回路図である。
【図6】シリアライザ35の動作を説明するためのタイミングチャートである。
【図7】半導体装置10のライト動作(4IO入力)のタイミングチャートである。
【図8】半導体装置10のリード動作(4IO出力)のタイミングチャートである。
【発明を実施するための形態】
【0009】
以下、添付図面を参照しながら、本発明の好ましい実施の形態について詳細に説明する。
図1は、本発明を半導体装置10、例えばクロックに同期して動作するSDRAM(シンクロナス・ダイナミック・ランダム・アクセス・メモリ)に適用した場合の半導体装置10の概略構成を示す。なお、図1に示されている各回路ブロックは、全て単結晶シリコンのような1個の半導体チップ上に形成される。各回路ブロックは、例えば、PMOSトランジスタ及びNMOSトランジスタ等の複数のトランジスタで構成される。また、◎印で示されているのは、当該半導体チップに設けられる外部端子としてのパッドであり、図示されている外部端子の他に外部から供給される電源電圧が印加される電源電圧端子が設けられる。
半導体装置10は、メモリセルアレイ11、ロウデコーダ13、カラムデコーダ14、センスアンプ15、制御回路18、データ入出力部19、誤り検出符号生成回路20、データバスインバージョン回路21、及び警告信号出力部22を含んで構成される。
【0010】
半導体装置10は、リード動作時、誤り検出符号生成回路20において、誤り検出符号(以下CRC符号)を生成し、リードデータの出力と同時にCRC符号を出力する。CRC符号の生成方法としては、一例として、標準化団体(JEDEC等)で規格化された巡回冗長検査手法を用いる方法があるが、これに限定されるものではない。本実施例では、8IO構成でバースト長BL8動作の場合(8×8=64ビットのメモリセルデータを8個のデータ入出力端子DQからバースト長さ8で出力する動作)を例に説明する。この場合、それぞれのデータ入出力端子DQのバースト長BLの9ビット目に演算結果のCRC符号を出力する。
ここで、半導体装置10を含むメモリシステムについて、図2を用いて説明する。図2は、半導体装置10を含むメモリシステム10sの構成を示すブロック図である。
半導体装置10と通信関係にあるホストCPU(メモリコントローラ10m)は、半導体装置10から送信されるデータとこのCRC符号とを受信し、ホストCPU自身で半導体装置10から送信されるデータに基づいて演算部20mにおいてCRC演算を行う。このホストCPUは、比較器20cを備え、この比較器20cにおいて、自身が演算したCRC符号と、メモリから送信されたCRC符号との等価性を確認し、半導体装置−ホストCPU間のデータ線路でデータが正常に送信されているか否か(誤送信されていないか否か)を検出する。
【0011】
また、半導体装置10は、ライト動作時、CRC手法を用いて、誤り検出符号生成回路20において、CRC符号をデータ受信と同時に生成する。本実施例では8IO構成でBL8動作の場合(8×8=64ビットのデータを8個のデータ入出力端子DQからバースト長さ8で入力してメモリセルへ書き込む動作)を例に示す。この場合、それぞれのデータ入出力端子DQのBLの9ビット目には、CPUからの演算結果のCRC符号が入力される。
半導体装置10は、誤り検出符号生成回路20において、通信関係にあるホストCPU(メモリコントローラ10m)から送信されるCRC符号と、メモリ自身が受信したライトデータから生成したCRC符号とについての等価性を確認し、半導体装置10−ホストCPU間のデータ線路で、データが誤送信されたか否かを検出することができる。さらに、本実施形態の半導体装置10は、ALERT_Nとよばれる端子が規格化されており、誤送信が検出されたときは警告信号ALERT_NをLレベル(活性レベル)で出力する。
【0012】
なお、図1においては図示していないが、4IO構成でBL8動作の場合(4×8=32ビットのメモリセルデータを4個のデータ入出力端子DQからバースト長さ8で出力する動作)は、それぞれのデータ入出力端子DQのBLの9、10ビット目として演算結果のCRC符号を出力する。これは、8IO構成でBL8動作の場合と、4IO構成でBL4動作の場合では、必要なCRC演算結果のビット数が同じであるため、IO数が少ない4IO構成では、9,10ビット目の2倍のビットを用いて合計8ビットのCRC演算結果を出力しなければならないからである。
【0013】
以下簡単に半導体装置10の構成について順番に説明する。
メモリセルアレイ11(ビット線とワード線とに対応付けられているメモリセルを有するメモリセルアレイ)は、複数のメモリセルが行及び列のマトリックス状に配置された複数のバンクから構成される。図1においてはバンクnを代表として示している。バンクnは、記憶領域であるメモリセルを有している。例えば、バンクnは、ワード線WLとビット線DLの交点にメモリセルMCを有する。
【0014】
制御回路18は、内部にクロック生成回路を備え、このクロック生成回路は、外部から供給される一定周波数のクロック信号CK、その論理反転信号/CK、及びクロックCK及び/CKが有効であることを示すクロックイネーブル信号CKEに基づいて内部回路(制御回路18におけるコマンドデコーダ、データ入出力部19等)を動作させる内部クロック信号を生成する。
半導体装置10に外部から供給される制御信号としては、クロック信号CK、その論理反転信号/CK、及びクロックイネーブル信号CKEの他に次の制御信号がある。半導体装置10を選択状態にするチップセレクト信号/CS(以下、外部メモリ制御信号CSとする)、行アドレスストローブ信号/RAS(以下、外部メモリ制御信号RASとする)、列アドレスストローブ信号/CAS(以下、外部メモリ制御信号CASとする)、データの書込み動作を指示するライトイネーブル信号/WE(以下、外部メモリ制御信号WEとする)などである。なお、以上の信号のうち符号の前に“/”が付されているものは、ロウレベル(Lレベル)が有効レベルであることを意味している。
【0015】
制御回路18は、内部にコマンドデコーダを備え、このコマンドデコーダは、これらの外部メモリ制御信号であるCS信号、RAS信号、CAS信号、及びWE信号とアドレス信号の一部をデコードして、外部から供給されるコマンドを復号する。本実施例の半導体装置10に供給されるコマンドとしては、半導体装置の内部回路の活性化を指示するACTコマンド、読出しを指示するREADコマンド、書込みを指示するWRITEコマンド、制御回路18におけるモードレジスタへの動作モードの設定を指示するMRSコマンド、ACTコマンドにより活性化された内部回路の非活性化を指示するPREコマンドなどがある。
コマンドデコーダは、外部メモリ制御信号であるCS信号、RAS信号、CAS信号、及びWE信号をコマンド信号として、内部クロック信号に同期して取り込み、復号する。また、コマンドデコーダは、復号したコマンドに対応して内部コマンド信号、例えば、アクティブコマンド(ACTコマンド)、ライトコマンド(WRITEコマンド)、リードコマンド(READコマンド)、プリチャージコマンド(PREコマンド)それぞれに対応して内部アクティブ信号、内部ライト信号、内部リード信号、内部プリチャージ信号などを生成する。
また、制御回路18は、内部にモードレジスタを備え、このモードレジスタは、外部メモリ制御信号であるCS信号、RAS信号、CAS信号、及びWE信号の活性レベルの組み合わせ入力によりアドレス信号A0〜Anを保持し、テスト動作モードへのエントリなど各動作モードの初期設定を行う。バースト長(BL)もモードレジスタに設定される。
【0016】
制御回路18は、モードレジスタに設定された各動作モード、コマンドデコーダからの内部コマンド信号に対応して、半導体装置10内の各回路(アドレスバッファ、ロウデコーダ13、カラムデコーダ14、センスアンプ15、データ入出力部19、誤り検出符号生成回路20、データバスインバージョン回路21)を制御する制御信号を発生する。例えば、制御回路18は、ロウデコーダ13、カラムデコーダ14、センスアンプ15、データ入出力部19、誤り検出符号生成回路20、データバスインバージョン回路21を活性制御する活性非活性制御信号を、内部アクティブ信号、内部プリチャージ信号の論理レベルの変化に対応してタイミング制御し、出力する。また、制御回路18は、データ入出力部19を活性制御するライト制御信号を、内部ライト信号の論理レベルの変化に対応してタイミング制御して出力する。
【0017】
また、制御回路18は、内部にアドレスバッファを備え、このアドレスバッファは、ACTコマンドにより活性化された状態で、外部から入力されるメモリセルの位置を示すアドレスデータ(以下、アドレスと略す)を、マルチプレックス方式で内部に取り込む。マルチプレックス方式とは、ACTコマンドによりメモリセルの位置を示す行アドレス(ロウアドレス)を、READコマンドまたはWRITEコマンドによりメモリセルの位置を示す列アドレス(カラムアドレス)を、時系列に取り込む方式である。
ロウデコーダ13は、ACTコマンドにより活性化された状態で、アドレスバッファにより取り込まれたロウアドレスをデコードし、メモリセルアレイ11内の対応するワード線(例えば上記ワード線WL)を選択する。選択されたワード線に接続される複数のメモリセルは、それぞれのビット線(メモリセルMCであればビット線DL)と接続され、各メモリセルのデータはビット線に読み出される。
センスアンプ15は、ACTコマンドにより活性化され、内部リード信号または内部ライト信号によりビット線に読み出された電圧を増幅し、半導体装置10がメモリセルからのデータを読み出す動作(リード動作)にあるとき、増幅したデータを選択されるカラムスイッチ、及びリードライトバスを介して、リードデータDATA[63:0]をデータ入出力部19、及び誤り検出符号生成回路20に対して出力する。また、センスアンプ15は、半導体装置10がメモリセルへの書き込み動作(ライト動作)にあるとき、誤り検出符号生成回路20の判定結果に基づいてデータ入出力部19が出力するライトデータDATA[63:0]をカラムスイッチ及びリードライトバスを介してメモリセルへ書き込む。
【0018】
カラムデコーダ14は、ACTコマンドに続くWRITEコマンド(またはREADコマンド)により活性化された状態で、アドレスバッファにより取り込まれたカラムアドレスをデコードしてメモリセルアレイ11内の対応するカラム(ビット線)を選択する。
【0019】
誤り検出符号生成回路20は、半導体装置10のリード動作において、制御回路18から入力される制御信号Read CRC Ctrl CLKにより活性化され、メモリセルアレイ11からリードライトバスを介して読み出されたリードデータDATA[63:0]、及びデータバスインバージョン回路21からDM/DBIバスを介して入力されるデータバスインバージョン信号DBI[7:0]に基づいて、CRC符号(8ビット)を生成して、CRC信号線(巡回冗長論理符号配線)を介してデータ入出力部19に対して出力する。
このように、CRC信号線は、リードライトバスとは別個に設けられ、誤り検出符号生成回路20とデータ入出力部19との間でCRC符号(8ビット)のやり取りを行なう。
また、誤り検出符号生成回路20は、半導体装置10のライト動作において、制御回路18から入力される制御信号Write CRC Ctrl CLKにより活性化され、データ入出力部19からリードライトバスを介して入力されるライトデータDATA[63:0]、データ入出力部19からDM/DBIバスを介して入力されるデータバスインバージョン信号DBI[7:0]、及びデータ入出力部19からCRC信号線を介して入力されるCRC符号CRC[7:0](巡回冗長符号)に基づいて、メモリセルに書き込むべきデータが正しいか否か(データ入出力部19が受信したデータが正しいデータか否か)を判定し、判定結果を判定結果信号Write CRC Error Flagとして警告信号出力部22に対して出力する。警告信号出力部22は、判定結果信号Write CRC Error Flagが判定結果が否であることを示す場合に警告信号ALERT_NをLレベル(活性レベル)で出力する。
【0020】
データ入出力部19は、半導体装置10のリード動作において、メモリセルアレイ11からリードライトバスを介して読み出されたリードデータDATA[63:0]、及び誤り検出符号生成回路20が生成したCRC符号CRC[7:0]を、データ入出力端子DQ0〜DQn(n=3または7)を介して外部に出力する。
また、データ入出力部19は、ライト動作において外部からデータ入出力端子DQ0〜DQnを介して入力されるメモリセルへ書き込むべきデータ、すなわちライトデータDATA[63:0]を、リードライトバスを介してメモリセルアレイ11と誤り検出符号生成回路20とに供給し、外部のメモリコントローラ(不図示)がCRC演算した結果であるCRC符号CRC[7:0]を、CRC信号線を介して誤り検出符号生成回路20へ供給する。
このように、CRC符号CRC[7:0]の入出力は、データ入出力端子DQ0〜DQnを介して実行される。このため、データ入出力部19は、データ(リードデータ、ライトデータ)をリードライトバスとデータ入出力端子DQとの間でやりとりさせ、CRC符号をCRC信号線(8ビットのデータ伝送線)とデータ入出力端子との間でやり取りするように制御する必要がある。このため、データ入出力端子DQを介して入出力される一連のデータ及びCRC符号のデータのかたまりのうち、どのデータがCRC符号に対応するかを予め設定しておく必要がある。一例として、本実施例では、×8IO構成でデータのバースト長がBL8の場合、データの入出力に続く9ビット目(BL9)がCRC符号に対応する。また、×4IO構成でデータのバースト長がBL8の場合、データの出力に続く9ビット目と10ビット目の2ビットがCRC符号に対応する。このため、データ入出力部19は、FIFO(Furst In Furst Out)回路(不図示)を備え、リード時は、CRC信号線からCRC符号CRC[7:0]をリードデータの9,10ビット目に出力するように制御し、また、ライト時にはライトデータの9,10ビット目からCRC符号CRC[7:0]をCRC信号線に供給する。
【0021】
また、データ入出力部19は、DM/DBI端子を備える。このDM/DBI端子はメモリコントローラとデータマスク信号又はデータバスインバージョン信号をやり取りする端子である。データ入出力部19は、DM/DBIバスを介してデータバスインバージョン回路21と接続され、データバスインバージョン信号DBI[7:0]のやり取りを行う。
このデータマスク信号は、ライト動作時にコントローラからライトデータと共にメモリに供給され、対応するライトデータをマスクする信号であり、リード動作時には使用されない信号である。
また、データバスインバージョン信号は、ライト動作時にコントローラからライトデータと共にメモリに供給され、また、リード動作時には、メモリからコントローラへリードデータと共に出力される信号である。データバスインバージョン信号は、送信側のデバイス(例えば、半導体装置10)が出力時に対応するデータ(例えば、リードデータ)を反転したか否かを受信側(例えばコントローラ)に伝える信号である。受信側のデバイスは、データバスインバージョン信号に応じて、受信したデータをそのまま取り込むか反転して取り込むかを切り替える。データバスインバージョン信号は、例えばデータの多数決論理をとり、一部のデータを反転させて伝送路におけるリードデータ、またはライトデータのスウィング回数を減らし、シグナルインテグリティーの改善に寄与する機能を有する。ただし送信側は、上述の通りデータの反転をしたかどうかを送信先に教える必要があり、このデータバスインバージョン信号が用いられる。受信側はデータバスインバージョン信号を用いてデータを復元する。半導体装置10のリード時におけるデータバスインバージョン信号(アドレス論理データ)は、データバスインバージョン回路21で生成される。また、メモリコントローラが送信するライトデータに基づいて生成するデータバスインバージョン信号(アドレスデータ)は、DM/DBI端子を介してデータ入出力部19に入力される。
なお、データマスク信号の機能は、本願とは直接には関係しないため、半導体装置10内部において、データバスインバージョン信号DM/DBI[7:0]とは表さず、データバスインバージョン信号DBI[7:0]と表している。
【0022】
半導体装置10内では、リード動作時に、データバスインバージョン回路21がデータバスインバージョン信号DBI[7:0]を生成する。データバスインバージョン回路21は、リードライトバスからリードデータDATA[63:0]を受け取り、所定の処理(上記多数決処理)を行い、データバスインバージョン信号DBI[7:0]を生成し、DM/DBIバスを介して誤り検出符号生成回路20に供給する。
なお、データマスク信号とデータバスインバージョン信号とは、本実施形態においては共通の端子で入出力を行うため、どちらか一方を排他的に使用するか、又は、どちらも使用しないこととなる。この設定は、制御回路18内のモードセットレジスタに動作モードを設定しておくことで切替えが可能である。
【0023】
本発明に関係するコマンドが、外部から供給される場合、半導体装置10が行う動作について簡単に述べる。
まず、外部からのクロック信号CKの立ち上り時(/CKの立下り時)に、外部メモリ制御信号CS、RASがLレベルであり外部メモリ制御信号CAS、WEがHレベルであるときに、コマンドデコーダ16にACTコマンドが入力される。このとき、コマンドデコーダ16の内部コマンド信号のうち、内部アクティブ信号がLレベルからHレベルへ変化する。この内部アクティブ信号のHレベルへの変化に対応して、半導体装置10の内部でアクティブ動作が行われる。すなわち、ロウデコーダ13及び制御回路18におけるアドレスバッファは、活性化を示す活性非活性制御信号が入力され、活性化される。また、ACTコマンド入力と同時に、外部入力のアドレス信号がアドレスバッファにラッチされる。そして、活性化されたロウデコーダ13は、ラッチされたアドレス信号をデコードし、メモリセルアレイ11のワード線を選択および駆動する。また、ACTコマンド入力により、センスアンプ15、データ入出力部19も、活性化を示す活性非活性制御信号が入力され、活性化される。制御回路18は、内部で活性化を示す活性非活性制御信号をタイミング調整し、センスアンプ15へ出力する。タイミング調整した信号が入力されるセンスアンプ15は、ビット線の電圧を増幅する。
【0024】
次に、書き込み動作においては、クロック信号CKの立ち上り時に、外部メモリ制御信号CS、CAS、WEがLレベルであり、外部メモリ制御信号RASがHレベルであるときに、制御回路18におけるコマンドデコーダにWRITEコマンドが入力される。このとき、コマンドデコーダの内部コマンド信号の中で、内部ライト信号がLレベルからHレベルへ変化する。この内部ライト信号のHレベルへの変化に対応して、半導体装置10の内部でライト動作が行われる。すなわち、既にACTコマンドにより活性化されているアドレスバッファは、今度はWRITEコマンドとともに入力される外部入力のアドレス信号をラッチし、WRITEコマンドにより活性化されるカラムデコーダ14は、ラッチされたアドレス信号に基づいて、メモリセルアレイ11のビット線を選択する。制御回路18は、ライト制御信号をタイミング制御し、データ入出力部19へ出力する。ライト制御信号が入力されるデータ入出力部19は、選択されたメモリセルアレイ11のビット線をリードライトバス及びカラムスイッチを介して、センスアンプ15とともに駆動し、外部から入力されるライトデータを、メモリセルに書き込む。
【0025】
また、読み出し動作においては、クロック信号CKの立ち上り時に、外部メモリ制御信号CS、CASがLレベルであり、外部メモリ制御信号RAS、WEがHレベルであるときに、制御回路18におけるコマンドデコーダにREADコマンドが入力される。このとき、コマンドデコーダの内部コマンド信号の中で、内部リード信号がLレベルからHレベルへ変化する。この内部リード信号のHレベルへの変化に対応して、半導体装置10の内部でリード動作が行われる。すなわち、既にACTコマンドにより活性化されているアドレスバッファは、今度はREADコマンドとともに入力される外部入力のアドレス信号をラッチし、READコマンドにより活性化されるカラムデコーダ14は、ラッチされたアドレス信号に基づいて、メモリセルアレイ11のビット線を選択する。制御回路18は、リード制御信号をタイミング制御し出力する。リード制御信号が入力されるデータ入出力部19は、センスアンプ15により増幅されたメモリセルアレイ11のビット線の電圧が、カラムスイッチ及びリードライトバスを介してリードデータDATA[63:0]として入力され、また、誤り検出符号生成回路20が生成したCRC符号CRC[7:0]がCRC信号線を介して入力され、これらの両データを外部へデータ入出力端子DQを介して出力する。
【0026】
読み出し動作または書き込み動作に続いてスタンバイ状態に移行する際、クロック信号CKの立ち上り時に、外部メモリ制御信号CS、RAS、WEがLレベルであり、外部メモリ制御信号CASがHレベルであるときに、制御回路18におけるコマンドデコーダにPREコマンドが入力される。このとき、コマンドデコーダ16の内部コマンド信号の中で、内部プリチャージ信号がLレベルからHレベルへ変化する。この内部プリチャージ信号のHレベルへの変化に対応して、半導体装置10の内部でプリチャージ動作が行われる。すなわち、ロウデコーダ13は、非活性化を示す活性非活性制御信号が入力されて非活性化され、メモリセルアレイ11のワード線が非選択状態となり、メモリセルアレイ11のビット線が所定の電圧へプリチャージされ、半導体装置10はスタンバイ状態(IDLE)となる。また、PREコマンド入力により、カラムデコーダ14、センスアンプ15、データ入出力部19にも、非活性化を示す活性非活性制御信号が入力され、非活性化される。
【0027】
また半導体装置10に動作モードを設定するには、クロック信号CKの立ち上り時に、外部メモリ制御信号CS、RAS、WE、CASが全てLレベルであるときに、制御回路18におけるコマンドデコーダにMRSコマンドが入力される。制御回路18におけるモードレジスタは、MRSコマンドが入力され、入力されるアドレスの論理が所定の論理である場合、半導体装置10が移行する動作モードを示すコード(MRSコード)を生成する。このMRSコードは、モードレジスタにラッチされ、制御回路18が半導体装置10内の各回路の動作(例えば、バースト長さBLの設定、或いはデータ入出力部19のメモリセルへの誤りデータ書込み動作を許可するか否か)を制御するために用いられる。
なお、MRSコマンドが供給され、上記テスト動作モードへ移行した半導体装置10に、ACTコマンド、READコマンド等を供給する場合、半導体装置10は供給されるコマンドが指示する上述した動作を行う。
また、このMRSコードは、再びMRSコマンドが供給されるまではモードレジスタに保持される。
【0028】
続いて、図1に示す誤り検出符号生成回路20の構成について説明する。
図3は、誤り検出符号生成回路20の構成を示すブロック図である。
図3に示す様に、誤り検出符号生成回路20はオア回路101、8ビットCRC符号生成回路102、フリップフロップ回路103、バッファ回路104、遅延回路105、8ビットCRC符号判定回路110(8ビットCRC符号比較回路111、ラッチ回路112、アンド回路113、及び遅延回路114)を含んで構成される。
オア回路101は、制御回路18から入力される制御信号Read CRC Ctrl CLKと制御信号Write CRC Ctrl CLKとの論理和を演算し、演算結果である出力信号を、8ビットCRC符号生成回路102を構成するラッチ回路102aに対して出力する。オア回路101は、制御信号Read CRC Ctrl CLKと制御信号Write CRC Ctrl CLKとのいずれか一方が活性レベル(Hレベル)になると、Hレベルの出力信号をラッチ回路102aに対して出力する。
【0029】
8ビットCRC符号生成回路102は、ラッチ回路102a、及び72入力排他的論理和回路102bを含んで構成される。
ラッチ回路102aは、リードライトバス、及びDM/DBIバスを介してそれぞれ入力されるデータ(リードデータDATA[63:0]またはライトデータDATA[63:0])、データバスインバージョン信号DBI[7:0]を、オア回路101の出力信号がHレベルになると保持するとともに、保持した信号をデータ信号D[71:0]として72入力排他的論理和回路102bに出力する。
ここで、データ信号D[71:0]は、データ(リードデータDATA[63:0]またはライトデータDATA[63:0])に対応する上位のデータ信号D[71:8]と、データバスインバージョン信号DBI[7:0]に対応するデータ信号D[7:0]から構成される。
72入力排他的論理和回路102bは、ラッチ回路102aから入力されるデータ信号D[71:0]を用いて、XOR演算(排他的論理和演算)し、CRC演算結果として8ビットのCRC論理符号CRC_LOGIC[7:0](巡回冗長論理符号)を生成する。72入力排他的論理和回路102bは、例えば7個の多入力排他的論理和回路XOR_0〜多入力排他的論理和回路XOR_7(不図示)を含んで構成され、多入力排他的論理和回路各々は多入力の論理レベルのうちに偶数個のLレベル(論理「0」)がある場合、出力端子からLレベル(論理「0」)の出力信号(CRC論理符号CRC_LOGIC)を出力する。また、多入力排他的論理和回路各々はは、多入力の論理レベルのうちに奇数個のLレベルがある場合、Hレベル(論理「1」)の出力信号(CRC論理符号CRC_LOGIC)を出力する。
【0030】
遅延回路105は、ラッチ回路102aのラッチ動作、及び72入力排他的論理和回路102bの演算動作に必要となる時間分の遅延時間が設定され、制御信号Read CRC Ctrl CLKを遅延させた信号をフリップフロップ回路103、及びバッファ回路104に出力する。
フリップフロップ回路103は、72入力排他的論理和回路102bの演算結果であるCRC論理符号CRC_LOGIC[7:0]を、遅延された制御信号Read CRC Ctrl CLKが活性レベル(Hレベル)になると保持するとともに、保持した信号をバッファ回路104に出力する。バッファ回路104は、フリップフロップ回路103が保持するCRC論理符号CRC_LOGIC[7:0]を、遅延された制御信号Read CRC Ctrl CLKが活性レベル(Hレベル)になると、CRC符号CRC[7:0]としてデータ入出力部19に対して出力する。データ入出力部19は、リード動作において、このCRC符号CRC[7:0]をデータ入出力端子DQから半導体装置10のリード時のCRC結果(Read CRC result)として出力する。
【0031】
8ビットCRC符号判定回路110は、8ビットCRC符号比較回路111、ラッチ回路112、アンド回路113、及び遅延回路114を含んで構成される。また、8ビットCRC符号比較回路111は、排他的論理和回路111aとオア回路111bを含んで構成される。
排他的論理和回路111aは、72入力排他的論理和回路102bの演算結果であるCRC論理符号CRC_LOGIC[7:0]と、バッファ回路104の出力信号であるCRC符号CRC[7:0]とのXOR演算(排他的論理和演算)し、演算結果をオア回路111bに出力する。この排他的論理和回路111aは、例えば8個のXOR回路(排他的論理和回路)から構成され、各々のXOR回路において、CRC論理符号CRC_LOGIC[7:0]の1ビットとCRC符号CRC[7:0]の対応する1ビットとの(例えば、i=0〜7としてCRC論理符号CRC_LOGIC[i]とCRC符号CRC[i]との)排他的論理和を演算し、合計8ビットの出力信号をオア回路111bに出力する。排他的論理和回路111aは、CRC論理符号CRC_LOGIC[7:0]の論理レベルとCRC符号CRC[7:0]の論理レベルとが全て一致する場合、全てLレベルの出力信号を出力する。一方、CRC論理符号CRC_LOGIC[7:0]の論理レベルとCRC符号CRC[7:0]の論理レベルとが一つでも一致しない場合、一致するビットについてはLレベルを出力するが、一致しないビットに対してはHレベルを出力する。
オア回路111bは、排他的論理和回路111aからの8ビットの出力信号を論理和演算し、演算結果をラッチ回路112に対して出力する。従って、8ビットCRC符号比較回路111は、CRC論理符号CRC_LOGIC[7:0]の論理レベルとCRC符号CRC[7:0]の論理レベルとが全て一致する場合、Lレベルの出力信号をラッチ回路112に対して出力し、一つでも一致しない場合、Hレベルの出力信号をラッチ回路112に対して出力する。
【0032】
遅延回路114は、8ビットCRC符号生成回路102の動作(ラッチ回路102aのラッチ動作、及び72入力排他的論理和回路102bの演算動作)、及び8ビットCRC符号比較回路111の比較動作に必要とされる時間分の遅延時間が設定され、制御信号CRC Capture CLKを遅延させた信号をラッチ回路112、及びアンド回路113に出力する。
ラッチ回路112は、8ビットCRC符号比較回路111の比較結果を、遅延された制御信号CRC Capture CLKが活性レベル(Hレベル)になると保持するとともに、保持した信号をアンド回路113に出力する。アンド回路113は、ラッチ回路112が保持する8ビットCRC符号比較回路111の比較結果と、遅延された制御信号CRC Capture CLKとの論理積を演算し、演算結果として判定結果信号Write CRC Error Flagを制御回路18に対して出力する。
すなわち、8ビットCRC符号比較回路111、ラッチ回路112、アンド回路113、及び遅延回路114を含んで構成される8ビットCRC符号判定回路110は、CRC論理符号CRC_LOGIC[7:0]の論理レベルとCRC符号CRC[7:0]の論理レベルとが全て一致する場合、Lレベルの判定結果信号Write CRC Error Flagを警告信号出力部22に対して出力し、一つでも一致しない場合、Hレベルの判定結果信号Write CRC Error Flagを警告信号出力部22に対して出力する。
【0033】
続いて、図1に示すデータ入出力部19の構成について、図4を用いて説明する。
図4は、データ入出力部19の構成を示すブロック構成図であり、図4において、1つのデータ入出力端子DQについて示している。このデータ入出力部19は、図1に示すリードデータDATA[63:0]のうちリードデータDATA[7:0]、CRC符号CRC[7:0]のうちCRC符号CRC[0]、及びCRC符号CRC[4]が入力されるデータ入出力部であり、データ入出力端子DQ0に対応して設けられるデータ入出力部である。なお、他のデータ入出力部も複数のデータ入出力端子DQ各々に対応して設けられるが、図4に示す制御回路18が、これら全てのデータ入出力部19に対して共通に設けられる。
データ入出力部19は、リードライトバスを介して入力されるリードデータDATA[7:0]に、リードライトバスとは別途設けられるCRC信号配線を介して入力されるCRC符号CRC[0]、及びCRC符号CRC[4]を付加して、データ入出力端子DQから出力する。
【0034】
制御回路18は、FIFO制御回路61、シリアライザ制御回路63、及びOCD制御回路64を含んで構成される。なお、図4において、制御回路18は、図1に示す制御回路18のうち、データ入出力動作に係る部分を抜き出して示している。
FIFO制御回路61は、制御回路18が内部に備えるクロック生成回路が発生する外部クロック信号CKに同期したクロック信号DLL_clkが入力され、このクロック信号DLL_clkに基づいて、制御信号ron[2:0]、制御信号para2ser_en、制御信号crc_en、クロック信号dll_clk、クロック信号drclk[1:0]、及びクロック信号drmuxclkを出力する。
シリアライザ制御回路63は、クロック信号dll_clk、制御信号para2ser_en、及び制御信号crc_enが入力され、シリアライザイネーブル信号ser_en[5:0]をシリアライザ35に出力する。
OCD制御回路64は、出力ドライバ40のインピーダンス値を調整するイネーブル信号dq_en[2:0]を、FIFO制御回路61がRon/ODT codeに基づいて出力する制御信号ron[2:0]、シリアライザ制御回路63が出力する制御信号drv_tarm、制御回路18が出力する制御信号dq_disebleに基づいて生成する。なお、本実施形態において、OCD制御回路64の動作は、本発明に直接関係しないので、詳細な説明は省略するものとし、イネーブル信号dq_en[2:0]は、Ron/ODT codeにより全てHレベルに設定されるものとする。
【0035】
データ入出力部19は、FIFO回路31、FIFOポインタ32、マルチプレクサ33、リタイマ回路34、シリアライザ35、フリップフロップ回路36、レベルシフタ37、論理回路部38、出力ドライバゲート駆動回路39u、出力ドライバゲート駆動回路39d、及び出力ドライバ40を含んで構成される。また、データ入出力部19は、レシーバ51、レシーバ52、WriteFIFOバッファ53、シリアルパラレル変換回路54を備えている。
【0036】
FIFO回路31は、例えば、リードデータDATA[7:0]各々に対応した8個のFIFOバッファ(不図示)と、CRC符号CRC[4]、CRC符号CRC[0]に各々に対応した2個のCRCFIFOバッファを備えている。
ところで、データ入出力部19からデータ入出力端子DQへのデータリード動作として、所定の間隔でカラムアドレスを更新して次々とデータを読み出して外部に連続出力するバーストリードが知られている。このようなバーストリードを実行すると、先行して半導体装置10に対して供給されたリードコマンドの対象データがまだデータ入出力部19に保持されているタイミングで、その後に供給されたリードコマンドの対象データをさらに取り込む状態が生じ得る。そのため、データ入出力部19の上書きによる誤動作を防止すべく、ラッチ回路を多段備えたFIFOバッファを用いてデータ入出力部19を構成し、所定の時間にわたって入力されたデータを保持し、入力順に従って順次出力するように制御する必要がある。例えば、バーストリード動作の際、外部クロックの周波数が低くなるほどアクセス時間が長くなる一方で、出力バッファ回路にデータが転送されるタイミングが相対的に早くなるので、このような動作状態になっても出力バッファ回路が確実にデータを保持できるようにする必要がある。
【0037】
そこで、FIFO回路31における上記FIFOバッファ各々は、例えば、6ビットのラッチ回路(不図示)を含んで構成される。この6ビットラッチ回路は、6回の転送動作(6回のリードコマンドでデータ入出力端子DQ0からデータを連続出力するデータ出力動作)の計6ビット分をそれぞれラッチし、ラッチされた順に所定のタイミングで出力する。そのため、6ビットのラッチ回路は、例えば6段のラッチ回路を接続して構成される。6段のラッチ回路は、それぞれ入力側のスイッチ部と、レジスタ部と、出力側のスイッチ部が直列接続されて構成されている。各段の入力側のスイッチ部には、入力データ(リードデータDATAまたはCRC符号の1ビット)が入力される。また、各段の出力側のスイッチ部は、8個のFIFOバッファでは、セレクタ(マルチプレクサ33)に共通に接続され、2個のCRCFIFOバッファでは、シリアライザ35に接続される。
【0038】
FIFO回路31は、FIFOポインタ32が出力するOutPointerに応じて、6段のラッチ回路のうち1段を選択して出力を行い、InPointerに応じて6段のラッチ回路のうち1段を選択して入力を行なう。
FIFO回路31においては、6段のラッチ回路の順番に従って、FIFOポインタ32から6ビットのInPointer(選択信号SELa<0>〜SELa<5>とする)が入力側の各スイッチ部に供給されるとともに、FIFOポインタ32から6ビットのOutPointer(選択信号SELb<0>〜SELb<5>とする)が出力側の各スイッチ部に供給される。例えば、初段のラッチ回路における入力側のスイッチ部、及び出力側のスイッチ部は、選択信号SELa<0>、SELb<0>がHレベルのときに通過状態となる一方、選択信号SELa<0>、SELb<0>がLレベルのときに遮断状態となる。2段目以降のラッチ回路についても、同様に通過状態又は遮断状態が選択信号SELa<1>〜SELa<5>、SELb<1>〜SELb<5>により切り替え制御される。
【0039】
6段のラッチ回路の各レジスタ部には、各入力側のスイッチ部を通過した1ビットの保持データ(リードデータDATAまたはCRC符号の1ビット)が安定に保持される。この場合、入力データの取り込みタイミングに合わせて、FIFOポインタ32が順番に選択信号SELa<0>〜SELa<5>を異なるタイミングでHレベルにすることで、6回の転送動作の6ビット分を各ラッチ回路のレジスタ部にラッチすることができる。同様に、FIFOポインタ32が順番に選択信号SELb<0>〜SELb<5>を異なるタイミングでHレベルにすることで、6ビット分をラッチされた順番で各ラッチ回路からマルチプレクサ33に対して出力することができる。
【0040】
本実施形態では、CRC符号を外部に出力する場合は、外部クロックCK(及び外部クロック/CK)の5サイクル(5tCK)毎に、CRC符号を外部に出力しない場合は、外部クロックCK(及び外部クロック/CK)の4tCK毎に、リードコマンドが供給されるバーストリード動作を前提とする。
以下では、CRC符号を外部に出力する場合について説明する。
制御回路18は、リードコマンド(Read cmd)が供給された後の所定のタイミング(リードデータDATAの論理が確定するタイミングで)、クロック信号Data Latch clkを発生させる。また、制御回路18におけるFIFO制御回路61は、クロック信号drmuxclkを発生させる。クロック信号Data Latch clk、クロック信号drmuxclkは、外部クロックCKの5tCK毎にFIFOポインタ32に入力される。各FIFOバッファの6ビットラッチ回路では、6段のラッチ回路が順番に通過状態となるように制御される。そのため、FIFOポインタ32は、入力側の選択信号SELa<0:5>を5tCKごとに切り替わりながら順番にHレベルとする。各FIFOバッファでは、最初のデータ(リードデータDATAの8ビット、CRC符号CRCの2ビット)の各ビットが初段の各ラッチ回路の保持データとしてラッチされ、それ以降は同様に5サイクルおきに各データが順番に他のラッチ回路にラッチされていく。
【0041】
各FIFOバッファのラッチ回路の段数は6段であるので、FIFOポインタ32は出力側の6ビットの選択信号SELb<0:5>を出力する。この場合も、選択信号SELb<0:5>は5サイクルごとに切り替わり、各FIFOバッファにおいて、各ラッチ回路の保持データがラッチされた順にマルチプレクサ33に出力する。また、各CRCFIFOバッファは、6段のラッチ回路が保持するデータをシリアライザ35(パラレルシリアル変換回路)に出力する。
【0042】
マルチプレクサ33は、クロック信号drmuxclk、及びFIFOバッファが保持する8ビットのデータが入力され、8ビットのデータのうち4ビットのデータを選択して、次段のリタイマ回路34に出力する。マルチプレクサ33は、クロック信号drmuxclkが入力されると、クロック信号dll_clkの2周期分の期間において、FIFO回路31の8ビットの出力のうち、4ビットのデータ(リードデータDATA[0]〜リードデータDATA[3])を通過させ、リタイマ回路34へと出力する。また、マルチプレクサ33は、続くクロック信号dll_clkの2周期分の期間において、FIFO回路31の8ビットの出力のうち、残りの4ビットのデータ(リードデータDATA[4]〜リードデータDATA[7])を通過させ、リタイマ回路34へと出力する。
【0043】
リタイマ回路34は、上記各期間において入力される4ビットのデータ信号(リードデータDATA)をクロック信号drclk[1:0]によりタイミング調整して、4ビットの正転のデータ信号dat_t[3:0]、及びデータ信号dat_t[3:0]をそれぞれ反転した反転のデータ信号dat_c[3:0]をシリアライザ35へと出力する。制御回路18におけるFIFO制御回路61は、リードコマンド(Read cmd)が供給された後、リードコマンドが供給されるたびに外部クロックCK(及び外部クロック/CK)の2サイクル(2tCK)の期間においてHレベルとなり、続く2サイクルの期間においてLレベルとなるクロック信号drclk[0]を発生する。リタイマ回路34は、クロック信号drclk[0]のHレベルの期間に、マルチプレクサ33が通過させる4ビットのデータを、クロック信号dll_clkの2周期分のパルス幅に調整してシリアライザ35へと出力する。また、FIFO制御回路61は、クロック信号drclk[0]の反転信号であるクロック信号drclk[1]を発生する。リタイマ回路34は、クロック信号drclk[1]のHレベルの期間に、マルチプレクサ33が通過させる4ビットのデータを、クロック信号dll_clkの2周期分のパルス幅に調整してシリアライザ35へと出力する。
【0044】
シリアライザ35は、リタイマ回路34から入力されるデータ信号dat_t[3:0]、及びデータ信号dat_t[3:0]を、シリアライザイネーブル信号ser_en[5:0]の論理レベルに基づいて、クロック信号dll_clkの立ち上がり、または立ち上がりで、2つの出力信号線(Serializer_output)へ、シリアライザ出力信号OUTu、シリアライザ出力信号OUTdをそれぞれ出力する。詳細については、シリアライザ35の回路構成と併せて後述する。
【0045】
フリップフロップ回路36は、2つのインバータ回路の入出力を相互接続して構成され、トライステートバッファであるシリアライザ35の出力信号がフローティング状態となるのを防止する。
レベルシフタ37は、シリアライザ35の出力信号の電圧レベルを、出力ドライバ40を駆動する回路である論理回路部38、出力ドライバゲート駆動回路39u(39u1〜39u3)、及び出力ドライバゲート駆動回路39d(39d1〜39d3)の動作電圧へ変換する回路である。
【0046】
論理回路部38は、インバータ回路を直列接続して形成される第1の信号伝達経路と、同じくインバータ回路を直列接続して形成される第2の信号伝達経路から構成される。図4において、第1の信号伝達経路の出力と、出力ドライバゲート駆動回路39uの初段回路であるナンド回路の一方の入力との回路接続点を、接続点ndUで示している。また、図4において、第2の信号伝達経路の出力と、出力ドライバゲート駆動回路39dの初段回路であるノア回路の一方の入力との回路接続点を、接続点ndDで示している。
レベルシフタ37、及び論理回路部38は、シリアライザ出力信号OUTuがHレベル、シリアライザ出力信号OUTdがLレベルのとき、接続点ndUをHレベル、接続点ndDをHレベルへと駆動する。また、レベルシフタ37、及び論理回路部38は、シリアライザ出力信号OUTuがLレベル、シリアライザ出力信号OUTdがHレベルのとき、接続点ndUをLレベル、接続点ndDをLレベルへと駆動する。
【0047】
出力ドライバゲート駆動回路39u(39u1〜39u3)各々は、ナンド回路、オア回路、インバータ回路、NMOSトランジスタより構成される。出力ドライバゲート駆動回路39d(39d1〜39d3)各々は、オア回路、ナンド回路、インバータ回路、PMOSトランジスタより構成される。出力ドライバ40は、PMOSトランジスタとNMOSトランジスタから構成され、これらトランジスタの共通接続点にデータ入出力端子DQが接続されている。
シリアライザ出力信号OUTuがHレベル、シリアライザ出力信号OUTdがLレベルのとき、出力ドライバゲート駆動回路39uは、出力ドライバ40のPMOSトランジスタを導通(オン)させ、出力ドライバゲート駆動回路39dは、出力ドライバ40のNMOSトランジスタを非導通(オフ)させる。これにより、出力ドライバ40は、データ入出力端子DQをHレベルに駆動する。
一方、シリアライザ出力信号OUTuがLレベル、シリアライザ出力信号OUTdがHレベルのとき、出力ドライバゲート駆動回路39uは、出力ドライバ40のPMOSトランジスタをオフさせ、出力ドライバゲート駆動回路39dは、出力ドライバ40のNMOSトランジスタをオンさせる。これにより、出力ドライバ40は、データ入出力端子DQをLレベルに駆動する。
【0048】
なお、図4において、制御信号ZQは、出力ドライバ40のインピーダンスを調整するためのインピーダンス制御信号である。また、制御信号SRは、出力ドライバ40を構成するトランジスタによるリンギングを防止するため、トランジスタのゲートの急峻な立ち上がりを抑制するインピーダンス制御信号である。本実施形態において、これらの制御信号ZQ、制御信号SRは、発明とは直接関係しないため、出力ドライバゲート駆動回路39uにおいて、制御信号ZQはLレベル、制御信号SRはHレベル、出力ドライバゲート駆動回路39dにおいて、制御信号ZQはHレベル、制御信号SRはLレベルに固定されるものとする。
【0049】
また、データ書き込み動作については、本発明に直接関係しないので、その概要だけ以下に述べる。データ書き込み動作においては、レシーバ52が、レシーバ51が外部からのライトデータとともに受け取るDQSクロック(DQS_T、DQS_C)に基づいて生成するクロック信号に同期して、ライトデータを、WriteFIFOバッファ53に書き込む。例えば、半導体装置10が×4IO構成でライト動作を行い、CRC符号を供給される場合を説明する。レシーバ52は、データ入出力端子DQから入力される10ビットのシリアル信号を、クロック信号の立ち上がり(rise)と立ち下がり(fall)に応じて、5ビットのdwrd_n(入力される順番にr0〜r4とする)、5ビットのdwfd_n(入力される順番にf0〜f4とする)に分け、WriteFIFOバッファ53に書き込む。なお、r4、及びf4がCRC符号に対応する。
WriteFIFOバッファ53は、クロック信号に同期して、最初にr0、r1、f0,f1の4ビットをパラレルに、その後残りのr2〜r4、f2〜f4の6ビットをパラレルに、dwfifo<5:0>としてシリアルパラレル変換回路54へ出力する。
シリアルパラレル変換回路54は、WriteFIFOバッファ53がシリアルに出力するdwfifo<5:0>をシリアルパラレル変換して、変換後のデータ(8ビットのライトデータDATA、2ビットのCRC符号CRC)を、リードライトバス、及びリードライトバスとは別に設けられたCRC信号線へそれぞれ出力する。
【0050】
続いて、シリアライザ35の回路構成、及び動作について、図5、及び図6を用いて説明する。図5は、シリアライザ35の回路構成を示す。図6は、シリアライザ35の動作タイミングチャートである。図6においては、リードデータDATA[7:0]として、リードデータDATA[0]からリードデータDATA[7]の順番に8ビットのデータ「01011011」が入力され、CRC符号CRC[0]、及びCRC符号CRC[4]として2ビットのデータ「10」が入力される場合の主要信号の論理レベル(0または1)と、波形(LレベルまたはHレベル)を示している。
図5に示すように、シリアライザ35は、論理回路部71〜論理回路部76と、バッファ回路部81〜バッファ回路部83を含んで構成される。
【0051】
論理回路部71〜論理回路部76各々は、2つの3入力ナンド回路から構成される。
論理回路部71は、3入力ナンド回路71a、及び3入力ナンド回路71bから構成される。3入力ナンド回路71aは、シリアライザクロックser_clk_t(FIFO制御回路61から入力されるクロック信号dll_clk)、シリアライザイネーブル信号ser_en[0]、及びデータ信号dat_c[0]が入力され、パルス信号pls1<0>を出力する。3入力ナンド回路71bは、シリアライザクロックser_clk_t、シリアライザイネーブル信号ser_en[0]、及びデータ信号dat_t[0]が入力され、パルス信号pls2<0>を出力する。
論理回路部72は、3入力ナンド回路72a、及び3入力ナンド回路72bから構成される。3入力ナンド回路72aは、シリアライザクロックser_clk_t、シリアライザイネーブル信号ser_en[2]、及びデータ信号dat_c[2]が入力され、パルス信号pls1<2>を出力する。3入力ナンド回路72bは、シリアライザクロックser_clk_t、シリアライザイネーブル信号ser_en[2]、及びデータ信号dat_t[2]が入力され、パルス信号pls2<2>を出力する。
【0052】
論理回路部73は、3入力ナンド回路73a、及び3入力ナンド回路73bから構成される。3入力ナンド回路73aは、シリアライザクロックser_clk_c(シリアライザクロックser_clk_cの反転信号)、シリアライザイネーブル信号ser_en[1]、及びデータ信号dat_c[1]が入力され、パルス信号pls1<1>を出力する。3入力ナンド回路73bは、シリアライザクロックser_clk_c、シリアライザイネーブル信号ser_en[1]、及びデータ信号dat_t[1]が入力され、パルス信号pls2<1>を出力する。
論理回路部74は、3入力ナンド回路74a、及び3入力ナンド回路74bから構成される。3入力ナンド回路74aは、シリアライザクロックser_clk_c、シリアライザイネーブル信号ser_en[3]、及びデータ信号dat_c[3]が入力され、パルス信号pls1<3>を出力する。3入力ナンド回路74bは、シリアライザクロックser_clk_c、シリアライザイネーブル信号ser_en[3]、及びデータ信号dat_t[3]が入力され、パルス信号pls2<3>を出力する。
【0053】
論理回路部75は、3入力ナンド回路75a、及び3入力ナンド回路75bから構成される。3入力ナンド回路75aは、シリアライザクロックser_clk_t、シリアライザイネーブル信号ser_en[4]、及びデータ信号CRCdat_c[0]が入力され、パルス信号CRCpls1<0>を出力する。3入力ナンド回路75bは、シリアライザクロックser_clk_t、シリアライザイネーブル信号ser_en[4]、及びデータ信号CRCdat_t[0]が入力され、パルス信号CRCpls2<0>を出力する。
論理回路部76は、3入力ナンド回路76a、及び3入力ナンド回路76bから構成される。3入力ナンド回路76aは、シリアライザクロックser_clk_c、シリアライザイネーブル信号ser_en[5]、及びデータ信号CRCdat_c[4]が入力され、パルス信号CRCpls1<4>を出力する。3入力ナンド回路76bは、シリアライザクロックser_clk_c、シリアライザイネーブル信号ser_en[5]、及びデータ信号CRCdat_t[4]が入力され、パルス信号CRCpls2<4>を出力する。
【0054】
バッファ回路部81〜バッファ回路部83各々は、2つの2入力アンド回路、2つのインバータ回路、2つのPMOSトランジスタ、2つのNMOSトランジスタから構成される。
バッファ回路部81は、2入力アンド回路81A1、2入力アンド回路81A2、インバータ回路81I1、インバータ回路81I2、PMOSトランジスタ81P1、PMOSトランジスタ81P2、NMOSトランジスタ81N1、及びNMOSトランジスタ81N2から構成される。アンド回路81A1は、パルス信号pls1<0>、及びパルス信号pls1<2>が入力され、駆動信号OUTu1を、インバータ回路81I1、及びPMOSトランジスタ81P2のゲートに対して出力する。アンド回路81A2は、パルス信号pls2<0>、及びパルス信号pls2<2>が入力され、駆動信号OUTd1を、インバータ回路81I2、及びPMOSトランジスタ81P1のゲートに対して出力する。インバータ回路81I1は、駆動信号OUTu1を論理反転して、反転した信号をNMOSトランジスタ81N1のゲートに対して出力する。インバータ回路81I2は、駆動信号OUTd1を論理反転して、反転した信号をNMOSトランジスタ81N2のゲートに対して出力する。PMOSトランジスタ81P1において、ソースは電源に接続され、ドレインはNMOSトランジスタ81N1のドレインに接続される。NMOSトランジスタ81N1において、ドレインはPMOSトランジスタ81P1のドレインに接続され、ソースは接地される。PMOSトランジスタ81P1のドレイン、及びNMOSトランジスタ81N1のドレインは、シリアライザ35の一方の出力に接続される。PMOSトランジスタ81P2において、ソースは電源に接続され、ドレインはNMOSトランジスタ81N2のドレインに接続される。NMOSトランジスタ81N2において、ドレインはPMOSトランジスタ81P2のドレインに接続され、ソースは接地される。PMOSトランジスタ81P2のドレイン、及びNMOSトランジスタ81N2のドレインは、シリアライザ35の他方の出力に接続される。
【0055】
バッファ回路部82は、2入力アンド回路82A1、2入力アンド回路82A2、インバータ回路82I1、インバータ回路82I2、PMOSトランジスタ82P1、PMOSトランジスタ82P2、NMOSトランジスタ82N1、及びNMOSトランジスタ82N2から構成される。アンド回路82A1は、パルス信号pls1<1>、及びパルス信号pls1<3>が入力され、駆動信号OUTu2を、インバータ回路82I1、及びPMOSトランジスタ82P2のゲートに対して出力する。アンド回路82A2は、パルス信号pls2<1>、及びパルス信号pls2<3>が入力され、駆動信号OUTd2を、インバータ回路82I2、及びPMOSトランジスタ82P1のゲートに対して出力する。インバータ回路82I1は、駆動信号OUTu2を論理反転して、反転した信号をNMOSトランジスタ82N1のゲートに対して出力する。インバータ回路82I2は、駆動信号OUTd2を論理反転して、反転した信号をNMOSトランジスタ82N2のゲートに対して出力する。PMOSトランジスタ82P1において、ソースは電源に接続され、ドレインはNMOSトランジスタ82N1のドレインに接続される。NMOSトランジスタ82N1において、ドレインはPMOSトランジスタ82P1のドレインに接続され、ソースは接地される。PMOSトランジスタ82P1のドレイン、及びNMOSトランジスタ82N1のドレインは、シリアライザ35の一方の出力に接続される。PMOSトランジスタ82P2において、ソースは電源に接続され、ドレインはNMOSトランジスタ82N2のドレインに接続される。NMOSトランジスタ82N2において、ドレインはPMOSトランジスタ82P2のドレインに接続され、ソースは接地される。PMOSトランジスタ82P2のドレイン、及びNMOSトランジスタ82N2のドレインは、シリアライザ35の他方の出力に接続される。
【0056】
バッファ回路部83は、2入力アンド回路83A1、2入力アンド回路83A2、インバータ回路83I1、インバータ回路83I2、PMOSトランジスタ83P1、PMOSトランジスタ83P2、NMOSトランジスタ83N1、及びNMOSトランジスタ83N2から構成される。アンド回路83A1は、パルス信号CRCpls1<0>、及びパルス信号CRCpls1<4>が入力され、駆動信号OUTu3を、インバータ回路83I1、及びPMOSトランジスタ83P2のゲートに対して出力する。アンド回路83A2は、パルス信号CRCpls2<0>、及びパルス信号CRCpls2<4>が入力され、駆動信号OUTd3を、インバータ回路83I2、及びPMOSトランジスタ83P1のゲートに対して出力する。インバータ回路83I1は、駆動信号OUTu3を論理反転して、反転した信号をNMOSトランジスタ83N1のゲートに対して出力する。インバータ回路83I2は、駆動信号OUTd3を論理反転して、反転した信号をNMOSトランジスタ83N2のゲートに対して出力する。PMOSトランジスタ83P1において、ソースは電源に接続され、ドレインはNMOSトランジスタ83N1のドレインに接続される。NMOSトランジスタ83N1において、ドレインはPMOSトランジスタ83P1のドレインに接続され、ソースは接地される。PMOSトランジスタ83P1のドレイン、及びNMOSトランジスタ83N1のドレインは、シリアライザ35の一方の出力に接続される。PMOSトランジスタ83P2において、ソースは電源に接続され、ドレインはNMOSトランジスタ83N2のドレインに接続される。NMOSトランジスタ83N2において、ドレインはPMOSトランジスタ83P2のドレインに接続され、ソースは接地される。PMOSトランジスタ83P2のドレイン、及びNMOSトランジスタ83N2のドレインは、シリアライザ35の他方の出力に接続される。
【0057】
シリアライザ35にはクロック信号として、図6に示す相補2相クロック(シリアライザクロックser_clk_t、シリアライザクロックser_clk_c)がFIFO制御回路61から入力される。これらの信号は、クロック信号DLL_clkに完全同期(周期、パルス幅が同じ)している。なお、図6において、クロック信号DLL_clkの各パルスに、外部クロックCKの5tCK分のHレベルまたはLレベルに対応して、1〜10の期間を示す番号UIを付している。
シリアライザ制御回路63は、1UIと5UIにおいてシリアライザイネーブル信号ser_en[0]を、2UIと6UIにおいてシリアライザイネーブル信号ser_en[1]を、3UIと7UIにおいてシリアライザイネーブル信号ser_en[2]を、4UIと8UIにおいてシリアライザイネーブル信号ser_en[3]を、それぞれLレベルからHレベルへと変化させる。
なお、前述の通り、リタイマ回路34が、マルチプレクサ33を通過する4ビットのデータを、クロック信号dll_clkの2周期分のパルス幅に調整することから、4UIから5UIへ切り替わる時刻において、シリアライザ35に入力されるdat_t[3:0]の論理レベルが切り替わる。
【0058】
本実施形態において、リードデータDATA[7:0]=「01011011」であるので、1UIから4UIの期間、dat_t[0]=0、dat_c[0]=1であり、5UIから8UIの期間、dat_t[0]=1、dat_c[0]=0である。
同様に、1UIから4UIの期間、dat_t[1]=1、dat_c[1]=0であり、5UIから8UIの期間、dat_t[1]=0、dat_c[1]=1である。
同様に、1UIから4UIの期間、dat_t[2]=0、dat_c[2]=1であり、5UIから8UIの期間、dat_t[2]=1、dat_c[2]=0である。
同様に、1UIから4UIの期間、dat_t[3]=1、dat_c[3]=0であり、5UIから8UIの期間、dat_t[3]=1、dat_c[3]=0である。
また、9UIから10UIの期間、CRCdat_t[0]=1、CRCdat_c[0]=0であり、9UIから10UIの期間、CRCdat_t[4]=0、CRCdat_c[4]=1である。
【0059】
1UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号pls1<0>がLレベルとなり、バッファ回路部81は駆動信号OUTu1をLレベルにし、シリアライザ出力信号OUTuをLレベル、シリアライザ出力信号OUTdをHレベルへ変化させる。出力ドライバ40は、データ入出力端子DQをLレベルに駆動する。
2UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号pls2<1>がLレベルとなり、バッファ回路部82は駆動信号OUTd2をLレベルにし、シリアライザ出力信号OUTuをHレベル、シリアライザ出力信号OUTdをLレベルへ変化させる。出力ドライバ40は、データ入出力端子DQをHレベルに駆動する。
3UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号pls1<2>がLレベルとなり、バッファ回路部81は駆動信号OUTu1をLレベルにし、シリアライザ出力信号OUTuをLレベル、シリアライザ出力信号OUTdをHレベルへ変化させる。出力ドライバ40は、データ入出力端子DQをLレベルに駆動する。
4UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号pls2<3>がLレベルとなり、バッファ回路部82は駆動信号OUTd2をLレベルにし、シリアライザ出力信号OUTuをHレベル、シリアライザ出力信号OUTdをLレベルへ変化させる。出力ドライバ40は、データ入出力端子DQをHレベルに駆動する。
【0060】
5UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号pls2<0>がLレベルとなり、バッファ回路部81は駆動信号OUTd1をLレベルにし、シリアライザ出力信号OUTuをHレベル、シリアライザ出力信号OUTdをLレベルに維持する。出力ドライバ40は、データ入出力端子DQをHレベルに駆動する。
6UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号pls1<1>がLレベルとなり、バッファ回路部82は駆動信号OUTu2をLレベルにし、シリアライザ出力信号OUTuをLレベル、シリアライザ出力信号OUTdをHレベルへ変化させる。出力ドライバ40は、データ入出力端子DQをLレベルに駆動する。
7UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号pls2<2>がLレベルとなり、バッファ回路部81は駆動信号OUTd1をLレベルにし、シリアライザ出力信号OUTuをHレベル、シリアライザ出力信号OUTdをLレベルへ変化させる。出力ドライバ40は、データ入出力端子DQをHレベルに駆動する。
8UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号pls2<3>がLレベルとなり、バッファ回路部82は駆動信号OUTd2をLレベルにし、シリアライザ出力信号OUTuをHレベル、シリアライザ出力信号OUTdをLレベルに維持する。出力ドライバ40は、データ入出力端子DQをHレベルに駆動する。
【0061】
9UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号CRCpls2<0>がLレベルとなり、バッファ回路部83は駆動信号OUTd3をLレベルにし、シリアライザ出力信号OUTuをHレベル、シリアライザ出力信号OUTdをLレベルに維持する。出力ドライバ40は、データ入出力端子DQをHレベルに駆動する。
10UIにおいて、論理回路部71〜論理回路部76の出力のうち、パルス信号CRCpls1<4>がLレベルとなり、バッファ回路部82は駆動信号OUTu3をLレベルにし、シリアライザ出力信号OUTuをLレベル、シリアライザ出力信号OUTdをHレベルへ変化させる。出力ドライバ40は、データ入出力端子DQをLレベルに駆動する。
このように、シリアライザ35は、相補2相クロックに対応したシリアル変換回路のため、低ノイズ、ジッタで超高速動作が可能である。また、シリアライザ35は、トライステート型出力・シリアライザのため、PMOSトランジスタ及びNMOSトランジスタがそれぞれ直列2段積みで構成される従来のクロックドインバータ型シリアライザに比べて出力の負荷が低減し、超高帯域データ転送が可能となる。
【0062】
このようにして、データ入出力部19は、FIFO回路31に保持するリードデータDATA[7:0]、CRC符号CRC[0]、及びCRC符号CRC[4]を、データ入出力端子DQから外部クロックCKの立ち上がり及び立ち上がりに同期して、10ビットのデータ(8ビットのリードデータDATAに2ビットのCRC符号を付加したデータ)を直列に(シリアルに)出力する。
【0063】
なお、以上の説明は、×4IO構成でCRC符号CRCを2ビット付加してリード動作する場合である。×8IO構成においてリード動作をする場合、CRC符号CRCを1ビット付加してリード動作を行うため、FIFO制御回路61が、制御信号para2ser_en、及び制御信号crc_enを活性レベルとすることによって、シリアライザ制御回路63は、シリアライザイネーブル信号ser_en[4:0]をシリアライザ35に出力する。これにより、データ入出力部19は、外部クロックCKの4.5tCKの間に8ビットのリードデータにCRC符号を加えた9ビットのデータをシリアルに出力する。
また、CRC符号CRCを付加しないでリード動作する場合、FIFO制御回路61は、制御信号crc_enを非活性レベルとし、さらに、シリアライザイネーブル信号ser_en[3:0]をシリアライザ35に出力する。これにより、データ入出力部19は、外部クロックCKの4tCKの間に8ビットのデータをシリアルに出力する。
【0064】
このように、メモリセルアレイの負荷(リードライトバスの容量)低減を図り、データ転送の高速動作を可能とするため、リードライトバスと、CRC信号線を分離することとした。この信号分離により、リードライトバスにおいてデータ(リードデータDATAとCRC符号CRC)の時分割処理が不要となり、CRC符号CRCをリードデータDATAへ付加する制御ロジックを、シリアライザ35において簡易化することができる。また、CRC符号CRCをリードデータDATAへ付加するか否かの両モードの構成を、上述の様に制御信号crc_en、シリアライザイネーブル信号ser_enを両モードにおいて切り替えることで容易に実施することできる。
【0065】
図1に戻って、半導体装置10のライト動作、及びリード動作について説明する。ここでは、半導体装置10のIO構成を×8IO構成から×4IO構成とした半導体装置のライト動作、及びリード動作について、それぞれ図7、及び図8を用いて説明する。以下で説明する×4IO構成の半導体装置は、半導体装置10のIO構成のみを変更したもの、具体的には、図1に示す半導体装置10のデータ入出力端子DQnをデータ入出力端子DQn(n=0〜3)としたものである。
図7、及び図8では、×4IO構成において、BL8動作の場合(4×8=32ビットのメモリセルデータを4個のデータ入出力端子DQからバースト長さ8で出力する動作)について説明する。この場合、未使用のリードライトバス(リードデータDATA[63−32]またはライトデータDATA[63−32]が転送されるバス配線)は、Hレベル又はLレベルの一方に固定される。ここでは、誤り検出符号生成回路20は、×8IO構成と同一のものを用いるため、×4IO構成の動作においても×8IO構成と同一のビット数のCRC演算結果が必要である。このため、IO数が少ない4IO構成では、9,10ビット目の2倍のビットを用いて合計8ビットのCRC演算結果を出力する方式を用いる。
【0066】
図7は、半導体装置10のライト動作(4IO入力)のタイミングチャートである。
なお、図7において、データ入出力端子DQに現れる入力信号の変化は、1つのデータ入出力端子DQの入力信号を示している。
時刻t1において、メモリコントローラ10mが半導体装置10にWRITEコマンドを供給する。
ここで、メモリコントローラ10mは、DM/DBI端子に、データマスク信号でなくデータバスインバージョン信号を供給するものとする。なお、メモリコントローラは、データマスク信号及びデータバスインバージョン信号を供給しない場合、DM/DBI端子をハイレベル又はロウレベルのどちらか一方の論理レベルに固定する。
【0067】
データ入出力部19は、時刻t1〜t2において、メモリコントローラからDM/DBI端子を介してデータバスインバージョン信号を受け取り、時刻t2以降において、DM/DBIバスを介してデータバスインバージョン信号DBI[7:0]を誤り検出符号生成回路20に出力する。
また、データ入出力部19におけるレシーバ52は、時刻t1〜t2において、メモリコントローラ10mからデータ入出力端子DQn(n=0〜7)各々を介してライトデータ(計64ビット)をDQSクロック(DQS_T、DQS_C)に同期して受け取り、
偶数番目のライトデータ、奇数番目のライトデータを、WriteFIFOバッファ53に書き込む。
データ入出力部19におけるシリアルパラレル変換回路54は、時刻t2において、WriteFIFOバッファ53に書き込まれたデータを、リードライトバスを介してライトデータDATA[63:0]として、誤り検出符号生成回路20に出力する。
また、時刻t2以降において、誤り検出符号生成回路20は、制御回路18から入力される制御信号Write CRC Ctrl CLKにより活性化され、データ入出力部19からリードライトバスを介して入力されるライトデータDATA[63:0]、及びデータ入出力部19からDM/DBIバスを介して入力されるデータバスインバージョン信号DBI[7:0]に基づいて、CRC論理符号CRC_LOGIC[7:0]を生成する。
【0068】
続いて、データ入出力部19におけるシリアルパラレル変換回路54は、時刻t2〜t3において、ライトデータのうち9、10ビット目からメモリコントローラが送信したCRC符号をWriteFIFOバッファ53から取り出し、CRC信号線を介して、CRC符号CRC[7:0]を誤り検出符号生成回路20に出力する。
時刻t4において、誤り検出符号生成回路20は、制御信号CRC Capture CLKが入力され、CRC論理符号CRC_LOGIC[7:0]と、データ入出力部19からCRC信号線を介して入力されるCRC符号CRC[7:0]とを比較する。
時刻t5において、誤り検出符号生成回路20は、CRC論理符号CRC_LOGIC[7:0]と、データ入出力部19からCRC信号線を介して入力されるCRC符号CRC[7:0]とが不一致だった場合、判定結果信号Write CRC Error Flagを活性レベル(Hレベル)として警告信号出力部22に対して供給する。
警告信号出力部22は、活性レベルの判定結果信号Write CRC Error Flagを受け取った場合、ALERT_N端子から活性レベル(Lレベル)のアラート信号をコントローラに出力し、コントローラにライトデータ又はデータバスインバージョン信号の再送をリクエストする。
【0069】
続いて、半導体装置10のリード動作について、図8を用いて説明する。
図8は、半導体装置10のリード動作(4IO出力)のタイミングチャートである。なお、図8において、データ入出力端子DQに現れる入力信号の変化は、1つのデータ入出力端子DQの入力信号を示している。
時刻t1において、メモリコントローラが半導体装置10にREADコマンドを供給する。ここで、半導体装置10は、DM/DBI端子に、データマスク信号でなくデータバスインバージョン信号を供給するものとする。なお、メモリコントローラは、半導体装置10がデータマスク信号及びデータバスインバージョン信号を供給しない場合、DM/DBI端子をハイレベル又はロウレベルのどちらか一方の論理レベルに固定する。
データバスインバージョン回路21は、メモリセルアレイ11からリードライトバスを介してリードデータDATA[63:0]を受け取り、所定の処理(上記多数決処理)を行い、データバスインバージョン信号DBI[7:0]を生成し、DM/DBIバスを介して誤り検出符号生成回路20、及びデータ入出力部19に供給する。
【0070】
時刻t2において、誤り検出符号生成回路20は、制御回路18から入力される制御信号Read CRC Ctrl CLKにより活性化される。誤り検出符号生成回路20は、メモリセルアレイ11からリードライトバスを介して読み出されたリードデータDATA[63:0]、及びデータバスインバージョン回路21からDM/DBIバスを介して入力されるデータバスインバージョン信号DBI[7:0]に基づいて、CRC演算結果として8ビットのCRC論理符号CRC_LOGIC[7:0]を生成する。
【0071】
時刻t3以降、データ入出力部19は、データ入出力端子DQn(n=0〜3)各々から8ビットのリードデータ(合計32ビット)を連続して出力し、DM/DBI端子からリードデータのビットのそれぞれに対応するデータバスインバージョン信号(8ビット)をリードデータに同期して出力する(BL1−8)。
また、誤り検出符号生成回路20は、時刻t4において、CRC論理符号CRC_LOGIC[7:0]をCRC符号CRC[7:0]として、CRC信号線を介してデータ入出力部19に対して出力する。
データ入出力部19は、データ入出力端子DQn(n=0〜3)各々から、BL8のリードデータの出力終了後の時刻t4において、BL9、BL10のリードデータ(合計8ビット)としてCRC符号を出力する。
【0072】
このように、半導体装置10は、データを記憶する複数のメモリセルを有するメモリセルアレイ(メモリセルアレイ11)と、メモリセルアレイから読み出されたデータ、或いはメモリセルアレイへ書き込むデータに基づいて巡回冗長論理符号(CRC論理符号CRC_LOGIC[7:0])を生成する誤り検出符号生成回路(誤り検出符号生成回路20)と、メモリセルアレイから読み出されたデータに巡回冗長論理符号を付加してデータ入出力端子を介して半導体装置の外部へリードデータとして出力し、或いは半導体装置の外部からライトデータが入力されて、前記メモリセルアレイへ書き込むデータを誤り検出符号生成回路に出力するデータ入出力部(データ入出力部19)と、メモリセルアレイとデータ入出力部との間に配置され、メモリセルアレイから読み出されたデータ、または前記メモリセルアレイへ書き込むデータを転送するバス配線(リードライトバス)と、誤り検出符号生成回路とデータ入出力部との間配置され、巡回冗長論理符号を転送する巡回冗長論理符号配線(CRC信号線)と、を備えることを特徴とする。
【0073】
本発明の半導体装置10によれば、リードライトバス(バス配線)と、CRC信号線(巡回冗長論理符号配線)とを別々に設けたことにより、リードライトバスとデータ入出力部19との間の回路構成を、CRC機能を有さない従来の半導体装置の回路構成から変更する必要性が無くなる。そのため、CRC機能を有しても、リードライトバスにおける時分割処理が不要となり、半導体装置のライト動作とリード動作を従来の半導体装置と同程度にまで高速に行うことができる。
【0074】
本願の技術思想は、CRC機能を有する半導体装置に適用できる。更に、図面で開示した各ブロックの接続方法や回路形式、その他の制御信号を生成する回路は、実施例が開示する回路形式に限られない。また、本発明の半導体装置の技術思想は、様々な半導体装置に適用することができる。本発明の実施形態においては、主にメモリ(Memory)での実施例を開示したが、これに限られず、メモリ以外の半導体装置、例えば、CPU(Central Processing Unit)、MCU(Micro Control Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、ASSP(Application Specific Standard Product)等の半導体装置全般に、本発明を適用することができる。
また、このような本発明が適用された半導体装置の製品形態としては、例えば、SOC(システムオンチップ)、MCP(マルチチップパッケージ)やPOP(パッケージオンパッケージ)などが挙げられる。これらの任意の製品形態、パッケージ形態を有する半導体装置に対して本発明を適用することができる。
また、トランジスタは、電界効果トランジスタ(Field Eeffect Transistor;FET)であれば良く、MOS(Metal Oxide Semiconductor)以外にもMIS(Metal-Insulator Semiconductor)、TFT(Thin Film Transistor)等の様々なFETに適用できる。トランジスタ等の様々なFETに適用できる。更に、装置内に一部のバイポーラ型トランジスタを有しても良い。
更に、PMOSトランジスタ(P型チャネルMOSトランジスタ)は、第2導電型のトランジスタ、NMOSトランジスタ(N型チャネルMOSトランジスタ)は、第1導電型のトランジスタの代表例である。
また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得る各種変形、修正を含むことは勿論である。
【符号の説明】
【0075】
10…半導体装置、11…メモリセルアレイ、MC…メモリセル、WL…ワード線、DL…ビット線、13…ロウデコーダ、14…カラムデコーダ、15…センスアンプ、18…制御回路、19…データ入出力部、20…誤り検出符号生成回路、21…データバスインバージョン回路、22…警告信号出力部、101,111b…オア回路、102…8ビットCRC符号生成回路、102a,112…ラッチ回路、102b…72入力排他的論理和回路、103,36…フリップフロップ回路、104…バッファ回路、105,114…遅延回路、110…8ビットCRC符号判定回路、111…8ビットCRC符号比較回路、111a,XOR…排他的論理和回路、113,81A1,81A2,82A1,82A2,83A1,83A2…アンド回路、DQ,DQ0,DQn…データ入出力端子、ndU,ndD…接続点、31…FIFO回路、32…FIFOポインタ、33…マルチプレクサ、34…リタイマ回路、35…シリアライザ、37…レベルシフタ、38,71,72,73,74,75,76…論理回路部、39u,39d…出力ドライバゲート駆動回路、40…出力ドライバ、51,52…レシーバ、53…WriteFIFOバッファ、54…シリアルパラレル変換回路、61…FIFO制御回路、63…シリアライザ制御回路、64…OCD制御回路、81,82,83…バッファ回路部、71a,71b,72a,72b,73a,73b,74a,74b,75a,75b,76a,76b…ナンド回路、81I1,81I2,82I1,82I2,83I1,83I2…インバータ回路、81P1,81P2,82P1,82P2,83P1,83P2…PMOSトランジスタ、81N1,81N2,82N1,82N2,83N1,83N2…NMOSトランジスタ、10s…メモリシステム、10m…メモリコントローラ、20m…演算部、20c…比較器、OUTu,OUTd…シリアライザ出力信号、pls1,pls2,CRCpls1,CRCpls2…パルス信号、OUTu1,OUTd1,OUTu2,OUTd2,OUTu3,OUTd3…駆動信号

【特許請求の範囲】
【請求項1】
データを記憶する複数のメモリセルを有するメモリセルアレイと、
前記メモリセルアレイから読み出されたデータ、或いは前記メモリセルアレイへ書き込むデータに基づいて巡回冗長論理符号を生成する誤り検出符号生成回路と、
前記メモリセルアレイから読み出されたデータに前記巡回冗長論理符号を付加してデータ入出力端子を介して半導体装置の外部へリードデータとして出力し、或いは半導体装置の外部からライトデータが入力されて、前記メモリセルアレイへ書き込むデータを前記誤り検出符号生成回路に出力するデータ入出力部と、
前記メモリセルアレイと前記データ入出力部との間に配置され、前記メモリセルアレイから読み出されたデータ、または前記メモリセルアレイへ書き込むデータを転送するバス配線と、
前記誤り検出符号生成回路と前記データ入出力部との間に配置され、前記巡回冗長論理符号を転送する巡回冗長論理符号配線と、
を備えることを特徴とする半導体装置。
【請求項2】
前記データ入出力部は、半導体装置の外部において前記ライトデータに基づいて生成された巡回冗長符号が入力され、当該巡回冗長符号を前記誤り検出符号生成回路へ出力し、
前記誤り検出符号生成回路が、前記メモリセルアレイへ書き込むデータに基づいて生成した前記巡回冗長論理符号と前記巡回冗長符号とを比較し、比較結果が一致しない場合、前記ライトデータの再送要求を示す再送要求信号を外部へ出力することを特徴とする請求項1に記載の半導体装置。
【請求項3】
前記メモリセルアレイから読み出されたデータのうち一部のデータの論理レベルを変更し、変更したデータのビット列における位置を示すアドレス論理データを生成するデータバスインバージョン回路を備え、
前記誤り検出符号生成回路は、前記メモリセルアレイから読み出されたデータ、及び前記アドレス論理データに基づいて前記巡回冗長論理符号を生成し、
前記データ入出力部は、前記リードデータとともに前記巡回冗長論理符号を半導体装置の外部へ出力することを特徴とする請求項1または請求項2いずれか一項に記載の半導体装置。
【請求項4】
前記データ入出力部は、半導体装置の外部において前記ライトデータのうち一部のデータの論理レベルが変更された当該ライトデータのビット列における位置を示すアドレスデータが入力され、当該アドレスデータを前記誤り検出符号生成回路へ出力し、
前記誤り検出符号生成回路が、前記メモリセルアレイへ書き込むデータ、及び前記アドレスデータに基づいて前記巡回冗長論理符号を生成することを特徴とする請求項3に記載の半導体装置。
【請求項5】
前記データ入出力部は、
前記バス配線から入力されるメモリセルアレイから読み出されたデータと、前記巡回冗長論理符号配線から入力される前記巡回冗長論理符号とを保持するFIFOバッファと、
前記FIFOバッファが保持するデータを、外部クロックの立ち上がり及び立下りに応じて順次外部へ出力するシリアライザと、を有し、
前記シリアライザは、前記巡回冗長論理符号を前記FIFOバッファが保持するメモリセルアレイのデータの後に付加して順次出力することを特徴とする請求項1から請求項4いずれか一項に記載の半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate