Chương 1: Giới thiệu đề tài Chương đầu tiên sẽ trình bày ngắn gọn lý do chọn đề tài của nhóm, mục tiêu đê ra của nhóm, những giới hạn đê tài và kêt quả mà nhóm mong muôn đạt được. Chương 2: Các công nghệ và các nghiên cứu liên quan tới smart camera Dựa vào các tài liệu nhóm tìm kiêm được trên Internet và kho dữ liệu trên website của khoa, chương này trình bày một số lý thuyết về một số công nghệ nền tảng cho việc tích hợp smart camera, cũng như nêu lên một sô bài báo, nghiên cứu về smart camera mà nhóm đã tìm hiéu được. Từ đó nhóm nghiên cứu tông kết, so sánh và đưa ra một mô hình sơ bộ cho hệ thông smart camera của đê tài. Chương 3: Thiết kế hệ thống smart camera Ở chương này nhóm đề xuất một hệ thống smart camera tích hợp YOLOv2 trên phần mềm Vivado 2019.2, sau đó giới thiệu cách hoạt động của hệ thống và một số kết quả tài nguyên tiêu tốn.
Chương 4: Hiện thực smart camera trên Ultra96-V2 Nhóm đề xuất xây dựng một hệ điều hành Linux được nạp lên Ultra96-V2 bao gồm việc kết hợp một số module Wifi, thư viện hỗ trợ hién thị ảnh OpenCV, thư viện Gstreamer, thiết kế pipeline streaming truyền hình ảnh. và xây dựng phần mềm điều khiển bộ YOLOv2 trên FPGA thông qua core ARM trên Ultra96-V2. Nhóm cũng trình bày một số kết quả đạt được cũng như đóng gói sản phẩm và demo ứng dụng phần mềm cho người dùng. Chương 5: Kết luận và hướng phát triển Chương cuối tông kết lại những công việc đã hoàn thành, khó khăn gặp phải của nhóm.
Đồng thời nhóm trình bày hướng đi cải tiến trong tương lai. CÁC CÔNG NGHỆ VÀ CÁC NGHIÊN CỨU LIÊN QUAN ĐÉN SMART CAMERA 2. Field Programmable Gate Array (FPGA) 2. Dinh nghĩa FPGA là một loại mạch tích hợp cỡ lớn dùng cau trúc mảng phan tử logic mà người dùng có thê lập trình được.
Chữ field ở đây muốn nói đến khả năng tái lập trình "bên ngoài" của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn. Vi mạch FPGA được cấu thành từ các bộ phận: s* Các khối logic cơ bản lập trình được (logic block). s* Hệ thống mạch liên kết lập trình được. s* Khối vao/ra (I/O Pads).
s* Phan tử thiết kế san khác như DSP slice, RAM, ROM, vi xử lý. FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dung ASIC, nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thư viện logic thì FPGA không đạt đựợc mức độ tối ưu như những loại này và còn hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp. Tuy vậy FPGA ưu việt hơn ở chỗ có thé tái cau trúc lại khi dang sử dụng, công đoạn thiết kế đơn giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng. Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô tả phần cứng HDL như VHDL, Verilog, AHDL.
Các hãng sản xuất FPGA lớn như Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết kế. Ngoài ra cũng có một số hãng thứ ba cung cấp các gói phần mềm kiêu này như Synopsys, Synplify. Các gói phần mềm này có khả năng thực hiện tất cả các bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL (con gọi là mã RTL). Kiến trúc tổng quát Kiến trúc cơ bản của FPGA gồm 3 thành phan chính sau: Khối I/O (hay gọi là các pin FPGA), khối kết nối (Interconnection), các khối logic cấu hình (Logic Blocks hoặc Configurable Logic Blocks - CLB).
Các khối CLB được tổ chức sắp xếp theo mảng với 2 hướng doc và ngang như Hình 2. Programmable I/O Blocks | [| Programmable Logic Blocks Interconnections L] L] ` [| L] [| Hình 2.1: Kiến trúc cơ ban của FPGA Khối CLB: thực thi các chức năng logic, cung cấp các tính toán và phần tử nhớ cơ bản được sử dụng trong hệ thống số. CLBs là phần tử cơ bản cấu thành FPGA, là nguồn tài nguyên logic chính tạo nên các mạch logic đồng bộ lẫn không đồng bộ. Một CLB cơ bản gồm một mạch tổ hợp có thé lập trình (còn gọi là LUT), một Flip-Flop hoặc một chốt (latch).
Kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop. Ngoài khối logic cơ bản đó, nhiều chip FPGA hiện nay còn có một hỗn hợp các khối khác nhau, một số trong đó chỉ được dùng cho các chức năng cụ thê, chăng hạn như các khôi bộ nhớ chuyên dụng, các bộ nhân (multipliers) hoặc các bộ ghép kênh (multiplexers). Tất nhiên, cấu hình bộ nhớ được sử dụng trên tất cả các khối logic được dùng dé điều khiển các chức năng cụ thê của mỗi phân tử bên trong khôi đó. Khối kết nối (Interconnections): dùng dé liên kết các khối logic và I/O lại với nhau dé tạo thành một thiết kế hoàn chỉnh.
Mạng liên kết trong FPGA được cầu thành từ các đường kết nối theo hai phương ngang và đứng. Tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau. Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programmable switch). Trong mỗi khối chuyên mạch chứa một số lượng nút chuyên lập trình được đảm bảo cho các dạng liên kết phức tạp khác nhau.
Khối I/O: cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đến các thành phần bên ngoài. Một trong những van dé quan trọng nhất trong thiết kế kiến trúc I/O là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ được hỗ trợ. Số lượng Pin (/O) của FPGA tương đối lớn, thường được chia ra làm 2 loại: User Pin (chân người dùng), Dedicated Pin (chân chuyên dung). User Pin: người dùng có thê lập trình như đầu vào, đầu ra hoặc cả đầu vào — ra.
Mỗi pin được kết nối với một “I/O Cell” bên trong FPGA, được cấp bởi các chan Vcc I/O (/O power pin). Dedicated Pin: được mã hóa cứng với một chức năng cụ thé như: s* Power Pin. “ Configuration Pin: các pin dé cấu hình FPGA. s* Dedicated Input hay Clock Pin: điều khiển mạng lưới clock trong FPGA.
s Voltage IO: cấp nguồn cho các công logic và flip-flops bên trong FPGA. Theo thời gian, các kiến trúc FPGA cơ bản đã được phát triển nhiều hơn thông qua việc bố sung các khối chức năng đặc biệt có thé lập trình như bộ nhớ Block RAMs, logic số hoc (ALU), bộ nhân, DSP-48 và thậm chi là bộ vi xử lý nhúng được thêm vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng. Kết quả là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA trước đó. Ưu nhược điểm của FPGA ¢ Uu điểm: > FPGA có thé được lập trình ở mức logic.
Do đó, nó có thé thực hiện xử lý tin hiệu song song và nhanh hơn hệ thống nhúng. > FPGA có thé được lập trình lại hoặc sử dụng lai bất kỳ lúc nào. FPGA cũng có thé được lập trình từ xa. > Phát triển FPGA rẻ hơn do các công cụ ít tốn kém hơn.
s* Nhược điểm: > Việc lập trình FPGA đòi hỏi kiến thức về ngôn ngữ lập trình VHDL/Verilog cũng như các nguyên tắc cơ bản về hệ thống kỹ thuật số. Việc lập trình không đơn giản như lập trình ngôn ngữ bậc cao C hay Python được điều khiển dựa trên bộ xử lý. Hơn nữa, các kỹ sư cần học cách sử dụng các công cụ mô phỏng đa dạng. > Khi bất kỳ FPGA cụ thể nào được sử dụng, các kỹ sư cần sử dụng tài nguyên có sẵn trên FPGA.
Điều này sẽ hạn chế về kích thước thiết kế cũng như tài nguyên hao tốn. Để tránh tình huống như vậy, FPGA thích hợp cần được chọn ngay từ đầu. Hệ thống nhúng 2. Dinh nghĩa Hệ thống nhúng là một loại hệ thống máy tính được thiết kế dé thực hiện một số tác vụ như truy cập, xử lý, lưu trữ và kiểm soát đữ liệu trong các hệ thong thiét bi điện tử khác nhau.
Các hệ thống nhúng là sự kết hop giữa phan cứng va phần mềm, ở đây phần mềm được nhúng vào phần cứng. Một trong những đặc điểm quan trọng nhất của các hệ thống này là nó chỉ cung cấp input/output trong một khoảng thời gian giới hạn. Sự hỗ trợ của các hệ thống nhúng giúp cho công việc trở nên hoàn thiện và thuận tiện hơn. Vì thế, các hệ thống nhúng thường được tích hợp trong rất nhiều thiết bị từ đơn giản đến phức tạp.2 mô tả mô hình cơ bản của một hệ thống nhúng.
Input Output Variables Variables Link to Other Systems Hình 2.2: Mô hình cơ bản của một hệ thông nhúng 2. Phần cứng của một hệ thống nhúng Hệ thống nhúng sử dụng nền tảng phần cứng dé thực thi các hoạt động. Phan cứng của hệ thống nhúng được lắp ráp cùng với bộ vi xử lý/vi điều khiển. Hệ thống phần cứng này bao gồm các yêu tố như giao diện cho các dữ liệu đầu vào/đầu ra, bộ nhớ, giao diện người dùng và bộ hiển thị dữ liệu.3 mô tả các phan cứng cơ bản của một hệ thống nhúng.
Phần mềm của một hệ thống nhúng Phần mềm được viết cho hệ thống nhúng được gọi là phần mềm nhúng hay firmware. Phần mềm nhúng là một chương trình được viết, biên dịch trên máy tính và nạp vào một hệ thống khác bao gồm một hoặc nhiều bộ vi xử lí đã được cài đặt san một hệ điều hành, bộ nhớ ghi chép được, các công giao tiếp được với các phan cứng khác. Phần mềm nhúng là phần mềm tạo nên phần hồn, phần trí tuệ của các sản phẩm nhúng. Phần mềm nhúng ngày càng có giá trị cao trong các sản phẩm nhúng.
Đặc trưng của một hệ thống nhúng Hệ thống nhúng được thiết kế để thực hiện một chức năng chuyên biệt nào đó. Day là điểm khác biệt so với các hệ thông máy tính khác như máy tính cá nhân hoặc các siêu máy tính có thể thực hiện nhiều chức năng khác nhau với những phép 11 tính phức tạp. Tính chuyên dụng của hệ thống nhúng giúp nâng cao khả năng sử dụng và tiết kiệm tài nguyên cho hệ thống. Tất cả các hệ thống máy tính đều có những hạn chế về các số liệu thiết kế, tài nguyên.
Số liệu thiết kế là thước đo dé đánh giá việc xây dựng các tính năng như độ lớn, công suất, chi phí và cả hiệu năng hoạt động của hệ thống.