فهرست مطالب:

طرز تهیه ارنی: 11 مرحله
طرز تهیه ارنی: 11 مرحله

تصویری: طرز تهیه ارنی: 11 مرحله

تصویری: طرز تهیه ارنی: 11 مرحله
تصویری: اینو اصلا به جیدال نشون ندین 🥲😐🥲 #مدگل #جیدال 2024, نوامبر
Anonim
چگونه ارنی بسازیم
چگونه ارنی بسازیم

این یک آموزش در مورد چگونگی ساخت Ernie ، ربات صدای مستقل شما ، با استفاده از یک برد Zybo است. این شامل چگونگی: ایجاد پروژه در Vivado ، ایجاد درایورهای سرو موتور شبیه به PWM در FPGA ، رابط کاربری با دو سنسور صدا ، ایجاد تفاوت زمانی در IP ورود ، استفاده از freeRTOS ، و اجرای zybo از یک بسته باتری است. این آخرین پروژه ما برای کلاس سیستم عامل های زمان واقعی (CPE 439) در Cal Poly SLO بود.

لیست تجهیزات:

  • 1 - برد توسعه ZYBO Zynq 7000
  • 2 - سروال چرخشی مداوم Parallax
  • 2 - سنسور صدا (آشکارساز صدا SparkFun)
  • بسته باتری 1 - 5 ولت لیتیوم یون (برای برد)
  • 4 - باتری AA (برای سرو)
  • 1 - بسته باتری AA (بدون 4 اسلات باتری)
  • 1 - کابل میکرو USB
  • 1 - تخته نان
  • بسیاری - سیم های نر به نر
  • 1 - شاسی سروو

الزامات نرم افزاری:

  • مجموعه طراحی Xilinx Vivado 2016.2
  • Digilent Adept 2.16.1

مرحله 1: تنظیم پروژه در Vivado برای ارنی

راه اندازی پروژه در Vivado برای Ernie
راه اندازی پروژه در Vivado برای Ernie
راه اندازی پروژه در Vivado برای Ernie
راه اندازی پروژه در Vivado برای Ernie
راه اندازی پروژه در Vivado برای Ernie
راه اندازی پروژه در Vivado برای Ernie
  1. جادوگری ظاهر می شود
  2. Next را کلیک کنید
  3. نام بعدی پروژه

    1. هرگز از نام پروژه یا مسیر دایرکتوری که دارای فاصله در آن است استفاده نکنید !!!!!
    2. این یک پروژه RTL خواهد بود.
  4. ما نمی خواهیم منابع را مشخص کنیم
  5. با کلیک بر روی Next ، به صفحه Part می رسیم. ما از ZYNQ XC7Z010-1CLG400C استفاده می کنیم.

    1. Vivado Zybo را به عنوان یکی از تابلوهای از پیش تعریف شده خود ذکر نکرده است. را انتخاب کنید: "parts" سپس xc7z010clg400-1 را جستجو کنید.
    2. اگر قسمت اشتباهی را به اشتباه انتخاب کرده اید ، می توانید به راحتی تراشه ها را تغییر دهید: ابزارها -> تنظیمات پروژه -> عمومی و روی نقاط سمت راست "پروژه دستگاه" کلیک کنید
  6. روی ایجاد طرح بلوک کلیک کنید.

    فعلاً نام آن را design_1 بگذارید

  7. یک نوار سبز رنگ می بینید که می گوید Add IP ، روی آن کلیک کنید.
  8. Zynq را جستجو کنید.

    1. روی ZYNQ7 Processing System دوبار کلیک کنید ،
    2. این بلوک در طراحی بلوک ما ظاهر می شود.
  9. یک نوار سبز رنگ می بینید که می گوید Run Block Automation ، روی آن کلیک کنید.
  10. zybo_zynq_def.xml را در زیر بارگیری کنید.
  11. در Vivado ، روی "وارد کردن تنظیمات XPS" کلیک کنید و "zybo_zynq_def.xml" را انتخاب کنید.

    این پیکربندی بلوک Vivado را با همه لوازم جانبی داخلی Zybo و تعیین پین ها پر می کند

  12. روی بلوک ZYNQ دوبار کلیک کنید.

    1. پیکربندی MIO

      1. فعال کردن تایمر 0 (تحت واحد پردازش برنامه - img 1)
      2. فعال کردن Watchdog (در بخش واحد پردازشگر برنامه 1)
      3. فعال کردن GPIO-> GPIO MIO (تحت واحد پردازشگر برنامه - img 2)
      4. GPIO-> ENET Reset را فعال کنید (در قسمت I/O Peripherals- img 2)
    2. پیکربندی ساعت

      FCLK0 را غیرفعال کنید (تحت PL Fabric Clocks - img 3)

  13. روی Ok کلیک کنید.
  14. اکنون "Block Automation" را اجرا کنید.

    س questionsالاتی در مورد سیگنال ها وجود دارد ، می گویند OK

  15. روی "ایجاد HDL Wrapper" کلیک کنید.

    ما می خواهیم بسته بندی ایجاد شده را کپی کنیم تا امکان ویرایش کاربر فراهم شود

  16. روی OK کلیک کنید.

