以下、本発明の実施の形態について図面を用いて説明する。
図1は、本発明の実施形態に係るECC機能付き半導体記憶装置の構成を示す。同図を参照して、このECC機能付き半導体記憶装置100は、CPU(central processing unit)11と、CLK生成回路12と、データ遅延回路14と、制御信号生成回路13と、ECC読出し回路15と、ECC書込み回路16と、セレクト部17と、メモリセルアレイ21と、第1ロウ系デコーダ18と、第2ロウ系デコーダ19と、メモリセルアレイ周辺回路群22と、アドレス遅延回路20とを備える。
CLK生成回路12は、クロック信号CLKφ1,φ2を生成して、各構成要素に供給する。
CPU11は、読出しデータバスRDB0〜RDB31から読出しデータを受ける。すなわち、CPU11は、読出しデータバスRDB0〜RDB7から8ビットの第0群読出しデータData_R0〜7を受け、読出しデータバスRDB8〜RDB15から8ビットの第1群読出しデータData_R8〜15を受け、読出しデータバスRDB16〜RDB23から8ビットの第2群読出しデータData_R16〜23を受け、読出しデータバスRDB24〜RDB31から8ビットの第3群読出しデータData_R24〜31を受ける。
また、CPU11は、書込みデータバスWDB0〜WDB31へ書込みデータを出力する。すなわち、CPU11は、書込みデータバスWDB0〜WDB7に8ビットの第0群書込みデータData_W0〜7を出力し、書込みデータバスWDB8〜WDB15に8ビットの第1群書込みデータData_W8〜15を出力し、書込みデータバスWDB16〜WDB23に8ビットの第2群書込みデータData_W16〜23を出力し、書込みデータバスWDB24〜WDB31に8ビットの第3群書込みデータData_W24〜31を出力する。
また、CPU11は、読書き制御信号線へ読書き制御信号R/W0〜R/W3を出力し、ロウアドレス信号線へロウアドレス信号A0〜A8を出力する。読書き制御信号R/W0が「H」レベルのときには、第0群の列に対して書込みを行なわないこと(非書込み)を指示し、読書き制御信号R/W0が「L」レベルのときには、第0群の列に対して書込みを指示する。読書き制御信号R/W1が「H」レベルのときには、第1群の列に対して書込みを行なわないこと(非書込み)を指示し、読書き制御信号R/W1が「L」レベルのときには、第1群の列に対して書込みを指示する。読書き制御信号R/W2が「H」レベルのときには、第2群の列に対して書込みを行なわないこと(非書込み)を指示し、読書き制御信号R/W2が「L」レベルのときには、第2群の列に対して書込みを指示する。読書き制御信号R/W3が「H」レベルのときには、第3群の列に対して書込みを行なわないこと(非書込み)を指示し、読書き制御信号R/W3が「L」レベルのときには、第3群の列に対して書込みを指示する。ただし、読書き制御信号R/W0〜3によって、書込みが指示されたか、非書込みが指示されたかにかかわりなく、読出しは常に行なわれる。
図2は、アドレス遅延回路20の構成を示す。同図を参照して、このアドレス遅延回路20は、フリップフロップFF3で構成される。このフリップフロップFF3は、ロウアドレス信号Ai(i=0〜8)を1サイクルだけ遅延させた遅延ロウアドレス信号dAi(i=0〜8)を出力する。
図3は、データ遅延回路14の構成を示す。同図を参照して、このデータ遅延回路14は、フリップフロップFF4で構成される。このフリップフロップFF4は、書込みデータData_Wi(i=0〜31)を1サイクルだけ遅延させた遅延書込みデータdData_Wi(i=0〜31)を出力する。
図4は、制御信号生成回路13の構成を示す。同図を参照して、フリップフロップFF0によって、読書き制御信号R/Wi(i=0〜3)を1サイクル遅延させた遅延読書き制御信号dR/Wi(i=0〜3)が生成される。
論理回路L11によって、クロック信号CLKφ1が「L」レベル、かつクロック信号CLKφ2が「L」レベルのときに、プリチャージ信号PC0〜PC3,PCPが「L」レベルとなり、センスアンプ活性化信号SAE0〜SAE3,SAEPが「L」レベルとなる。
このように、プリチャージ信号PC0〜PC3,PCPは、読書き制御信号R/W0〜R/W3のレベルに依存せず、プリチャージ回路32を活性化させて、プリチャージを行なわせる。また、センスアンプ活性化信号SAE0〜SAE3,SAEPは、読書き制御信号R/W0〜R/W3のレベルに依存せず、センスアンプ33を活性化させて、増幅を行なわせる。
インバータIV1によって、クロック信号CLKφ2が「L」レベルのときに、ビット線選択信号BLS0〜BLS3,BLSPが「H」レベルとなる。このように、ビット線選択信号BLS0〜BLS3,BLSPは、読書き制御信号R/W0〜R/W3のレベルに依存せず、ビット線選択回路31を活性化させて、ビット線対の選択を行なわせる。
論理回路L12によって、読書き制御信号R/Wi(i=0〜3)が「L」レベル、クロック信号CLKφ1が「H」レベル、かつクロック信号CLKφ2が「H」レベルのときに、書込みドライバ活性化信号WEi(i=0〜3)が「H」レベルとなる。
論理回路L13,L14によって、遅延読書き制御信号R/W0〜R/W3のうちのいずれかが「L」レベル、クロック信号CLKφ1が「H」レベル、かつクロック信号CLKφ2が「H」レベルのときに、書込みドライバ活性化信号WEPが「H」レベルとなる。
図5は、図1におけるメモリセルアレイ21と、メモリセルアレイ周辺回路群22と、第1ロウ系デコーダ18と、第2ロウ系デコーダ19の構成を示す。
同図を参照して、メモリセルアレイ21は、行列上に配置されたSRAM(Static Randam Access Memory)セルMC1,MC2からなる。
メモリセルアレイ21は、第0〜第31列のノーマル部と、第32列〜第37列のパリティ部に分けられる。第0〜第31列をノーマル部の第0〜第31列といい、第32〜第37列をパリティ部の第0〜第5列という。また、ノーマル部の第0〜第7列を第0群の列といい、ノーマル部の第8列〜第15列を第2群の列といい、ノーマル部の第16列〜第23列を第2群の列といい、ノーマル部の第24列〜第31列を第3群の列という。
図6は、ノーマル部のSRAMセルMC1の構成を示す。同図を参照して、ノーマル部のSRAMセルMC1は、記憶素子である2つのインバータをクロスカップル(交差接続)させたフリップフロップFPと、アクセス用のNチャネルMOSトランジスタNM5,NM6からなる。記憶素子であるフリップフロップFPでは、クロスカップリングさせた2つの記憶ノード(N,I_N)は、(「H」レベル,「L」レベル)または(「L」レベル,「H」レベル)の双安定状態を保持する。
アクセス用のNチャネルMOSトランジスタNM5,NM6のゲートは、ワード線WLに接続される。また、アクセス用のNチャネルMOSトランジスタNM5,NM6のソースは、ビット線対BL,I_BLに接続され、ドレインは、記憶素子(フリップフロップFP)と接続される。
ワード線WLが活性化されると、そのワード線WLと接続するSRAMセルMC1のアクセス用NチャネルMOSトランジスタNM5,NM6が導通する。これにより、読出し時には、そのSRAMセルMC1の記憶素子(フリップフロップFP)のデータが、そのSRAMセルMC1に接続しているビット線対BL,I_BLに送られ、書込み時には、そのSRAMセルMC1に接続しているビット線対BL,I_BLのデータがそのSRAMセルMC1の記憶素子(フリップフロップFP)に送られる。
図7は、パリティ部のSRAMセルMC2の構成を示す。同図を参照して、パリティ部のSRAMセルMC2は、記憶素子である2つのインバータをクロスカップル(交差接続)させたフリップフロップFPと、アクセス用のNチャネルMOSトランジスタNM7,NM8,NM9,NM10からなる。記憶素子であるフリップフロップFPでは、クロスカップリングさせた2つの記憶ノード(N,I_N)は、(「H」レベル,「L」レベル)または(「L」レベル,「H」レベル)の双安定状態を保持する。
アクセス用のNチャネルMOSトランジスタNM7,NM8のゲートは、ワード線WLに接続される。また、アクセス用のNチャネルMOSトランジスタNM7,NM8のソースは、読出し用ビット線対RBLP,I_RBLPに接続され、ドレインは、記憶素子(フリップフロップFP)と接続される。
アクセス用のNチャネルMOSトランジスタNM9,NM10のゲートは、パリティ書込み専用ワード線PWLに接続される。また、アクセス用のNチャネルMOSトランジスタNM9,NM10のソースは、書込み用ビット線対WBLP,I_WBLPに接続され、ドレインは、記憶素子(フリップフロップFP)と接続される。
読出し時に、ワード線WLが活性化されると、そのワード線WLと接続するSRAMセルMC2のアクセス用NチャネルMOSトランジスタNM7,NM8が導通する。これにより、そのSRAMセルMC2の記憶素子(フリップフロップFP)のデータが、そのSRAMセルMC2に接続している読出し用ビット線対RBLP,I_RBLPに送られる。
書込み時に、パリティ書込み専用ワード線PWLが活性化されると、そのワード線PWLと接続するSRAMセルMC2のアクセス用NチャネルMOSトランジスタNM9,NM10が導通する。これにより、そのSRAMセルMC2に接続している書込み用ビット線対WBLP,I_WBLPのデータがそのSRAMセルMC2の記憶素子(フリップフロップFP)に送られる。
再び図5を参照して、第1ロウ系デコーダ18は、プリデコーダ24と、32個のロウデコーダ26とからなる。各ロウデコーダ26は、16個の行に対して設けられる。プリデコーダ24は、ロウアドレス信号A0〜A3によって、各ロウデコーダ26に接続される16個の行の中から1個の行を選択する。また、ロウアドレス信号A4〜A8によって、32個のロウデコーダ26の中から1個のロウデコーダ26が選択される。選択されたロウデコーダ26は、プリデコーダ24によって選択された行のワード線WLを「H」レベルに活性化する。
第2ロウ系デコーダ19は、プリデコーダ23と、32個のロウデコーダ25とからなる。各ロウデコーダ25は、16個の行に対して設けられる。
プリデコーダ23は、遅延ロウアドレス信号dA0〜dA3によって、各ロウデコーダ25に接続される16個の行の中から1個の行を選択する。また、遅延ロウアドレス信号dA4〜dA8によって、32個のロウデコーダ25の中から1個のロウデコーダ25が選択される。選択されたロウデコーダ25は、プリデコーダ23によって選択された行のワード線PWLを「H」レベルに活性化する。
メモリセルアレイ周辺回路群22は、列ごとに、ビット線選択回路31と、プリチャージ回路32と、センスアンプ33と、読出しバッファRBと、書込みドライバWDRとを有する。ビット線選択回路31と、プリチャージ回路32と、センスアンプ33と、読出しバッファRBとを読出し系回路という。
各列のビット線選択回路31は、NチャネルMOSトランジスタNM0,NM1とからなる。
ノーマル部の第0群の列におけるビット線選択回路31のNチャネルMOSトランジスタNM0,NM1のゲートは、ビット線選択信号BLS0を受ける。ビット線選択信号BLS0がイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM0,NM1がオンになり、第0群の列のビット線対BL,I_BLが選択される。
ノーマル部の第1群の列におけるビット線選択回路31のNチャネルMOSトランジスタNM0,NM1のゲートは、ビット線選択信号BLS1を受ける。ビット線選択信号BLS1がイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM0,NM1がオンになり、第1群の列のビット線対BL,I_BLが選択される。
ノーマル部の第2群の列におけるビット線選択回路31のNチャネルMOSトランジスタNM0,NM1のゲートは、ビット線選択信号BLS2を受ける。ビット線選択信号BLS2がイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM0,NM1がオンになり、第2群の列のビット線対BL,I_BLが選択される。
ノーマル部の第3群の列におけるビット線選択回路31のNチャネルMOSトランジスタNM0,NM1のゲートは、ビット線選択信号BLS3を受ける。ビット線選択信号BLS3がイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM0,NM1がオンになり、第3群の列のビット線対BL,I_BLが選択される。
パリティ部におけるビット線選択回路31のNチャネルMOSトランジスタNM0,NM1のゲートは、ビット線選択信号BLSPを受ける。ビット線選択信号BLSPがイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM0,NM1がオンになり、パリティ部の列のビット線対RBLP,I_RBLPが選択される。
各列のプリチャージ回路32は、PチャネルMOSトランジスタPM0,PM1,PM2からなる。
ノーマル部の第0群の列におけるプリチャージ回路32のPチャネルMOSトランジスタPM0,PM1,PM2のゲートは、プリチャージ信号PC0を受ける。プリチャージ信号PC0がイネーブル(Lレベル)になると、PチャネルMOSトランジスタPM0,PM1,PM2がオンになり、第0群の列のビット線対BL,I_BLが「H」レベルにプリチャージされる。
ノーマル部の第1群の列におけるプリチャージ回路32のPチャネルMOSトランジスタPM0,PM1,PM2のゲートは、プリチャージ信号PC1を受ける。プリチャージ信号PC1がイネーブル(Lレベル)になると、PチャネルMOSトランジスタPM0,PM1,PM2がオンになり、第1群の列のビット線対BL,I_BLが「H」レベルにプリチャージされる。
ノーマル部の第2群の列におけるプリチャージ回路32のPチャネルMOSトランジスタPM0,PM1,PM2のゲートは、プリチャージ信号PC2を受ける。プリチャージ信号PC2がイネーブル(Lレベル)になると、PチャネルMOSトランジスタPM0,PM1,PM2がオンになり、第2群の列のビット線対BL,I_BLが「H」レベルにプリチャージされる。
ノーマル部の第3群の列におけるプリチャージ回路32のPチャネルMOSトランジスタPM0,PM1,PM2のゲートは、プリチャージ信号PC3を受ける。プリチャージ信号PC3がイネーブル(Lレベル)になると、PチャネルMOSトランジスタPM0,PM1,PM2がオンになり、第3群の列のビット線対BL,I_BLが「H」レベルにプリチャージされる。
パリティ部におけるプリチャージ回路32のPチャネルMOSトランジスタPM0,PM1,PM2のゲートは、プリチャージ信号PCPを受ける。プリチャージ信号PCPがイネーブル(Lレベル)になると、PチャネルMOSトランジスタPM0,PM1,PM2がオンになり、パリティ部の列のビット線対RBLP,I_RBLPが「H」レベルにプリチャージされる。
各列のセンスアンプ33は、PチャネルMOSトランジスタPM3,PM4と、NチャネルMOSトランジスタNM2,NM3,NM4とからなる。
ノーマル部の第0群の列におけるセンスアンプ33のNチャネルMOSトランジスタNM4のゲートは、センスアンプ活性化信号SAE0を受ける。センスアンプ活性化信号SAE0がイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM4がオンになり、第0群の列のセンスアンプ33が活性化される。
ノーマル部の第1群の列におけるセンスアンプ33のNチャネルMOSトランジスタNM4のゲートは、センスアンプ活性化信号SAE1を受ける。センスアンプ活性化信号SAE1がイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM4がオンになり、第1群の列のセンスアンプ33が活性化される。
ノーマル部の第2群の列におけるセンスアンプ33のNチャネルMOSトランジスタNM4のゲートは、センスアンプ活性化信号SAE2を受ける。センスアンプ活性化信号SAE2がイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM4がオンになり、第2群の列のセンスアンプ33が活性化される。
ノーマル部の第3群の列におけるセンスアンプ33のNチャネルMOSトランジスタNM4のゲートは、センスアンプ活性化信号SAE3を受ける。センスアンプ活性化信号SAE3がイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM4がオンになり、第3群の列のセンスアンプ33が活性化される。
パリティ部におけるセンスアンプ33のNチャネルMOSトランジスタNM4のゲートは、センスアンプ活性化信号SAEPを受ける。センスアンプ活性化信号SAEPがイネーブル(Hレベル)になると、NチャネルMOSトランジスタNM4がオンになり、パリティ部の列のセンスアンプ33が活性化される。
各列の読出しバッファRBは、その列のビット線対と、その列の読出し信号線とに接続される。
ノーマル部における第0群の列における読出しバッファRBは、接続されているビット線対BL,I_BLのセンスアンプ33で増幅されたデータを受けて、読出し信号線RB0〜RB7に第0群読出しデータData_R0〜7として出力する。
ノーマル部における第1群の列における読出しバッファRBは、接続されているビット線対BL,I_BLのセンスアンプ33で増幅されたデータを受けて、読出し信号線RB8〜RB15に第1群読出しデータData_R8〜15として出力する。
ノーマル部における第2群の列における読出しバッファRBは、接続されているビット線対BL,I_BLのセンスアンプ33で増幅されたデータを受けて、読出し信号線RB16〜RB23に第2群読出しデータData_R16〜23として出力する。
ノーマル部における第3群の列における読出しバッファRBは、接続されているビット線対BL,I_BLのセンスアンプ33で増幅されたデータを受けて、読出し信号線RB24〜RB31に第3群読出しデータData_R24〜31として出力する。
パリティ部における読出しアンプRBは、接続されているビット線対RBLP,I_RBLPのセンスアンプ33で増幅されたデータを受けて、読出し信号線RP0〜RP5にパリティ読出しデータとして出力する。
各列の書込みドライバWDRは、その列のビット線対と、その列の書込み信号線とに接続される。
ノーマル部の第0群の列における書込みドライバWDRは、書込みドライバ活性化信号WE0を受ける。書込みドライバ活性化信号WE0がイネーブル(Hレベル)になると、書込みドライバWDRは、書込み信号線WD0〜WD7から受けた第0群書込みデータData_W0〜7をビット線対BL,I_BLに出力する。
ノーマル部の第1群の列における書込みドライバWDRは、書込みドライバ活性化信号WE1を受ける。書込みドライバ活性化信号WE1がイネーブル(Hレベル)になると、書込みドライバWDRは、書込み信号線WD8〜WD15から受けた第1群書込みデータData_W8〜15をビット線対BL,I_BLに出力する。
ノーマル部の第2群の列における書込みドライバWDRは、書込みドライバ活性化信号WE2を受ける。書込みドライバ活性化信号WE2がイネーブル(Hレベル)になると、書込みドライバWDRは、書込み信号線WD16〜WD23から受けた第2群書込みデータData_W16〜23をビット線対BL,I_BLに出力する。
ノーマル部の第3群の列における書込みドライバWDRは、書込みドライバ活性化信号WE3を受ける。書込みドライバ活性化信号WE3がイネーブル(Hレベル)になると、書込みドライバWDRは、書込み信号線WD24〜WD31から受けた第3群書込みデータData_W24〜31をビット線対BL,I_BLに出力する。
パリティ部における書込みドライバWDRは、書込みドライバ活性化信号WEPを受ける。書込みドライバ活性化信号WEPがイネーブル(Hレベル)になると、書込みドライバWDRは、書込み信号線WP0〜WP5から受けたパリティ書込みデータをビット線対WBLP,I_WBLPに出力する。
再び、図1を参照して、セレクト部17は、データ遅延回路14から出力される遅延書込みデータdData_W0〜31と、読出しデータバスRDB0〜RDB31の32ビットの読出しデータData_R0〜31を受けて、これらのデータに基づいて得られる32ビットのデータをECC書込み回路16に出力する。より具体的には、セレクト部30は、セレクタS0〜S3を備え、各セレクタS0〜S3は、以下の動作を行なう。
セレクタS0は、ECC読出し回路15から読出しデータバスRDB0〜RDB7に出力された第0群読出しデータData_R0〜7と、データ遅延回路14から出力された遅延書込みデータdData_W0〜7とを受ける。セレクタS0は、読書き制御信号R/W0が「H」レベルのとき(すなわち、第0群の列の非書込み時)には、第0群読出しデータData_R0〜7をECC書込み回路16に出力する。セレクタS0は、読書き制御信号R/W0が「L」レベルのとき(すなわち、第0群の列の書込み時)には、遅延書込みデータdData_W0〜7をECC書込み回路16に出力する。
セレクタS1は、ECC読出し回路15から読出しデータバスRDB8〜RDB15に出力された第1群読出しデータData_R8〜15と、データ遅延回路14から出力された遅延書込みデータdData_W8〜15とを受ける。セレクタS1は、読書き制御信号R/W1が「H」レベルのとき(すなわち、第1群の列の非書込み時)には、第1群読出しデータData_R8〜15をECC書込み回路16に出力する。セレクタS1は、読書き制御信号R/W1が「L」レベルのとき(すなわち、第1群の列の書込み時)には、遅延書込みデータdData_W8〜15をECC書込み回路16に出力する。
セレクタS2は、ECC読出し回路15から読出しデータバスRDB16〜RDB23に出力された第2群読出しデータData_R16〜23と、データ遅延回路14から出力された遅延書込みデータdData_W16〜23とを受ける。セレクタS2は、読書き制御信号R/W2が「H」レベルのとき(すなわち、第2群の列の非書込み時)には、第2群読出しデータData_R16〜23をECC書込み回路16に出力する。セレクタS2は、読書き制御信号R/W2が「L」レベルのとき(すなわち、第2群の列の書込み時)には、遅延書込みデータdData_W16〜23をECC書込み回路16に出力する。
セレクタS3は、ECC読出し回路15から読出しデータバスRDB24〜RDB31に出力された第3群読出しデータData_R24〜31と、データ遅延回路14から出力された遅延書込みデータdData_W24〜31とを受ける。セレクタS3は、読書き制御信号R/W3が「H」レベルのとき(すなわち、第3群の列の非書込み時)には、第3群読出しデータData_R24〜31をECC書込み回路16に出力する。セレクタS3は、読書き制御信号R/W3が「L」レベルのとき(すなわち、第3群の列の書込み時)には、遅延書込みデータdData_W24〜dWD31をECC書込み回路16に出力する。
ECC書込み回路16は、図8に具体的な構成例が示されるように、セレクト部17から出力された32ビットのデータを情報ビットのデータとして、誤り訂正を可能にするための6ビットのパリティを算出し、6ビットのパリティ書込みデータとして書込み信号線WP0〜WP5へ出力する。この情報ビットである32ビットのデータと、算出された6ビットのパリティ書込みデータとからなるデータは、ハミング符号を形成する。
ECC読出し回路15は、図9に具体的な構成例が示されるように、読出し信号線RB0〜RB31から第0群、第1群、第2群および第3群の読出しデータ、すなわち32ビットのノーマル読出しデータを受け、読出し信号線RP0〜RP5から6ビットのパリティ読出しデータを受ける。ECC読出し回路15は、6ビットのパリティ読出しデータをを用いて、32ビットのノーマル読出しデータのうちの1ビットの誤り訂正を行ない、誤り訂正後の32ビットのノーマル読出しデータを読出しデータバスRDB0〜RDB31に出力する。
(各サイクルの動作の概要)
次に、図10を参照して、本実施の形態のECC機能付き半導体記憶装置100の各サイクルの動作の概要について説明する。
第2サイクルにおいて、第3群の列の読書き制御信号R/W3が書込みを示す「L」レベルとなる。第3群の列のメモリセルMC1に第3群書込みデータD2wの書込みが行なわれる。第2サイクルでは、これと並行して、ノーマル部およびパリティ部のすべての列のメモリセルMC1,MC2から32ビットのノーマル読出しデータD2r,6ビットのパリティ読出しデータP2rの読出しが開始される。
第3サイクルにおいて、第2群の列の読書き制御信号R/W2が書込みを示す「L」レベルとなる。第2群の列のメモリセルMC1に第2群書込みデータD3wの書込みが行なわれる。第3サイクルでは、これと並行して、ノーマル部およびパリティ部のすべての列のメモリセルMC1,MC2から32ビットのノーマル読出しデータD3r,6ビットのパリティ読出しデータP3rの読出しが開始され、第4サイクルにその読出しが完了する。
第3サイクルでは、さらにこれと並行して、パリティ読出しデータP2rを用いてノーマル読出しデータD2rの誤り訂正が行なわれる。誤り訂正されたノーマル読出しデータD2rは、CPU11に入力される。また、データ遅延回路14で第2群書込みデータD2wが遅延させられた第2群遅延書込みデータdD2wと、誤り訂正されたノーマル読出しデータD2rとを用いて、パリティ書込みデータP2wが計算される。そして、パリティ書込みデータP2wがメモリセルMC2に書込まれる。
このように本発明の実施の形態に係るECC機能付き半導体記憶装置では、メモリセルにデータの書込みを行なう場合には、1サイクルで、指定された群のメモリセルへのデータの書込み、および正規部およびパリティ部のすべての列のメモリセルからのデータの読出しを行なう。そして、次のサイクルで、次に指定された群のメモリセルへのデータの書込み、およびすべての列のメモリセルからのデータの読出しを行ない、これと並行して、パリティ部へのパリティの書込みを行なう。したがって、実質的に1サイクルで、メモリセルにデータの書込みを行なうことができ、データの書込みを高速化することができる。
(動作の詳細)
次に、図11に示すタイミングチャートを参照しつつ、このECC機能付き半導体記憶装置100の動作の詳細を説明する。
まず、第2サイクルにおいて、読書き制御信号R/W0〜R/W2が「H」レベルとなり、読書き制御信号R/W3が「L」レベルとなる。(図11の(1)に示す)。
クロック信号CLKφ1およびCLKφ2が「L」レベルのときには、制御信号生成回路13によって、プリチャージ信号PC0〜PC3,PCPが「L」レベルとなる(図11の(2)に示す)。これにより、すべてのプリチャージ回路32は、接続されたビット線対BL,I_BLを、プリチャージする。
また、クロック信号CLKφ2が「L」レベルのときには、制御信号生成回路13によって、ビット線選択信号BLS0〜BLS3,BLSPが「H」レベルとなる(図11の(3)に示す)。これにより、すべてのビット線選択回路31は、それに接続されたビット線対BL,I_BLまたはRBLP,I_RBLPと、対応する読出し信号線RB0〜RB31またはRP0〜RP5とを接続する。
クロック信号CLKφ1が「H」レベルになると、入力されたロウアドレス信号A0〜A8に対応するワード線WLが活性化され(図11の(4)に示す)、活性化されたワード線に接続されているすべての列のメモリセルMC1またはMC2のデータが、そのメモリセルMC1またはMC2に接続されているビット線対BL,I_BLまたはRBLP,I_RBLPに読出しデータとして出力される。
また、クロック信号CLKφ1およびCLKφ2が「L」レベルのとき以外には、制御信号生成回路13によって、センスアンプ活性化信号SAE0〜SAE3,SAEPが「H」レベルとなる(図11の(5)に示す)。これにより、すべてのセンスアンプ33は、活性化状態となり、それに接続するビット線対BL,I_BLまたはRBLP,I_RBLPのノーマル読出しデータまたはパリティ読出しデータを増幅する(図11の(6)に示す)。
制御信号生成回路13によって、クロック信号CLKφ1およびCLKφ2が「H」レベルのときに、書込みドライバ活性化信号WE3が「H」レベルとなる(図11の(7)に示す)。
CPU11は、第3群書込みデータData_W24〜31を書込みデータバスWDB24〜WDB31に出力する(図11の(8)に示す)。
第3群の列における書込みドライバWDRは、書込みドライバ活性化信号WE3が「H」レベルとなると、書込み信号線WD24〜WD31の第3群書込みデータData_W24〜31をビット線対BL,I_BLに出力する(図11の(9)に示す)。これにより、活性化されているワード線WLに接続されているメモリセルMC1にデータが書込まれる。
このメモリセルMC1への書込みと並行して、前述のように増幅された32ビットのノーマル読出しデータは、読出し信号線RB0〜RB31を通じてECC読出し回路15に送られ、6ビットのパリティ読出しデータは、読出し信号線RP0〜RP5を通じて、ECC読出し回路15に送られる(図11の(10)に示す)。
ECC読出し回路15は、6ビットのパリティ読出しデータを用いて、32ビットのノーマル読出しデータの誤り訂正を行ない、訂正後のノーマル読出しデータを読出しデータバスRDB0〜RDB31を通じて、CPU11およびセレクト部17に出力する(図11の(11)に示す)。
第3サイクルにおいて、CPU11は、読出しデータバスRDB0〜RDB31を通じて訂正後のノーマル読出しデータを取込む(図11の(12)に示す)。
セレクト部17は、読出しデータバスRDB0〜RDB31を通じて誤り訂正されたノーマル読出しデータを受け、書込みデータバスWDB24〜WDB31を通じて第3群遅延書込みデータを受け、書込みデータバスWDB0〜WDB23に誤り訂正された読出しデータを出力し、書込みデータバスWDB24〜WDB31に第3群遅延書込みデータを出力する。書込みデータバスWDB0〜WDB31の32ビットのデータは、ECC書込み回路15に送られる(図11の(13)に示す)
ECC書込み回路15は、セレクト部17から出力された書込みデータバスWDB0〜WDB31の32ビットのデータを用いて、パリティ書込みデータを算出して、書込み信号線WP0〜WP5に出力する(図11の(14)に示す)。
第3サイクルでは、読書き制御信号R/W0,R/W1,R/W3が「H」レベルとなり、読書き制御信号R/W2が「L」レベルとなる(図11の(15)に示す)。
第3サイクルにおいては、第0群、第1群および第3群の列に対応する信号および回路は、第2サイクルの第0群、第1群、第2群の列に対応する信号および回路と同様に動作し、第2群の列に対応する信号および回路は、第2サイクルの第3群の列に対応する信号および回路と同様に動作する。
第3サイクルにおいて、クロック信号CLKφ1およびφ2が「H」レベルのときには、制御信号生成回路13によって、書込みドライバ活性化信号WE2およびWEPが「H」レベルとなる(図11の(16)に示す)。
第3サイクルにおいて、クロック信号CLKφ1が「H」レベルになると、入力されたロウアドレス信号A0〜A8に対応するワード線WLが活性化される(図11の(17)に示す)。
また、アドレス遅延回路20で遅延させられたロウアドレス信号dA0〜dA8に対応するワード線PWLが活性化される(図11の(18)に示す。)
第2群の列における書込みドライバWDRは、書込みドライバ活性化信号WE2が「H」レベルとなると、書込み信号線WD16〜WD23の第2群書込みデータData_W16〜23をビット線対BL,I_BLに出力する(図11の(19)に示す)。これにより、活性化されているワード線WLに接続されているメモリセルMC1にデータが書込まれる。
パリティ部における書込みドライバWDRは、書込みドライバ活性化信号WEPが「H」レベルとなると、書込み信号線WP0〜WP5のパリティ書込みデータをビット線WBLP,I_WBLPに出力する(図11の(20)に示す)。これにより、活性化されているワード線PWLに接続されているメモリセルMC2にデータが書込まれる。
(従来の構成)
次に、本実施の形態に係るECC機能付き半導体記憶装置との比較のため、従来のECC機能付き半導体記憶装置の詳細について説明する。
図12は、従来のECC機能付き半導体記憶装置の構成を示す。同図を参照して、このECC機能付き半導体記憶装置200が、本実施の形態のECC機能付き半導体記憶装置100と相違する点は、このECC機能付き半導体記憶装置200は、制御信号生成回路13の代わりに制御信号生成回路63を備え、メモリセルアレイ21の代わりにメモリセルアレイ71を備え、メモリセルアレイ周辺回路群22の代わりにメモリセルアレイ周辺回路群72を備え、データ遅延回路14とアドレス遅延回路20と第2ロウ系デコーダ19とを備えない点である。
従来の読書き制御信号R/W0〜3は、本実施の形態の読書き制御信号R/W0〜3と、以下のように、その指示する内容が異なる。
読書き制御信号R/W0が「L」レベルのときには、第0群の列に対して書込みを指示する。読書き制御信号R/W1が「H」レベルのときには、第1群の列に対して読出しを指示し、読書き制御信号R/W1が「L」レベルのときには、第1群の列に対して書込みを指示する。読書き制御信号R/W2が「H」レベルのときには、第2群の列に対して読出しを指示し、読書き制御信号R/W2が「L」レベルのときには、第2群の列に対して書込みを指示する。読書き制御信号R/W3が「H」レベルのときには、第3群の列に対して読出しを指示し、読書き制御信号R/W3が「L」レベルのときには、第3群の列に対して書込みを指示する。したがって、読書き制御信号R/W0〜3によって、読出しか、書込みかのいずれかが行なわれ、本実施の形態のように1サイクルで読出しと書込みが行なわれることがない。
図13は、従来の制御信号生成回路63の構成を示す。同図を参照して、論理回路L1によって、読書き制御信号R/Wi(i=0〜3)が「H」レベル、クロック信号CLKφ1が「L」レベル、かつクロック信号CLKφ2が「L」レベルのときに、プリチャージ信号PCi(i=0〜3)が「L」レベルとなる。このように従来のECC機能付き半導体記憶装置200では、本実施の形態に係るECC機能付き半導体記憶装置100と異なり、読書き制御信号R/Wi(i=0〜3)が「L」レベルのときには、プリチャージ信号PCi(i=0〜3)が「L」レベルとならない。
論理回路L2によって、読書き制御信号R/Wi(i=0〜3)が「H」レベル、かつクロック信号CLKφ2が「L」レベルのときに、ビット線選択信号BLSi(i=0〜3)が「H」レベルとなる。このように従来のECC機能付き半導体記憶装置200では、本実施の形態に係るECC機能付き半導体記憶装置100と異なり、読書き制御信号R/Wi(i=0〜3)が「L」レベルのときには、ビット線選択信号BLSi(i=0〜3)が「H」レベルとならない。
論理回路L3およびフリップフロップFF1によって、読書き制御信号R/Wi(i=0〜3)が「H」レベル、かつクロック信号CLKφ1が「H」レベルとなる時点から、クロック信号CLKφ1が「L」レベル、かつクロック信号CLKφ2が「L」レベルとなる時点まで、センスアンプ活性化信号SAEi(i=0〜3)が「H」レベルとなる。このように従来のECC機能付き半導体記憶装置200では、本実施の形態に係るECC機能付き半導体記憶装置100と異なり、読書き制御信号R/Wi(i=0〜3)が「L」レベルのときには、クロック信号CLKφ1が「H」レベルとなる時点からセンスアンプ活性化信号SAEi(i=0〜3)が「H」レベルとならない。
論理回路L4によって、読書き制御信号R/Wi(i=0〜3)が「L」レベル、クロック信号CLKφ1が「H」レベル、かつクロック信号CLKφ2が「H」レベルのときに、書込みドライバ活性化信号WEi(i=0〜3)が「H」レベルとなる。
論理回路L5,L6によって、読書き制御信号R/W0〜R/W3が「H」レベル、クロック信号CLKφ1が「L」レベル、かつクロック信号CLKφ2が「L」レベルのときに、プリチャージ信号PCPが「L」レベルとなる。このように従来のECC機能付き半導体記憶装置200では、本実施の形態に係るECC機能付き半導体記憶装置100と異なり、読書き制御信号R/Wi(i=0〜3)のいずれかが「L」レベルのときには、プリチャージ信号PCPが「L」レベルとならない。
論理回路L5,L7によって、読書き制御信号R/W0〜R/W3が「H」レベル、かつクロック信号CLKφ2が「L」レベルのときに、ビット線選択信号BLSPが「H」レベルとなる。このように従来のECC機能付き半導体記憶装置200では、本実施の形態に係るECC機能付き半導体記憶装置100と異なり、読書き制御信号R/Wi(i=0〜3)のいずれかが「L」レベルのときには、ビット線選択信号BLSPが「H」レベルとならない。
論理回路L5,L8およびフリップフロップFF2によって、読書き制御信号R/W0〜R/W3が「H」レベル、かつクロック信号CLKφ1が「H」レベルとなる時点から、クロック信号CLKφ1が「L」レベル、かつクロック信号CLKφ2が「L」レベルとなる時点まで、センスアンプ活性化信号SAEPが「H」レベルとなる。このように従来のECC機能付き半導体記憶装置200では、本実施の形態に係るECC機能付き半導体記憶装置100と異なり、読書き制御信号R/Wi(i=0〜3)のいずれかが「L」レベルのときには、クロック信号CLKφ1が「H」レベルとなる時点からセンスアンプ活性化信号SAEPが「H」レベルとならない。
論理回路L9,L10によって、読書き制御信号R/W0〜R/W3のうちのいずれかが「L」レベル、クロック信号CLKφ1が「H」レベル、かつクロック信号CLKφ2が「H」レベルのときに、書込みドライバ活性化信号WEPが「H」レベルとなる。
図14は、図12におけるメモリセルアレイ71と、メモリセルアレイ周辺回路群72と、第1ロウ系デコーダ18の構成を示す。
同図を参照して、メモリセルアレイ71におけるパリティ部のSRAMセルアレイは、本実施の形態と異なり、ノーマル部のSRAMセルアレイと同様の構成である。また、パリティ部のビット線対およびワード線も、本実施の形態と異なり、ノーマル部のビット線対およびワード線と同様である。
メモリセルアレイ周辺回路群72における、パリティ部の書込みドライバWDRは、本実施の形態のパリティ部の書込みドライバWDRのように書込み用ビット線対と接続するのではなく、ノーマル部の書込みドライバWDRと同様に、ビット線対BL,I_BLと接続する。
(従来のECC機能付き半導体記憶装置の各サイクルの動作の概要)
次に、図15を参照して、従来のECC機能付き半導体記憶装置200の各サイクルの動作の概要について説明する。
第3サイクルにおいて、第3群の列の読書き制御信号R/W3が書込みを示す「L」レベルとなる。第3群の列のメモリセルMC1に第3群書込みデータD2wの書込みが行なわれるが、それに先立つ第2サイクルにおいて、すべての読書き制御信号R/W0〜R/W3が読出しを示す「H」レベルとなる。そして、ノーマル部およびパリティ部のすべての列から32ビットのノーマル読出しデータD2rと、6ビットのパリティ読出しデータP2rとの読出しが開始される。第3サイクルにその読出しが完了する。
第3サイクルにおいて、パリティ読出しデータP2rを用いてノーマル読出しデータD2rの誤り訂正が行なわれる。誤り訂正されたノーマル読出しデータD2rは、CPU11に入力される。また、第3群書込みデータD2wと、誤り訂正されたノーマル読出しデータD2rとを用いて、パリティ書込みデータP2wが計算される。そして、ノーマル書込みデータD2wとパリティ書込みデータP2wがメモリセルMC1に書込まれる。
このように従来のECC機能付き半導体記憶装置では、メモリセルにデータの書込みを行なう場合には、データの書込みを行なうサイクルの1サイクル前に、すべての列のメモリセルからのデータの読出しを行なう。したがって、メモリセルにデータの書込みを行なう場合には、2サイクルを必要とし、書込み速度が低下する。
(従来の動作の詳細)
次に、図16に示すタイミングチャートを参照して、従来のECC機能付き半導体記憶装置200の動作の詳細を説明する。
まず、第2サイクルにおいて、読書き制御信号R/W0〜R/W3が「H」レベルとなる(図16の(1)に示す)。
第2サイクルにおいて、クロック信号CLKφ1およびCLKφ2が「L」レベルのときには、制御信号生成回路63によって、プリチャージ信号PC0〜PC3,PCPが「L」レベルとなる(図16の(2)に示す)。これにより、すべてのプリチャージ回路32は、接続されたビット線対BL,I_BLを、プリチャージする。
第2サイクルにおいて、クロック信号CLKφ2が「L」レベルのときには、制御信号生成回路63によって、ビット線選択信号BLS0〜BLS3,BLSPが「H」レベルとなる(図16の(3)に示す)。これにより、すべてのビット線選択回路31は、それに接続されたビット線対BL,I_BLまたはBLP,I_BLPと、対応する読出し信号線RB0〜RB31またはRP0〜RP5とを接続する。
第2サイクルにおいて、クロック信号CLKφ1が「H」レベルになると、入力されたロウアドレス信号A0〜A8に対応するワード線WLが活性化され(図16の(4)に示す)、活性化されたワード線に接続されているすべての列のメモリセルMC1のデータが、そのメモリセルMC1に接続されているビット線対BL,I_BLに読出しデータとして出力される。
また、クロック信号CLKφ1が「H」レベルになってから、次の第3サイクルでクロック信号CLKφ1およびCLKφ2が「L」レベルになるまでの間、センスアンプ活性化信号SAE0〜SAE3,SAEPが「H」レベルとなる(図16の(5)に示す)。これにより、すべてのセンスアンプ33は、活性化状態となり、それに接続するビット線対BL,I_BLのノーマル読出しデータまたはパリティ読出しデータを増幅する(図16の(6)に示す)。
第2サイクルにおいては、制御信号生成回路63によって、ノーマル書込みドライバ活性化信号WE0〜WE3、およびパリティ書込みドライバ活性化信号WEPが「L」レベルとなる(図16の(7)に示す)。
このようにして、32ビットのノーマル読出しデータは、読出し信号線RB0〜RB31を通じて、6ビットのパリティ読出しデータは、読出し信号線RP0〜RP5を通じて、ECC読出し回路15に送られる(図16の(8)に示す)。
ECC読出し回路15は、6ビットのパリティ読出しデータを用いて、32ビットのノーマル読出しデータの誤り訂正を行ない、訂正後のノーマル読出しデータを読出しデータバスRDB0〜RDB31を通じて、CPU11およびセレクト部17に出力する(図16の(9)に示す)。
第3サイクルにおいて、CPU11は、読出しデータバスRDB0〜RDB31を通じて訂正後のノーマル読出しデータを取込む(図16の(10)に示す)。
また、CPU11は、第3群書込みデータData_W24〜31を書込みデータバスWDB24〜WDB31に出力する(図16の(11)に示す)。
セレクト部17は、読出しデータバスRDB0〜RDB31を通じて誤り訂正されたノーマル読出しデータと、書込みデータバスWDB24〜WDB31を通じて第3群書込みデータData_W24〜31とを受け、書込みデータバスWDB0〜WDB23に、誤り訂正された読出しデータを出力し、書込みデータバスWDB24〜WDB31に、第3群書込みデータData_W24〜31を出力する。書込みデータバスWDB0〜WDB31の32ビットのデータは、ECC書込み回路15に送られる(図16の(12)に示す)
ECC書込み回路15は、セレクト部17から出力された書込みデータバスWDB0〜WDB31の32ビットのデータを用いてパリティ書込みデータを算出して、書込み信号線WP0〜WP5に出力する(図16の(13)に示す)。
第3サイクルでは、読書き制御信号R/W0〜R/W2が「H」レベルとなり、読書き制御信号R/W3が「L」レベルとなる(図16の(14)に示す)。
第3サイクルにおいては、第0群、第1群および第2群の列に対応する信号および回路は、読出しサイクルと同様に動作する。
一方、第3群の列に対応する信号および回路は、以下の動作を行なう。
第3サイクルにおいて、クロック信号CLKφ1が「H」レベルになると、入力されたロウアドレス信号A0〜A8に対応するワード線WLが活性化される(図16の(15)に示す)。
第3サイクルにおいて、クロック信号CLKφ1およびφ2が「H」レベルのときには、制御信号生成回路63によって、書込みドライバ活性化信号WE3,WEPが「H」レベルとなる(図16の(16)に示す)。
第3群の列における書込みドライバWDRは、書込みドライバ活性化信号WE3が「H」レベルとなると、書込み信号線WD24〜WD31の第3群書込みデータData_W24〜31をビット線対BL,I_BLに出力する(図16の(17)に示す)。これにより、活性化されているワード線WLに接続されているメモリセルMC1にデータが書込まれる。
パリティ部における書込みドライバWDRは、書込みドライバ活性化信号WEPが「H」レベルとなると、書込み信号線WP0〜WP5のパリティ書込みデータをビット線対BLP,I_BLPに出力する(図16の(18)に示す)。これにより、活性化されているワード線WLに接続されているメモリセルMC1にデータが書込まれる。
以上のように、本実施の形態に係るECC機能付き半導体記憶装置によれば、メモリセルアレイのうち、指定された群に対してデータの書込みを行なうような場合に、1サイクルで、その群のメモリセルへのデータの書込み、および正規部とパリティ部のすべての列のメモリセルからのデータの読出しを行なう。そして、次のサイクルで、パリティ部へのパリティの書込みを行なうが、この書込みは、次に指定された群に対してのデータの書込み、および正規部とパリティ部のすべての列のメモリセルからのデータの読出しと並行して行なうことができる。したがって、実質的に1サイクルで、メモリセルにデータの書込みを行なうことができるので、データの書込みを高速化することができる。
本発明は、上記の実施形態に限定するものではなく、たとえば、以下のような変形例も含む。
(1) 複数サイクル後にパリティ部への書込み
本発明の実施形態では、あるサイクルで、正規部へデータの書込みを行なったときに、その書込みを行なったデータに対応する新たなパリティの書込みは、1サイクル後に行なわれるが、nサイクル後(n>2)に行なうものとしてもよい。nサイクル後に行なう場合には、アドレス遅延回路によってアドレスA0〜A8をnサイクル遅延させ、データ遅延回路によって書込みデータData_W0〜31をnサイクル遅延させ、制御信号生成回路で、読書き制御信号R/W0〜3をnサイクル遅延させるものとすればよい。
(2) 1サイクルで正規部の複数群に対してのデータの書込み
本発明の実施形態では、各サイクルでは、正規部の1つの群に対して、データの書込みを行なうものとした(つまり、8ビットデータの書込み)が、本発明は、これに限定するものではなく、2つの群に対してのデータの書込み(16ビットデータの書込み)、3つの群に対してのデータの書込み(24ビットデータの書込み)、または4つの群に対してのデータの書込み(32ビットデータの書込み)を行なうものとしてもよい。
(3) メモリセルアレイの列の数
本発明の実施の形態では、第0〜第31列のノーマル部と、第32列〜第37列のパリティ部とからなるメモリセルアレイを例として用いたが、これに限定するものではない。ただし、ハミング符号(1ビット誤り訂正)を形成するためには、ノーマル部の列の数を2nとし、パリティ部の列の数pとしたときに、2p−p−1≧nの条件を満たすことが必要となる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
11 CPU、12 CLK生成回路、13,63 制御信号生成回路、14 データ遅延回路、15 ECC読出し回路、16 ECC書込み回路、17 セレクト部、18 第1ロウ系デコーダ、19 第2ロウ系デコーダ、20 アドレス遅延回路、21,71 メモリセルアレイ、22,72 メモリセルアレイ周辺回路群、23,24 プリデコーダ、25,26 ロウデコーダ、31 ビット線選択回路、32 プリチャージ回路、33 センスアンプ、100,200 ECC機能付き半導体記憶装置、RB 読出しバッファ、WDR 書込みドライバ、NM0〜NM10 NチャネルMOSトランジスタ、PM0〜PM4 PチャネルMOSトランジスタ、MC1,MC2 メモリセル、BL,I_BL,WBLP,I_WBLP,RBLP,I_RBLP ビット線、WL,PWL ワード線、FF0〜FF4,FP フリップフロップ、S0,S1,S2,S3 セレクタ、L1〜L14 論理回路、IV1 インバータ、N,I_N ノード。