インテルのみ表示可能 — 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状態に移行します。INDADR状態では、書き込みコントローラーは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出力で表示されます。