ينشئ هذا المشروع وحدة نمطية يمكن استخدامها للتفاعل مع Phy Ethernet لنقل حزم UDP. يتم دعم الإرسال فقط ، ولا يوجد جهاز استقبال يتم تنفيذه على FPGA.
تم تصميم الوحدة النمطية خصيصًا لتدفق بيانات العرض الثابت من FPGA. على سبيل المثال ، تعمل الوحدة النمطية بشكل جيد لتدفق البيانات التي تم أخذ عينات منها على ADC أو البيانات التي تم إنشاؤها بواسطة بعض العملية. على الرغم من أن الوحدة يمكن أن تتعامل مع بيانات بحجم متغير إلى حد ما ، إلا أنها غير مدعومة مباشرة. لإرسال بيانات متغيرة الحجم ، يجب أن تكون كل نقطة بيانات مبطنة بحجم أكبر نقطة بيانات يتم إرسالها. يجب الإعلان عن حجم نقاط البيانات في المقدمة ويضمن الوحدة أن نقطة بيانات واحدة لن يتم تجزئة الحزم المتعددة.
تم تصميم هذا المشروع خصيصًا واختباره على Digilent Arty A7 ، والذي يستخدم Xilinx Artix-7 XC7A100T FPGA ولديه جهاز تحكم في Texas Instruments DP83848J Ethernet Phy. ومع ذلك ، فإن معيار MII سيعمل مع أي phy.
يجب عليك استخدام هذه الوحدة إذا
يجب ألا تستخدم هذه الوحدة إذا
لاستخدام هذه الوحدة في المشروع ، هناك ملفان يجب تضمينهما
src/hdl/eth_udp.svsrc/ip/eth_udp_fifo_async/eth_udp_fifo_async.xci يتم إنشاء إنشاء وحدة ethernet_udp_transmit ، وتستخدم داخليًا IP eth_udp_fifo_async .
إذا تم قفل Xilinx IP ، فمن المحتمل أن يتم تكوين IP لجزء مختلف. تحقق من ذلك عن طريق تشغيل report_ip_status في وحدة التحكم TCL ، ويتمثل الإصلاح في تشغيل upgrade_ip [get_ips *] .
افتح Xilinx Vivado وحدد Tools > Run Tcl Script... ، ثم حدد البرنامج النصي generate_project.tcl في محفز الملف. سيتم تشغيل البرنامج النصي وإنتاج مشروع Vivado في proj/ دليل جديد من خلال استيراد جميع مصادر المشروع. إذا فشل المشروع في إنشاء ، فمن الأرجح وجود proj/ الدليل بالفعل.
يمكن اختبار المشروع باستخدام برنامج ether_tester . يولد Tester تسلسل عشوائي زائف للبايت على FPGA لإرسال UDP ، ويتحقق برنامج الاختبار من أن التسلسل الذي يتلقاه صحيح.
لاستخدام برنامج الاختبار ، تأكد من تثبيت البضائع لتجميع برامج الصدأ ، ثم انتقل إلى دليل ether_tester وتشغيله
cargo buildلتنزيل التبعيات وبناء المشروع. لعرض معلومات مساعدة البرنامج ، قم بتشغيل
cargo run -- -hعينة الاحتجاج من البرنامج
cargo run --
-b256
--serial-port=/dev/ttyUSB1:115200
--src=8.8.8.8:4096,aa:bb:cc:dd:ee:ff
--dest=1.2.3.4:4096,00:11:22:33:44:55
-r1000بالترتيب ، تعني الحجج ما يلي.