Оглавление:
- Шаг 1. Настройка проекта в Vivado для Эрни
- Шаг 2: Создание ШИМ Эрни в Vivado
- Шаг 3: Создание TDOA Эрни в Vivado
- Шаг 4: упаковка и экспорт Эрни
- Шаг 5: создание Эрни
- Шаг 6: Первый BSP Эрни
- Шаг 7: FreeRTOS'ing Эрни
- Шаг 8: Импорт кода Эрни на C
- Шаг 9: отладка Эрни
- Шаг 10: сделать Эрни автономным
- Шаг 11: Делаем Эрни милым
Видео: Как сделать Эрни: 11 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
Это руководство о том, как создать Эрни, вашего автономного робота, следующего за звуком, с помощью 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 для Эрни
- Появится мастер
- Нажмите "Далее
-
Далее назовите проект
- Никогда не используйте имя проекта или путь к каталогу, в котором есть пробелы !!!!!
- Это будет проект RTL.
- Мы не хотим указывать источники
-
Нажав Далее, мы попадаем на страницу детали. Мы используем ZYNQ XC7Z010-1CLG400C.
- У Vivado нет Zybo в списке предустановленных досок. Выберите: «parts», затем найдите xc7z010clg400-1.
- Если вы по ошибке выбрали неправильную часть, вы можете легко переключить чип: Инструменты -> Настройки проекта -> Общие и щелкнуть точки справа от «Проектное устройство».
-
Щелкните "Создать конструкцию блока".
Назовите его design_1 пока
- Вы увидите зеленую полосу с надписью Добавить IP, щелкните ее.
-
Найдите Zynq.
- Дважды щелкните ZYNQ7 Processing System,
- Этот блок появится в нашем дизайне блока.
- Вы увидите зеленую полосу с надписью Run Block Automation, щелкните ее.
- Загрузите zybo_zynq_def.xml ниже.
-
В Vivado нажмите «Импортировать настройки XPS» и выберите «zybo_zynq_def.xml».
Это предварительно заполняет конфигурацию блока Vivado всеми встроенными периферийными устройствами платы Zybo и назначениями контактов
-
Дважды щелкните блок ZYNQ.
-
Конфигурация MIO
- Включите таймер 0 (в разделе Application Processor Unit - img 1)
- Включите сторожевой таймер (в разделе Application Processor Unit - img 1)
- Включите GPIO-> GPIO MIO (в Application Processor Unit - img 2)
- Включите GPIO-> ENET Reset (в разделе I / O Peripherals- img 2)
-
Конфигурация часов
Отключить FCLK0 (в PL Fabric Clocks - img 3)
-
- Щелкните ОК.
-
«Запустить автоматизацию блока» сейчас.
Будут вопросы по сигналам, скажем ОК
-
Щелкните «Создать оболочку HDL».
Мы захотим скопировать сгенерированную оболочку, чтобы пользователь мог редактировать ее
- Щелкните ОК.
Шаг 2: Создание ШИМ Эрни в Vivado
На этом шаге будет сгенерирован IP PWM с входными данными, отправленными через библиотеку AXI.
-
Создайте блок AXI GPIO, щелкнув фон правой кнопкой мыши и выбрав «добавить IP».
введите "AXI_GPIO" в строку поиска и выберите этот пакет
-
Повторно настройте IP, дважды щелкнув новый блок axi_gpio_0
- в GPIO установите ширину GPIO на 2. Эти биты будут сигналом PWM_ON для управления каждым экземпляром модуля PWM.
- нажмите "включить двойной канал"
- в GPIO 2 установите ширину GPIO на 2. Эти биты будут сигналом PWM_FW для установки направления каждого экземпляра модуля PWM.
-
Щелкните правой кнопкой мыши выходной порт axi_gpio_0, помеченный как GPIO, и выберите «Сделать внешним».
- Щелкните новый вывод с меткой GPIO, перейдите на вкладку «Свойства» на левой панели инструментов и измените имя на PWM_ON.
- Щелкните новый выход с меткой GPIO2, перейдите на вкладку «Свойства» на левой панели инструментов и измените имя на PWM_FW.
-
Выберите Run Connection Automation на зеленом баннере над блок-схемой.
Если вы вручную подключаете порты, адреса AXI могут не быть настроены, что в дальнейшем приведет к проблемам со связью
-
На панели «Навигатор потока» выберите «Диспетчер проектов» -> «Добавить источники», чтобы создать новый настраиваемый блок IP.
- выберите "добавить или создать источники дизайна" и нажмите "Далее"
- нажмите «Создать файл», измените тип файла на «SystemVerilog» и введите «pwm» в поле имени файла, затем нажмите «ОК».
- нажмите Готово
-
игнорируйте окно Define Module, нажав OK (мы перезапишем их позже)
если вас спросят, уверены ли вы, нажмите Да
-
На вкладке «Источники» дважды щелкните файл pwm.sv (находится в «Источники дизайна / design_1_wrapper»).
Скопируйте / вставьте весь код SystemVerilog из файла pwm.txt, прикрепленного ниже
Шаг 3: Создание TDOA Эрни в Vivado
На этом шаге будет сгенерирован TDOA IP, вывод которого может быть прочитан через библиотеку AXI.
-
Создайте блок AXI GPIO, щелкнув фон правой кнопкой мыши и выбрав «добавить IP».
введите "AXI_GPIO" в строку поиска и выберите этот пакет
-
Измените IP, дважды щелкнув новый блок axi_gpio_1
- в разделе «GPIO» установите флажок «Все входы» и установите ширину GPIO равной 32. Эта шина будет представлять собой разницу во времени прибытия между двумя датчиками.
- внутри блока axi_gpio_1 щелкните + рядом с портом GPIO, чтобы открыть gpio_io_i [31: 0].
-
Щелкните правой кнопкой мыши порт вывода axi_gpio_1 с меткой gpio_io_i [31: 0] и выберите «Сделать внешним».
Щелкните новый вход с надписью gpio_io_i [31: 0], перейдите на вкладку «Свойства» на левой панели инструментов и измените имя на TDOA_val
-
Выберите Run Connection Automation на зеленом баннере над блок-схемой.
Если вы вручную подключаете порты, адреса AXI могут не быть настроены, что в дальнейшем приведет к проблемам со связью
-
На панели «Навигатор потока» выберите «Диспетчер проектов» -> «Добавить источники», чтобы создать новый настраиваемый блок IP.
- выберите "добавить или создать источники дизайна" и нажмите "Далее"
- нажмите «Создать файл», измените тип файла на «SystemVerilog» и введите «tdoa» в поле имени файла, затем нажмите «ОК».
- нажмите Готово
-
проигнорируйте окно Define Module, нажав OK (мы перезапишем их позже)
если вас спросят, уверены ли вы, нажмите Да
-
На вкладке «Источники» дважды щелкните файл tdoa.sv (находится в «Источники дизайна / design_1_wrapper»).
Скопируйте / вставьте весь код SystemVerilog из файла tdoa.txt, прикрепленного ниже
Шаг 4: упаковка и экспорт Эрни
- Убедитесь, что блок-схема похожа на прилагаемый снимок экрана.
-
На вкладке «Источники» щелкните правой кнопкой мыши design_1.bd и выберите «Создать HDL Wrapper…»
- Выберите «Копировать сгенерированные выходные данные, чтобы пользователь мог их редактировать», затем нажмите «ОК».
- Скопируйте код из design_1_wrapper.txt, прикрепленного ниже, и вставьте его вместо сгенерированного кода design_1_wrapper.v.
- сохранить design_1_wrapper.v
-
На вкладке источников дважды щелкните файл ZYBO_Master.xdc в разделе Constraints / constrs1
- Скопируйте код из файла ZYBO_Master.txt, прикрепленного ниже, и вставьте его вместо существующего кода ZYBO_Master.xdc.
-
Обратите внимание на следующие контакты ввода / вывода:
- L15: сигнал PWM для левого мотора (Pmod JA2 на Zybo)
- L14: сигнал PWM для правого мотора (Pmod JA8 на Zybo)
- V12: вход гейта от звукового датчика 1 (Pmod JE1 на Zybo)
- K16: вход гейта от датчика звука 2 (Pmod JE2 на Zybo)
-
На панели «Навигатор потока» нажмите «Создать битовый поток» в разделе «Программы и отладка».
если вы думаете, что это делается сразу же, вероятно, это не так. серьезно, завари чаю
-
Нажмите Файл-> Экспорт-> Создать оборудование.
Установите флажок «Включить битовый поток» и нажмите «ОК»
- Нажмите File-> Launch SDK.
Шаг 5: создание Эрни
- Установите сервоприводы на шасси сервопривода.
-
Следуя таблице данных сервоприводов, сделайте следующее:
- Подключите заземление сервоприводов к контактам заземления на Zybo JA Pmod (см. прилагаемое изображение распиновки)
- Подключите силовой штырь сервоприводов к батарейному блоку AA
Мы обнаружили, что когда сервоприводы подключены к Vdd Zybo, плата потребляет слишком много тока, что приводит к постоянному сбросу платы
- подключите контакты входного сигнала к соответствующим выходным контактам Zybo (слева: JA2, справа: JA8)
- установите звуковые датчики на передней части корпуса, лицом вперед, удерживая их как можно ближе друг к другу
-
используйте руководство по подключению звукового датчика, чтобы интегрировать звуковые датчики
- Подключите заземление и контакты Vdd каждого звукового датчика к земле и контакты Vdd на Zybo JE Pmod (см. прилагаемое изображение распиновки)
- Подключите штифт затвора левого звукового датчика к JE1
- Подключите контакт Gate правого звукового датчика к JE2
Шаг 6: Первый BSP Эрни
-
Создайте BSP, чтобы завершить только что созданную платформу.
Вы можете получить это через File -> New -> Board Support Package
-
Появится мастер, который поможет вам создать BSP.
- Мы хотим связать этот BSP с нашей только что созданной платформой, поэтому
- Аппаратная платформа должна совпадать с той, которую мы только что создали (см. Img 1).
- Нашим ЦП будет _0 ЦП.
- Нажмите Готово
- Обязательно отметьте lwip141 для включения с вашим bsp в всплывающем окне (см. Img 2)
Шаг 7: FreeRTOS'ing Эрни
-
Загрузите последнюю версию FreeRTOS с Sourceforge.
Если загрузка является исполняемым файлом, запустите его, чтобы извлечь файлы FreeRTOS в каталог проекта
- Не закрывайте этот SDK и нажмите Файл -> Импорт.
- Мы хотим щелкнуть Общие-> Из существующей рабочей области, а затем мы захотим перейти туда, где мы загрузили FreeRTOS.
-
Наша демонстрация будет находиться в FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702. Выбрав эту папку, мы должны увидеть три всплывающих проекта (наш код (ОС), это BSP и HW Platform).
ТОЛЬКО импортируйте RTOSDemo в текущее рабочее пространство
-
Во всех проектах «синих» папок измените указанный BSP.
- Щелкните правой кнопкой мыши и выберите «Изменить ссылочный BSP».
- Выберите BSP, который вы только что создали для своего Zybo.
- Редактирование кода в Xilinx SDK Синие папки - это фактические проекты кода.
Шаг 8: Импорт кода Эрни на C
- В каталоге RTOSDemo / src замените существующий main.c прикрепленным сюда файлом main.c.
- Скопируйте файл main_sound.c в каталог RTOSDemo / src.
Шаг 9: отладка Эрни
- Выберите Выполнить -> Конфигурации отладки.
- На левой панели создайте новый запуск системного отладчика.
-
На вкладке Target Setup,
выберите «Сбросить всю систему», чтобы выбрать и это, и ps7_init
-
Теперь выберите вкладку «Приложение».
- Выберите «скачать приложение»
- Установите ядро cortexa9_0 на «останавливаться при входе в программу»
- Щелкните Применить и отладить.
- Убедитесь, что в процессе отладки нет ошибок
- Внимательно следя за роботом, нажимайте кнопку «Возобновить», пока программа не запустится без каких-либо точек останова.
- Теперь робот должен повернуться и двинуться в сторону громких звуков. Ура!
Шаг 10: сделать Эрни автономным
- Как только ваш проект будет готов к работе (вы можете без проблем запустить его через отладчик), вы готовы загрузить его во флеш-память на вашей плате.
-
Создайте проект так называемого «загрузчика первого этапа» (FSBL), который содержит все инструкции, которые потребуются вашей плате для загрузки файлов проекта (битовый поток и ОС) при запуске.
- Выберите: File-> New-> Application Project, должно появиться следующее окно.
- Назовите его как хотите (например, «ФСБЛ»)
- Убедитесь, что аппаратная платформа - это та, с которой вы работаете
- Нажмите "Далее" (не нажимайте "Готово")
- Выберите шаблон Zynq FSBL
- Нажмите "Готово".
- После завершения процесса создания вы узнаете, все ли работает, если вы увидите следующие две новые папки в окне Project Explorer.
-
Создание загрузочного образа Теперь вам нужно будет создать загрузочный образ.
- Щелкните правой кнопкой мыши папку с вашим проектом (в данном случае мой называется «RTOSDemo»).
- В раскрывающемся списке нажмите «Создать загрузочный образ».
-
Если все связано правильно, проект будет знать, какие файлы ему нужны, и следующее окно будет выглядеть так, как вы видите ниже (ключевым моментом является то, что у вас есть 3 раздела в разделе загрузочного образа, загрузчик, ваш битовый файл и файл.elf вашего проекта.).
Если это не так, возможно, что-то не так со связью вашего проекта. Убедитесь, что папки проекта связаны с соответствующими BSP
- Нажмите кнопку «Создать изображение».
-
Последний шаг, который нужно выполнить в программном обеспечении, - это прошить ранее созданный образ в память платы.
- На главной панели инструментов SDK выберите Xilinx Tools-> Program Flash Memory.
- Убедитесь, что выбрана правильная аппаратная платформа и что путь к файлу образа правильно указывает на файл. BIN, созданный на предыдущем шаге.
- Выберите «qspi single» из типа Flash.
- Отметьте «Проверять после прошивки», чтобы убедиться в целостности, но это не нужно.
- Сконфигурируйте вашу плату Наконец, вам нужно убедиться, что перемычка режима программирования плат (JP5) правильно установлена для выбора загрузки с qspi (который содержит то, что вы только что прошили) при запуске BootROM.
- Теперь просто выключите и снова включите устройство и убедитесь, что светодиод «Logic Configuration Done» (светодиод 10) горит зеленым.
Шаг 11: Делаем Эрни милым
- Шерсть
- Много меха
- Большие глаза!
- … Цилиндр
Рекомендуемые:
Как сделать крутые часы своими руками - StickC - Сделать просто: 8 шагов
Сделай сам Как сделать классные часы - StickC - Легко сделать: в этом уроке мы узнаем, как запрограммировать ESP32 M5Stack StickC с Arduino IDE и Visuino для отображения времени на ЖК-дисплее, а также установить время с помощью кнопок StickC
Как сделать дрон с помощью Arduino UNO - Сделать квадрокоптер с помощью микроконтроллера: 8 шагов (с картинками)
Как сделать дрон с помощью Arduino UNO | Сделать квадрокоптер с помощью микроконтроллера: ВведениеПосетите мой канал на Youtube Дрон - очень дорогой гаджет (продукт) для покупки. В этом посте я собираюсь обсудить, как я могу сделать это дешево ?? И как вы можете сделать это своими руками по дешевой цене … Ну, в Индии все материалы (моторы, регуляторы
КАК СДЕЛАТЬ ARDUINO NANO / MINI - Как записать загрузчик: 5 шагов
КАК СДЕЛАТЬ ARDUINO NANO / MINI | Как записать загрузчик: в этих инструкциях я покажу вам, как сделать Arduino MINI с нуля. Процедуру, описанную в этих инструкциях, можно использовать для создания любых плат Arduino в соответствии с вашими требованиями к проекту. Пожалуйста, посмотрите видео для лучшего понимания
Музыкальный реактивный свет -- Как сделать супер простой музыкальный реактивный свет, чтобы сделать рабочий стол приятным: 5 шагов (с изображениями)
Музыкальный реактивный свет || Как сделать супер простой музыкальный реактивный свет для настольного компьютера. бас, который на самом деле является низкочастотным звуковым сигналом. Строить очень просто. Мы
Как сделать дешевое как бесплатное и легкое «руки помощи» для мелких деталей: 6 шагов
Как сделать дешевый как бесплатный и легкие «руки помощи» для мелких деталей. Итак, сегодня утром (2.23.08) и вчера (2.22.08) я пытался что-то припаять, но у меня не было руки помощи, так что я сделал сегодня утром. (2.23.08) У меня отлично работает, обычно без проблем. ОЧЕНЬ легко сделать, в основном бесплатно, всем лет