Tải bản đầy đủ (.pdf) (61 trang)

Thiết kế giao tiếp camera và hiển thị màn hình vga trên kit de10

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.07 MB, 61 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH </b>

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ

<b>BỘ MÔN ĐIỆN TỬ </b>

---o0o---

<b>ĐỒ ÁN 1 </b>

<b>THIẾT KẾ GIAO TIẾP CAMERA VÀ HIỂN THỊ MÀN HÌNH VGA TRÊN KIT DE10 </b>

<b>GVHD: PGS. TS Trương Quang Vinh SVTH: Tiêu Tuấn Đạt </b>

<b>MSSV: 2012950 </b>

<b>TP. HỒ CHÍ MINH, THÁNG 05 NĂM 2023 </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<i><b>LỜI CẢM ƠN </b></i>

Đầu tiên, em xin được gửi lời cám ơn chân thành nhất đến Thầy hướng dẫn Môn học Đồ Án 1, PGS TS. Trương Quang Vinh. Thầy đã là người định hướng, gợi ý về một đề tài, có tính chất nghiên cứu nhằm nâng cao kiến thức tiếp cận với kỹ thuật hiện đại. Trong thời gian thực hiện đồ án, Thầy đã truyền đạt kiến thức cũng như kinh nghiệm và những lời khuyên quý báu giúp em có thể hiểu rõ hơn và giải quyết vấn đề tốt hơn. Nhờ sự chỉ bảo của Thầy, Em đã hồn thành mơn học đồ án 1 cũng như nắm được cách thức thực hiện một đề tài kỹ thuật liên quan đến hệ thống SoC FPGA và đây sẽ là hành trang quý giá cho thực hiện luận văn cũng như con đường phát triển sau này.

Em cũng xin gửi lời cám ơn đến quý Thầy Cô Giảng viên trường Đại học Bách Khoa – Đại học Quốc gia Thành phố Hồ Chí Minh, cũng như quý Thầy, Cô là Giảng viên khoa Điện – Điện tử đã tận tình truyền đạt cho em nhiều kiến thức quý báu. Bên cạnh đó, em xin gửi lời cám ơn chân thành các thành viên của IC Design Lab đã nhiệt tình hỗ trợ, giúp đỡ trong q trình thực hiện mơn học đồ án 1. Em đã cố gắng trình bày rõ ràng các kiến thức tìm hiểu, nghiên cứu trong môn đồ án 1 này xong không thể tránh khỏi những sai sót và hạn chế. Em rất mong nhận được sự góp ý, chỉ bảo từ quý Thầy, Cơ.

<i>Tp. Hồ Chí Minh, ngày 25 tháng 05 năm 2023.</i>

<b> </b> <i><b>Sinh viên </b></i>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>1.3. Tổng quan Kit DE10-standard ... 5 </b>

<b>2. Tìm hiểu về Qsys và project GHDR từ Intel ... 17 </b>

<b>2.1. Qsys là gì? ... 17 </b>

<b>2.2. Thành phần Qsys là gì? ... 18 </b>

<b>2.3. Project GHRD (Golden Hardware Reference Design) ... 18 </b>

<b>3. Tìm hiểu về giải thuật Haar Cascade ... 22 </b>

<b>3.1. Haar Cascade là gì?... 22 </b>

<b>3.2. Đặc trưng giải thuật Haar Cascade ... 22 </b>

<b>3.3. Hoạt động của giải thuật Haar Cascade... 24 </b>

<b>III. THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG ... 24 </b>

<b>1. Yêu cầu thiết kế ... 24</b>

<b>2. Phân tích thiết kế ... 24</b>

<b>3. Thực hiện phần cứng ... 26 </b>

<b>IV. THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM (NẾU CÓ) ... 34 </b>

<b>1. Yêu cầu thiết kế ... 34 </b>

<b>2. Thiết kế phần mềm ... 34 </b>

<b>V. KẾT QUẢ THỰC HIỆN ... 37 </b>

<b>1. Khởi tạo hệ thống SoC ... 37 </b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>1.1. Khởi tạo môi trường linux trên board ... 37 </b>

<b>1.2. Thiết lập kết nối máy tính với board ... 38 </b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>DANH SÁCH HÌNH MINH HỌA</b>

Hình 1. Các thành phần board DE10 Standard ... 6

Hình 2. Hình ảnh mặt trước kit DE10 ... 6

Hình 3. Hình ảnh mặt sau Kit DE10 ... 7

Hình 4. Sơ đồ khối Kit DE10 ... 7

Hình 5. Avalon MM slave ... 11

Hình 6. Avalon MM master ... 14

Hình 7. SoC Architecture (Nguồn:Cyclone V Hard Processor System Technical Reference Manual) ... 16

Hình 8. Altera DE-series board ... 17

