Chương 1 Tổng quan Chương này trình bày tổng quan về đề tài đã thực hiện bao gồm mục tiêu, nhiệm vụ, các công việc thực hiện và tình hình nghiên cứu. Đồng thời giới thiệu về bối cảnh công nghệ hiện tại, lý do nhóm nghiên cứu lựa chọn đề tài này để thực hiện và các văn bản có liên quan đến đề tài. Chương 2 Cơ sở lý thuyết Chương này trình bày về các cơ sở lý thuyết đã được nhóm nghiên cứu sử dụng trong đề tài. Các kiến thức liên quan đến giải thuật phát hiện biên ảnh, lý thuyết về ảnh màu và xử lý ảnh, nền tảng SoC ZYNQ-7000, các giao diện giao tiếp giữa các IPCore và các mô hình tối ưu giải thuật trên nền tảng SoC ZYNQ-7000.
Chương 3 Thực hiện các giải thuật xử lý lọc ảnh trên HW/SW Trong chương này trình bày về việc thực hiện các giải thuật, các bước xây dựng platform cho hệ thống, các bước xây dựng IPCore cho đề tài, các bước thực thi các giải thuật phát hiện biên ảnh Sobel, Prewitt, Canny với các mô hình tối ưu trên nền tảng SoC ZYNQ-7000. Sơ đồ kết nối các IPCore cho ứng dụng trên phần cứng cũng như platform cho việc xây dựng ứng dụng trên pần mềm với lõi ARM. Chương 4 Kết quả Trong chương này trình bày về kết quả đã thực hiện được trên cả phần cứng lẫn phần mềm. Đồng thời trình bày các thông số như số cổng logic, số lượng FF, số lượng LUT,… đã được sử dụng trong thiết kế.
Bên cạnh đó là so sánh thời gian xử lý của giải thuật trên phần cứng và phần mềm. Chương 5 Kết luận và hướng phát triển Dựa trên những gì đã thực hiện chương này sẽ trình bày về nhận định của nhóm nghiên cứu về đề tài đã thực thi. Từ đó đề ra định hướng phát triển cho đề tài trong tương lai. 7 do an Chương 2 CƠ SỞ LÝ THUYẾT 2.
NỀN TẢNG SoC ZYNQ-7000 SoC – Hệ thống trên một vi mạch là một hướng đi mới công nghệ, là một vi mạch được tích hợp các thành phần của một máy tính hoặc các hệ thống điện tử khác. Với sự tiến bộ của công nghệ bán dẫn cho phép con người ngày càng có thể tích hợp nhiều hệ thống trên cùng vi mạch với ứng dụng đa dạng hơn và hiệu năng tốt hơn. Một SoC có thể bao gồm các khối chức năng kĩ thuật số (Digital), tương tự (Analog), tín hiệu kết hợp (Mixed-signal) và cả các khối tần số radio (RF). SoC là một công nghệ phổ biến trong các thiết bị như điện thoại di động, các thiết bị thông minh tiêu tốn ít năng lượng hay các hệ thống nhúng.
Các loại SoC có thể kể đến là SoC tích hợp một vi điều khiển, SoC tích hợp một vi xử lý và một loại SoC đặc biệt được thiết kế cho các ứng dụng riêng biệt hoàn toàn khác với 2 loại kia. Loại SoC này là PSoC (Programmable SoC), PSoC có một số thành phần không được cài đặt hoặc thiết lập trước mà có thể lập trình FPGA để thiết lập. Kiến trúc ZYNQ-7000 8 do an ZYNQ – 7000 là sản phẩm được sản xuất bởi Xilinx vào năm 2012, dựa trên nền tảng cấu trúc của PSoC. ZYNQ-7000 được tích hợp một hệ thống xử lý dựa trên lõi kép ARM Cortex-A9 (PS) và nền tảng FPGA Xilinx 28 nm (PL).
CPU ARM Cortex- A9 MPCore là trung tâm của PS, bao gồm các bộ nhớ on-chip, giao diện bộ nhớ ngoài và bộ thiết bị ngoại vi I/O phong phú [18]. Nền tảng ZYNQ-7000 hỗ trợ rất tốt cho các thiết kế SoC, các khối IP được kết nối thông qua giao diện bus AXI. Cấu trúc của ZYNQ-7000 gồm các khối sau: Khối hệ thống xử lý PS - Processing System Khối đơn vị xử lý - APU (Application processor unit) Khối giao diện giao tiếp bộ nhớ - MI (Memory interfaces) Khối thiết bị ngoại vi - IOP (I/O peripherals) Khối kết nối Khối logic lập trình PL - Programmable Logic Các khối logic có khả năng tái cấu hình - CLB (Configurable Logic Blocks) Khối RAM Khối xử lý tín hiệu số - DSP48E1 Khối XADC (Analog-to-digital converter) PS và PL có thể được kết hợp chặt chẽ hoặc không chặc chẽ bằng nhiều giao diện và các tín hiệu khác có tổng cộng hơn 3. Điều này cho phép tích hợp hiệu quả các bộ tăng tốc phần cứng do người dùng tạo và các chức năng khác trong PL có thể truy cập tới các bộ vi xử lý và cũng có thể truy cập các tài nguyên bộ nhớ trong hệ thống xử lý.
Thành phần PS của ZYNQ-7000 Trong PS khối APU bao gồm hai lõi vi xử lý ARM Cortex-A9. Trong đó mỗi lõi đều bao gồm các khối NEON, khối xử lý dữ liệu dấu chấm động (FPU: Floating Point Unit), khối quản lý bộ nhớ (MMU: Memory Management Unit), hai bộ nhớ cache I- cache (Instructions cache) và D-cache (Data cache) cho việc lưu trữ lệnh và dữ liệu. APU cũng bao gồm một bộ nhớ cache L2 và bộ nhớ on-chip (On-Chip Memory: OCM) dùng chung cho cả hai lõi vi xử lý. Ngoài ra APU còn bao gồm các giao diện ngoại vi, giao diện ghép nối bộ nhớ, mạng truyền thông và mạch tạo tín hiệu đồng bộ.
Truyền thông giữa PS với các thiết bị ngoại vi bên ngoài có thể thực hiện trực tiếp thông qua khối ghép nối MIO (Multiplexed Input/Output) gồm 54 chân. Ngoài ra có thể sử dụng các I/O là một phần của PL cho các ngoại vi của PS, việc này được thực hiện nhờ kết nối EMIO (Extended MIO). Các kết nối ngoại vi I/O trong PS gồm: 9 do an 2 kết nối SPI: cung cấp một phương thức truyền thông nối tiếp sử dụng 4 dây cho cả truyền và nhận. 2 kết nối I2C: cung cấp một phương thức truyền thông nối tiếp sử dụng 2 dây cho cả truyền và nhận 2 kết nối CAN: chuẩn truyền thông nối tiếp được sử dụng phổ biến trong ngành công nghiệp ô-tô 2 kết nối UART: chuần truyền thông nối tiếp thường dùng để kết nối thiết bị đầu cuối với máy tính cho mục đích gỡ rối, sửa lỗi.
4 bộ kết nối GPIO: bộ ghép nối song song 32-bit 2 kết nối SD: dùng ghép nối với SDCard 2 kết nối USB: tương thích chuẩn USB 2.0 2 kết nối Ethernet: hỗ trợ tốc độ kết nối 10Mbps, 100Mbps và 1Gbps Thành phần PL của ZYNQ-7000 PL trên ZYNQ-7000 bao gồm các khối logic có khả năng tái cấu hình và một số tài nguyên phần cứng chuyên dụng tương thích với chuẩn FPGA Artix-7 và Kintex-7 của Xilinx: Các thiết bị dựa trên Artix: Z-7010 và Z-7020 Các thiết bị dựa trên Kintex: Z-7030 và Z-7054 Cũng giống như các FPGA khác, phần PL của ZYNQ-7000 bao gồm các khối logic cấu hình (CLB), mỗi CLB gồm 2 slice. Mỗi slice chứa 4 LUT, 8 Flip-flop (FF), và một ma trận chuyển mạch (Switch Matrix) có chức năng định tuyến linh hoạt cho Hình 2. Cấu trúc khối CLB 10 do an việc kết nối giữa các phần tử trong một CLB hoặc từ khối CLB đến các tài nguyên khác trong PL. Ngoài ra còn có khối RAM và DSP.
GIAO THỨC AXI, AXI4 Để cho PS giao tiếp với các thiết bị ngoại vi phần cứng được khởi tạo trong PL, thì một giao thức truyền thông cho phép cả PS và PL truy cập thông tin chia sẻ trong bộ nhớ DDR3 một cách kịp thời và có tổ chức phải được thực hiện. Giao thức truyền thông này là một tiêu chuẩn công nghiệp được gọi là AXI. AXI là một phần của ARM AMBA (Advanced Microcontroller Bus Architecture) một loại bus điều khiển ở cấp độ vi mô đầu tiên được giới thiệu vào năm 1996. Phiên bản đầu tiên của AXI được đưa vào AMBA 3.0 được phát hành năm 2010, bao gồm phiên bản thứ hai của AXI là AXI4.
Có ba loại giao diện AXI4: AXI4, AXI4-Lite, AXI4-Stream [19]. Trong giao thức này các thành phần được kết nối theo mô hình chủ - tớ, nên tất cả các khối IP được thiết kế cho một nền tảng ZYNQ-7000 phải đóng vai trò hoặc là chủ hoặc là tớ trong giao thức AXI. Thiết bị chủ có khả năng khởi tạo các lệnh đọc và ghi, trong khi các thiết bị tớ chỉ có thể trả lời các lệnh này. Trong các giao thức ánh xạ bộ nhớ, tất cả các giao dịch liên quan đến khái niệm di chuyển địa chỉ đích trong không gian bộ nhớ hệ thống, trong đó các IP hoạt động trong một bản đồ bộ nhớ xác định.
Vì thế khi triển khai thiết bị ngoại vi hoặc xây dựng các IPCore thì chúng phải bao gồm các I/O cần thiết để cho phép chúng tham gia vào bus AXI. AXI4 cung cấp các cải tiến mang lại nhiều lợi ích trong hiệu năng, tính linh hoạt và tính khả dụng: Hiệu năng: bằng cách tiêu chuẩn hóa giao diện AXI, người thiết kế chỉ cần tìm hiểu một giao thức duy nhất cho các IPCore. Tính linh hoạt: Cung cấp các giao thức phù hợp cho nhiều ứng dụng khác nhau: AXI4: cho các yêu cầu ánh xạ bộ nhớ hiệu suất cao, tốc độ có thể lên tới 256 chu kỳ truyền dữ liệu chỉ với một pha địa chỉ duy nhất. AXI4-Lite: cho các giao tiếp ánh xạ bộ nhớ đơn giản, dung lượng thấp.
AXI4-Stream: cho các ứng dụng với luồng dữ liệu phát trực tiếp, tốc độ cao. Giao diện AXI4-Stream không có các pha địa chỉ, do đó không được xem là ánh xạ bộ nhớ. 11 do an Tính khả dụng: bằng cách chuyển sang chuẩn công nghiệp, người thiết kế dễ dàng hơn trong việc tái sử dụng các IPCore trên các nền tảng khác nhau do Xilinx cung cấp hay các nền tảng của các nhà cung cấp khác trên toàn thế giới, hay tích hợp các IPCore đã xây dựng với các IPCore được cung cấp bởi Xilinx hay của cộng đồng ARM với cùng tiêu chuẩn truyền thông. Giao diện AXI4 bao gồm năm kênh khác nhau: Đọc địa chỉ, ghi địa chỉ, đọc dữ liệu, ghi dữ liệu, ghi phản hồi.
Dữ liệu có thể di chuyển theo cả hai hướng giữa chủ và tớ một cách đồng thời, và kích thước dữ liệu có thể thay đổi được. Việc đọc và ghi của AXI4 được thể hiện trong hình sau: Hình 2. Hoạt động đọc và ghi dữ liệu trong giao diện AXI4 12 do an Trong các giao diện của chuẩn AXI4 thì AXI4-Stream có tính tối ưu cao trong các ứng dụng về xử lý ảnh. Giao thức AXI4-Stream được sử dụng cho các ứng dụng tập trung vào một mô hình dữ liệu tập trung và luồng dữ liệu, trong đó khái niệm về một địa chỉ là không có hoặc không cần thiết.
Mỗi AXI4-Stream hoạt động như một kênh đơn hướng duy nhất cho luồng dữ liệu có tính bắt tay trong quá trình truyền nhận dữ liệu.