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

Công nghệ điện tử Viễn thông Xây dựng hệ thống hiển thị thông tin hình ảnh thông qua mạng Internet

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 (3.18 MB, 33 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Vũ Ngọc Tuyên

Vũ Ngọc Tuyên

XÂY DỰNG HỆ THỐNG HIỂN THỊ THÔNG TIN

XÂY DỰNG HỆ THỐNG HIỂN THỊ THÔNG TIN

HÌNH ẢNH THÔNG QUA MẠNG INTERNET

HÌNH ẢNH THÔNG QUA MẠNG INTERNET

Ngành: Công nghệ Điện tử - Viễn thông
Chuyên ngành: Kỹ thuật Điện tử
LUẬN VĂN THẠC SỸ CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG

Mã số: 60 52 02 03

LUẬN VĂN THẠC SỸ CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. Trần Xuân Tú

HÀ NỘI - 2014


HÀ NỘI - 2014


LỜI CẢM ƠN

LỜI CAM ĐOAN
Tôi xin cam đoan nội dung của luận văn “Xây dựng hệ thống hiển thị thông tin

Lời đầu tiên, em xin gửi lời cảm ơn tới PGS.TS. Trần Xuân Tú đã tận tình

hình ảnh thông qua mạng Internet” là sản phẩm do tôi thực hiện dưới sự hướng dẫn

hướng dẫn, cung cấp tài liệu tham khảo, kinh nghiệm và những ý kiến đóng góp quý

của PGS.TS. Trần Xuân Tú. Trong toàn bộ nội dung của luận văn, những điều được

báu. Em cũng xin cảm ơn tới các anh em cán bộ của Phòng thí nghiệm mục tiêu Hệ

trình bày hoặc là của cá nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu. Tất cả các

thống tích hợp thông minh (SIS Lab) đã hỗ trợ và giải đáp các vướng mắc của em

tài liệu tham khảo đều có xuất xứ rõ ràng và được trích dẫn hợp pháp.

trong suốt quá trình nghiên cứu.

Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định
cho lời cam đoan của mình.

Em cũng gửi lời cảm ơn đến các thầy cô trong Khoa Điện tử - Viễn thông,

Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội đã truyền đạt những kiến thức
bổ ích và kinh nghiệm quý báu trong suốt thời gian em học tập, nghiên cứu tại nhà
trường.

Hà Nội, ngày 11 tháng 11 năm 2014
Cuối cùng em cũng xin gửi lời cảm ơn đến gia đình, bạn bè những người đã
TÁC GIẢ

giúp đỡ và tạo điều kiện để em có thể hoàn thành được luận văn này.
Trong thời gian thực hiện luận văn, bản thân em khó tránh khỏi nhiều thiếu sót. Em
rất mong nhận được ý kiến đóng góp từ phía thầy cô và bạn bè để luận văn được hoàn
thiện hơn.

Vũ Ngọc Tuyên
Em xin chân thành cảm ơn !

Học viên

Vũ Ngọc Tuyên

2

3


2.2.1. Trình tự thiết kế một vi mạch FPGA................................................27

MỤC LỤC

2.2.2. Giải pháp thiết kế hệ thống sử dụng bộ công cụ của hãng Xilinx ...29


LỜI CAM ĐOAN ................................................................................................. 2

CHƯƠNG 3: HỆ THỐNG HIỂN THỊ THÔNG TIN HÌNH ẢNH THÔNG

LỜI CẢM ƠN ..................................................................................................... 3

QUA MẠNG INTERNET.................................................................................. 39

..................................................................................................... 4

3.1. Mô tả ý tưởng thiết kế hệ thống ..............................................................39

DANH MỤC HÌNH VẼ ....................................................................................... 6

3.2. Hệ thống phần cứng.................................................................................40

DANH MỤC BẢNG BIỂU .................................................................................. 8

3.2.1. Xây dựng hệ thống phần cứng trên chip ..........................................41

DANH MỤC TỪ VIẾT TẮT ............................................................................... 9

3.2.2. Thiết kế ngoại vi giao tiếp màn hình VGA ......................................46

MỤC LỤC

MỞ ĐẦU

................................................................................................... 10


3.3. Đặc tả hệ thống phần mềm ......................................................................50

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ MÃ HÓA VÀ HIỂN THỊ HÌNH

3.3.1. Thiết kế chi tiết hệ thống phần mềm ................................................51

ẢNH

................................................................................................... 11

3.3.2. Thư viện lwIP hỗ trợ truyền thông Ethernet ....................................54

Cơ sở lý thuyết về mã hóa hình ảnh JPEG .........................................11

3.3.3. Thư viện giải mã ảnh JPEG – TinyJPEG .........................................56

1.1.1. Quá trình mã hóa ............................................................................12

CHƯƠNG 4: : KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ ....................... 59

1.1.2. Chuyển đổi hệ màu ........................................................................12

4.1. Nền tảng thực thi hệ thống ......................................................................59

1.1.3. Lấy mẫu..........................................................................................13

4.2. Kết quả kiểm tra chức năng hệ thống ......................................................59

1.1.4. Quá trình giải mã............................................................................14


4.2.1. Kiểm tra kết nối Ethernet .................................................................59

Hiển thị hình ảnh lên màn hình chuẩn VGA ......................................15

4.2.2. Kiểm tra kết nối màn hình VGA, hiển thị hình ảnh .........................60

1.2.1. Nguyên lý quét hình ảnh ................................................................15

4.2.3. Kiểm tra kết quả giải mã hình ảnh JPEG .........................................61

1.2.2. Tín hiệu màu VGA .........................................................................17

4.2.4. Kiểm tra kết nối tổng thể toàn hệ thống ...........................................61

1.2.3. Bộ điều khiển tín hiệu hiển thị hình ảnh – VGA core ...................18

4.3. Đánh giá giải pháp thực hiện hệ thống ....................................................62

1.1.

1.2.

1.2.4. Nguyên tắc hoạt động của bộ hiển thị hình ảnh VGA ...................20
CHƯƠNG 2: CÔNG NGHỆ NỀN TẢNG FPGA – PHƯƠNG PHÁP XÂY

KẾT LUẬN

................................................................................................... 63


TÀI LIỆU THAM KHẢO .................................................................................. 64

DỰNG HỆ THỐNG NHÚNG TRÊN FPGA ..................................................... 22
2.1. Giới thiệu công nghệ nền tảng FPGA .....................................................22
2.1.1. Kiến trúc FPGA ................................................................................23
2.1.2. Ngôn ngữ lập trình mô tả phần cứng VHDL....................................25
2.2. Phương pháp xây dựng hệ thống nhúng trên FPGA ...............................27
4

5


DANH MỤC HÌNH VẼ

Hình 3-8: Cấu hình ứng dụng mẫu cho hệ thống. ..............................................45

Hình 1-1: Sơ đồ quá trình mã hóa JPEG [1]. .....................................................12

Hình 3-9: Khởi tạo lõi VGA. ..............................................................................46

Hình 1-2: So sánh hệ màu RGB và YCbCr. .......................................................13

Hình 3-10: Cấu hình bus cho lõi VGA. ..............................................................47

Hình 1-3: Các kiểu lấy mẫu dữ liệu[3]. ..............................................................14

Hình 3-11: Thiết lập tần số hoạt động của lõi VGA. .........................................47

Hình 1-4: Sơ đồ khối quá trình giải mã [1]. .......................................................14


Hình 3-12: Tạo ra phần cứng FPGA. .................................................................49

Hình 1-5: Minh họa phương pháp quét hình ảnh. ..............................................15

Hình 3-13: Sơ đồ khối hệ thống tạo bởi XPS. ....................................................49

Hình 1-6: Tín hiệu điện cho một dòng quét trên màn hình CRT [5]. ................16

Hình 3-14: Mô hình phần mềm của hai lớp ứng dụng. ......................................50

Hình 1-7: Chế độ điều khiển VGA 640×480 [5]. ...............................................17

Hình 3-15: Mô hình triển khai hệ thống nhúng trên Spartan-3E. ......................50

Hình 1-8: Cổng kết nối VGA. ............................................................................18

Hình 3-16: Biểu đồ các trường hợp sử dụng. .....................................................51

Hình 1-9: Các màu cơ bản [5]. ...........................................................................18

Hình 3-17: Lưu đồ tiến trình hoạt động. ............................................................52

Hình 1-10: Kết quả hiển thị. ...............................................................................19

Hình 3-18: Lưu đồ truyền tập tin........................................................................53

Hình 1-11: Sơ đồ khối cấu trúc của bộ hiển thị hình ảnh VGA .........................21

Hình 3-19: Lưu đồ giải mã ảnh Jpeg. .................................................................53


Hình 2-1: Kiến trúc chung của FPGA [2]. .........................................................23

Hình 4-1: Kiểm tra kết nối Ethernet. ..................................................................60

Hình 2-2: Một Logic Block điển hình ................................................................24

Hình 4-2: Kiểm tra bộ điều khiển VGA .............................................................60

Hình 2-3: Khối Logic khả trình. .........................................................................24

Hình 4-3: Kiểm tra chương trình giải mã JPEG .................................................61

Hình 2-4: Các kết nối khả trình . ........................................................................25

Hình 4-4: Kiểm tra kết nối toàn hệ thống. ..........................................................62

Hình 2-5: Qui trình thiết kế chip dựa trên VHDL [2]. .......................................26
Hình 2-6: Kit phát triển Spartan-3E [12]............................................................30
Hình 2-7: Các thành phần của Kit Spartan-3E[12]. ...........................................31
Hình 2-8: Kiến trúc của Spartan 3E [12]............................................................32
Hình 2-9: Sơ đồ khối lõi Microblaze [11]. .........................................................33
Hình 2-10: Kiến trúc đường ống trong microblaze. ...........................................34
Hình 2-11: Hệ thống BUS điển hình của Microblaze [11]. ...............................35
Hình 2-12: Giao diện sử dụng của công cụ XPS................................................36
Hình 2-13: Giao diện sử dụng của công cụ SDK ...............................................37
Hình 3-1: Sơ đồ khối chức năng hệ thống. .........................................................39
Hình 3-2: Sơ đồ chi tiết hệ thống phần cứng......................................................40
Hình 3-3: Lựa chọn bo mạch. .............................................................................42
Hình 3-4: Cấu hình hệ thống. .............................................................................43
Hình 3-5: Cấu hình vi xử lý................................................................................43

Hình 3-6: Cấu hình các ngoại vi của hệ thống. ..................................................44
Hình 3-7: Lựa chọn bộ nhớ đệm. .......................................................................45
6

7


DANH MỤC BẢNG BIỂU
Bảng 3-1: Bảng tổng hợp tài nguyên phần cứng của hệ thống ..........................41
Bảng 3-2: Các tín hiệu ngoại vi của lõi VGA ....................................................48
Bảng 3-3: Mô tả hàm lwip_socket [4] ...............................................................54
Bảng 3-4: Mô tả hàm lwip_blind [4] ..................................................................55
Bảng 3-5: Mô tả hàm lwip_close [4] ..................................................................55
Bảng 3-6: Mô tả hàm khởi tạo tinyjpeg_init [4] ................................................56
Bảng 3-7: Mô tả hàm duyệt header file tinyjpeg_parse_header [4] ...................56
Bảng 3-8: Mô tả hàm giải mã ảnh tinyjpeg_decode [4] .....................................57
Bảng 3-9: Mô tả hàm đọc kích thước ảnh tinyjpeg_get_size [4] .......................57
Bảng 3-10: Mô tả hàm tinyjpeg_get_components [4] ........................................58
Bảng 3-11: Mô tả hàm giải phóng bộ nhớ tinyjpeg_free [4]..............................58

8

DANH MỤC TỪ VIẾT TẮT
Từ viết tắt
ALU
ASIC
BMP
CLB
CPLD
CRT

DCM
EDK
FPGA
GIF
GPIO
HS
IEEE
IOB
ISE
JPEG
LCD
LUT
PNG
RGB
RTL
SDK
SOC
TIFF
UART
VGA
VHDL
VHSIC
VS
XCL
XPS

Mô tả
Arithmetic Logic Unit
Application-Specific Integrated Circuit
BitMaP image file

Configurable Logic Block
Complex Programmable Logic Devices
Cathode Ray Tube
Digital Clock Manager
Embedded Development Kit
Field-Programmable Gate Array
Graphics Interchange Format
General Purpose Input Output
Horizontal Sync
Institue of Electrical and Electronics Engineers
Input/Output Block
Integrated Software Environment
Joint. Photographic Experts Group
Liquid-Crystal Display
Look-Up Tables
Portable Network Graphics
Red - Green - Blue
Register Transfer Level
Software Development Kit
System on Chip
Tagged Image File Format
Universal Asynchronous Receiver Transmitter
Video Graphics Array
VHSIC Hardware Description Language
Very High Speed Integrated Circuit
Vertical Sync
Xilinx Cache Link
Xilinx Platform Studio

9



MỞ ĐẦU

CHƯƠNG 1:

CƠ SỞ LÝ THUYẾT VỀ MÃ HÓA VÀ HIỂN THỊ
HÌNH ẢNH

Việc cung cấp thông tin kịp thời tới người dùng một cách nhanh chóng và chính
xác là cần thiết trong xã hội hiện đại. Với sự phát triển của công nghệ, ngày nay chúng
ta có thể nhận thông tin mọi lúc, mọi nơi một cách nhanh chóng thông qua mạng

Chương đầu tiên của luận văn giới thiệu cơ sở lý thuyết mã hóa hình ảnh theo
định dạng chuẩn JPEG và phương pháp hiển thị hình ảnh trên màn hình chuẩn VGA.

Internet. Các hệ thống hiển thị thông tin truyền thống cũng đang dần được thay thế
bằng các màn hình kích thước lớn có kết nối mạng. Tuy nhiên, việc truyền nhận và xử

1.1.

Cơ sở lý thuyết về mã hóa hình ảnh JPEG

lý thông tin trước khi hiển thị phần lớn vẫn được thực hiện trên các hệ máy tính đa

Trong thời đại kỹ thuật số ngày nay, hình ảnh được lưu trữ ở nhiều định dạng

năng với giá thành tương đối cao. Việc xây dựng một hệ thống chuyên dụng dạng

khác nhau như BMP, JPEG, PNG, GIF, TIFF. Trong đó, định dạng ảnh chuẩn JPEG


“system-on-a-chip” để thực hiện việc thu nhận thông tin hình ảnh và hiển thị là cần

được sử dụng phổ biến nhất trên Internet và được hầu hết các máy ảnh kỹ thuật số và

thiết nhằm tối ưu hoá ứng dụng và giảm giá thành sản xuất. Hệ thống này có nhiệm vụ

phần mềm xử lý ảnh hỗ trợ tương thích. JPEG viết tắt của Joint Photographic Experts

thiết lập kết nối máy chủ thông qua mạng Internet để lấy dữ liệu hình ảnh, giải mã và

Group được công bố lần đầu vào năm 1992 dựa trên khuyến cáo ITU – T81, là một

truy xuất hình ảnh ra màn hiển thị tương thích với chuẩn VGA.

trong những phương pháp nén ảnh hiệu quả, có tỷ lệ nén tới vài chục lần. Ảnh sau khi

Ứng dụng hiển thị hình ảnh thông qua kết nối Internet đang là vấn đề rất thực
tế, phục vụ cho lĩnh vực truyền thông, quảng bá thông tin tại các cơ quan, đơn vị,
trường học, hay các doanh nghiệp, hay thậm chí tại các khu chung cư mới hoặc các cơ
quan thông tin của phường/xã.

giải nén sẽ không hoàn toàn giống như ban đầu mà chất lượng ảnh sẽ bị suy giảm sau
khi giải nén. Tuy nhiên sự suy giảm này có thể khắc phục được bằng việc loại bỏ đi
những thông tin dư thừa dựa trên sự nghiên cứu về thị giác của con người.
Khi nghiên cứu về lý thuyết và hiển thị hình ảnh, chúng ta xét đến không gian

Chính vì lý do trên, em đã chọn đề tài: “Xây dựng hệ thống hiển thị thông tin
hình ảnh thông qua mạng Internet” để nghiên cứu và thực hiện Luận văn Thạc sỹ của


màu YUV được tạo bởi một độ sáng và hai thành phần màu. Thị giác của con người
rất nhạy cảm với thành phần Y và kém nhạy cảm với hai thành phần U và V. Dựa trên
đặc tính này của mắt con người, phương pháp JPEG đã tách những thông tin dư thừa

mình.

của ảnh và nén thông tin sao cho sự suy giảm tín hiệu thành phần Y là ít hơn so với hai
Bố cục của luận văn gồm có bốn phần:

thành phần còn lại là U và V.

Chương 1: Cơ sở lý thuyết về mã hoá và hiển thị hình ảnh.
Chương 2: Công nghệ nền tảng FPGA và phương pháp xây dựng hệ thống

Phương pháp nén ảnh JPEG có công đoạn chính là chia bức ảnh thành nhiều
vùng nhỏ (thông thường là 8×8 điểm ảnh) rồi sử dụng phép biến đổi cosin rời rạc để

nhúng trên FPGA
Chương 3: Hệ thống hiển thị thông tin hình ảnh thông qua mạng Internet
Chương 4: Kết quả thực nghiệm và đánh giá

biến đổi những vùng này thành dạng ma trận có 64 hệ số thể hiện trạng thái các điểm
ảnh. Hệ số đầu tiên có khả năng thể hiện trạng thái cao nhất, khả năng đó giảm nhanh
với các hệ số khác. Điều đó có nghĩa là lượng thông tin của 64 điểm ảnh tập trung chủ
yếu ở một số hệ số ma trận trong phép biến đổi trên. Trong giai đoạn này có sự mất
mát thông tin bởi không có một phép biến đổi ngược chính xác, tuy nhiên lượng thông
tin mất mát này chưa đáng kể so với các bước sau. Ma trận có được sau phép biến đổi
cosin rời rạc được lược bớt sự khác nhau giữa các hệ số, đây chính là bước làm cho

10


11


thông tin bị mất nhiều nhất vì những thay đổi nhỏ của các hệ số sẽ được làm tròn. Các
phép biến đổi trên áp dụng với thành phần U và V nhiều hơn so với thành phần Y.
Bước tiếp theo là dùng một thuật toán mã hóa khác để phân tích dãy số. Những phần
tử nào được lặp lại nhiều sẽ được mã hóa bằng ký tự ngắn hơn. Với phương pháp mã
hóa theo chuẩn JPEG, khi giải mã chúng ta chỉ cần làm lại các bước trên theo quá trình
ngược lại cùng với các phép biến đổi ngược.

Công thức về sự biến đổi như sau:
𝑌 = 0,299𝑅 + 0,587𝐺 + 0,144𝐵
𝐶𝑏 = −0,16874𝑅 − 0. ,3126𝐺 + 0,5𝐵 + 128
𝐶𝑟 = 0,5𝑅 − 0,41869𝐺 − 0,08131𝐵 + 128
Ta có thể quan sát các thành phần R, G, B tương ứng với các thành phần Y, Cb,

1.1.1. Quá trình mã hóa

Cr trong bức ảnh nổi tiếng “lena” Hình 1-2: [3]

Hình 1-1: Sơ đồ quá trình mã hóa JPEG [1].
Quá trình mã hóa hình ảnh JPEG được mô tả theo Hình 1-1 [1]. Ảnh nguồn ban
đầu được chia thành các khối có kích thước 8×8 điểm ảnh trước khi đưa vào khối mã
hóa bao gồm DCT, lượng tử hóa và mã hóa Entropy. Kết quả của quá trình mã hóa là
đầu ra hình ảnh nén JPEG.
1.1.2. Chuyển đổi hệ màu
Bộ mã hóa JPEG sẽ thực hiện biến đổi hệ màu từ RGB sang YCbCr trước khi
chuyển đổi DCT. Dữ liệu ảnh được đại diện bởi ba thành phần màu chính là R, G, B
tương ứng ba màu cơ bản là đỏ, xanh lục, xanh dương. Mỗi màu sẽ sử dụng một byte

để biểu diễn, do đó mỗi điểm ảnh cần ba bytes để biểu diễn.
Như đã trình bày ở trên, mắt người nhạy cảm với sự thay đổi về độ chói và kém

Hình 1-2: So sánh hệ màu RGB và YCbCr.
1.1.3. Lấy mẫu

nhạy với những sự thay đổi về sắc độ. Thông thường trong kỹ thuật nén ảnh sử dụng

Do mắt người nhạy cảm với thành phần Y hơn nên việc giảm thành phần sắc độ

biến đổi DCT các điểm ảnh sẽ được chuyển đổi từ hệ màu RGB sang YCbCr. Trong

đi 50% so với thành phần độ chói Y cũng không làm giảm đi nhiều cảm nhận của mắt

đó thành phần Y tương ứng với độ chói của điểm ảnh, hai thành phần Cb và Cr lần

về sự thay đổi của hình ảnh. Có nhiều phương pháp lấy mẫu khác nhau như mô tả trên

lượt là sự sai khác về sắc độ của hai thành phần màu xanh dương và đỏ.

hình 1.3 [3], điển hình là lấy mẫu theo tỉ lệ 4:2:0. Tức là độ phân giải của thành phần
Cb, Cr sẽ được giảm đi một nửa theo cả hai chiều dọc và chiều ngang, trong bước này
ta sẽ giảm thành phần sắc độ. Cứ bốn điểm thành phần Y được chọn thì sẽ có một

12

13


điểm thành phần Cb, và một điểm thành phần Cr được lựa chọn như hình 1.3.a. Một

vài cách lấy mẫu khác nhau như 4:2:2 có nghĩa là hai thành phần Cb, Cr chỉ giảm đi
một nữa theo chiều ngang.

1.2.

Hiển thị hình ảnh lên màn hình chuẩn VGA
Trên thị trường màn hình hiển thị có nhiều loại khác nhau, tùy theo loại màn

hình được sử dụng là màn hình CRT, LCD hay plasma, chúng ta có phương pháp để
hiển thị hình ảnh là khác nhau. Tuy nhiên, các loại màn hình được chế tạo theo cùng
chuẩn hiển thị VGA có nguyên lý hiển thị một hình ảnh lên màn hình là giống nhau.
1.2.1. Nguyên lý quét hình ảnh
Về nguyên lý của ảnh kỹ thuật số, mỗi hình ảnh được xem như một ma trận các
điểm ảnh.Phương pháp quét hình ảnh là phương pháp hiển thị lần lượt các điểm ảnh

Hình 1-3: Các kiểu lấy mẫu dữ liệu[3].
Dấu “×” thể hiện nơi điểm thành phần Y được chọn. Dấu “o” chỉ nơi các thành

này theo từng hàng một, từ trái qua phải và từ trên xuống dưới như minh họa ở hình
1.5 thay vì hiển thị đồng thời toàn bộ hình ảnh. Các đường nét liền thể hiện các dòng
điểm ảnh được quét ngang màn hình. Các đường nét đứt là đường trở về của tia quét

phần sắc độ được chọn.

để bắt đầu một dòng quét mới. Hình ảnh quét được sau một lượt quét từ trên xuống
1.1.4. Quá trình giải mã

dưới gọi là một mành quét.
Trong thời gian màn hình hiển thị ảnh, cần phải đưa tới màn hình các tín hiệu
điện chứa các thông tin của các điểm ảnh này. Ngoài ra, có những thời gian không

hiển thị, khi tia quét trở về đầu dòng hoặc đầu mành mới. Các thông tin về hình ảnh
không được đưa đến màn hình trong thời gian này mà thay vào đó là các tín hiệu đặc

Hình 1-4: Sơ đồ khối quá trình giải mã [1].

biệt dùng để đồng bộ dòng và đồng bộ mành.

Quá trình giải mã theo mô tả trên hình 1-4 [1], dựa trên cơ sở thực hiện thuật
toán ngược của quá trình mã hóa. Hình vẽ trên minh họa sơ đồ khối của quá trình giải
mã JPEG. Các thành phần của bộ giải mã cũng tương tự như các thành phần của bộ mã
hóa nhưng được đặt theo thứ tự ngược lại.
Chuyển đổi hệ màu được thực hiện theo công thức:
Hình 1-5: Minh họa phương pháp quét hình ảnh.

R = Y + 1,402 (Cr - 128)
G = Y – 0,71414 (Cr - 128) – 0,34414 (Cb - 128)

Chúng ta xét một ví dụ trên hình 1-6 [5] về một dòng quét bằng tia điện tử của
màn hình CRT sẽ làm rõ thêm nguyên lý quét ảnh. Màn hình được chia làm 480 dòng,
mỗi dòng có 640 điểm ảnh. Xung răng cưa trên hình 1-6 có tác dụng lái tia điện tử

B = Y + 1,772 (Cb - 128)

theo chiều ngang. Mỗi một xung răng cưa ứng với một dòng, như vậy, tần số xung
14

15


răng cưa tương ứng với tần số dòng. Trong phần thời gian xung răng cưa là đường dốc

ổn định, tia điện tử quét ngang màn hình thể hiện hình ảnh. Phần thời gian còn lại,
xung răng cưa có tác dụng lái tia điện tử trở về đầu dòng tiếp theo và đồng thời là căn
cứ để sinh ra tín hiệu đồng bộ dòng HS. Xung đồng bộ dòng là một xung âm, trong
khoảng thời gian tích cực mức thấp trên tín hiệu HS. Thời gian từ khi có xung đồng bộ
dòng đến khi bắt đầu có tín hiệu thông tin hình ảnh gọi là “front porch”, thời gian sau
khi kết thúc phần thông tin hình ảnh đến khi bắt đầu một xung đồng bộ dòng mới gọi
là “back porch”.

Hình 1-7: Chế độ điều khiển VGA 640×480 [5].

1.2.2. Tín hiệu màu VGA
Có ba tín hiệu màu là red, green và blue gửi tín hiệu màu sắc đến màn hình
VGA. Mỗi một tín hiệu điều khiển một súng bắn điện tử để phóng các hạt electron vẽ
lên một màu cơ bản tại một điểm trên màn hình. Dải của tín hiệu nằm từ 0V tương ứng
Hình 1-6: Tín hiệu điện cho một dòng quét trên màn hình CRT [5].

với màu tối hoàn toàn và 0,7V sáng hoàn toàn, điều khiển cường độ của mỗi thành

Hình ảnh được điều khiển quét theo chiều dọc bằng cách tạo ra xung răng cưa

phần màu và ba thành phần màu kết hợp với nhau tạo lên màu của điểm ảnh (dot) hay

lái tia điện tử theo chiều dọc và tín hiệu đồng bộ mành VS với cách làm tương tự với

phần tử ảnh (pixel) trên màn hình.

quét dòng.
Sau đây là ví dụ VGA Display Timing với chế độ 640×480:

16


17


Hình 1-8: Cổng kết nối VGA.
Hình 1-10: Kết quả hiển thị.

Mỗi tín hiệu màu analog có thể là một trong 8 mức bằng 3 tín hiệu digital bằng
cách dùng bộ chuyển đổi digital to analog 3 bit (DAC 3 bit).

Vùng A, màu đen là vùng không hiển thị, sử dụng cho quét ngược vị trí hiển thị
về các đầu dòng hoặc đầu mành tiếp theo. Khi vị trí hiển thi rơi vào vùng A, ở lối ra
ghép nối với màn hình, các tín hiệu R, G, B không có dữ liệu và các tín hiệu Hsync,
Vsync có các xung đồng bộ tại vị trí kết thúc dòng hoặc mành. Kích thước của vùng A
là chiều rộng × chiều cao = 800×525 theo chế độ VGA 640×480 60Hz.
Vùng B, màu xanh, là vùng hiển thị màu nền Back ground. Màu nền ở đây được
quy ước là màu của pixel đầu tiên trong ảnh.Vùng B có kích thước của màn hình
640×480 điểm ảnh.Khi vị trí hiển thị rơi vào vùng này, các tín hiệu đồng bộ ở mức
cao, các tín hiệu màu mang thông tin về màu nền.

Hình 1-9: Các màu cơ bản [5].
1.2.3. Bộ điều khiển tín hiệu hiển thị hình ảnh – VGA core
VGA core là ngoại vi giao tiếp với màn hình. Nhiệm vụ của VGA core là đọc
thông tin về hình ảnh (thông tin màu sắc) để đưa ra các tín hiệu màu (R, G, B) và các

Vùng C, màu cam, là vùng hiển thị hình ảnh. Vùng này có kích thước thay đổi
được, tối đa là 640×480 điểm ảnh. Tùy theo vị trí hiển thị ở điểm ảnh nào trong vùng
C mà các tín hiệu R, G, B sẽ mang thông tin màu sắc của điểm ảnh đó. Lúc này các tín
hiệu đồng bộ luôn đặt ở mức cao.


tín hiệu đồng bộ Hsync, Vsync vào các thời điểm thích hợp, cho kết quả hiển thị như
Các thông tin về màu sắc của các điểm ảnh sẽ được đọc ra từ một bộ nhớ dữ

hình 1.10.

liệu bên ngoài chip FPGA.

18

19


1.2.4. Nguyên tắc hoạt động của bộ hiển thị hình ảnh VGA
Sơ đồ cấu trúc của bộ hiển thị hình ảnh lên VGA như trên hình 1-11. Hệ thống
bên ngoài ghi giá trị pixel vào trong bộ đệm pixel. Các pixel được lấy từ bộ đệm rồi
ghi vào trong thanh ghi pixel. Mỗi pixel có thể là 1, 2, 4, 8 hoặc 16 bit vì thế nên nội
dung của thanh ghi pixel này được dịch sau mỗi xung clock để thay thế pixel hiện tại
theo thứ tự các bit có trọng số thấp đến cao. Các bit này được gửi đến colormap
circuit để chuyển các pixel này sang các giá trị red, green và blue rồi gửi đến bộ DAC
video bên ngoài.
Hai mạch tạo xung đồng bộ được dùng để tạo các xung đồng bộ đứng và nằm
ngang. Bộ horizontal sync generator có đầu ra là tín hiệu gate một chu kì trùng khớp
với sườn lên của xung đồng bộ ngang, tín hiệu gate này nối với tín hiệu clock-enable
của bộ vertical sync generator vì thế nên clock-enable chỉ cập nhật bộ đếm thời gian
sau mỗi dòng pixel. Tín hiệu gate của vertical sync generator được dùng như tín hiệu
báo kết thúc một frame cho các khối dữ liệu pixel bên ngoài, đồng thời nó cũng reset
và xóa toàn bộ nội dung của pixel buffer nên bộ VGA generator luôn khởi động từ
trạng thái xóa sạch hoàn toàn với mọi frame.

Hình 1-11: Sơ đồ khối cấu trúc của bộ hiển thị hình ảnh VGA

Tín hiệu full signal được gửi ra nguồn dữ liệu pixel bên ngoài để báo cho biết

Bộ tạo tín hiệu đồng bộ cũng tạo ra các tín hiệu horizontal và vertical blanking.

khi nào thì dừng việc điền dữ liệu vào bộ đệm. Với bộ đệm FIFO 256, tín hiệu full lên

Khi dùng phép toán OR logic ta được tín hiệu blanking toàn cục. Các tín hiệu

cao khi 5 bit cao của tín hiệu FIFO level bằng 11111. Khiến cho bỏ trống 7 bit trong

blanking được kết hợp với các bit có trọng số thấp hơn ở bộ đếm horizontal pixel

FIFO để điền các pixel khi các nguồn dữ liệu bên ngoài đã chót gửi dữ liệu vào trong

counter để xác định khi nào đọc pixel từ bộ đệm. Ví dụ, nếu mỗi pixel có độ rộng 16

pipe. Đây gọi là cơ chế bộ đệm an toàn.

bit, thì một từ 16 bit sẽ cần được đọc sau mỗi chu kì clock. Vì thế nên hoạt động đọc
được khởi tạo bất cứ khi nào tín hiệu video không trống và 2 bit thấp của bộ đếm pixel
đều bằng 0.

Kết luận:
Chương đầu tiên của Luận văn đã giới thiệu cơ sở lý thuyết về mã hóa hình ảnh
theo định dạng chuẩn JPEG, từ việc phân tích tìm hiểu quá trình mã hóa, chúng ta sẽ
có cơ sở để thực thi việc giải mã hình ảnh JPEG chính là một phần nội dung yêu cầu
của đề tài Luận văn. Chương này cũng đã trình bày phương pháp hiển thị hình ảnh trên
màn hình chuẩn VGA thông qua nguyên lý quét hình ảnh và các tín hiệu màu. Để thực
hiện việc hiển thị hình ảnh lên màn hình cần có bộ điều khiển tín hiệu tạo các xung
đồng bộ đứng và xung đồng bộ ngang để đưa các dòng pixel trong bộ đệm đã được

chuyển thành các tín hiệu Red, Green, Blue đến bộ DAC video bên ngoài.

20

21


CHƯƠNG 2:

CÔNG NGHỆ NỀN TẢNG FPGA – PHƯƠNG PHÁP

XÂY DỰNG HỆ THỐNG NHÚNG TRÊN FPGA

đây, công nghệ nền tảng FPGA đang được cung cấp và hỗ trợ phần mềm phát triển
ứng dụng bởi các hãng lớn như Xilinx, Altera, Actel, Atmel... Xilinx và Altera là hai
hãng hàng đầu, cả hai hãng lớn đều cung cấp bộ công cụ phần mềm phát triển ứng

Chương thứ hai của luận văn sẽ đưa ra những vấn đề cơ bản của công nghệ nền

dụng miễn phí trên nền Windows, Linux.

tảng FPGA và giới thiệu về phương pháp xây dựng một hệ thống nhúng trên nền
FPGA sử dụng ngôn ngữ mô tả phần cứng VHDL.

2.1.1. Kiến trúc FPGA

2.1. Giới thiệu công nghệ nền tảng FPGA
Tên gọi FPGA viết tắt của Field Programable Gate Arrays, dùng để chỉ 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 “Programmable Interconnect”. 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ư mã hóa, giải mã. Các khối logic cũng có thể bao gồm
cả các phần tử nhớ như các Flip-Flop hay những bộ nhớ hoàn chỉnh hơn như RAM.
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 hệ
thống giống như việc đi dây trong một bảng mạch điện tử thông thường. Hiện nay, một
số kiến trúc FPGA có thể cho phép cấu hình lại từng phần (partial re-configuration),
một phần của thiết kế được cấu hình lại ngay cả khi những thiết kế khác vẫn tiếp tục
hoạt động.

Hình 2-1: Kiến trúc chung của FPGA [2].

FPGA còn có một ưu điểm khi có thể tích hợp các bộ xử lý mềm hay vi xử lý
tích hợp do đó các vi mạch FPGA có thể hoạt động như một bo mạch hoàn chỉnh. Các
vi xử lý mềm/tích hợp trong FPGA có thể được thiết kế như các khối logic thông
thường, với mã nguồn do các hãng cung cấp. Vi xử lý thực thi các lệnh theo chương
trình được nạp riêng biệt, có các ngoại vi thiết kế linh động như giao tiếp UART, khối
vào/ra đa chức năng GPIO và khối kết nối Ethernet... Các vi xử lý mềm/tích hợp cũng
có thể được lập trình lại trong khi hệ thống đang chạy.
Ứng dụng của FPGA hiện nay rất rộng rãi, điển hình như trong các lĩnh vực xử

Kiến trúc FPGA được mỗi nhà sản xuất quy ước riêng theo bộ công cụ phát
triển của hãng, nhưng cấu trúc chung của FPGA được thể hiện giống như trong Hình
2.1. Cấu trúc FPGA bao gồm có các khối logic khả trình (CLBs), các khối vào/ra khả
trình (IOBs), và các khối kết nối khả trình. FPGA có mạch clock để truyền tín hiệu
clock tới các khối logic, và các khối nguồn logic như ALUs, memory.
Các khối logic khả trình 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. CLBs thực hiện phần lớn các chức năng logic như là lưu trữ dữ liệu.

lý tín hiệu số, xử lý ảnh, thị giác máy, nhận dạng giọng nói, mô phỏng... đặc biệt trong

các lĩnh vực, ứng dụng có kiến trúc yêu cầu lượng rất lớn xử lý song song như mã hóa
và giải mã. Ngoài ra, FPGA còn được ứng dụng trong những hệ thống cần thực thi các
thuật toán như FFT, nhân chập, làm nhiệm vụ như một vi xử lý. Trong những năm gần
22

23


bus. Các line dài đặc biệt, gọi là các line clock toàn cục, được thiết kế đặc biệt cho trở
kháng thấp, đo đó thời gian lan truyền nhanh hơn. Các đường clock toàn cụ được kết
nối với các bộ đệm clock và với mỗi phần tử trong CLBs.

Hình 2-2: Một Logic Block điển hình
Các khối vào/ra khả trình đ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 ba 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ỗ trợ luồng dữ liệu hai chiều và hoạt động logic ba
trạng thái. 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.

Hình 2-4: Các kết nối khả trình .
Các khối vào ra cùng các bộ đệm clock gọi là các clock driver, nằm rải rác xung
quanh chip và được nối với các chân clock vào, thực hiện việc lái các tín hiệu clock
vào các đường clock toàn cục như mô tả ở trên. Các đường clock được thiết kế với
thời gian lệch nhỏ nhất và thời gian lan truyền nhanh nhất. Thiết kế đồng bộ là yêu cầu
bắt buộc với FPGA, 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.
2.1.2. Ngôn ngữ lập trình mô tả phần cứng VHDL
Ngôn ngữ mô tả phần cứng VHDL viết tắt của VHSIC Hardware Description
Hình 2-3: Khối Logic khả trình.


Language là ngôn ngữ mô tả hành vi của mạch điện, hệ thống. Trong đó, VHSIC là

Khối kết nối khả trình được dùng để nối các CLBs ở cách xa nhau mà không

viết tắt của Very High Speed Integrated Circuits - mạch tích hợp tốc độ cao, được sáng

gây ra quá nhiều trễ. Khối kết nối có thể được dùng như là các bus trong chip. Có các

lập bởi tổ chức United State Department of Defense trong những năm 1980, sau đó tạo

đường line ngắn được dùng để liên kết các CLBs riêng rẽ đặt gần nhau. Các bộ chuyển

ra VHDL. VHDL là ngôn ngữ mô tả phần cứng đầu tiên được chuẩn hóa bởi Institue

đổi lập trình được bên trong chip cho phép kết nối giữa CLBs tới các interconnect line

of Electrical and Electronics Engineers.

và giữa interconnect line với các line khác và với các bộ chuyển đổi. 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 đường line dài tạo nên các
24

Ngôn ngữ mô tả phần cứng VHDL là một ngôn ngữ độc lập của các nhà công
nghệ, các nhà phân phối, do đó chúng có khả năng linh động và kế thừa. VHDL được
25


ứng dụng trực tiếp trong các thiết bị logic lập trình được bao gồm CPLDs và FPGAs.


một “physical layout” cho các chíp CPLD/FPGA hoặc tạo ra các mặt nạ cho một hệ

Mã nguồn VHDL có thể được dùng để thực thi mạch điện trong các thiết bị lập trình

ASIC.

được của các hãng cung cấp thiết bị vi mạch khả trình (FPGA, CPLD) như Altera,
Xilinx, Almel... hoặc được gửi đến các xưởng chế tạo các chíp ASIC. Hiện này, rất

2.2. Phương pháp xây dựng hệ thống nhúng trên FPGA

nhiều chip thương mại phức tạp ví dụ như các vi điều khiển đang được thiết kế dựa

2.2.1. Trình tự thiết kế một vi mạch FPGA

trên ngôn ngữ mô tả phần cứng VHDL.

2.2.1.1. Mô tả đặc điểm kĩ thuật

Ngôn ngữ VHDL cho phép tổng hợp mạch điện hoặc hệ thống trong thiết bị khả

Mô tả các chức năng, cấu trúc của thiết kế. Specification cung cấp đặc tả

lập trình (CPLD hoặc FPGA) hoặc trong một hệ ASIC. Các bước thực hiện một

về các cổng vào ra, các yêu cầu về thời gian cũng như kiến trúc. Specification được sử

project được tổng kết như trong Hình 2.5.

dụng song song cho quá trình Design Entry cũng như xây dựng testbench. Đặc điểm

kỹ thuật cho phép hiểu về thiết kế hệ thống. Và nó cũng cho phép các kĩ sư thiết kế
giao diện đúng cho một loạt các phần của chip. Các đặc điểm kỹ thuật cũng giúp tiết
kiệm thời gian và sự hiểu lầm. Sẽ không làm gì được nếu không có các bảng ghi các
đặc điểm kĩ thuật.
Chi tiết đặc tả kỹ thuật bao gồm các thông tin sau đây:
 Sơ đồ khối bên ngoài đểchỉ ra chip đó được đặt vào trong hệ thống như thế
nào.


Sơ đồ khối bên trong chỉrõ mỗi chức năng của các thành phần.

 Miêu tả các chân vào ra bao gồm khả năng lái đầu ra, mức ngưỡng đầu vào.
 Thời gian ước lượng bao gồm thời gian thiết lập và giữ ở các chân vào, thời
gian lan truyền ra các cổng ra và thời gian chu kì clock.
 Đếm xấp xỉ số gate
 Dạng đóng gói
 Tiêu thụ nguồn
Hình 2-5: Qui trình thiết kế chip dựa trên VHDL [2].
Một vi mạch được bắt đầu thiết kế bằng cách viết mã VHDL là các file với
đuôi mở rộng .vhd. Quá trình tổng hợp bắt đầu với bước biên dịch. Biên dịch là một
quá trình chuyển đổi giữa ngôn ngữ VHDL bậc cao tại Register Transfer Level sang

 Giá cả
 Các thủ tục để kiểm tra
2.2.1.2. Lựa chọn công nghệ, công cụ tổng hợp

netlist ở mức gate level. Bước thứ hai là tối ưu thực hiện trên “gate level netlist” tối ưu

Mỗi khi một chi tiết miêu tả kỹ thuật được xuất bản, nó có thể được dùng để


về tốc độ hoặc cho diện tích. Cuối cùng là môt phần mềm “place and route” sẽ tạo ra

chọn nhà sản xuất chip tốt nhất với công nghệ và cấu trúc giá cả là tốt nhất đáp ứng
được yêu cầu.

26

27


Tại thời điểm này chúng ta phải quyết định cách thực hiện thiết kế mà mong

Nếu thiết kế dùng HDL, bước tiếp theo là tổng hợp chip, bao gồm việc dùng

muốn. Đối với các chip nhỏ thì cách tiếp cận bằng sơ đồ nguyên lý thường được chọn,

phần mềm tổng hợp để chuyển đổi thật tối ưu từ thiết kế mức RTL sang thiết kế mức

đặc biệt là khi các kĩ sư thiết kế đã quen thuộc với các công cụ này. Thế nhưng đối với

gate mà có thể gắn vào các khối logic trong FPGA.

các thiết kế lớn hơn, ngôn ngữ miêu tả phần cứng HDL như Verilog và VHDL được
dùng bởi khả năng mềm dẻo, dễ đọc, dễ chuyển giao. Khi dùng ngôn ngữ cấp cao,
phần mềm tổng hợp sẽ được yêu cầu tổng hợp thiết kế. Có nghĩa rằng phần mềm này
sẽ tạo ra các cổng ở cấp thấp từ miêu tả ở cấp cao hơn.
Chúng ta phải quyết định chọn phần mềm tổng hợp sẽ được dùng nếu có kế

Bước tiếp theo là sắp đặt chip, kết quả trong việc thiết kế vật lý cho chip
thực.Điều này bao gồm các công cụ của nhà sản xuất để tối ưu lập trình cho chip để

thực hiện thiết kế. Sau đó, thiết kế được lập trình vào cho chip.
2.2.1.4. Mô phỏng, kiểm tra

hoạch thiết kế FPGA với HDL. Điều đó rất quan trọng kể từ khi mỗi công cụ tổng hợp

Sau khi sắp đặt xong, vi mạch phải được mô phỏng lại với các con số về thời

được khuyên dùng và sự ủy thác của cách thiết kế phần cứng nên nó có thể hoạt động

gian tạo ra bởi các layout thực tế. Nếu mọi thứ đều tốt đến thời điểm này, thì một kết

tổng hợp đúng hơn.

quả mô phỏng mới sẽ đúng với các kết quả dự đoán.

2.2.1.3. Thiết kế vi mạch, tổng hợp

Đối với các thiết bị lập trình được, đơn giản là lập trình thiết bị đó và ngay lập
tức có mẫu thử. Sau đó đặt mấu thử này vào trong hệ thống và kiểm tra hệ thống có

Có một số cách để thiết kế chip

làm việc đúng không. Nếu làm lần lượt các bước ở trên, hệ thống sẽ hoạt động đúng

 Top-down design (Thiết kế từ trên xuống dưới)

chỉ với một vài lỗi rất nhỏ. Các lỗi này thường được làm việc quanh việc thay đổi hệ

 Macros


thống và thay đổi phần mềm hệ thống. Các lỗi này cần được kiểm tra và trích dẫn lại

 Synchronous design

để có thể được sửa chữa trong phiên bản tiếp theo của chip. Kiểm tra hệ thống nhúng

 Protect against metastability

là cần thiết ở giai đoạn này để đưa ra kết quả rằng toàn bộ hệ thống đều hoạt động

 Avoid floating nodes

đúng khi kết hợp với nhau.

 Avoid bus contention

Khi các chíp được đưa vào sản xuất, cần có một vài kiểm tra burn-in trong hệ

Mô phỏng là một quá trình liên tục khi mà thiết kế xong. Từng phần nhỏ của

thống để test thường xuyên hệ thống qua thời gian dài. Nếu một chip được thiết kế

thiết kế được mô phỏng trước khi kết hợp chúng thành các phần lớn hơn. Điều này rất

đúng, thì nó chỉ bị hỏng khi lỗi điện học hoặc lỗi cơ học.

cần thiết và sự mô phỏng theo thứ tự sẽ kiểm tra chức năng hoạt động đúng của từng

2.2.2. Giải pháp thiết kế hệ thống sử dụng bộ công cụ của hãng Xilinx


phần.

Xilinx là nhà phát triển FPGA, CPLD được sử dụng rộng rãi trong những ứng
Mỗi khi thiết kế và mô phỏng hoàn thành, dẫn đến một cái nhìn tổng quan khác

dụng truyền thông, tự động hóa, mật mã... và các lĩnh vực khác. Các sản phẩm phần

về thiết kế vì thế thiết kế có thể được kiểm tra lại. Để nhận các kết quả khác cho phép

cứng của Xilinx gồm có các dòng CPLD như CoolRunner, các họ FPGA như Spartan,

nhìn qua các mô phỏng và chắc chắn rằng không có điều gì bị quên và không sự tổn

Virtex...

hao nào gặp phải. Đó là một trong những khái quát quan trọng nhất bởi vì khi mô
phỏng đúng và thành công thì chúng ta sẽ biết được chip sẽ hoạt động đúng trong hệ
thống.
28

29


Xilinx còn cung cấp các phần mềm hỗ trợ lập trình FPGA, CPLD như ISE,
EDK, LogicCore, System Generator. Các công cụ này hỗ trợ rất nhiều cho quá trình
lập trình FPGA, giúp giảm thời gian và công sức thiết kế.
2.2.2.1. Mạch phát triển - Spartan 3E

Hình 2-7: Các thành phần của Kit Spartan-3E[12].
Cấu trúc tổng quan của Spartan-3 gồm có 5 thành phần có chức năng khả trình

cơ bản sau:
 Configurable Logic Blocks bao gồm các Look-Up Tables 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. CLB thực hiện phần lớn các chức năng logic như lưu trữ dữ liệu.

Hình 2-6: Kit phát triển Spartan-3E [12].

 Input/Output Blocks điều khiển dòng dữ liệu giữa các chân vào ra I/O và các

Các thành phần của KIT

logic bên trong của FPGA. IOBs hỗ trợ luồng dữ liệu 2 chiều và hoạt động
logic 3 trạng thái. 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 DataRate.
 Block RAM cho phép lưu trữ dữ liệu dưới dạng các khối dualport 18-Kbit.
 Multiplier Blocks cho phép 2 số nhị phân 18bit làm đầu vào và dễ dàng tính
toán tích của chúng.


Digital Clock Manager Blocks cung cấp khả năng tự xác định xung clock, là
giải pháp số hoàn chỉnh cho các tín hiệu clock phân phối, trễ, nhân, chia và dịch
bit.
Các phần tử này được tổ chức như trong hình sau:

30

31


Hình 2-9: Sơ đồ khối lõi Microblaze [11].

Hình 2-8: Kiến trúc của Spartan 3E [12].
Hình 2.8 cho thấy một vòng IOBs bao quanh các mảng CLBs. Mỗi cột block
RAM bao gồm một vài block RAM 18-Kbit, mỗi block RAM lại gắn liền với một
multiplier dành riêng. Các DCM được đặt ở các vị trí: 2 DCM phía trên và 2 cái phía
dưới của thiết bị, và đối với các device lớn hơn thì có thêm các DCM ở phía bên cạnh.
Đặc điểm chung mạng Spartan-3E là kết nối liên thông giữa 5 phần tử cơ bản

Tính năng:
 Ba tầng xử lý đường ống với 32 thanh ghi mục đích 32 bit.
 Từ lệnh 32 bit với 3 toán hạng và 2 chế độ định địa chỉ.
 Đường bus 32 bit địa chỉ.
 Một khối ghi dịch.
 Hai cấp độ ngắt.

này, và truyền tín hiệu giữa chúng. Mỗi thành phần chức năng này có một ma trận

 Khối ALU: Gồm các bộ cộng/trừ, ghi dịch/logic, nhân.

chuyển đổi dành riêng để cho phép chọn lựa kết nối cho việc đi dây trong FPGA.

 Một bộ đếm chương trình.

2.2.2.2. Vi điều khiển mềm - MicroBlaze

 Một đơn vị quản lý bộ nhớ.

MicroBlaze là một vi điều khiển mềm nhúng 32 bit của Xilinx. Lõi có cấu trúc
Harvard và tập lệnh thu gọn RISC, với các bus riêng biệt để truy xuất dữ liệu và lệnh
từ bộ nhớ on-chip và với bộ nhớ ngoài tại cùng một thời điểm. Chúng ta có thể thiết
lập các thông số để sử dụng đối với vi điều khiển này như các cổng vào ra ngoại vi

thông qua bộ công cụ EDK.

Ngoài những tính năng trên, tùy vào các phiên bản mà bộ xử lý microblaze có
thêm những tính năng khác.
Kiến trúc đường ống của vi điều khiển microblaze: Vi điều khiển micorblaze xử
lý lệnh theo kiến trúc đường ống song song, hầu hết các lệnh của nó, mỗi giai đoạn
mất một chu kỳ đồng hồ để thực hiện xong. Quá trình xử lý lệnh được chia làm 3 giai
đoạn: nhận lệnh (Fetch), giải mã lệnh (Decode), thi hành lệnh(Execute):

32

33


Hình 2-10: Kiến trúc đường ống trong microblaze.
Thông thường, nếu bỏ qua thời gian trễ nghỉ “stall” thì mỗi gia đoạn trên chỉ
mất một chu kỳ đồng hồ, khi đó ba lệnh có thể được xử lý cùng một lúc, mỗi lệnh
được thi hành trong một đường ống gồm ba giai đoạn. Microblaze có một bộ đệm tiền
nhận lệnh IPB để làm giảm xung đột tiềm ẩn trong bộ nhớ khi thực hiện các lệnh đa
chu kỳ. Khi đường ống được tạo trễ nghỉ do thực hiện lệnh đa chu kỳ trong giai đoạn
thi hành, bộ đệm tiền nhận lệnh sẽ tiếp tực nhận có thể lấy lệnh trực tiếp từ bộ đệm
tiền nhận lệnh, thay vì đợi cho bộ nhớ lệnh truy cập để thi hành.
Như đã trình bày, Microblaze cung cấp 3 giao tiếp bộ nhớ:

Hình 2-11: Hệ thống BUS điển hình của Microblaze [11].
2.2.2.3. Bộ công cụ phát triển hệ thống nhúng của hãng Xilinx - EDK
EDK - Embedded Development Kit là công cụ và các IP để thiết kế hệ thống xử
lý nhúng trên FPGA của Hãng Xilinx. EDK bao gồm Xinlinx Platform Studio (XPS)
để thiết kế phần cứng của hệ thống xử lý nhúng và Software Development Kit (SDK)
được sử dụng cho việc khởi tạo và kiểm tra các ứng dụng phần mềm nhúng viết bằng

ngôn ngữ C/C++. SDK được xây dựng trên Eclipse™ open-source framework.

-

LMB: Local Memory Bus.

-

PLB: Processor Local Bus.

-

OPB: On-chip Peripheral Bus và XCL

XPS cung cấp một giao diện người dùng với các công cụ tổng hợp phần cứng,
hỗ trợ xây dựng hệ thống từ việc cấu hình bộ vi xử lý đến các ngoại vi, khối bộ nhớ,
cổng vào ra, và các thư viện IP core trong một thiết bị của Xilinx. Màn hình giao diện
chính của XPS gồm có 3 vùng:

34

35


Platform sẽ chứa tệp tin .bit được xây dựng từ công cụ XPS. Một bộ chương trình
phần mềm nhúng thực hiện trên SDK sẽ cần một project chứa thư viện phần mềm Board Support Package, và một project ứng dụng phần mềm.

Hình 2-12: Giao diện sử dụng của công cụ XPS.
Project Information Area (1), System Assembly View (2), Console Window
(3). Ngoài ra cửa sổ màn hình chính của XPS còn có các nhãn để chỉ thị các vùng 4, 5,

Hình 2-13: Giao diện sử dụng của công cụ SDK

6: Connectivity Panel (4), View Buttons (5), Filters Pane (6).
Công cụ XPS cho phép khởi tạo một hệ thống phần cứng trên nền tảng FPGA,
với XPS chúng ta lựa chọn “Base System Builder” để tạo project, khi đó các thông tin
về cầu hình phần cứng sẽ được lưu dưới dạng file .bsb. Khi cần tạo một project mới
với cùng một cấu hình phần cứng, chúng ta chỉ cần import file .bsb để sử dụng các
thông số. Sau khi lựa chọn các thông số loại CPU, tốc độ clock hệ thống, chúng ta lựa
chọn các ngoại vi như RS232, các cổng vào ra IO, quản lý ngắt, quản lý bộ nhớ, bộ

Một gói hỗ trợ bo mạch BSP là một bộ sưu tập của thư viện và các driver mà sẽ
định hình lớp thấp nhất của các phần mềm ứng dụng. Ứng dụng phần mềm phải liên
kết với hoặc chạy trên của một môi trường phần mềm sử dụng các API mà nó cung
cấp. Vì thế, trước khi tạo và sử dụng các ứng dụng phần mềm trong SDK, chúng ta
phải tạo một BSP. SDK bao gồm 2 loại BSP cho phát triển ứng dụng:
-

đếm, timer… Để thêm vào các chức năng chuyên biệt chúng ta cần thêm vào hệ thống
các IP core, ví dụ VGA core, Ethernet core với các phiên bản khác nhau, sau đó cấu
hình các bus hệ thống, sắp đặt các chân vào, ra cho các ngoại vi và khởi tạo địa chỉ

Standalone là môi trường đơn luồng cung cấp các đặc tính như chuẩn vào/ra
và truy cập tới các đặc tính bộ vi xử lý phần cứng.

-

Xilkernel là một loại hệ điều hành thời gian thực, hỗ trợ phân luồng, các
thread, đồng bộ, truyền các thông tin và các bộ định thời.

vùng nhớ. Cuối cùng công cụ XPS cho phép xây dựng hệ thống dưới dạng .bit file để

Khi một BSP được xây dựng, các thành phần phần mềm được tự động ghép vào

nạp xuống bo mạch FPGA tương ứng.

trong thư viện gồm có các chuẩn của thư viện C (libc.a, libm.a) và các drivers của thiết
SDK hỗ trợ tạo hệ thống phần mềm nhúng bắt đầu từ việc khởi tạo “Hardware

bị cho tất cả các ngoại vi trong thiết kế củ (libxil.a).

platform” được Export từ công cụ XPS sau khi đã tổng hợp phần cứng. Hardware
Kết luận:
36

37


Chương 2 của luận văn đã trình bày những vấn đề cơ bản của công nghệ nền

CHƯƠNG 3:

tảng FPGA và giới thiệu về phương pháp xây dựng một hệ thống nhúng trên nền

HỆ THỐNG HIỂN THỊ THÔNG TIN HÌNH ẢNH
THÔNG QUA MẠNG INTERNET

FPGA sử dụng ngôn ngữ mô tả phần cứng VHDL. Quy trình thiết kế một vi mạch
FPGA trải qua các bước như sau: Mô tả đặc điểm kĩ thuật, Lựa chọn công nghệ, công
cụ tổng hợp, Thiết kế vi mạch, tổng hợp, Mô phỏng, kiểm tra. Chương này cũng trình
bày giải pháp thực hiện đề tài Luận văn bằng các công cụ phần cứng và bộ công cụ


Nội dung chương thứ ba sẽ trình bày việc xây dựng ý tưởng thiết kế, đặc tả hệ
thống, mô tả thiết kế tổng thể, thiết kế từng mô-đun, thiết kế và xây dựng phần mềm.

3.1. Mô tả ý tưởng thiết kế hệ thống

phần mềm phát triển hệ thống FPGA của hãng Xilinx. Giải pháp phần cứng của đề tài
sử dụng mạch phát triển Spartan-3E, vi điều khiển mềm MicroBlaze. Để tổng hợp các

Hệ thống hiển thị hình ảnh được xây dựng dạng System-on-a-chip dựa trên

thành phần của hệ thống, chúng ta sử dụng bộ công cụ phần mềm Xilinx Embedded

công nghệ FPGA. Phần trung tâm của hệ thống là Vi xử lý mềm MircoBlaze của hãng

Development Kit.

Xilinx. Bằng giải pháp sử dụng công nghệ FPGA cho mục đích của để tài, các khối
thành phần được tích hợp trong cùng một chip đơn. Để thực hiện chức năng hiển thị
hình ảnh định dạng JPEG lên một màn hình chuẩn VGA thông qua mạng Ethernet, hệ
thống cần tích hợp hai mô-đum phần cứng lớn là mô-đum Ethernet và mô-đum VGA
display.

Hình 3-1: Sơ đồ khối chức năng hệ thống.
Khối truyền thông Ethernet được điều khiển bời mô-đum Ethernet đóng vai trò
là một Client, kết nối tới server bởi giao thức TCP/IP. Máy chủ server của hệ thống là
kho lưu trữ dữ liệu hình ảnh định dạng JPEG, là những thông tin cần trình chiếu trên
màn hình quảng bá. Máy chủ được sử dụng làm server cho nhiều hệ thống bo mạch
38

39



hiển thị khác nhau, mỗi màn hình có thể hiển thị nội dung khác nhau cùng lưu trên một

còn cung cấp một đường bus dữ liệu truy cập bộ nhớ trực tiếp sử dụng cho khối hiển

máy chủ. Phần cứng của máy chủ là phần cho trước và đã có sẵn, trong luận văn chỉ đề

thị hình ảnh VGA. Khối quản lý bộ nhớ của hệ thống MPMC cho phép giao tiếp với

cập đến chương trình phần mềm cho phép kết nối và truyền dữ liệu tới bo mạch FPGA

bộ nhớ DDR2 của bo mạch với dụng lượng 64MB.

của hệ thống hiển thị thông tin hình ảnh. Sau khi thiết lập kết nối từ hệ thống tới server
lưu trữ dữ liệu hình ảnh, hệ thống sẽ tải tập tin hình ảnh cần hiển thị định dạng JPEG
về bộ nhớ của hệ thống.
Chương trình phần mềm ứng dụng đã tích hợp khối giải mã hình ảnh JPEG sử
dụng các thư viện khả dụng để giải mã ảnh đưa về định dạng header file. Hình ảnh sau
khi mã hóa là đầu vào của khối hiển thị VGA. Tại đây, dữ liệu hình ảnh được khối
VGA xử lý thành các chuỗi tín hiệu RGB tương ứng với chuẩn giao tiếp màn hình
VGA để hiển thị trên màn hình, đây là đích đến cuối cùng của hệ thống.

3.2. Hệ thống phần cứng
Để thực hiện yêu cầu từ sơ đồ khối của hệ thống, trên nền tảng FPGA, hệ thống
cần có các khối phần cứng như sơ đồ hình 3.2

Bảng 3-1: Bảng tổng hợp tài nguyên phần cứng của hệ thống
Thành phần
Thông số

Thành phần được sử dụng cho hệ thống hiển thị hình ảnh
Chip
Spartan-3E XC3S500E-4FG320
Vi xử lý
1 x MicroBlaze 32-bit RISC core
Tần số
50MHz
RAM
32Mx16 (64Mbytes) Micron© DDR SDRAM
Bộ đếm
XPS_Timer
Quản lý ngắt
XPS_INTC
Debug
MDM - JTAG
MMI-Lite, SMsCTM Ethernet 10/100 PHY (chip
SMSC LAN83C185)
Ethernet
Single Port 10Base-T RJ-45 Connector
Clock: 25MHz, VGA Port DB15 Connector
VGA
Red, Green, Blue, HS, and VS
Thành phần của Spartan3-E không được sử dụng
Flash PROM
128Mbit Intel® StrataFlash
SPI Serial Flash 16Mbit STMicro® SPI serial Flash
DAC
Độ phân giải 12-bit
Analog Capture 2 kênh tương tự: bộ tiền khuếch đại và bộ chuyển
đổi ADC 14 bit.

Circuit
RS232
DCE and DTE, 2xDB9 Serial Port Connector
GPIO
102 I/O chân tín hiệu điều khiển Vào/Ra
Switch, Button 4 công tắc điều khiển và 4 nút bấm - thả.
PS/2, Mouse/
Keyboard
1 cổng kết nối PS/2
Character
LCD Screen
Màn LCD 2x16
3.2.1. Xây dựng hệ thống phần cứng trên chip
Sử dụng bộ công cụ XPS – Xilinx Platform Studio phiên bản 12.3 để xây dựng
hệ thống trên chip với vi điều khiển MicroBlaze và các khối ngoại vi. Các bước xây

Hình 3-2: Sơ đồ chi tiết hệ thống phần cứng.
Các mô-đum giao tiếp với vi lý trung tâm MicroBlaze thông qua bus PLB_SI
bao gồm: Khối giao tiếp bộ nhớ, khối quản lý ngắt, khối bộ đếm timer, khối giao tiếp
Ethernet, khối giao tiếp cổng vào ra, khối kết nối debug theo chuẩn JTAG. Các khối

dựng hệ thống phần cứng được thực hiện như sau.
Trước tiên khởi động Xilinx Platform Studio từ menu Start: All Programs →
Xilinx Design Tools → ISE Design Suite 12.3 → EDK → Xilinx Platform Studio. Sử
dụng “Base System Builder” khởi tạo một project mới, lựa chọn thông tin bo mạch sử

Ethernet Timer có sử dụng ngắt được liên kết với khối XPS_Intc. Ngoài ra hệ thống
40

41



dụng là Spartan-3E Starter Board bản D của hãng Xilinx kiến trúc spartan3e, tên mã
thiết bị là XC3S500e, đóng gói kiểu FG320:

Hình 3-4: Cấu hình hệ thống.
Cấu hình các thông số của bộ vi xử lý với tần số hoạt động của hệ thống là
50MHz, bộ nhớ cục bộ là 16KB.

Hình 3-3: Lựa chọn bo mạch.
Hệ thống chỉ yêu cầu ở mức đơn nhân, do đó chúng ta lựa chọn hệ thống kiểu
“Single-Processor System”:
Hình 3-5: Cấu hình vi xử lý.
Reference clock frequency là tần số clock trong board. Processor-Bus clock
frequency là tần số clock điều khiển hệ thống xử lý. On-Chip H/W Debug module
được lựa chọng khi một module PLB MDM - Microprocessor Debug Module sẽ được
thêm vào trong hệ thống phần cứng. Module này được Xilinx khuyến cáo sử dụng để
debugging cho hệ thống Microblaze.
Dựa vào đặc tả thiết kế phần cứng, chúng ta thêm các ngoại vi cho hệ thống.

42

43


Hình 3-7: Lựa chọn bộ nhớ đệm.
Hình 3-6: Cấu hình các ngoại vi của hệ thống.
Công cụ XPS hỗ trợ chúng ta có thể cấu hình nhanh các ngoại vi cơ bản để

Sau khi cấu hình các thành phần của phần cứng, cần lựa chọn hệ thống phần

mềm ứng dụng, ở bước này chúng ta lựa chọn thông số mặc định của XPS.

thêm vào hệ thống trên chip: DDR_SDRAM, Ethernet_MAC, FLASH, RS232_DCE,
RS232_DTE, dlmb_cntlr, ilmb_cntlr, xps_timer. Các thông số cấu hình ngoại vi có thể
sử dụng các giá trị mặc định. Tuy nhiên cần cấu hình Enable ngắt cho các ngoại vi
Ethernet_MAC và xps_timer.
Sau khi đã cấu hình xong các ngoại vi cơ bản của hệ thống SOC, chúng ta
chuyển tới bước cấu hình bộ nhớ đệm cho vi xử lý. Bộ nhớ đệm là lựa chọn thêm có
thể sử dụng hoặc không tùy vào thiết kế của người dùng. Ở đây, để tăng tốc cho vi xử
lý, chúng ta lựa chọn cả 2 loại bộ nhớ đệm “Instruction Cache” và “Data Cache” với
kích cỡ 2KB.

Hình 3-8: Cấu hình ứng dụng mẫu cho hệ thống.
Đến đây chúng ta đã hoàn thành việc thiết lập một hệ thống FPGA cơ bản đáp
ứng yêu cầu của đề tài, khối điều khiển VGA sẽ được thực thi bằng IP core trong thư
viện của Xilinx.
44

45


3.2.2. Thiết kế ngoại vi giao tiếp màn hình VGA
Trong thư viện của bộ công cụ XPS, hãng Xilinx hỗ trợ rất nhiều ngoại vi dưới
dạng IP core (Intellectual Property) trong đó có ngoại vi điều khiển hiển thị hình ảnh
lên màn hình lõi VGA.
Trong giao diện của công cụ XPS, thêm VGA core bằng cách add IP
“XPS_TFT” trong cừa sổ IP Catalog ở mục IO modules. Thêm lõi XPS_TFT vào
project, tại cửa sổ đầu tiên chúng ta bỏ chọn thuộc tính “Select TFT interface” do chỉ
cần dùng chức năng điều khiển VGA


Hình 3-10: Cấu hình bus cho lõi VGA.
Tiếp theo chúng ta cần thiết lập thông số xung nhịp đồng bộ cho lõi VGA. Trên kit Spartan3E, do tần số hoạt động của SoC đạt được là thấp (50 MHz) nên chúng ta chỉ thử nghiệm
được thiết kế với chế độ hiển thị VGA 640x480, đồng thời chế độ màu hiển thị là 3-bit –
tương ứng với 3-bit thông tin màu RGB. Tần số pixel clock ứng với chế độ hiển thị VGA
được đặt bằng 25 MHz. Trên giao diện XPS, vào Hardware chọn thuộc tính Launch

Clock Wizard thiết lập thông số SYS_TFT_Clk là 25.000000

Hình 3-9: Khởi tạo lõi VGA.
Thiết lập bus cho lõi VGA, giao tiếp với bus PLB gồm giao diện bus chủ PLB_MI
và giao diện bus tớ PLB_SI. Hai giao diện này có thể kết nối chung với một kênh truyền
thông PLB hoặc hai kênh truyền thông PLB độc lập. PLB_MI giúp lõi điều khiển VGA có thể
đọc dữ liệu ảnh từ RAM ngoài vào. PLB_SI giúp lõi điều khiển VGA có thể nhận thông tin
điều khiển từ vi xử lý. Chi tiết về các tín hiệu trong giao diện này được trình bày trong các tài

Hình 3-11: Thiết lập tần số hoạt động của lõi VGA.

liệu [12] và [13] .

46

47


Lõi VGA cần giao tiếp với màn hình, do đó cần thiết lập các chân tín hiệu của khối
VGA là các tín hiệu ngoài “Make External”. Các tín hiệu của lõi VGA như mô tả ở bảng 3.2

Bảng 3-2: Các tín hiệu ngoại vi của lõi VGA

Tín hiệu

SYS_TFT_Clk
TFT_VGA_R
TFT_VGA_G
TFT_VGA_B
TFT_HSYNC
TFT_VSYNC

Chiều
I/O
I
O
O
O
O
O

Net

Mô tả

Clk_25_000MHz
xps_tft_0_TFT_VGA_R
xps_tft_0_TFT_VGA_G
xps_tft_0_TFT_VGA_B
xps_tft_0_TFT_HSYNC
xps_tft_0_TFT_VSYNC

Tín hiệu xung đồng hồ
Giá trị màu đỏ
Giá trị màu xanh lục

Giá trị màu xanh lam
Tín hiệu đồng bộ dòng
Tín hiệu đồng bộ mành

Để các tín hiệu được kết nối tới tương ứng các chân trên chip, chúng ta cần khai
báo trong file system.ucf. Thêm vào đoạn mã như sau:

Hình 3-12: Tạo ra phần cứng FPGA.
Chúng ta đã khởi tạo và cấu hình đầy đủ các ngoại vi mà hệ thống yêu cầu.
Bước cuối cùng để tạo ra file hệ thống nạp xuống bo mạch thực thi phần cứng FPGA,
chúng ta chọn thuộc tính “Generate Bitstream” trong menu “Hardware” từ giao diện
Xilinx Platform Studio.

NET xps_tft_0_TFT_VGA_R_PIN<0> LOC = "H14" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
NET xps_tft_0_TFT_VGA_R_PIN<*> IOSTANDARD = LVTTL ;
NET xps_tft_0_TFT_VGA_G_PIN<0> LOC = "H15" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
NET xps_tft_0_TFT_VGA_G_PIN<*> IOSTANDARD = LVCMOS33 ;
NET xps_tft_0_TFT_VGA_B_PIN<0> LOC = "G15" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
NET xps_tft_0_TFT_VGA_B_PIN<*> IOSTANDARD = LVCMOS33 ;
NET xps_tft_0_TFT_HSYNC_PIN LOC = "F15" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;
NET xps_tft_0_TFT_VSYNC_PIN LOC = "F14" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = FAST ;

Chúng ta cần khởi tạo địa chỉ để định địa chỉ cho các ngoại vi đã thêm vào bằng
cách sử dụng thuộc tính “Generate Addresses” nằm trong tab “Addresses”. Tiếp theo
đa định địa chỉ bộ nhớ video cho bộ điều khiển VGA. Trong tab Bus Interfaces kích
chuột phải vào xps_tft_0 vào chọn thuộc tính “Configure IP…” đặt giá trị địa chỉ cơ
sở cho lõi VGA là 0x8E000000 trong mục "Base address of PLB attached Video
Memory".

Hình 3-13: Sơ đồ khối hệ thống tạo bởi XPS.


48

49


×