問題タブ [register-transfer-level]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
11498 参照

verilog - インデックスで verilog $deposit を使用する方法

$depositパスにgenerateループからのインデックスが含まれている場合に使用できる方法。私がしようとすると:

エラーが発生します:

0 投票する
1 に答える
2318 参照

vhdl - ゴールデン C モデルと RTL 間のアウトオブオーダー トランザクションのスコアボードをコーディングする方法は?

ゴールデン C++ モデルと RTL の両方がインスタンス化される UVM テスト環境があります。場合によっては、C++ モデルが正確なサイクルではないため、C++ モデルと RTL 出力が順不同になります。順序どおりの出力の場合、スコアボードに無限のキューがあります。RTL インターフェイスに出力が表示されるたびに、それを c++ モデル出力キューの先頭と一致させようとします。ここでは、時間 c++ モデルの概念がないため、c++ モデルからの出力は常に RTL 出力の前に来ると仮定しています。

ただし、いくつかのシナリオ (例として、アービター) では、物事が狂ったり、順不同になったりする可能性があります。その場合、UVM でスコアボードとチェック コードを記述する標準的な方法は何ですか?

0 投票する
2 に答える
524 参照

vhdl - VHDL での DSP ユニットの使用

コードを RTL に変換するツールを使用しています。

これらの VHDL ファイルを使用して、FPGA を使用してコードを合成したいと考えています。

合成結果には、次の表が表示されます。

VHDL ファイルを検索して、これらのユニットを使用する操作を確認したいと考えています。

それらを見つける方法はありますか?または、DSP を使用する操作を示すドキュメントはありますか?

0 投票する
1 に答える
498 参照

vhdl - 並行ステートメントの多重代入

次のコードでエラーが発生しますが、自分ではわかりません。エラーは、出力 d0 の割り当てが複数あるためです

0 投票する
1 に答える
338 参照

caching - キャッシュ整合性における MESI プロトコル

MESI プロトコルについて質問があります。

(1) MESI キャッシュ コヒーレンス プロトコルを実装するユニプロセッサ システムで実行される次のコード フラグメントを考えてみましょう。

I1: ロード $s1, [A] I2: ロード $s2, [B] I3: 追加 $s1, $s2, $s3 I4: ストア $s3, [C] I5: サブ $s3, 1, $s4 I6: $s3 を保存、[A]

ライトスルー キャッシュ ポリシーを仮定します。メモリ ブロック A、B、および C が (必要に応じて) 1 つのプロセッサ上の 2 つの異なるキャッシュ ブロック (最初は空) に読み込まれる場合、次の表を完成させて、それぞれの後に A、B、C を含むブロックのキャッシュ状態を特定します。命令が実行されます。

それに対する私の答えは次のとおりです。

(2) 次の RTL では

ライトスルー キャッシュ ポリシーを仮定します。メモリ ブロック 4 と 6 が単一のプロセッサの 2 つの異なるキャッシュ ブロック (最初は空) にロードされている場合

私の答えは

私の答えは正しいですか?事前にどうもありがとうございました。

0 投票する
2 に答える
22642 参照

verilog - RTL でクロック ゲーティングを使用する方法

デザインでいくつかのラッチとロジックをクロック ゲーティングしています。合成と配置配線の経験はあまりありません。RTL でクロック ゲーティングを実装する適切な方法は何ですか?

例1:

例 2: RTL クロック ゲーティングの優れたプラクティスについて調査しているときに、RTL の例に出くわしました。この例では、上記のコードを次のように実装しました。

カスタム クロック ゲーティング セルを使用する目的は何ですか? 別のイネーブル信号を使用して always_comb ブロックで clk が直接「AND」されている場合、ツールは合成に苦労しますか? 特殊なクロック ゲーティング セルを使用することは、ゲーテッド クロック信号を生成するための標準的なアプローチであると感じています。なぜそうなのかを理解しようとしています。

0 投票する
2 に答える
733 参照

verilog - Verilog の CASE ステートメントでの合成エラー

私は Verilog に不慣れで、以下に引用されている私のコードの一部を合成しようとしたときに発生するエラーについて、あなたの意見を知りたいです:

Cadence合成ツールを使用していますが、コードのこの部分に次のようなエラーが表示されます。

インデックス 'X[-1]' は、宣言 [31:0] の有効な範囲内にありません

width=0for ループを使用してはならない特別なケースがある場合でも、理解できません。また、制限をwidth +2に増やしてみましたが、同じエラーが発生しました。width +1shift the quantity X by 2

前もって感謝します!

0 投票する
1 に答える
1502 参照

fpga - シリアル ATA (Gen1/2/3) 用の 7 シリーズ GTXE2 トランシーバーの構成

こんにちは、これは専門家の質問になります:) 次のトピックに精通している必要があります

  • ザイリンクス マルチギガビット トランシーバー (MGT)、特に 7 シリーズ GTX/GTH トランシーバー (GTXE2_CHANNEL)
  • Serial-ATA Gen1、Gen2、および Gen3、特に帯域外 (OOB) 通信

質問:

Serial-ATA 用に GTXE2 を構成するにはどうすればよいですか?

RX_ElectricalIdle も ComInit も OOB シグナリングが機能していません。

序章:

