このプログラムは、hdl フォルダー内のすべての関連ファイルといくつかの必要な IP コアを含む複数の verilog ファイルで構成されています。
ファイル関数の概要crc.v
: 主に UDP パケットの CRC 値を計算するために UDP を送信するときに使用されます。
ethernet.v
: udp_send.v および udp_receive.v ファイルのカプセル化。
ethernet_top.v
: プロジェクト全体のサンプルのトップレベル ファイル。ファイルおよびその他の関連 IP コア ファイルを呼び出す方法のみを示します。
udp_receive.v
: udpの受信処理プロセスを担当します。
udp_send.v
: udpの送信処理を担当します。
clk
: 受信モジュールのメインクロック。
rst_n
: モジュールのグローバルリセット信号を受信します。
rx_data_len
: 受信データの udp パケットの長さ。udp ヘッダーのパラメータです。
rx_total_len
: 受信した IP データ パケットの長さ。IP データ ヘッダーのパラメータです。
update
: 新しい UDP パケットを受信すると、この値は 1 サイクルの間 High になります。
ip_header
: 受信した IP データ パケット ヘッダー全体。160 ビットの IP データ ヘッダーのみをサポートします。
udp_header
: 受信した UDP データ ヘッダー全体。64 ビットの UDP データ ヘッダーのみをサポートします。
mac
: 宛先 MAC、送信元 MAC、および IP パケット タイプの識別を含む、受信した MAC パケット全体。
data_o
: 有効なデータを受信しました。
src_mac
: パケットの送信元 MAC アドレス。
src_addr
: データ パケットの送信元 IP アドレス。
src_port
: データパケットの送信元ポートアドレス。
DF
: IP データ パケットのパラメータ。0 はデータ パケットがフラグメント化できることを意味し、1 はデータ パケットがフラグメント化できないことを意味します。
MF
: IP パケットのパラメータ。1 はまだフラグメントが存在することを意味し、0 はこれが最後のフラグメントであることを意味します。
e_rxdv
: RTL8211 の制御 IO。High の場合、受信したデータが有効であることを意味します。
rxd
: RTL8211の受信データIO。
CAN_RECEIVE_BROADCAST
: ブロードキャスト データ パケット、つまり MAC アドレス FFFFFFFFFFFF を持つデータ パケットの受信をサポートするかどうか。
DST_ADDR
: 宛先アドレスの IP アドレスを設定します。これは RTL8211 のネットワーク カード アドレスです。
DST_PORT
: RTL8211のポートである宛先アドレスのポートアドレスを設定します。
DST_MAC
: 宛先アドレスのMACアドレスを設定します。RTL8211のMACアドレスです。
IDLE
: アイドル状態。プリアンブルを受信している限り R_PRE 状態になります。
R_PRE
: プリアンブルを受信し、7 つのプリアンブルと 1 つのスタート ビット データを受信した後、R_MAC ステートに移行します。
R_MAC
: 受信MACデータステータス、受信完了後R_HEADER状態へ遷移します。
R_HEADER
: IP データヘッダーと UDP データヘッダーを受信し、受信後 R_DATA 状態に入ります。
R_DATA
: UDP 有効データを受信し、受信後 R_FINISH を入力します。
R_FINISH
: IDLE 状態に戻ります。
clk
、 rst_n
信号は上記のとおりです。
data_i
: 送信する必要があるデータ tx_dv が High の場合、送信する必要があるデータはこのポートを介して UDP データ パケットに送信されます。
tx_data_len
: 送信されるデータの長さ、UDP パケットのパラメーター。
crc
: データ検証用に予約された、イーサネット データ パケット全体の CRC チェック コード。
crcen
: crc モジュールのイネーブル信号。高 crc チェック モジュールに対してのみ計算できます。
crcrst
: crc モジュールのリセット信号。高 crc テスト モジュールをリセットします。
start
: UDP 送信モジュールの開始信号。高駆動モジュールのフレーム送信の開始です。
busy
: UDP 送信モジュールのビジー信号。この信号は、モジュールがフレーミングと送信の処理中にハイになります。
tx_dv
: UDP 送信モジュールの指示信号。現在の UDP モジュールにデータを送信できることを通知します。送信する必要があるデータを送信してください。
dst_mac
: 宛先アドレスのMACアドレス。
dst_addr
: 宛先アドレスの IP アドレス。
dst_port
: 宛先アドレスのポートアドレス。
DF
、 MF
は上記の通り。
tx_en
: RTL8211 の送信イネーブル信号。High の場合、送信データは有効です。
txer
: RTL8211 の送信エラー信号。
txd
: RTL8211の送信データIO。
IP_HEADER_LEN
: IP データ パケットの長さはデフォルトで問題ないため、変更する必要はありません。
TTL
: IP パケットのパラメータ、生存時間。
SRC_ADDR
: 送信元アドレスの IP アドレス。
SRC_PORT
: 送信元アドレスのポート。
SRC_MAC
: 送信元アドレスのMACアドレス。
IDLE
: アイドル状態、スタートが High で MAKE_IP 状態に入ります。
MAKE_IP
: IP データ パケットを生成し、MAKE_SUM 状態に入ります。
MAKE_SUM
: IP パケットのヘッダー チェックサムを計算し、計算が完了すると SEND_PRE 状態に移行します。
SEND_PRE
: 7 つのプリアンブル コードと 1 つのスタート コードを送信します。次に、SEND_MAC 状態に入ります。
SEND_MAC
: 宛先 MAC、送信元 MAC、および IP パケット タイプを送信し、SEND_HEADER 状態に入ります。
SEND_HEADER
: IP データ ヘッダーと UDP データ ヘッダーを送信し、SEND_DATA 状態に入ります。
SEND_DATA
: 有効なデータを送信し、送信後に SEND_CRC 状態に入ります。
SEND_CRC
: CRC データを送信し、送信後 IDLE_CODE 状態に入ります。
IDLE_CODE
: イーサネット データ パケットの要件である 12 個のアイドル コードを送信します。送信後IDLE状態に戻る
125Mhz のタイミング要件を満たすために、これら 2 つのコア部分のコードは可能な限り変更されています。たとえば、udp_send では、MAC ヘッダーとデータ ヘッダーを送信するときに、ステート マシンを使用して対応するビット データが送信されます。以前、上位8ビットを直接送信し、未送信のデータを上位8ビットにシフトする方法を試しましたが、この方法では125Mhzのタイミング要件を満たせないため、現在の方法に変更されました。方法。もう 1 つの例は、ヘッダー チェックサムの計算です。計算プロセスはいくつかのステップに分割されて計算されます。これにより、タイミング違反の合計数も効果的に削減されます。
しかし、それでも、タイミング要件を満たさない信号がまだいくつかあり、タイミング レポートでは約マイナス 1ns のタイミング パスが生成されます。
続きは穴埋め待ちです。 。 。
穴埋め記事(ギガビットネットワークを探る) 1. イーサネットフレームの全体構造を理解する(ギガビットネットワークを探る) 2. デジタル回路のタイミングマージン確保への取り組み