مرحله 2: ایجاد PWM ارنی در Vivado

ایجاد PWM ارنی در Vivado
ایجاد PWM ارنی در Vivado
ایجاد PWM ارنی در Vivado
ایجاد PWM ارنی در Vivado

این مرحله یک IP PWM با ورودی های ارسال شده از طریق کتابخانه AXI ایجاد می کند.

  1. با راست کلیک روی پس زمینه و کلیک روی "افزودن IP" بلوک AXI GPIO ایجاد کنید

    "AXI_GPIO" را در نوار جستجو تایپ کنید و این بسته را انتخاب کنید

  2. با دوبار کلیک روی بلوک axi_gpio_0 جدید ، IP را مجدداً سفارشی کنید

    1. تحت GPIO ، عرض GPIO را روی 2 تنظیم کنید. این بیت ها سیگنال PWM_ON برای هدایت هر نمونه ماژول PWM خواهند بود.
    2. روی "فعال کردن کانال دوگانه" کلیک کنید
    3. در GPIO 2 ، عرض GPIO را روی 2 تنظیم کنید. این بیت ها سیگنال PWM_FW برای تنظیم جهت هر نمونه ماژول PWM خواهند بود.
  3. روی پورت خروجی axi_gpio_0 با برچسب GPIO راست کلیک کرده و "Make External" را انتخاب کنید

    1. روی خروجی جدید با برچسب GPIO کلیک کنید و به برگه "Properties" در نوار ابزار سمت چپ بروید و نام را به PWM_ON تغییر دهید
    2. روی خروجی جدید با برچسب GPIO2 کلیک کنید و به برگه "Properties" در نوار ابزار سمت چپ بروید و نام آن را به PWM_FW تغییر دهید.
  4. گزینه Run Connection Automation را در بنر سبز بالای بلوک دیاگرام انتخاب کنید.

    اگر پورت ها را به صورت دستی متصل می کنید ، ممکن است آدرس های AXI پیکربندی نشوند که بعداً منجر به مشکلات ارتباطی می شود

  5. در پنجره ناوبر جریان ، مدیر پروژه -> افزودن منابع را برای ایجاد یک بلوک IP سفارشی جدید انتخاب کنید

    1. "افزودن یا ایجاد منابع طراحی" را انتخاب کرده و بعدی را بزنید
    2. روی "ایجاد فایل" کلیک کنید ، نوع فایل را به "SystemVerilog" تغییر دهید و "pwm" را در قسمت نام فایل تایپ کنید ، سپس روی OK کلیک کنید
    3. روی پایان کلیک کنید
    4. پنجره Define Module را با فشار دادن OK نادیده بگیرید (بعداً این موارد را رونویسی می کنیم)

      اگر می پرسد آیا مطمئن هستید ، روی Yes کلیک کنید

  6. در برگه منابع ، روی pwm.sv (واقع در "منابع طراحی/design_1_wrapper") دوبار کلیک کنید

    کل کد SystemVerilog را از فایل pwm.txt که در زیر ضمیمه شده است کپی/جایگذاری کنید

مرحله 3: ایجاد TDOA ارنی در Vivado

ایجاد TDOA ارنی در Vivado
ایجاد TDOA ارنی در Vivado
ایجاد TDOA ارنی در Vivado
ایجاد TDOA ارنی در Vivado

