現在、FPGA に 64 コアの 2-D MESH ネットワークを実装するために、VHDL でネットワーク オン チップ ルーターを構築しています。各コアには独自のルーターがあり、各ルーターには 5 つのポート (北、南、西、東) があります。 、処理ユニットと通信するためのローカル ポート) 各ポートには入力 FIFO と出力 FIFO があります。したがって、入力 FIFO は次の宛先ルーターの出力 fifo と通信し、このポートの出力 fifo は送信元ルーターの入力 fifo と通信します。
問題は、有限ステート マシンを使用して FIFOS の write/read_eneable および FIFO_FULL FIFO_EMPTY 信号を制御していないことと、ルーターを機能させるためにこれらの信号をどこで使用する必要があるかがわからないことです。
私の FIFO はザイリンクス CORE Generator によって生成され、その同期 FIFO には次の信号があります: 入力: クロック、データ入力、read_enable、write_enable。出力: Data_out、fifo_full、fifo_empty、パケットの最初の 6 ビット。この最後の出力は、パケットの最初の 6 ビットを fifo から取り出して、XY ルーティング ブロックによるルーティング決定に使用するために使用されます。
したがって、私の問題は、FIFO の write/read_enable および fifo_full/empty を制御する方法と、ルーティング ブロックに送信するために 6 ビットを抽出する方法を理解できないことです。
前もって感謝します。
Ps何か不明な点があれば、詳細を教えてください。
__ _ __ _ __ __ _ ___回答返信__ _ __ _ _ __ _ __ _ ____ _
こんにちは、サイモン!!お時間を割いてご回答いただき、誠にありがとうございます。
基本的に、32 バイトのパケットを処理する予定です。したがって、パケットをフリットに分割する方法を見つけなければなりません。フリットが FIFO に入ると、最初の 6 ビットがルーティングに使用されます。このようにして、ランダムなトラフィックをシミュレートできます。
理解してもらうための例。16 コアのメッシュ ネットワークの座標は次のとおりです。 30 31 32 33 20 21 22 23 10 11 12 13 00 01 02 03
したがって、これらの 2 ビットの数値のそれぞれがルーターを表すと想像してください。この場合、6 ビットではなく 4 ビットが必要です。したがって、4 ビットは XY ルーティング ブロックに入ります。最初の 2 ビットは座標の最初のビットと比較され、次の 2 ビットは座標の 2 番目のビットと比較されます。
したがって、ルーター 00 からルーター 22 に移動する場合、ルーター 00 に着信するデータは、このルーターの正しい出力に向ける必要があります。したがって、宛先が 22 の場合、最初に X 軸ルーティングが行われるため、フリットはイースト ポートを出て、ルーター 02 に到達するまで移動し、Y 軸へのルーターとなり、ルーター 22 に向かいます。
私の言っていることが理解できると思います!
そうでない場合はお知らせください!
よろしく