Hình 9. Hình ảnh mơ tả cấu trúc GHRD cung cấp từ terrasic ... 19

Hình 10. Ba loại bộ lọc theo hình chữ nhật ... 23

Hình 11. Nhận diện khn mặt bằng ba loại bộ lọc ... 23

Hình 12. Quy trình hoạt động giải thuật Haar Cascade ... 24

Hình 13. Thành Phần IP sử dụng trong hệ thống Qsys cấu hình thêm VGA vào project GHRD ... 25

Hình 14. Các kết nối của project GHRD trong Qsys ... 27

Hình 15. Generate file .sopcinfo ... 28

Hình 16. Generate file .sopcinfo ... 28

Hình 17. Generate file .sopcinfo ... 29

Hình 18. Sau khi generate file .sopcinfo ... 29

Hình 19. Nội dung script tạo header cho HPS trong Qsys ... 29

Hình 20. Quá trình chạy script ... 30

Hình 21. Sau khi generate file header ... 30

Hình 22. Nội dung file hps_0.h vừa tạo ... 31

Hình 23. Quá trình biên dịch hệ thống FPGA ... 31

Hình 24. Quá trình biên dịch hệ thống FPGA ... 32

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Hình 25. Quá trình biên dịch hệ thống FPGA ... 32

Hình 26. File .sof được tạo sau quá trình biên dịc ... 33

Hình 27. Lưu đồ phần mềm nhận diện khn mặt thực hiện trên vi xử lý ARM ... 35

Hình 28. Phần mềm format thẻ nhớ ... 37

Hình 29. Các bước khởi tạo mơi trường Linux ... 38

Hình 30. Các bước khởi tạo mơi trường Linux ... 38

Hình 31. Các bước thiết lập kết nối máy tính tới board ... 38

Hình 32. Các bước thiết lập kết nối máy tính tới board ... 39

Hình 33. Các bước thiết lập kết nối máy tính tới board ... 39

Hình 34. Các bước thiết lập kết nối máy tính tới board ... 40

Hình 35. Các bước thiết lập kết nối máy tính tới board ... 40

Hình 36. Các bước thiết lập kết nối máy tính tới board ... 40

Hình 37. Các bước thiết lập kết nối máy tính tới board ... 41

Hình 38. Các bước thiết lập kết nối máy tính tới board ... 41

Hình 39. Vị trí của script tạo file .rbf ... 42

Hình 40. Nội dung của script tạo file .rbf ... 42

Hình 41. Quá trình chạy script tạo file .rbf ... 42

Hình 42. File .rbf sau khi được tạo ... 43

Hình 43. File .dtb sau khi tạo ... 43

Hình 44. Phân vùng boot trên thẻ nhớ ... 44

Hình 45. Kết nối trên board ... 44

Hình 46. Các bước nạp phần cứng lên board ... 44

Hình 47. Các bước nạp phần cứng lên board ... 45

Hình 48. Các bước nạp phần cứng lên board ... 45

Hình 49. Các bước nạp phần cứng lên board ... 46

Hình 50. Các bước vận hành phần mềm trong hệ thống SoC ... 46

Hình 51. Nội dung file Makefile ... 47

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Hình 52. Include thư viện OpenCV ... 47

Hình 53. Version của OpenCV ... 48

Hình 54. Thư mục chứa thư viện của OpenCV ... 48

Hình 55. Các bước vận hành phần mềm trong hệ thống SoC ... 48

Hình 56. Các bước vận hành phần mềm trong hệ thống SoC ... 49

Hình 57. Quá trình thực hiện demo ... 49

Hình 58. Các bước vận hành phần mềm trong hệ thống SoC ... 50

Hình 59. Kết quả quá trình thực hiện demo ... 50

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>DANH SÁCH BẢNG SỐ LIỆU </b>

Bảng 1. Các tín hiệu có trong Avalon MM slave ... 11 Bảng 2. Các tín hiệu có trong Avalon MM master ... 14 Bảng 3. Tài nguyên hệ thống FPGA tiêu tốn... 32

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>DANH MỤC BIẾT TẮT</b>

ALM Adaptive Logic Module

ASIC Application-specific integrated circuit CLBs Configurable Logic Blocks

EDS Embedded Development Suite FPGA Field Programmable Gate Array

FPS Frames per second

GHRD Golden Hardware Reference Design HPS Hard Processor System

IDE Integrated Development Environment ILC Interrupt Latency Counter

IP Intellectual Property PLLs Phase-locked loop

Sram Static random-access memory

VHDL Very High-Speed Integrated Circuit Hardware Description Language

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>I. GIỚI THIỆU </b>

<b>1. Tổng quan </b>