این مرحله یک IP TDOA ایجاد می کند که خروجی آن را می توان از طریق کتابخانه AXI خواند

  1. با راست کلیک روی پس زمینه و کلیک روی "افزودن IP" ، بلوک AXI GPIO ایجاد کنید

    "AXI_GPIO" را در نوار جستجو تایپ کنید و این بسته را انتخاب کنید

  2. با دوبار کلیک روی بلوک جدید axi_gpio_1 ، IP را مجدداً سفارشی کنید

    1. در GPIO ، کادر "همه ورودی ها" را علامت زده و عرض GPIO را روی 32 تنظیم کنید. این گذرگاه تفاوت زمانی رسیدن بین دو سنسور را نشان می دهد.
    2. در داخل بلوک axi_gpio_1 ، روی + کنار درگاه GPIO کلیک کنید تا gpio_io_i [31: 0] نمایان شود.
  3. روی پورت خروجی axi_gpio_1 با برچسب gpio_io_i [31: 0] راست کلیک کرده و "Make External" را انتخاب کنید

    روی ورودی جدید با برچسب gpio_io_i [31: 0] کلیک کنید و به برگه "Properties" در نوار ابزار سمت چپ بروید و نام را به TDOA_val تغییر دهید

  4. گزینه Run Connection Automation را در بنر سبز بالای بلوک دیاگرام انتخاب کنید.

    در صورت اتصال دستی پورت ها ، آدرس های AXI ممکن است پیکربندی نشوند که بعداً منجر به مشکلات ارتباطی می شود

  5. در پنجره ناوبر جریان ، مدیر پروژه -> افزودن منابع را برای ایجاد یک بلوک IP سفارشی جدید انتخاب کنید

    1. "افزودن یا ایجاد منابع طراحی" را انتخاب کرده و بعدی را بزنید
    2. روی "ایجاد فایل" کلیک کنید ، نوع فایل را به "SystemVerilog" تغییر دهید ، و "tdoa" را در قسمت نام فایل تایپ کنید ، سپس روی OK کلیک کنید
    3. روی پایان کلیک کنید
    4. پنجره Define Module را با فشار دادن OK نادیده بگیرید (بعداً این موارد را رونویسی می کنیم)

      اگر می پرسد آیا مطمئن هستید ، روی Yes کلیک کنید

  6. در برگه منابع ، روی tdoa.sv (واقع در "منابع طراحی/design_1_wrapper") دوبار کلیک کنید

    کل کد SystemVerilog را از فایل tdoa.txt که در زیر ضمیمه شده است کپی/جایگذاری کنید

مرحله 4: بسته بندی و صادرات Ernie

بسته بندی و صادرات ارنی
بسته بندی و صادرات ارنی
  1. بررسی کنید که بلوک دیاگرام مانند تصویر پیوست شده به نظر برسد
  2. در برگه منابع ، روی design_1.bd راست کلیک کرده و "Create HDL Wrapper …" را انتخاب کنید.

    1. "کپی خروجی ایجاد شده برای ویرایش کاربر" را انتخاب کنید ، سپس "OK" را فشار دهید
    2. کد را از design_1_wrapper.txt ضمیمه شده در زیر کپی کرده و به جای کد ایجاد شده طراحی_1_wrapper.v بچسبانید
    3. ذخیره طراحی_1_wrapper.v
  3. در برگه منابع ، روی فایل ZYBO_Master.xdc در قسمت Constraints/constrs1 دوبار کلیک کنید

    1. کد را از ZYBO_Master.txt پیوست زیر کپی کرده و به جای کد موجود ZYBO_Master.xdc بچسبانید
    2. به پین های ورودی/خروجی زیر توجه کنید:

      1. L15: سیگنال PWM برای موتور سمت چپ (Pmod JA2 در Zybo)
      2. L14: سیگنال PWM برای موتور مناسب (Pmod JA8 در Zybo)
      3. V12: ورودی دروازه از سنسور صدا 1 (Pmod JE1 در Zybo)
      4. K16: ورودی دروازه از سنسور صدا 2 (Pmod JE2 در Zybo)
  4. در پنجره ناوبر جریان ، روی "Generate Bitstream" در قسمت Program and Debug کلیک کنید

    اگر فکر می کنید این کار بلافاصله انجام شده است ، احتمالاً اینطور نیست. جدی ، چای درست کن

  5. روی File-> Export-> Generate Hardware کلیک کنید

    گزینه "Include Bitstream" را علامت زده و OK را بزنید

  6. روی فایل-> راه اندازی SDK کلیک کنید

