โปรแกรมนี้ประกอบด้วยไฟล์ verilog หลายไฟล์ รวมถึงไฟล์ที่เกี่ยวข้องทั้งหมดในโฟลเดอร์ hdl และแกน IP ที่จำเป็นบางส่วน
ความรู้เบื้องต้นเกี่ยวกับฟังก์ชันไฟล์
crc.v
: ส่วนใหญ่ใช้เมื่อส่ง UDP เพื่อคำนวณค่า CRC ของแพ็กเก็ต UDP
ethernet.v
: การห่อหุ้มไฟล์ udp_send.v และ udp_receive.v
ethernet_top.v
: ไฟล์ระดับบนสุดตัวอย่างของทั้งโปรเจ็กต์ ซึ่งแสดงเฉพาะวิธีการเรียกไฟล์และไฟล์ ip core อื่นๆ ที่เกี่ยวข้อง
udp_receive.v
: รับผิดชอบกระบวนการรับการประมวลผลของ udp
udp_send.v
: รับผิดชอบกระบวนการส่งของ udp
clk
: นาฬิกาหลักของโมดูลการรับ
rst_n
: รับสัญญาณรีเซ็ตส่วนกลางของโมดูล
rx_data_len
: ความยาวของแพ็กเก็ต udp ของข้อมูลที่ได้รับ ซึ่งเป็นพารามิเตอร์ของส่วนหัว udp
rx_total_len
: ความยาวของแพ็กเก็ตข้อมูล IP ที่ได้รับ ซึ่งเป็นพารามิเตอร์ของส่วนหัวข้อมูล IP
update
: เมื่อได้รับแพ็กเก็ต UDP ใหม่ ค่านี้จะถูกดึงให้สูงเป็นเวลาหนึ่งรอบ
ip_header
: ส่วนหัวของแพ็กเก็ตข้อมูล IP ที่ได้รับทั้งหมด รองรับเฉพาะส่วนหัวข้อมูล IP 160 บิตเท่านั้น
udp_header
: ส่วนหัวข้อมูล UDP ที่ได้รับทั้งหมด รองรับเฉพาะส่วนหัวข้อมูล UDP 64 บิตเท่านั้น
mac
: แพ็กเก็ต MAC ทั้งหมดที่ได้รับ รวมถึง MAC ปลายทาง, MAC ต้นทาง และการระบุประเภทแพ็กเก็ต IP
data_o
: ได้รับข้อมูลที่ถูกต้อง
src_mac
: ที่อยู่ MAC ต้นทางของแพ็กเก็ต
src_addr
: ที่อยู่ IP ต้นทางของแพ็กเก็ตข้อมูล
src_port
: ที่อยู่พอร์ตต้นทางของแพ็กเก็ตข้อมูล
DF
: พารามิเตอร์ของแพ็กเก็ตข้อมูล IP, 0 หมายถึงแพ็กเก็ตข้อมูลสามารถแยกส่วนได้, 1 หมายถึงไม่สามารถแยกส่วนได้
MF
: พารามิเตอร์ของแพ็กเก็ต IP 1 หมายถึงยังมีแฟรกเมนต์อยู่ 0 หมายความว่านี่คือแฟรกเมนต์สุดท้าย
e_rxdv
: Control IO ของ RTL8211 เมื่อค่าสูงแสดงว่าข้อมูลที่ได้รับถูกต้อง
rxd
: รับข้อมูล IO ของ RTL8211
CAN_RECEIVE_BROADCAST
: ไม่ว่าจะรองรับการรับแพ็กเก็ตข้อมูลการออกอากาศหรือไม่ นั่นคือแพ็กเก็ตข้อมูลที่มีที่อยู่ MAC FFFFFFFFFFFF
DST_ADDR
: ตั้งค่าที่อยู่ IP ของที่อยู่ปลายทางซึ่งเป็นที่อยู่การ์ดเครือข่ายของ RTL8211
DST_PORT
: กำหนดที่อยู่พอร์ตของที่อยู่ปลายทางซึ่งเป็นพอร์ตของ RTL8211
DST_MAC
: ตั้งค่าที่อยู่ MAC ของที่อยู่ปลายทางซึ่งเป็นที่อยู่ MAC ของ RTL8211
IDLE
: สถานะไม่ได้ใช้งาน ตราบใดที่ได้รับคำนำ ก็จะเข้าสู่สถานะ R_PRE
R_PRE
: รับคำนำ หลังจากได้รับ 7 คำนำและข้อมูลบิตเริ่มต้นหนึ่งรายการ ให้ป้อนสถานะ 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 สูง ข้อมูลที่ต้องส่งจะถูกส่งไปยังแพ็กเก็ตข้อมูล 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 เมื่อสูงข้อมูลการส่งข้อมูลจะถูกต้อง
txer
: สัญญาณข้อผิดพลาดในการส่งของ RTL8211
txd
: IO การส่งข้อมูลของ RTL8211
IP_HEADER_LEN
: ความยาวของแพ็กเก็ตข้อมูล ip ค่าเริ่มต้นนั้นใช้ได้และไม่จำเป็นต้องเปลี่ยนแปลง
TTL
: พารามิเตอร์ของแพ็กเก็ต IP, เวลาในการถ่ายทอดสด
SRC_ADDR
: ที่อยู่ IP ของที่อยู่ต้นทาง
SRC_PORT
: พอร์ตของที่อยู่ต้นทาง
SRC_MAC
: ที่อยู่ MAC ของที่อยู่ต้นทาง
IDLE
: สถานะไม่ได้ใช้งาน เริ่มต้นอยู่ในสถานะสูงและเข้าสู่สถานะ 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 รหัสของส่วนหลักทั้งสองนี้จึงได้รับการแก้ไขให้มากที่สุด ตัวอย่างเช่น ใน udp_send เมื่อส่ง MAC และส่วนหัวข้อมูล เครื่องสถานะจะใช้เพื่อส่งข้อมูลบิตที่สอดคล้องกันตาม เป็นค่าตัวนับ ฉันเคยลองมาแล้ว โดยส่งแปดบิตบนโดยตรงแล้วเลื่อนข้อมูลที่ยังไม่ได้ส่งไปที่แปดบิตบนอย่างต่อเนื่อง แต่วิธีนี้ไม่สามารถตอบสนองความต้องการด้านเวลาของ 125Mhz จึงเปลี่ยนเป็นค่าปัจจุบัน วิธี. อีกตัวอย่างหนึ่งคือการคำนวณเช็คซัมส่วนหัว กระบวนการคำนวณแบ่งออกเป็นหลายขั้นตอนในการคำนวณ ซึ่งช่วยลดจำนวนการละเมิดเวลาทั้งหมดได้อย่างมีประสิทธิภาพ
แต่ถึงกระนั้น ก็ยังมีสัญญาณบางอย่างที่ไม่ตรงตามข้อกำหนดด้านจังหวะเวลา และรายงานจังหวะจะสร้างเส้นทางจังหวะประมาณลบ 1ns
ต่อไปรอการเติมเต็มหลุม - -
บทความเกี่ยวกับการเติมหลุม (การสำรวจเครือข่าย Gigabit) 1. ทำความเข้าใจโครงสร้างทั้งหมดของเฟรมอีเธอร์เน็ต (การสำรวจเครือข่าย Gigabit) 2. ความพยายามเพื่อให้แน่ใจว่าระยะขอบเวลาของวงจรดิจิทัล