Mục lục:
- Bước 1: Thiết lập dự án trong Vivado cho Ernie
- Bước 2: Tạo PWM của Ernie trong Vivado
- Bước 3: Tạo TDOA của Ernie trong Vivado
- Bước 4: Đóng gói và xuất Ernie
- Bước 5: Xây dựng Ernie
- Bước 6: BSP đầu tiên của Ernie
- Bước 7: FreeRTOS'ing Ernie
- Bước 8: Nhập mã C của Ernie
- Bước 9: Gỡ lỗi Ernie
- Bước 10: Làm cho Ernie tự chủ
- Bước 11: Làm cho Ernie dễ thương
Video: Làm thế nào để tạo ra Ernie: 11 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Đây là hướng dẫn về cách xây dựng Ernie, robot theo dõi âm thanh tự động của bạn, sử dụng Bảng Zybo. Nó sẽ bao gồm cách: tạo một dự án trong Vivado, tạo trình điều khiển động cơ servo giống PWM trong FPGA, giao diện với hai cảm biến âm thanh, tạo ra sự khác biệt về thời gian của IP đến, sử dụng freeRTOS và chạy zybo mà không cần pin. Đây là dự án cuối cùng của chúng tôi cho lớp Hệ điều hành thời gian thực (CPE 439) tại Cal Poly SLO.
Danh sách thiết bị:
- 1 - Ban phát triển ZYBO Zynq 7000
- 2 - Servo xoay liên tục thị sai
- 2 - Cảm biến âm thanh (Máy dò âm thanh SparkFun)
- Bộ pin 1 - 5v Lithium Ion USB (dành cho bo mạch)
- 4 - Pin AA (dành cho servo)
- 1 - Bộ pin AA (w / 4 khe cắm pin)
- 1 - Cáp micro USB
- 1 - Bảng mạch
- nhiều - Dây đực đến Nam
- 1 - Khung Servo
Yêu cầu phần mềm:
- Xilinx Vivado Design Suite 2016.2
- Digilent Adept 2.16.1
Bước 1: Thiết lập dự án trong Vivado cho Ernie
- Một trình hướng dẫn sẽ bật lên
- Bấm tiếp
-
Tên tiếp theo của dự án
- Không bao giờ sử dụng tên dự án hoặc đường dẫn thư mục có khoảng trắng trong đó !!!!!
- Đây sẽ là một dự án RTL.
- Chúng tôi không muốn chỉ định nguồn
-
Nhấp vào Tiếp theo, chúng ta đến trang Phần. Chúng tôi đang sử dụng ZYNQ XC7Z010-1CLG400C.
- Vivado không liệt kê Zybo là một trong những bảng được xác định trước. Chọn: “các bộ phận” rồi tìm kiếm xc7z010clg400-1.
- Nếu bạn chọn sai phần do nhầm lẫn, bạn có thể dễ dàng chuyển đổi chip: Công cụ -> Cài đặt dự án -> Chung và nhấp vào dấu chấm ở bên phải của “Thiết bị dự án”
-
Nhấp vào Tạo thiết kế khối.
Đặt tên cho nó là design_1 bây giờ
- Bạn sẽ thấy một thanh màu xanh lá cây cho biết Thêm IP, hãy nhấp vào nó.
-
Tìm kiếm Zynq.
- Nhấp đúp vào Hệ thống xử lý ZYNQ7,
- Khối này sẽ xuất hiện trong thiết kế khối của chúng tôi.
- Bạn sẽ thấy một thanh màu xanh lục có nội dung Run Block Automation, hãy nhấp vào nó.
- Tải xuống zybo_zynq_def.xml bên dưới.
-
Trong Vivado, nhấp vào “Nhập cài đặt XPS” và chọn “zybo_zynq_def.xml”
Điều này sẽ điền trước cấu hình khối Vivado với tất cả các thiết bị ngoại vi tích hợp sẵn trên bo mạch Zybo và chỉ định pin
-
Nhấp đúp vào khối ZYNQ.
-
Cấu hình MIO
- Bật Bộ hẹn giờ 0 (trong Bộ xử lý ứng dụng - img 1)
- Bật Cơ quan giám sát (trong Bộ xử lý ứng dụng- img 1)
- Bật GPIO-> GPIO MIO (trong Bộ xử lý ứng dụng - img 2)
- Bật GPIO-> ENET Reset (trong I / O ngoại vi- img 2)
-
Cấu hình đồng hồ
Tắt FCLK0 (trong Đồng hồ vải PL - img 3)
-
- Nhấp vào Ok.
-
“Chạy tự động hóa khối” ngay bây giờ.
Sẽ có một số câu hỏi về tín hiệu, hãy nói OK
-
Nhấp vào “Tạo HDL Wrapper”.
Chúng tôi sẽ muốn sao chép trình bao bọc đã tạo để cho phép người dùng chỉnh sửa
- Bấm OK.
Bước 2: Tạo PWM của Ernie trong Vivado
Bước này sẽ tạo một IP PWM với các đầu vào được gửi qua thư viện AXI.
-
Tạo khối GPIO AXI bằng cách nhấp chuột phải vào nền và nhấp vào "thêm IP"
nhập "AXI_GPIO" vào thanh tìm kiếm và chọn gói này
-
Tùy chỉnh lại IP bằng cách nhấp đúp vào khối axi_gpio_0 mới
- trong GPIO, đặt độ rộng GPIO thành 2. Các bit này sẽ là tín hiệu PWM_ON để điều khiển mỗi phiên bản mô-đun PWM.
- nhấp vào "bật kênh kép"
- trong GPIO 2, đặt độ rộng GPIO thành 2. Các bit này sẽ là tín hiệu PWM_FW để thiết lập hướng của từng cá thể mô-đun PWM.
-
Nhấp chuột phải vào cổng đầu ra axi_gpio_0 có nhãn GPIO và chọn "Tạo bên ngoài"
- Nhấp vào đầu ra mới có nhãn GPIO và điều hướng đến tab "thuộc tính" trên thanh công cụ bên trái và đổi tên thành PWM_ON
- Nhấp vào đầu ra mới có nhãn GPIO2 và điều hướng đến tab "thuộc tính" trên thanh công cụ bên trái và đổi tên thành PWM_FW
-
Chọn Chạy tự động hóa kết nối trong biểu ngữ màu xanh lá cây phía trên sơ đồ khối.
Nếu bạn kết nối các cổng theo cách thủ công, địa chỉ AXI có thể không được định cấu hình, dẫn đến các sự cố giao tiếp sau này
-
Trong Ngăn Điều hướng Luồng, chọn trình quản lý dự án -> Thêm Nguồn để tạo một khối IP tùy chỉnh mới
- chọn "thêm hoặc tạo nguồn thiết kế" và nhấn tiếp theo
- nhấp vào "tạo tệp", thay đổi loại tệp thành "SystemVerilog" và nhập "pwm" vào trường tên tệp, sau đó bấm OK
- bấm Kết thúc
-
bỏ qua cửa sổ Xác định Mô-đun bằng cách nhấn OK (chúng tôi sẽ ghi đè những điều này sau)
nếu nó hỏi bạn có chắc chắn không, hãy nhấp vào Có
-
Trong tab nguồn, nhấp đúp vào pwm.sv (nằm trong "Nguồn thiết kế / design_1_wrapper")
Sao chép / dán toàn bộ mã SystemVerilog từ tệp pwm.txt được đính kèm bên dưới
Bước 3: Tạo TDOA của Ernie trong Vivado
Bước này sẽ tạo ra một IP TDOA có đầu ra có thể được đọc qua thư viện AXI
-
Tạo khối GPIO AXI bằng cách nhấp chuột phải vào nền và nhấp vào "thêm IP"
nhập "AXI_GPIO" vào thanh tìm kiếm và chọn gói này
-
Tùy chỉnh lại IP bằng cách nhấp đúp vào khối axi_gpio_1 mới
- trong GPIO, chọn hộp "Tất cả đầu vào" và đặt chiều rộng GPIO thành 32. Xe buýt này sẽ là chênh lệch thời gian đến giữa hai cảm biến.
- bên trong khối axi_gpio_1, nhấp vào + bên cạnh cổng GPIO để hiển thị gpio_io_i [31: 0].
-
Nhấp chuột phải vào cổng đầu ra axi_gpio_1 có nhãn gpio_io_i [31: 0] và chọn "Tạo bên ngoài"
Nhấp vào đầu vào mới có nhãn gpio_io_i [31: 0] và điều hướng đến tab "thuộc tính" trên thanh công cụ bên trái và đổi tên thành TDOA_val
-
Chọn Chạy tự động hóa kết nối trong biểu ngữ màu xanh lá cây phía trên sơ đồ khối.
Nếu bạn kết nối các cổng theo cách thủ công, địa chỉ AXI có thể không được định cấu hình, dẫn đến các sự cố giao tiếp sau này
-
Trong Ngăn điều hướng luồng, chọn trình quản lý dự án -> Thêm nguồn để tạo khối IP tùy chỉnh mới
- chọn "thêm hoặc tạo nguồn thiết kế" và nhấn tiếp theo
- nhấp vào "tạo tệp", thay đổi loại tệp thành "SystemVerilog" và nhập "tdoa" vào trường tên tệp, sau đó bấm OK
- bấm Kết thúc
-
bỏ qua cửa sổ Xác định Mô-đun bằng cách nhấn OK (chúng tôi sẽ ghi đè những điều này sau)
nếu nó hỏi bạn có chắc chắn không, hãy nhấp vào Có
-
Trong tab nguồn, nhấp đúp vào tdoa.sv (nằm trong "Nguồn thiết kế / design_1_wrapper")
Sao chép / dán toàn bộ mã SystemVerilog từ tệp tdoa.txt đính kèm bên dưới
Bước 4: Đóng gói và xuất Ernie
- Xác minh rằng sơ đồ khối trông giống như ảnh chụp màn hình được đính kèm
-
Trong tab nguồn, nhấp chuột phải vào design_1.bd và chọn "Tạo HDL Wrapper…"
- Chọn "Sao chép đầu ra đã tạo để cho phép người dùng chỉnh sửa", sau đó nhấn "OK"
- Sao chép mã từ design_1_wrapper.txt được đính kèm bên dưới và dán nó vào vị trí của mã design_1_wrapper.v đã tạo
- lưu design_1_wrapper.v
-
Trong tab nguồn, bấm đúp vào tệp ZYBO_Master.xdc trong Ràng buộc / hằng số1
- Sao chép mã từ ZYBO_Master.txt được đính kèm bên dưới và dán mã đó vào vị trí của mã ZYBO_Master.xdc hiện có
-
Lưu ý các chân đầu vào / đầu ra sau:
- L15: Tín hiệu PWM cho động cơ bên trái (Pmod JA2 trên Zybo)
- L14: Tín hiệu PWM cho động cơ bên phải (Pmod JA8 trên Zybo)
- V12: cổng vào từ cảm biến âm thanh 1 (Pmod JE1 trên Zybo)
- K16: cổng vào từ cảm biến âm thanh 2 (Pmod JE2 trên Zybo)
-
Trong Ngăn Điều hướng Luồng, Nhấp vào "Tạo Dòng Bit" trong Chương trình và Gỡ lỗi
nếu bạn nghĩ rằng nó được thực hiện ngay lập tức, nó có thể là không. nghiêm túc, pha một ít trà
-
Nhấp vào Tệp-> Xuất-> Tạo phần cứng
Chọn "Bao gồm Bitstream" và nhấn OK
- Nhấp vào Tệp-> Khởi chạy SDK
Bước 5: Xây dựng Ernie
- Gắn servo vào khung servo.
-
Sau biểu dữ liệu cho các servos, hãy làm như sau:
- kết nối mặt đất của các servo với các chân nối đất trên Zybo's JA Pmod (xem hình ảnh sơ đồ chân đính kèm)
- kết nối chân nguồn của servo với bộ pin AA
Chúng tôi nhận thấy rằng khi các Servos được kết nối với Vdd của Zybo, bo mạch sẽ hút quá nhiều dòng điện, khiến bo mạch liên tục đặt lại
- kết nối các chân tín hiệu đầu vào với các chân đầu ra thích hợp của Zybo (trái: JA2, phải: JA8)
- gắn các cảm biến âm thanh vào phía trước khung máy, hướng về phía trước, giữ chúng càng gần nhau càng tốt
-
sử dụng hướng dẫn kết nối của cảm biến âm thanh để tích hợp các cảm biến âm thanh
- nối đất và chân Vdd của mỗi cảm biến âm thanh xuống đất và chân Vdd trên JE Pmod của Zybo (xem hình ảnh sơ đồ chân kèm theo)
- nối chân cổng của cảm biến âm thanh bên trái vào JE1
- nối chân cổng của cảm biến âm thanh bên phải sang JE2
Bước 6: BSP đầu tiên của Ernie
-
Tạo một BSP để kết thúc nền tảng mà chúng tôi vừa tạo.
Bạn có thể nhận được điều này thông qua File -> New -> Board Support Package
-
Một trình hướng dẫn sẽ bật lên để giúp bạn tạo BSP.
- Chúng tôi muốn gắn BSP này với Nền tảng của chúng tôi mà chúng tôi vừa tạo, vì vậy
- Nền tảng phần cứng phải phù hợp với nền tảng chúng tôi vừa tạo (xem img 1)
- CPU của chúng ta sẽ là CPU _0.
- Nhấp vào Kết thúc
- Hãy nhớ chọn lwip141 để đưa vào bsp của bạn trong cửa sổ bật lên (xem img 2)
Bước 7: FreeRTOS'ing Ernie
-
Tải xuống bản phát hành FreeRTOS mới nhất từ Sourceforge.
Nếu tệp tải xuống là tệp thực thi, hãy chạy tệp đó để giải nén tệp FreeRTOS vào thư mục dự án của bạn
- Giữ SDK đó mở và nhấp vào Tệp -> Nhập.
- Chúng tôi muốn nhấp vào Chung-> Từ Không gian làm việc Hiện tại, và sau đó chúng tôi sẽ muốn điều hướng đến nơi chúng tôi đã tải xuống FreeRTOS.
-
Bản demo của chúng tôi sẽ được đặt trong FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702. Khi chọn thư mục này, chúng ta sẽ thấy ba dự án bật lên (mã của chúng tôi (Hệ điều hành), BSP và Nền tảng HW).
CHỈ Nhập RTOSDemo vào không gian làm việc hiện tại của bạn
-
Trên tất cả các dự án thư mục “xanh lam”, hãy thay đổi BSP được tham chiếu
- Nhấp chuột phải và chọn “Thay đổi BSP được tham chiếu”.
- Chọn BSP bạn vừa tạo cho Zybo của mình
- Chỉnh sửa mã trong thư mục Xilinx’s SDK Blue là các dự án mã thực tế.
Bước 8: Nhập mã C của Ernie
- Trong thư mục RTOSDemo / src, ghi đè lên main.c hiện có bằng tệp main.c được đính kèm tại đây.
- Sao chép tập tin main_sound.c vào thư mục RTOSDemo / src.
Bước 9: Gỡ lỗi Ernie
- Chọn Run -> Debug Configurations
- Trên ngăn bên trái, tạo một lần chạy Trình gỡ lỗi hệ thống mới
-
Trong tab Thiết lập Mục tiêu,
chọn “Đặt lại toàn bộ hệ thống” để cả cái đó và ps7_init đều được chọn
-
Bây giờ chọn tab Ứng dụng.
- Chọn “tải xuống ứng dụng”
- Đặt lõi cortexa9_0 thành “dừng ở mục nhập chương trình”
- Nhấp vào Áp dụng và gỡ lỗi.
- Xác minh rằng không có lỗi nào trong quá trình gỡ lỗi
- Theo dõi kỹ rô bốt, nhấn nút Tiếp tục cho đến khi chương trình chạy mà không chạm vào bất kỳ điểm ngắt nào
- Robot bây giờ sẽ quay lại và di chuyển về phía có tiếng ồn lớn. Yay!
Bước 10: Làm cho Ernie tự chủ
- Khi tất cả dự án của bạn đã sẵn sàng (bạn có thể chạy mà không gặp sự cố nào thông qua trình gỡ lỗi), bạn đã sẵn sàng tải nó vào bộ nhớ flash trên bo mạch của mình.
-
Tạo dự án được gọi là “bộ nạp khởi động giai đoạn đầu” (FSBL) và chứa tất cả các hướng dẫn mà hội đồng quản trị của bạn sẽ cần để tải các tệp dự án của bạn (luồng bit và hệ điều hành) khi khởi động.
- Chọn: Tệp-> Mới-> Dự án Ứng dụng và cửa sổ sau sẽ xuất hiện.
- Đặt tên cho nó những gì bạn muốn (tức là “FSBL”)
- Đảm bảo nền tảng phần cứng là nền tảng bạn đang làm việc
- Nhấn tiếp theo (Không nhấn Kết thúc)
- Chọn mẫu Zynq FSBL
- Nhấp vào kết thúc.
- Khi quá trình tạo hoàn tất, bạn sẽ biết mọi thứ có hoạt động hay không nếu bạn thấy hai thư mục mới sau đây trong cửa sổ Project Explorer.
-
Tạo hình ảnh khởi động Bây giờ bạn sẽ cần tạo hình ảnh khởi động.
- Nhấp chuột phải vào thư mục dự án của bạn (trong trường hợp này của tôi được gọi là “RTOSDemo”)
- Nhấp vào “Tạo hình ảnh khởi động” từ trình đơn thả xuống
-
Nếu mọi thứ được liên kết chính xác, dự án sẽ biết nó cần tệp nào và cửa sổ sau sẽ trông như bạn thấy bên dưới (quan trọng là bạn có 3 phân vùng trong phần Hình ảnh khởi động, bộ nạp khởi động, tệp bit của bạn và tệp dự án của chính bạn.).
Nếu đây không phải là trường hợp, có thể có điều gì đó sai với liên kết dự án của bạn. Đảm bảo rằng các thư mục dự án được liên kết với BSP tương ứng của chúng
- Nhấp vào nút "Tạo hình ảnh"
-
Bước cuối cùng để thực hiện trong phần mềm là bây giờ flash hình ảnh đã tạo trước đó của bạn vào bộ nhớ của bo mạch
- Chọn từ thanh công cụ chính của SDK, chọn Xilinx Tools-> Program Flash Memory
- Đảm bảo rằng nền tảng phần cứng chính xác được chọn và đường dẫn tệp hình ảnh đang trỏ chính xác đến tệp. BIN được tạo ở bước trước.
- Chọn "qspi single" từ loại Flash
- Đánh dấu vào "Xác minh sau khi flash" để đảm bảo tính toàn vẹn nhưng nó không cần thiết
- Cấu hình bo mạch của bạn Cuối cùng, bạn cần đảm bảo rằng jumper chế độ lập trình bo mạch (JP5) được đặt chính xác để chọn khởi động từ qspi (chứa những gì bạn vừa flash) khi BootROM được chạy.
- Bây giờ, chỉ cần bật nguồn thiết bị và đảm bảo rằng “Đèn LED hoàn tất cấu hình logic” (LED 10) sáng màu xanh lục.
Bước 11: Làm cho Ernie dễ thương
- Lông thú
- Rất nhiều lông
- Đôi mắt to!
- … Mũ đội đầu
Đề xuất:
Làm thế nào để tạo ra một chiếc điện thoại có thể không dây! (Bộ đàm Arduino): 7 bước (có hình ảnh)
Làm thế nào để tạo ra một chiếc điện thoại có thể không dây! (Arduino Walkie Talkie): Mới hôm trước, tôi đang thực hiện một cuộc điện thoại rất quan trọng thì điện thoại chuối của tôi ngừng hoạt động! Tôi đã rất thất vọng. Đó là lần cuối cùng tôi bỏ lỡ cuộc gọi vì chiếc điện thoại ngu ngốc đó! (Theo nhận thức sâu sắc, tôi có thể đã hơi quá tức giận khi
Làm thế nào để tạo ra một Arcade gốc có thể tháo rời : 6 bước
How to Make Detachable an Original Arcade …: Tôi sẽ giải thích cách làm cho đồ nội thất arcade của bạn có thể tháo rời được
Làm thế nào để tạo bộ lọc thông thấp cho loa siêu trầm với IC NE5532. TỰ LÀM (ELECTROINDIA): 4 bước
Làm thế nào để tạo bộ lọc thông thấp cho loa siêu trầm với IC NE5532. DIY (ELECTROINDIA): Trong dự án này, tôi sẽ chỉ cho bạn cách bạn có thể tạo Bộ lọc thông thấp cho loa siêu trầm
Làm thế nào để tạo ra một chiếc áo sơ mi của người hâm mộ táo: 7 bước
Làm thế nào để tạo ra một chiếc áo sơ mi của người hâm mộ Apple: Như bạn có thể biết. Apple có một chương trình 16 năm tuổi được gọi là chương trình Apple Campus Rep. Đó là một cách để bất kỳ ai trong một tổ chức bốn năm có thể nhận được shwag miễn phí từ Apple trong khi đồng thời được trả tiền để tiếp thị máy tính, ipod của họ và những thứ thú vị khác
Làm thế nào để tải nhạc từ trang web ALMOST BẤT KỲ (Haha) (Miễn là bạn có thể nghe được thì bạn có thể nhận được nó Được thôi nếu nó được nhúng vào Flash mà bạn có thể không có khả năng) EDITED !!!!! Thông tin thêm: 4 bước
Làm thế nào để tải nhạc từ trang web ALMOST BẤT KỲ (Haha) (Miễn là bạn có thể nghe nó thì bạn có thể nhận được nó … Được thôi nếu nó được nhúng vào Flash mà bạn có thể không có khả năng) EDITED !!!!! Thông tin bổ sung: nếu bạn đã từng truy cập vào một trang web và nó phát một bài hát mà bạn thích và muốn nó thì đây là hướng dẫn cho bạn, không phải lỗi của tôi nếu bạn làm hỏng thứ gì đó (chỉ có cách là nếu bạn bắt đầu xóa nội dung mà không có lý do ) tôi đã có thể tải nhạc cho