Ngày náy công nghệ đang ngày càng phát triển và những công nghệ xử lý ảnh đã và đang trở thành một ứng dụng kỹ thuật hữu dụng và được sử dụng rộng rãi. Ứng dụng xử lý ảnh được thực hiện trên nhiều dòng kit khác nhau và FPGA là một trong các dịng kit đó. FPGA có độ linh động cao trong quá trình thiết kế cho phép tái cấu. trúc thiết kế giải quyết lớp những bài toán phức tạp mà trước kia chỉ nhờ phần mềm máy tính. FPGA có thể được lập trình để thực hiện các chức năng xử lý ảnh khác nhau như lọc ảnh, phân tích hình ảnh và nhận dạng hình ảnh. FPGA có thể được sử dụng để xử lý ảnh vì chúng có thể được lập trình để thực hiện các chức năng xử lý ảnh khác nhau và có thể được cấu hình để phù hợp với các yêu cầu cụ thể của một ứng dụng xử lý ảnh. Ngoài ra, nhờ mật độ cổng logic lớn FPGA được ứng dụng nhiều trong các lĩnh vực: xử lý tín hiệu số DSP, các hệ thống hàng khơng, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng hình ảnh, mơ hình phần cứng máy tính, …

Với mục đích hướng tới có thể thực hiện các ứng dụng xử lý ảnh trên nền tảng phần cứng em đã lựa chọn Kit DE10 standard (dịng kit SoC – FPGA của intel) để tìm hiểu. Đặc biệt với dòng kit này cung cấp cơng cụ Qsys, cơng cụ hữu ích giúp người dùng có thể xây dựng mơ hình hệ thống phần cứng từ các thành phần có sẵn hoặc tạo mới. Và trong đề tài đồ án này em tiến hành nghiên cứu cách sử dụng kit DE10 và tìm hiểu cách xây dưng một hệ thống Qsys dựa mơ hình tham chiếu của Intel Golden Hardware Reference Design (GHRD), sau đó dùng hệ thống này thực hiện ứng dụng nhận diện khuôn mặt để kiểm tra hệ thống Qsys đã xây dựng.

<b>2. Nhiệm vụ đề tài </b>

Với mục đích hướng đến việc hiển thị hình ảnh từ camera lên màn hình thông qua cổng VGA cần xây dựng hệ thống Qsys phát hiện khn mặt trên Kit DE10 thì đề tài đồ án cần thực hiện các nhiệm vụ sau đây:

Nội dung 1: Tìm hiểu về dịng Kit Soc FPGA - DE10 standard Nội dung 2: Tìm hiểu về Qsys và project GHDR từ Intel

Nội dung 3: Tìm hiểu về giải thuật Haar Cascade sử dụng trong OpenCV

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Nội dung 4: Thực hiện thiết kế phần cứng hệ thống Qsys trên kit DE10 dựa trên nền tảng mơ hình tham chiếu của Intel Golden Hardware Reference Design (GHRD)

Nội dung 5: Thực hiện thiết kế hiện thực hệ thống SoC, thực hiện demo trên kit phần mềm xử lý nhận diện khuôn mặt dựa trên giải thuật Haar Cascade

Nội dung 6: Hiện thực hệ thống SoC, thực hiện demo trên kit

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>II. LÝ THUYẾT </b>

<b>1. Tìm hiểu về dịng KIT SoC FPCA – DE10 Standard </b>

<b>1.1. Tổng quan về FPGA </b>

<b>2.1.1. Giới thiệu về FPGA </b>

FPGA là viết tắt của Field Programmable Gate Array, có nghĩa là mảng cổng logic có thể lập trình trên mạch. FPGA là một loại vi mạch bán dẫn, trong đó phần lớn chức năng bên trong thiết bị có thể được thay đổi; có thể được thay đổi bởi kỹ sư thiết kế, thay đổi trong quá trình lắp ráp PCB, hoặc thậm chí thay đổi sau khi sản phẩm được triển khai. Những thay đổi được tạo ra bằng cách thay đổi các tín hiệu điện vào và ra được nhận, các cổng logic và flipflop được thực hiện, và cách kết nối các cổng với nhau.

Một FPGA được tạo thành từ một lưới các logic có thể cấu hình, được gọi là module logic thích ứng (ALM), và các khối chuyên biệt, như khối xử lý tín hiệu số (DSP) và khối bộ nhớ truy cập ngẫu nhiên (RAM). Các khối lập trình này được kết hợp thông qua các liên kết định tuyến có thể cấu hình để thực hiện các mạch số hoàn chỉnh.

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 – I/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. Phần lớn các sản phẩm FPGA trên thị 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. Ngồ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 dụng (Atmel, Actel, Lattice, SiliconBlue, ...).

Kiến trúc cơ bản của FPGA bao gồm 3 thành phần 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 để 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 cấp giao tiếp giữa các ngoại vi và các được tín hiêu bên trong.

<b>2.1.2. Ưu điểm của FPGA </b>

