優先判定回路を主体とした

デュアルポートメモリ設計方法の一例

 デュアルポートメモリ(以下DPMと称します)を使用するケースはかなり多いようですが、 意外にその設計方法について記述した解説書は少なく、まれにあったとしても元々DPM として作られた専用デバイスの紹介に過ぎない、お茶を濁す程度のものがほとんどのようです。

 かと言って、設計が簡単かというと、慣れないと完全に動作するものを設計するのは意外と手 こずるものです。筆者の知る従来から使用されている、言わば定石的な回路も確実には動くが 動作が遅く、満足の行かないものでした。

 以上の状況から、より良い方法を検討しました。ここでは汎用のSRAM (またはDRAM)を用いて確実かつ高速に動作するDPM設計方法で、現状で筆者がベスト と考えるものを、一例として述べます。とは言え、文章だけですのでヒント程度のものです。

 一般的なDPMの構成方法は次の2つです。

  (1)DPM専用デバイスによる
     長所  設計が簡単。
     短所  大容量の物が得難い。
         部品の継続入手性に不安がある。
         セカンドソースが得難い。

  (2)SRAM(またはDRAM)とPLDによる
     長短は専用デバイスと逆の関係

 筆者は余程の理由がなければ(2)の方法を採用します。

1.確実動作のポイント
 DPM制御回路を確実に動作させる最大のポイントは優先判定回路(アービタ)を 確実なものにする事です。

 2つのポートの何れに優先権があるかの判定には、例えばFF出力のQと*Qの両方をA、B各々に割り当てるのでなく、1本の信号Qだけを使用して、 A、B同時優先権要求時のFFの状態遷移途中のハザードによる誤動作を回避します。

 ここでは次の論理式を基本形として使用します。実際には個別の回路条件に合わせて 種々の形にアレンジできます。

 ポートA、Bの要求信号A、Bに対して、ポートAが優先時に論理1となる レジスタ(DFF)の入力信号をGETA.D、出力信号をGETA.Qとすると、

  GETA.D =  A & /B 
         #  A & GETA.Q
         # /B & GETA.Q

 動作は、一旦一方が優先権を得たら、それが優先権要求を落とし、他方から優先権要求があるまで 優先権を保持し続ける為のものです。

 この信号GETA.Qをアドレス、データライン、メモリリード/ライト信号制御の為のシーケンサ(順序回路)のステート遷移条件 に使用します。
 なお、上記論理式中のGETA.Qをシーケンサのステートに置き換えるとさらにスマートになります。


2.高速動作のポイント
 高速動作を追求すると、通常のメモリとして使用する場合と同じタイミングでアクセスするのが もっとも高速ということになります。

 その為に、一旦優先権を得たら、次のアクセスは通常のメモリをアクセスするのと同じコントロール信号 を使用してメモリアクセスします。
 これにより、DPMをDPMでない通常のメモリとして使用するのと 同じスピードでアクセスできるようになります。

 以上の方法を使用すると、一般的なマルチCPU間の通信の他にも、 高速A/D変換回路、D/A変換回路による波形発生器等にも容易に応用することができます。

 なお、基本的な制御だけであれば22V10クラスのPLD1個でも回路が組めます。また、CPLD のようにふんだんにレジスタが使用できるデバイスを使用できる場合は細かな制御ができるので、複雑、 高機能の回路が容易に実現できます。

 さらに詳細は特許公開公報 公開H07−200489「共有メモリ調停回路」を参照して下さい。

−−−−− 本ページはここまで −−−−−