Chương 1 sẽ giới thiệu dé tài nhóm đang thực hiện Chương 2: CÁC CÔNG NGHỆ VÀ CÁC NGHIÊN CỨU Chương2 sẽ trình bày những công cụ phục vụ trong việc thiết kế hệ thống và lý thuyết của các giải thuật được sử dụng trong hệ thông. Chương 3: THIẾT KE HE THONG Chương3 trình bay phương pháp thiết kế, 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. Chương 4: KET QUÁ DANH GIÁ HỆ THONG Chương 4 sẽ trình bày phương pháp đánh giá của thiết kế Chương 5: KET LUẬN VÀ HUONG PHÁT TRIEN Chương 5 sẽ tóm tắt toàn bộ công việc và kết quả đạt được. Đồng thời đề ra phương hướng phát triển cho đề tài trong tương lai cũng được trình bày ở chương này.
CÁC CÔNG NGHỆ VÀ CÁC NGHIÊN CỨU 2. Kiến trúc Field Programmable Gate Array (FPGA) 2. Dinh nghia Field Programmable Gate Arrays là một chip logic số có thé lập trình được, tức là ban có thé sử dung chúng dé lập trình cho hầu hết các chức năng của bat kỳ một thiết kế số nào. Đã có nhiều tai liệu trên website nói nhiều về FPGA nhưng ở đây mình muốn các bạn chú ý đến cái tên của nó.
Mình thấy trên các website người ta dịch chữ FIELD là dạng trường. Nhưng ở đây không phải như vậy. FIELD nghĩa là nơi sử dụng con chip. Field Programmable nghĩa là có thé lập trình được tại nơi của người sử dụng khác với một sỐ chip là phải lập trình tai nơi sản xuất.
FPGA được tạo thành từ một mảng (matrix hay array) các phần tử khả trình nên được gọi là Programmable Gate Array. Bộ nhớ tĩnh đầu tiên dựa trên FPGA (thường được gọi là SRAM trên nền FPGA) được đề xuất bởi Wahlstrom vào năm 1967. Sau đó bản thương mại của FPGA được Xilinx giới thiệu vào năm 1984. Lúc này nó gồm có một mảng của các khối logic có thé tái cầu hình — Configurable Logic Blocks (CLBs) và các đầu vào ra — /O (input/output).
Chip FPGA đầu tiên chứa 64 CLBs và 58 I/Os. Ngày nay, FPGA có thé chứa khoảng 330,000 CLBs và khoảng 1100 I/Os. Phan lớn các san pham FPGA trên thi trường hiện nay đều dựa trên công nghệ SRAM với 2 hãng sản xuất lớn nhất là Xilinx và Altera. Ngoài ra còn có các hãng khác sản xuất FPGA nhưng với mục đích chuyên dung (Atmel, Actel, Lattice, SiliconBlue,.
Kiến trúc tổng quát Kiến trúc cơ bản của FPGA được thể hiện qua Hình 2.1 bao gồm 3 thành phan chính: khối logic có thé tái cấu hình, Configurable Logic Blocks (CLBs) thực hiện các chức năng logic; các kết nối bên trong, Porgrammable Interconnect có thé lập trình dé kết nối các đầu vào và đầu ra của các CLB và các khối I/O bên trong, các khôi I/O cung cap giao tiêp giữa các ngoại vi và các tín hiệu bên trong. Programmable I/O Blocks L]I L] Programmable Logic Blocks a Programmable. Interconnections L] Hinh 2 I Khối CLB: Mục dich của việc lập trình khối logic trong FPGA là dé cung cấp các tính toán và các phần tử nhớ cơ bản được sử dụng trong hệ thống số. Một phần tử logic cơ bản gồm một mạch tô hợp có thể lập trình, một Flip-Flop hoặc một chốt (latch).
Ngoài khối logic cơ bản đó, nhiều Chip FPGA hiện nay gồm 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, cau hình bộ nhớ được sử dụng trên tất cả các khối logic 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): Các liên kết trong một FPGA dùng dé liên kết các khối logic và I/O lại với nhau để tạo thành một thiết kế. Bao gồm các bộ ghép kênh, các transistor và công đệm ba trạng thái.
Nhìn chung, các transistor và bộ ghép kênh được dùng trong một cum logic dé kết nối các phần tử logic lại với nhau, trong khi đó cả ba đều được dùng cho các cấu trúc định tuyến bên trong FPGA. Một số FPGA cung cấp nhiều kết nối đơn giản giữa các khối logic, một số khác cung cấp ít kết nối hơn nên định tuyến phức tạp hơn. Khối I/O: 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 ap cung cấp và điện áp tham chiếu sẽ được hỗ trợ.
Theo thời gian, các kiến trúc FPGA co bản đã được phát triển hơn nữa 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ớ trong (Block RAMs), logic số học (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 đó. Công nghệ SoC (System on Chip) 2. Dinh nghia hé thong SoC Thuật ngữ SoC là viết tắt cua System on a Chip.
Chip này có tên như vậy bởi vì nó bao gồm nhiều thành phan tính toán thiết yếu, tat cả đều được nén vào một con chip. SoC chủ yếu được sử dụng cho các thiết bi di động vì kích thước nhỏ và sử dung ít điện năng. Bắt đầu từ năm 1970, một số công ty đã có gắng đưa nhiều thành phần vào một con chip dé cung cấp năng lượng cho đồng hồ kỹ thuật s6. Intel đã thành công trong việc thực hiện điều này với Microma Digital Watch vào năm 1974, được tạo ra SoC thực sự đầu tiên.
Công ty đã tích hợp các chức năng thời gian và những bóng bán dẫn driver LCD vào một chip. SoC thực sự phát triển vào những năm 80 và 90. Máy tính cá nhân đã trở nên phổ biến vào những năm 80 và chúng cần được cung cấp năng lượng bởi những con chip nhỏ hơn. Trong những năm 90, điện thoại di động sử dụng SoC và xu hướng đó tiếp tục cho tới ngày nay.
Kiến trúc cơ bản của một hệ thong SoC Mỗi chip SoC có mật độ tích hợp các chức năng khác nhau nhưng hau hết các SoC đều có các thành phần cơ bản được giới thiệu ở Hình 2.2: Peripheral pS eS ie eee Internal Memory Memory controller generator | | ee er | | BUS 1 | | Reset generator L: | | | | System Bus | Power || : BUS2 — = BUS 2 — | management | L | 11 1 Internal 5 block | USB Video UART CAN s==='.== i= = ET Peripheral Hình 2.2 Kiến trúc cơ ban của một SoC vẰ% 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ụ quản 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 thông dụng như: lõi CPU ARM dùng tập lệnh ARM và được phát triển bởi hãng ARM; RISC-V là lõi CPU phát triển trên tập lệnh mở và miễn phí.
Bus hệ thống (System Bus): Bus hệ thống 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í. Nó giống như những con đường để vận chuyên đữ liệu giữa các thành phần trong SoC. Một số cấu trúc bus hệ thống như: AMBA (AXI, AHB, APB) được phát triển bởi ARM; Avalon được phát triển bởi Altera (hiện nay thuộc Intel); Wishbone được phát triển bởi Silicore Coporation. ~<4 Bộ nhớ (Memory): Bộ nhớ trong một SoC được gọi là bộ nhớ nội dé phân biệt với 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. > RAM - được sử dụng để lưu thông tin hoặc giá trị tính toán trong suốt quá trình hoạt động cua SoC. ¢ Thanh phần điều khiển nội (Internal Block): là thành phần chỉ điều khiển hoạt động bên trong SoC mà không điều khiển trực tiếp port nào của SoC như: > Khối tạo clock (clock generator): cung cấp clock cho toàn bộ các khối chức năng trong SoC ké cả CPU. > Khối tao reset (reset generator): cung cấp reset cho toàn bộ các khối chức năng trong SoC, kể cả CPU.
> Các khối giám sát (monitor): là các khối có chức năng giám sát hoạt động của SoC, kịp thời phát hiện ra các lỗi trong quá trình hoạt động dé khởi động lại một phần hoặc toàn bộ hệ thống. $% Ngoại vi (Peripheral): là các khối có thé điều khién trực tiếp các chân (pin hoặc port) của SoC dé thực thi một chức năng điều khiển bên ngoai SoC như: UART — truyền nhận dữ liệu nối tiếp; Video — điều khiển camera; Audio — thu phát âm thanh; ADC — chuyền đôi tín hiệu tương tự thành tín hiệu SỐ. Zynq UltraScale+ MPSoC Ở đây nhóm chỉ đề cập đến các thành phần được sử dụng trong đề tài này.3 mô tả các khối trong Zynq UltraScale+ MPSoC (tham khảo cấu hình tùy chỉnh ) PS UltraScale+ Block Design Configurable === FPD ——— RPU LPD SS APU na y Ÿ — gel (256 KB) —t | Ỷ > pl nnn j : vA | | »ị ccl be = De Xx L— Core SW ¬ FPD_DMA SP Sai | Ỷ Ÿ ý _Y ý Ỷ ky G7 LPD DA, (DDR3,DDR4, LPDDR3, LPDDR4) __ i AMS DDRContoler Hình 2.3 Các khối trong Zynq UltraScale+ MPSoC ° ox > Application Processing Unit (APU): chứa chip ARM Cortex-A53, bao gồm cả CPU va GPU, là một bộ xử lý da năng, có thể thực hiện cùng lúc nhiều chức năng khác nhau. ° ox > Cache Coherent Interconnect (CCI): đây là giao tiếp nhận biết bộ nhớ cache giữa các lõi CPU dé chúng có thé thay được các giá trị nhất quán khi truy cập cùng một bộ nhớ logic.
Đôi khi, chúng cũng được sử dụng giữa bộ đệm CPU và thiết bị ngoại vi để có quyền truy cập vào cùng một bộ nhớ. ° ox % Core Sofware (Core SW): các chương trình dé điều khiến tín hiệu các bus, truyền nhận dữ liệu. Progammable Logic (PL): là một bộ FPGA có thể lập trình được, người dùng phải sử dung ngôn ngữ mô tả phan cứng đặc trưng (Verilog/VHDL/SystemC.) thông qua các phần mềm chuyên biệt đề có thé tổng hợp và sử dụng. s%*% KR? AXI Bus: Advanced eXtensible Interface Bus là một giao thức dùng để trung chuyên dữ liệu giữa các thành phần trong hệ thống SoC, được phát triển bởi hãng ARM.