Khối logic có thể tái cấu hình: Đây là một trong những ưu điểm lớn nhất của FPGA, mục đích của việc lập trình khối logic trong FPGA là để cung cấp các tính tốn và các phần tử

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

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). Ngồ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, cấu hình bộ nhớ được sử dụng trên tất cả các khối logic để điều khiển các chức năng cụ thể của mỗi phần tử bên trong khối đó.

Kết nối có thể lập trình: Các liên kết trong một FPGA dùng để 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 cụm logic để 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 liên kết: 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ợ. Theo thời gian, các kiến trúc FPGA cơ 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 đó.

Ngơn ngữ mơ tả phần cứng (Hardware Description Language): Ngôn ngữ mô tả phần cứng bao gồm VHDL, Verilog, SystemC và Handle-C thường được sử dụng để lập trình FPGA. VHDL và Verilog phát triển như là một chuẩn công nghiệp và là hai ngôn ngữ phổ biến nhất hiện nay. Ngôn ngữ nào cũng tốt nhưng có một điều chắc chắn là Xilinx ISE và Altera Quartus đều hỗ trợ VHDL và Verilog.

<b>2.1.3. Ứng dụng FPGA </b>

Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng hình ảnh, nhận dạng tiếng nói, mật mã học, mơ hình phần cứng máy tính, …

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp những bài toán phức tạp mà trước kia chỉ nhờ phần mềm máy tính, ngồi ra nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài tốn địi hỏi khối lượng tính tốn lớn và dùng trong các hệ thống làm việc theo thời gian thực.

<b>1.2. Tổng quan về SoC </b>

System on Chip là hệ thống mạch tích hợp bao gồm tất cả các thành phần cần thiết được tích hợp trên 1 chip duy nhất. Các thành phần này có thể bao gồm mạch số (digital), mạch analog và sự pha trộn giữa hai mạch này (mixed-signal).

Ví dụ một SoC dùng để xử lý âm thanh có thể bao gồm các thành phần audio receiver (bộ thu nhận audio), bộ ADC (chuyển đổi từ tín hiệu analog sang tín hiệu digital), bộ vi xử lý, bộ điều khiển vùng nhớ (memory) và các thành phần điều khiển ra vào khác. Tất cả được tích hợp vào một SoC duy nhất.

System on Chip là một mức phát triển cao hơn của thiết kế ASIC (Application Specific Integrated Circuit). Tuy nhiên, với sự phát triển nhanh chóng của ngành cơng nghiệp bán dẫn và các ứng dụng đi kèm, hệ thống chip ASIC hay là SoC có thể được hiểu là gần tương đương nhau.

Những lợi thế chính của các thiết bị SoC là chi phí thấp hơn, giảm đáng kể kích thước, và giảm điện năng tiêu thụ của hệ thống. Hệ thống kỹ thuật số bằng cách sử dụng SoC thiết kế, như là những người được sử dụng trong các sản phẩm cầm tay kỹ thuật số, các hệ thống kỹ thuật số được xây dựng trên một trong một gói có nhiều chip. Khi tiến cơng nghệ, tích hợp của các phần tử khác nhau trong một thiết kế SoC trở nên ngày càng phức tạp. Một thiết bị tích hợp SoC vào một chip duy nhất nhiều thành phần của một hệ thống điện tử phức tạp, chẳng hạn như một bộ tiếp nhận không dây. SoC các thiết bị sẽ giảm kích thước đi rất nhiều, chi phí và tiêu thụ điện năng của hệ thống. Một hệ thống trên chip có thể bao gồm một đơn vị logic cấu hình. Các đơn vị logic cấu hình bao gồm một bộ xử lý, interface, và logic lập trình trên cùng một chất nền. Một hệ thống-trên-chip được thiết kế tích hợp nhiều thiết kế độc lập VLSI (lõi) để cung cấp đầy đủ chức năng cho một ứng dụng.

<b>1.3. Tổng quan Kit DE10-standard </b>

DE10-Standard là board FPGA SoC được phát triển trên dòng chip chi phí thấp của Altera là Cyclone V SoC, gồm hai phần chính: HPS và FPGA. Phần bên trái là Hard Processing System (HPS) bao gồm lõi vi xử lý cứng ARM, bộ điều khiển EMAC, bộ điều

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

khiển SDRAM, … và bên phải là phần FPGA sẽ chứa các thiết kế phần cứng của người dùng. Tương tác giữa HPS và FPGA được thực hiện thông qua cầu nối AXI Bridge được cấu hình cho tương tác giữa bus Avalon (FPGA) và bus AXI (HPS), cho phép người dùng truy cập trực tiếp vào các thành phần của HPS (ví dụ như SDRAM) từ phía FPGA.

<i>Hình 1. Các thành phần board DE10 Standard </i>

<b>1.3.1. Hình ảnh kit </b>

