Chương 1: Giới thiệu đề tài Chương đầu tiên sẽ giới thiệu tổng quan về đề tài khóa luận, lý do nhóm chọn đề tài này, mục tiêu đề ra của nhóm, những giới hạn của đề tài và kết quả mà nhóm mong muốn đạt được. Chương 2: Cơ sở lý thuyết Chương nay trình bày những cơ sở lý thuyết được sử dụng có liên quan đến nội dung nghiên cứu của đề tài, những thông tin này dựa vào các nguồn tài liệu nhóm tìm kiếm được trên Internet, tham khảo các tài liệu có sẵn trên website của khoa KTMT cũng như những góp ý của các thầy cô, anh chị bao gồm: kiến thức chung về Field Programmable Gate Array (FPGA), Hệ thống SoC (System on Chip), Hệ thống nhúng, Thuật toán YOLOv2, OpenCV, SSH Tunnel, Streaming video. Chương 3: Thiết kế hệ thống và hiện thực smart camera Dựa vào những kiến thức về cơ sở lý thuyết đã tìm hiểu được ở Chương 2 thì ở Chương 3 này nhóm sẽ đề xuất một mô hình hệ thống một cách chỉ tiết của khóa luận. Giải thích nguyên lý hoạt động của cả hệ thống.
Chương 4: Thực nghiệm và đánh giá kết quả Sau khi đã xây dựng được hệ thống, nhóm tiến hành các bước chạy thử, thực nghiệm thu được các kết quả sau đó thực hiện việc đánh giá, so sánh với mục tiêu ban đầu của đề tài cũng như so sánh với kết quả thực nghiệm của đề tài trước. Chương 5: Kết luận và hướng phát triển Chương cuối sẽ tổng kết lại khóa luận, tóm tắt toàn bộ những công việc mà nhóm đã hoàn thành, những kết quả và thành tích đạt được. Đồng thời chương này nhóm sẽ đưa ra đề xuất cho những hướng phát triển tiếp theo của đề tài trong tương lai. 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 cấu 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: e Các khối logic cơ bản lập trình được (logic block) e Hệ thống mạch liên kết lập trình được e Khối vào ra (I/O Pads) e Phan tử thiết kế san khác như DSP slice, RAM, ROM, nhân 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 đang 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 (còn 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. Input/Output Blocks Logic Blocks | EE a | + Programmable Interconnect ia 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 cau 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é, chang 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 tat 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 đó. 10 Khối kết nối (Interconnections): dùng để 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 cau 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 vấn đề 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 (I/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 chân Vcc I/O (I/O power pin). Dedicated Pin: được mã hóa cứng với một chức năng cụ thể như: e Power Pin ¢ Configuration Pin: các pin dé cấu hình FPGA.
¢ Dedicated Input hay Clock Pin: điều khién mạng lưới clock trong FPGA. e Voltage IO: cấp nguồn cho các công logic va flip-flops bên trong FPGA Theo thời gian, các kiến trúc FPGA co ban đã đượ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 chí 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 đó.3 Ưu và nhược điểm của FPGA ¢ Uu điểm: e_ FPGA có thể được lập trình ở mức logic. Do đó, nó có thể thực hiện xử lý tín hiệu song song và nhanh hơn hệ thống nhúng.
11 e FPGA có thé được lập trình lại hoặc sử dụng lại bat kỳ lúc nào. FPGA cũng có thê được lập trình từ xa. e Phat triển FPGA rẻ hơn do các công cụ ít tốn kém hơn. Nhược điểm: e 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. e 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ó san 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.
Dé tránh tình huống như vậy, FPGA thích hợp cần được chọn ngay từ đầu 2. Hệ thống SoC (System on Chip) 2. Định nghĩa hệ thống SoC System on Chip là hệ thống mạch tích hợp bao gồm tat cả các thành phan cần thiết được tích hợp trên 1 chip duy nhất. Thiết kế của một hệ thống SoC thường bao gồm bộ xử lý trung tâm, memory, các port cho input va output, thiết bị lưu trữ thứ cấp và các ngoại vi như I2C, SPI, UART, CAN, Timers, v.
Các thiết kế SoC thường tiêu tốn ít năng lượng và có giá thành thấp hơn các hệ thống đa chip nếu so sánh cùng một thiết kế. Ngoài ra, hệ thống don chip cũng có tính ồn định cao hơn. Các ứng dụng xây dựng trên cơ sở sử dụng các hệ thống đơn chip cũng cho giá thành thấp hơn, không gian chiếm chỗ ít hơn. Một SoC ngày nay thường có khả năng xử lý chạy rất nhiều ứng dụng xử lý âm thanh, hình ảnh, giải mã tín hiệu,.
Cấu trúc phần cứng của một SoC Mỗi chip SoC có mật độ tích hợp chức năng khác nhau nhưng hầu hết các SoC đều có các thành phần cơ bản sau đây: 12 s* CPU (Central Processing Unit): Lõi vi xử lý là thành phần không thé thiếu trong một SoC làm nhiệm vụ quan lý toàn bộ hoạt động chính của một SoC. CPU đảm nhiệm luéng xử lý chính trong SoC, điều phối các hoạt động giữa các thành phần khác trong SoC, thực thi các tính toán chính. Một SoC có thể có một hoặc nhiều lõi CPU. Một số lõi CPU: ¢ Lõi CPU ARM dùng tập lệnh ARM và là sản phẩm của hãng ARM.
e RISC-V là các lõi CPU phát triển trên tập lệnh mở và miễn phí RISC-V. e SH (SuperH) dùng tập lệnh RISC được triển bởi Hitachi và nay là sản phẩm của Renesas. D> > ~ Bus hệ thong (System BUS): Bus hé thong là có nhiệm vụ kết nối thông suốt các thành phần chức năng khác nhau trong vi xử lý. Bus hệ thống giống như những con đường đề vận chuyền dữ liệu giữa các thành phần trong SoC.
Một số cau trúc bus hệ thống: e AMBA (AXL AHB, APB) là chuẩn bus phát triển bởi ARM. e CoreConnect là chuan bus phát triển bởi IBM. e Avalon là chuẩn bus phát triển bởi Altera, hiện nay đã thuộc Intel. e STBus là chuẩn bus phát triển bởi STMicroelectronic.
e Wishbone là chuân bus phát triển bởi Silicore Corporation, hiện nay đã được công bố miễn phí trên OpenCores. > > ~ Bộ nhớ (Memory): Bộ nhớ trong một SoC gọi là bộ nhớ nội dé phan biét voi bộ nhớ nằm ngoài SoC và giao tiếp với SoC thông qua các chân (pin) điều khiển của SoC. Bộ nhớ nội này có thé là: ¢ ROM: lưu cấu hình hoặc chương trình ban đầu của SoC.