Một CPU nhúng Nios II sẽ được tạo ra và kết nối với các khối phần cứng thông qua hệ thống bus Avalon bus để thiết lập các thông số và điều khiển sự hoạt động của cả hệ thống.. Chấm trắ
Trang 1
CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP XỬ LÝ ẢNH DỰA TRÊN KẾT CẤU
CHUYÊN NGÀNH: VẬT LÝ VÔ TUYẾN & ĐIỆN TỬ - KỸ THUẬT
MÃ SỐ: 60 44 03
LUẬN VĂN THẠC SĨ NGÀNH VẬT LÝ VÔ TUYẾN &
ĐIỆN TỬ - KỸ THUẬT
NGƯỜI HƯỚNG DẪN KHOA HỌC:
Trang 2LỜI CẢM ƠN
khó khăn và thử thách, đã có nhiều lúc tưởng chừng không thể vượt qua, thế nhưng bên cạnh tôi luôn luôn có những lời động viên, khích lệ của gia đình, bạn bè và đồng nghiệp đã giúp tôi vượt qua tất cả
Hữu Phương Thầy đã tận tình chỉ bảo về mặt chuyên môn và tạo mọi điều kiện thuận lợi nhất trong nghiên cứu để em có thể hoàn thành chương trình cao học và luận văn tốt nghiệp này
Hùng Các Thầy đã giúp đỡ em rất nhiều trong suốt quá trình học tập và làm luận
văn tốt nghiệp để em có được ngày hôm nay
Xin cảm ơn Ba, Mẹ đã động viên, thông cảm, hỗ trợ cho con vượt qua thời kỳ khó khăn để có được thành tựu ngày hôm nay
đã giúp đỡ em trong quá trình học tập và thực hiện luận văn
Xin cảm ơn tất cả người thân, bạn bè, đồng nghiệp đã hỗ trợ tôi trong suốt thời gian hoàn thành luận văn này
Cuối cùng tôi xin chia sẻ niềm vui này đến gia đình, quí thầy cô, bạn bè và đồng nghiệp thân yêu
TP Hồ Chí Minh, ngày 26 tháng 03 năm 2009
CAO TRẦN BẢO THƯƠNG
Trang 3MỞ ĐẦU
Ngày nay, kỹ thuật thiết kế các hệ thống nhúng đang đạt đến một tầm cao mới Hầu như tất cả các vi mạch tích hợp đều là một hệ thống trên chip hoàn chỉnh Đã xa rồi cái thời mà các IC (vi mạch tích hợp) chỉ gồm vài chục đến vài trăm cổng logic, và để thiết kế một hệ thống yêu cầu phải sử dụng nhiều IC khác nhau cùng gắn trên một bo mạch với các đường nối dây chằng chịt Ngày nay, với mật độ tích hợp ngày càng cao, cả một hệ thống hoàn chỉnh có thể được thiết kế trong một con chip đơn duy nhất (bao gồm các vi xử lý, bộ nhớ, DSP ) Hiệu quả đạt được là rất lớn, trên tất cả mọi phương diện : tốc độ nhanh, ít tiêu hao công suất, giá thành rẻ, thiết kế dễ dàng (chủ yếu dựa trên công cụ phần mềm sau đó cấu hình xuống chip) Chính vì vậy, cùng với sự hỗ trợ mạnh mẽ về phần cứng cũng như phần mềm, chưa bao giờ các ứng dụng xử lý tín hiệu số lại có thể phát triển rầm rộ như hiện nay Điều mà trước đây khi nhắc đến, người ta chỉ có thể nghĩ đến một cỗ máy vi tính nặng nề, cồng kềnh mới có khả năng xử lý được Nhưng ngày nay, chúng ta hoàn toàn có thể tưởng tượng ra một hệ thống xử lý tín hiệu số hoàn chỉnh, bao gồm cả phần cứng và phần mềm, có thể được tích hợp vào trong một con chip nhỏ hơn cả một đồng xu và có khả năng thực hiện nhiều chức năng khác nhau Vì vậy, đề tài này nhằm mục đích phát triển một hệ thống nhúng dựa trên Nios II thực hiện trên FPGA của hãng Altera ứng dụng trong lĩnh vực dò tìm chuyển động, một lĩnh vực rất hứa hẹn với nhiều ứng dụng trong thực tiễn
Trang 4MỤC LỤC LỜI CẢM ƠN
MỞ ĐẦU 1
MỤC LỤC 2
CÁC TỪ TIẾNG ANH VIẾT TẮT 5
DANH MỤC HÌNH ẢNH 6
DANH MỤC BẢNG BIỂU 8
CHƯƠNG 1 TỔNG QUAN 9
1.1 GIỚITHIỆU 9
1.2 BỐCỤCCÁCCHƯƠNG 16
CHƯƠNG 2 MÔ HÌNH SOPC CỦA HÃNG ALTERA 17
2.1 KHÁINIỆMSOPC 17
2.2 PHẦNMỀMSOPCBUILDER 18
2.2.1 Cấu trúc của hệ thống SoPC Builder 22
2.2.2 Chức năng của hệ thống SoPC Builder 24
2.3 AVALONBUS 27
2.3.1 Avalon Bus Module 31
2.3.2 Các thiết bị ngoại vi Avalon 33
2.3.3 Các bước thiết kế SoPC 35
CHƯƠNG 3 CUSTOM INSTRUCTION CHO NIOS II 39
Trang 53.1 KHÁINIỆMCUSTOMINSTRUCTION 40
3.2 GIAOTIẾPPHẦNCỨNG 42
3.2.1 Thiết kế theo mạch tổ hợp 45
3.2.2 Thiết kế theo mạch tuần tự 46
3.2.3 Thiết kế theo dạng mở rộng 48
3.2.4 Thiết kế theo thanh ghi nội 49
3.2.5 Thiết kế theo giao tiếp ngoài 51
3.3 GIAOTIẾPPHẦNMỀM 52
3.4 CÁCBƯỚCTHỰCHIỆN 54
CHƯƠNG 4 KẾT CẤU BỀ MẶT 56
4.1 KẾTCẤUBỀMẶT 56
4.1.1 Vai trò kết cấu bề mặt 57
4.1.2 Mô tả kết cấu bề mặt 60
4.2 TOÁNTỬLBP 65
4.2.1 Các phương pháp liên quan 65
4.2.2 Toán tử LBP nguyên thủy 68
4.2.3 Toán tử LBP mở rộng 69
CHƯƠNG 5 DÒ TÌM CHUYỂN ĐỘNG 71
5.1 PHÂNLOẠICÁCTHUẬTTOÁNDÒTÌMCHUYỂNĐỘNG 71
5.2 PHƯƠNGPHÁPDÒTÌMCHUYỂNĐỘNGDỰATRÊNVISAI 74 5.3 PHƯƠNGPHÁPPHÂNTÍCHCHUYỂNĐỘNGDỰATRÊNKẾTCẤU
Trang 6CÁC TỪ TIẾNG ANH VIẾT TẮT
ASIC Application Specific Integrated Circuit
CPU Central Processing Unit
DMA Direct Memory Access
DSP Digital Signal Processing/Processor
FPGA Field Programmable Gate Array
LAB Logic Array Block
LBP Local Binary Pattern
PLL Phase Lock Loop
SoPC System on a Programmable Chip
VHDL Very High Speed Integrated Circuit HDL
VLSI Very Large Scale Integration
Trang 7DANH MỤC HÌNH ẢNH
Hình 1.1 : Mạch bình phương dựa trên mạch nhân Baugh Wooley
Hình 1.2 : Sơ đồ khối SoPC được thiết kế để xử lý dữ liệu song song
Hình 2.1 : Một SoPC điển hình của Altera
Hình 2.2 : Ví dụ một SoPC được tạo ra bởi SoPC Builder
Hình 2.3 : Giao diện SoPC Builder
Hình 2.4 : Giải mã địa chỉ với 1 master và 2 slave
Hình 2.5 : Giao diện của SoPC Builder trong giải mã địa chỉ
Hình 2.6 : Giao tiếp với bộ nhớ
Hình 2.7 : Sơ đồ khối một Avalon bus module trong thiết kế
Hình 2.8 : Các bước thiết kế SoPC
Hình 2.9 : Sơ đồ khối một hệ thống được tích hợp nhiều bộ nhớ
Hình 3.1 : Cấu trúc Nios khi được thêm vào khối custom logic
Hình 3.2 : Tab Custom Instruction trong Nios Configuration Wizard
Hình 3.3 : Các cổng giao tiếp của khối custom logic
Hình 3.4 : Sơ đồ khối custom instruction theo dạng tổ hợp
Hình 3.5 : Giản đồ thời gian custom instruction theo dạng tổ hợp
Hình 3.6 : Sơ đồ khối custom instruction theo dạng tuần tự
Hình 3.7 : Giản đồ thời gian custom instruction theo dạng tuần tự
Hình 3.8 : Sơ đồ khối của mạch đảo bit/byte/half_word
Hình 3.9 : Sơ đồ khối của mạch nhân – tích lũy
Hình 3.10 : Các cổng kết nối của cách thiết kế theo dạng giao tiếp ngoài Hình 3.11 : Tab HDL Files
Hình 4.1 : Ảnh chứa các loại kết cấu bề mặt khác nhau
Hình 4.2 : (a) Ảnh gốc (b) Cạnh của vật thể (c) Giải thuật dò tìm cạnh bị ảnh hưởng bởi kết cấu bề mặt của vật thể
Hình 4.3 : Bề mặt của cùng một vật thể nhưng ở 2 khoảng cách quan sát khác nhau cho ra kết cấu bề mặt khác nhau
Hình 4.4 : Bề mặt của cùng một vật thể nhưng có hướng chiếu sáng khác nhau cho ra kết cấu bề mặt hoàn toàn khác nhau
Hình 4.5 : Các kết cấu bề mặt : (a), (b) Kết cấu đều (c), (d) Kết cấu không đều
Hình 4.6 : 3 ví dụ về kết cấu (a) French canvas (chi tiết) (b) French canvas (c) cát biển
Trang 8Hình 4.7 : 3 ví dụ về kết cấu sau khi biến đổi Fourier (a) French canvas
(chi tiết) (b) French canvas (c) cát biển
Hình 4.8 : Cách tạo ra ma trận đồng hiện
Hình 4.9 : 3 ví dụ về kết cấu sau khi biến đổi bằng ma trận đồng hiện (a) French canvas (chi tiết) (b) French canvas (c) cát biển
Hình 4.10 : Các hướng tạo thành một cặp pixel kế cận nhau
Hình 4.11 : Cách sử dụng toán tử LBP
Hình 4.12 : Sự thay đổi P và R
Hình 5.1 : Phương pháp dò tìm chuyển động dựa trên trừ frame
Hình 5.2 : Kết quả đạt được của thuật toán entropy
Hình 5.3 : Mô hình dò tìm cạnh của 1 frame
Hình 5.4 : 4 cửa sổ dùng để dò tìm cạnh theo chiều ngang, dọc, +45o, -45o
Hình 5.5 : Thuật tốn dị tìm cạnh tương thích với phần cứng
Hình 5.6 : Phương pháp dò tìm chuyển động dựa trên dò cạnh - trừ frame
Hình 5.7 : Phương pháp dò tìm chuyển động dựa trên kết cấu bề mặt
Hình 5.8 : Một cửa sổ quét chồng lên nhau qua toàn bộ frame
Hình 5.9 : Toán tử LBP truyền thống (P=4, R=1)
Hình 5.10 : Ví dụ lấy LBP với 1 pixel
Hình 6.1 : Đặc trưng của các FPGA trong dòng Cyclone II
Hình 6.2 : Sơ đồ khối FPGA dòng Cyclone II
Hình 6.3 : Kit DE2
Hình 6.4 : Sơ đồ khối kit DE2
Hình 6.5 : Mô hình thiết kế toàn hệ thống
Hình 6.6 : Sơ đồ khối của phần dò tìm chuyển động
Hình 6.7 : Lọc trung bình dịch chuyển (a) ảnh gốc (b) ảnh sau khi lọc
Hình 6.8 : Sơ đồ mạch tạo cửa sổ 3 x 3
Hình 6.9 : Sơ đồ khối phần cứng dò tìm chuyển động
Hình 6.10 : Thiết kế trên phần mềm Quartus II
Hình 6.11 : Thiết kế trong SoPC Builder
Hình 6.12 : Tài nguyên sử dụng trên kit DE2
Hình 6.13 : Đoạn video 1 được đưa vào thử nghiệm
Hình 6.14 : Kết quả dò tìm chuyển động trên DE2 cho đoạn video ở hình 6.13
Hình 6.15 : Kết quả dò tìm chuyển động trên C cho đoạn video ở hình 6.13
Hình 6.16 : Đoạn video 2 được đưa vào thử nghiệm
Hình 6.17 : Kết quả dò tìm chuyển động trên DE2 cho đoạn video ở hình 6.16
Trang 9DANH MỤC BẢNG BIỂU
Bảng 2.1 : Các thành phần giao diện người dùng trên nhãn System contents
Bảng 3.1 : Các loại custom instruction, chức năng và các cổng giao tiếp Bảng 3.2 : Các cổng cho cách thức thiết kế theo dạng mạch tổ hợp
Bảng 3.3 : Các cổng cho cách thức thiết kế theo dạng mạch tuần tự
Bảng 3.4 : Các cổng cho cách thức thiết kế theo dạng thanh ghi nội
Bảng 6.1 : So sánh thời gian thực hiện giữa phần cứng và phần mềm
Trang 10xe hơi hay dùng để kiểm tra thiết kế trước khi chế tạo ra ASIC Ngày nay, theo
xu hướng chung, các con chip sẽ được chế tạo sao cho có thể tích hợp được toàn
Trang 11FPGA, một hệ thống phần cứng có thể được cấu hình tạo thành một SoPC (System on Programmable Chip) hoàn chỉnh và nó còn có thể được dùng như bước đầu tiên để thiết kế IC (Integrated Circuit) Các công ty hàng đầu thế giới chuyên sản xuất linh kiện logic khả trình FPGA là Altera và Xilinx Với giao diện phần mềm QuartusII 8.0 khá thân thiện và khả năng hoạt động của linh kiện khá ổn định, FPGA của hãng Altera được lựa chọn để thực hiện trong đề tài này
Verilog là một trong hai ngôn ngữ mô tả phần cứng chính (gồm VHDL và Verilog HDL) được người thiết kế phần cứng sử dụng để mô tả, thiết kế các hệ thống số, ví dụ như máy tính hay linh kiện điện tử Verilog dễ học và dễ sử dụng hơn VHDL Verilog được chuẩn hoá theo chuẩn IEEE vào năm 1995 và 2001 Verilog rất giống ngôn ngữ C và được giới chuyên môn nghiên cứu, sử dụng nhiều Verilog HDL có thể được sử dụng để thiết kế hệ thống số ở nhiều mức khác nhau, ví dụ ở mức cao như các mô hình đặc trưng đến các mức thấp như mô hình bố trí dây, điện trở, transistor trên một mạch tích hợp; mô tả các cổng logic, flip_flop trong hệ thống số; mô tả thanh ghi và sự di chuyển dữ liệu giữa các thanh ghi (RTL - Register Transfer Level) Hệ thống số là một hệ thống phức tạp bậc cao Ở cấp độ chi tiết nhất, chúng có thể bao gồm hàng nghìn thành phần như: các transistor hoặc các cổng logic, cho nên với hệ thống số lớn, thiết kế ở mức cổng không còn sử dụng nữa Qua nhiều thập kỷ, giản đồ logic của các thiết kế logic cũng không còn nhiều nữa Ngày nay, sự phức tạp của phần cứng đã tăng lên ở một mức độ mà giản đồ của cổng logic hầu như vô ích khi nó chỉ biểu diễn một mạng lưới phức tạp các liên kết không theo chức năng của thiết kế Từ những năm 1970, các kỹ sư điện và máy tính đổi hướng theo ngôn ngữ mô tả phần cứng (HDL) Hai ngôn ngữ mô tả phần cứng nổi bật trong kỹ thuật là Verilog và
Trang 12cho phép các nhà thiết kế logic thiết kế và mô tả hệ thống số ở nhiều mức độ khác nhau và có sự hỗ trợ từ các công cụ thiết kế bằng máy tính để giúp cho việc xử lý thiết kế ở những mức độ khác nhau Cách sử dụng cơ bản của Verilog HDL trong thiết kế mạch tích hợp là mô phỏng thiết kế và tạo mẫu trên FPGA trước khi chuyển sang sản xuất Mục tiêu của Verilog không phải tạo ra những chip VLSI mà sử dụng Verilog để mô tả một cách chính xác chức năng của bất kỳ hệ thống số nào và nạp chương trình tạo mẫu lên FPGA, ví dụ như máy tính, các bộ
vi xử lý tuy tốc độ chậm và lãng phí diện tích hơn Những thiết kế ở mức thấp hơn trong Verilog được thực hiện trên VLSI để đạt đến tốc độ cực đại và có diện tích cực tiểu Tuy nhiên sử dụng thiết kế dùng Verilog trên FPGA sẽ tiết kiệm chi phí và thời gian thiết kế Vì vậy Verilog HDL là ngôn ngữ thiết kế được chọn trong đề tài này
Ngày nay, các ứng dụng của vi mạch điện tử trong điều khiển và xử lý rất rộng lớn Nhất là các ứng dụng trong xử lý hình ảnh và âm thanh Do khối lượng dữ liệu cần tính toán là rất lớn, thuật toán phức tạp nên không thể dùng các IC rời để ráp lại thành một hệ thống hoàn chỉnh Do đó, các SoC ra đời để tăng cường khả năng cũng như tốc độ xử lý của hệ thống Lúc này, tất cả các khối phần cứng được tích hợp vào một chip duy nhất, hoạt động song song và độc lập nhau [1] Như vậy, luồng dữ liệu sẽ đi qua hệ thống một cách liên tục và được xử lý song song đồng thời dẫn đến tốc độ hệ thống sẽ tăng lên Ngoài ra tốc độ của hệ thống còn phụ thuộc vào các khối phần cứng được thiết kế đặc biệt có khả năng hoạt động ở tốc độ cao (accelerator), đặc biệt là trong các mạch nhân và chia Đó là vì các mạch nhân và chia chiếm một số lượng rất lớn tài nguyên của hệ thống và
Trang 13Baugh Wooley được thiết kế rút gọn nhằm tăng tốc độ xử lý của hệ thống
Hình 1.1 : Mạch bình phương dựa trên mạch nhân Baugh Wooley
(HA : Half Adder, FA : Full Adder)
CPU nhúng sẽ làm nhiệm vụ điều khiển hoạt động của các khối phần cứng này Do CPU chỉ làm nhiệm vụ điều khiển, không xử lý dữ liệu nên tốc độ của hệ thống được cải thiện rất đáng kể Đây là điểm khác biệt lớn nhất giữa một SoC và một máy tính cá nhân (PC) Ngoài ra, một SoC còn có giá thành thấp, tiết kiệm diện tích (thường được tích hợp vào trong điện thoại di động) và mức tiêu thụ công suất rất thấp SoPC thường được dùng để định nghĩa các SoC được tích hợp trên FPGA Lúc này, các khối logic có khả năng cấu hình của FPGA sẽ được dùng để thiết kế các khối phần cứng Một CPU nhúng (Nios II) sẽ được tạo ra và kết nối với các khối phần cứng thông qua hệ thống bus (Avalon bus) để thiết lập các thông số và điều khiển sự hoạt động của cả hệ thống Người thiết kế vừa phải nắm được cách thiết kế phần cứng (sử dụng ngôn ngữ mô tả phần cứng Verilog)
Trang 14cá nhân (PC) ở các dây chuyền sản xuất trong công nghiệp nhờ những ưu điểm sau:
• - Tiết kiệm điện năng
• - Tốc độ cao, cấu hình nhanh
• - Nhỏ, gọn, ít chiếm diện tích
- Thời gian khởi động nhanh và có thể khởi động lại (restart) dễ dàng
Dò tìm chuyển động (motion detection) là một lĩnh vực rất quan trọng và có được những ứng dụng thực tiễn khá rộng rãi trong cuộc sống hàng ngày, cũng như trong quân sự, quốc phòng Ngày nay, cùng với sự phát triển mạnh mẽ của công nghệ chế tạo robot phục vụ cho đời sống hàng ngày của con người, lĩnh vực dò tìm chuyển động lại càng trở nên quan trọng hơn Nó đóng vai trò là thị giác cho các robot hiện đại nhằm tạo ra khả năng nhận dạng và xác định vị trí chính xác của vật thể trong không gian Ngoài ra, bản chất các thuật toán dò tìm chuyển động là tìm sự khác biệt giữa các ảnh liên tiếp vì vậy nó còn có thể ứng dụng để dò lỗi sản phẩm trong quá trình sản xuất công nghiệp Bằng cách so sánh hình ảnh hàng loạt sản phẩm được chế tạo với sản phẩm chuẩn, thuật toán có thể xác định được sản phẩm nào không đạt yêu cầu nhằm loại bỏ khỏi dây chuyền Một số các ứng dụng khác như camera an ninh trong các hệ thống phòng chống trộm, hoặc hệ thống điều khiển đèn tín hiệu giao thông dựa vào mật độ phương tiện đang lưu thông trên đường v.v đã cho thấy việc nghiên cứu các thuật toán dò tìm chuyển động là hết sức thiết thực, có khả năng ứng dụng thực tiễn rất cao trong đời sống hàng ngày
Ngày nay, dò tìm chuyển động là một quá trình xử lý hết sức quan trọng có
Trang 15nghiên cứu về lĩnh vực này nhưng do có một lượng dữ liệu quá lớn (video) cần phải xử lý, thuật toán phức tạp nên hầu hết chỉ nghiên cứu, phát triển giải thuật và thực hiện trên phần mềm (Matlab) là chủ yếu Tuy nhiên, như đã phân tích ở trên, việc thực hiện trên phần mềm sử dụng máy tính cá nhân có rất nhiều bất lợi Trong khi xu hướng chung theo đà sự phát triển của kỹ thuật số ngày nay là phải thu nhỏ kích thước các thiết bị, mở rộng các tính năng và tăng tốc độ xử lý Tiêu biểu cho xu hướng này chính là sự phát triển rất nhanh của các điện thoại di động với khả năng tương đương một máy tính cá nhân thu nhỏ (soạn thảo văn bản, lướt web, xem phim, chụp hình ) Bước đầu, đã có một số bài báo tìm cách đưa ra những thuật toán phù hợp tương thích với phần cứng (sử dụng FPGA) [2] Tuy nhiên, trở ngại lớn nhất chính là tốc độ thực hiện Do tốc độ xung clock của thiết kế phần cứng trên nền FPGA rất thấp, điều này gây ra rất nhiều khó khăn trong việc xử lý hình ảnh video Do đó cần phải tập trung vào các kiến trúc song song để tăng tốc độ xử lý dữ liệu mà nền tảng là một SoPC [3] Do việc truyền dữ liệu giữa các thành phần phần cứng trong thiết kế mất rất nhiều thời gian xử lý nên bắt buộc phải sử dụng các bộ tăng tốc (accelerator) và các kiến trúc phần cứng đường ống (pipeline) Điều này nhằm đảm bảo hệ thống sau khi được thiết kế có khả năng thực hiện xử lý thời gian thực Hình 1.2 là sơ đồ khối một hệ thống SoPC có khả năng thực hiện song song đường dữ liệu trong tài liệu tham khảo trên
Trang 16Hình 1.2 : Sơ đồ khối SoPC được thiết kế để xử lý dữ liệu song song
Sau khi đã có được một hệ thống với tốc độ xử lý tối ưu, một mô hình thuật toán xử lý ảnh cơ bản sẽ được cài đặt [4] Từ đó, dựa trên nền tảng một SoPC, một hệ thống với các thuật toán xử lý ảnh được xây dựng hoàn chỉnh [5] [6] Do các thuật toán dò tìm chuyển động trước đây chủ yếu đều dựa trên việc loại bỏ cảnh nền bằng cách trừ 2 khung hình (frame) liên tiếp nhau hoặc gần nhau để xác định vùng chuyển động nên đòi hỏi cần phải có bộ nhớ tương đối lớn để lưu trữ hình ảnh Đây cũng là một hạn chế khi phải thiết kế hệ thống trên các con chip có tài nguyên nhỏ nên thuật toán dò tìm chuyển động dựa trên kết cấu bề mặt (texture) sẽ khắc phục được nhược điểm này Bằng cách thiết lập một phân bố thống kê trên từng pixel ở mỗi khung hình đưa vào và so sánh nó với các khung hình tiếp theo để xác định vùng chuyển động Vì vậy, thuật toán dò tìm chuyển động dựa trên kết cấu bề mặt không cần thực hiện phép toán trừ frame
Mục tiêu của đề tài này gồm hai phần: thứ nhất, nghiên cứu và phát triển thuật toán dò tìm chuyển động dựa trên kết cấu bề mặt với khả năng thực hiện trên phần cứng, sau đó xây dựng mô hình mô phỏng trên phần mềm (Model C)
Trang 17Chương 3: Chương này sẽ đi vào cách thức tạo ra một custom instruction trên CPU Nios của hãng Altera Việc này giúp cho người sử dụng có thể can thiệp sâu vào quá trình hoạt động của CPU Nios, làm tăng khả năng hoạt động của hệ thống
Chương 4: Trình bày về các thuật toán tương thích phần cứng được sử dụng trong kết cấu bề mặt
Chương 5: Chương này sẽ đi sâu vào thuật toán dò tìm chuyển động dựa
trên kết cấu bề mặt
Chương 6: Thiết kế phần cứng và thực nghiệm
Chương 7: Kết luận và hướng phát triển đề tài
Trang 18Chương 2
MÔ HÌNH SOPC CỦA HÃNG ALTERA
2.1 KHÁI NIỆM SOPC
SoPC (System on Programmable Chip) là một dạng của SoC (System on Chip) Cùng với sự phát triển vượt bậc của ngành thiết kế IC (Integrated Circuit), khả năng tích hợp các linh kiện trên cùng một đế silicon ngày càng lớn, điều này dẫn đến việc tích hợp toàn bộ hệ thống (bao gồm các thành phần như : CPU, các khối tính toán, các khối DSP và các khối giao tiếp số, tương tự ) trên cùng một chip đơn duy nhất là rất khả thi Hình 2.1 là cấu trúc một SoPC điển hình của Altera Ưu điểm lớn nhất của SoC chính là ít tiêu tốn diện tích (thay vì phải sử dụng các IC rời, mỗi IC có chức năng riêng biệt) và công suất (dòng điện chạy trong chip tiêu tốn ít công suất hơn so với chạy trong một bo mạch) do cả hệ thống hoàn chỉnh được tích hợp trên một chip đơn Khi linh kiện logic khả trình FPGA ra đời với mật độ tích hợp ngày càng cao, các công nghệ mới ra đời tìm cách đưa các thành phần khác như CPU, bộ nhớ, DSP vào trong linh kiện này tạo thành một hệ thống nhúng hoàn chỉnh Cả một hệ thống được nhúng vào bên trong FPGA được gọi là một SoPC
Trang 19Hình 2.1 : Một SoPC điển hình của Altera
2.2 PHẦN MỀM SOPC BUILDER
SoPC Builder là một công cụ mạnh mẽ với một môi trường đồ họa được chuẩn hóa của hãng Altera nhằm giúp người thiết kế hệ thống dễ dàng tạo ra các SoPC SoPC Builder cung cấp cho người dùng khả năng thiết kế hệ thống rất nhanh và chặt chẽ Nhờ khả năng tự động tổ chức, sắp xếp các kết nối và tích hợp các thành phần giao tiếp chuẩn để hệ thống tối ưu nhất Tất cả các thành phần giao tiếp chuẩn hay do người sử dụng định nghĩa đều được kết nối với hệ thống Avalon Bus nhờ vào môi trường giao tiếp Avalon Nhờ vậy, cả hệ thống trở nên rõ ràng và duy nhất với hệ thống Avalon Bus chịu trách nhiệm đường truyền tải các tín hiệu điều khiển, dữ liệu giữa các thành phần với nhau Với SoPC Builder người thiết kế có thể có 2 sự lựa chọn : thiết kế một hệ thống hoàn chỉnh bao gồm cả CPU đứng ở trung tâm đóng vai trò điều khiển hoạt động cho toàn bộ hệ thống hoặc chỉ bao gồm các thành phần cơ bản mà không cần CPU điều khiển Lúc đó, cả hệ thống chỉ bao gồm các luồng dữ liệu từ đầu vào đến đầu ra mà không cần
Trang 20sự điều khiển của CPU Điều này giúp cho việc thiết kế dễ dàng hơn nhờ khả năng linh hoạt trong thiết kế hệ thống Hình 2 mô tả một cấu trúc SoPC được tạo
ra bởi SoPC Builder và Hình 3 là giao diện của chương trình SoPC Builder
Hình 2.2 : Ví dụ một SoPC được tạo ra bởi SoPC Buider
Trang 21Hình 2.3 : Giao diện SoPC Builder SoPC được hỗ trợ bởi một giao diện người dùng rất thân thiện gồm các nhãn được để ở phía trên cửa sổ Mỗi nhãn sẽ bao gồm các tác vụ được phân chia theo chức năng có liên quan với nhau Chức năng của các vùng cửa sổ trong hình 2.3 được trình bày trong bảng 2.1
Các nhãn (Tabs) Phân loại các tác vụ có chức năng liên
quan đến nhau để người thiết kế dễ dàng thực hiện
Danh sách các thành phần phần cứng
có thể sử dụng (List of Available
Liệt kê thư viện các thành phần phần cứng có thể sử dụng theo từng loại Mỗi
Trang 22Component) thành phần xuất hiện kèm một chấm
màu ngay bên tên của nó Chấm màu này có ý nghĩa sau:
Chấm xanh lá: các thành phần đầy đủ và có bản quyền đã được cài đặt
Chấm vàng: thành phần không đầy đủ, chỉ là bản đánh giá (evaluation version)
Chấm trắng: thành phần chưa được cài đặt
Lọc các thành phần (component filters) Lọc các thành phần theo phân loại ở
trên Bảng các thành phần đang được sử
dụng trong hệ thống (Table of Active
Components)
Liệt kê các thành phần đã được sử dụng trên hệ thống, cho phép thiết lập:
Tên của từng thành phần
Địa chỉ cơ bản
Nguồn xung clock
Ưu tiên ngắt (nếu có) cho mỗi cổng slave
Bảng kết nối (Connection Panel) Trình bày các liên kết giữa những
thành phần, cho phép ta:
Xác định các liên kết giữa cổng master và cổng slave trong hệ thống
Xác định cácđđường liên kết chung giữa một cổng master với nhiều cổng
Trang 23slave hoặc ngược lại
Thiết lập thông số cho kit (Board
Settings)
Cho phép xác định kit đang sử dụng Với cách này ta có thể xác định được những tính năng hỗ trợ cho từng loại kit mà ta đang sử dụng và SoPC Builder sẽ đưa ra sẵn các thành phần được hỗ trợ Người thiết kế sẽ không phải mất thời gian thiết kế lại
Bảng thiết lập xung clock (Clock
Settings Table)
Cho phép xác định các tín hiệu xung clock được sử dụng trong hệ thống bao gồm: tên, nguồn, tần số, và tùy chọn pipeline cho các thiết kế có tốc độ cao Cửa sổ thông báo (Messages Window) Hiển thị các cảnh báo, lỗi hay thông tin
liên quan đến hệ thống SoPC đang được thiết kế
Bảng 2.1: Các thành phần giao diện người dùng trên nhãn system contents
2.2.1 Cấu trúc của hệ thống SoPC Builder
Một thành phần trong SoPC Builder là một module được thiết kế sao cho SoPC Builder có thể tự động nhận diện và tích hợp vào hệ thống Người thiết kế có thể tự định nghĩa một thành phần hoặc chọn từ các thành phần có sẵn trong danh sách và thêm vào trong hệ thống SoPC Builder sẽ kết nối nhiều module với nhau để tạo thành một hệ thống SoPC Builder hoàn chỉnh SoPC Builder sẽ tạo
ra các đường liên kết bên trong giữa các module với nhau và sắp xếp các đường liên kết này để đảm bảo sự kết nối giữa các module Các module trong SoPC
Trang 24Builder đều sử dụng giao tiếp theo chuẩn Avalon, ví dụ như định địa chỉ các bộ nhớ, thiết lập các ngắt hay xây dựng các liên kết vật lý cho các thành phần Người thiết kế có thể sử dụng SoPC Builder để kết nối bất kì linh kiện logic nào (cả on-chip lẫn off-chip) mà nó có giao tiếp Avalon
SoPC Builder bao gồm các thành phần sau:
Vi xử lý NiOS
Các IP chuẩn và các thành phần giao tiếp ngoại vi
Các giao diện bộ nhớ
Các thành phần giao tiếp và bus, bao gồm cả Avalon Bus
Các bộ DSP
Người thiết kế có thể thêm vào hệ thống SoPC Builder các thành phần tự định nghĩa bằng cách sử dụng các ngôn ngữ mô tả phần cứng như Verilog HDL, VHDL chỉ cần chúng được thiết kế theo chuẩn giao tiếp Avalon Qui trình để tích hợp thêm một thành phần tự định nghĩa vào hệ thống SoPC Builder là :
1 Xác định các giao tiếp được sử dụng để tương tác với thành phần do người thiết kế tự định nghĩa
2 Tạo ra thành phần logic bằng ngôn ngữ Verilog HDL hoặc VHDL
3 Sử dụng SoPC Builder Editor để tạo ra một thành phần SoPC Builder cho tập tin HDL vừa tạo ra
4 Thêm thành phần SoPC Builder vào hệ thống
Một khi người thiết kế đã tạo ra một thành phần SoPC Builder thì thành
Trang 252.2.2 Chức năng của hệ thống SoPC Builder
Chức năng đầu tiên đó chính là định nghĩa và tạo ra phần cứng hệ thống SoPC Builder cho phép người thiết kế dễ dàng tạo ra các SoPC nhờ giao diện thân thiện và gần gũi Với giao diện này, người thiết kế có thể thêm, cấu hình và kết nối các các thành phần với nhau để tạo thành hệ thống hoàn chỉnh Sau khi đã được thiết lập thông số và thêm các thành phần vào hệ thống, SoPC Builder sẽ tạo ra các đường kết nối bên trong giữa các thành phần và xuất ra tập tin HDL Trong quá trình tạo ra hệ thống, SoPC Builder sẽ tạo ra các tập tin sau :
Tập tin HDL cho top-level của hệ thống SoPC Tập tin Synopsis Design Constraints (.sdc) Block Symbol File (.bsf) và Block Diagram File (.bdf) Tập tin định địa chỉ vùng nhớ và tập tin driver cho vi xử lý Nios Tập tin testbench của Nios và tập tin project dùng cho mô phỏng trên ModelSim
Tập tin chứa thông tin về hệ thống SoPC (.sopcinfo) chứa tất cả các dữ liệu về thành phần cũng như các kết nối trong hệ thống Tập tin này là sự mô tả về hệ thống hoàn chỉnh nhất
Sau khi đã tạo ra một SoPC, người thiết kế có thể biên dịch tất cả bằng phần mềm Quartus II trước khi cấu hình xuống chip FPGA
Chức năng kế tiếp đó chính là định địa chỉ vùng nhớ và các thành phần trong hệ thống Một khi hệ thống SoPC có cả vi xử lý Nios, SoPC Builder sẽ tạo ra một tập tin header để cung cấp địa chỉ cho mỗi giao tiếp Avalon của các thành phần trong hệ thống Người thiết kế có thể tùy chọn giữa giải mã địa chỉ tự động hay
Trang 26giải mã địa chỉ bằng tay Hình 2.4 là một ví dụ về khối giải mã địa chỉ với 1 thành phần đóng vai trò master và 2 thành phần đóng vai trò slave
Hình 2.4 : Giải mã địa chỉ với 1 master và 2 slave
Hình 2.5 là giao diện của SoPC Builder khi giải mã địa chỉ Địa chỉ gốc (base address) sẽ được hiển thị ở cột Base Vùng địa chỉ được phân cho một thành phần trong hệ thống SoPC được hiển thị ở hai cột Base và End với Base là địa chỉ đầu và End là địa chỉ cuối
Hình 2.5 : Giao diện của SoPC Builder trong giải mã địa chỉ
Khi thiết kế SoPC đòi hỏi phải có vùng nhớ để chứa mã lệnh và dữ liệu để cho vi xử lý hoạt động Trong các hệ thống xử lý ảnh, vùng nhớ dành cho dữ liệu ảnh cần phải rất lớn Ví dụ để xử lý 1 ảnh gray-scale có độ lớn 320 x 240 pixel với mỗi pixel cần 8 bit, như vậy ta phải cần một vùng nhớ khoảng 77 Kilo Byte chỉ để lưu trữ 1 ảnh Mà ta phải có một ảnh đầu vào và một ảnh sau khi xử lý xong, vậy hệ thống xử lý ảnh cần phải có tối thiểu 77 Kilo Byte x 2 = 154 Kilo
Trang 27Byte bộ nhớ để xử lý Trong xử lý video thì vùng nhớ này càng cần phải lớn hơn nữa Điều này đòi hỏi cần phải có một bộ nhớ dung lượng lớn để chứa dữ liệu ảnh Mà bộ nhớ on-chip không thể đáp ứng được yêu cầu này, do đó cần phải sử dụng các bộ nhớ off-chip (SRAM - SDRAM)
Để giao tiếp với bộ nhớ off-chip ta cần phải có các bộ điều khiển bộ nhớ (memory controller) Hình 2.6 là mô hình giao tiếp giữa Avalon Bus và một bộ nhớ bất đồng bộ Sau đây là sự so sánh giữa 2 loại bộ nhớ :
Đặc tính của on-chip memory:
• - Tốc độ xử lý nhanh hơn off-chip
• - Giá thành cao, khó cải tiến
Đặc tính của off-chip memory:
• - Giá thành rẻ
• - Tốc độ xử lý chậm hơn on-chip
• - Là nơi chứa dữ liệu tạm thời của các thành phần xử lý
Hình 2.6 : Giao tiếp với bộ nhớ
Trang 28Chức năng cuối cùng đó là tạo ra mô hình mô phỏng và tập tin testbench Việc này giúp cho việc thiết kế hệ thống dễ dàng hơn khi chạy mô phỏng để tìm lỗi và khắc phục Với tập tin testbench, người thiết kế có thể chạy mô phỏng trên phần mềm ModelSim của hãng Mentor Graphics một cách dễ dàng
2.3 AVALON BUS
Avalon bus là một kiến trúc bus đơn giản được thiết kế cho kết nối giữa một vi xử lý on-chip và các thiết bị ngoại vi trong một SoPC Avalon bus là một giao tiếp nhằm xác định kết nối cổng giữa các thành phần master và slave trên chip, đồng thời xác định thời gian (timing) giữa các thành phần khi chúng kết nối với nhau
* Mục tiêu thiết kế chính của Avalon bus là :
• - Đơn giản: cung cấp một giao thức dễ hiểu để thiết kế
• - Tối ưu hóa sử dụng tài nguyên cho các bus : tài nguyên được sử dụng cho việc thiết kế bus ít nhất phải nhằm bảo toàn các yếu tố logic (logic elements) bên trong thiết bị logic khả trình (PLD) Nói cách khác, tài nguyên logic được sử dụng cho việc thiết kế bus phải càng ít càng tốt nhưng vẫn phải đảm bảo sự linh hoạt của hệ thống
• - Hoạt động đồng bộ : vừa tương thích tốt với các khối phần cứng của người thiết kế đang cùng tồn tại trên một PLD, lại vừa tránh được các vấn đề phân tích thời gian (timing analysis) phức tạp
Trang 29Các quá trình truyền nhận cơ bản trên Avalon bus sẽ truyền một byte đơn, một half-word (16-bit), một word (32-bit) giữa các thành phần master và slave Sau khi quá trình truyền nhận kết thúc, ngay tức thì Avalon bus sẵn sàng cho hoạt động tiếp theo tại chu kì kế của xung clock giữa một cặp master và slave giống nhau (nối liền nhau), hoặc giữa các cặp master và slave không có mối liên hệ với nhau (các cặp master và slave này nối chung trên Avalon bus) Avalon bus đồng thời cũng có các tính năng mở rộng như : hỗ trợ các thiết bị ngoại vi có độ trễ thời gian, các thiết bị ngoại vi truyền nhận dữ liệu theo luồng và nhiều bus master (multiple bus master) Các tính năng truyền nhận mở rộng cho phép nhiều thành phần dữ liệu được truyền giữa các thiết bị ngoại vi chỉ trong một chu kì bus
Avalon bus hỗ trợ nhiều bus master Kiến trúc “multi-master” giúp cho việc xây dựng các hệ thống SOPC cực kỳ linh hoạt, và tạo cho người thiết kế khả năng xây dựng các thành phần phần cứng có tốc độ cao, băng thông rộng Ví dụ, một thiết bị ngoại vi có thể thực hiện một quá trình truyền nhận theo cách truy xuất bộ nhớ trực tiếp (Direct Memory Access) để truyền dữ liệu từ thiết bị ngoại
vi vào bộ nhớ hoặc ngược lại mà không cần một sự can thiệp nào của vi xử lý trong đường truyền dữ liệu Hay nói cách khác, dữ liệu được truyền trực tiếp giữa thiết bị ngoại vi và bộ nhớ mà không thông qua vi xử lý Lúc này, vi xử lý chỉ có vai trò điều khiển luồng dữ liệu chứ không truyền hay xử lý dữ liệu
Các master và slave tương tác với nhau dựa trên một kỹ thuật gọi là thỏa hiệp ở phía slave (slave-side arbitration) Kỹ thuật này nhằm xác định master nào được nắm quyền truy cập tới slave trong trường hợp có nhiều master truy cập cùng một lúc đến slave Kỹ thuật này có hai ưu điểm:
Trang 30• - Chi tiết về sự thỏa hiệp này được gói gọn bên trong Avalon bus Do đó, các giao tiếp giữa master và slave rất ổn định và chắc chắn, bất chấp số lượng master và slave có trên bus Mỗi master sẽ giao tiếp với Avalon bus như thể nó là master duy nhất trên đường Avalon bus
• - Các master có thể thực hiện quá trình truyền nhận song song nhau, miễn là chúng không truy cập tới cùng một slave trong cùng một chu kì bus
Avalon bus được thiết kế đặc biệt để thích nghi với môi trường SoPC Do đó nó là một kiến trúc bus được tích hợp sẵn rất năng động trên SoPC, bao gồm các tài nguyên logic và các đường kết nối bên trong một thiết bị logic khả trình Một số đặc điểm của kiến trúc Avalon là:
• - Giao diện đối với các thiết bị ngoại vi được đồng bộ với xung clock của
Avalon bus Do đó, các tín hiệu “ack” và tín hiệu bắt tay bất đồng bộ phức tạp là
không cần thiết trong thiết kế Vì thế, khả năng hoạt động của Avalon bus (và cũng là của toàn bộ hệ thống) có thể được đo đạc bằng các kĩ thuật phân tích chuẩn và đồng bộ thời gian
• - Tất cả các tín hiệu đều có thể được tích cực ở mức thấp hoặc cao, điều này cho phép khả năng hoạt động liên tục của hệ thống Các bộ đa hợp bên trong Avalon bus sẽ quyết định các tín hiệu nào điều khiển thiết bị ngoại vi Các thiết
bị ngoại vi sẽ không cần phải có ngõ ra 3 trạng thái ngay cả khi thiết bị đó không được chọn hoạt động
• - Các tín hiệu địa chỉ, dữ liệu và điều khiển sử dụng các cổng riêng biệt, điều này làm đơn giản hóa thiết kế của các thiết bị ngoại vi Một thiết bị ngoại vi
Trang 31không cần phải giải mã các chu kì bus dữ liệu và địa chỉ, và cũng không cần phải tắt các ngõ ra khi nó không được chọn hoạt động
• - Không gian địa chỉ lên tới 4 Giga byte: các thiết bị ngoại vi và bộ nhớ có thể được gắn bất kì nơi nào trong không gian địa chỉ 32-bit
- Tách rời các đường địa chỉ, dữ liệu và điều khiển : điều này giúp việc kết nối với các khối logic do người thiết kế tạo ra trở nên dễ dàng hơn, vì không cần sự giải mã chu kỳ bus dữ liệu và địa chỉ.•
- Tích hợp bộ giải mã địa chỉ : Avalon bus sẽ tự động tạo các tín hiệu
“Chip Select” cho tất cả các thiết bị ngoại vi, giúp cho việc thiết kế các thiết bị
ngoại vi giao tiếp với Avalon bus trở nên dễ dàng hơn
- Kiến trúc nhiều master trên một đường bus : lúc này Avalon bus sẽ tự tạo
ra các khối logic với chức năng thỏa thuận, sắp xếp cho các master này
- Khả năng cấu hình dễ dàng : bằng cách sử dụng một giao diện đồ họa dễ hiểu, người thiết kế có thể thêm vào các thiết bị ngoại vi và kiến trúc Avalon bus sẽ tự động được tạo ra dựa trên các chân tín hiệu của thiết bị ngoại vi đó
• - Khả năng điều chỉnh kích cỡ bus động: Avalon bus tự động quản lý các dữ liệu truyền nhận giữa các thiết bị ngoại vi có kích thước dữ kiệu không trùng khớp nhau, cho phép các thiết bị ngoại vi với kích thước dữ liệu khác nhau có thể giao tiếp với nhau dễ dàng
Trang 322.3.1 Avalon Bus Module
Avalon Bus Module chính là xương sống của một module hệ thống Đó là con đường chính cho giao tiếp giữa các thiết bị ngoại vi trong SoPC Avalon Bus Module bao gồm tất cả các tín hiệu điều khiển, dữ liệu và địa chỉ cùng với các khối logic làm nhiệm vụ quyết định đường truyền kết nối các thiết bị ngoại vi tạo thành module hệ thống Avalon Bus Module thực hiện kiến trúc bus có thể cấu hình được, nghĩa là nó có thể thay đổi các đường kết nối bên trong để phù hợp với các thiết bị ngoại vi của người thiết kế
Avalon Bus Module được tạo tự động bởi SoPC Builder, do đó người thiết kế hệ thống có thể tiết kiệm thời gian và công sức trong việc kết nối các thiết bị ngoại vi với nhau Sơ đồ khối của một Avalon Bus Module điển hình được trình bày trong hình 2.7
Avalon Bus Module sẽ cung cấp các chức năng sau cho các thiết bị ngoại
vi kết nối tới đường bus này:
• - Đa hợp đường dữ liệu: Các bộ đa hợp bên trong Avalon Bus Module sẽ truyền dữ liệu từ thiết bị ngoại vi slave được chọn đến thiết bị ngoại vi master tương ứng
• - Giải mã địa chỉ : bộ giải mã địa chỉ sẽ tạo ra các tín hiệu “chip select”
cho mỗi thiết bị ngoại vi cần truy xuất, do đó các thiết bị ngoại vi sẽ không cần
phải thực hiện giải mã địa chỉ mà chỉ cần sử dụng tín hiệu “chip select” Điều này
giúp đơn giản hóa việc thiết kế thiết bị ngoại vi
Trang 33• - Tạo trạng thái chờ (wait-state) : bộ tạo trạng thái chờ nhằm mục đích kéo dài thêm thời gian cho các quá trình truyền nhận dữ liệu bằng một hay nhiều chu
kì bus, điều này giúp cho một số quá trình của thiết bị đòi hỏi sự đồng bộ đặc biệt Trạng thái này có thể được tạo ra để tạm dừng một thiết bị master trong trường hợp thiết bị slave không thể đáp ứng kịp trong một chu kì bus Trạng thái chờ còn có thể được tạo ra trong trường hợp tín hiệu “read” hoặc “write” có yêu cầu tạm dừng hoặc đang trong quá trình cài đặt
- Điều chỉnh kích cỡ•bus động : áp dụng cho trường hợp các ngõ tín hiệu của thiết bị ngoại vi có kích cỡ bus khác nhau được nối chung với nhau
- Phân công ưu tiên ngắt : được thực hiện khi một hay nhiều thiết bị slave đồng thời tạo ra các tín hiệu ngắt, Avalon Bus Module sẽ chuyển các ngắt theo thứ tự ưu tiên đến các thiết bị master kèm theo con số ngắt (IRQ number) thích hợp
• - Khả năng truyền nhận dữ liệu theo luồng : cho phép khả năng truyền nhận dữ liệu theo luồng liên tục giữa một cặp thiết bị master-slave trong Avalon Bus Module
Trang 34Hình 2.7 : Sơ đồ khối một Avalon bus module trong thiết kế
2.3.2 Các thiết bị ngoại vi Avalon
Một thiết bị ngoại vi Avalon là một thiết bị logic, on-chip hoặc off-chip, thực hiện một số nhiệm vụ ở mức hệ thống, nó giao tiếp với các thành phần hệ thống khác thông qua Avalon Bus Các thiết bị này có thể được thêm vào hoặc lấy ra khỏi hệ thống khi thiết kế phụ thuộc yêu cầu của hệ thống
Thiết bị ngoại vi Avalon có thể là các bộ nhớ, vi xử lý, hay các thành phần thiết bị ngoại vi cơ bản như UART, PIO, bộ định thời … Bất kì khối logic nào cũng có thể là một thiết bị ngoại vi, miễn là phải cung cấp các tín hiệu địa chỉ, dữ liệu và điều khiển nhằm giao tiếp với Avalon Bus Một thiết bị ngoại vi sẽ kết nối với các cổng riêng biệt trên Avalon Bus Module Các thiết bị ngoại vi này còn có thể có thêm các đường tín hiệu khác không kết nối với Avalon Bus Các đường tín
Trang 35Vai trò của các thiết bị ngoại vi Avalon được phân loại thành master và slave Một thiết bị master có thể khởi tạo quá trình truyền nhận dữ liệu trên Avalon Bus Nó phải có ít nhất một cổng master nối với Avalon bus, và có thể có nhiều cổng slave để ruyền nhận dữ liệu từ các thiết bị master khác Một thiết bị slave là một thiết bị chỉ chấp nhận thụ động việc truyền nhận dữ liệu từ Avalon bus được kích hoạt bởi một thiết bị master mà không thể khởi tạo quá trình truyền nhận đó Một số thiết bị slave cơ bản như bộ nhớ hay cổng nối tiếp sẽ có duy nhất một cổng slave nối với Avalon bus
Cổng Master : Một cổng master là tập hợp các đường tín hiệu trên một
thiết bị master mà các đường tín hiệu này được sử dụng để khởi tạo quá trình truyền nhận trên Avalon Bus Cổng master nối trực tiếp tới Avalon Bus Module Trên thực tế, một thiết bị ngoại vi thường có một hoặc nhiều cổng master và cổng slave Sự phụ thuộc lẫn nhau giữa các cổng này tùy thuộc vào thiết kế của thiết bị ngoại vi
Cổng Slave: Một cổng slave là một nhóm các đường tín hiệu trên một
thiết bị slave mà chỉ có khả năng chấp nhận thụ động việc truyền nhận dữ liệu qua Avalon Bus được kích hoạt từ một cổng master
Cặp master-slave : Một cặp chủ-tớ là sự kết hợp giữa một cổng slave và một cổng master được kết nối với nhau thông qua Avalon Bus Module Nói cách khác, những cổng master và slave này sẽ kết nối đến các đường tín hiệu tương ứng trên Avalon Bus Module và phải được xác định rõ khi thiết kế trong SoPC Builder
Trang 36Ngoài ra, trong môi trường SoPC, ta còn phân loại các thiết bị theo tiêu chí bên trong hay bên ngoài module hệ thống Các thiết bị bên trong hệ thống nằm trong thư viện thiết bị có sẵn và sẽ được SoPC Builder kết nối một cách tự động Nó sẽ được coi như là một phần của hệ thống và các chi tiết về các đường dữ liệu, địa chỉ hoặc điều khiển sẽ không được hiển thị cho người thiết kế Các đường tín hiệu không theo chuẩn của Avalon trong các thiết bị này sẽ được coi như các đường kết nối ra ngoài của hệ thống và có thể được nối tới các chân vật lý của các off-chip Ngược lại, các thiết bị ngoại vi ngoài hệ thống sẽ được coi như kết nối với hệ thống thông qua các cổng ngoài nhất định nào đó của Avalon bus module Có một số lý do khiến người thiết kế buộc phải chọn để thiết bị ngoài hệ thống, ví dụ như thiết bị này thực sự nằm ngoài các linh kiện logic khả trình về mặt vật lý, hoặc các thiết bị này cần một số khối logic đặc biệt để kết nối nó đến Avalon bus, hoặc các thiết kế cho thiết bị này có thể chưa hoàn thành (có khả năng sẽ chỉnh sửa thêm) tại thời điểm thiết kế
2.3.3 Các bước thiết kế SoPC
Các bước thiết kế SoPC (được trình bày theo hình 2.8) :
Trang 37Hình 2.8 : Các bước thiết kế SoPC +•Khởi tạo một SoPC với Nios II làm trung tâm
+ Tích hợp các bộ điều khiển bộ nhớ (memory controller)
+ Lập trình các module với ngôn ngữ Verilog HDL/VHDL để tạo các thành phần logic
• + Thêm các thành phần vào SoPC builder
• + Kết nối các thành phần với nhau dùng Avalon bus
• + Biên dịch SoPC
• + Lựa chọn chip trên FPGA, nối chân, biên dịch Quartus II
• + Cấu hình xuống FPGA
Hầu hết các hệ thống được thiết kế với SoPC Builder đều yêu cầu cần phải có bộ nhớ Ví dụ, một vi xử lý nhúng bất kỳ đều cần phải có bộ nhớ để lưu trữ mã lệnh (vùng nhớ lệnh) và dữ liệu (vùng nhớ dữ liệu) Một hệ thống xử lý tín hiệu số (DSP system) lại cần vùng nhớ đệm (buffer) để lưu trữ dữ liệu trước và sau khi xử lý Hầu như mỗi hệ thống không chỉ có một loại bộ nhớ mà sử dụng nhiều loại
Trang 38bộ nhớ khác nhau trong thiết kế nhằm phục vụ cho nhiều mục đích khác nhau Chẳng hạn, một hệ thống DSP dựa trên vi xử lý thì sẽ cần một bộ nhớ lưu trữ mã lệnh và một bộ nhớ làm vùng nhớ đệm cho dữ liệu Người thiết kế có thể sử dụng SoPC Builder để tích hợp gần như tất cả các loại bộ nhớ vào hệ thống một cách dễ dàng Hình 2.9 là sơ đồ khối một hệ thống được tích hợp nhiều loại bộ nhớ khác nhau thông qua các bộ điều khiển
Hình 2.9 : Sơ đồ khối một hệ thống được tích hợp nhiều bộ nhớ
Sau khi đã tích hợp đầy đủ các loại bộ nhớ vào trong hệ thống, bước tiếp
Trang 39mô tả phần cứng như Verilog HDL hay VHDL Sau đó, người thiết kế phải kết nối các thành phần này lại với nhau và cấu hình toàn bộ SoPC hoàn chỉnh Trong bước này, khi thêm vào các thành phần không phải là bộ nhớ, người thiết kế phải xác định các cổng master và slave, địa chỉ cơ bản và xung clock hoạt động
Tiếp theo, ở mức thiết kế trên Quartus II, người thiết kế phải tích hợp SoPC thành một phần trong project của Quartus II, bao gồm việc nối dây giữa SoPC với các chân của FPGA, xây dựng các kết nối giữa SoPC với các khối phần cứng khác trên Quartus II Và cuối cùng là kết nối các chân vật lý của FPGA đến các bộ nhớ ngoài
Trang 40Với việc thiết kế các custom instruction, người thiết kế đã thay thế một chuỗi các lệnh cơ bản thực hiện bên trong Nios II bằng một lệnh duy nhất với các khối phần cứng liên quan Điều này thực sự làm giảm độ phức tạp của mã lệnh (code) và tăng khả năng thực thi của hệ thống Người thiết kế có thể sử dụng custom instruction cho nhiều mục đích khác nhau, ví dụ cụ thể nhất chính là tối
ưu các vòng lặp được thực hiện trong xử lý tín hiệu số hay các ứng dụng xử lý