<i>Hình 2. Hình ảnh mặt trước kit DE10 </i>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<i>Hình 3. Hình ảnh mặt sau Kit DE10 </i>

<i>Hình 4. Sơ đồ khối Kit DE10 </i>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>1.3.2. Sơ đồ khối và thành phần kit Thành phần: </b>

<b> FPGA Device </b>

• Cyclone V SoC 5CSXFC6D6F31C6N Device • Dual-core ARM Cortex-A9 (HPS)

• 110K programmable logic elements • 5,761 Kbits embedded memory • 6 fractional PLLs

• 2 hard memory controllers

<b> Configuration and Debug </b>

• Quad serial configuration device – EPCS128 on FPGA • Onboard USB-Blaster II (normal type B USB connector)

• Two port USB 2.0 Host (ULPI interface with USB type A connector) • UART to USB (USB Mini-B connector)

• 10/100/1000 Ethernet • PS/2 mouse/keyboard • IR emitter/receiver • I2C multiplexer

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b> Connectors </b>

• One HSMC (Configurable I/O standards 1.5/1.8/2.5/3.3V) • One 40-pin expansion headers

• One 10-pin ADC input header

• One LTC connector (one Serial Peripheral Interface (SPI) Master, one I2C and one GPIO interface)

<b>Display </b>

• 24-bit VGA DAC

• 128x64 dots LCD Module with Backlight

• Analog input range: 0 ~ 4.096 Switches, Buttons, and Indicators • 5 user Keys (FPGA x4, HPS x1) • 10 user switches (FPGA x10) • 11 user LEDs (FPGA x10, HPS x 1)

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

• 2 HPS reset buttons (HPS_RESET_n and HPS_WARM_RST_n) • Six 7-segment displays

Bus Avalon, được phát triển bởi Altera, là một kiến trúc bus đơn giản được thiết kế để kết nối vi xử lý FPGA với các ngoại vi khác trong một hệ thống SoPC (System on a programmable Chip). Bus Avalon mô tả giao tiếp giữa master và các thành phần slave, đồng thời chỉ định thời gian mà các thành phần này giao tiếp. Các ưu điểm của bus Avalon bao gồm:

- Tính đơn giản – Cung cấp một giao thức dễ hiểu và ngắn gọn.

- Tối ưu hóa sử dụng tài nguyên cho logic bus - Bảo tồn các phần tử logic (LEs – Logic Elements) bên trong thiết bị logic khả trình (PLD – Programmable Logic Device).

- Xử lý đồng bộ - tích hợp tốt với logic sử dụng khác mà cùng tồn tại trên cùng một PLD, đồng thời tránh phân tích thời gian phức tạp các vấn đề.

Ngoài ra, các giao tiếp trong bus Avalon thường sẽ có chiều dài byte, half-word hoặc

<b>word (8, 16 hoặc 32 bit) giữa thiết bị ngoại vi (master – slave). </b>

<b>1.3.3.2. Avalon Memory Mapped </b>

Giao tiếp Avalon Memory-Mapped (Avalon MM) được sử dụng cho các trao đổi đọc/ghi dữ liệu giữa các thành phần master/slave trong hệ thống ánh xạ bộ nhớ dựa trên địa chỉ. Các thành phần này bao gồm bộ vi xử lý, bộ nhớ, UART và bộ định thời; chúng có giao thức master/slave được kết nối với nhau bởi một kết nối hệ thống chung. Giao tiếp Avalon MM có thể mơ tả nhiều loại thành phần, từ một SRAM hỗ trợ đơn giản, cụ thể là việc trao đổi

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

đọc/ghi dữ liệu trong chu kỳ cố định sang một giao tiếp pipeline phức tạp hơn, ngồi ra cịn có khả năng trao đổi dữ liệu theo kiểu burst.

Các tính năng:

• Định nghĩa kết nối điểm với điểm

• Triển khai tự do các tập hợp con khi tín hiệu được u cầu • Độ rộng dữ liệu có thể thay đổi: 8, 16, 24, … 1024

• Tạo kết nối tự động

<b>❖ Avalon Memory Mapped Slave </b>

<i>Hình 5. Avalon MM slave </i>

Các loại tín hiệu có trong Avalon MM Slave được trình bày trong bảng sau:

<i>Bảng 1. Các tín hiệu có trong Avalon MM slave </i>

<b>Tín hiệu cơ bản </b>

read

Cho phép tín hiệu đọc, thường sẽ đi kèm với readdata

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

write_n đi kèm với writedata hoặc

Cho phép các làn byte cụ thể trong q trình ghi. Nó sẽ chỉ định byte nào được ghi bằng cách đưa một

Được xác nhận bởi kết nối hệ thống cho chu kỳ đầu tiên của mỗi lần chuyển bất kể yêu cầu chờ và các tín hiệu khác.

<b>Tín hiệu trạng thái chờ </b>

waitrequest

