Оглавление:

Как сделать Эрни: 11 шагов
Как сделать Эрни: 11 шагов

Видео: Как сделать Эрни: 11 шагов

Видео: Как сделать Эрни: 11 шагов
Видео: Как делать массаж, если болит спина. 2024, Ноябрь
Anonim
Как сделать Эрни
Как сделать Эрни

Это руководство о том, как создать Эрни, вашего автономного робота, следующего за звуком, с помощью Zybo Board. В нем будет рассказано, как: создать проект в Vivado, создать драйверы серводвигателя, подобные PWM, в FPGA, взаимодействовать с двумя звуковыми датчиками, создать разницу во времени IP-адреса прибытия, использовать freeRTOS и запустить zybo от аккумуляторной батареи. Это был наш последний проект для класса операционных систем реального времени (CPE 439) в Cal Poly SLO.

Перечень оборудования:

  • 1 - Плата разработки ZYBO Zynq 7000
  • 2 - Сервопривод непрерывного вращения параллакса
  • 2 - Звуковой датчик (звуковой детектор SparkFun)
  • 1 - литий-ионный аккумулятор USB 5 В (для платы)
  • 4 - батарейки типа АА (для сервоприводов)
  • 1 - батарейный блок AA (с 4 слотами для батареек)
  • 1 - Кабель Micro USB
  • 1 - Макетная плата
  • многие - Мужской к Мужской Провода
  • 1 - Шасси сервопривода

Программные требования:

  • Xilinx Vivado Design Suite 2016.2
  • Digilent Adept 2.16.1

Шаг 1. Настройка проекта в Vivado для Эрни

Настройка проекта в Vivado для Эрни
Настройка проекта в Vivado для Эрни
Настройка проекта в Vivado для Эрни
Настройка проекта в Vivado для Эрни
Настройка проекта в Vivado для Эрни
Настройка проекта в Vivado для Эрни
  1. Появится мастер
  2. Нажмите "Далее
  3. Далее назовите проект

    1. Никогда не используйте имя проекта или путь к каталогу, в котором есть пробелы !!!!!
    2. Это будет проект RTL.
  4. Мы не хотим указывать источники
  5. Нажав Далее, мы попадаем на страницу детали. Мы используем ZYNQ XC7Z010-1CLG400C.

    1. У Vivado нет Zybo в списке предустановленных досок. Выберите: «parts», затем найдите xc7z010clg400-1.
    2. Если вы по ошибке выбрали неправильную часть, вы можете легко переключить чип: Инструменты -> Настройки проекта -> Общие и щелкнуть точки справа от «Проектное устройство».
  6. Щелкните "Создать конструкцию блока".

    Назовите его design_1 пока

  7. Вы увидите зеленую полосу с надписью Добавить 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 (в разделе Application Processor Unit - img 1)
      2. Включите сторожевой таймер (в разделе Application Processor Unit - img 1)
      3. Включите GPIO-> GPIO MIO (в Application Processor Unit - img 2)
      4. Включите GPIO-> ENET Reset (в разделе I / O Peripherals- img 2)
    2. Конфигурация часов

      Отключить FCLK0 (в PL Fabric Clocks - img 3)

  13. Щелкните ОК.
  14. «Запустить автоматизацию блока» сейчас.

    Будут вопросы по сигналам, скажем ОК

  15. Щелкните «Создать оболочку HDL».

    Мы захотим скопировать сгенерированную оболочку, чтобы пользователь мог редактировать ее

  16. Щелкните ОК.

Шаг 2: Создание ШИМ Эрни в Vivado

Создание ШИМ Эрни в Vivado
Создание ШИМ Эрни в Vivado
Создание ШИМ Эрни в Vivado
Создание ШИМ Эрни в Vivado

На этом шаге будет сгенерирован IP PWM с входными данными, отправленными через библиотеку AXI.

  1. Создайте блок AXI GPIO, щелкнув фон правой кнопкой мыши и выбрав «добавить IP».

    введите "AXI_GPIO" в строку поиска и выберите этот пакет

  2. Повторно настройте IP, дважды щелкнув новый блок axi_gpio_0

    1. в GPIO установите ширину GPIO на 2. Эти биты будут сигналом PWM_ON для управления каждым экземпляром модуля PWM.
    2. нажмите "включить двойной канал"
    3. в GPIO 2 установите ширину GPIO на 2. Эти биты будут сигналом PWM_FW для установки направления каждого экземпляра модуля PWM.
  3. Щелкните правой кнопкой мыши выходной порт axi_gpio_0, помеченный как GPIO, и выберите «Сделать внешним».

    1. Щелкните новый вывод с меткой GPIO, перейдите на вкладку «Свойства» на левой панели инструментов и измените имя на PWM_ON.
    2. Щелкните новый выход с меткой GPIO2, перейдите на вкладку «Свойства» на левой панели инструментов и измените имя на PWM_FW.
  4. Выберите Run Connection Automation на зеленом баннере над блок-схемой.

    Если вы вручную подключаете порты, адреса AXI могут не быть настроены, что в дальнейшем приведет к проблемам со связью

  5. На панели «Навигатор потока» выберите «Диспетчер проектов» -> «Добавить источники», чтобы создать новый настраиваемый блок IP.

    1. выберите "добавить или создать источники дизайна" и нажмите "Далее"
    2. нажмите «Создать файл», измените тип файла на «SystemVerilog» и введите «pwm» в поле имени файла, затем нажмите «ОК».
    3. нажмите Готово
    4. игнорируйте окно Define Module, нажав OK (мы перезапишем их позже)

      если вас спросят, уверены ли вы, нажмите Да

  6. На вкладке «Источники» дважды щелкните файл pwm.sv (находится в «Источники дизайна / design_1_wrapper»).

    Скопируйте / вставьте весь код SystemVerilog из файла pwm.txt, прикрепленного ниже

Шаг 3: Создание TDOA Эрни в Vivado

Создание TDOA Эрни в Vivado
Создание TDOA Эрни в Vivado
Создание TDOA Эрни в Vivado
Создание TDOA Эрни в Vivado

На этом шаге будет сгенерирован TDOA IP, вывод которого может быть прочитан через библиотеку AXI.

  1. Создайте блок AXI GPIO, щелкнув фон правой кнопкой мыши и выбрав «добавить IP».

    введите "AXI_GPIO" в строку поиска и выберите этот пакет

  2. Измените IP, дважды щелкнув новый блок axi_gpio_1

    1. в разделе «GPIO» установите флажок «Все входы» и установите ширину GPIO равной 32. Эта шина будет представлять собой разницу во времени прибытия между двумя датчиками.
    2. внутри блока axi_gpio_1 щелкните + рядом с портом GPIO, чтобы открыть gpio_io_i [31: 0].
  3. Щелкните правой кнопкой мыши порт вывода axi_gpio_1 с меткой gpio_io_i [31: 0] и выберите «Сделать внешним».

    Щелкните новый вход с надписью gpio_io_i [31: 0], перейдите на вкладку «Свойства» на левой панели инструментов и измените имя на TDOA_val

  4. Выберите Run Connection Automation на зеленом баннере над блок-схемой.

    Если вы вручную подключаете порты, адреса AXI могут не быть настроены, что в дальнейшем приведет к проблемам со связью

  5. На панели «Навигатор потока» выберите «Диспетчер проектов» -> «Добавить источники», чтобы создать новый настраиваемый блок IP.

    1. выберите "добавить или создать источники дизайна" и нажмите "Далее"
    2. нажмите «Создать файл», измените тип файла на «SystemVerilog» и введите «tdoa» в поле имени файла, затем нажмите «ОК».
    3. нажмите Готово
    4. проигнорируйте окно Define Module, нажав OK (мы перезапишем их позже)

      если вас спросят, уверены ли вы, нажмите Да

  6. На вкладке «Источники» дважды щелкните файл tdoa.sv (находится в «Источники дизайна / design_1_wrapper»).

    Скопируйте / вставьте весь код SystemVerilog из файла tdoa.txt, прикрепленного ниже

