ĐẠ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
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ế
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
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ớ
: 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
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
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
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à
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
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
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:
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
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