Dùng để tạm ngưng kết nối bên trong hệ thống khi port slave không thể phản hồi tức thì.

arbiterlock

Tín hiệu phân xử chắc chắn khi một master giành được quyển phân xử, nó sẽ duy trì kết nối đến slave cho nhiều quá trình trao đổi.

<b>Tín hiệu pipeline </b>

readdatavalid

Dùng trong giao thức đọc pipeline với độ trễ có thể thay đổi được. Nó

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

đánh dấu xung cạnh lên khi slave nhận được tín hiệu readdata phù hợp.

<b>Tín hiệu burst </b>

Dùng trong giao thức burst. Nó đại diện cho số lần trao đổi trong một burst. Thường sẽ đi kèm với tín hiệu waitrequest.

Được xác nhận ở đầu chu kỳ khi giao thức burst bắt đầu.

<b>Tín hiệu flow control </b>

Được sử dụng trong giao thức flow control. Cho biết rằng ngoại vi đã sẵn sàng để thực hiện quá trình ghi.

Được sử dụng trong giao thức flow control. Cho biết rằng ngoại vi đã

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>❖ Avalon Memory Mapped Slave </b>

<i>Hình 6. Avalon MM master </i>

Ta có thể tăng thông lượng của hệ thống bằng cách bắt đầu đọc với nhiều thiết bị ngoại vi slave vì hệ thống tạo ra kết nối điểm – điểm giữa các cặp master/slave. Trong phản hồi các lần đọc, khi một thiết bị ngoại vi slave có dữ liệu hợp lệ, nó sẽ xác nhận read_data_valid và vài kết nối hệ thống cho phép kết nối giữa cặp master/slave.

Các loại tín hiệu được trình bay bảng dưới:

<i>Bảng 2. Các tín hiệu có trong Avalon MM master </i>

<b>Tín hiệu cơ bản </b>

Tín hiệu địa chỉ đại diện cho một byte địa chỉ, không phụ thuộc chiều rộng dữ liệu của master. Để viết một byte cụ thể trong một word, master phải sử dụng tín hiệu byteenable.

read

read_n <sup>1 </sup> <sup>Out </sup> <sup>No </sup> Đọc tín hiệu yêu cầu từ master.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

readdata phải có khi có tin hiệu

Tín hiệu ghi từ master. Thường sẽ đi cùng với writedata.

Dữ liệu được nhận từ hệ thống khi có tín hiệu ghi. readdata và writedata phải có cùng chiều rộng.

Cho phép các làn byte cụ thể trong quá trình chuyển trên các cổng của chiều rộng lớn hơn 8 bit. Mỗi bit trong byteenable tương ứng với một làn byte trong writedata và readdata.

waitrequest

Buộc thiết bị chính phải đợi cho đến khi hệ thống kết nối với nhau đã sẵn sàng để tiến hành trao đổi dữ liệu. Lúc bắt đầu quá trình trao đổi, master bắt đầu quá trình và đợi cho đến khi yêu cầu chờ được thực hiện. Master phải giữ nguyên các tín hiệu điều khiển của nó trong các chu kỳ tiếp theo nếu yêu cầu chờ đợi được xác nhận phân xử.

arbiterlock

Khóa phân xử đảm bảo rằng khi master giành được quyền truy cập, nó sẽ duy trì kết nối truy cập vào nhiều slave cho nhiều chuyển giao.

<b>Tín hiệu pipeline </b>

readdatavalid

readdatavalid_n <sup>1 </sup> <sup>In </sup> <sup>No </sup> <sup>Chỉ ra dữ liệu hợp lệ được chuyển </sup>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Về phần byteenable, khi nhiều hơn một làn byte được xác nhận, tất cả làn đã được xác nhận phải được đặt liền kề nhau. Số dòng liền kề phải là lũy thừa của 2 và số byte chỉ định phải được căn chỉnh trên một giới hạn địa chỉ phụ thuộc vào kích thước của dữ liệu.

<b>1.3.4. SoC trên kit </b>

Sơ đồ khối ở cấp độ high-level của SoC này được thể hiện trong hình sau:

<i>Hình 7. SoC Architecture (Nguồn:Cyclone V Hard Processor System Technical Reference Manual) </i>

Cấu trúc của SoC trên kit Altera gồm có 2 phần chính: HPS và FPGA. HPS sử dụng hệ thống bus AXI trong khi FPGA sử dụng hệ thống bus Avalon, vì thế cần có các cầu nối để giao tiếp giữa hai hệ thống này với nhau.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>HPS Portion </b>

HPS viết tắt từ Hard Processing System, đây là hệ thống xử lý của SoC Altera. Hệ thống xử lý này bao gồm các vi xử lý ARM và các ngoại vi đi kèm. Vi xử lý ARM trên SoC của Cyclone 5 là một cặp ARM Cortex-9. Ngoài MPU Subsystem của ARM Cortex-9, HPS còn bao gồm các ngoại vi khác như PLLs, bộ điều khiển Flash Controllers, SDRAM Controllers, bộ nhớ on-chip, v.v.

