[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP4549073B2 - メモリ制御回路 - Google Patents

メモリ制御回路 Download PDF

Info

Publication number
JP4549073B2
JP4549073B2 JP2004037205A JP2004037205A JP4549073B2 JP 4549073 B2 JP4549073 B2 JP 4549073B2 JP 2004037205 A JP2004037205 A JP 2004037205A JP 2004037205 A JP2004037205 A JP 2004037205A JP 4549073 B2 JP4549073 B2 JP 4549073B2
Authority
JP
Japan
Prior art keywords
signal
memory
control circuit
state
banks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004037205A
Other languages
English (en)
Other versions
JP2005228142A (ja
Inventor
亮二 藤原
英和 加藤
利一 古川
好将 新井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP2004037205A priority Critical patent/JP4549073B2/ja
Publication of JP2005228142A publication Critical patent/JP2005228142A/ja
Application granted granted Critical
Publication of JP4549073B2 publication Critical patent/JP4549073B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明はメモリ制御回路に関する。
メモリには、複数のブロック(バンク)に分割されてデータの書き込み読み出しのためのアクセスが行われるものがある。前記メモリに対するアクセスは、後述するメモリ制御回路によって実行される。
上記のメモリ制御回路は、CPUからの指示に従って、メモリを構成する複数のバンクの何れかを選択するとともに、選択されたバンク内における所定アドレスを指定してデータの書き込みまたは読み出しを行うこととなる(例えば、特許文献1参照)。
図5に、従来のメモリ制御回路による読み出し状態の変化のタイミングを説明するためのタイムチャートを示す。この図は、各アドレスに記憶されるビット数が16ビットからなるメモリ(16bit×1メモリ、以下、16ビットメモリとする)にメモリ制御回路がアクセスをして読み出しを行う例である。つまり、1つのバンクに対してアクセスする場合のタイムチャートである。メモリとして、例えばSRAMを使用することができる。
メモリ制御回路は、アドレスバス、データバスを介してCPUと接続されていて、メモリ制御回路内においてCPUからの指示に従いValid、ステート信号の各信号を発生する。Validはメモリにアクセスすることを示す信号であり、ステート信号はメモリ内における各種状態を設定するための信号である。
また、メモリ制御回路は、接続されたメモリに対してアドレス信号ADDR、チップセレクト信号nCS、リード信号nRD、ローバイトセレクト信号nLB、nHB/nWRH信号を出力する端子、およびDATA信号を入出力する端子を備えている。一方、接続された16ビットメモリは、メモリ制御回路の出力に対応して、アドレス信号ADDR、チップセレクト信号nCS、リード信号nRD、ローバイトセレクト信号nLB、nHB信号を入力する端子、およびDATA信号を入出力する端子を備えている。以上の各信号はCPUにて、メモリ制御回路を動作するために設定されるシステムクロックCLKに同期して変化する。
まず、メモリ制御回路内においての信号について説明する。
アドレスバスは、CPUとメモリ制御回路間でのメモリのアドレスの転送経路であり、読み出しまたは書き込みを行うメモリのアドレスがCPUから指定される。
データバスは、CPUとメモリ制御回路間での指定されたメモリの読み出しや書き込みデータの転送経路となる。
ステート信号は、メモリ制御回路内におけるメモリへのアクセスの状態を示す信号である。このメモリアクセスの状態を示す信号として、TACS、TCOS、TACC、TCOHがある。
TACSは、メモリのアドレスを指定するが、メモリを活性化しない状態を示す信号である。
TCOSは、メモリを活性化するが、書き込み又は読み出しを行わない状態を示す信号である。
TACCは、書き込み又は読み出しを実行する状態を示す信号である。
TCOHは、書き込み又は読み出しの終了後にメモリを非活性化しない状態を示す信号である。
なお、IDLEはメモリにアクセスしていない状態を示す信号である。
通常メモリアクセスの状態は、ステート信号がIDLE→TACS→TCOS→TACC→TCOH→IDLEの順で変化することにより、このステート信号に応じた状態を経て変化する。メモリ制御回路は、このステート信号の長さやタイミングを制御することができる。
Validは、“HIGH”となることで活性化し、メモリに対してアクセスを行うことを示す信号である。このValidは“HIGH”となってから、ステート信号TACS、TCOS、TACC、TCOHが順次変化する期間と同一のクロック期間経過後に“LOW”となる。
次に、メモリ制御回路からメモリに出力される信号について説明する。
アドレス信号ADDRは、アドレスバスによって指定されたメモリのアドレスを、メモリ制御回路がメモリに対して指定するための信号である。したがってアドレス信号ADDRにはアドレスバスと同じアドレスが指定される。このメモリのアドレスの指定開始となるのは、メモリ制御回路がIDLEの状態から他の状態へと変化するタイミングである。また、メモリ制御回路が、このアドレスを指定する期間は、ステート信号TACS、TCOS、TACC、TCOHが順次変化する期間と同一のクロック期間である。
チップセレクト信号nCSは、メモリのバンクを選択する信号であり、このチップセレクト信号nCSが“LOW”となると選択したバンクが活性化する。このチップセレクト信号nCSが“LOW”となる期間(『予め定められた期間』)は、メモリ制御回路のステート信号TCOS、TACC、TCOHが順次変化する期間と同一のクロック期間である。この期間経過後チップセレクト信号nCSは“HIGH”となり、当該バンクは非活性化する。
リード信号nRDは、メモリ制御回路がアクセスしたメモリから出たデータの読み出しを行うための信号であり、“LOW”となることで活性化する。リード信号nRDが“LOW”となる期間は、ステート信号がTACCの期間と同一のクロック期間であり、この期間経過後“HIGH”となる。
DATA信号は、メモリに対する書き込みデータ又は読み出しデータをメモリ制御回路とメモリ間で転送するための信号である。メモリに記憶されたデータは、ステート信号がTACCから他の信号に切り替わるタイミングで読み出される。
ローバイトセレクト信号nLBは、メモリの下位側のビット(バイト)を選択することを示す信号であり“LOW”になると活性化する。例えば16ビットメモリを使用した場合、nLBが“LOW”になると下位8ビット(1バイト)が選択される。このローバイトセレクト信号nLBが“LOW”となる期間は、アクセスを行うメモリが16ビットメモリであり、かつチップセレクト信号nCSが“LOW”となる期間である。なおアクセスを行うメモリが8ビットの場合にはnLB信号は“HIGH”となる。
nHB/nWRHは、端子がnHBとnWRHとで兼用され、接続されるメモリの種類によって切り替えられる。
ハイバイトセレクト信号nHBは、メモリの上位側、例えば16ビットの内上位8ビット(1バイト)を選択する信号であり、アクセスするメモリが16ビットメモリの時のみ活性化する信号である。
ライトハイバイト信号nWRHは、メモリに書き込みを行う信号でありデータバスの上位側が有効であることを示す信号である。
メモリへのアクセスが、例えば16ビットメモリから、アクセスを行うメモリが各アドレスに記憶されるビット数が8ビットからなるメモリを2つ備えたメモリ(8bit×2メモリ、以下、8ビットメモリとする)に切り替わる時には、端子がnHBからnWRHに切り替わる。図5ではアクセスするメモリが16ビットなので、この時端子はnHBとして機能している。
なお、読み出しの動作において、nHB/nWRHは、16ビットメモリにアクセスする場合チップセレクト信号nCSが“LOW”となる期間で“LOW”となり、8ビットメモリにアクセスする場合は“HIGH”となる。
次に、図5のタイムチャートについて説明する。<内部信号>はメモリ制御回路内の信号を示し、<端子>はメモリ制御回路からメモリに出力される信号を示している。
まず、<内部信号>について説明する。
アドレスバスにt0からt1の期間CPUからアクセスを行うメモリのアドレスA0が指定される。
同時に、t0でValidが“HIGH”となり、それに応じてt1でステート信号がIDLEからTACSへ変化する。
Validはステート信号がIDLE以外の期間と同クロック周期経過後、すなわちt4で“LOW”になる。
ステート信号は、IDLE→TACS→TCOS→TACC→TCOH→IDLEの順に変化する。まずt1でTACSに変化し、t2でTCOS、t3でTACC、t4でTCOH、となる。また、ステート信号は、t4でValidが“LOW”となることによりt5でIDLEに変化する。
次に、<端子>の信号について説明する。これらの信号はすべて、ステート信号に基づいて変化する。
まず、ステート信号がTACSに変化するt1でアドレス信号ADDRに、CPUからアドレスバスに指定されたアドレスA0が指定される。
そして、ステート信号がTCOSに変化するt2でチップセレクト信号が“LOW”になる。
同時にアクセスするメモリが16ビットメモリなのでnLBが“LOW”となり、nHB/nWRHも“LOW”となる。
次に、ステート信号がTACCに変化するt3で、リード信号nRDが“LOW”となる。
ステート信号がTACCからTCOHに変化するt4でリード信号nRDが“HIGH”となり、アドレスA0に記憶されていたデータD0がDATA信号に読み出される。
なお、読み出されたデータD0は、<内部信号>のデータバスに出力される。
そして、ステート信号がIDLEに変化するt5で、チップセレクト信号nCSが“HIGH”となり、アドレス信号ADDRのアドレスA0の指定が終了する。
このように、メモリ制御回路ではメモリの読み出しまたは書き込みに対する状態に対するステート信号TACS、TCOS、TACC、TCOHが設定されていて、読み出しまたは書き込みを行う期間のtaccに対して、アドレスのセットアップやバンク選択のセットアップのための期間tacs、tcos、tcohを設けている。
本実施の形態では、1クロック期間を1とするとtacs=tcos=tcoh=1、tacc=3であり、この期間に応じてステート信号が変化する。書き込み又は読み出しを行う期間であるtaccは0以外の値であるが、tacs、tcos、tcohは、高速にアクセスを行う場合には0に設定することが可能となっている。
特開平11−328095号公報
図6は、従来のメモリ制御回路による問題を説明するためのタイムチャートである。
この例では、メモリ制御回路がアクセスするメモリとして16ビットメモリ(以下バンク0とする)と8ビットメモリ(以下バンク1とする)との2つのバンクが接続されている。
メモリ制御回路は読み出しおよび書き込みの指示をCPUからアドレスバス、データバスを介して受け、Valid、ステート信号の各信号を生成する。
また、メモリ制御回路は、接続された複数のメモリに対してアドレス信号ADDR、バンク0へのチップセレクト信号nCS0、バンク1へのチップセレクト信号nCS1、リード信号nRD、ローバイトセレクト信号nLB、nHB/nWRH信号を出力する端子および、DATA信号を入出力する端子を備えている。
16ビットメモリであるバンク0は、メモリ制御回路の出力に対応して、アドレス信号ADDR、チップセレクト信号nCS0、リード信号nRD、ローバイトセレクト信号nLB、nHB信号を入力する端子および、DATA信号を入出力する端子を備えている。
一方、8ビットメモリであるバンク1は、メモリ制御回路の出力に対応して、アドレス信号ADDR、チップセレクト信号nCS1、リード信号nRD、nWRH信号を入力する端子および、DATA信号を入出力する端子を備えている。
以上の各信号はCPUにて、メモリ制御回路を動作するために設定されるシステムクロックCLKに同期して変化する。
次に、図6のタイムチャートについて説明する。
この図6の場合では、高速アクセスを行うためバンク0、バンク1ともにステート信号に応じてtacs=tcos=tcoh=0と設定している。なおバンク0に対するtacs、tcos、tacc、tcohをそれぞれtacs0、tcos0、tacc0、tcoh0とし、バンク1に対するtacs、tcos、tacc、tcohをそれぞれtacs1、tcos1、tacc1、tcoh1とする。またバンク0に対するValid、ステート信号をそれぞれ、Valid0、ステート0信号とし、バンク1に対するValid、ステート信号をそれぞれ、Valid1、ステート1信号とする。
まず、<内部信号>について説明する。
アドレスバスにCPUから、t0からt1の期間バンク0のアドレスA0が指定され、続いてt1からt3の期間バンク1のアドレスA1が指定される。
バンク0のアドレスA0の指定によってt0でValid0が“HIGH”となる。
Valid0はステート0信号がIDLE以外の期間と同一のクロック周期経過後、すなわちt2で“LOW”になる。
そして、Valid0が“HIGH”であることによって、t1でステート0信号がIDLEからTACCに変化する。この例の場合tacs0=tcos0=tcoh0=0なのでステート0信号はIDLE→TACC→IDLEの順で変化する。
また、ステート0信号は、t2でValid0が“LOW”となるのに応じて、t3でTACCからIDLEに変化する。
一方、t2では、Valid0が“LOW”となるのと同時に、アドレスバスのアドレスA1の指定に応じたValid1が“HIGH”となる。
Valid1はステート1信号がIDLE以外の期間と同一のクロック周期経過後、すなわちt4で“LOW”になる。
そして、Valid1が“HIGH”であることによって、t3でステート1信号がIDLEからTACCに変化する。この例の場合tacs1=tcos1=tcoh1=0なのでステート1信号はIDLE→TACC→IDLEの順で変化する。
また、ステート1信号は、t4でValid1が“LOW”となることによって、t5でTACCからIDLEに変化する
次に、<端子>の信号について説明する。これらの信号はすべて、ステート信号に基づいて変化する。
まず、ステート0信号がTACCに変化するt1でアドレス信号ADDRに、CPUからアドレスバスに指定されたアドレスA0が指定される。
同時にバンク0のチップセレクト信号nCS0、リード信号nRD、ローバイトセレクト信号nLB、nHB/nWRH信号が“LOW”になり、バンク0の読み出しのアクセスが開始する。
そして、ステート0信号がTACCからIDLEに変化し、ステート1信号がIDLEからTACCに変化するt3では、アドレス信号ADDRの指定がバンク0のアドレスA0からバンク1のアドレスA1に切り替わる。また、バンク0のチップセレクト信号nCS0が“HIGH”となり、バンク1のチップセレクト信号nCS1が“LOW”となる。
この場合、バンク0とバンク1の連続読み出しとなるのでリード信号nRDは、t3で“LOW”のままである。
また、アクセスを行うメモリが16ビットメモリから8ビットメモリになるので、ローバイトセレクト信号nLB、nHB/nWRH信号はt3で“HIGH”となる。
アドレスA0に記憶されていたデータD0はDATA信号に読み出される。
なお、読み出されたデータD0は、<内部信号>のデータバスに出力される。
同時に、t3ではステート1信号の変化によってチップセレクト信号nCS1が“LOW”になり、バンク1の読み出しのアクセスが開始する。
ステート1信号がTACCからIDLEに変化するt5でリード信号nRD、チップセレクト信号nCS1が“HIGH”になり、アドレス信号ADDRによるアドレスA1の指定が終了する。
アドレスA1に記憶されていたデータD1はDATA信号に読み出される。なお、読み出されたデータD1は、<内部信号>のデータバスに出力される。
この図6のタイムチャートのように高速アクセスを行うためステート信号のTACS、TCOS、TCOHをパスした場合、Valid0とValid1の“HIGH”の期間の切り替わりがt2において連続となり、アドレス信号ADDRのA0からA1への指定の切り替えも連続となる。また、この場合、チップセレクト信号nCS0の“LOW”から“HIGH”への変化と、チップセレクト信号nCS1の“HIGH”から“LOW”への変化とは、同じタイミングのt3となる。
nHB/nWRHの端子は、バンク1の8ビットのメモリへの切り替わりに応じてnHBからnWRHに切り替えられ、nHB/nWRHの信号は、バンク1に書き込みが行われないように“LOW”から“HIGH”に変化する。このnHB/nWRHの“HIGH”への立ち上がりのタイミングが、回路の遅延などで図6に示す点線のように遅れた場合、チップセレクト信号nCS1とnWRH信号とリード信号nRDがすべて“LOW”となる期間が生じる。よってバンク1の書き込みと読み出しが不定となり誤動作を起こす恐れがある。
このように、従来のメモリ制御回路では、異なるバンクに連続してアクセスを行う場合に、アクセスの遅延による誤動作の恐れがあるという問題があった。
本発明は、複数の異なるバンクに連続アクセスをしてもアクセスの遅延による誤動作を防止するメモリ制御回路を提供することを目的とする。
本発明に係る主たる発明は、複数のバンクを有するメモリに対するアクセスを制御する制御回路、前記複数のバンクのアドレスを選択的に指定するための第1信号と、前記複数のバンクを選択的に活性化するための第2信号に基づいて、前記メモリに対するアクセス方法を判定するアクセス判定回路と、前記複数のバンクに対するアドレスの指定から活性化までの期間を設定する第1の設定回路と、を備え、前記アクセス判定回路は、前記第1信号が前記複数のバンクを指定し、前記第2信号が当該複数のバンクを連続して活性化させることを示す場合の判定結果に基づいて、前記第1の設定回路に対して前記複数のバンクに対するアドレスの指定と活性化を同時とすることを示す値が設定されているときには、当該複数のバンクの活性化が切り替わる際に当該複数のバンクをともに非活性化とする期間を設けるべく、前記制御回路を制御する、ことを特徴とするメモリ制御回路である
本発明の他の特徴については、添付図面及び本明細書の記載により明らかとなる。
本発明によれば複数の異なるバンクに連続アクセスをしてもアクセスの遅延による誤動作を防止することができる。
===メモリ制御回路の構成===
図1は、本発明の実施の形態に係るメモリ制御回路を説明するためのブロック図である。なお、図1に示すメモリ制御回路は集積回路であることとする。
また、以後の説明では集積回路の内部を内部とし、集積回路の外部を外部と呼ぶことにする。
集積回路100は、CPU200とメモリ制御回路300とを備えている。また本実施の形態では、メモリ制御回路300はCPU200からの指示に基づきメモリ400とメモリ500に対してアクセスを行い読み出しまたは書き込みを行う。
ここで、メモリ400(以下バンク0とする)には、例えば16ビットメモリが接続され、また、メモリ500(以下バンク1とする)には、例えば8ビットメモリが接続される。これらのメモリは例えばSRAMを使用することができる。
CPU200は、メモリ400、500に対してデータの書き込み又は読み出しを行うための信号を内部バスに出力する。
メモリ制御回路300は、内部バスから、バンクのアドレスを選択的に指定するためのアドレスバス、データ転送を行うためのデータバスを接続している。
またメモリ制御回路300は、内部バスから、メモリにアクセスすることを示すセレクト信号、内部バスが活性か否かを示す状態信号、メモリ制御回路300を動作させるためのシステムクロックCLKを入力している。
そして、メモリ制御回路300は、CPU200からの指示に基づき、外部に接続されたメモリ400、500に対し、アドレス信号ADDR、DATA信号、バンク0に対するチップセレクト信号nCS0、バンク1に対するチップセレクト信号nCS1、ローバイトセレクト信号nLB、リード信号nRD、およびnWR/nWRL、nHB/nWRHの信号を入出力し、書き込み又は読み出しのアクセスを行う。
なお、nWR/nWRLは、端子がnWRとnWRLとで兼用されていて、接続されるメモリの種類によって切り替えられる。ライト信号nWRは、書き込みを行うための信号であり、ライトローバイト信号nWRLは、書き込みを行う信号でありデータバスの下位側が有効であることを示す信号である。nWR/nWRLの端子はアクセスを行うメモリが16ビットメモリの時はnWRに、アクセスを行うメモリが8ビットメモリの時はnWRLに切り替えられる。
メモリ400(バンク0)は、メモリ制御回路300の出力に対応して、アドレス信号ADDR、チップセレクト信号nCS0、リード信号nRD、ローバイトセレクト信号nLB、nHB信号、nWR信号を入力する端子および、DATA信号を入出力する端子を備えている。
一方、メモリ500(バンク1)は、メモリ制御回路300の出力に対応して、アドレス信号ADDR、チップセレクト信号nCS1、リード信号nRD、nWRH信号、nWRL信号を入力する端子および、DATA信号を入出力する端子を備えている。
また、メモリ制御回路300は、レジスタアクセス回路10、レジスタ(『設定回路』)20、21、状態制御回路(『制御回路』)30、31、外部インターフェイス回路40、メモリアクセス検出回路50、アクセス判定回路60を備えている。以上の回路は、すべて内部バスから入力されるクロックCLKに同期して動作を行う。
レジスタアクセス回路10は、内部バスから入力した信号の内、レジスタにアクセスする信号を判別し、対応するレジスタ群20または21に出力する。
レジスタ群20は、レジスタ70、71、72、73、74、75の各レジスタを有している。
レジスタ71は、アクセスを行うメモリのアドレスの指定からメモリが活性化するまでの期間tacsに相当する値が設定されるものである。
レジスタ72は、メモリの活性化から読み出し開始までの期間tcosに相当する値が設定されるものである。
レジスタ73は、メモリの書き込み又は読み出しを実行する期間taccに相当する値が設定されるものである。
レジスタ74は、書き込み又は読み出し終了からメモリが非活性になるまでの期間tcohに相当する値が設定されるものである。
レジスタ75は、外部に接続されたメモリの種類により端子の設定を切り替えるための値が設定されるものである。例えば、アクセスを行うメモリが8ビットか16ビットかを示すCPU200からの入力によって、nHB/nWRHの端子はnHBまたはnWRHに切り替えられる。
レジスタ70は、異なる複数のバンクで連続したアクセスが行われるときに追加される期間(『複数のバンクをともに非活性化とする期間』)に相当する値が設定されるものある。
これらの各レジスタ70乃至75の値は、CPU200によって設定される。
なお、レジスタ群21はレジスタ群20と同様に構成されている。メモリ制御回路300は、バンク数と同数のレジスタ群20、21を備えている。
状態制御回路30は、レジスタ群20で設定された値と、メモリアクセス検出回路50から出力されるValidと、アクセス判定回路60の出力とに基づいて、メモリへのアクセス状態を示す信号IDLE、TACS、TCOS、TACC、TCOHの出力の制御を行う。
この制御を行うため、状態制御回路30は、レジスタ群20のレジスタ71、72、73、74の値をそれぞれダウンカウントするACSカウンタ、COSカウンタ、ACCカウンタ、COHカウンタを備えている。そして、状態制御回路30は、各レジスタ70乃至75に設定された値からクロックCLKに同期してダウンカウントし、レジスタ値が「0」となるまでの期間をそれぞれTACS、TCOS、TACC、TCOHの状態とする信号を出力する。この信号によって外部インターフェイス回路40から出力される信号の状態が制御される。
なお、状態制御回路31は、状態制御回路30と同様に構成されている。本実施の形態ではレジスタ群20、21に対応して状態制御回路30、31を設けているが、状態制御回路30、31は1つでもよい。例えば、状態制御回路30に、レジスタ群20、21からそれぞれの値が入力され適宜切り替えるようになっていてもよい。
メモリアクセス検出回路50は、内部バスから外部のメモリにアクセスすることを検出する回路であり、内部バスからメモリをアクセスすることを示すセレクト信号を入力し、外部のメモリにアクセスすることを示すValid(『第2信号』)を出力する。
アクセス判定回路60は、アドレスバスと、Validと、内部バスがアクティブか否かを示す状態信号とに基づいて、外部のメモリへのアクセス方法を判定しその結果を状態制御回路30に出力する。
例えばアドレスバスが複数のバンクのアドレスを指定し、それに対応するバンクのValidが連続で“HIGH”となるとき、ACSカウンタはtacs、tareaに相当する値の加算値をダウンカウントする。
外部インターフェイス回路40は、アドレスバス、データバスの転送内容、レジスタ75の設定値、状態制御回路30の出力に応じて、メモリに対する入力、出力のタイミングが制御された、アドレス信号ADDR、DATA信号、チップセレクト信号nCS0、nCS1、ローバイトセレクト信号nLB、リード信号nRD、nWR/nWRL信号、nHB/nWRH信号を出力するものである。
例えば、チップセレクト信号nCSは、状態制御回路30がIDLE又はTACSの信号を出力するときに“HIGH”となり、それ以外の場合には“LOW”となる。また、リード信号nRDは、状態制御回路30がIDLE、TACS、TCOS、TCOHの信号を出力するとき“HIGH”となり、TACCの信号を出力するとき“LOW”となる。また、nWR/nWRL、nHB/nWRHは、アクセスするメモリが16ビットか8ビットかを示すレジスタ群20内のレジスタ75によってそれぞれ切り替えられる。
===状態制御回路30の出力変化===
図2は、本発明の実施の形態に係るメモリ制御回路300内の状態制御回路30の状態変化を説明するための図である。状態制御回路30は、外部のメモリ400、500にアクセスを行っていないときにはValidが“LOW”であり、メモリをIDLEの状態とするステート信号を出力している。ステート信号は、このIDLEから、通常前述のようにTACS→TCOS→TACC→TCOHの順で変化する。
この図2において、メモリアクセス検出回路50からValidが“LOW”すなわちメモリをアクセスしないことを示す信号が入力された場合には、状態制御回路30の出力がTACS、TCOS、TACC、TCOHのいずれのステート信号であっても、状態制御回路30の出力はIDLEのステート信号に変化する。以後、Validが“HIGH”であることを前提に説明する。
また、図2における各カウンタ=1とは、クロックCLKの1周期のダウンカウントを行うことを示している。ダウンカウントはクロックCLKの整数倍の定倍CLKでこととする。例えばtacsの場合レジスタ71にクロックCLKの1周期に相当するレジスタ値が設定され、そのレジスタに対応するカウンタでダウンカウントを行う。そしてレジスタ値が「0」になったタイミングで次の状態に変化する。
レジスタ71、レジスタ72、レジスタ74が0の場合には、ダウンカウントを行わず、次の状態へと変化する。
なお、前述したように書き込み又は読み出しを行う期間のレジスタ73は0以外が設定され、TACCがパスすることはない。
《同バンクあるいは連続でないメモリアクセス時》
まず、ステート信号がIDLEである状態で、Validが“HIGH”となることでCPUにより指定されるメモリにアクセスを開始する。状態制御回路30は、tacs≠0の場合にはステート信号としてTACSを出力する。tacs=0かつtcos≠0の場合にはTCOSを出力する。また、tacs=0かつtcos=0の場合にはTACCと出力する。
ステート信号がTACSに変化すると、状態制御回路30内の、この状態に対応したACSカウンタにレジスタ71の値が取り込まれ、カウントが行われる。ACSカウンタにてクロックCLKの1周期のダウンカウントが終了すると、状態制御回路30は、tcos≠0の場合はステート信号としてTCOSを出力し、tcos=0の場合は、TACCを出力する。
ステート信号がTCOSに変化すると、状態制御回路30内の、この状態に対応したCOSカウンタにレジスタ72の値が取り込まれ、カウントが行われる。COSカウンタにてクロックCLKの1周期のダウンカウントが終了すると、状態制御回路30は、TACCを出力する。
ステート信号がTACCに変化すると、状態制御回路30内の、この状態に対応したACCカウンタにレジスタ73の値が取り込まれ、カウントが行われる。ACCカウンタにてクロックCLKの1周期のダウンカウントが終了すると状態制御回路30は、tcoh≠0の場合はステート信号としてTCOHを出力し、tcos=0の場合は、Validが“LOW”となりIDLEを出力する。
ステート信号がTCOHに変化すると、制御回路30内の、この状態に対応したCOHカウンタにレジスタ74の値が取り込まれ、カウントが行われる。COHカウンタにてクロックCLKの1周期のダウンカウントが終了すると、Validが“LOW”となり状態制御回路30はステート信号としてIDLEを出力する。
《異なるバンクに連続アクセス時》
本発明の状態制御回路30は、図2に示すように、異なるバンクに対して連続してアクセスをする場合、ステート信号がIDLEからTACSへ変化する設定としてレジスタ70とレジスタ71の加算値をACSカウンタに取り込むようにアクセス判定回路60によって制御される。このレジスタ70とレジスタ71の加算値tacs+tareaは、CPU200によって、0でない値が設定される。例えばクロックCLKの1クロック期間以上の値が設定される。よってtacs=0として設定されていても、TACSの状態をパスすることがなくなる。以下通常と同様に変化を行う。
なお、tareaの追加は、tacsの値に関係なく、異なるバンクに対して連続してアクセスをする場合に行うので、tacs+tareaとなる場合のtacsの値は0でなくてもよい。
===メモリ制御回路の動作===
図3は、図1における本発明の実施の形態に係るメモリ制御回路300の動作を説明するためのタイムチャートである。この図3は、メモリ400(バンク0)のアドレスA0から、メモリ500(バンク1)のアドレスA1に連続してアクセスを行う場合の一例を示している。
なお、バンク0にはレジスタ群20、バンク1にはレジスタ群21が対応しているものとする。また、高速アクセスのため、レジスタ群20にはtacs0=tcos0=tcoh0=0、tacc0=3、tarea0=1が設定され、レジスタ群21にはtacs1=tcos1=tcoh1=0、tacc1=3、tarea1=0が設定されている。
各バンクへのアクセスにつき、バンク0に対するValidとステート信号をそれぞれValid0、ステート0信号とし、バンク1に対するValidとステート信号をそれぞれValid1、ステート1信号とする。
まず、<内部信号>について説明する。
CPUからアドレスバスに、t0からt1の期間にバンク0のアドレスA0が指定され、続いてt1からt3の期間にバンク1のアドレスA1が指定される。
バンク0のアドレスA0の指定によってt0でValid0が“HIGH”になる。
Valid0はステート0信号がIDLE以外の期間と同一のクロック周期経過後すなわちt2で“LOW”になる。
そして、Valid0が“HIGH”であることによって、t1でステート0信号がIDLEからTACCに変化する。この例の場合tacs0=tcos0=tcoh0=0なのでステート0信号はIDLE→TACC→IDLEの順で変化する。
また、ステート0信号は、t2でValid0が“LOW”となることによって、t3でTACCからIDLEに変化する。
一方、t2では、Valid0が“LOW”に変化するのと同時に、アドレスバスにおけるアドレスA1の指定に応じたValid1が“HIGH”となる。
Valid1はステート1信号がIDLE以外の期間と同一のクロック周期経過後すなわちt5で“LOW”になる。
そして、Valid1が“HIGH”であることによって、t3でステート1信号がIDLEから変化する。この場合異なるバンクへの連続アクセスとなるので、ステート1信号がTACSである期間としてtacs1+tarea0が設定される。ステート1信号はIDLE→TACS→TACC→IDLEの順で変化する。
図3に示すようにステート1信号は、t3でIDLEからTACSに変化し、t4でTACCに変化する。そしてステート1信号は、t5でValid1が“LOW”に変化するのに応じてt6でTACCからIDLEに変化する
なお、内部バスが活性か否かを示す状態信号はアドレスバスにCPUからの指示がある期間はアクティブを示している。この場合、CPUがアドレスA0とアドレスA1を連続して指定しているので、状態信号はこの期間連続してアクティブを示している。
次に、<端子>の信号について説明する。これらの信号はすべて、ステート信号に基づいて変化する。
まず、ステート0信号がTACCに変化するt1でアドレス信号ADDRに、CPUからアドレスバスに指定されたアドレスA0が指定される。
同時にバンク0のチップセレクト信号nCS0、リード信号nRD、ローバイトセレクト信号nLB、nHB/nWRH信号が“LOW”になり、バンク0の読み出しのアクセスが開始する。
そして、ステート0信号がTACCからIDLEに変化し、ステート1信号がIDLEからTACSに変化するt3では、アドレス信号ADDRの指定がバンク0のアドレスA0からバンク1のアドレスA1に切り替わる。また、バンク0のチップセレクト信号nCS0が“HIGH”となる。ステート1信号がTACSの状態なので、バンク1のチップセレクト信号nCS1は“HIGH”のままであり、リード信号nRD“HIGH”となる。
また、アクセスを行うメモリが16ビットメモリから8ビットメモリになるので、ローバイトセレクト信号nLB、nHB/nWRH信号はt3で“HIGH”になる。
アドレスA0に記憶されていたデータD0はDATA信号に読み出される。
なお、読み出されたデータ信号D0は、<内部信号>のデータバスに出力される。
次に、ステート1信号がTACSからTACCに変化するt4で、チップセレクト信号nCS1が“LOW”となり、バンク1の読み出しのアクセスが開始する。
そして、ステート1信号がTACCからIDLEに変化するt6でリード信号nRD、チップセレクト信号nCS1が“HIGH”となり、アドレス信号ADDRによるアドレスA1の指定が終了する。
アドレスA1に記憶されていたデータD1はDATA信号に読み出される。
なお、読み出されたデータD1は、<内部信号>のデータバスに出力される。
このように、異なるバンクへの連続アクセスの場合ステート信号のTACSの設定としてtareaを追加することにより、チップセレクト信号nCS0、nCS1をともに“HIGH”とする期間を設定することができ、nHB/nWRH信号が“HIGH”となるタイミングの遅れによる誤動作を防止することができる。
===その他の実施の形態===
図4は、本発明のその他の実施の形態に係るメモリ制御回路300の動作を説明するためのタイムチャートである。
このタイムチャートは、例えばCPU200内部にデータを一時的に保存しておくキャッシュメモリ(不図示)およびキャッシュ専用のバス(不図示)を備えていて、メモリ制御回路300がキャッシュメモリとアクセスすることによって内部バスがIDLEとなる期間を含む場合の一例を示している。このように、CPU内部にキャッシュメモリを備え、キャッシュメモリに繰り返し使われる特定のデータを記憶しておくと、アクセス時間を大幅に短縮することができる。
この図4では、アドレスバスのA0とA1の指定が連続でなくt1からt2においてアドレスバスにCPUからのアドレスを指定する信号が無いという点で前述の実施の形態と異なっている。状態信号もアドレスバスに対応して、t1からt2において内部バスに信号が無いバスIDLEとなっている。
しかしバンク0のValid0の“HIGH”から“LOW”の変化と、バンク1のValid1の“LOW”から“HIGH”への変化のタイミングは共にt2であり、外部のメモリに対しては、異なるバンクへの連続アクセスとなる。
このように内部バスにおいてアドレス指定の間にIDLE状態が存在しても、レジスタ群20、21の設定値によって、Valid0の立ち下がりとValid1の立ち上がりのタイミングが同時となり、アドレス信号ADDRの指定のA0からA1への切り替えが連続となることがある。
よって、この場合も、外部のメモリに対して、異なるバンクへの連続アクセスとなるのでメモリ制御回路300は、TACSの期間の設定としてtacs1にtarea0を追加する。
以上説明したように、異なるバンクに連続でアクセスをする場合にステート信号がTACSである期間としてtacsにtareaを加算した値を設定することにより、チップセレクト信号nCS0、nCS1をともに“HIGH”とする期間を設けることができる。この期間では両バンクとも“HIGH”であるので、信号の遅延、例えばnHB/nWRH信号が“LOW”から“HIGH”になるタイミングの遅れによる誤動作を防止することができる
なお、本実施の形態ではtacs=0の場合について説明したが、tacsが0でない場合にも、異なるバンクに連続してアクセスする場合、ステート信号がTACSである期間としてtacsにtareaを加算した値を設定することにより、信号の遅延による誤動作を防止することができる
また、tacsが0の場合、すなわち高速アクセスによってアドレスの指定期間とバンクの活性化の期間が同時となる場合には、異なるバンクの活性化の切り替わり時に、バンクの活性化の切り替わりが同時となり誤動作が生じやすいので、tacs=0の場合にtareaを加算するようにしてもよい。この場合、高速アクセス時の誤動作を防止することができる。
このtareaの値の設定をするレジスタを、アクセスを行うバンクに対応して設けることにより、各バンクに対応してtareaを追加することができる。
また、ステート信号がTACSである期間としてtacsにtareaを加算した値はシステムクロックCLKの少なくとも1クロック期間とすることにより、バンク0とバンク1の活性化の期間の切り替わりが連続となることがなくなるので、誤動作を防止することができる。
なお本発明では、内部信号にバスIDLEの期間が存在しても、メモリへのアクセスが連続となる時には、連続アクセスとみなしTACSの状態の期間を追加することで誤動作を防止することができる。
以上、本発明の実施の形態について、その実施の形態に基づき具体的に説明したが、これに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
例えば、メモリ400、500は、図1の構成でなくてもよい。またSRAM以外のメモリ、例えばFlashメモリなどを使用してもよい。
本発明の形態に係るメモリ制御回路を説明するためのブロック図である。 本発明の形態に係るメモリ制御回路内の制御回路の状態変化を説明するための図である。 本発明の形態に係るメモリ制御回路の動作を説明するためのタイムチャートである。 本発明のその他の実施の形態に係るメモリ制御回路の動作を説明するためのタイムチャートである。 従来のメモリ制御回路の動作を説明するためのタイムチャートである。 従来のメモリ制御回路の問題点を説明するためのタイムチャートである。
符号の説明
10 レジスタアクセス回路
20、21 レジスタ
30、31 状態制御回路
40 外部インターフェイス回路
50 メモリアクセス検出回路
60 アクセス判定回路
100 集積回路
200 CPU
300 メモリ制御回路
400、500 メモリ

Claims (4)

  1. 複数のバンクを有するメモリに対するアクセスを制御する制御回路
    前記複数のバンクのアドレスを選択的に指定するための第1信号と、前記複数のバンクを選択的に活性化するための第2信号に基づいて、前記メモリに対するアクセス方法を判定するアクセス判定回路と、
    前記複数のバンクに対するアドレスの指定から活性化までの期間を設定する第1の設定回路と、を備え、
    前記アクセス判定回路は、
    前記第1信号が前記複数のバンクを指定し、前記第2信号が当該複数のバンクを連続して活性化させることを示す場合の判定結果に基づいて、前記第1の設定回路に対して前記複数のバンクに対するアドレスの指定と活性化を同時とすることを示す値が設定されているときには、当該複数のバンクの活性化が切り替わる際に当該複数のバンクをともに非活性化とする期間を設けるべく、前記制御回路を制御する、ことを特徴とするメモリ制御回路。
  2. 前記制御回路は、
    前記複数のバンクをそれぞれ予め定められた期間活性化させるものであり、
    前記複数のバンクの活性化を切り替える場合、所定の前記バンクが予め定められた期間活性化した直後に、当該バンクおよび次に活性化すべき前記バンクをともに非活性化とする期間を設け、当該期間の経過後、前記次に活性化すべきバンクを非活性化から予め定められた期間活性化させること、を特徴とする請求項1に記載のメモリ制御回路。
  3. 前記複数のバンクをともに非活性化とする期間を設定するための、前記複数のバンクに対応する第2の設定回路を備え、
    前記制御回路は、前記第2の設定回路の設定値に基づいて、前記複数のバンクの活性化に際し、前記複数のバンクをともに非活性化とする期間を設けることを特徴とする請求項1または2に記載のメモリ制御回路。
  4. 前記複数のバンクをともに非活性化とする期間は、前記メモリ制御回路を動作させるためのシステムクロックの少なくとも1クロック期間である、ことを特徴とする請求項1乃至3の何れかに記載のメモリ制御回路。
JP2004037205A 2004-02-13 2004-02-13 メモリ制御回路 Expired - Fee Related JP4549073B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004037205A JP4549073B2 (ja) 2004-02-13 2004-02-13 メモリ制御回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004037205A JP4549073B2 (ja) 2004-02-13 2004-02-13 メモリ制御回路

Publications (2)

Publication Number Publication Date
JP2005228142A JP2005228142A (ja) 2005-08-25
JP4549073B2 true JP4549073B2 (ja) 2010-09-22

Family

ID=35002805

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004037205A Expired - Fee Related JP4549073B2 (ja) 2004-02-13 2004-02-13 メモリ制御回路

Country Status (1)

Country Link
JP (1) JP4549073B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4945125B2 (ja) * 2005-12-21 2012-06-06 ラピスセミコンダクタ株式会社 メモリ制御装置
JP6418983B2 (ja) * 2015-03-05 2018-11-07 キヤノン株式会社 メモリのアクセス制御装置、その制御方法、および、プログラム

Also Published As

Publication number Publication date
JP2005228142A (ja) 2005-08-25

Similar Documents

Publication Publication Date Title
JP4550439B2 (ja) Ecc制御装置
US9741406B2 (en) Semiconductor memory and memory system
JPH0845277A (ja) 半導体記憶装置
JP2002175692A (ja) 半導体記憶装置及びデータ処理システム
US20020114210A1 (en) Semiconductor memory device and information processing unit
JP2011048876A (ja) 半導体記憶装置及びその制御方法
US6769051B2 (en) Memory controller and memory control method for controlling an external memory device to be accessible even in an addressing mode that is not supported thereby
US8239658B2 (en) Internally derived address generation system and method for burst loading of a synchronous memory
EP0337385A2 (en) Cache memory controller associated with a microprocessor
JP4549073B2 (ja) メモリ制御回路
US6292867B1 (en) Data processing system
US8074096B2 (en) Semiconductor integrated circuit, memory system, memory controller and memory control method
US20020188771A1 (en) Direct memory access controller for carrying out data transfer by determining whether or not burst access can be utilized in an external bus and access control method thereof
US20070094460A1 (en) DRAM control circuit
JP2638484B2 (ja) データ処理装置
JP4749689B2 (ja) メモリ制御回路及びメモリ制御方法
JP2004206850A (ja) 半導体記憶装置
JP2004146051A (ja) データ読み取り動作及び書き込み動作を同時に実行可能な集積回路及び方法
CN114253464B (zh) 控制读取请求的方法和具有主机装置的存储器控制器
US20030063506A1 (en) Integrated memory device, method of operating an integrated memory, and memory system having a plurality of integrated memories
JP3561670B2 (ja) メモリ制御回路
JP3600830B2 (ja) プロセッサ
JP3563340B2 (ja) メモリコントローラ
JP3222647B2 (ja) メモリバンク自動切替システム
JP3070454B2 (ja) メモリアクセス制御回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100406

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100525

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100608

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100706

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130716

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees