Mục đích của luận văn là nghiên cứu ứng dụng công nghệ mạch tích hợp logic khả trình FPGA để thực hiện xử lý các ảnh số trực tiếp ngay trên phần cứng với nhiều ưu điểm vượt trội mà vẫn c
Trang 1bộ giáo dục và đào tạo trường đại học bách khoa hà nội
-
LÊ THế THANH
Nghiên cứu về xử lý ảnh trên nền FPGA
Chuyên ngành: điện tử viễn thông
luận văn thạc sĩ KHOA Học
Người hướng dẫn khoa học : TS Phạm Ngọc Nam
Trang 2mạnh mẽ Các hệ thống xử lý ảnh số đươc triển khai rộng khắp là công cụ đắc lực không chỉ cho các cơ quan đoàn thể mà cho cả các cá nhân trong nhiều lĩnh vực khác nhau
Hiện nay, với sự phát triển của công nghệ máy tính số, các công nghệ xử lý ảnh số là rất dễ dàng và trực tiếp bằng nhiều phần mềm chuyên dụng trên máy tính Tuy nhiên, việc xử lý ảnh số trên máy tính gặp rất nhiều vấn đề về mặt giá thành, về kích thước khối lượng Mục đích của luận văn là nghiên cứu ứng dụng công nghệ mạch tích hợp logic khả trình FPGA để thực hiện xử lý các ảnh số trực tiếp ngay trên phần cứng với nhiều ưu điểm vượt trội mà vẫn cho kết quả giống như việc xử lý bằng các phần mềm chuyên dụng
Tác giả xin chân thành cám ơn TS Phạm Ngọc Nam, Bộ môn Kỹ
thuật Điện tử tin học, Khoa Điện tử viễn thông, đã tận tình hướng dẫn, trao đổi những kinh nghiệm và những ý kiến quý báu Xin gửi lời cám ơn tới các Thầy, Cô trong Khoa Điện tử viễn thông, tới gia đình, bạn bè đã giúp
đỡ và tạo điều kiện để tác giả có thể hoàn thành luận văn và khóa học
Cuối cùng, cũng phải nói rằng dù đã cố gắng, nhưng vẫn không tránh khỏi những sai sót trong quá trình thực hiện luận văn Nhưng tác giả vẫn luôn ý thức được rằng, những sai sót ấy cũng là một cơ hội cho tác giả rèn luyện các kỹ năng, khắc phục các nhược điểm của mình Đó tất cả là nhờ
sự theo dõi, hướng dẫn, phản biện tận tình và nghiêm túc của các thầy, cô trong hội đồng bảo vệ
Xin chân thành cảm ơn!
Hà Nội, ngày 20 tháng 04 năm 2010
Tác giả
Trang 3MỤC LỤC LỜI GIỚI THIỆU I TÓM TẮT II
MỤC LỤC 1
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 3
PHẦN MỞ ĐẦU 5
PHẦN I - CƠ SỞ LÝ THUYẾT XỬ LÝ ẢNH SỐ 7
1.1 Một số khái niệm cơ bản trong xử lý ảnh số 7
1.1.1 Phần tử ảnh - Pixel 7
1.1.2 Pixel và các lân cận 8
1.1.3 Đường liên kết 8
1.1.4 Mức xám 9
1.2 Tổng quan về một hệ thống xử lý ảnh số 9
1.2.1 Thu thập ảnh 11
1.2.2 Tiền xử lý ảnh: 12
1.2.3 Phân vùng ảnh: 13
1.2.4 Phân tích ảnh: 13
1.2.5 Nhận dạng ảnh: 13
1.3 Các thành phần của hệ thống xử lý ảnh: 14
1.4 Các thuật toán xử lý ảnh số 16
1.4.1 Toán tử cửa sổ (windowing operator) 16
1.4.2 Tăng độ tương phản 16
1.4.3 Nhân chập (convolution) 17
1.4.4 Các bộ lọc 18
1.4.5 Dò biên 22
1.4.6 Phân ngưỡng, phân vùng và nhị phân hóa ảnh số 23
1.4.7 Xử lý đồng cấu ảnh nhị phân 25
1.4.8 Bài toán đánh nhãn đối tượng: 26
Trang 41.5 Một số giải pháp phần cứng cho hệ thống xử lý ảnh số 29
1.5.1 FPGA 29
1.5.2 DSP Processor 29
1.5.3 Mainboard, laptop 30
PHẦN II - KHÁI QUÁT VỀ FPGA 32
2.1 Giới thiệu chung về FPGA và ngôn ngữ VHDL 32
2.1.1 Khái niệm và ứng dụng FPGA 32
2.1.2 Kiến trúc FPGA 34
2.1.4 Ngôn ngữ mô tả phần cứng VHDL 46
2.3 Giới thiệu hãng Xilinx và các công cụ lập trình: 49
2.3.1 Hãng Xilinx 49
2.3.2 ISE 9.2 49
2.3.3 LogicCore 9.2 50
2.3.4 EDK 9.2 50
2.3.5 System Generator 9.2 50
PHẦN III - THỰC HIỆN XỬ LÝ ẢNH SỐ 52
3.1 Bộ lọc hạng 52
3.1.1 Thực hiện bộ lọc hạng 52
3.1.2 So sánh thuật toán trong VHDL và MATLAB 56
3.2 Xử lý đồng cấu nhị phân 57
3.2 Tích chập 60
3.2.1 Thực hiện thuật toán tính tích chập 60
3.2.2 So sánh thuật toán trong VHDL và MATLAB 62
KẾT LUẬN 64
TÀI LIỆU THAM KHẢO 66
APPENDIX - VHDL SOURCE FILES 67
Trang 5DANH MỤC CÁC HÌNH VẼ
Hình 1.1: Những kiểu liên kết giữa các điểm ảnh 8
Hình 1.2: Những kiểu đường liên kết giữa các điểm ảnh 9
Hình 1.3: Các giai đoạn chính trong xử lý ảnh 10
Hình 1.4: Các thành phần chính của hệ thống xử lý ảnh 14
Hình 1.5: Ví dụ tích chập 18
Hình 1.6: Kết quả của phép lọc Gaussian với cửa sổ 3x3 21
Hình 1.7: Kết quả thuật toán dò biên 23
Hình 1.8: Phân ngưỡng theo lược đồ xám 24
Hình 1.9: Loại bỏ nhiễu và khôi phục đối tượng bằng quá trình làm mảnh -làm đầy 26
Hình 1.10: Sơ đồ thuật toán gán nhãn đối tượng 27
Hình 2.1: Kiến trúc chung của FPGA 34
Hình 2.2: Một Logic Block điển hình 35
Hình 2.3: Configurable Logic Blocks 36
Hình 2.4: Programmable Interconnect 37
Hình 2.5: Cấu trúc các thành phần của Spartan 3A 40
Hình 2.6: Trình tự thiết kế hệ thống trên nền FPGA 41
Hình 2.7: Qui trình thiết kế chip dựa trên VHDL 48
Hình 3.1: Thiết kế phần cứng cho thuật toán sắp xếp 53
Hình 3.2: Cấu trúc thuật toán bộ lọc hạng trong VHDL 55
Hình 3.3: Ảnh được xử lý bởi bộ lọc hạng có hạng là 4 bằng VHDL và MATLAB 56
Hình 3.4: So sánh kết quả xử lý ảnh bằng VHDL và MATLAB 57
Hình 3.5: Ảnh được xử lý bởi thuật toán làm mảnh bằng VHDL và MATLAB 58
Trang 6Hình 3.6: So sánh kết quả xử lý ảnh bằng VHDL và MATLAB 58
Hình 3.7: Ảnh được xử lý bởi thuật toán làm đầy bằng VHDL và MATLAB 59
Hình 3.8: So sánh kết quả xử lý ảnh bằng VHDL và MATLAB 59
Hình 3.9: Thiết kế phần cứng cho tích chập 61
Hình 3.10: Cấu trúc thuật toán trong VHDL 62
Hình 3.11: Ảnh được xử lý bởi tích chập bằng VHDL và MATLAB 63
Hình 3.12: So sánh kết quả xử lý ảnh bằng VHDL và MATLAB 63
Trang 7PHẦN MỞ ĐẦU
Xử lý ảnh số là một lĩnh vực đã và đang rất phát triển, có liên quan tới nhiều ngành học và hướng nghiên cứu khác nhau Từ những năm 1970 khi mà năng lực tính toán của máy tính ngày càng trở nên mạnh mẽ hơn, các máy tính lúc này có thể xử lý được những tập dữ liệu lớn như các hình ảnh, các đoạn phim thì khái niệm và kỹ thuật về xử lý ảnh số ngày càng được nhắc đến và nghiên cứu nhiều hơn cho tới ngày nay
Ngày nay, ứng dụng của xử lý ảnh số đã trở nên rất rộng lớn và đa dạng, len lỏi vào mọi lĩnh vực từ quân sự, khoa học, vũ trụ, cho đến y học, sản xuất, và tự động hóa tòa nhà Xử lý ảnh số cũng có liên quan đến nhiều ngành khác như: hệ thống tin học, lý thuyết thông tin, lý thuyết thống kê, trí tuệ nhân tạo, nhận dạng, v.v
Trên cơ sở đó, tác giả đã lựa chọn luận văn tốt nghiệp của mình là
“Xử lý ảnh trên nền FPGA” với mục đích là nghiên cứu các vấn đề trong lĩnh vực xử lý ảnh số Đồng thời, từ những kiến thức thu nhận được đó, tiến hành thực hiện một số thuật toán xử lý ảnh số trên nền FPGA (hardware), sau đó so sánh, đánh giá với các ảnh được xử lý bằng MATLAB (software)
Trong phần 1 của luận văn đề cập đến những các khái niệm của hệ thống xử lý ảnh số, những ứng dụng và các thành phần của nó Đồng thời tác giả cũng trình bày cơ sở kiến thức của xử lý ảnh số
Trong phần 2 trình bày những khái niệm cơ bản về chip khả trình FPGA, hãng Xilinx và những công cụ lập trình và phát triển hệ thống với FPGA
Trang 8Phần 3 đi sâu vào thực hiện một số thuật toán xử lý ảnh cơ bản bằng ngôn ngữ lập trình VHDL cho FPGA, so sánh với kết quả xử lý trên máy tính bằng MATLAB
Và cuối cùng, tác giả tổng kết những kết quả đạt được, những ưu điểm, nhược điểm của giải pháp, hiệu quả của giải pháp và những hướng phát triển
Trang 9PHẦN I
CƠ SỞ LÝ THUYẾT XỬ LÝ ẢNH SỐ 1.1 Một số khái niệm cơ bản trong xử lý ảnh số
1.1.1 Phần tử ảnh - Pixel
Ảnh trong thực tế là một ảnh liên tục về không gian và về giá trị độ sáng Để có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số hoá ảnh Trong quá trình số hoá, người ta biến đổi tín hiệu liên tục sang tín hiệu rời rạc thông qua quá trình lấy mẫu (rời rạc hóa về không gian) và lượng hoá thành phần giá trị mà thể về nguyên tắc bằng mắt thường không phân biệt được hai điểm kề nhau Trong quá trình này, người ta sử dụng khái
niệm Picture element mà ta quen gọi hay viết là Pixel - phần tử ảnh Ở đây
cũng cần phân biệt khái niệm pixel hay đề cập đến trong các hệ thống đồ hoạ máy tính Để tránh nhầm lẫn ta tạm gọi khái niệm pixel này là pixel thiết bị Khái niệm pixel thiết bị có thể xem xét như sau: khi ta quan sát màn hình (trong chế độ đồ hoạ), màn hình không liên tục mà gồm nhiều điểm nhỏ, gọi là pixel Mỗi pixel gồm một cặp toạ độ x, y và màu
Cặp toạ độ x, y tạo nên độ phân giải (resolution) Như màn hình máy
tính có nhiều loại với độ phân giải khác nhau: màn hình CGA có độ phân giải là 320 x 200; màn hình VGA là 640 x 350,
Như vậy, một ảnh là một tập hợp các điểm ảnh Khi được số hoá, nó thường được biểu diễn bởi bảng hai chiều I(n,p): n dòng và p cột Ta nói ảnh gồm n x p pixels Người ta thường kí hiệu I(x,y) để chỉ một pixel Thường giá trị của n chọn bằng p và bằng 256 Hình 1.2 cho ta thấy việc
Trang 10biểu diễn một ảnh với độ phân giải khác nhau Một pixel có thể lưu trữ trên
1, 4, 8 hay 24 bit
1.1.2 Pixel và các lân cận
Như đã biết, mỗi khung ảnh được mô tả dưới dạng ma trận 2 chiều, trong đó mỗi phần tử của ma trận tương ứng với mức xám của 1 điểm ảnh (pixel) Mỗi điểm ảnh này có các lân cận xung quanh Nếu hiển thị mỗi pixel dưới dạng một ô vuông, mỗi điểm có chung biên với 4 điểm lân cận,
và có chung góc với 4 điểm lân cận khác
Hai điểm lân cận gọi là "liên kết 4" nếu chúng có chung biên với nhau, và "liên kết 8" nếu chung góc và chung biên với nhau
a) Liên kết 4 b) Liên kết 8
Hình 1.1: Những kiểu liên kết giữa các điểm ảnh
1.1.3 Đường liên kết
Đường liên kết là đường nối từ pixel [i1, j1] đến pixel, [in, jn], qua một chuỗi các pixel [i1, j1], [i2, j2], , [ik, jk] , trong đó mỗi pixel liên kết với pixel trước nó Ta có đường liên kết 4 hoặc liên kết 8 nếu các pixel liên kết 4 hoặc 8 với nhau
Trang 11a) Liên kết 4 b) Liên kết 8
Hình 1.2: Những kiểu đường liên kết giữa các điểm ảnh
Có thể dễ dàng nhận thấy, nếu có một đường liên kết giữa 2 điểm, [ia, ja], [ib, jb] và giữa 2 điểm, [ia, ja], [ic, jc] thì cũng sẽ có đường liên kết giữa 2 điểm [ib, jb] và [ic, jc] Liên kết có tính tương đối
1.1.4 Mức xám
Mức xám (Gray level) là kết quả sự mã hoá tương ứng một cường độ sáng của mỗi điểm ảnh với một giá trị số - kết quả của quá trình lượng hoá Cách mã hoá kinh điển thường dùng 16, 32 hay 64 mức Mã hoá 256 mức
là phổ dụng nhất do lý do kỹ thuật Vì 28 = 256 (0, 1, , 255), nên với 256 mức, mỗi pixel sẽ được mã hoá bởi 8 bit
1.2 Tổng quan về một hệ thống xử lý ảnh số
Để có thể hình dung cấu hình một hệ thống xử lý ảnh chuyên dụng hay một hệ thống xử lý ảnh dùng trong nghiên cứu, đào tạo, trước hết chúng ta sẽ xem xét các bước cần thiết trong xử lý ảnh
Chúng ta xem xét sơ đồ dưới đây:
Trang 12Theo như trên sơ đồ trên, từng giai đoạn sẽ có các chức năng riêng
cụ thể như sau:
Trước hết là quá trình thu nhận ảnh (image acquision) Ảnh có thể
thu nhận qua camera Thường ảnh thu nhận qua camera là tín hiệu tương
tự, nhưng cũng có thể là tín hiệu số hoá Ảnh cũng có thể thu nhận từ vệ tinh qua các bộ cảm ứng (sensor), hay ảnh, tranh được quét trên scanner Chi tiết về quá trình thu nhận ảnh sẽ được mô tả ở phần sau
Tiếp theo là quá trình số hoá (Digitalizer) để biến đổi tín hiệu tương
tự sang tín hiệu rời rạc (lấy mẫu) và số hoá bằng lượng hoá, trước khi chuyển sang giai đoạn xử lý, phân tích hay lưu trữ lại
Qúa trình phân tích ảnh thực chất bao gồm nhiều công đoạn nhỏ
Trước hết là tiền xử lý ành - tăng cường ảnh để nâng cao chất lượng ảnh
Do những nguyên nhân khác nhau: có thể do chất lượng thiết bị thu nhận
Nhận dạng
Phân tích ảnh
Tiền
xử lý ảnh Phân tích ảnh
Trang 13ảnh, do nguồn sáng hay do nhiễu, ảnh có thể bị suy biến Do vậy cần phải tăng cường và khôi phục lại ảnh để làm nổi bật một số đặc tính chính của ảnh, hay làm cho ảnh gần giống nhất với trạng thái gốc- trạng thái trước khi
ảnh bị biến dạng Giai đoạn tiếp theo là phân vùng ảnh, phân tích ảnh để
phát hiện các đặc tính như biên, phân vùng ảnh, trích chọn các đặc tính, v.v
Cuối cùng, tuỳ theo mục đích của ứng dụng, sẽ là giai đoạn nhận
dạng, phân lớp hay các quyết định khác
Sau đây, chúng ta lần lượt tiến hành nghiên cứu cụ thể từng quá trình của hệ thống xử lý ảnh số
1.2.1 Thu thập ảnh
Trong hệ thống xử lý ảnh số, camera là một thiết bị rất quan trọng có chức năng quan sát và thu nhận ảnh đầu vào của hệ thống Nó thường được coi là hộp đen trong đó có các quá trình biến đổi để chuyển một ảnh thành dạng lưu trữ trong máy tính Các bước xử lý này bao gồm sự phát sáng, thấu kính, sensor, các phần tử quang điện và bộ số hoá, mỗi thành phần này phối hợp nhằm đưa ra ảnh số cuối cùng Điểm đặc biệt quan trọng trong nhận dạng ảnh là đặc tính thời gian của camera, vì vậy quá trình xử lí ảnh
có vai trò như bộ lấy mẫu trong hệ thống nhận dạng ảnh
Cảm biến nhìn chung gồm 2 thành phần chính Thành phần thứ nhất tạo ra tín hiệu điện ở đầu ra tỉ lệ với mức năng lượng mà nó nhận được Thành phần thứ 2 là bộ số hóa (digitalize), là phần tử biến đổi tín hiệu tương tự thành tín hiệu số Tùy thuộc vào thành phần số hóa thực chất là bộ chuyển đổi ADC, chúng ta có các tín hiệu với số bit khác nhau: 4 bit, 8bit,
Trang 1410 bit, 12 bit , tương ứng ta sẽ được các ảnh có 16, 256 mức xám khác nhau
Trước đây, người ta sử dụng các camera dựa trên thiết bị phóng tia điện tử, linh kiện bán dẫn, tuy nhiên những thiết bị này thường cồng kềnh, thiếu bền vững, độ ổn định thấp Từ những năm 1980, đã bắt đầu xuất hiện các sensor ảnh trong các camera như sensor CMOS, CCD Các sensor này chứa một số lượng phần tử quang rời rạc, hay các điểm ảnh (pixel), mỗi phần tử chứa thông tin liên quan đến độ sáng chiếu vào nó
Độ phân giải của các sensor phụ thuộc vào số điểm ảnh trên nó Số điểm ảnh của các sensor là đa dạng, từ thấp (32x32 điểm ảnh), đến trung bình (256x256 điểm ảnh) cho đến cao (640x480) hoặc cao hơn nữa là 1280x1024 điểm ảnh
Mỗi khung ảnh thu về được biểu diễn dưới dạng I(x,y) trong đó x,y
là tọa độ của pixel trên khung và I là mức xám tương ứng của pixel đó
Như vậy 1 khung ảnh thu được sẽ được biểu diễn dưới dạng một ma trận 2 chiều n x m với n là số pixel trên 1 hàng, m là số hàng trong 1 khung
1.2.2 Tiền xử lý ảnh:
Sau khi ảnh số được thu thập dưới dạng tín hiệu số, cần phải trải qua giai đoạn tiền xử lý Chức năng chủ yếu của tiền xử lý là cải thiện ảnh, nâng cao các tính chất của ảnh giúp cho các quá trình xử lý về sau được thuận tiện hơn Các công đoạn cơ bản của tiền xử lý là: nâng cao độ tương phản, lọc nhiễu
Trang 151.2.3 Phân vùng ảnh:
Bước tiếp theo của quá trình xử lý là phân vùng ảnh Ảnh sau khi đã được cải thiện, sẽ trở nên thuận tiện hơn cho việc phân ngưỡng và phân vùng Nhiệm vụ chính của phân ngưỡng và phân vùng ảnh là tách ảnh đầu vào thành các đối tượng, vật thể riêng biệt Kết quả của quá trình phân vùng ảnh, ta sẽ được một tập hợp các điểm ảnh có liên kết với nhau thành các đối tượng, được đánh số phân biệt, thuận tiện cho các quá trình xử lý cao hơn
Đầu ra của quá trình phân vùng ảnh là các pixel chưa được lọc, bao gồm liên kết của 1 vùng hoặc tất cả các điểm ảnh trong vùng đó Số liệu này cần được biến đổi thành dạng thích hợp cho máy tính xử lý
1.2.4 Phân tích ảnh:
Đây là giai đoạn xử lý bậc cao trong hệ thống xử lý ảnh số Ảnh sau khi được phân vùng thành các đối tượng riêng biệt, đã được đánh số phân biệt, sẽ được phân tích để phục vụ những mục đích khác nhau như:
Xác định các đặc trưng hình học của đối tượng: dựa trên cơ sở đối tượng đã được xác định và phân biệt, ta có thể thực hiện xác định các đặc trưng hình học của mỗi đối tượng đấy, như: vị trí, kích thước, hướng, và
số đối tượng hay mật độ đối tượng trong ảnh Đây là các đặc trưng được dùng nhiều trong hệ thống thị giác máy (machine vision)
1.2.5 Nhận dạng ảnh:
Các đối tượng có thể là các vật thể có hình dạng nhất định, hoặc các
Trang 16nhận dạng theo những phương pháp nhất định như phương pháp neural, để tìm ra mẫu hình dạng mà đối tượng đó thuộc về
Để hướng dẫn hoạt động của từng module xử lý, cần có một hệ cơ sở kiến thức để kiểm tra hoạt động và tương tác giữa các module Hệ này có nhiệm vụ kiểm soát hoạt động của từng module và sắp xếp trình tự hoạt động của chúng trong từng thời điểm, giải quyết bài toán xung đột
Máy chủ
Bộ nhớ ngoài
Bộ xử lý ảnh số
Trang 17Đối với một hệ thống xử lý ảnh thu nhận qua camera thì camera như
là con mắt của hệ thống Có 2 loại camera: camera ống loại CCIR và camera CCD Loại camera ứng với chuẩn CCIR quét ảnh với tần số 1/25 và mỗi ảnh gồm 625 dòng Loại CCD gồm các photo điốt và làm tương ứng một cường độ sáng tại một điểm ảnh ứng với một phần tử ảnh (pixel) Như vậy, ảnh là tập hợp các điểm ảnh Số pixel tạo nên một ảnh gọi là độ phân giải (resolution)
Bộ xử lý tương tự (analog processor) Bộ phận này thực hiện các chức năng sau:
- Chọn camera thích hợp nếu hệ thống có nhiều camera
Máy chủ đóng vai trò điều khiển các thành phần miêu tả ở trên
Bộ nhớ ngoài: dữ liệu ảnh cũng như các kiểu dữ liệu khác, để có thể chuyển giao cho các quá trình khác, nó cần được lưu trữ Để có một ước lượng, xét thí dụ sau: một ảnh đen trắng cỡ 512 x 512 với 256 mức xám chiếm 256K bytes Với một ảnh màu cùng kích thước dung lượng sẽ tăng gấp 3 lần
Trang 181.4 Các thuật toán xử lý ảnh số
1.4.1 Toán tử cửa sổ (windowing operator)
Trong việc thực thi các thuật toán xử lý ảnh số cơ bản, người ta thường sử dụng một toán tử đặc biệt gọi là toán tử cửa sổ Toán tử cửa sổ là một tập hợp có hình dạng nhất định, gồm các pixel có liên kết với một pixel trung tâm, là pixel đang được xử lý Các phép toán trên các pixel này sẽ có ảnh hưởng đến các pixel trung tâm cũng là các pixel đang được xử lý trong một thuật toán xử lý ảnh
Toán tử cửa sổ có nhiều hình dạng, tùy thuộc vào thuật toán thực hiện Tuy nhiên thường dùng nhất là các toán tử có dạng hình vuông với các cạnh là một số lẻ, ví dụ: 3x3, 5x5, 7x7
Trong đồ án này, em sử dụng thường xuyên toán tử cửa sổ có dạng 3x3, vì đây là kích thước hợp lý để thực hiện hiệu quả tất cả các thuật toán
xử lý cơ bản và nâng cao, đồng thời lại dễ thực hiện và rút ngắn tối đa quá trình xử lý Nếu sử dụng cửa sổ 5x5 và 7x7, thời gian xử lý sẽ tăng lên rất nhiều
1.4.2 Tăng độ tương phản
Ảnh sau khi thu được từ camera, có thể do sự tương phản ảnh sáng kém, dẫn đến độ chói quá cao, khó phân biệt Để cải thiện ảnh, hỗ trợ các quá trình xử lý cao hơn, ta sử dụng các phương pháp hiệu chỉnh: hiệu chỉnh min-max, hiệu chỉnh histogram, hiệu chỉnh Gamma,
Trang 19Ở đây ta sử dụng phương pháp hiệu chỉnh min-max vì nó dãn đều mức xám của ảnh trong dải cho phép (không ảnh hưởng đến mức xám chung) Công thức để nâng cấp ảnh theo hiệu chỉnh min-max:
256
min max
I I
new
Trong đó: Imax, Imin - là các mức xám cao nhất và thấp nhất
Inew, Iold - là mức xám sau khi hiệu chỉnh và trước khi hiệu chỉnh
Sau khi hiệu chỉnh mức xám, ta sẽ dãn mức xám của ảnh ra các giá trị cách biệt nhau hơn, tạo thuật tiện cho việc xử lý và nhận dạng sau này
1.4.3 Nhân chập (convolution)
Nhân chập không phải là một thuật toán xử lý ảnh, mà là phép toán thông dụng trong các thuật toán xử lý ảnh sử dụng toán tử cửa sổ Nhân chập được sử dụng trong các bài toán dò biên (edge detection) và lọc tuyến tính (linear filter)
Nhân chập tính toán ra giá trị mới của pixel trung tâm của toán tử cửa sổ, bằng cách thực hiện phép tính với các pixel lân cận và chính pixel trung tâm
Việc thực thi phép nhân chập như sau: cho một cửa sổ với pixel trung tâm chạy trên toàn bộ khung ảnh, với mỗi cửa sổ 3x3 thu được, ta thực hiện phép toán:
Trang 20) , ( ) , ( )
, ( i
i n
j
j m
m n I m n c j
i I
Kết quả tính được cho ra giá trị mới của pixel trung tâm
Trong (1.1), c(n,m) là các phần tử của một ma trận gọi là mặt nạ (mask) Mỗi thuật toán xử lý khác nhau sử dụng một mặt nạ khác nhau để tính giá trị của các điểm ảnh
Dưới đây là một ví dụ của tích chập:
Hình 1.5: Ví dụ tích chập
Kết quả đầu ra:
Trang 21điện tử của máy thu hay chất lượng kém của bộ số hoá Ta xem xét biết nhiễu thể hiện trên ảnh thế nào
Giả sử ảnh là một miền có mức xám đồng nhất Như vậy các phần tử của ma trận biểu diễn ảnh sau quá trình số hoá phải có cùng giá trị Nhưng thực tế quan sát, ta thấy: gần giá trị trung bình của mức xám có những phần
tử trội lên khá nhiều Đó chính là hiện tượng nhiễu Như vậy, nhiễu trong ảnh số được xem như sự dịch chuyển nhanh của tín hiệu thu nhận (tín hiệu ảnh I[m,n]) trên một khoảng cách ngắn Xem xét một cách tương đương trong không gian tần số, nhiễu ứng với các thành phần tần số cao trong ảnh
Do vậy, người ta nghĩ đến việc biến đổi có tính đến ảnh hưởng của các phần tử lân cận bằng cách lấy “tổ hợp “ các điểm lân cận này (trong không gian thực) hay lọc các thành phần tần số cao (trong không gian tần
số) Đây chính là kỹ thuật lọc (filtering) Cơ sở lý thuyết của kỹ thuật lọc số
là dựa trên tính dư thừa thông tin không gian: các pixel lân cận có thể có cùng hoặc gần cùng một số đặc tính Hơn nữa, nhiễu có thể coi như sự đột biến của một điểm ảnh so với các điểm lân cận
Trong kỹ thuật này, người ta sử dụng một mặt nạ và di chuyển khắp ảnh gốc Điểm ảnh chịu tác động của biến đổi là điểm ở tâm mặt nạ
Các bộ lọc làm mịn ảnh được sử dụng để làm mờ và giảm nhiễu Làm mờ ảnh được sử dụng trong quá trình tiền xử lý ảnh, nhằm mục đích loại bỏ các chi tiết nhỏ ra khỏi ảnh trước khi tiến hành tách các thành phần lớn hơn khỏi ảnh, làm mờ còn được sử dụng để làm liền lại những đứt quãng nhỏ của đường thẳng hoạc đường cong Chúng ta cũng có thể giảm nhiễu bằng cách làm mờ ảnh bằng các bộ lọc tuyến tính cũng như phi tuyến
Trang 22Lọc tuyến tính (linear filter) có tác dụng cải thiện ảnh, loại bỏ nhiễu
hỗ trợ cho các quá trình xử lý cao hơn
Như ta đã biết, lọc tuyến tính là một quá trình trong đó mỗi điểm ảnh
có giá trị bằng trung bình của các điểm ảnh lân cận xác định bởi bộ lọc Do
đó ảnh sau xử lý trở nên mượt hơn, giảm độ sắc nét so với ảnh gốc Kết quả
là các thành phần nhiễu ngẫu nhiêu, thường có mức xám khác biệt với các vùng lân cận sẽ được loại bỏ Tuy nhiên, một hạn chết dễ thấy khi tiến hành làm mượt ảnh là tại các vị trí biên (chi tiết được sử dụng nhiều trong xử lý ảnh), nơi có sự thay đổi nhanh chóng của các mức xám, lại bị làm mờ đi, ảnh hưởng đến các bước tiếp theo trong xử lý ảnh Tuy nhiên, nếu sử dụng cửa sổ lọc thích hợp, ta có thể giảm nhiễu mà ít ảnh hưởng đến biên ảnh
Mỗi bộ lọc khác nhau sử dụng một mặt nạ khác nhau, cho hiệu quả khác nhau tùy vào mục đích sử dụng và tình trạng của ảnh sau khi thu thập
Ví dụ đối với ảnh có nhiễu phân bố đều, ngẫu nhiên độc lập với mỗi pixel,
ta có thể sử dụng mặt nạ dành cho lọc trung bình, mặt nạ này sẽ làm giảm ảnh hưởng của nhiễu đối với pixel trung tâm bằng cách lấy trung bình cộng các pixel lân cận trong cửa sổ
111
11191
33 32 31
23 22 21
13 12 11
c c c
c c c
c c c c
Nếu ảnh có nhiễu Gaussian, ta sử dụng mặt nạ
242
121161
33 32 31
23 22 21
13 12 11
c c c
c c c
c c c c
Trang 23Bộ lọc trên tiến hành lấy trung bình có trọng số đối với các điểm ảnh lân cận, tức là mỗi điểm ảnh được nhân với một hệ số khác nhau, hệ số càng lớn thì điểm ảnh đó có trọng số càng lớn Ở bộ lục trên, điểm ảnh trung tâm có vai trò quan trọng nhất trong phép toán tính trung bình, càng
ra xa điểm ảnh trung tâm, trọng số của các điểm ảnh cũng giảm dần Mục đích của việc làm này là hạn chế ảnh bị mờ khi tiến hành làm mượt Tuy nhiên ta rất khó thấy sự khác biệt giữa hai bộ lọc trên do cửa dổ lọc có kích thước nhỏ hơn nhiều so với kích thước ảnh
a) Trước khi lọc b)Sau khi lọc
Hình 1.6: Kết quả của phép lọc Gaussian với cửa sổ 3x3
Bộ lọc hạng (Order-Statistics filters): Lọc hạng là phương pháp lọc
trong đó mức xám tại một điểm được tính dựa trên sự xếp hạng các điểm ảnh lân cận Giá trị pixel của ảnh gốc sẽ được thay thế bằng giá trị mức xám thứ order
Một trường hợp đặc biệt của lọc hạng là bộ lọc trung vị, trong đó phần tử được chọn là phần tử xếp hạng chính giữa Trường hợp cụ thể, với cửa sổ bộ lọc là 3x3 thì hạng của bộ lọc trung bị là 5 Bộ lọc này thường
Trang 24trường hợp có các giá trị pixel lớn hơn hoặc nhỏ hơn hẳn các giá trị lân cận,
ví dụ như nhiễu “salt and pepper”, khi đó các thành phần nhiễu nhày do có mức xám khác biệt với các điểm lân cận sẽ được thay thế bằng mức xám gần bằng các điểm xung quanh
1.4.5 Dò biên
Biên của một đối tượng được xác định ở nơi mức xám của các pixel
có sự thay đổi đột ngột Có nhiều cách xác định biên, như dò biên theo gradient, dò biên bằng cách lấy đạo hàm bậc 2 của mức xám theo tọa độ pixel Hầu hết các thuật toán dò biên sử dụng nhân chập, dù không phải là tất cả Thuật toán dò biên mà em sử dụng trong đồ án này là thuật toán Laplacien
Thuật toán Laplacien dò biên chỉ quan tâm đến sự thay đổi đột ngột của mức xám (lấy đạo hàm bậc 2) mà không quan tâm đến hướng của biên Thuật toán này được thực thi bằng cách sử dụng mặt nạ:
181
111
33 32 31
23 22 21
13 12 11
c c c
c c c
c c c
141
010
33 32 31
23 22 21
13 12 11
c c c
c c c
c c c
Trang 25a) Ảnh gốc b) Kết quả dò biên
Hình 1.7: Kết quả thuật toán dò biên
1.4.6 Phân ngưỡng, phân vùng và nhị phân hóa ảnh số
Ảnh sau quá trình tiền xử lý, nâng cấp, để tới những quá trình xử lý cao hơn cần được nhị phân hóa, phân vùng thành các đối tượng riêng biệt
1.4.6.1 Tìm ngưỡng
Đây là quá trình tìm ra ngưỡng của một ảnh để thực hiện việc phân vùng Ngưỡng đóng vai trò quyết định quá trình nhị phân hóa ảnh số có hiệu quả hay không Nếu chọn ngưỡng không tốt, sẽ bỏ qua một số đối tượng, hoặc cho đối tượng với kích thước, vị trí không đúng, hoặc tệ hơn là làm các đối tượng không phân biệt được với nhau
Có nhiều thuật toán tìm ngưỡng, cho kết quả khác nhau: Trong đó điển hình là tìm ngưỡng trung bình và tìm ngưỡng theo histogram
Tìm ngưỡng trung bình, ngưỡng được tính theo công thức:
Trang 261 1
) , ( 1
∆ +
= tb
ng I I
n x m - kích thước ảnh
Itb, Ing, ∆ - mức xám trung bình, giá trị ngưỡng và số gia hiệu chỉnh
Tìm ngưỡng theo histogram: là phương pháp tìm ngưỡng dựa theo lược đồ xám
Hình 1.8: Phân ngưỡng theo lược đồ xám
Ngưỡng tìm được theo công thức: Ing = (Imax1 + Imax2)/2 Trong đó
Imax1 và Imax2 là 2 mức xám tương ứng cực đại trên histogram
1.4.6.2 Phân vùng và nhị phân hóa ảnh số
Sau khi tìm ngưỡng, ta có thể nhị phân hóa ảnh số và tách các đối
tượng Trong ảnh xám ban đầu, ta coi đối tượng là những vùng ảnh có mức
Trang 27xám thấp, nền là vùng ảnh có mức xám cao Ta có thể tách đối tượng ra bằng thuật toán phân ngưỡng:
Ta sẽ được đối tượng có màu đen (mức xám 1) và nền có màu trắng (mức xám 0)
1.4.7 Xử lý đồng cấu ảnh nhị phân
Ảnh nhị phân thu được sau khi phân ngưỡng, phân vùng ảnh thành các đối tượng, vẫn có thể chưa hoàn chỉnh để thực hiện các quá trình phân tích tiếp theo Đó là do trên ảnh vẫn có thể tồn tại các nhiễu là các chấm đen chưa bị loại bỏ sau các thuật toán nâng cấp ảnh và lọc, hoặc do ngưỡng được chọn chưa thực sự tốt để tách hoàn toàn các đối tượng Để giải quyết vấn đề này, ta sử dụng các thuật toán xử lý đồng cấu ảnh nhị phân (morphological algorithms)
Có 2 phương pháp xử lý tiêu biểu: Thuật toán làm đầy (dilation) và làm mảnh (erosion)
Hai phương pháp này đều sử dụng một cửa sổ - phần tử cấu trúc (structure element) quét qua ảnh Dựa trên việc phân tích cửa sổ này ta tính
ra giá trị của pixel trung tâm
- Làm đầy (dilation) I(i,j) = 0 chỉ khi tất cả các pixel trong phần tử cấu trúc có giá trị bằng 0 (cửa sổ nằm hoàn toàn bên ngoài đối tượng)
Trang 28- Làm mảnh (erosion) I(i,j) = 1 chỉ khi tất cả các pixel trong phần tử cấu trúc có giá trị bằng 1 (cửa sổ nằm hoàn toàn trong đối tượng)
Kết quả của quá trình làm mảnh là ảnh sẽ loại bỏ bớt được những nhiễu nhỏ, đồng thời làm nhỏ bớt đối tượng, tách các đối tượng gần nhau
ra Để khôi phục đối tượng trở lại như cũ, ta dùng thuật toán làm đầy Sau quá trình này các nhiễu đã bị loại bỏ sẽ không xuất hiện trở lại Có thể loại
bỏ hẳn các nhiễu tương đối lớn bằng cách thực hiện nhiều lần thuật toán làm mảnh và làm đầy Tuy nhiên sau đó hình dạng đối tượng không được khôi phục hoàn toàn như trước
Hình 1.9: Loại bỏ nhiễu và khôi phục đối tượng bằng quá trình làm mảnh
-làm đầy
1.4.8 Bài toán đánh nhãn đối tượng:
Với phương pháp xử lý đồng cấu ảnh nhị phân, ta đã được 1 ảnh nhị
phân với các đối tượng được tách ra rõ rệt, và loại bỏ được các nhiễu Để thực hiện việc xác định các đặc trưng hình học của đối tượng, phục vụ cho
hệ thống định vị và nhận dạng, cần phải phân biệt các đối tượng (các vùng ảnh đen) với nhau bằng cách gán cho chúng các nhãn khác nhau
Thuật toán gán nhãn đối tượng cũng sử dụng một cửa sổ 3x3 chạy khắp khung hình Pixel trung tâm sẽ được kiểm tra để gán nhãn, và các
Trang 29pixel lân cận được dùng để xác định nhãn mới cho pixel trung tâm Thuật toán thực hiện như sau:
Hình 1.10: Sơ đồ thuật toán gán nhãn đối tượng
Trang 30Thuật toán gán nhãn đối tượng được thực hiện như sau: ban đầu ta khởi tạo biến đếm đối tượng n_object=0 Cửa sổ đọc từ vị trí xuất phát (góc trái phía trên của khung hình) Kiểm tra xem pixel trung tâm có bằng 0 Nếu khác 0 thì dịch cửa sổ Nếu bằng 0, kiểm tra nhãn của pixel trung tâm (pixel_index) Nếu khác 0 thì quay trở lại Nếu bằng 0 thì kiểm tra nhãn các pixel lân cận (pixel_nei_index) và gán pixel_cen_index = min(pixel_nei_index) Nếu pixel_cen_index khác 0 thì dịch cửa sổ Nếu bằng 0 thì pixel đó là thuộc đối tượng chưa đánh nhãn Ta tăng biến đếm đối tượng n_object thêm 1, đồng thời gán pixel_cen_index = n_object Sau
đó quay trở lại dịch cửa sổ
Với thuật toán này, ta sẽ thực hiện đánh nhãn đối tượng gồm các pixel có liên kết 8 với nhau Nhãn đối tượng được lưu vào một phần của thông tin về pixel chứa trong RAM
1.4.9 Xác định các đặc trưng hình học của đối tượng
Sau khi ảnh đã được phân vùng và đánh nhãn thành công, ta thực hiện việc xác định các đặc trưng của đối tượng
Các đặc trưng hình học của đối tượng cần được xác định bao gồm:
- Diện tích: bằng số pixel của đối tượng:
1 1
),( trong đó I(i,j) = 1 hoặc 0;
- Chu vi đối tượng: bằng số pixel nằm trên biên đối tượng
Trang 31- Vị trí (tọa độ) của đối tượng, cũng là tọa độ trọng tâm vật thể, được tính theo công thức:
x
1 1
),(1
y
1 1
),(1
1.5 Một số giải pháp phần cứng cho hệ thống xử lý ảnh số
Có thể thấy, các thuật toán xử lý ảnh số đều tương đối phức tạp, với khối lượng tính toán rất lớn (hàng trăm ngàn pixel) Do đó, để thỏa mãn yêu cầu về tốc độ và hiệu suất xử lý, đòi hỏi những nền phần cứng đủ mạnh với khả năng xử lý và tính thời gian thực cao
Dưới đây là một số giải pháp phần cứng thường được sử dụng cho một hệ thống xử lý ảnh số
1.5.1 FPGA
Đây là giải pháp về phần cứng mà hay được sử dụng hiện nay Tận dụng đặc tính của FPGA là linh hoạt và tốc độ xử lý nhanh (cứng hoá các giải thuật), đặc biệt với khả năng xử lý song song, FPGA rất phù hợp với các bài toán xử lý ảnh đòi hỏi một khối lượng tính toán phức tạp
1.5.2 DSP Processor
DSP Processor được giới thiệu đầu tiên vào những năm 1978, 1979 bởi Intel, Bell Labs Các bộ xử lý DSP có những đặc tính nổi bật như sau:
Trang 32- Thích hợp cho các quá trình cần xử lý theo thời gian thực
- Hiệu năng được tối ưu với dữ liệu dạng luồng
- Chương trình và dữ liệu được bố chí riêng biệt (kiến trúc Harvard)
- Tích hợp các chỉ thị lệnh đặc biệt SIMD (Single Instruction, Multiple Data)
- Không hỗ trợ đa nhiệm
- Tương tác trực tiếp với bộ nhớ của thiết bị
- Tích hợp sẵn ADC và DAC
DSP Processor ngày nay đã được tích hợp nhiều thành phần khác nhau, làm tăng khả năng linh hoạt và tốc độ xử lý Đặc biệt các DSP Processor rất thích hợp cho những nhu cầu cần tính toán nhanh, xử lý số thực Đặc biệt một số còn có sẵn những chỉ thị lệnh giúp cho việc tính toán
ma trận, tích chập hay thậm chí các phép biến đổi DCT trong quá tình nén ảnh Với những ưu điểm đó DSP Processor được dùng trong nhiều thiết bị
Trang 33Việc sử dụng mainboard, laptop sẽ có những ưu/nhược điểm sau:
+ Ưu điểm
- Có tốc độ xử lý cao
- Dễ dàng lập trình, kiểm lỗi
- Hệ điều hành quen thuộc (windows/linux)
- Các công cụ lập trình/biên dịch phổ biến (MSVC, gcc)
+ Nhược điểm
- Kích thước, khối lượng lớn
- Dễ hư hỏng do va đập hay các tác nhân khác
- Giá thành rất đắt
- Có quá nhiều thành phần không sử dụng đến
- Chỉ có thể giao tiếp với ngoại vi thông qua các chuẩn phổ biến như UART, USB
Ngoài các giải pháp trên, còn nhiều những giải pháp phần cứng khác cho một hệ thống xử lý ảnh số như: Main công nghiệp, Single Board Computer (SBC) sử dụng Single on Chip (SoC)
Trang 34PHẦN II KHÁI QUÁT VỀ FPGA 2.1 Giới thiệu chung về FPGA và ngôn ngữ VHDL
2.1.1 Khái niệm và ứng dụng FPGA
Khái niệm
FPGA (Field Programable Gate Arrays) là một thiết bị bán dẫn bao gồm các khối logic lập trình được gọi là "Logic Block", và các kết nối khả trình Các khối logic có thể được lập trình để thực hiện các chức năng của các khối logic cơ bản như AND, XOR, hoặc các chức năng kết hợp phức tạp hơn như decoder hoặc các phép tính toán học Trong hầu hết các kiến trúc FPGA, các khối logic cũng bao gồm cả các phần tử nhớ Đó có thể là các Flip-Flop hoặc những bộ nhớ hoàn chỉnh hơn
Các kết nối khả trình cho phép các khối logic có thể nối với nhau theo thiết kế của người xây dựng hệ thống, giống như một bảng mạch khả trình
Một kiến trúc khác tương tự nhưng đơn giản hơn FPGA, là CPLD (Complex Programable Logic Device) Thực chất đây là tiền thân của FPGA Năm 1984, Ross Freeman, một đồng sáng lập của Xilinx đã phát minh ra FPGA FPGA và CPLC đều bao gồm một số lượng khá lớn các phần tử logic khả trình Mật độ cổng logic (Logic Gate) của CPLD nằm trong khoản từ vài nghìn cho đến 10 nghìn cổng Trong khi đó FPGA thông thường chứa từ 10 nghìn cho đến vài triệu cổng
Trang 35Khác biệt cơ bản giữa FPGA và CPLD là ở kiến trúc của chúng CPLD có một kiến trúc bị giới hạn trong một hoặc một vài dãy logic khả trình cùng với một lượng nhỏ thanh ghi định thời Do đó nó kém linh hoạt hơn, nhưng lại có ưu điểm là khả năng dự đoán trễ lớn hơn và tỉ lệ logic-kết nối cao hơn Ngược lại, trong kiến trúc của FPGA lại có sự trội hơn về số lượng kết nối Điều này làm cho nó trở nên linh hoạt hơn (về số lượng thiết
kế được thực thi bên trong) nhưng cũng đồng nghĩa với việc phức tạp hơn trong quá trình thiết kế
Một khác biệt đáng chú ý nữa giữa FPGA và CPLD là: hầu hết các FPGA hiện nay đều bao có các phần tử chức năng tích hợp cao hơn (như bộ cộng, nhân tích hợp), và bộ nhớ tích hợp
Một số kiến trúc FPGA hiện nay còn có thể cho phép cấu hình lại từng phần (partial re-configuration) Có nghĩa là cho phép một phần của thiết kế được cấu hình lại trong khi những thiết kế khác vẫn tiếp tục hoạt động
Một ưu điểm khác của FPGA, là người thiết kế có thể tích hợp vào
đó các bộ xử lý mềm (soft processor) hay vi xử lý tích hợp (embedded processor) Các vi xử lý này có thể được thiết kế như các khối logic thông thường, mà mã nguồn do các hãng cung cấp, thực thi các lệnh theo chương trình được nạp riêng biệt, và có các ngoại vi được thiết kế linh động (khối giao tiếp UART, vào/ra đa chức năng GPIO, ethernet ) Các vi xử lý này cũng có thể được lập trình lại (re-configurable computing) ngay trong khi đang chạy
Trang 36Ứng dụng
FPGA được ứng dụng điển hình trong các lĩnh vực như: xử lý tín hiệu số, xử lý ảnh, thị giác máy, nhận dạng giọng nói, mã hóa, mô phỏng (emulation) FPGA đặc biệt mạnh trong các lĩnh vực hoặc ứng dụng mà kiến trúc của nó yêu cầu một lượng rất lớn xử lý song song, đặc biết là mã hóa và giải mã FPGA cũng được sử dụng trong những ứng dụng cần thực thi các thuật toán như FFT, nhân chập (convolution), thay thế cho vi xử lý Hiện nay công nghệ FPGA đang được sản xuất và hỗ trợ phần mềm bởi các hãng như:Xilinx, Altera, Actel, Atmel Trong đó Xilinx và Altera là 2 hãng hàng đầu Xilinx cung cấp phần mềm miễn phí trên nền Windows, Linux, trong khi Altera cung cấp những công cụ miễn phí trên nền Windows, Linux và Solaris
2.1.2 Kiến trúc FPGA
2.1.2.1 Kiến trúc chung FPGA
Hình 2.1: Kiến trúc chung của FPGA
Trang 37Mỗi nhà sản xuất FPGA có riêng cấu trúc FPGA, nhưng nhìn chung cấu trúc được thể hiện giống như trong hình bên trên Cấu trúc FPGA bao gồm có configuration logic blocks (CLBs), configurable I/O blocks (IOB),
và programmable interconnect Và tất nhiên, chúng có mạch clock để truyền tín hiệu clock tới các logic block, và thêm vào đó có các logic resources như ALUs, memory và có thể có cả decoders Các phần tử lập trình được của FPGA có 2 dạng cơ bản là các RAM tĩnh (Static RAM) và anti-fuses
Configurable Logic Blocks (CLBs)
Configurable Logic Blocks (CLBs) bao gồm các Look-Up Tables (LUTs) rất linh động có chức năng thực thi các logic và các phần tử nhớ dùng như là các flip-flop hoặc các chốt (latch) CLB thực hiện phần lớn các chức năng logic như là lưu trữ dữ liệu,
Hình 2.2: Một Logic Block điển hình
Configurable I/O Blocks
Input/Output Blocks (IOBs) điều khiển dòng dữ liệu giữa các chân vào ra I/O và các logic bên trong của FPGA Nó bao gồm có các bộ đệm vào và ra với 3 trạng thái và điều khiển ngõ ra dạng open collector Phần lớn là có trở kéo lên ở ngõ ra và thỉnh thoảng lại có trở kéo xuống.IOBs hỗ
Trang 38trạng thái (3 state) Hỗ trợ phần lớn các chuẩn tín hiệu, bao gồm một vài chuẩn tốc độ cao, như Double Data-Rate (DDR)
Hình 2.3: Configurable Logic Blocks
Programmable Interconnect
Interconnect ở FPGA khác xa so với ở CPLD, tuy nhiên lại giống với của gate array ASIC Có một line dài được dùng để nối các CLBs quan trọng mà chúng lại ở cách xa nhau mà không gây ra quá nhiều trễ Chúng
có thể được dùng như là các bus ở trong chip Có các line ngắn được dùng
để liên kết các CLBs riêng rẽ nhưng đặt gần nhau Và cũng thường có vài
ma trận chuyển đổi (switch matrices), giống như trong CPLD, nối giữa các line dài và ngắn lại với nhau theo một số cách đặc biệt Các chuyển đổi lập trình được (Programmable switches) bên trong chip cho phép kết nối giữa CLBs tới các interconnect line và giữa interconnect line với các line khác
và với switch matrix Các bộ đệm 3 trạng thái được dùng để kết nối phần lớn các CLBs với các line dài (long line), tạo nên các bus Các long line đặc biệt, gọi là các line clock toàn cục (global clock lines), được thiết kế
Trang 39đặc biệt cho trở kháng thấp và nhờ đó mà thời gian lan truyền nhanh hơn Chúng được kết nối với các bộ đệm clock và với mỗi phần tử được clock trong mỗi CLB.Đó là cách mà clock có thể phân phối bên trong FPGA
Hình 2.4: Programmable Interconnect
Mạch đồng hồ (Clock Circuitry)
Các khối vào ra với bộ đệm clock high drive gọi là các clock driver,nằm rải rác xung quanh chip Các bộ đệm này được nối với các chân clock vào và lái các tín hiệu clock vào các đường clock toàn cục (global clock line) như mô tả ở bên trên Các đường clock được thiết kế sao cho thời gian thời gian lệch nhỏ nhất và thời gian lan truyền nhanh Thiết kế đồng bộ là yêu cầu bắt buộc với FPGA, từ khi độ lệch tuyệt đối và trễ không được bảo đảm Chỉ khi dùng các tín hiệu clock từ các bộ đệm clock thì thời gian trễ tương đối và thời gian lệch mới được đảm bảo
Trang 402.1.2.2 So sánh giữa cấu trúc nhỏ và cấu trúc lớn
FPGA có cấu trúc nhỏ giống như các mảng cổng của hệ ASIC với các CLBs chỉ bao gồm các phần tử cơ bản rất nhỏ như các cổng NAND, cổng NOR,… Các nhà lý luận cho rằng các phần tử nhỏ có thể nói với nhau tạo lên các chức năng lớn hơn mà không tốn nhiều các phần tử logic Trong các FPGA có cấu trúc lớn, các CLB có thể bao gồm 2 hoặc nhiều flip-flop, các thiết kế mà không cần nhiều flip-flop sẽ khiến cho nhiều flip-flop không được dùng đến Tiếc rằng, các cấu trúc nhỏ lại yêu cầu khá nhiều nguồn kết nối (routing resource), dẫn đến tăng không gian và thêm vào một lượng lớn trễ mà không thể bù lại để có hiệu quả hơn
2.1.2.3 So sánh giữa SDRAM Programming và Anti-fuse programming
Có 2 cách để lập trình FPGA Cách đầu tiên là SDRAM Programming, bao gồm một vài bit Static RAM cho mỗi phần tử lập trình Ghi một bit với giá trị 0 sẽ ngắt switch, trong khi ghi giá trị 1 sẽ đóng switch Cách còn lại là antifuse bao gồm các cấu trúc rất nhỏ, không giống như các cầu chì thông thường, bình thường chúng không tạo ra một kết nối nào cả Một dòng điện có cường độ nhất định trong khi lập trình thiết bị sẽ dẫn đến việc hai bên của anti-fuse kết nối với nhau
Thuận lợi của cấu trúc FPGA dựa trên SRAM là chúng dùng một quá trình sản xuất chuẩn mà ở đó các kế hoạch sản xuất chip là gần như giống nhau và luôn luôn được tối ưu cho khả năng hoạt động Từ khi mà SRAM có thể lập trình lại được thì FPGA có thể lập trình lại bất cứ khi nào muốn, thận chí ngay cả khi chúng đang ở trong hệ thống, đơn giản như là ghi vào SRAM thông thường Chúng có nhược điểm là vùng nhớ volatile