<b>FPGA Portion </b>

FPGA này chính là các thiết kế sẽ được kết nối vào hệ thống. Các IP được lập trình sẽ nằm ở phần này và ngồi ra cịn có các ngắt và các cổng giao tiếp DIP Switch, JTAG UART, LED và BUTTON

<b>2. Tìm hiểu về Qsys và project GHDR từ Intel </b>

<b>2.1. Qsys là gì? </b>

Công cụ Qsys cho phép người dùng kết hợp một hệ thống với nhau bằng cách sử dụng các thành phần được tạo sẵn hoặc tùy chỉnh. Các hệ thống như vậy thường bao gồm một hoặc nhiều bộ xử lý, giao diện bộ nhớ, cổng I / O và phần cứng tùy chỉnh khác. Hệ thống do Qsys tạo ra có thể được đưa vào như một phần của mạch lớn hơn và được triển khai trên bảng FPGA, chẳng hạn như Altera DE-series. Ví dụ về một hệ thống như vậy được mơ tả trong Hình 8, trong đó phần của hệ thống được tạo bởi công cụ Qsys được đánh dấu bằng màu xanh lam.

<i>Hình 8. Altera DE-series board </i>

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

Mỗi thành phần trong hệ thống, được gọi là thành phần Qsys, tuân theo ít nhất một trong các Giao diện Avalon được Qsys hỗ trợ. Với giao diện được xác định cho thành phần, Qsys có thể xây dựng một cấu trúc kết nối, được gọi là Avalon Interconnect, cho phép các thành phần trao đổi dữ liệu. Cơng cụ Qsys có thể tạo ra một hệ thống dựa trên tập hợp các thành phần và thông số người dùng đã chọn. Hệ thống được tạo chứa mã Verilog hoặc VHDL cho từng thành phần và cấu trúc kết nối, cho phép nó được tổng hợp, đặt và định tuyến cho thiết bị FPGA.

<b>2.2. Thành phần Qsys là gì? </b>

Thành phần Qsys là một mạch con phần cứng có sẵn như một thành phần thư viện để sử dụng trong công cụ Qsys. Thơng thường, nó chứa hai phần: các mô đun phần cứng bên trong và các Giao diện Avalon bên ngồi. Các mơ-đun bên trong là các mạch thực hiện chức năng mong muốn của thành phần Qsys, trong khi các Giao diện Avalon được thành phần sử dụng để giao tiếp với các mô-đun phần cứng bên ngồi thành phần.

Các loại giao diện Avalon:

• Avalon Clock Interface – an interface that drives or receives clocks • Avalon Reset Interface – an interface that provides reset capability

• Avalon Memory-Mapped Interface (Avalon MM) – an address-based read/write interface which is typical of master-slave connections

• Avalon Streaming Interface (Avalon-ST) – an interface that supports unidirectional flow of data

• Avalon Conduit Interface – an interface that accommodates individual signals or groups of signals that do not fit into any of the other Avalon Interface types. You can export the conduit signals to make connections external to the Qsys system.

<b>2.3. Project GHRD (Golden Hardware Reference Design) </b>

<b>Golden Hardware Reference Design sử dụng các ngoại vi trong vùng FPGA một </b>

cách tối thiểu vì phía HPS đã cung cấp cho ta rất nhiều lựa chọn các ngoại vi như Ethernet, UART, SDRAM, SD/MMC. Các giao tiếp HPS-FPGA và FPGA-HPS được cấu hình với độ rộng dữ liệu là 64 bit. Thiết kế GHRD này bao gồm các thành phần như sau:

• ARM Cortex™-A9 MPCore HPS

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

• 02 user push-button inputs • 04 user DIP switch inputs • 04 user I/O for LED outputs • 64KB of on-chip memory • JTAG to Avalon master bridges

• Interrupt capturer for use with System Console • System ID

Thiết kế trên sử dụng cầu nối HPS-FPGA, FPGA-HPS và Lightweight HPS-FPGA, đồng thời, cấu trúc này cho thấy những ngoại vị được hỗ trợ trong mỗi phần FPGA và phần HPS như JTAG, Interrupt, ROM, RAM, DDR, …

<b>Các thành phần IP trong project GHRD: </b>

<i>Hình 9. Hình ảnh mơ tả cấu trúc GHRD cung cấp từ terrasic </i>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>2.3.1. HPS </b>