مرحله 5: ساختن ارنی

ساختن ارنی
ساختن ارنی
ساختن ارنی
ساختن ارنی
  1. سرووها را روی شاسی سروو نصب کنید.
  2. پس از برگه داده سرویس ها ، موارد زیر را انجام دهید:

    1. زمین سرویس ها را به پین های زمینی در Zybo's JA Pmod متصل کنید (به تصویر pinout پیوست شده مراجعه کنید)
    2. پین برق سروها را به باتری AA وصل کنید

      ما دریافتیم که وقتی سرووها به Zybo's Vdd متصل می شوند ، برد بیش از حد جریان می یابد و باعث می شود که برد به طور مداوم بازنشانی شود

    3. پین های سیگنال ورودی را به پایه های خروجی مناسب Zybo وصل کنید (چپ: JA2 ، راست: JA8)
  3. سنسورهای صوتی را در قسمت جلوی شاسی ، رو به جلو نصب کنید و آنها را تا حد ممکن به هم نزدیک نگه دارید
  4. از راهنمای اتصال سنسور صدا برای ادغام سنسورهای صدا استفاده کنید

    1. سیم و پایه های Vdd هر سنسور صدا را به زمین و پین های Vdd را روی JE Pmod Zybo سیم کشی کنید (به تصویر pinout پیوست شده مراجعه کنید)
    2. پین Gate سنسور صدا سمت چپ را به JE1 وصل کنید
    3. پین Gate سنسور صدا را به JE2 وصل کنید

مرحله 6: اولین BSP ارنی

اولین BSP ارنی
اولین BSP ارنی
اولین BSP ارنی
اولین BSP ارنی
  1. یک BSP ایجاد کنید تا پلتفرمی را که به تازگی ایجاد کرده ایم ، جمع بندی کنید.

    می توانید این را از طریق فایل -> جدید -> بسته پشتیبانی پشتیبانی دریافت کنید

  2. جادوگری ظاهر می شود که به شما در ایجاد BSP کمک می کند.

    1. ما می خواهیم این BSP را با پلتفرمی که اخیراً ایجاد کرده ایم گره بزنیم
    2. پلتفرم سخت افزاری باید با آنچه ما ایجاد کردیم مطابقت داشته باشد (تصویر 1 را ببینید)
    3. CPU ما CPU _0 خواهد بود.
    4. روی پایان کلیک کنید
    5. مطمئن شوید که lwip141 را برای درج با bsp خود در پنجره باز شده علامت بزنید (تصویر 2 را ببینید)

مرحله 7: FreeRTOS'ing Ernie

  1. آخرین نسخه FreeRTOS را از Sourceforge بارگیری کنید.

    اگر بارگیری اجرایی است ، آن را اجرا کنید تا فایلهای FreeRTOS را در فهرست پروژه خود استخراج کنید

  2. آن SDK را باز نگه دارید و روی File -> Import کلیک کنید.
  3. ما می خواهیم روی General-> From an Existing Workspace کلیک کنیم و سپس می خواهیم به جایی که FreeRTOS را بارگیری کرده ایم برویم.
  4. نسخه ی نمایشی ما در FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 قرار دارد. با انتخاب این پوشه ، باید شاهد سه پروژه ظاهر شویم (کد ما (سیستم عامل) ، BSP و بستر HW).

    فقط RTOSDemo را به فضای کاری فعلی خود وارد کنید

  5. در همه پروژه های پوشه "آبی" BSP مرجع را تغییر دهید

    1. راست کلیک کرده و گزینه “Change Referenced BSP” را انتخاب کنید.
    2. BSP را که برای Zybo خود ایجاد کرده اید انتخاب کنید
    3. ویرایش کد در پوشه های SDK Blue Xilinx پروژه های کد واقعی هستند.

مرحله 8: وارد کردن کد C Ernie

  1. در فهرست RTOSDemo/src ، main.c موجود را با فایل main.c پیوست شده در اینجا بازنویسی کنید.
  2. فایل main_sound.c را در فهرست RTOSDemo/src کپی کنید.

مرحله 9: اشکال زدایی ارنی

  1. Run -> Debug Configurations را انتخاب کنید
  2. در پنجره سمت چپ ، یک اجرای سیستم اشکال زدایی جدید ایجاد کنید
  3. در برگه تنظیمات هدف ،

    "Reset Entire System" را انتخاب کنید تا هم آن و هم ps7_init انتخاب شوند

  4. حالا برگه Application را انتخاب کنید.

    1. "بارگیری برنامه" را انتخاب کنید
    2. هسته cortexa9_0 را روی "توقف در ورود برنامه" تنظیم کنید
    3. روی Apply and Debug کلیک کنید.
  5. بررسی کنید که در فرآیند اشکال زدایی خطایی وجود ندارد
  6. با نگاهی دقیق به ربات ، دکمه Resume را فشار دهید تا برنامه بدون ضربه زدن به نقاط شکست اجرا شود
  7. ربات اکنون باید بچرخد و به سمت صداهای بلند حرکت کند. بله!

گام دهم: ایجاد خودمختاری ارنی

  1. هنگامی که پروژه شما آماده اجرا است (می توانید بدون اشکال از طریق اشکال زدایی اجرا کنید) آماده هستید تا آن را بر روی فلش مموری روی برد خود بارگذاری کنید.
  2. پروژه ای را که "پروژه بارگذاری اولیه مرحله" (FSBL) نامیده می شود ایجاد کنید و شامل تمام دستورالعمل هایی است که برد شما برای بارگیری فایل های پروژه شما (جریان بیت و سیستم عامل) در هنگام راه اندازی نیاز دارد.

    1. را انتخاب کنید: فایل-> جدید-> برنامه پروژه و پنجره زیر ظاهر می شود.
    2. نام دلخواه خود را بگذارید (یعنی "FSBL")
    3. اطمینان حاصل کنید که بستر سخت افزاری همان چیزی است که با آن کار می کنید
    4. بعدی را فشار دهید (پایان را فشار ندهید)
    5. قالب Zynq FSBL را انتخاب کنید
    6. روی پایان کلیک کنید.
  3. پس از تکمیل فرآیند ایجاد ، در صورت مشاهده دو پوشه جدید زیر در پنجره Project Explorer ، می دانید که آیا همه چیز کار کرده است یا خیر.
  4. ایجاد یک تصویر بوت در حال حاضر شما باید تصویر بوت را ایجاد کنید.

    1. روی پوشه پروژه خود راست کلیک کنید (در این مورد فایل من "RTOSDemo" نامیده می شود)
    2. از منوی کشویی روی "ایجاد تصویر بوت" کلیک کنید
    3. اگر همه چیز به درستی پیوند خورده باشد ، پروژه می داند که به چه فایل هایی نیاز دارد و پنجره زیر همانطور که در زیر می بینید ظاهر می شود (مهم این است که شما دارای 3 پارتیشن در قسمت Boot image ، bootloader ، فایل بیت خود و فایل.elf پروژه های خود هستید.)

      اگر اینطور نیست احتمالاً مشکلی در پیوند پروژه شما وجود دارد. اطمینان حاصل کنید که پوشه های پروژه به BSP های مربوطه متصل شده اند

    4. روی دکمه "ایجاد تصویر" کلیک کنید
  5. آخرین مرحله برای انجام نرم افزار این است که اکنون تصویر قبلی خود را در حافظه برد فلش کنید

    1. از نوار ابزار اصلی SDK ، Xilinx Tools-> Program Flash Memory را انتخاب کنید
    2. اطمینان حاصل کنید که بستر سخت افزاری صحیح انتخاب شده است و مسیر فایل تصویر به درستی به فایل. BIN ایجاد شده در مرحله قبل اشاره می کند.
    3. "qspi single" را از نوع فلش انتخاب کنید
    4. علامت "تأیید بعد از فلاش" را بزنید تا یکپارچگی را تضمین کنید اما نیازی به آن نیست
  6. پیکربندی برد خود در نهایت باید اطمینان حاصل کنید که حالت برنامه نویسی بردها (JP5) به درستی تنظیم شده است که هنگام راه اندازی BootROM از qspi (که شامل مواردی است که به تازگی فلش کرده اید) بوت شود.
  7. اکنون به سادگی دستگاه را چرخه بزنید و مطمئن شوید "Logic Configuration Done LED" (LED 10) سبز روشن است.

مرحله 11: ساختن ارنی ناز

  1. خز
  2. خز زیاد
  3. چشم های بزرگ!
  4. … کلاه بالایی

توصیه شده: