以下に、図面を参照しながら本発明の実施の形態について説明する。各図面に示される同一または同等の構成要素、部材、処理、信号には、同一の符号を付するものとし、重複した説明は省略する。
実施の形態に係るSDRAM(Synchronous Dynamic Random Access Memory)のメモリコントローラでは、連続して発行されるリード/ライトコマンドの発行タイミングについて、TCCD(minimum Column to Column command Delay)に加えてプリアンブルの長さに基づく制限を課す。特に、先行するリード/ライトコマンドの発行タイミングと次のリード/ライトコマンドの発行要求の取得タイミングとの間隔がTCCDより大きいが、プリアンブルのサイクル数に満たない場合、メモリコントローラは次のリード/ライトコマンドの発行タイミングを遅らせる。これにより、連続して発行されるリード/ライトコマンドの発行タイミング同士の間隔を必要に応じて広げて、それらのコマンドの間に複数サイクルのプリアンブルを収容できるようになる。その結果、プリアンブルの長さが2サイクル以上に設定される場合にも対応可能なメモリコントローラが提供される。
図1は、実施の形態に係るメモリコントローラ202を備える印刷装置100のハードウェア構成を示す図である。印刷装置100は例えば複写機や複合機である。なお、以下では実施の形態に係るメモリコントローラ202が印刷装置100に搭載される場合について説明する。しかしながら、当該メモリコントローラ202はデジタルカメラ等の撮像装置やスマートフォン等の携帯端末などの電子機器一般に広く搭載されうることは、本明細書に触れた当業者には明らかである。
印刷装置100は、CPU101と、ネットワークI/F102と、SDRAM103と、HDD104と、エンジンI/F105と、ROM106と、プリンタエンジン107と、システムバス108と、操作部109と、メモリコントローラ202と、を備える。
CPU101は、システムバス108を介して印刷装置100の各部を制御する。CPU101は、例えば、HDD104に格納されたプログラムを実行することにより印刷装置100の機能(ソフトウェア構成)および処理を実現する。
SDRAM103は、印刷装置100の印刷動作における一時記憶領域およびワークメモリとして利用される同期型メモリ、特に同期型揮発性メモリである。メモリコントローラ202は、SDRAM103へのアクセスを制御するインタフェースである。メモリコントローラ202の構成や動作については後述する。HDD104は、大容量の記憶装置であり、CPU101により実行される各種制御プログラムを格納する。HDD104は、処理されるデータの一時的な記憶領域や蓄積印刷データの保存領域等としても利用される。また、ROM106は、印刷装置100の起動処理プログラムが格納された記憶装置である。
ネットワークI/F102は、外部ネットワークを介してホスト端末(ホストコンピュータ)等の他の装置と通信を行うインターフェースである。また、エンジンI/F105は、プリンタエンジン107と通信を行うとともに、プリンタエンジン107を制御する。プリンタエンジン107は、例えば電子写真技術やインクジェット画像形成技術を用いて画像をシート等の記録媒体に印刷する処理を行う(印刷処理を行う)とともに、フィニッシング処理(例えばステイプル)を行う。
操作部109は、印刷装置100の状態を表示したり、印刷装置100に対するユーザからの指示に関する入力を受け付けたりすることができるユーザインターフェースである。操作部109は、印刷内容を事前に確認するためのプレビュー画面を有し、プレビュー画面には、例えば、印刷対象の各ページの画像、および部数やページ数などの印刷内容が表示されうる。また、プレビュー画面には、例えば、ユーザからの指示入力が行われるように、タッチパネルなどが設けられてもよい。
図2は、図1のメモリコントローラ202の機能および構成を示すブロック図である。メモリコントローラ202は、メモリ204と電気的に接続される。メモリ204はSDRAM103であってもよい。メモリコントローラ202およびメモリ204はそれぞれ別個の半導体チップに設けられてもよいし、ひとつの半導体チップに設けられてもよい。あるいはまた、メモリ204はそれぞれが別個の半導体チップに設けられた複数のメモリであってもよい。
メモリ204は複数のバンクと各種デコーダと入出力センスアンプとデータバスバッファとを含む。各バンクでは、記憶素子であるDRAMセルがマトリクス状に配置される。メモリ204は公知のDRAMメモリデバイスであってもよい。特に、メモリ204はSDRAMのメモリデバイスであってもよい。メモリ204はDDR4またはLPDDR4に準拠するよう構成されてもよい。
メモリコントローラ202は、メモリ204にコマンドとアドレスとを提供することでメモリ204を制御する。メモリコントローラ202はメモリ204に書き込み用のデータを送信し、メモリ204から読み出されたデータを受信する。メモリコントローラ202およびメモリ204は、システムバス108から供給される共通のクロック信号に同期して動作する。メモリコントローラ202は、コマンド選択回路206と、タイミング制御回路208と、タイミング設定回路210と、出力アライン回路212と、DQS(データストローブ)処理回路214と、DQ(データ)処理回路216と、を有する。以下では、説明を簡略化するために、バンクアドレス以外のアドレス情報であるロウアドレスやカラムアドレスについての説明を省略する。
コマンド選択回路206は、CPU101などの印刷装置100の他の部材からコマンドの発行要求を取得する。コマンド選択回路206は、取得された発行要求が複数ある場合はそのなかから1つを選択し、取得された発行要求が1つの場合はその1つを選択する。コマンド選択回路206は、選択された発行要求に係るコマンドと該コマンドに関するバンクアドレスとを、タイミング制御回路208によって許可されるタイミングでメモリ204に対して発行する。したがって、コマンド選択回路206はコマンドの発行回路として機能する。特にコマンド選択回路206は、コマンドおよびバンクアドレスを出力アライン回路212に出力する。以下では、説明を簡略化するため、コマンドとしてアクティブコマンドとライトコマンド、リードコマンドを扱うものとする。
コマンド選択回路206は、CPU101からシステムバス108を介してACT_REQ信号とACT_BANK信号とRW_REQ信号とRW_DIR信号とRW_BANK信号とを受信する。コマンド選択回路206は、タイミング制御回路208から内部バス(不図示)を介してACT_OK_B0信号とACT_OK_B1信号とWR_OK_B0信号とWR_OK_B1信号とRD_OK_B0信号とRD_OK_B1信号とを受信する。コマンド選択回路206は、システムバス108を介してACT_ACK信号とRW_ACK信号とをCPU101に送信する。コマンド選択回路206は、内部バスを介してSEL_CMD信号とSEL_BANK信号とを出力アライン回路212、タイミング制御回路208に送信する。
ACT_REQ信号はアクティブコマンドの発行要求を示す信号である。コマンド選択回路206は、ACT_REQ信号によりアクティブコマンドの発行要求を取得する。アクティブコマンドの発行要求を取得したタイミングは、ACT_REQ信号がアサートされたタイミングである。ACT_BANK信号はアクティブ化する対象のバンクのバンクアドレスを示す信号である。ACT_ACK信号はアクティブコマンドの発行要求がコマンド選択回路206で選択されたことを示す信号である。
RW_REQ信号はライトコマンドまたはリードコマンドの発行要求を示す信号である。RW_DIR信号は1(またはハイレベル)ならばリードコマンド、0(またはローレベル)ならばライトコマンドを示す信号である。コマンド選択回路206は、RW_REQ信号およびRW_DIR信号によりライトコマンドまたはリードコマンドの発行要求を取得する。ライトコマンドまたはリードコマンドの発行要求を取得したタイミングは、RW_REQ信号がアサートされたタイミングである。RW_BANK信号はライトまたはリードする対象のバンクのバンクアドレスを示す信号である。RW_ACK信号はライトコマンドまたはリードコマンドの発行要求がコマンド選択回路206で選択されたことを示す信号である。
SEL_CMD信号は選択された発行要求に係るコマンドを示す信号である。コマンド選択回路206は、SEL_CMD信号によりコマンドをメモリ204に対して発行する。SEL_BANK信号は、SEL_CMD信号が示すコマンドに関するバンクアドレスを示す信号である。
タイミング制御回路208は、コマンド選択回路206におけるコマンド発行のタイミングを制御する。コマンド選択回路206における第1コマンドの発行タイミングTaと第1コマンドの次の第2コマンドの発行要求の取得タイミングTbとの間隔をNサイクルとする(Nは自然数)。第1コマンドの発行タイミングTaと第2コマンドの発行タイミングTcとの間隔をMサイクルとする(Mは自然数)。プリアンブルの長さをJサイクルとする。Jが2以上の場合、タイミング制御回路208は、NがK(Kは自然数)以下の場合はMがKとなるように、NがKより大きくかつL(Lは(K+J)以上の自然数)より小さい場合はMがL以上となるように、コマンド選択回路206を制御する。Jが1の場合、タイミング制御回路208はKより大きいNについてMがNとなるように、コマンド選択回路206を制御する。
タイミング制御回路208は、SEL_CMD信号およびSEL_BANK信号とタイミング設定回路210の出力とに基づいて、どのバンクに対するどのコマンドが発行してよい状態にあるかを示す制御信号を生成する。すなわち、タイミング制御回路208は、バンクごと、コマンドごとに、そのバンクに対するそのコマンドの発行の許否を示す制御信号を生成する。コマンド選択回路206は、コマンドの発行要求を取得してもそのコマンドについての制御信号がネゲートされている(例えば、ローレベルとなっている、0となっている)間はそのコマンドを発行しない。コマンド選択回路206は、そのコマンドの発行要求の取得タイミングの後の制御信号がアサートされる(例えば、ハイレベルとなる、1となる)タイミングでそのコマンドを発行する。
ACT_OK_B0信号、ACT_OK_B1信号は、メモリ204のバンク0、バンク1に対するアクティブコマンドが発行可能であるか否かをそれぞれ示す信号である。WR_OK_B0信号、WR_OK_B1信号は、バンク0、バンク1に対するライトコマンドが発行可能であるか否かをそれぞれ示す信号である。RD_OK_B0信号、RD_OK_B1信号は、バンク0、バンク1に対するリードコマンドが発行可能であるか否かをそれぞれ示す信号である。なお、実施の形態では例示的にバンク0およびバンク1に対するコマンドを例として説明するが、バンクの数に制限はない。
タイミング設定回路210は、メモリ204のタイミングパラメータを保持する回路である。本明細書では、説明を簡略化するために7つのタイミングパラメータが保持されるものとする。CL(Column Address Strobe Latency、CAS Latency)は、リードコマンドからデータが有効になるまでのサイクル数を示す。CWL(CAS Write Latency)は、ライトコマンドからデータが有効になるまでのサイクル数を示す。TRRD(Row to Row Delay)は、アクティブコマンドからアクティブコマンドまで待たなければならないサイクル数を示す。TRCD(Row Command Delay)は、アクティブコマンドからライトまたはリードコマンドまで待たなければならないサイクル数を示す。TCCDは、ライトまたはリードコマンドから次のライトまたはリードコマンドまで待たなければならないサイクル数を示す。TCCDは上述のKに対応する。TWPREは、ライト動作において書き込まれるデータに関連するデータストローブ信号(以下、DQS信号と称す)に現れるプリアンブルの長さすなわちサイクル数を示す。TRPREは、リード動作においてDQS信号に現れるプリアンブルの長さすなわちサイクル数を示す。
図3(a)、(b)は、図2のタイミング設定回路210に保持されるパラメータの例を示すデータ構造図である。図3(a)の例ではTWPREおよびTRPREはいずれも2サイクルに設定され、図3(b)の例ではTWPREおよびTRPREはいずれも1サイクルに設定されている。
図2に戻り、タイミング設定回路210に保持されるTWPRE、TRPREは、タイミング制御回路208によって参照されると共に、DQS信号が入力されるDQS処理回路214によっても参照される。タイミング制御回路208やDQS処理回路214以外の回路がタイミング設定回路210に保持される各パラメータを参照してもよい。
出力アライン回路212は、コマンド選択回路206からSEL_CMD信号およびSEL_BANK信号を受信し、これらの信号をクロック信号の立ち上がりエッジに対してセンタリングし、それぞれCMD信号、BANK信号としてメモリ204に出力する。
DQ処理回路216はメモリ204と複数ビットのデータ線(以下、DQ線と称す)で接続され、該DQ線を介してメモリ204とデータをやりとりする。リード動作において、DQ処理回路216は、DQS処理回路214により指定されるタイミングでDQ線のデータを取り込み、取り込んだデータを複数ビットのシステムデータ線DQTに出力する。システムデータ線DQTはシステムバス108に含まれてもよい。システムデータ線DQTに出力されたデータはCPU101等の印刷装置100の他の部材に入力される。ライト動作において、DQ処理回路216は、システムデータ線DQTから書き込むべきデータを取得し、取得されたデータをDQS処理回路214により指定されるタイミングでDQ線に出力する。
DQS処理回路214はメモリ204とDQS線で接続され、該DQS線を介してメモリ204とDQS信号をやりとりする。DQS処理回路214は、リード動作において、タイミング設定回路210に保持されるTRPREに基づいて、メモリ204から出力されたDQS信号を処理する。特にDQS処理回路214は、DQ処理回路216にDQ線からのデータ取り込みを指示するための第1指示信号INS1を、TRPREで指定される長さのプリアンブル期間が経過した後にDQS信号にエッジが現れるタイミングで生成する。DQS処理回路214は、ライト動作において、タイミング設定回路210に保持されるTWPREで指定される長さのプリアンブル期間を有するDQS信号を生成しメモリ204に出力する。特にDQS処理回路214は、DQ処理回路216にDQ線へのデータ出力を指示するための第2指示信号INS2を、生成されたDQS信号にエッジが現れるタイミングで生成する。
プリアンブル期間は、データの最初に同期して出力されるDQS信号の最初のエッジの1サイクル以上前からローまたはハイ出力を行う期間である。これにより、最初のエッジの前の電位が確定されるので、最初のエッジの振幅を確保することができる。DQS処理回路214は、リード動作において、TRPREにより指定される長さのプリアンブル期間の検出を行い、プリアンブル期間が検出されるとDQ処理回路216にデータの取り込みを開始させる。
図4(a)は、図2のタイミング制御回路208の構成を示す回路図である。タイミング制御回路208は、第1カウンタ回路402と、第2カウンタ回路404と、第3カウンタ回路406と、第4カウンタ回路408と、第1遅延回路410と、第5カウンタ回路412と、第2遅延回路414と、第6カウンタ回路416と、比較回路群と、ANDゲート群と、を含む。
第1カウンタ回路402は、アクティブコマンドを起点としてTRRDをカウントし、カウント値TRRD_CNTを第1比較回路418および第2比較回路420に出力する。第1カウンタ回路402は同期2進ダウンカウンタである。第1カウンタ回路402は、第15比較回路456と、第1減算回路458と、減算・ホールド回路460と、第1セレクタ462と、第1レジスタ464と、を有する。第15比較回路456はSEL_CMD信号を受信し、該信号がアクティブコマンドを表す場合は「1」、そうでない場合は「0」となる信号を第1セレクタ462の制御端子に出力する。第1減算回路458はタイミング設定回路210からデジタル値であるTRRDを取得し、取得されたTRRDから1を減じたデジタル値を第1セレクタ462に出力する。減算・ホールド回路460は第1レジスタ464が出力するカウント値TRRD_CNTを取得し、取得されたTRRD_CNTが0より大きい場合は、TRRD_CNTから1を減じたデジタル値を第1セレクタ462に出力する。減算・ホールド回路460は、TRRD_CNTが0の場合は0を第1セレクタ462に出力する。第1セレクタ462は、制御端子に入力される第15比較回路456からの信号が「1」の場合は第1減算回路458から出力されたデジタル値を、「0」の場合は減算・ホールド回路460から出力されたデジタル値を、選択する。第1セレクタ462は、選択されたデジタル値を第1レジスタ464に出力する。第1レジスタ464はクロック信号に同期して動作し、クロック信号に立ち上がりエッジが現れるタイミングで第1セレクタ462から出力されるデジタル値を取り込み、取り込まれたデジタル値をカウント値TRRD_CNTとして出力する。
図4(b)は、減算・ホールド回路460の構成を示す回路図である。減算・ホールド回路460は、第21比較回路455と、第3セレクタ457と、第2減算回路459と、を有する。第21比較回路455は、TRRD_CNTが「0」の場合は「1」、そうでない場合は「0」となる信号を第3セレクタ457の制御端子に出力する。第2減算回路459は、TRRD_CNTから1を減じたデジタル値を第3セレクタ457に出力する。第3セレクタ457は、制御端子に入力される第21比較回路455からの信号が「1」の場合はTRRD_CNTを、「0」の場合は第2減算回路459から出力されたデジタル値を、選択する。第3セレクタ457は、選択されたデジタル値を第1セレクタ462に出力する。
第2カウンタ回路404の減算・ホールド回路461、第3カウンタ回路406の減算・ホールド回路463、第4カウンタ回路408の減算・ホールド回路465、第5カウンタ回路412の減算・ホールド回路467、第6カウンタ回路416の減算・ホールド回路469、はそれぞれ図4(b)に相当する。減算・ホールド回路461の入力はTRCD_CNT_B0、減算・ホールド回路463の入力はTRCD_CNT_B1、減算・ホールド回路465の入力はTCCD_CNT、減算・ホールド回路467の入力はTWPRE_CNT、減算・ホールド回路469の入力はTRPRE_CNTである。
図4(a)に戻り、第1比較回路418は、入力されたカウント値TRRD_CNTに基づいてACT_OK_B0信号を生成し、コマンド選択回路206に出力する。第1比較回路418は、カウント値TRRD_CNTが「0」の場合はACT_OK_B0信号のレベルを「1」とし、そうでない場合はACT_OK_B0信号のレベルを「0」とする。第2比較回路420は第1比較回路418と同様に構成され、ACT_OK_B0信号と同様に変化するACT_OK_B1信号を生成する。各バンクに対してアクティブコマンドを発行するためには、TRRDを満たす必要がある。したがって、ACT_OK_B0信号はTRRD_CNTが「0」であるときにアサートされる。同様に、ACT_OK_B1信号は、TRRD_CNTが「0」であるときにアサートされる。これにより、第1カウンタ回路402は、TRRDに基づくアクティブコマンドの発行の許否を決定する回路を構成する。
第2カウンタ回路404は、バンク0に対するアクティブコマンドを起点としてTRCDをカウントし、カウント値TRCD_CNT_B0を第3比較回路422および第6比較回路428に出力する。第2カウンタ回路404は、セレクタの制御端子に入力される信号およびTRRDの代わりにTRCDを取得する点を除いて、第1カウンタ回路402と同様の構成を有する。第2カウンタ回路404は第16比較回路466と第17比較回路468と第5ANDゲート470とを有する。第16比較回路466はSEL_CMD信号を受信し、該信号がアクティブコマンドを表す場合は「1」、そうでない場合は「0」となる信号を第5ANDゲート470に出力する。第17比較回路468はSEL_BANK信号を受信し、該信号が「0」の場合は「1」、そうでない場合は「0」となる信号を第5ANDゲート470に出力する。第5ANDゲート470は第16比較回路466の出力と第17比較回路468の出力との論理積をセレクタの制御端子に出力する。第5ANDゲート470の出力信号は、SEL_CMD信号がアクティブコマンドを表し、かつ、SEL_BANK信号が「0」の場合に「1」となり、それ以外の場合は「0」となる。第3比較回路422および第6比較回路428はいずれも第1比較回路418と同様に構成される。
第3カウンタ回路406は、バンク1に対するアクティブコマンドを起点としてTRCDをカウントし、カウント値TRCD_CNT_B1を第9比較回路434および第12比較回路442に出力する。第3カウンタ回路406は、第17比較回路468の代わりにSEL_BANK信号が「1」の場合に「1」となる信号を生成する比較回路を用いる点を除いて、第2カウンタ回路404と同様の構成を有する。第9比較回路434および第12比較回路442はいずれも第1比較回路418と同様に構成される。
第4カウンタ回路408は、ライトコマンドまたはリードコマンドを起点としてTCCDをカウントし、カウント値TCCD_CNTを第4比較回路424、第7比較回路430、第10比較回路436および第13比較回路444に出力する。第4カウンタ回路408は、セレクタの制御端子に入力される信号およびTRRDの代わりにTCCDを取得する点を除いて、第1カウンタ回路402と同様の構成を有する。第4カウンタ回路408は第18比較回路472と第19比較回路474と第1ORゲート476とを有する。第18比較回路472はSEL_CMD信号を受信し、該信号がリードコマンドを表す場合は「1」、そうでない場合は「0」となる信号を第1ORゲート476に出力する。第19比較回路474はSEL_CMD信号を受信し、該信号がライトコマンドを表す場合は「1」、そうでない場合は「0」となる信号を第1ORゲート476に出力する。第1ORゲート476は第18比較回路472の出力と第19比較回路474の出力との論理和をセレクタの制御端子に出力する。第1ORゲート476の出力信号は、SEL_CMD信号がリードコマンドまたはライトコマンドを表す場合に「1」となり、それ以外の場合は「0」となる。第4比較回路424、第7比較回路430、第10比較回路436および第13比較回路444はいずれも第1比較回路418と同様に構成される。
第1遅延回路410はライトコマンドをTCCD分遅延させるための回路である。第1遅延回路410は第20比較回路478とDフリップフロップ(以下、DFFと称す)群480と第2セレクタ490とを有する。DFF群480のDFFの数Wは設定可能なTCCDの最大値以上の自然数である。第20比較回路478はSEL_CMD信号を受信し、該信号がライトコマンドを表す場合は「1」、そうでない場合は「0」となる信号をDFF群480に出力する。DFF群480は直列に接続されたW個のDFFを有する。最初のDFFはクロック信号の立ち上がりエッジに同期して第20比較回路478の出力信号を取り込み、取り込まれた信号を次のDFFおよび第2セレクタ490に出力する。次以降のDFFについても同様に構成される。第2セレクタ490の制御端子にはTCCDが入力される。第2セレクタ490は、DFF群480に含まれるDFFのうちTCCD番目のDFFの出力信号を選択し、選択された出力信号をSEL_WR_DELAY信号として第5カウンタ回路412に出力する。
第5カウンタ回路412は、ライトコマンドをTCCD遅延させたものを起点としてTWPREをカウントし、カウント値TWPRE_CNTを第5比較回路426および第11比較回路440に出力する。第5カウンタ回路412は、セレクタの制御端子に入力される信号およびTRRDの代わりにTWPREを取得する点を除いて、第1カウンタ回路402と同様の構成を有する。第5カウンタ回路412のセレクタの制御端子には、第1遅延回路410の第2セレクタ490から出力されるSEL_WR_DELAY信号が入力される。第5比較回路426および第11比較回路440はいずれも第1比較回路418と同様に構成される。
第2遅延回路414はリードコマンドをTCCD分遅延させるための回路である。第2遅延回路414は、第20比較回路478の代わりにSEL_CMD信号がリードコマンドを表す場合に「1」となる信号を生成する比較回路を用いる点を除いて、第1遅延回路410と同様の構成を有する。第2遅延回路414はSEL_RD_DELAY信号を出力する。
第6カウンタ回路416は、リードコマンドをTCCD遅延させたものを起点としてTRPREをカウントし、カウント値TRPRE_CNTを第8比較回路432および第14比較回路446に出力する。第6カウンタ回路416は、セレクタの制御端子に入力される信号およびTRRDの代わりにTRPREを取得する点を除いて、第1カウンタ回路402と同様の構成を有する。第6カウンタ回路416のセレクタの制御端子には、第2遅延回路414から出力されるSEL_RD_DELAY信号が入力される。第8比較回路432および第14比較回路446はいずれも第1比較回路418と同様に構成される。
第1ANDゲート448は、第3比較回路422、第4比較回路424、第5比較回路426のそれぞれから出力される信号の論理積をWR_OK_B0信号としてコマンド選択回路206に出力する。第2ANDゲート450は、第6比較回路428、第7比較回路430、第8比較回路432のそれぞれから出力される信号の論理積をRD_OK_B0信号としてコマンド選択回路206に出力する。第3ANDゲート452は、第9比較回路434、第10比較回路436、第11比較回路440のそれぞれから出力される信号の論理積をWR_OK_B1信号としてコマンド選択回路206に出力する。第4ANDゲート454は、第12比較回路442、第13比較回路444、第14比較回路446のそれぞれから出力される信号の論理積をRD_OK_B1信号としてコマンド選択回路206に出力する。
各バンクに対してライトコマンドを発行するためには、TRCD、TCCD、TWPREを満たす必要がある。したがって、WR_OK_B0信号は、TRCD_CNT_B0、TCCD_CNT、TWPRE_CNTがいずれも「0」であるときにアサートされる。同様に、WR_OK_B1信号は、TRCD_CNT_B1、TCCD_CNT、TWPRE_CNTがいずれも「0」であるときにアサートされる。これにより、第2カウンタ回路404、第3カウンタ回路406、第4カウンタ回路408、第1遅延回路410および第5カウンタ回路412は、TRCD、TCCD、TWPREに基づくライトコマンドの発行の許否を決定する回路を構成する。
特に第4カウンタ回路408は先行するライトコマンドの発行タイミングの(TCCD−1)サイクル後のタイミングまではWR_OK_B0信号およびWR_OK_B1信号のアサートを禁止する禁止回路である。第1遅延回路410および第5カウンタ回路412は、先行するライトコマンドの発行タイミングの(TCCD+1)サイクル後のタイミングから(TCCD+TWPRE−1)サイクル後のタイミングまではWR_OK_B0信号およびWR_OK_B1信号のアサートを禁止する禁止回路である。ここで、先行するライトコマンドの発行タイミングのTCCDサイクル後のタイミングにおいてはWR_OK_B0信号およびWR_OK_B1信号はアサートされうる。例えば、TWPREが2サイクルの場合、TCCDサイクル後のタイミングはアサートが許可され、(TCCD+1)サイクル後のタイミングはアサートが禁止され、(TCCD+2)サイクル後のタイミング以降はアサートが許可される。
各バンクに対してリードコマンドを発行するためには、TRCD、TCCD、TRPREを満たす必要がある。したがって、RD_OK_B0信号は、TRCD_CNT_B0、TCCD_CNT、TRPRE_CNTがいずれも「0」であるときにアサートされる。同様に、RD_OK_B1信号は、TRCD_CNT_B1、TCCD_CNT、TRPRE_CNTがいずれも「0」であるときにアサートされる。これにより、第2カウンタ回路404、第3カウンタ回路406、第4カウンタ回路408、第2遅延回路414および第6カウンタ回路416は、TRCD、TCCD、TRPREに基づくリードコマンドの発行の許否を決定する回路を構成する。
特に第4カウンタ回路408はリードコマンドの発行タイミングの(TCCD−1)サイクル後のタイミングまではRD_OK_B0信号およびRD_OK_B1信号のアサートを禁止する禁止回路である。第2遅延回路414および第6カウンタ回路416は、リードコマンドの発行タイミングの(TCCD+1)サイクル後のタイミングから(TCCD+TRPRE−1)サイクル後のタイミングまではRD_OK_B0信号およびRD_OK_B1信号のアサートを禁止する禁止回路である。
以上の構成によるメモリコントローラ202の動作を説明する。
図5は、図1のメモリコントローラ202の動作波形を示すタイミングチャートである。ここでは、タイミング設定回路210に保持されるパラメータの値として図3(a)に示される値が使用され、(K=)TCCD=バースト長=4サイクルである場合が説明される。特にTWPRE、TRPREはいずれも2サイクルに設定される。CLKはクロック信号を示す。WR_OK_TRCD_B0は第3比較回路422の出力信号を示す。WR_OK_TCCD_B0は第4比較回路424の出力信号を示す。WR_OK_TWPRE_B0は第5比較回路426の出力信号を示す。WR_OK_TRCD_B1は第9比較回路434の出力信号を示す。WR_OK_TCCD_B1は第10比較回路436の出力信号を示す。WR_OK_TWPRE_B1は第11比較回路440の出力信号を示す。
時刻T1において、コマンド選択回路206はバンク0に対するアクティブコマンドの発行要求を取得し、取得された発行要求に応じてバンク0に対するアクティブコマンドを発行する。バンク0に対するアクティブコマンドの発行に応じて、時刻T2においてTRRDおよびバンク0についてのTRCDのカウントが開始される。バンク0およびバンク1に対するアクティブコマンドの発行が禁止され、バンク0に対するライトコマンドの発行も禁止される。また、時刻T2において、コマンド選択回路206はバンク0に対するライトコマンドの発行要求を取得する。また、時刻T2において、バンク0に対するアクティブコマンドが、CLKのエッジにセンタリングされた状態で出力アライン回路212からメモリ204に出力される。
時刻T5において、TRRDのカウントが終了し、バンク0およびバンク1に対するアクティブコマンドの発行が許可される。合わせてコマンド選択回路206はバンク1に対するアクティブコマンドの発行要求を取得し、取得された発行要求に応じてバンク1に対するアクティブコマンドを発行する。バンク1に対するアクティブコマンドの発行に応じて、時刻T6においてTRRDおよびバンク1についてのTRCDのカウントが開始される。バンク0およびバンク1に対するアクティブコマンドの発行が禁止され、バンク1に対するライトコマンドの発行も禁止される。また、時刻T6(=Ta)においてバンク0についてのTRCDのカウントが終了し、バンク0に対するライトコマンドの発行が許可される。合わせてコマンド選択回路206は時刻T2において取得した発行要求に応じてバンク0に対するライトコマンドを選択し、発行する。また、時刻T6において、バンク1に対するアクティブコマンドが、CLKのエッジにセンタリングされた状態で出力アライン回路212からメモリ204に出力される。
バンク0に対するライトコマンドの発行に応じて、時刻T7においてTCCDのカウントが開始される。バンク0およびバンク1に対するライトコマンドの発行が禁止される。また、時刻T7(=Tb)においてコマンド選択回路206はバンク1に対するライトコマンドの発行要求を取得する。また、時刻T7において、バンク0に対するライトコマンドが、CLKのエッジにセンタリングされた状態で出力アライン回路212からメモリ204に出力される。
時刻T10(=Tc)において、TCCDのカウントが終了し、かつバンク1についてのTRCDのカウントが終了し、バンク0およびバンク1に対するライトコマンドの発行が許可される。合わせてコマンド選択回路206は時刻T7において取得した発行要求に応じてバンク1に対するライトコマンドを選択し、発行する。
時刻T11において、バンク1に対するライトコマンドが、CLKのエッジにセンタリングされた状態で出力アライン回路212からメモリ204に出力される。また、時刻T10においてTCCDのカウントが終了したことを受けてTWPREのカウントが開始されるが、バンク1に対するライトコマンドは既に発行されているので、TWPREによる影響はない。また、時刻T11において、バンク0に対するライトコマンドに対応するDQS信号のプリアンブル期間が始まる。
メモリ204にバンク0に対するライトコマンドが入力された時刻T7からCWL=6サイクル後の時刻T13において、DQS信号のプリアンブル期間が終了する。以後、DQS信号のエッジに同期する形でDQ線に、メモリ204のバンク0に書き込まれるべきデータが現れる。メモリ204にバンク1に対するライトコマンドが入力された時刻T11からCWL=6サイクル後の時刻T17は、バースト長=4サイクルであることから、バンク0に書き込まれるべきデータの出力が終わるタイミングと一致する。したがって、データ間にアイドルサイクルは生じない。時刻T17以降、DQS信号のエッジに同期する形でDQ線に、バンク1に書き込まれるべきデータが現れる。このように、時刻T17の前後でDQ線上のデータは途切れること無く連続的に出力される。この場合、DQS処理回路214はバンク1に対するライトコマンドに対応するプリアンブル期間の作成をスキップする。TCCD=バースト長に設定されていると、MがTCCDである場合に、始めのライトコマンドの発行に応じてDQ線に現れるデータと次のライトコマンドの発行に応じてDQ線に現れるデータとが連続する。
図5において、2つのライドコマンドがTCCDの間隔でメモリ204に発行されている。また、N=Tb−Ta=1、M=Tc−Ta=4であり、N<K(=TCCD=4)、M=K=4となっている。
図6は、図1のメモリコントローラ202の動作波形を示すタイミングチャートである。パラメータの値等の前提条件は図5のものと同じである。図5では、バンク0に対するライトコマンドの発行に続けてバンク1に対するライトコマンドの発行要求が取得される。これに対し図6では、バンク0に対するライトコマンドの発行タイミング(T6)から(TCCD+1)サイクル後のタイミング(T11)でバンク1に対するライトコマンドの発行要求が取得される。
時刻T10において、TCCDのカウントが終了し、かつバンク1についてのTRCDのカウントが終了し、バンク0およびバンク1に対するライトコマンドの発行が許可される。
TCCDのカウントが終了したことを受けて、時刻T11においてTWPREのカウントが開始される。バンク0およびバンク1に対するライトコマンドの発行が再び禁止される。また、時刻T11(=Tb)において、コマンド選択回路206はバンク1に対するライトコマンドの発行要求を取得するが、該コマンドの選択はTWPREにより禁止されているので、該コマンドは発行されない。具体的には、時刻T11において、WR_OK_TWPRE_B1は「0」なので、WR_OK_B1は「0」となっておりライトコマンドの選択・発行は許可されない。
時刻T12(=Tc)において、TWPREのカウントが終了し、バンク0およびバンク1に対するライトコマンドの発行が許可される。合わせてコマンド選択回路206は時刻T11において取得した発行要求に応じてバンク1に対するライトコマンドを選択し、発行する。時刻T13において、バンク1に対するライトコマンドが、CLKのエッジにセンタリングされた状態で出力アライン回路212からメモリ204に出力される。その結果、2つのライトコマンドが(TCCD+2)の間隔でメモリ204に発行される。
メモリ204にバンク0に対するライトコマンドが入力された時刻T7からCWL=6サイクル後の時刻T13において、DQS信号のプリアンブル期間が終了する。以後、DQS信号のエッジに同期する形でDQ線に、メモリ204のバンク0に書き込まれるべきデータが4サイクル分現れる。メモリ204にバンク1に対するライトコマンドが入力された時刻T13からCWL=6サイクル後の時刻T19において、DQ線にバンク1に書き込まれるべきデータが現れ始める。バンク0に書き込まれるべきデータの出力が終わる時刻T17とバンク1に書き込まれるべきデータの出力が始まる時刻T19との間隔は2サイクルである。この期間はバンク1に対するライトコマンドに対応するプリアンブル期間(TWPRE=2)として使用される。DQS信号は、時刻T17から時刻T19までのプリアンブル期間においてローレベルとなり、このプリアンブル期間はアイドルサイクルとして機能する。
図6において、N=Tb−Ta=5、M=Tc−Ta=6であり、K(=4)<N<K+2、M=K+2となっている。
図7は、図1のメモリコントローラ202の動作波形を示すタイミングチャートである。ここでは、タイミング設定回路210に保持されるパラメータの値として図3(b)に示される値が使用され、(K=)TCCD=バースト長=4サイクルである場合が説明される。特にTWPRE、TRPREはいずれも1サイクルに設定される。図7では図6の場合と同様に、バンク0に対するライトコマンドの発行タイミング(T6)から(TCCD+1)サイクル後のタイミング(T11)でバンク1に対するライトコマンドの発行要求が取得される。
時刻T10において、TCCDのカウントが終了し、かつバンク1についてのTRCDのカウントが終了し、バンク0およびバンク1に対するライトコマンドの発行が許可される。TWPREは1なので、TWPREのカウントは不活性化される。TWPRE_CNTは「0」に固定され、TWPREはコマンド発行の許否の決定に影響を与えない。
時刻T11(=Tb=Tc)において、コマンド選択回路206はバンク1に対するライトコマンドの発行要求を取得し、取得された発行要求に応じてバンク1に対するライトコマンドを発行する。時刻T12において、バンク1に対するライトコマンドが、CLKのエッジにセンタリングされた状態で出力アライン回路212からメモリ204に出力される。その結果、2つのライトコマンドが(TCCD+1)の間隔でメモリ204に発行される。
メモリ204にバンク0に対するライトコマンドが入力された時刻T7からCWL=6サイクル後の時刻T13において、DQS信号のプリアンブル期間(TWPRE=1)が終了する。以後、DQS信号のエッジに同期する形でDQ線に、メモリ204のバンク0に書き込まれるべきデータが4サイクル分現れる。メモリ204にバンク1に対するライトコマンドが入力された時刻T12からCWL=6サイクル後の時刻T18において、DQ線にバンク1に書き込まれるべきデータが現れ始める。バンク0に書き込まれるべきデータの出力が終わる時刻T17とバンク1に書き込まれるべきデータの出力が始まる時刻T18との間隔は1サイクルである。この期間はバンク1に対するライトコマンドに対応するプリアンブル期間(TWPRE=1)として使用される。DQS信号は、時刻T17から時刻T18までのプリアンブル期間においてローレベルとなり、このプリアンブル期間はアイドルサイクルとして機能する。
図7において、N=Tb−Ta=5、M=Tc−Ta=5であり、N>K(=4)、M=Nとなっている。
図8は、図1のメモリコントローラ202における一連の処理を示すフローチャートである。S802では、コマンド選択回路206は第1コマンドを発行する。S804では、コマンド選択回路206は第2コマンドの発行要求を取得する。第1コマンドおよび第2コマンドは、リードコマンドまたはライトコマンドである。S806では、タイミング制御回路208は第1コマンドの発行タイミングと第2コマンドの発行要求の取得タイミングとの間隔(=N)をTCCDと比較する。NがTCCD以下の場合、S816でコマンド選択回路206は第1コマンドの発行タイミングからTCCD後のタイミングで第2コマンドを発行する。NがTCCDより大きい場合、S808でタイミング制御回路208は設定されたプリアンブルの長さ(=J)が2以上であるか否かを判定する。Jが1の場合、S812でコマンド選択回路206は、第2コマンドの発行要求の取得に合わせて第2コマンドを発行する。Jが2以上の場合、S810でタイミング制御回路208はNを(TCCD+J)と比較する。Nが(TCCD+J)以上の場合、処理はS812に進む。Nが(TCCD+J)より小さい場合、S814でコマンド選択回路206は第1コマンドの発行タイミングから(TCCD+J)後のタイミングで第2コマンドを発行する。
本実施の形態に係るメモリコントローラ202によると、プリアンブル期間が複数サイクルに設定されている場合でもコマンド発行のタイミングを適切に制御することができる。特に近年のSDRAMの高速化の流れからプリアンブル期間が長くなる傾向にあるなか、そのような長いプリアンブル期間にも従来の1サイクルのプリアンブル期間にも対応可能なSDRAM103のメモリコントローラ202が提供される。
また、本実施の形態に係るメモリコントローラ202では、コマンドの発行が連続して要求される場合はデータが連続して入出力されるよう、かつ、コマンドの発行要求の間にある程度の間隔がある場合は複数サイクルのプリアンブル期間が確保されるように、コマンドの発行が制御される。したがって、データの連続入出力機能と複数サイクルのプリアンブル期間との両立が可能となる。
また、本実施の形態に係るメモリコントローラ202によると、第1遅延回路410、第5カウンタ回路412、第2遅延回路414、第6カウンタ回路416の作用により、TCCD満了の後からさらにプリアンブル期間が経過するまでは次のコマンドの発行が禁止される。これにより、複数サイクルのプリアンブル期間を確保することができる。
また、本実施の形態に係るメモリコントローラ202によると、プリアンブル期間が複数サイクルである場合に、一時的にコマンド発行を禁止するための信号を追加することで、プリアンブル期間を考慮したコマンドの発行タイミングを容易に制御できる。
以上、実施の形態に係るメモリコントローラ202の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
実施の形態では、主に図5、図6、図7を通じてライトコマンドの発行が連続して要求される場合について説明したが、これに限られない。例えば、リードコマンドの発行が連続して要求される場合や、リードコマンドの次にライトコマンドが要求される場合や、ライトコマンドの次にリードコマンドが要求される場合や、より一般的に同期型メモリの動作に係るコマンドの発行と次のコマンドの要求との関係に、本実施の形態の技術的思想を適用できる。
実施の形態では、コマンド選択回路206がシステムバス108を介して各種信号を送受信する場合について説明したが、これに限られない。例えばシステムバスから受信した信号からメモリコントローラ内部で生成した各種信号をコマンド選択回路が受信してもよい。送信についても同様である。
実施の形態では、システムデータ線DQTをリードとライトとで共有にする場合について説明したが、これに限られず、リードとライトとでそれぞれ別のシステムデータ線を設けてもよい。