(57)【要約】【課題】端子数の削減によるコストダウン、SDRAMの任意のアドレスへの書き込み、パフォーマンスの劣化を抑えたメモリアクセスを実現した優れたメモリコントローラを提供すること。【解決手段】アドレス端子とデータ端子の少なくとも一部を共有化したMAD(15:0)端子を設けて時分割で使用する構成とする。また、ライトアクセス要求時に、前記MAD(15:0)端子を介してSDRAMへライトアクセスするためのライトアドレスを生成するライトカラムアドレス発生器202を設ける構成とする。さらに、SDRAMに対してプリチャージコマンド発行時に使用する端子（MA10端子）はデータ端子と共有化しない構成とする。そして、シーケンサ201，セレクタ203〜205が、SDRAMにリードアクセスを実行するためのリードコマンドを発行してから所定時間経過した後に、前記MA10端子を用いてSDRAMにプリチャージコマンドを発行する構成を特徴とする。【選択図】図１
2007034470.tif 000002
【特許請求の範囲】
【請求項１】
外部から入力されるメモリアクセス要求に応じてSDRAMへのメモリアクセスを制御するメモリ制御装置において、
前記SDRAMに対してローアドレス及びカラムアドレスを指定するための複数のアドレス端子と前記SDRAMとデータ入出力を行うための複数のデータ端子の少なくとも一部を共有化したアドレス/データ端子と、
前記SDRAMを制御するための制御信号を発行する制御端子と、
前記メモリアクセス要求が前記SDRAMへデータを書き込むためのライトアクセス要求であった場合、前記ライトアクセス要求にて指定されるライトアドレスから前記メモリ制御装置が前記アドレス／データ端子を介して前記SDRAMへライトアクセスするためのライトアドレスを生成する生成手段と、
前記外部から入力されるメモリアクセス要求にて指定されるアドレス又は前記生成手段が生成するアドレスに基づいて、前記アドレス/データ端子をアドレスフェーズ又はデータフェーズで時分割して前記SDRAMへのメモリアクセスを制御する制御手段と、
を有することを特徴とするメモリ制御装置。
【請求項２】
前記制御端子は、前記SDRAMに対してプリチャージコマンドを発行するための端子を含むことを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
前記制御手段は、前記アドレス/データ端子を使用して前記SDRAMからデータを読み出すリードアクセス中であっても、前記制御端子を用いて、前記SDRAMを制御するための制御信号を発行可能なことを特徴とする請求項２記載のメモリ制御装置。
【請求項４】
前記制御手段は、前記SDRAMに前記リードアクセスを実行するためのリードコマンドを前記制御信号として発行してから所定時間経過した後に、前記制御端子を介して前記プリチャージコマンドを発行することを特徴とする請求項２又は３記載のメモリ制御装置。
【請求項５】
SDRAMに対してローアドレス及びカラムアドレスを指定するための複数のアドレス端子と前記SDRAMとデータ入出力を行うための複数のデータ端子の少なくとも一部を共有化したアドレス/データ端子と前記SDRAMを制御するための制御信号を発行する制御端子とを有し、外部から入力されるメモリアクセス要求に応じて前記SDRAMへのメモリアクセスを制御するメモリ制御装置におけるメモリアクセス制御方法であって、
前記メモリアクセス要求が前記SDRAMへデータを書き込むためのライトアクセス要求であった場合、前記ライトアクセス要求にて指定されるライトアドレスから前記メモリ制御装置が前記アドレス／データ端子を介して前記SDRAMへライトアクセスするためのライトアドレスを生成する生成ステップと、
前記外部から入力されるメモリアクセス要求にて指定されるアドレス又は前記生成ステップにて生成されたアドレスに基づいて、前記アドレス/データ端子をアドレスフェーズ又はデータフェーズで時分割して前記SDRAMへのメモリアクセスを制御する制御ステップと、
を有することを特徴とするメモリアクセス制御方法。
【請求項６】
前記制御端子は、前記SDRAMに対してプリチャージコマンドを発行するための端子を含み、
前記SDRAMからデータを読み出すリードアクセスを実行するためのリードコマンドを前記制御信号として発行してから所定時間経過した後に、前記制御端子を介して前記プリチャージコマンドを発行するプリチャージコマンド発行ステップを有することを特徴とする請求項５記載のメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、SDRAM等のメモリに対するアクセスを制御するメモリ制御装置およびメモリアクセス制御方法に関する。
【背景技術】
【０００２】
従来、SDRAM（Synchronous Dynamic RAM）のメモリコントローラ（メモリ制御回路）は、SDRAMの各信号（D（データバス），A（アドレスバス），/CS，/RAS，/CAS，/WE，DQM）を図１１に示すように接続していた。但し、「/」を付した信号はLowアクティブの信号を意味する。
【０００３】
図１１のメモリコントローラ101cは、SDRAM102との間でD、A、／RAS、／CAS、／WE、／CS、DQMの各信号の送受信をするために各々独立した信号端子を設けていた。
【０００４】
ところが、メモリコントローラにSDRAMを制御するための信号端子をSDAMが有する信号端子と同じ数だけ用意すると、信号端子が多数必要となるためメモリコントローラの製造コストが高くなってしまうという問題があった。
【０００５】
そこで、メモリコントローラに設ける信号端子の数を削減するために、データバス信号線をアドレスバス信号線、制御信号線として共有する構成が提案されている（例えば、特許文献１参照。）。
【特許文献１】特開２０００−２６７９８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
SDRAMのメモリコントローラは、SDAMがデータ読込（リード）を行う状態からアイドル状態に移行する際に、SDRAMが有する全てのメモリバンクの内部データ線に電圧を与えるためにプリチャージオールコマンド（ＰＡＬＬ）をSDRAMに送信する必要がある。しかし、前述した従来技術におけるメモリコントローラは、プリチャージオールコマンドをSDRAMに発行するための端子（即ち、SDRAMのA(10)端子に接続される端子）をもデータバスと共有化していた。そのために、メモリコントローラのA(10)の端子は、データ読込終了までこの端子がデータ読込のために占有されてしまい、適切なタイミングでプリチャージオールコマンドを発行することができなかった。このような構成では、プリチャージオールコマンドのレイテンシ（遅延）により、数クロック余分なサイクルを要することとなる。
【０００７】
本発明は、上記の問題点を解決するためになされたものである。そして、本発明の目的は、アドレス端子とデータ端子を共有化して時分割使用して端子数を削減した場合でも、SDRAM内の任意のアドレスにライトアクセスできる仕組を提供することである。また、リードアクセス時のアクセスタイミングを最短化（最適化）することができる仕組を提供することである。
【課題を解決するための手段】
【０００８】
本発明は、外部から入力されるメモリアクセス要求に応じてSDRAMへのメモリアクセスを制御するメモリ制御装置において、以下の構成を有することを特徴とする。前記SDRAMに対してローアドレス及びカラムアドレスを指定するための複数のアドレス端子と前記SDRAMとデータ入出力を行うための複数のデータ端子の少なくとも一部を共有化したアドレス/データ端子を有する。また、前記SDRAMを制御するための制御信号を発行する制御端子を有する。さらに、前記メモリアクセス要求が前記SDRAMへデータを書き込むためのライトアクセス要求であった場合、前記ライトアクセス要求にて指定されるライトアドレスから前記メモリ制御装置が前記アドレス／データ端子を介して前記SDRAMへライトアクセスするためのライトアドレスを生成する生成手段を有する。また、前記外部から入力されるメモリアクセス要求にて指定されるアドレス又は前記生成手段が生成するアドレスに基づいて、前記アドレス/データ端子をアドレスフェーズ又はデータフェーズで時分割して前記SDRAMへのメモリアクセスを制御する制御手段を有することを特徴とする。
【発明の効果】
【０００９】
本発明は、メモリアクセス要求がライトアクセスであった場合、ライトカラムアドレスの下位３ビットを生成するライトカラムアドレス生成手段を設けた構成とした。この構成によれば、アドレス端子とデータ端子を共有化し時分割で使用しても、SDRAMの任意のアドレスにデータライトすることができる。
【００１０】
また、SDRAMに対してプリチャージコマンド発行時に使用するアドレス端子はデータ端子と共有化せず、独立したアドレス端子とした構成とした。この構成によれば、データリード時のSDRAMからのデータ受け取り状態とは独立してプリチャージコマンドを発行できる。よって、データリード時のアクセスタイミングを最短化（最適化）することができる。
【００１１】
従って、端子数の削減によるコストダウン、SDRAMの任意のアドレスへの書き込み、パフォーマンスの劣化を抑えたメモリアクセスを実現した優れたメモリコントローラを提供することができる等の効果を奏する。
【発明を実施するための最良の形態】
【００１２】
図１は、本発明の一実施形態を示すメモリコントローラ（メモリ制御装置）及びSDRAMの構成を説明するブロック図であり、図１１と同一のものには同一の符号を付してある。
【００１３】
図１において、101cはメモリコントローラであり、102はSDRAMである。SDRAM102のデータバス（DQ(15:0)端子）と制御信号線（BA(1:0)，A(11)，A(9:0)端子）は、メモリコントローラ101cの (MAD(15:0)端子)に接続される。つまり、SDRAM102に対してアドレスを指定するための複数のアドレス端子とSDRAM102とデータ入出力を行うための複数のデータ端子の一部が、MAD(15：00)端子として共有化されている。
【００１４】
メモリコントローラ101cは、後述する図８のCPU100等からの要求にしたがって、この共有化を行った信号線にてSDRAM102を制御する。
【００１５】
以下、メモリコントローラ101c，SDRAM102間で入出力される各信号について説明する。
【００１６】
CLKはクロック信号であり、SDRAM102を動作させるための所定の周波数を有する矩形波である。CKEはクロックイネーブル信号であり、CLKを介してクロック信号を入力するか否かを設定するために使用される。/CSはチップセレクト信号であり、メモリコントローラ101cを介してSDRAM102に入力される入力信号をSDRAMに処理させる場合にイネーブルとなる。
【００１７】
/RASはRow Address Store信号であり、この信号値が「０」（Low）のとき指定するアドレスが行（Row）を意味する。/CASはColumn Address Store信号線であり、この信号値が「０」（Low）のとき指定するアドレスが列（Column）を意味する。/WEはリード／ライト指定信号であり、この信号値が「０」(Low)のときライトモードとなり、この信号値が「１」（Hi）のときリードモードとなる。DQMH，DQMLはデータ入力ラインのマスク信号であり、この信号値が「１」のときDQMHはDQ(15:8)、DQMLはDQ(7:0)の入出力を無効にする。
【００１８】
BA(1:0)はバンク指定信号であり、SDRAM101cが有する複数のメモリバンクを指定するための信号である。A(11:0)はアドレス指定信号である。なお、A(10)はプリチャージコマンドを発行する場合にも使用する。DQ(15:0)はリード／ライト用のデータ入出力信号である。
【００１９】
図１に示すように、メモリコントローラ101cの各制御信号の各信号端子（CLK端子，CKE端子，/CS端子，/RAS端子，/CAS端子，/WE端子）は、SDRAM102の各制御信号の各信号端子（CLK端子，CKE端子，/CS端子，/RAS端子，/CAS端子，/WE端子）にそれぞれ接続されている。また、メモリコントローラ101cのDQM端子は、SDRAM102のDQMH端子，DQML端子に接続されている。さらに、メモリコントローラ101cのMA10端子は、SDRAM102のA(10)端子に接続されている。また、メモリコントローラ101cのMAD(15:0)端子は、アドレスラインとデータ入出力ラインとで共有されており、SDRAM102のBA(1:0)端子，A(11)端子，A(9:0)端子，DQ(15:0)端子と接続されている。
【００２０】
このように、本実施形態のメモリコントローラ101cは、プリチャージコマンドを任意のタイミングで発行可能なアドレス端子（MA(10)端子）と、他のコマンドを任意のタイミングで発行可能な独立制御端子(CLK端子，CKE端子，/CS端子，/RAS端子，/CAS端子，/WE端子)と、プリチャージコマンドを発行するためのアドレス端子以外のアドレス端子(BA(1:0)端子，A(11)端子，A(9:0)端子)とデータ入出力端子（DQ(15:0)端子）を共有化したアドレス／データ共有バス端子（MAD(10)端子）とを有する。
【００２１】
以下、メモリコントローラ101cの詳細を説明する前に、図２を参照して、図１に示したSDRAM102の構成について簡単に説明する。
【００２２】
図２は、図１に示したSDRAM102の概略構成の一例を示すブロック図である。
【００２３】
図２に示すように、SDRAM102は、内部アドレスカウンタ（アドレスバッファ）を有する。また、SDRAM102は、バンク０〜３の４つのメモリバンクから構成され、バンクアドレス「00〜11（２進数）」を指定することにより特定のメモリバンクを指定してアクセスすることができる。また、各バンク内のメモリセルアレイは、16Mbit（1Mword×16bit）で構成され、それぞれ、ロウアドレス「0000〜7777（８進数）」，カラムアドレス「0000〜0377（８進数）」を指定して、データの入出力が可能である。なお、SDRAM102では、１つのアドレスに対応するデータの数（データ幅）は「16bit」（1word）となる。
【００２４】
なお、図２に示したSDRAM102の構成は一例であり、本実施形態のメモリコントローラ101cにより制御可能なSDRAMはこの構成に限られるものではない。
【００２５】
以下、図３を参照して、図１に示したメモリコントローラ101cの構成を説明する。
【００２６】
図３は、図１に示したメモリコントローラ101cの内部構成を説明する回路ブロック図である。
【００２７】
図３において、202はライトカラムアドレス発生器であり、SDRAM102へのデータライト時のカラムアドレスを発生させる。このライトカラムアドレス発生器202は、後述のシーケンサ201からの内部ステートマシンのステート信号、及びアドレス信号Aの最下位3ビットA(3:1)をもとにWCA(3:1)を生成する。なお、アドレス信号A(22:1)は、後述する図８のCPU100から入力されるものであり、図４に示すようなデータ構成となっている。
【００２８】
図４は、図３に示した指定されるアドレス信号A(22:1)のデータ構成を示す図である。
【００２９】
図４に示すように、アドレス信号A(22:1)の21〜22bit（A(22:21)）はバンクアドレスを示す。また、20〜9bit（A(20:9)）はロウアドレスを示す。さらに、8〜1bit（A(8:1)）はカラムアドレスを示すものとする。
【００３０】
図３において、203，204，205はセレクタであり、選択信号入力Ｓが「０」（Low）のときA0端子に入力されるデータを選択して出力し、選択信号入力Sが「１」（Hi）のときはA1端子に入力されるデータを選択して出力する。
【００３１】
具体的には、セレクタ203では、シーケンサ201から出力されるカラムアドレス選択信号（CASEL）に基づいて、リードアクセスかライトアクセスかによってカラムアドレスの選択を行う。また、セレクタ204ではロウアドレスとカラムアドレスの切り替えを行う。さらに、セレクタ205ではアドレス信号とライトデータの切り替えを行うよう構成される。
【００３２】
シーケンサ201は、後述する図５に示す状態遷移手順に従って各信号の出力を制御してメモリアクセス状態を制御する。
【００３３】
以下、図４に示したメモリコントローラ101cのブロック図、図５に示す状態遷移図、および図６，図７に示すタイミングチャートに基づいて、シーケンサ201によるSDRAM102に対するメモリアクセス制御動作について説明する。
【００３４】
図５は、図３に示したシーケンサ201によるメモリアクセス状態を説明する状態遷移図である。なお、図５においては変化しない信号に関しては記述を省き、前のステートでの状態を保持しているものとする。
【００３５】
図６は、図１に示したメモリコントローラ101cにおけるメモリライト動作を説明するSDRAMアクセスタイミングチャートである。
【００３６】
図７は、図１に示したメモリコントローラ101cにおけるメモリリード動作を説明するSDRAMアクセスタイミングチャートである。
【００３７】
なお、本実施形態において、SDRAM102の初期化（パワーオンシーケンスやモードレジスタセット等）は済んでいるものとし、その詳細な説明は割愛する。
【００３８】
また、本実施形態のモードレジスタセットでは、CASレイテンシは「２」，バーストレングスを「８」，アクセスモードはシーケンシャルに設定してあるものとして説明を行うが、モードレジスタ設定に関してはこれに限られるものでない。
【００３９】
さらに、バーストアクセスの際には、カラムアドレス途中からのアクセスは無いものとして説明を行う（即ち、カラムアドレス下位３ビットは必ず「000」から始まる）が、本発明の制限事項ではない。
【００４０】
図５において、「Ti」はアイドルステートであり、シーケンサ201が後述する図８のCPU100からの要求信号（REQ信号）を待つ状態に対応する。このとき、各信号の初期状態は、/CS=1、/RAS=1、/CAS=1、/WE=1、DQMH=1、DQML=1、MA10=X(don't care)、MAD(15:0)=X(don't care)、CASEL=0、RCASEL=0、AWDSEL=0、OEn=0となるようにシーケンサ201により制御されている。SDRAM102はアイドル状態となっている。
【００４１】
そして、REQ=1がシーケンサ201に受け付けられると、ステート（State）は「T0」に移行する。次に、アクティブコマンド発行ステートである「T1」に移行する。
【００４２】
「T1」は/CS=0、/RAS=0、/CAS=1、/WE=1、CASEL=0、RCASEL=0、AWDSEL=1、OEn=0としアクティブコマンド（act）をSDRAM102に発行する処理をシーケンサ201が行うステートである。このとき、RCASEL=0によりセレクタ204ではA0端子に入力されるデータ（A(16:9)）が選択される。また、セレクタ205ではA1端子に入力されるデータ（A(22:20)，A(18:17)，A(16:9)）が選択される。
【００４３】
この結果、MAD(14:13)にはバンクアドレス（A(22:21)）が出力される。また、MAD(11)、MA10、MAD(9:0)にはロウアドレス（A(20)，A(19)，A(18:9)）が出力される。そして、SDRAM102は、これらを受けて活性化を行いバンクアクティブ状態になる。
【００４４】
このバンクアクティブ状態では、以後の処理状態が分岐するので、まずライトアクセス処理（WRn=1）の場合を図５及び図６に示すタイミングチャート等を参照しながら説明する。
【００４５】
＜ライトアクセス処理＞
「T2」はウェイト状態（ステート）で、シーケンサ201は/CS=1、/RAS=1、/CAS=1、/WE=1を出力する。また、このサイクル（ステート）でWRn信号を判断し、WRn=1であったら、シーケンサ201はライトアクセスであると判断し、次なる「Tw3」サイクル（ステート）で、ライトカラムアドレスを出力するためCASEL=1、RCASEL=1、AWDSEL=1とする。
【００４６】
そして「Tw3」では、シーケンサ201は、/CS=0、/RAS=1、/CAS=0、/WE=0、CASEL=1、RCASEL=1、AWDSEL=1、MAD(7:0)=Column address（カラムアドレス）とする。なお、カラムアドレスの下位３ビットに関しては後述のように生成される。またこのとき、シーケンサ201はDQM=１とし、ライトデータは無効であることをSDRAM102に通知する。これにより、アドレス/データ共有バス（MAD(15:0)端子）から出力された値は、SDRAM102ではアドレスとして扱われるようになる。
【００４７】
なお、上述したライトアクセス時のカラムアドレス下位３ビット（WCA(3:1)）は、図３に示したライトカラムアドレス発生器202にて、次の（1）〜（3）に示す論理で生成されている。なお、以下のBSn信号は、バーストアクセスかシングルアクセスかを示す信号で、BSn=1であれば、バーストアクセス、BSn=0であればシングルアクセスを表している。
【００４８】
(1) BSn=1、State=「Tw3」であれば、WCA(3:1)=「111」
(2) BSn=1、State=「Tw11」であれば、WCA(3:1)=「110」
(3)(3-1) BSn=0、State=「Tw3」、A(3:1)=「000」であれば、WCA(3:1)=「111」
(3-2) BSn=0、State=「Tw3」、A(3:1)=「001」であれば、WCA(3:1)=「000」
(3-3) BSn=0、State=「Tw3」、A(3:1)=「010」であれば、WCA(3:1)=「001」
(3-4) BSn=0、State=「Tw3」、A(3:1)=「011」であれば、WCA(3:1)=「010」
(3-5) BSn=0、State=「Tw3」、A(3:1)=「100」であれば、WCA(3:1)=「011」
(3-6) BSn=0、State=「Tw3」、A(3:1)=「101」であれば、WCA(3:1)=「100」
(3-7) BSn=0、State=「Tw3」、A(3:1)=「110」であれば、WCA(3:1)=「101」
(3-8) BSn=0、State=「Tw3」、A(3:1)=「111」であれば、WCA(3:1)=「110」
以上示したように、ライトカラムアドレス発生器202は、ライトアクセス時のカラムアドレス下位３ビットを生成する。なお、図５では、BSn=1のバーストアクセスの場合について示している。
【００４９】
次なる「Tw4」では、シーケンサ201は、/CS=1、/RAS=1、/CAS=1、/WE=1、CASEL=1、AWDSEL=0とし、最初の１ワード分の書き込みデータ（1st Write Data）をMAD(15:0)端子から出力させる（MAD(15:0)=1st Write Data）。なおこのとき、シーケンサ201はDQM=0とし、ライトデータが有効であることをSDRAM102に通知する。
【００５０】
「Tw5」、「Tw6」、「Tw7」、「Tw8」、「Tw9」、「Tw10」までは、シーケンサ201は、MAD(15:0)に2nd Write Data、3rd Write Data、4th Write Data、5th Write Data、6th Write Data、7th Write Dataの順で書き込むデータを出力するように制御する。
【００５１】
次なる「Tw11」では、前の「Tw10」でモードレジスタ設定で指定した８ワードバーストのアクセス処理が終了するため、シーケンサ201は、最後の８番目のデータ書き込み用のカラムアドレスを指定する。つまり、「Tw11」では、シーケンサ201は、再び/CS=0、/RAS=1、/CAS=0、/WE=0、CASEL=1、RCASEL=1、AWDSEL=1、MAD(7:0)=Column address（下位3ビットに関しては前述のように生成されている）とする。なお、このとき前述の「Tw3」の場合と同様に、ライトデータの無効をＳＤＲＡＭに通知する必要があるためDQM=1としている。
【００５２】
そして、次なる「Tw12」では、シーケンサ201は、/CS=1、/RAS=1、/CAS=1、/WE=1、CASEL=1、AWDSEL=0とし、８番目の１ワード分の書き込みデータ（8st Write Data）をMAD(15:0)端子から出力させる（MAD(15:0)=8th Write Data）。なおこのとき、ライトデータの有効を示すためシーケンサ201はDQM=0とする。
【００５３】
次なる「Tw13」はウェイトサイクルであり、続く「Tpre」サイクル（ステート）におけるプリチャージコマンド発行のタイミングを合わせるために挿入される。
【００５４】
「Tpre」では、シーケンサ201は、MA10=1、/CS=0、/RAS=0、/CAS=1、/WE=0、CASEL=0、RCASEL=0、AWDSEL=0、MAD(15:0)=X（don't care）とするように信号の出力を制御する。これにより、全バンクの非活性化（プリチャージオールコマンド（pall））及びバーストアクセスに対するバースト中止をSDRAM102に通知して８ワードのデータ書き込みを終了する。そして、次に再び「Ti」サイクルに戻り、シーケンサ201は、次なるREQ信号の待ち状態となる。SDRAM102はアイドル状態となる。
【００５５】
このとき、シーケンサ201は、SDRAM102への書き込みリクエストを行ったCPUなどのハードウエア（不図示）に対しACK信号をACK=1とし、アクセスサイクルの終了を通知する。
【００５６】
ここで、本発明と従来技術である特許文献１（特開２０００−２６７９８５号公報）とを比較する。特許文献１で示される従来技術では、メモリライト時のカラムアドレスフェーズでは、カラムアドレスに「-1」した値を出力していた。そのためカラムアドレスが「0」のアドレスに対しアクセスできなかった。このように、従来ではSDRAM内にライトアクセスできないアドレスが発生していた。
【００５７】
本実施形態のメモリコントローラ101cでは、上述した(1)〜(3)のようにライトカラムアドレス発生器202でライトカラムアドレスを生成する。これにより、上記従来の問題点を解決して、SDRAM102の全アドレスにライトアクセスすることができる。
【００５８】
＜リードアクセス処理＞
次に、リードの処理（WRn=0）の場合を図５及び図７に示すタイミングチャート等を参照しながら説明する。
【００５９】
ライトアクセスと同様、シーケンサ201がREQ信号をアイドル状態である「Ti」サイクルでうけると、内部ステートは「Ti」から「T0」，「T1」，「T2」の順に移行する。
【００６０】
「T2」でシーケンサ201はWRn信号を判断し、WRn=0であったら、シーケンサ201はリードアクセスであると判断し、次なる「Tr3」サイクル（ステート）へ移行する。
【００６１】
次に続く「Tr3」では、シーケンサ201は、/CS=0、/RAS=1、/CAS=0、/WE=1、DQM=0、CASEL=0、RCASEL=1、AWDSEL=1、MAD(7:0)=Column address（カラムアドレス）とし、リード時のカラムアドレスとして、A(22:1)のアドレス中A(8:1)を選択させ、該選択されたカラムアドレスA(8:1)をMAD(7:0)に出力させる。
【００６２】
次に、「Tr4」に移り、シーケンサ201は/CS=1、/CAS=1とし、SDRAM102からのリードデータ出力を待機する。こののち、MAD(15:0)はデータ入力端子として動作するためOEn信号は入力を示すOEn=1とするようにシーケンサ201により制御される。
【００６３】
また、本実施形態ではCASレイテンシが「２」であるため、リードデータ待ちサイクル（ステート）は「Tr4」の１サイクル（ステート）となる。
【００６４】
次に、シーケンサ201は、「Tr5」→「Tr6」→「Tr7」→「Tr8」→「Tr9」→「Tr10」→「Tpre」→「Ti」とステートを移していきSDRAM102からのデータを受ける。
【００６５】
「Tr5」で最初の１ワードの出力データ「1st Read data」を、「Tr6」で2番目の１ワードの出力データ「2nd Read data」を順に受け取る。そして、「Tpre」で、７番目の１ワードのデータを受け取り、そして「Ti」で、最後の8番目の１ワードのデータを受け取ることになる。
【００６６】
なお、「Tpre」では、SDRAM102からのデータをMAD(15:0)で受け取り中であるが、シーケンサ201は、MA10=1、/CS=0、/RAS=0、/WE=0、DQM=1とすることにより、プリチャージオールコマンド（pall）をSDRAM102に発行する。これにより、SDRAM102は、アクティブコマンド（act）で活性化されている全バンクを非活性化しプリチャージスタンバイ状態となる。
【００６７】
ここで、本発明と従来技術である特許文献１（特開２０００−２６７９８５号公報）とを比較する。特許文献１で示される従来技術では、プリチャージオールコマンドをSDRAMに発行するための端子（即ち、SDRAMのA(10)端子に接続される端子）をもデータバスと共有化していた。このため、リードの処理時では、ステートが「Tpre」に戻った時点でも、CASレイテンシのためまだ７番目のデータの受け取り中であるため、この端子がリードデータで占有されてしまっていた。
【００６８】
従って、従来の技術では、本来ならば、図５に示した「Tpre」に対応するタイミングで、シーケンサ201がSDRAM102に対して行うべきプリチャージオールコマンドの発行を、データの受け取りが完全に終了するまで行えない。このように、従来技術では、適切なタイミングでプリチャージオールコマンドを発行することができず、プリチャージ割り込みにてリード終了を行う際のアクセス時間が長くなってしまう。即ち、プリチャージオールコマンドのレイテンシ（遅延）を考慮した場合、数クロック余分なサイクルを要することとなり、最適なメモリアクセス制御といえるものではないと考えられる。
【００６９】
本実施形態のメモリコントローラ101cでは、上述したように、プリチャージコマンドを発行するためのアドレス線（SDRAM102のA(10)端子に接続される端子）以外のアドレス線とデータ線は共有化する。しかし、上記プリチャージコマンドを発行するためのアドレス線及び他のコマンド線は、データ線と共有化せず、任意のタイミングでコマンド発行可能な構成となっている。このような構成により、上記従来の問題点を解決している。即ち、リード処理時でも、適切なタイミングでプリチャージオールコマンドを発行することができ、最適なメモリアクセス制御を行うことができる。
【００７０】
以上、SDRAM102へのバーストアクセスについての説明を終了する。なお、本実施形態では、シングルアクセスの説明を省くが、図５に示されたバーストアクセスの場合の状態遷移をたどることで、シングルアクセス可能なことは自明である。
【００７１】
＜メモリコントローラを適用したシステム＞
以下、図８〜図１０を参照して、本発明のメモリコントローラを適用可能なレーザビームプリンタの構成について説明する。
【００７２】
図８は、図１に示したメモリコントローラ101cを適用可能なレーザビームプリンタ（以下、プリンタ）の構成を示すブロック図である。なお、図１と同一のものには同一の符号を付してある。ここでは印刷部がレーザビーム方式である場合を例にして説明する。しかしながら、本発明は、レーザビーム方式以外の電子写真方式（例えばLED方式）でも、液晶シャッタ方式、インクジェット方式、熱転写方式、昇華方式でもその他のプリント方式であっても適用可能である。
【００７３】
図８に示すように、1000はプリンタである。このプリンタ1000は、パーソナルコンピュータ等の情報処理装置としてのホストコンピュータ2000とネットワーク，USB等の通信線3000を介して接続され、印刷システムを構成する。
【００７４】
プリンタ1000において、1001はプリンタコントローラであり、本プリンタ全体の動作の制御を行う制御ユニットである。
【００７５】
プリンタコントローラ1001において、100はCPUであり、内蔵された不図示のROM，RAMを有し、ROMに格納された制御プログラムを実行することにより、この制御ユニット1001全体を制御している。
【００７６】
101はASIC（Application Specific Integrated Circuit）であり、ホストインタフェース制御部101a、CPUインターフェース制御部101b、メモリコントローラ101c、DMA制御部101d、データ伸張部101d、印刷部インタフェース制御部101f等を備える。
【００７７】
ホストインタフェース制御部101aは、通信線3000を通じてホストコンピュータ2000と印刷制御コマンドや印刷画像データ等のデータ送受信を制御する。
【００７８】
CPUインターフェース制御部101ｂは文字通りCPU100とのインターフェースを司るもので、CPU100からASIC101内部の不図示の制御レジスタやデータレジスタへのアクセス制御を行う。
【００７９】
メモリコントローラ101cは、DMA制御部101dと連動して動作し、前述のホストコンピュータ2000からの画像データ受信時には、該受信した画像データをSDRAM102に書き込み制御を行う。また、メモリコントローラ101cは、印刷時には、データ伸張部101eの要求に従い、SDRAM102から前記印刷画像データの読み出し制御を行う。
【００８０】
印刷部インターフェース制御部101fは、印刷部1200との制御信号のやり取りや印刷画像のシッピングを制御する。
【００８１】
以上のように構成された印刷システムにおいて、以下の図９に示すフローチャートを用いて、本実施形態のメモリコントローラ101cの動きを具体的に説明する。
【００８２】
図９は、本発明のメモリコントローラを適用可能なプリンタの印刷処理動作の一例を示すフローチャートである。
【００８３】
まず、プリンタ1000の電源が投入されると、CPU100はCPU100に内蔵された不図示のROMに格納されているプログラムを不図示のRAM上に読み出して実行することにより、本フローチャートに示す処理が開始される。
【００８４】
まず、ステップＳ３００において、CPU100は、ASIC10１の内部レジスタの初期化、また通信線3000を介してのホストコンピュータ2000とのコネクションの確立等、プリンタの初期化処理を行い、ホストコンピュータ2000からのデータ受信待機状態となる。
【００８５】
そして、ステップＳ３０１において、CPU100は、ホストコンピュータ2000からデータを受信したかどうかを判定し、受信データがないと判定した場合には、ステップをS301に処理を留め、受信データの監視を継続する。このとき、待機時間をカウントしておき、一定時間の経過を待ってスリープモード等の低消費電力モードに移行するようにしても良い。
【００８６】
なお、ホストコンピュータ2000では、ユーザの指示によって印刷の実行がなされると、プリンタドライバソフトウエアが起動され、アプリケーションソフトのグラフィックデータの解析、印刷イメージの生成が行われる。この後、印刷イメージは、バンドと呼ばれる短冊状の領域に区分けされ、データ圧縮が施される。
【００８７】
そして、通信線3000を介してプリンタ1000に対しデータ送信される。
【００８８】
プリンタ1000側では、ステップＳ３０１で、CPU100が、ホストコンピュータ2000からデータを受信したと判定した場合には、ステップＳ３０２に処理を移行させる。
【００８９】
そして、ステップＳ３０２において、CPU100は、ホストインタフェース制御部101ａを制御して受信データの先頭２バイトのデータ読み込みを行う。なお、受信されたデータは図１０に示される構成をとるように取り決められている。
【００９０】
図１０は、図８に示したホストコンピュータ2000から受信されたデータの構成を示す図である。
【００９１】
図１０に示すように、受信データの先頭２バイトはコマンド種別を表し、次に続く２バイトはコマンド長を表し、残りがデータ本体となっている。なお、コマンド長は、２バイトで表されるため、１データパケットは64KB未満である。なお、図１０に示したこのコマンド体系は１例であって、システムの構成によって変更しても差し支えない。
【００９２】
以下、図９のフローチャートの説明に戻る。
【００９３】
次に、ステップＳ３０３において、CPU100は、ステップＳ３０２で読み取ったコマンド種別を表す２バイトを判別する。コマンドの種別は、プリンタ制御コマンドと印字データコマンドに大きく分類され、それぞれのコマンド種別に応じた動作を行う。
【００９４】
次に、ステップＳ３０４において、ＣＰＵ100は、コマンド長を判別するためコマンド種別に続くコマンド長２バイトを受信データから読み込む。続くステップはコマンドによって異なる。
【００９５】
＜コマンドがプリンタ制御コマンドである場合＞
ステップＳ３０３で、CPU100が、コマンドの種別が、プリンタ制御コマンドであると判定した場合には、ステップＳ３０４の処理の後、ステップＳ３０５に処理を遷移させる。
【００９６】
次に、ステップＳ３０５において、CPU100は、前記コマンド長を表すカウント値からコマンド種別及びコマンド長の各２バイト（計４バイト）を引いた「カウント値−４」バイトの受信データ全てをホストインタフェース制御部101ａを制御して読み込む。
【００９７】
次に、ステップS３０６において、CPU100は、当該コマンドに対応した制御を実行し、ステップＳ３０７において、その実行ステータス（「OK」、「NG」等）を取得する。
【００９８】
次に、ステップＳ３０８において、CPU100は、ステップＳ３０７で取得した実行ステータスをホストコンピュータ2000に送信し、送信完了を待ってステップＳ３１６に処理を遷移させる。
【００９９】
ステップＳ３１６において、CPU100は、印刷終了か否かを判定し、印刷終了でないと判定した場合には、ステップＳ３０１に処理を戻し、次なるデータ受信を監視する。
【０１００】
一方、ステップＳ３１６で、CPU100が、印刷終了であると判定した場合には、本フローチャートの処理を終了する。
【０１０１】
＜コマンドが画像データコマンド（印字データコマンドに含まれる）である場合＞
また、ステップＳ３０３で、CPU100が、コマンドの種別が、印字データコマンドの画像データコマンドであると判定した場合には、ステップＳ３０４の処理の後、ステップＳ３０９に処理を遷移させる。
【０１０２】
次に、ステップＳ３０９において、CPU100は、前記コマンド長を表すカウント値からコマンド種別及びコマンド長の各２バイト（計４バイト）を引いた「カウント値−４」バイトの画像データを取得するため、前記カウント値分のデータ転送をDMA制御部101dに設定する。この設定を行うことで、DMA制御部101dが起動され、メモリコントローラ101cと連動してホストインタフェース制御部101ａで受信した画像データをSDRAM102の所定領域に格納される（Ｓ３１０；これはハードウエア実行のステップである）。そして、ハードウエア実行されるステップＳ３１０の処理が終了すると、ステップＳ３１６に処理を遷移させる。
【０１０３】
ここで、ステップＳ３１０に示すハードウエア実行ステップについて説明する。
【０１０４】
上述したように、DMA制御部101dにCPU100からカウント値がセットされると、DMA制御部101dが起動され、DMA制御部101dは、メモリコントローラ101cに対し、メモリ書き込み要求を発生させる。
【０１０５】
具体的には、図３において、アクセス要求信号REQが「1」、ライト/リードフラグが「1」、バースト長BLが「8」、アドレスA(21:1)には、不図示のライトアドレスカウンタからのアドレス値が入力された状態になっている。なお、SDRAM102は、リングメモリとして使用するため、ライトアドレスカウンタの初期値は「0」番地を示すアドレスとなっている。また、WD(15:0)にはホストインタフェース制御部101ａで受信した画像データが順次出力される。
【０１０６】
メモリコントローラ101cでは、上記ライト要求を受け付けると、図５に示したように、シーケンサ201が動作し、図６に示したようにSDRAM102に対する制御信号の状態を遷移させライト動作を行う。
【０１０７】
図６に示したタイミングチャートにおいて、ロウアドレスRA，カラムアドレスCA1，CA2は、第１回目のライトアクセス時には、RA=0000(８進数)、CA1=0007(８進数)、CA2=0006(８進数)となる。また、第２回目のライトアクセス時には、ロウアドレスRA，カラムアドレスCA1，CA2は、RA=0000(８進数)，CA1=0017(８進数)，CA2=0016(８進数)となる。このことは、先に説明したメモリコントローラ101cの動作で明らかである。
【０１０８】
以上のようにして、画像データの受信時には、SDRAM102に画像データが逐次、格納されていく。
【０１０９】
以下、図９のフローチャートの説明に戻る。
【０１１０】
＜コマンドが転送終了コマンド（印字データコマンドに含まれる）である場合＞
ステップＳ３０３で、CPU100が、コマンドの種別が、印字データコマンドの転送終了コマンドであると判定した場合には、ステップＳ３０４の処理の後、ステップＳ３１１に処理を遷移させる。
【０１１１】
ステップＳ３１１において、CPU100は、ステップS３０５と同様に「カウント−４」バイトの残りのデータを読み込む。
【０１１２】
次に、ステップＳ３１２において、CPU100は、印刷部1200に対し、印刷開始コマンドを送信し、印刷開始を指示する。印刷部1200では、前記印刷開始コマンドを受信すると、印刷プロセスを開始する。
【０１１３】
次に、ステップＳ３１３において、CPU100は、印刷に係わるデータ伸張部101e，印刷部インターフェース制御部101fに動作開始を指示する。この指示を行うことで、データ伸張部101e，印刷部インターフェース制御部101fが起動され、SDRAM102から印刷データが読み出され、伸張されて画像出力される（Ｓ３１４；これはハードウエア実行のステップである）。そして、ハードウエア実行されるステップＳ３１４の処理が終了すると、ステップＳ３１６に処理を遷移させる。
【０１１４】
ここで、ステップＳ３１４に示すハードウエア実行ステップについて説明する。
【０１１５】
データ伸張部101eからの指示を受けDMA制御部314は、データ伸張部101eにデータを入力するため、メモリコントローラ101cに対しリード要求を発生させる。
【０１１６】
具体的には、図３において、アクセス要求信号REQが「1」、ライト/リードフラグが「0」、バースト長BLが「8」、アドレスA(21:1)には、不図示のリードアドレスカウンタからのアドレス値が入力された状態になっている。なお、SDRAM102は、リングメモリとして使用するため、ライトアドレスカウンタの初期値は「0」番地を示すアドレスとなっている。
【０１１７】
メモリコントローラ101cでは、上記リード要求を受け付けると、図５に示したようにシーケンサ201が動作し、図７に示したようにSDRAM102に対する制御信号の状態を遷移させリード動作を行う。
【０１１８】
図７のタイミングチャートにおいて、ロウアドレスRA，カラムアドレスCAは、第１回目のリードアクセス時には、RA=0000(８進数)、CA=0000(８進数)となる。また、第２回目のリードアクセス時には、ロウアドレスRA，カラムアドレスCAは、RA=0000(８進数)，CA=0010(８進数)となる。このことは、先に説明したメモリコントローラ101cの動作で明らかである。
【０１１９】
以上のようにして、印刷開始指示がなされると、SDRAM102から逐次画像データが読み出され、データ伸張部に入力されていく。なお、ここで、画像データがホストコンピュータ2000で圧縮されてプリンタ1000に転送されるものとする。
【０１２０】
データ伸張部では、圧縮画像データから印刷イメージへの伸張が行われ、印刷イメージは、不図示のFIFOへ書き込まれる。続いて、印刷部インターフェース制御部内の画像シッピング回路が印刷部からの垂直同期信号を受け所定の上マージンを、また水平同期信号を受け、所定の左マージンをカウントした後、印刷イメージを印刷部に送出する。
【０１２１】
以下、図９のフローチャートの説明に戻る。
【０１２２】
＜コマンドはその他の印字データコマンドである場合＞
ステップＳ３０３で、CPU100が、コマンドの種別が、印字データコマンドのその他のコマンド（画像データコマンド，転送終了コマンド以外）であると判定した場合には、ステップＳ３０４，Ｓ３１１の処理の後、ステップＳ３１１に処理を遷移させる。
【０１２３】
ステップＳ３１５において、CPU100は、当該コマンドに対応した制御を実行し、ステップＳ３１６に処理を遷移させる。
【０１２４】
以上、説明したように、プリンタのコントローラに本実施形態のメモリコントローラ101を適用し、図１に示したような信号線の共有化を行う。この構成の場合、メモリコントローラのピン（端子）数を削減したにもかかわらず、SDRAM102の全アドレスに正常にライト/リードアクセスすることができる。
【０１２５】
近年、ホストコンピュータにて、印刷イメージを圧縮してプリンタに転送する技術が提案されている。このような圧縮印刷イメージを受信して印刷処理するプリンタにおけるメモリアクセスの種類を考えると、SDRAMを制御するために必要なピンのうち、DMAによる画像データ書き込み/読み込みがほとんど全てであると考えられる。
【０１２６】
よって、このようなプリンタに、アドレス/データバスをマルチプレクスして使用するメモリ制御サイクルを有する本実施形態のメモリコントローラを適用しても、大幅なアクセスサイクルの増大にはつながらない。このため、パフォーマンス劣化はあまり無いと考えられる。
【０１２７】
近年、このようなプリンタのコントローラコストの削減が求められているが、ＡＳＩＣ回路規模に対しピン数が多くなりピンネックでＡＳＩＣコストが下げられないでいた。しかし、上述したように、本実施形態のメモリコントローラ技術を適用することにより、プリンタのコントローラに用いるＡＳＩＣ回路のピン数削減が可能となる。即ち、ＡＳＩＣ単価の削減につながるという効果を奏する。
【０１２８】
実際、図１１に示した従来のメモリコントローラでは、必要なピン（端子）数が３７ピンであったのに対して、本実施形態のメモリコントローラ101cでは、必要なピン（端子）数が２４ピンまで削減されている。即ち、１３ピン削減されている。これにより、メモリコントローラを含むＡＳＩＣ回路の単価を大幅に削減することが可能となる。
【０１２９】
また、プリンタのみでなく、SDRAMを用いたデジタルシステム一般に本実施形態のメモリコントローラを適用可能である。
【０１３０】
以上示したように、SDRAMのアクセスを制御するメモリコントローラにおいて、アドレス／データを共有バスとして使用する構成とする。これにより、SDRAMへのアクセスに必要なピン数を削減する。なお、本実施形態のメモリコントローラでは、SDRAMのA(10)ピン，制御信号ピンと接続されるピン（端子）は、データ端子と共有化せず独立にする構成とする。これにより、メモリアクセスサイクルを短くすることが可能となる等の効果を奏する。
【０１３１】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０１３２】
また、図５〜図７に示したような、メモリアクセス制御を、ソフトウェア（プログラム）により実現するような構成も本発明に含まれるものである。即ち、ROM等の記録媒体に格納されるプログラムをコントローラが読み出して実行することにより、図３のシーケンサ201に対応する機能を実現する構成であってもよい。
【０１３３】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３４】
従って、シーケンサ201の機能を有していれば、プログラムの形態を問わない。
【０１３５】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３６】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のプログラムそのものを記憶媒体にダウンロードすることによっても供給できる。また、圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバやFTPサーバ等も本発明の請求項に含まれるものである。
【０１３７】
また、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布する。さらに、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。さらに、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１３８】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から排除するものではない。
【０１３９】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。
【０１４０】
さらに、上記実施形態内で示した各変形例，適用例も全て本発明に含まれるものである。
【０１４１】
以上示した構成により、端子数の削減によるコストダウン、SDRAMの任意のアドレスへの書き込み、パフォーマンスの劣化を抑えたメモリアクセスを実現した優れたメモリコントローラを提供することができる等の効果を奏する。
【図面の簡単な説明】
【０１４２】
【図１】本発明の一実施形態を示すメモリコントローラ及びSDRAMの構成を説明するブロック図である。
【図２】図１に示したSDRAMの概略構成の一例を示すブロック図である。
【図３】図１に示したメモリコントローラの内部構成を説明する回路ブロック図である。
【図４】図３に示した指定されるアドレス信号のデータ構成を示す図である。
【図５】図３に示したシーケンサによるメモリアクセス状態を説明する状態遷移図である。
【図６】図１に示したメモリコントローラにおけるメモリライト動作を説明するSDRAMアクセスタイミングチャートである。
【図７】図１に示したメモリコントローラにおけるメモリリード動作を説明するSDRAMアクセスタイミングチャートである。
【０１４３】
タイミングチャートである。
【図８】図１に示したメモリコントローラを適用可能なレーザビームプリンタの構成を示すブロック図である。
【図９】本発明のメモリコントローラを適用可能なプリンタの印刷処理動作の一例を示すフローチャートである。
【図１０】図８に示したホストコンピュータから受信されたデータの構成を示す図である。
【図１１】従来のSDRAMのメモリコントローラの構成を説明するブロック図である。
【符号の説明】
【０１４４】
１０１    メモリ制御回路
１０２      ＳＤＲＡＭ
２０１    シーケンサ
２０２    リードカラムアドレス発生器
２０３    ライトカラムアドレスとリードカラムアドレスを選択するセレクタ
２０４    ロウアドレスとカラムアドレスを選択するセレクタ
２０５    アドレスとライトデータを選択するセレクタ
【図１】
2007034470.tif 000003
【図２】
2007034470.tif 000004
【図３】
2007034470.tif 000005
【図４】
2007034470.tif 000006
【図５】
2007034470.tif 000007
【図６】
2007034470.tif 000008
【図７】
2007034470.tif 000009
【図８】
2007034470.tif 000010
【図９】
2007034470.tif 000011
【図１０】
2007034470.tif 000012
【図１１】
2007034470.tif 000013