Шаг 4: упаковка и экспорт Эрни

Упаковка и экспорт Эрни
Упаковка и экспорт Эрни
  1. Убедитесь, что блок-схема похожа на прилагаемый снимок экрана.
  2. На вкладке «Источники» щелкните правой кнопкой мыши design_1.bd и выберите «Создать HDL Wrapper…»

    1. Выберите «Копировать сгенерированные выходные данные, чтобы пользователь мог их редактировать», затем нажмите «ОК».
    2. Скопируйте код из design_1_wrapper.txt, прикрепленного ниже, и вставьте его вместо сгенерированного кода design_1_wrapper.v.
    3. сохранить design_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. На панели «Навигатор потока» нажмите «Создать битовый поток» в разделе «Программы и отладка».

    если вы думаете, что это делается сразу же, вероятно, это не так. серьезно, завари чаю

  5. Нажмите Файл-> Экспорт-> Создать оборудование.

    Установите флажок «Включить битовый поток» и нажмите «ОК»

  6. Нажмите File-> Launch SDK.

Шаг 5: создание Эрни

Здание Эрни
Здание Эрни
Здание Эрни
Здание Эрни
  1. Установите сервоприводы на шасси сервопривода.
  2. Следуя таблице данных сервоприводов, сделайте следующее:

    1. Подключите заземление сервоприводов к контактам заземления на Zybo JA Pmod (см. прилагаемое изображение распиновки)
    2. Подключите силовой штырь сервоприводов к батарейному блоку AA

      Мы обнаружили, что когда сервоприводы подключены к Vdd Zybo, плата потребляет слишком много тока, что приводит к постоянному сбросу платы

    3. подключите контакты входного сигнала к соответствующим выходным контактам Zybo (слева: JA2, справа: JA8)
  3. установите звуковые датчики на передней части корпуса, лицом вперед, удерживая их как можно ближе друг к другу
  4. используйте руководство по подключению звукового датчика, чтобы интегрировать звуковые датчики

    1. Подключите заземление и контакты Vdd каждого звукового датчика к земле и контакты Vdd на Zybo JE Pmod (см. прилагаемое изображение распиновки)
    2. Подключите штифт затвора левого звукового датчика к JE1
    3. Подключите контакт Gate правого звукового датчика к JE2

Шаг 6: Первый BSP Эрни

Первый BSP Эрни
Первый BSP Эрни
Первый BSP Эрни
Первый BSP Эрни
  1. Создайте BSP, чтобы завершить только что созданную платформу.

    Вы можете получить это через File -> New -> Board Support Package

  2. Появится мастер, который поможет вам создать BSP.

    1. Мы хотим связать этот BSP с нашей только что созданной платформой, поэтому
    2. Аппаратная платформа должна совпадать с той, которую мы только что создали (см. Img 1).
    3. Нашим ЦП будет _0 ЦП.
    4. Нажмите Готово
    5. Обязательно отметьте lwip141 для включения с вашим bsp в всплывающем окне (см. Img 2)

Шаг 7: FreeRTOS'ing Эрни

  1. Загрузите последнюю версию FreeRTOS с Sourceforge.

    Если загрузка является исполняемым файлом, запустите его, чтобы извлечь файлы FreeRTOS в каталог проекта

  2. Не закрывайте этот SDK и нажмите Файл -> Импорт.
  3. Мы хотим щелкнуть Общие-> Из существующей рабочей области, а затем мы захотим перейти туда, где мы загрузили FreeRTOS.
  4. Наша демонстрация будет находиться в FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702. Выбрав эту папку, мы должны увидеть три всплывающих проекта (наш код (ОС), это BSP и HW Platform).

    ТОЛЬКО импортируйте RTOSDemo в текущее рабочее пространство

  5. Во всех проектах «синих» папок измените указанный BSP.

    1. Щелкните правой кнопкой мыши и выберите «Изменить ссылочный BSP».
    2. Выберите BSP, который вы только что создали для своего Zybo.
    3. Редактирование кода в Xilinx SDK Синие папки - это фактические проекты кода.