HPS viết tắt từ Hard Processing System, đây là hệ thống xử lý của SoC Altera. Hệ thống xử lý này bao gồm các vi xử lý ARM và các ngoại vi đi kèm. Vi xử lý ARM trên SoC của Cyclone 5 là một cặp ARM Cortex-9. Ngoài MPU Subsystem của ARM Cortex-9, HPS còn bao gồm các ngoại vi khác như PLLs, bộ điều khiển Flash Controllers, SDRAM Controllers, bộ nhớ on-chip, v.v.

Chức năng các Bridge trong HPS:

• Lightweight HPS-to-FPGA Bridge:Cho phép master từ HPS truy cập đến slave ánh xạ bộ nhớ các thành phần ở FPGA.Thông thường MPU ở HPS truy cập cầu nối này thực hiện các truy cập vào thanh ghi trạng thái và điều khiển tới các ngoại vi trong FPGA.Lưu ý : không sử dụng cầu này để truy cập vào memory FPGA.

• HPS- to -FPGA Bridge: sử dụng để kết nối trực tiếp bộ nhớ của FPGA đến HPS. Lưu ý: truy cập thanh ghi trạng thái và điều khiển của FPGA không được sử dụng ở cầu này và sẽ được chuyển đến sử dụng ở Lightweight HPSto-FPGA Bridge

• FPGA- to – HPS Bridge: cho phép master từ FPGA truy cập vào bộ nhớ và ngoại vi bên trong HPS.

<b>2.3.2. System ID Peripheral Intel FPGA IP </b>

Lõi ID hệ thống với giao diện Avalon® là một thiết bị chỉ đọc đơn giản cung cấp cho các hệ thống Trình thiết kế nền tảng một mã định danh duy nhất. Các hệ thống bộ xử lý sử dụng lõi ID hệ thống để xác minh rằng chương trình thực thi được biên dịch nhằm mục tiêu vào phần cứng thực được định cấu hình trong FPGA đích. Nếu ID dự kiến trong tệp thực thi không khớp với lõi ID hệ thống trong FPGA, có thể phần mềm sẽ khơng thực thi chính xác.

Có hai cách cơ bản để sử dụng lõi ID hệ thống:

• Xác minh ID hệ thống trước khi tải phần mềm mới xuống hệ thống. Phương pháp này được sử dụng bởi các công cụ phát triển phần mềm, chẳng hạn như mơi trường phát triển tích hợp Nios® II (IDE), Nios® II IDE kiểm tra xem lõi ID hệ thống trong phần cứng có khớp với ID hệ thống dự kiến của phần mềm hay không trước khi tải xuống chương trình để chạy hoặc gỡ lỗi.

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

• Kiểm tra ID hệ thống sau khi đặt lại. Nếu một chương trình đang chạy trên phần cứng khơng phải là hệ thống Trình thiết kế nền tảng dự kiến, chương trình có thể khơng hoạt động hồn tồn. Nếu chương trình khơng gặp sự cố, nó có thể hoạt động sai theo những cách tinh vi khó gỡ lỗi. Để tránh trường hợp này, một chương trình có thể so sánh ID hệ thống dự kiến với lõi ID hệ thống và báo lỗi nếu chúng khơng khớp.

Trong project GHDR: đóng vai trị Kiểm tra, xác minh ID cho hệ thống tránh thực

<b>hiện sai khó gỡ lỗi khi sai ID hệ thống. </b>

<b>2.3.3. JTAG to Avalon Master Bridge </b>

Cung cấp kết nối, quyền truy cập giữa hệ thống máy chủ để truy cập các IP được ánh xạ bộ nhớ và các thanh ghi trạng thái và điều khiển IP ngoại vi thông qua giao diện JTAG. Trong Project GHDR đóng vai trị các khối:

• HPS only master • Fpga only master

<b>• F2sdram only master </b>

<b>2.3.4. Avalon MM Pipeline Bridge </b>

Thực hiện chèn một đoạn thanh ghi giữa các đoạn phản hồi và các lệnh ánh xạ đến bộ nhớ Avalon. IP này thực hiện chức năng pipeline, phân phối dữ liệu các tín hiệu câu lệnh từ bộ xử lý và tín hiệu phản hồi từ các component. Ở đây tham số chờ xử lý tối đa là số lần đọc và phản hồi đang chờ xử lý được đưa vào hàng đợi, hàng đợi tối đa là 64.

Trong project GHDR: dùng IP này đặt với tên mm – bridge với chức năng làm cầu

<b>nối để HPS truy cập vào gửi tín hiệu điều khiển ánh xạ đến bộ nhớ các thành phần FPGA. </b>

<b>2.3.5. JTAG UART Intel FPGA IP </b>

Một UART JTAG hoạt động giống như một UART thông thường: một khối có một số thanh ghi trạng thái và điều khiển để ghi byte vào FIFO truyền, đọc byte từ FIFO nhận và kiểm tra xem những FIFO đầy hoặc trống.

Ưu điểm so với UART thơng thường:

• Khơng cần thêm cáp giữa bảng FPGA và PC.

</div>

×