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

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

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.45 MB, 114 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN





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:
PGS.TS NGUYỄN HỮU PHƯƠNG












THÀNH PHỐ HỒ CHÍ MINH, 2009

LỜI CẢM ƠN

Trong suốt thời gian gần ba năm theo chương trình cao học với rất nhiều
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ả.
Đầu tiên em xin gửi lời cảm ơn chân thành và sâu sắc đến
Thầy Nguyễn
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.
Em xin chân thành cảm ơn
Thầy Huỳnh Hữu Thuận

Thầy Lê Đức

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.
Em xin chân thành cảm ơn q thầy cô trong Khoa Điện Tử – Viễn Thông
đã 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, q 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
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 1
MỞ ĐẦ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.

GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 2
MỤ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ỚI THIỆU 9
1.2. BỐ
CỤC CÁC CHƯƠNG 16

CHƯƠNG 2 MÔ HÌNH SOPC CỦA HÃNG ALTERA 17

2.1. KHÁI NIỆM SOPC 17
2.2. PHẦN MỀM SOPC BUILDER 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. AVALON BUS 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
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 3
3.1.
KHÁI NIỆM CUSTOM INSTRUCTION 40
3.2.
GIAO TIẾP PHẦN CỨ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. GIAO TIẾP PHẦN MỀM 52
3.4. CÁC BƯỚC THỰC HIỆN 54
CHƯƠNG 4 KẾT CẤU BỀ MẶT 56
4.1. KẾT CẤU BỀ 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ÁN TỬ 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ÂN LOẠI CÁC THUẬT TOÁN DÒ TÌM CHUYỂN ĐỘNG 71
5.2. PHƯƠNG PHÁP DÒ TÌM CHUYỂN ĐỘNG DỰA TRÊN VI SAI 74
5.3. PHƯƠNG PHÁP PHÂN TÍCH CHUYỂN ĐỘNG DỰA TRÊN KẾT CẤU
82
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 5
CÁC TỪ TIẾNG ANH VIẾT TẮT

ALU Arithmetic Logic Unit
ASIC Application Specific Integrated Circuit
CPU Central Processing Unit
DMA Direct Memory Access
DSP Digital Signal Processing/Processor
FPGA Field Programmable Gate Array
HDL Hardware Description Language
IC Integrated Circuit
IDE Integrated Development Environment
LAB Logic Array Block
LBP Local Binary Pattern
PIO Parallel Input/Output
pixel picture element
PLD Programmable Logic Device
PLL Phase Lock Loop
SoC System on Chip

SoPC System on a Programmable Chip
VHDL Very High Speed Integrated Circuit HDL
VLSI Very Large Scale Integration

GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 6
DANH 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.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 7
Hì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, +45
o
, -45
o

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
Hình 6.18 : Kết quả dò tìm chuyển động trên C cho đoạn video ở hình 6.16
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 8
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG

HV : CAO TRẦN BẢO THƯƠNG
DANH 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
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 9
Chương 1
TỔNG QUAN
1.1. GIỚI THIỆU
Thời gian gần đây, cùng với sự phát triển của công nghệ điện tử hiện đại,
các lónh vực ứng dụng kỹ thuật số ngày càng đa dạng đã mang lại những hiệu quả
cực kỳ thiết thực. Có thể nói, kỹ thuật số đã thực sự trở thành một phần không thể
thiếu trong cuộc sống của con người hiện đại. Để có được điều này, đó chính là
nhờ sự phát triển mạnh mẽ của ngành thiết kế và sản xuất vi mạch. Trước đây
các loại linh kiện số là cố đònh, không thể lập trình được. Sau đó, các linh kiện có
thể lập trình đơn giản như ROM (Read Only Memory), PAL (Programmable
Array Logic), GAL (Generic Array Logic), đến các loại linh kiện logic khả trình
có kích thước lớn như CPLD (Complex Programmable Logic Device) và FPGA
(Field Programmable Gate Array) được sản xuất và sử dụng rộng rãi. FPGA là

một loại linh kiện logic khả trình càng ngày càng được sử dụng khá phổ biến cả
trong nghiên cứu lẫn sản xuất. Với khả năng linh động, có thể được tái cấu hình
nhiều lần, FPGA đã trở thành một linh kiện điện tử khá quan trọng, được ứng
dụng rộng rãi trong nhiều lónh vực. Việc thiết kế vi mạch dựa trên công nghệ
FPGA và ngôn ngữ lập trình phần cứng đang được phát triển và ứng dụng mạnh
mẽ vì giá thành thấp, thời gian phát triển ngắn và tốc độ khá nhanh. Các FPGA
thường được dùng trong các dây chuyền sản xuất công nghiệp, các thiết bò trong
xe 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
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 10
bộ hệ thống hoàn chỉnh trên một chip đơn duy nhất (System on Chip). Do đó, với
FPGA, 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à
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 11
VHDL nhưng những nhà thiết kế công nghệ thích sử dụng Verilog hơn. Verilog
cho 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à
làm cho tốc độ toàn hệ thống giảm lại khá đáng kể. Ví dụ ở hình 1.1 là một mạch
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 12
bình phương 4 bit (ngõ vào là số nhò phân 4 bit A
3
A
2
A
1
A
0
) dựa trên mạch nhân
Baugh 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)
vừa phải lập trình phần mềm (ngôn ngữ C) để điều khiển hệ thống. Một hệ thống
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 13
nhúng hoàn chỉnh trên FPGA sẽ hoạt động cực kỳ hiệu quả so với một máy tính
cá 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ó
mặt ở hầu hết các hệ thống thiết bò điện tử thông minh dùng trong mục đích quân
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 14
sự cũng như dân sự. Đã có rất nhiều các bài báo, đề tài trong và ngoài nước
nghiê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.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 15


Hì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).
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 16
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG
Cuối cùng, xây dựng một SoPC hoàn chỉnh cho thuật toán này và cài đặt lên kit
FPGA.
1.2. BỐ CỤC CÁC CHƯƠNG
Chương 1: Tổng quan.
Chương 2:
Giới thiệu SoPC, các đặc trưng cơ bản của SoPC và các công
cụ dùng để thiết kế SoPC. Phần này chủ yếu sẽ đi sâu vào các cách thức để tạo ra
một SoPC hoàn chỉnh cài đặt trên FPGA của hãng Altera.

Chươ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.
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 17
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG

Chươ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.
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 18
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG


Hì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
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 19
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG

sự đ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
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 20
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG


Hì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.
Thành phần Chức năng
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
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 21
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG

Component) 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
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 22
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG


slave 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

THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 23
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG

Builder đề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
phần này có thể sử dụng ở bất kì ở các hệ thống SoPC Builder khác.
THỰC HIỆN SOPC DÒ TÌM CHUYỂN ĐỘNG BẰNG PHƯƠNG PHÁP DỰA TRÊN KẾT CẤU 24
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
HV : CAO TRẦN BẢO THƯƠNG


2.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

×