Шаг 8: Импорт кода Эрни на C

  1. В каталоге RTOSDemo / src замените существующий main.c прикрепленным сюда файлом main.c.
  2. Скопируйте файл main_sound.c в каталог RTOSDemo / src.

Шаг 9: отладка Эрни

  1. Выберите Выполнить -> Конфигурации отладки.
  2. На левой панели создайте новый запуск системного отладчика.
  3. На вкладке Target Setup,

    выберите «Сбросить всю систему», чтобы выбрать и это, и ps7_init

  4. Теперь выберите вкладку «Приложение».

    1. Выберите «скачать приложение»
    2. Установите ядро cortexa9_0 на «останавливаться при входе в программу»
    3. Щелкните Применить и отладить.
  5. Убедитесь, что в процессе отладки нет ошибок
  6. Внимательно следя за роботом, нажимайте кнопку «Возобновить», пока программа не запустится без каких-либо точек останова.
  7. Теперь робот должен повернуться и двинуться в сторону громких звуков. Ура!

Шаг 10: сделать Эрни автономным

  1. Как только ваш проект будет готов к работе (вы можете без проблем запустить его через отладчик), вы готовы загрузить его во флеш-память на вашей плате.
  2. Создайте проект так называемого «загрузчика первого этапа» (FSBL), который содержит все инструкции, которые потребуются вашей плате для загрузки файлов проекта (битовый поток и ОС) при запуске.

    1. Выберите: File-> New-> Application Project, должно появиться следующее окно.
    2. Назовите его как хотите (например, «ФСБЛ»)
    3. Убедитесь, что аппаратная платформа - это та, с которой вы работаете
    4. Нажмите "Далее" (не нажимайте "Готово")
    5. Выберите шаблон Zynq FSBL
    6. Нажмите "Готово".
  3. После завершения процесса создания вы узнаете, все ли работает, если вы увидите следующие две новые папки в окне Project Explorer.
  4. Создание загрузочного образа Теперь вам нужно будет создать загрузочный образ.

    1. Щелкните правой кнопкой мыши папку с вашим проектом (в данном случае мой называется «RTOSDemo»).
    2. В раскрывающемся списке нажмите «Создать загрузочный образ».
    3. Если все связано правильно, проект будет знать, какие файлы ему нужны, и следующее окно будет выглядеть так, как вы видите ниже (ключевым моментом является то, что у вас есть 3 раздела в разделе загрузочного образа, загрузчик, ваш битовый файл и файл.elf вашего проекта.).

      Если это не так, возможно, что-то не так со связью вашего проекта. Убедитесь, что папки проекта связаны с соответствующими BSP

    4. Нажмите кнопку «Создать изображение».
  5. Последний шаг, который нужно выполнить в программном обеспечении, - это прошить ранее созданный образ в память платы.

    1. На главной панели инструментов SDK выберите Xilinx Tools-> Program Flash Memory.
    2. Убедитесь, что выбрана правильная аппаратная платформа и что путь к файлу образа правильно указывает на файл. BIN, созданный на предыдущем шаге.
    3. Выберите «qspi single» из типа Flash.
    4. Отметьте «Проверять после прошивки», чтобы убедиться в целостности, но это не нужно.
  6. Сконфигурируйте вашу плату Наконец, вам нужно убедиться, что перемычка режима программирования плат (JP5) правильно установлена для выбора загрузки с qspi (который содержит то, что вы только что прошили) при запуске BootROM.
  7. Теперь просто выключите и снова включите устройство и убедитесь, что светодиод «Logic Configuration Done» (светодиод 10) горит зеленым.

Шаг 11: Делаем Эрни милым

  1. Шерсть
  2. Много меха
  3. Большие глаза!
  4. … Цилиндр

Рекомендуемые: