حقوق الطبع والنشر (C) 2018-2020 ، Wuklab ، UCSD.
هذا هو نظام التشغيل (OS) يعمل داخل FPGA يوفر تجريدات OS مألوفة (على سبيل المثال ، MM ، SCED ، NET) لتطبيقات FPGA. هذا هو نموذج أولي للبحث في المرحلة المبكرة. تتم كتابة معظم الكود في Xilinx HLS. تم اختباره على VCU118 و VCU108.
لقد تم الإعلان عن علني للأغراض التعليمية. آمل أن تجدها مفيدة.
host/ : مكدس شبكة الجانب المضيف وبرامج تشغيل DMAalloc/ : تخصيص الذاكرةmm/ : إدارة الذاكرةnet/ : النظام الفرعي للشبكةkernel/ : بعض الكود المتعلق بالعلاقات العامةsystem/ : الأنظمة المتكاملة الكبيرة النهائيةapp/ : يمكن أن يكون للتطبيق كل من FPGA ورمز المضيف.include/ : ملفات الرأس المستخدمة من قبل كل من FPGA ورمز المضيف. على سبيل المثال ، رؤوس الشبكة.include/fpga : الرؤوس المستخدمة من قبل HLS فقطinclude/uapi : الرؤوس المستخدمة من قبل كل من HLS ورمز المضيفtools/ : مساعدين مختلفينscripts/ : ملفات نص القالبgenerated_ip/ : جميع IPS التي تم إنشاؤها هناgenerated_hls_project/ : مشروع Vivado HLSgenerated_vivado_project/ : مشروع Vivadoشكل:
run_hls.tcl الاسم.mm_axi_wrapper هو IP AXI WRIPPER تحت النظام الفرعي MM.make help في رؤية شرح مفصل.make على المستوى الأعلى سوف يقوم بتجميع المشروع بأكمله باستخدام اللوحة الافتراضية.system/ المجلدmake في كل مقلع فرعي سيجمع هذا المجلد فقط.سير العمل: يجب عليك تجميع المشروع عند تنزيل رمز المصدر أولاً. جميع IPs الصغيرة والمتوسطة والمشاريع الكبيرة ستكون جاهزة للاستخدام. بعد ذلك ، يمكنك التركيز على IPS التي تقوم ببناءها. سوف تنعكس التغييرات تلقائيا داخل فيفادو.
أيضًا ، انتبه إلى اللوحة التي تستهدفها.
الهدف من استخدام البرامج النصية ذات شقين
generated_vivado_project/ المجلد/ المجلد ، في نفس المجلد حيث يوجد البرنامج النصي والرمز المصدر المقابل.يتم إنشاء البرامج النصية لضعف المشروع في Vivado بواسطة Vivado نفسها. ويمكن استخدام تلك البرامج النصية لإعادة بناء المشروع بأكمله كما هو.
هذه هي خطواتي غير المنطقية لإنشاء واختراق تلك البرامج النصية:
يجري:
vivado -mode tcl -source run_vivado.tclgenerated_vivado_project/ في المجلد الحاليgenerated_ip/ .الخلق:
write_project_tcl لإنشاء البرنامج النصي. يجب أن تدع البرنامج النصي الجديد يعرف أنه يجب وضع المشروع الذي يعاني من ذلك تحت المجلد generated_vivado_project . ويجب عليك تسمية البرنامج النصي إلى run_vivado.tcl .write_project_tcl -force -no_copy_sources -target_proj_dir ./generated_vivado_project ./run_vivado.tclwrite_project_tcl -force -target_proj_dir ./generated_vivado_project ./run_vivado.tclالاختراق:
إضافة مسارات IP إلى البرنامج النصي على المستوى الأعلى:
generated_ip/ المجلد. هذا يجعل تتبع IP أسهل. يمكنك إضافة أسطر قليلة إلى البرنامج النصي بحيث تعرف Vivado أين تبحث عن IPs جديدة. تحقق من scripts/template_vivado_ip.tcl لتلك الخطوط.حزمة IP تلقائيًا:
generated_ip/ . على سبيل المثال ، ipx::package_project -root_dir ../../generated_ip/mm_axi_wrapper -vendor wuklab -library user -taxonomy UserIP -import_files -set_current false -forceipx::package_project -root_dir ../../generated_ip/mm_axi_rab_vcu118 -vendor wuklab -library user -taxonomy UserIP -module THE_BD_NAME -import_filesأضف المزيد من ملفات المصدر/XDC/محاكاة:
top.v ، add_files إلخ.write_project_tcl مرة أخرى لإنشاء برنامج نصي آخر. ثم تحقق من الاختلافات.Autogenerate BD Wrapper
إعدادات أخرى:
write_project_tcl لإنشاء برنامج نصي جديد وحفظ التغييرات المقابلة. بمجرد أن تتعرف على أوامر Vivado ، يجب أن تكون قادرًا على القيام يدويًا عن طريق تغيير البرنامج النصي.تحذيرات:
في الوقت الحالي ، يمكنك العثور على نصوص مثال على mm/axi_wrapper/run_vivado.tcl ، و mm/sys/run_vivado.tcl .
يدعم Vivado إصدار IP واحد فقط في كل إصدار. إنه أمر رائع إذا استخدمنا نصًا تم إنشاؤه. لحسن الحظ ، هناك طريقة واحدة للتغيير. الكود التالي يحل محل سلسلة IP بمتغير. ومع ذلك ، كن حذرًا إذا كان لدى IP المحدث منافذ مختلفة.
set axis_data_fifo [get_ipdefs -filter NAME==axis_data_fifo]
Replace all `xilinx.com:ip:axis_data_fifo:1.1` with `$axis_data_fifo
نص Vivado HLS أسهل نسبيًا من نص Vivado. يمكنك العثور على نص القالب في scripts/template_run_hls.tcl . يجب عليك تخصيص الأجزاء ، والملفات المضافة ، والتردد ، وهكذا. إذا كنت ترغب تلقائيًا في إنشاء HLS متعددة تلقائيًا ضمن نفس المجلد ، فاستخدم scripts/template_generate_hls.sh