複数のベンダー/デバイス プラットフォーム (Xilinx Virtex-5、Altera Stratix II、Altera Stratix IV) をサポートする最後の学士プロジェクト用に SATA コントローラーを実装しました。今度は、このコントローラーを次のデバイス ファミリに移植します。KC705 ボード上の Kintex-7 という名前のザイリンクス 7 シリーズ デバイスです。

SATA コントローラには、SAPIS および PIPE 3.0 に基づく物理層に追加の抽象化層があります。したがって、SATA コントローラーを新しいデバイス ファミリに移植するには、GTXE2 MGT 用の新しいトランシーバー ラッパーを作成するだけです。

ザイリンクスの CoreGenerator は CoreGen ウィザードで SATA プロトコルをサポートしていないため、トランシーバー プロジェクトをゼロから開始し、必要なすべての設定をウィザードで求められる範囲で適用しました。その後、GTXE2_COMMON のインスタンス化をラッパー モジュールにコピーし、ジェネリックとポートを意味のある完全なスキーマに並べました。

3 番目のステップとして、接続されていないすべてのポート (ウィザードはすべての値を割り当てるわけではありません!!) をデフォルト値 (UG476 のデフォルト、または定義されていない場合はゼロ) に接続しました。

手順 4 で、すべてのジェネリックとポートを UG476 に対して再度チェックし、それらが SATA 設定と互換性があるかどうかを確認しました。その後、ラッパー ポートを MGT に接続し、必要に応じてクロス クロック モジュールを挿入しました。

KC705 ボードには 150 MHz 基準クロックがないため、各ボードの「起動」後にこのクロックを「ProgUser_Clock」として供給するように Si570 をプログラムします。この再構成中、MGT はパワーダウン モード (P2) になります。Si570 が安定している場合、MGT に電源が投入され、使用されているチャネル PLL (CPLL) が約 1 秒後にロックされます。6180 クロック サイクル。この CPLL_Locked イベントは GTX_TX|RX_Reset ワイヤを解放し、さらに 270|1760 サイクル後に GTX_TX|RX_ResetDone イベントを発生させます (すべてのサイクル @ 150 MHz -> 6.6 ns)。

この動作は、中断のない安定した補助クロック (200 MHz、わずかにオーバーサンプリング) でキャプチャされた chipscope で確認できます。

そのため、GXTE2 はパワーアップして動作し、すべてのクロックが安定しています。

OOB シグナリングを制御する GTXE2 ポート:

MGT には、OOB シグナリング用のポートがいくつかあります。TX では次のとおりです。

  • TX_ElectricalIdle - TX を強制的に電気的アイドル状態にする
  • TX_ComInit - ComInit シーケンスを送信する
  • TX_ComWake - ComWake シーケンスを送信する
  • TX_ComFinish - シーケンスが送信されました -> 次のコマンドの準備ができました

受信時:

  • RX_ElectricalIdle - RX_n/TX_p が電気的アイドル状態にある (低レベル インターフェイス)
  • RX_ComInit_Detected - 完全な ComInit シーケンスが送信されました
  • RX_ComWake_Detected - 完全な ComWake シーケンスが送信されました

詳細なエラーの説明:

  1. TX_ComInit が 1 サイクルの間 High の場合、TX は OOB シーケンスを送信しません。
  2. RX_ElectricalIdle は常にハイ

テスト:

  1. SATA ループバック ケーブル: SATA ケーブルを切断し、適切なワイヤをはんだ付けします ;) -- KC705 を SATA コネクタで拡張する特別な SFP から SATA へのアダプタを使用しています - http://shop.trioflex.ee/product.php ?id_product=73
  2. SMA ループバック ケーブル: MGT を移動し、LVDS ワイヤを SMA ジャックに接続し、クロスオーバーとして 2 本の SMA ケーブルを取り付けました。
  3. 古い ML505 (Virtex-5) をオンボード SATA コネクタでプログラムして、ComInit シーケンスを送信しました。2 つのボードは、専用の SATA クロスケーブルで接続されています。
  4. HDD を部分的に剥がした SATA ケーブルで KC705 (SFP2SATA アダプター) に接続し、2.5 GSps スコープを接続しました (はい、信号はアンダーサンプリングされていますが、バーストとアイドル期間を見るのは良いことです...)。

経験:

  • テスト 3 は、Virtex-5 から Kintex-7 に送信された OOB シーケンスを示していますが、ChipScope トリガー イベントは発生しません - Rx_ElectricalIdle はまだ High です。
  • テスト 4 は、ケーブル上で OOB シーケンスが送信されていないことを示しています。

パーツまたは完全なトランシーバーのインスタンス化を投稿する必要がありますか?

インスタンスのみが ca を持っています。650行:(

詳細情報、画像、コードなどが必要な場合はお問い合わせください... :)

付録:

電気的アイドルとは、MGT が両方の LVDS ワイヤ (TX_n/TX_p) を 0..2000 mV の範囲のコモン モード電圧 (V_cm) で駆動することを意味します。この条件が満たされている場合、同相デルタ電圧は 100 mV 未満であり、ElectricalIdle 条件と呼ばれます。

OOB シグナリングとは、MGT が電気的アイドルおよび通常のデータ シンボル (8b/10b 表記の D10.2) のバーストを LVDS ワイヤで送信することを意味します。SATA/SAS は、異なるバースト/アイドル期間を持つ 3 つの OOB シーケンス呼び出し ComInit、ComWake、ComSAS を定義します。ホスト コントローラとデバイスは、これらの「モールス信号」を使用してリンクを確立します。