インテルのみ表示可能 — GUID: eis1414476978730
Ixiasoft
インテルのみ表示可能 — GUID: eis1414476978730
Ixiasoft
4.3.13. デザイン例
このデザイン例の DCFIFO の設定を取得するには、デザインファイル (dcfifo8x32.v) のパラメーターの設定を参照してください。
以降のセクションでは個別のシミュレーション波形が提供されており、書き込み制御ロジックおよび読み出し制御ロジックで、DCFIFO から受信する信号に対してコントロール信号を生成する方法を説明しています。
- バイナリー形式の信号値: reset、trclk、fifo_wrreq、fifo_wrfull
- HEX 形式の信号値: rom_addr、rom_out、fifo_in
状態 | 詳細 |
---|---|
IDLE | 10ns に達する前に reset 信号が High になり、書き込みコントローラーが IDLE 状態になっています。IDLE 状態時に、書き込みコントローラーは fifo_wrreq 信号を Low に駆動し、rom_addr=00 からのデータの読み出しを要求します。ROM はレジスターされない出力を備えるようにコンフィグレーションされているため、rom_out 信号は、リセットに関係なく rom_addr 信号からのデータをすぐに表示します。rom_out 信号が DCFIFO のレジスターされる入力ポートである fifo_in 信号に直接接続されているため、レイテンシーが短縮します。この場合、データ (0000000000000000000000000000000000000000000000000000000000000001) は常に安定しています。また、WRITE 状態で fifo_wrreq 信号が High になり、DCFIFO に書き込まれるまで保留されます。 |
WRITE | リセット信号のデアサート後、fifo_wrfull 信号が Low の場合に、書き込みコントローラーは IDLE 状態から WRITE 状態に移行します。WRITE 状態では、書き込みコントローラーは fifo_wrreq 信号を High に駆動し、DCFIFO への書き込み操作を要求します。データは、DCFIFO に組み込まれている ECC ブロックを介してエンコードされます。rom_addr 信号は変化しないため (00)、DCFIFO が次の立ち上がりクロックエッジで実際にデータを書き込む前に、データは少なくとも 1 クロックサイクル安定しています。 |
INCADR | rom_addr 信号が ff に達していない (つまり、ROM からの最後のデータが読み出されていない) 場合に、書き込みコントローラーは WRITE 状態から INCADR 状態に移行します。INCADR 状態では、書き込みコントローラーは fifo_wrreq 信号を Low に駆動し、rom_addr 信号を 1 増やします (00 から 01)。 |
- | fifo_wrfull 信号が Low で、rom_addr 信号が ff に達していない場合は、IDLE 状態と WRITE 状態で説明されている状態遷移が続きます。 |
状態 | 詳細 |
---|---|
IDLE | 35ns に達する前に、読み出しコントローラーは IDLE 状態になっています。これは、リセット信号が Low であっても (波形には示されていません)、fifo_rdempty 信号が High であるために起こります。IDLE 状態の際は、ram_addr = ff であり、INCADR 状態での RAM アドレスの増分に対応します。そのため、最初に読み出されるデータは、WRITE 状態の際に ram_addr = 00 に格納されます。 |
INCADR | fifo_rdempty 信号が Low の場合に、読み出しコントローラーは IDLE 状態から INCADR 状態に移行します。INCADR 状態では、読み出しコントローラーは fifo_rdreq 信号を High に駆動し、DCFIFO からの読み出し操作を要求します。データはデコードされ、eccstatus ではデータのステータスが示されます。エラーが検出されなかった場合は 00、シングルビット・エラーが検出されて訂正された場合は 10、訂正不可能なエラーの場合は 11 として示されます。ram_addr 信号が 1 増加するため (ff から 00)、読み出しデータを ram_addr = 00 で RAM に書き込むことができます。 |
WRITE | INCADR 状態から、読み出しコントローラーは常に次の立ち上がりクロックエッジで WRITE 状態に移行します。WRITE 状態では、ram_wren 信号を High に駆動し、RAM へのデータ書き込みを ram_addr = 00 で可能にします。同時に、読み出しコントローラーは ram_rden 信号を High に駆動するため、新しく書き込まれたデータが次の立ち上がりクロックエッジで q に出力されます。また、word_count 信号を 1 に引き上げ、DCFIFO から正常に読み出されたワード数を示します。 |
-- | fifo_rdempty 信号が Low の場合は、INCADR 状態と WRITE 状態で説明されている状態遷移が続きます。 |
状態 | 詳細 |
---|---|
INCADR | 書き込みコントローラーが INCADR 状態の際に fifo_wrfull 信号がアサートされると、書き込みコントローラーは次の立ち上がりクロックエッジで WAIT 状態に移行します。 |
WAIT | WAIT 状態の際に、書き込みコントローラーは rom_addr 信号 (08) を保持するため、書き込みコントローラーが WRITE 状態に移行すると、それぞれのデータは DCFIFO に書き込まれます。 fifo_wrfull 信号で High の状態が続いている場合、書き込みコントローラーは WAIT 状態を維持します。fifo_wrfull が Low になると、書き込みコントローラーはかならず、次の立ち上がりクロックエッジで WAIT 状態から WRITE 状態に移行します。 |
WRITE | WRITE 状態の際は、書き込みコントローラーのみが fifo_wrreq 信号を High に駆動して書き込み操作を要求し、それまでに保持されていたアドレス (08) から DCFIFO にデータを書き込みます。rom_addr 信号が ff に達していない場合はかならず、コントローラーは次の立ち上がりクロックエッジで INCADR 状態に移行します。 |
-- | fifo_wrfull 信号が High の場合は、INCADR、WAIT、WRITE 状態で説明されている状態遷移が続きます。 |
状態 | 詳細 |
---|---|
WRITE | 書き込みコントローラーが WRITE 状態で、rom_addr = ff の場合、書き込みコントローラーは fifo_wrreq 信号を High に駆動し、DCFIFO への最後の書き込み操作を要求します。データ 100 は、ROM に格納されているデータのうち、最後に DCFIFO に書き込まれるものです。次の立ち上がりクロックエッジで、書き込みコントローラーは DONE 状態に移行します。 |
DONE | DONE 状態では、書き込みコントローラーは fifo_wrreq 信号を Low に駆動します。 |
-- | 受信ドメインの読み出しコントローラーでは読み出し操作を継続して実行するため、fifo_wrfull 信号がデアサートされます。ただし、fifo_wrfull 信号は、受信ドメインからの読み出し要求後しばらくしてからデアサートされます。これは、DCFIFO のレイテンシー (rdreq 信号と wrfull 信号) のために発生します。 |
fifo_rdempty 信号がアサートされ、DCFIFO が空であることを示します。読み出しコントローラーは fifo_rdreq 信号を Low に駆動し、ram_addr =ff で最後のデータ 100 の書き込みを有効にします。word_count 信号は256 (10 進数) に増加し、ROM からの 256 ワードのデータがすべて正常に RAM に転送されたことを示します。
RAM に書き込まれる最後のデータは、q 出力で示されます。