113
ĐỒ ÁN TỐT NGHIỆP 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài: TÌM HIỂU VỀ DSP BOARD EVMDM642 ỨNG DỤNG CÁC THUẬT TOÁN XỬ LÝ ẢNH Giảng viên hướng dẫn: TS.LÊ DŨNG Sinh viên thực hiện: ĐÀO ĐĂNG TOÀN NGUYỄN VĂN TIỆP LÊ CAO BẰNG Khoa : ĐIỆN TỬ - VIỄN THÔNG Lớp : ĐT2 – K53 Hà Nội, 6-2013

Báo Cáo Đồ Án 2.1

Embed Size (px)

Citation preview

Page 1: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

Đề tài:

TÌM HIỂU VỀ DSP BOARD EVMDM642 ỨNG DỤNG CÁC THUẬT TOÁN XỬ LÝ ẢNH

Giảng viên hướng dẫn: TS.LÊ DŨNG Sinh viên thực hiện: ĐÀO ĐĂNG TOÀN NGUYỄN VĂN TIỆP LÊ CAO BẰNG Khoa : ĐIỆN TỬ - VIỄN THÔNG Lớp : ĐT2 – K53

Hà Nội, 6-2013

Page 2: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

2

BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HÔI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

Đề tài:

TÌM HIỂU VỀ DSP BOARD EVMDM642 ỨNG DỤNG CÁC THUẬT TOÁN XỬ LÝ ẢNH

Giảng viên hướng dẫn: TS.LÊ DŨNG Sinh viên thực hiện: ĐÀO ĐĂNG TOÀN NGUYỄN VĂN TIỆP LÊ CAO BẰNG Khoa : ĐIỆN TỬ - VIỄN THÔNG Lớp: ĐT2 – K53

Cán bộ phản biện: NCS.TRƯƠNG CAO DŨNG ThS.NGUYỄN QUANG MINH TS.TRẦN ĐỖ ĐẠT TS.NGÔ VŨ ĐỨC TS.NGUYỄN VŨ SƠN

Hà Nội, 6-2013

Page 3: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

3

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI --------------------------------------------------

Độc lập - Tự do - Hạnh phúc ---------------------------------

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

Họ và tên sinh viên: Đào Đăng Toàn Số hiệu sinh viên: 20082691

Họ và tên sinh viên: Nguyễn Văn Tiệp Số hiệu sinh viên: 20082676

Họ và tên sinh viên: Lê Cao Bằng Số hiệu sinh viên: 20080171

Khoá:53 Khoa: Điện tử - Viễn thông Ngành: Điện

tử

1. Đầu đề đồ án: Tìm hiểu về DSP Evaluation board EVMDM642 ứng dụng

các thuật toán xử lý ảnh

2. Các số liệu và dữ liệu ban đầu:

Một camera tương tự, một board DSP EVMDM642, một bộ nạp blackhawk

bhusb-560m và các dây nối đi kèm.

3. Nội dung các phần thuyết minh và tính toán:

……………………………………………………………………………………………………

……………………………………………………………………………………………………

…….

4. Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ):

………………………………………………………………………………………

………………………………..….……….…………………………………………

…………

5. Họ tên giảng viên hướng dẫn: TS. Lê Dũng

6. Ngày giao nhiệm vụ đồ án: 15/3/2013

7. Ngày hoàn thành đồ án: 4/6/2013

Ngày tháng năm

Chủ nhiệm Bộ môn Giảng viên hướng dẫn

Sinh viên đã hoàn thành và nộp đồ án tốt nghiệp ngày tháng năm

Cán bộ phản biện

BỘ GIÁO DỤC VÀ ĐÀO TẠO

Page 4: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

4

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ---------------------------------------------------

BẢN NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP

Họ và tên sinh viên: Đào Đăng Toàn Số hiệu sinh viên: 20082691

Họ và tên sinh viên: Nguyễn Văn Tiệp Số hiệu sinh viên: 20082676

Họ và tên sinh viên: Lê Cao Bằng Số hiệu sinh viên: 20080171

Khoá:53 Khoa: Điện tử - Viễn thông Ngành: Điện

tử

Giảng viên hướng dẫn: TS.Lê Dũng

Cán bộ phản biện: : NCS.Trương Cao Dũng ThS. Nguyễn Quang Minh TS. TRần Đỗ Đạt TS. Ngô Vũ Đức TS. Nguyễn Vũ Sơn

1. Nội dung thiết kế tốt nghiệp:

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.........................................................................

2. Nhận xét của cán bộ phản biện:

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

Page 5: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

5

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

.......................................................................................................................................

......................................................................................................................................

Ngày tháng năm

Cán bộ phản biện

( Ký, ghi rõ họ và tên )

Page 6: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

6

LỜI MỞ ĐẦU

Ngày nay khi khoa học và công nghệ ngày một phát triển, đặc biệt là lĩnh

vực công nghệ số,công nghệ điện tử. Trong lĩnh vực điện tử yêu cầu về tốc độ xử lý,

cũng như kích thước của những linh kiện,sản phẩm ngày càng cao. Tốc độ xử lý của

chip được cải thiện rất nhanh vì vậy chúng có khả năng xử lý tốt trong các lĩnh vực

công nghệ âm thanh và hình ảnh.

Một trong những lĩnh vực được ứng dụng rất nhiều trong công nghiệp,trong

y tế,trong quốc phòng là xử lý, phân tích hình ảnh và video. Để phát triển và cho

phép người dùng thử nghiệm những ứng dụng này thì những kit phát triển DSP của

TI có những tính năng và môi trường làm việc rất phù hợp. Các kit DSP nói riêng

và kit DSP EVMDM642 nói riêng có mức độ tích hợp và tốc độ xử lý rất cao.,nó

đáp ứng được những yêu cầu trong lĩnh vực xử lý số ,tín hiệu,và xử lý hình ảnh,xử

lý video.

Vì những ứng dụng rộng rãi của của lĩnh vực này nên nhóm sinh viên chúng

em đã quyết định chọn đề tài “Tìm hiểu về DSP Evaluation board EVMDM642

ứng dụng xử lý ảnh”.

Để có thể thực hiện và hoàn thành đề tài này em xin chân thành cảm ơn thầy

TS. Lê Dũng và các thầy cô trong bộ môn đã tận tình giúp đỡ và tạo mọi điều kiện

thuận lợi nhất về phương tiên,dụng cụ cũng như về mặt kiến thức cho chúng em

trong suốt quá trình thực hiện đề tài.

Nhóm sinh viên thực hiện đã hoàn thành được những yêu cầu mà đề tài đồ án

đặt ra đó là tìm hiểu về hoạt động của board EVMDM642 và cài đặt một số những

thuật toán xử lý ảnh sử dụng board này.

Mặc dù chúng em đã cố gắng và nỗ lực hết mình để hoàn thành đồ án tốt nghiệp

này, song chắc chắn không thể tránh khỏi những sai sót và hạn chế. Vì vậy, chúng

em rất mong sẽ nhận được sự đóng góp ý kiến của thầy cô giáo và các bạn để đề tài

tốt nghiệp này được hoàn thiện hơn. Xin chân thành cảm ơn!

Nhóm sinh viên thực hiện

TÓM TẮT ĐỒ ÁN Xử lý hình ảnh,video là một lĩnh vực mang tính khoa học và công nghệ .

Page 7: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

7

Những năm gần đây sự phát triển của lĩnh vực này ngày càng nhanh,kích thích các

trung tâm nghiên cứu phát triển ứng dụng của nó.

Đồ án tập trung nghiên cứu cách sử dụng bộ kit phát triển của TI: board

EVMDM642 . Bởi vì sự chuyên dụng trong việc xử lý hình ảnh , nên sự nghiên cứu

về hoạt động của kit là cần thiết. Đồng thời đồ án cũng đưa ra những kết quả ban

đầu trong việc thử nghiệm các thuật toán xử lý hình ảnh,video.

Nội dung của đồ án bao gồm 3 chương:

Chương I : Khái quát chung

Chương II : Quy trình xử lý dữ hiệu video của DSP board EVMDM642

Chương III : Quy trình thực hiện đồ án và các kết quả thu được

ABSTRACT

Image processing and video processing is a scientific and technological

field. In few recent years,the development of the field is growing rapidly, It

stimulated research and development centers to develop its applications.

We’s thesis focused on the usage of TI development kits: EVMDM642

board. Because the specialization in image processing, so reseaching about the

activities of this kit is necessary. Beside, the thesis also provides the initial results

of the testing of image, video processing algorithms.

The contents of the thesis includes 3 chapters:

Chapter I : Overview

Chapter II : The procedure video data process of DSP board EVMDM642

Chapter III : The implementation procedure of thesis and the results

obtained

PHÂN CÔNG NHIỆM VỤ

SINH VIÊN

MSSV

Nhiệm vụ thực hiện Nhiệm vụ chung

Page 8: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

8

Đào Đăng Toàn

20082691

Thực hiện thuật toán làm nổi đường biên sobel và quick

mask ,tăng giảm độ sáng của ảnh

Tìm hiểu về cách thức hoạt động của

trình biên dịch Code Composer Studio

cũng như hoạt động của board DSP

EVMDM642. Quá trình xử lý luồng dữ

liệu video. Cách thức hoạt động và lưu trữ của các bộ

đệm và bộ nhớ

Nguyễn Văn Tiệp

20082676

Cách thức tác động lên từng ô nhớ của bộ nhớ DSP, viết

dòng chữ chạy trên màn hình, hiển thị hình ảnh của ảnh đảo ngược,xử lý lọc

Gauss cho ảnh.

Lê Cao Bằng

20080171

Chuyển đổi từ ảnh mầu sang ảnh grayscale.phân chia

,hiển thị nhiều ảnh lên màn hình.

TÓM TẮT ĐỒ ÁN ....................................................................................................... 6

PHÂN CÔNG NHIỆM VỤ…………………………………………………………….8

DANH SÁCH HÌNH VẼ ............................................................................................ 10

DANH SÁCH BẢNG BIỂU ....................................................................................... 12

Page 9: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

9

DANH SÁCH CÁC TỪ VIẾT TẮT ........................................................................... 14

CHƯƠNG 1: KHÁI QUÁT CHUNG ......................................................................... 17

1.1 Tổng quan về các ứng dụng của các bộ DSP ................................................. 17

1.1.1 Các ưu điểm của xử lý số tín hiệu ........................................................... 17

1.1.2 Sử dụng DSP để thực hiện: ..................................................................... 17

1.1.3 Các lĩnh vực ứng dụng DSP: ................................................................... 17

1.1.4 Đặc điểm của các bộ DSP: ...................................................................... 18

1.2. Quá trình thực hiện ........................................................................................ 19

1.3. Nội dung tìm hiểu về board TMS320DM642 ................................................ 20

1.3.1. Lắp đặt phần cứng ............................................................................... 20

1.3.2. Các thành phần phần cứng của board ................................................... 21

1.4. Code Composer Studio và ngôn ngữ lập trình ................................................ 30

1.4.1. Giới thiệu tổng quan về CCS ............................................................... 30

1.4.2. Ngôn ngữ lập trình trên CCS với DSP ................................................. 31

1.4.3. Download,cài đặt và làm việc với Code Composer Studio ................... 32

CHƯƠNG 2: QUY TRÌNH XỬ LÝ DỮ LIỆU VIDEO CỦA DSP BOARD

EVMDM642 .............................................................................................................. 47

2.1 . Sơ đồ đường đi của luồng dữ liệu video ....................................................... 47

2.2 . Video Capture Port ...................................................................................... 48

2.2.1. Cấu hình Video Capture FIFO ............................................................. 48

2.2.2. Chọn chế độ thu video ......................................................................... 50

2.2.3. Chế độ thu video chuẩn BT .656 .......................................................... 51

2.2.4. Các kênh thu BT.656 ........................................................................... 51

2.2.5. Mã tham chiếu thời gian BT.656 ......................................................... 52

2.2.6. Cửa sổ video BT.656 ........................................................................... 54

2.2.7. Lấy mẫu dữ liệu BT.656 ...................................................................... 56

2.2.8. Cách thức đóng gói trong bộ đệm của BT.656 ..................................... 56

2.2.9. Các chế độ thu videoY/C ..................................................................... 59

2.2.10. Chế độ bắt dữ liệu Raw ....................................................................... 63

2.3. Các cổng video hiển thị. ................................................................................ 67

2.3.1. Các chế độ lựa chọn hiển thị ................................................................ 67

Page 10: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

10

2.3.2. Chế độ hiển thị video dạng BT.656 ...................................................... 72

2.3.3. Chế độ hiển thị video Y/C ................................................................... 75

2.3.4. Chế độ hiển thị ảnh thô (RAW) ........................................................... 77

2.3.5. Tổ chức trường và khung hình trong hiển thị video ............................. 79

2.3.6. Hiển thị video dạng dữ liệu thô (raw data mode) ................................. 81

2.3.7. Hiển thị video dạng BT.656 hoặc chế độ Y/C ...................................... 83

CHƯƠNG 3: QUY TRÌNH THỰC HIỆN ĐỒ ÁN VÀ CÁC KẾT QUẢ THU

ĐƯỢC ........................................................................................................................ 86

3.1. Chương trình gốc........................................................................................... 86

3.2. Thu dữ liệu từ camera,hiển thị video lên màn hình ........................................ 87

3.3. Các phần đã thực hiện ................................................................................... 89

3.3.1. Chuyển video từ mầu sang ảnh grayscale và chia màn hình làm bốn

phần, mỗi phần hiển thị một ảnh ......................................................................... 89

3.3.2. Thực hiện thuật toán nổi đường biên.Tăng giảm độ sáng của ảnh ........ 94

3.3.3. Phương pháp lọc gauss, thuật toán viết dòng chữ chạy và đảo ảnh ..... 101

KẾT LUẬN .............................................................................................................. 112

DANH MỤC TÀI LIỆU THAM KHẢO .................................................................. 113

DANH SÁCH HÌNH VẼ

Chương 1

Hình 1. 1 Ví dụ về cài đặt phần cứng .......................................................................... 21

Hình 1. 2 Sơ đồ khối DM642 EVM ............................................................................ 22

Hình 1. 3 Giao diện bộ nhớ Flash ............................................................................... 24

Hình 1. 4 Sơ đồ board layout ...................................................................................... 27

Hình 1. 5 Bản đồ bộ nhớ KIT DM642 ........................................................................ 28

Hình 1. 6 Sơ đồ biên dịch của chương trình ................................................................ 31

Hình 1. 7 Bắt đầu cài đặt CCS 3.1 .............................................................................. 34

Hình 1. 8 Lựa chọn cài đặt CCS 3.1 ............................................................................ 34

Hình 1. 9 Lựa chọn dòng chip hỗ trợ .......................................................................... 35

Hình 1. 10 Hoàn thành cài đặt CCS3.1 ....................................................................... 35

Hình 1. 11 Biểu tượng của chương trình sau khi cài đặt .............................................. 36

Page 11: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

11

Hình 1. 12 Cài đặt cho CCS3.1 ................................................................................... 36

Hình 1. 13 Lựa chọn thiết lập ..................................................................................... 37

Hình 1. 14 Thiết lập Properties cho DM642 ............................................................... 37

Hình 1. 15 Cửa sổ làm việc của CCS 3.1 .................................................................... 38

Hình 1. 16 Lựa chọn mở project ................................................................................. 38

Hình 1. 17 Màn hình cài đặt CCS 5.3 ......................................................................... 39

Hình 1. 18 Lựa chọn thư mục làm việc ....................................................................... 39

Hình 1. 19 Tùy chọn License ...................................................................................... 40

Hình 1. 20 Màn hình làm việc CCS 5.3 ...................................................................... 40

Hình 1. 21 Tạo mới 1 project ...................................................................................... 41

Hình 1. 22 Tùy chọn cho project khởi tạo .................................................................. 42

Hình 1. 23 Thêm file cho project ................................................................................ 43

Hình 1. 24 Tùy chọn thêm file .................................................................................... 43

Hình 1. 25 Build 1 project .......................................................................................... 44

Hình 1. 26 Nạp file .out xuống KIT ............................................................................ 45

Hình 1. 27 Thiết lập file .out mặc định cho debug ...................................................... 46

Chương 2

Hình 2. 1 Sơ đồ luồng dữ liệu video ........................................................................... 47

Hình 2. 2 Cấu hình BT .656 Video Capture FIFO ....................................................... 48

Hình 2. 3 Cấu hình 8/10-Bit Raw Video Capture và TSI Video Capture FIFO ........... 49

Hình 2. 4 Cấu hình Y/C Video Capture FIFO ............................................................. 50

Hình 2. 5 Cấu hình 16/20-Bit Raw Video Capture FIFO ............................................. 50

Hình 2. 10 Các tham số video capture......................................................................... 55

Hình 2. 11 Tiêu chuẩn chung của chuẩn thu video ...................................................... 55

Hình 2. 12 Bit BT.656 FIFO Packing ......................................................................... 57

Hình 2. 13 10-Bit BT.656 FIFO Packing .................................................................... 58

Hình 2. 14 Đóng gói 10-Bit BT.656 Dense FIFO ........................................................ 59

Hình 2. 15 Đóng gói 10-Bit Y/C FIFO ....................................................................... 62

Hình 2. 16 Đóng gói chế độ 10-Bit Y/C FIFO dày đặc ............................................... 63

Hình 2. 17 Đóng gói dữ liệu raw 8-bit trong FIFO ...................................................... 65

Hình 2. 18 Đóng gói dữ liệu raw 10-bit trong FIFO .................................................... 66

Hình 2. 19 Đóng gói dữ liệu raw10-Bit dày trong FIFO .............................................. 66

Hình 2. 20 Đóng gói dữ liệu raw 16-bit ...................................................................... 66

Hình 2. 21 Đóng gói dữ liệu raw trong FIFO .............................................................. 67

Hình 2. 22 Quá trình quét 1 ảnh I................................................................................ 68

Hình 2. 23 Quá trình quét 1 ảnh P ............................................................................... 68

Hình 2. 24 Khung hình 1 ảnh I ................................................................................... 69

Hình 2. 25 Khung hình 1 ảnh P ................................................................................... 70

Hình 2. 26 Hoạt động bộ đếm FLCOUNT .................................................................. 71

Page 12: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

12

Hình 2. 27 Hoạt động của bộ đếm FLCOUNT ............................................................ 71

Hình 2. 28 Chuỗi đầu ra của định dạng BT656 ........................................................... 73

Hình 2. 29 Timing theo phương ngang mode BT656 (với kích thước khung là 525) ... 73

Hình 2. 30 Giải đóng gói ở chế độ BT656 8 bit .......................................................... 75

Hình 2. 31 Timing theo phương ngang chế độ Y/C ..................................................... 76

Hình 2. 32 Giải đóng gói bộ đệm FIFO chế độ Y/C 8- bit ........................................... 77

Hình 2. 33 Giải đóng gói bộ đệm dữ liệu ảnh thô ........................................................ 79

Chương 3

Hình 3. 1 Build chương trình trên CCS3.1 .................................................................. 86

Hình 3.2 Bố trí màn hình hiển thị ............................................................................... 92

Hình 3.3.2.1 Hiển thị các ảnh khác nhau trên màn hình……………………………..103 Hình 3.3.3.1 Bố trí màn hình hiển thị………………………………………………..108 Hình 3.3.3.2 Kích thước của một chữ……………………………………..…..109 Hình 3.3.3.3 Cách chuyển dữ liệu của một dòng của ký tự thành giá trị trung gian sử

dụng trong hàm gán giá trị cho

mảng………………………………………………..110

DANH SÁCH BẢNG BIỂU

Chương 1

Bảng 1. 1 Chức năng các chip select ........................................................................... 22

Bảng 1. 2 Các tần số có sẵn sử dụng xung clock đầu vào 25Mhz ................................ 23

Bảng 1. 3 Cấu hình các chân ECLKIN ....................................................................... 23

Bảng 1. 4 Địa chỉ và page ........................................................................................... 24

Bảng 1. 5 Dải địa chỉ do CE1 quy định ....................................................................... 25

Bảng 1. 6 Chức năng các thanh ghi đồng bộ bộ nhớ ................................................... 25

Bảng 1. 7 Cấu hình switch S1 ..................................................................................... 28

Bảng 1. 8 Cấu hình switch S2 ..................................................................................... 29

Bảng 1. 9 Nguồn cung cấp cho các thành phần của board ........................................... 29

Chương 2

Bảng 2. 1 Các chế độ lựa chọnVideo Capture ............................................................. 50

Bảng 2. 2 Mã tham chiếu thời gian video BT.656 ....................................................... 52

Bảng 2. 3 Các bít bảo vệ BT 656 ................................................................................ 53

Bảng 2. 4 Sự sửa lỗi bởi các bit bảo vệ ....................................................................... 53

Page 13: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

13

Bảng 2. 5 Các chế độ hoạt động thu video raw ........................................................... 64

Bảng 2. 6 Bảng các chế độ hiển thị ............................................................................. 67

Bảng 2. 7 Mã hóa quá trình hiển thị ............................................................................ 80

Page 14: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

14

DANH SÁCH CÁC TỪ VIẾT TẮT

TỪ VIẾT TẮT TỪ ĐẦY ĐỦ

DSP Digital Signal Processing

EMIF External Memory Interface

CCS Code Compose Studio

FPGA Field Programmable Gate Array

UART Universal Asinchonus Receiver Transmitter

SDRAM Synchronous Dynamic RAM

EVM Evaluation Module

DMA Direct Memory Access

McASP Multichannel Audio Serial Port

PCI Peripheral Component Interconnect

SPDIF Sony/Philips Digital Interface Format

HDTV High Definition Television

I/O Input/Output

COFF Common Object File Format

VDSTAT Video Display Status Register

VDCTL Video Display Control Register

VDFRMSZ Video Display Frame Size Register

RCA Radio Corporation of America

EEPROM Electrically Erasable Programmable Read-Only Memory

IDE Integrated Development Environment

Page 15: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

15

BSL Board Support Libraries

CSL Chip Support Libraries

FIFO First In First Out

CAPEN Capture Enable

SAV Start of Active Video

EAV End of Active Video

DEDSEC Double Error Detection , Single Error Correction

HCOUNT Horizontal Counter

VCOUNT Vertical Counter

YSRC Y Source

CbSRC CB Source

CrSRC Cr Source

YEVT Y Event

CbEVT Cb Event

CrEVT Cr Event

VCTHRLD Video Capture Threshold Register

VCxSTRT1 Video Capture Channel x Field 1 Start Register

VCXSTOP Video Capture Stop Register

VCYSTOP Video Capture Stop Register

VCACTL Video Capture Channel A Control Register

VDCTL Video Display Control Register

FLCOUNT Frame Line Counter

FPCOUNT Frame Pixel Counter

Page 16: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

16

ILCOUNT Image Line Counter

IPCOUNT Image Pixel Counter

VCCOUNT Video Clock Counter

VSYNC Vertical Synchronization

HSYNC Horizontal SYNchronization

DCNA Display Complete Not Acknowledged

VDFRMSZ Video Display Frame Size Register

VDHBLNK Video Display Horizontal Blanking Register

HBLNKSTART Horizontal Blanking Starts

VDVBLKS1 Video Display Field 1 Vertical Blanking Start Register

VDVBLKE1 Video Display Field 1 Vertical Blanking End Register

VDBLKE2 Video Display Field 2 Vertical Blanking End Register

VDVSYNE1 Video Display Field 1 Vertical Synchronization End Register

VDVSYNS2 Video Display Field 2 Vertical Synchronization Start

Register

VDVSYNE2 Video Display Field 2 Vertical Synchronization End Register

VDHSYNC Video Display Horizontal Synchronization Register

VDFLDT1 Video Display Field 1 Timing Register

VDFLDT2 Video Display Field 2 Timing Register

VDDISPEVT Video Display Display Event Register

VPIE Video Port Interrupt Enable Register

Page 17: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

17

CHƯƠNG 1: KHÁI QUÁT CHUNG

1.1 Tổng quan về các ứng dụng của các bộ DSP

1.1.1 Các ưu điểm của xử lý số tín hiệu

- Ít linh kiện hơn

- Hoạt động ổn định

- Ứng dụng rộng dãi

- Độ kháng nhiễu cao

- Ổn định với thay đổi nguồn nuôi

- Khả năng tự kiểm tra

- Không cần hiệu chỉnh

- Độ chính xác cao

- Dễ thay đổi

1.1.2 Sử dụng DSP để thực hiện:

Các bộ lọc số ( FIR,IIRF,thích nghi,…)

Các hàm xử lý số: các phép tính số học,các phép tính lượng giác, ma trận

Các hàm xử lý tín hiệu: nén tín hiệu,lấy trung bình,tính năng lượng, …

Các hàm phân tích phổ : DFT,IDFT, biến đổi sin,cosin …

Các hàm xử lý dữ liệu: mã hóa/giải mã

Các hàm điều chế: điều biên ( AM ) ,điều tần (FM ), điều pha (PM ) và kết

hợp giữa chúng.

1.1.3 Các lĩnh vực ứng dụng DSP:

Bưu chính viễn thông : Các bộ dồn kênh,tổng đài số , điện thoại có hình

ảnh,bảo mật thông tin , các trạm thu phát vệ tinh …

Chuyển phát dữ liệu : Modem , máy fax , mạng LAN …

Xử lý tín hiệu âm thanh: tổng hợp âm thanh, các bộ trộn và hòa âm

Máy tính: điều khiển servo đĩa quang, mạng máy tính ,đồ họa hai chiều và ba

chiều, bộ đồng xử lý toán học,máy tính laze , hệ thống đa nhiệm , âm thanh số …

Đo lường : lọc số , các bộ phân tích phổ, các máy phát tín hiệu.

Page 18: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

18

Xử lý ảnh: Nhận dạng ảnh , nhận dạng vân tay , nén ảnh , …

Âm thanh số: phát thanh số , thiết bị tự động trả lời, máy nhắn tin, nhạc cụ và

các bộ tổng hợp âm thanh, thiết bị phòng thu âm.

Các ứng dụng đặc biệt:dẫn đường,truyền tin mật , các đài rada và rada thủy

âm.

Trong công nghiệp : Điều khiển tốc đọ cao , phân tích dung động, kỹ thuật

robot, điều khiển thích nghi , nén nhiễu , nhận dạng ảnh . . .

Trong y tế : khuếch đại âm thanh, phân tích ảnh X-quang , chuẩn đoán siêu

âm

Truyền hình: truyền hình số , màn hình độ phân giải cao

Xử lý tiếng nói : tổng hợp tiếng nói, nhận dạng tiếng nói.

1.1.4 Đặc điểm của các bộ DSP:

Thực hiện các phép tính số học nhanh,linh hoạt , khả năng thực hiện phép

nhân và nhân tích lũy trong một chu kỳ lệnh

Có chế độ bảo vệ tràn khi tính tổng

Khả năng mở rộng dải rộng đối với phép tính cộng và phép nhân có tính lũy

với độ chính xác cao.

Khả năng nhận và thực hiện hai phép toán trong một chu kỳ,do vậy tăng tốc

độ tính toán

Hệ thống địa chỉ linh hoạt, đặc biệt có chế độ định địa chỉ theo modul và đảo

bit để tổ chức các bộ đệm vòng.

Tổ chức thực hiện vòng lặp và rẽ nhánh có hiệu quả.

Page 19: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

19

1.2. Quá trình thực hiện

Thứ tự các bước thực hiện đồ án

Công việc Mô tả

1 Chạy thử ,kiểm tra bo mạch, các

thiết bị và dây nối Kiểm tra xem kit có hoạt động

tốt hay không

2 Tìm hiểu về phần cứng của kít

TMS320DM642 GDK

Tìm hiểu về các thành phần phần cứng và các chức năng của

chúng

3

Tìm hiểu về Code Composer Studio,ngôn ngữ sử dụng của CCS trong ứng dụng với kit

DSP DM642

Tìm hiểu về cách thức sử dụng và cấu tạo project trong CCS

4 Download,cài đặt CCS v3.1 và

v5.3.00090 Tải,cài đặt và đăng ký licence

cho bản CCS

5 Biên dịch ví dụ có sẵn, nạp

xuống kit và chạy thử

Kết nối kit với máy tính,biên dịch chương trình bằng CCS và nạp chương trinh qua emulator BH-USB 560M

6 Tìm hiểu về cách thức tổ chức

của một project

Ý nghĩa của các file trong project cách thức thiết lập các

file quan trọng

Page 20: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

20

7 Phát triển chương trình

Dựa vào chương trình nhỏ có trước ( hiển thị 8 thanh mầu tĩnh trên màn hình ) phát triển thành

chương trình thu video

8 Mỗi người phát triển một

chương trình riêng

Từ chương trình thu video ở trên, mỗi người viết một chương trinh với những thuật toán khác nhau như trong phần nhiệm vụ

đã nêu

9 Tổng hợp chương trình Từ những chương trình riêng

biệt, tổng hợp lắp ghép để tạo ra một chương trình hoàn chỉnh

10 Kiểm tra chức năng chương

trình

Đánh giá kết quả thu được, kiểm tra sự thực hiện đúng đắn của

chương trình và sửa lỗi

11 Hoàn thành đồ án Chốt chương trình cuối và viết

báo cáo

1.3. Nội dung tìm hiểu về board TMS320DM642

1.3.1. Lắp đặt phần cứng

Để chạy ví dụ, phần cứng phải được lắp đặt chính xác

Đầu tiên DM642 EVM phải được kết nối với nguồn tương thích

USB560 emulator phải được kết nối tới JTAG pin để tải code mô phỏng xuống

board và điều khiển nó từ Code Composer Studio IDE

Nối nguồn tương thích cho emulator USB560-M

Kết nối đúng các thiết bị ngoại vi với board ( khác nhau đối với từng ứng dụng cụ

Page 21: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

21

thể )

Hình 1. 1 Ví dụ về cài đặt phần cứng

1.3.2. Các thành phần phần cứng của board

1.3.2.1. Sơ đồ khối của board

Page 22: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

22

Hình 1. 2 Sơ đồ khối DM642 EVM

1.3.2.2. Các thuộc tính chính của board

32 Mb SDRAM

4Mb bộ nhớ Falsh

2 bộ giải mã video

1 bộ mã hóa video

On-Screen Display (OSD ) FPGA implementation

Dual RS-232 UART

Hệ thống codec âm thanh AIC23

10/100 Ethernet PHY

32 Kb I2C EEPROM

8 Led khả trình.

Nhiều video input và output

Hỗ trợ tốc độ dữ liệu HDTV

1.3.2.3. Các thành phần của board

Giao diện EMIF

DM642 kết hợp 64 bits bên ngoài giao diện bộ nhớ,4 chip enable chia không

gian địa chỉ và cho phép đồng bộ và không đồng bộ ở 8,16,32 và 64 bits. DM642

EVM sử dụng các “chip select” là CE0, CE1, và CE3. CE0 được định tuyến tới

SDRAM có độ rộng bus là 64 bits. CE1 được sử dụng cho 8 bit flash,UART và

FPGA function. CE3 được đặt cho chức năng đồng bộ. Cả CE2 và CE3 được định

tuyến tới giao diện kết nối card con.

Bảng 1. 1 Chức năng các chip select

Chip Select Function

CE0 SDRAM bus

CE1 8 bit Flash,UART ,FPGA functions

CE2 Giao diện card con

CE3 FPGA Sync Registers

Giao diện card con

Page 23: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

23

Giao diện bộ nhớ SDRAM

DM642 EVM giao tiếp với SDRAM qua bus 64 bits trong không gian CE0.

Không gian SDRAM (32 megabyte) được sử dụng để chứa chương trình,dữ liệu,và

video. Bus sử dụng một vòng khóa pha(PLL)bên ngoàiđể tạo tần số 133 Mhz cho

SDRAM hoạt động với hiệu năng tối ưu. Refresh cho SDRAM được xử lý tự động

bởi DM642.

PLL được sử dụng cho EMIF là một ICS512. Clock đầu vào PLL này là 25

Mhz. Bảng sau biểu diễn tần số sẵn có sử dụng xung clock đầu vào 25 Mhz:rc

Bảng 1. 2 Các tần số có sẵn sử dụng xung clock đầu vào 25Mhz

S1 Input S2 Input Multiplier Output Frequency

0 0 4x 100 Mhz

0 Open 5.33x 133,25 Mhz

0 1 5x 125 Mhz

Open 0 2.5x 62.5 Mhz

Open Open 2x 50Mhz

Open 1 3.33X 83.25 Mhz

1 0 6x 150 Mhz

1 Open 3x &5 Mhz

1 1 8x 200 Mhz

Điện trở đóng R119,R121,R122 và R123 dùng để đặt đầu vào cho các đầu

vào S0,S1 trên PLL.

DM642 có thể được cấu hình như một nguồn xung EMIF. Chân ECLKIN là

mặc định trên EVM. Tuy vậy có thể điều khiển clock EMIF như một hàm chia của

xung CPU. Sự cấu hình được hoàn thành ở reset qua chân ECLKINSELO và

ECLKINSEL1, cái mà được chia sẻ với chân địa chỉ EMIF là EA19, và EA20.

Bảng sau biểu diễn cấu hình này:

Bảng 1. 3 Cấu hình các chân ECLKIN

ECLKINSEL0 ECLKINSEL1 Mode

0 0 ECLKIN*

0 1 CPUCLK/4

Page 24: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

24

1 0 CPUCLK/6

1 1 ECLKIN

DM642 có bộ nhớ Flash 4MB.Giao diện bộ nhớ Flash được ánh xạ vào vị trí

thấp hơn của không gian CE1. Bộ nhớ Flash được sử dụng cơ bản cho boot loading

và chứa thông tin cấu hình của FPGA . Không gian CE1 được cấu hình như 8 bits

trên DM642 EVM và 8 bitsbộ nhớ Flash.Không gian địa chỉ bộ nhớ sẵn có trong

không gian CE1 thì nhỏ hơn kích cỡ của bộ nhớ Flash nên FPGA được sử dụng để

tạo 3 đường địa chỉ mở rộng.Những đường địa chỉ mở rộng này có thể đánh địa chỉ

qua FPGA Flash Base Register và mặc định “0b000” là reset. Địa chỉ và page được

thể hiện như hình sau:

Bảng 1. 4 Địa chỉ và page

Dải dịa chỉ Page number Contents

0x8000 0000 0x8007 FFFF

Page 0 000B

Page 1 001B

Page 2 010B

Page 3 011B

Page 4 100B

Page 5 101B

Page 6 110B

Page 7 111B

Flash Memory Interface

Hình 1. 3 Giao diện bộ nhớ Flash

Giao diện UART

Dual UART ( TLC16C752) là bộ nhớ đã map vào nửa trên của không gian

Flash

A0 – A18

A19 – A21

Page 25: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

25

CE1 của DM642 dọc theo thanh ghi đồng bộ FPGA. Mỗi UART,A và B chiếm 8 vị

trí . CE1 được cấu hình cho 8 bit truy cập trên DM642 EVM, dải địa chỉ được show

trong bảng sau:

Bảng 1. 5 Dải địa chỉ do CE1 quy định

UART Addresss

A 0x9008 0000 – 0x9008 0007

B 0x9008 0008 – 0x9008 000F

UART giao tiếp với đường điều khiển RS-232. UART A được xuất ra ngoài tới

connector DB-9,J11, và UART B được định tuyến tới hàng đôi bên trên của board.

Giao diện đồng bộ bộ nhớ FPGA

FPGA có 10 thanh ghi đồng bộ bộ nhớ,cái thường có vị trí cao nhất của

không gian CE1. Những biến thanh ghi thực hiện chức năng của chúng được liệt kê

như ở dưới. Nhiều thông tin thì có sẵn trên những thanh ghi này trong hướng dẫn sử

dụng của TMS320DM642 EVM OSD FPGA.

Bảng 1. 6 Chức năng các thanh ghi đồng bộ bộ nhớ

Address Function R/W Bits

0x9008 0010 Thanh ghi điều khiển OSD R/W 6

0x9008 0011 DMA Threshold LSB Register

R/W 8

0x9008 0012 DMA Threshold MSB Register

R/W 8

0x9008 0013 Interrupt Status Register R 7

0x9008 0014 Interrupt Enable Register R/W 5

0x9008 0015 GPIO Direction Register R/W 8 0x9008 0016 GPIO Status Register R/W 8

0x9008 0017 LED Register R/W 8

0x9008 0018 Flash Page Register R/W 3

0x9008 0019 Reserved

0x9008 001A Reserved 0x9008 001B Reserved

0x9008 001C Reserved

Page 26: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

26

0x9008 001D Reserved 0x9008 001E Reserved 0x9008 001F FPGA Version Register R 8

EMIF Buffer/Decoder Control

Bộ đệm EMIF và hàm decode được thực hiện với thiết bị mảng logic GAL

16LV8D generic ,U15. Thiết bị thực hiện giải mã cơ bản cho flash và UART và

điều khiển bộ đệm cho CE1,CE2 và CE3.

Video Port/McASP Interfaces

DM642 có 3 cổng video on chip,những cổng này có thể chia ra để cho phép

tùy chọn hàm như McASP hoặc SPDIF trên cổng 0 và cổng 1. DM642 EVM sử

dụng tất cả ba cổng video này. Cổng video 0 và cổng video 1 được sử dụng cho

capture port và cổng video 2 được sử dụng như một cổng hiển thị. Trong một cấu

hinh EVM chuẩn,cổng video 0 và cổng video 1 được thiết lập cho việc chia ra để

cho phép chức năng McASP được thực hiện và giao tiếp với một TLV320AIC23

stereo codec hoặc để giao tiếp với đầu ra SPDIF J9.

Video Decoder Ports

Trên DM642 EVM chia ra các cổng video 0 và cổng video 1 được sử dụng

như đầu vào capture: cổng capture 1 và cổng capture 2. Những cổng này giaotiếp

với bộ giải mã video Philips SAA7115H. Cổng video được chạy qua switch CBT để

chúng có thể lựa chọn vô hiệu hóa sử dụng cable con. Nửa bên kia của cổng được

sử dụng trên giao diện board McASP (cổng audio nối tiếp đa kênh ). Cổng capture 1

giao tiếp với nguồn video qua 1 jack loại RCA , J15 và 4 chân S-Video mini-din

connector J16. Đầu vào có thể kết hợp với nguồn video như một DVD player hay

video camera. SAA7115 khả trình qua bus I2C của DM642 và có thể giao tiếp với

phần lớn các chuẩn video như NTSC,PAL và SECAM bởi những chương trình

tương thích với những thanh ghi nội trong bộ giải mã.

Page 27: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

27

Hình 1. 4 Sơ đồ board layout

Các thành phần khác như:

a. Cổng mã hóa video

b. FPGA Video Functions

c. Giao diện AIC23

d. Audio PLL/VCXO Circuit/Bộ tạo xung PLL1708

e. Giao diện PCI

f. Giao diện PCI EEPROM

g. Giao diện Ethernet

h. Giao diện HPI

i. Giao diện I2C

j. Giao diện SPDIF

k. Daughter Card Interface

l. FPGA

m. DM642 Core CPU Clock

n. Bộ thiết lập HDTV

1.3.2.4. Memory map

Họ C6000 ( C64xx ) của DSP có không gian địa chỉ lớn. Code chương trình

và dữ liệu có thể được đặt bất kỳ nơi đâu trong một không gian địa chỉ thống

nhất.Địa chỉ luôn luôn là 32 bits.

Memory map biểu diễn không gian địa chỉ của vi xử lý DM642 ở cột bên trái

với những chi tiết rõ ràng sử dụng mỗi vùng như thế nào ở bên phải. Mặc định ,bộ

Page 28: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

28

nhớ bên trong được đặt ở vị trí bắt đầu của không gian địa chỉ.

EMIF ( External Memory Interface ) có 4 vùng riêng biệt có thể đánh địa chỉ

gọi là không gian Chip Enable ( CE0 – CE3 ) . SDRAM chiếm giữ CE0 trong khi

Flash,UART và FPGA được map tới CE1. Cable con sử dụng CE2 và CE3. CE3

được cấu hình cho hoạt động đồng bộ cho chức năng hiển thị màn hình và các thanh

ghi đồng bộ khác thực hiện trong external FPGA.

Hình 1. 5 Bản đồ bộ nhớ KIT DM642

1.3.2.5. Thiết lập switch cấu hình

EVM board có hai vị trí switch cấu hình cho phép người sử dụng điều khiển

các trạng thái hoạt động của DSP khi mà nó vừa mới thoát khỏi trạng thái reset.

Switch cấu hình được gắn nhãn là S1 và S2 trên EVM board.

Switch 1 cấu hình “boot mode” sẽ được sử dụng khi DSP bắt đầu thực hiện .

Mặc định,switch được cấu hình để boot EMIF ( out of 8 bit flash ) trong mode little

endian. Bảng sau thể hiện thiết lập cho switch:

Bảng 1. 7 Cấu hình switch S1

S1-2 S1-1 Mô tả cấu hình

Page 29: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

29

off off No boot

off on HPI/PCI

on off Reserved

on* on* EMIF boot from 8-bit

Flash

Việc cấu hình switch 2 điều khiển endianess của DSP và PCI ROM enable.

Bảng sau thể hiện những cài đặt cho switch 2

Bảng 1. 8 Cấu hình switch S2

S2-1 Mô tả cấu hình

off PCI EEPROM Disabled

on* PCI EEPROM Enabled

S2-2 Mô tả cấu hình

off* Little Endian Mode

on Big Endian Mode

1.3.2.6. Nguồn cung cấp cho board

EVM hoạt động ở điện áp đơn + 5V nguồn cấp từ bên ngoài kết nối với đầu

vào chính ( J5 ) hoặc từ khe PCI.Bên trong, đầu vào +5V được kết nối vào trong

+1,4V và +3.3V sử dụng cuộn dây điều chỉnh điện áp của Texas Instrument. Nguồn

cung +1,4V được sử dụng cho “DSP core” trong khi nguồn cung +3.3V được sử

dụng cho “DSP I/O buffer” và tất cả các chíp khác trên board. Dây nguồn là loại 2,5

mm barel-type plug.

Bảng 1. 9 Nguồn cung cấp cho các thành phần của board

Test Point Voltage Thiết bị sử dụng

TP4 +1.4V DSP Core

Page 30: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

30

TP8 +3.3V DSP I/O and logic

TP13 +1,8V FPGA

TP15 +3.3V Bộ mã hóa video

TP16 +3.3V Bộ giải mã video

1.4. Code Composer Studio và ngôn ngữ lập trình

1.4.1. Giới thiệu tổng quan về CCS

CCS cung cấp một IDE để kết hợp chặt chẽ những công cụ phần mềm CCS

bao gồm những công cụ để sinh code như một trình biên dịch C, một assembler và

một linker. Nó có khả năng đồ họa và hỗ trợ gỡ lỗi thời gian thực.

C compiler biên dịch một chương trình nguồn C với định dạng *.c thành một

file assembly với định dạng *.asm . Trình biên dịch assembler lại assembles một

file *.asm thành file ngôn ngữ máy ( *.obj ) .

Linker tổng hợp các file đối tượng ngôn ngữ máy và đối tượng thư viện dùng

như đầu vào để tạo ra các file thực thi *.out . File thực thi này biểu diễn một định

dạng file đối tượng chung được kết nối ( COFF: Common Object File Format ) ,

phổ biến trong hệ thống Unix-based .

Các file trong một project CCS:

*.out có thể được load và chạy trực tiếp xuống board DSP.

*.pjt là file project , tạo và xây dựng, đặt tên một project.

*.c là chương trình mã nguồn C.

*.asm là chương trình mã nguồn assembly được tạo bởi người dùng thông

qua C compiler hoặc linear optimizer.

*.sa là linear assembly source program.

*.h là header support file.

*.lib là file thư viện.

*.cmd : file command linker, có nhiệm vụ map phiên làm việc tới bộ nhớ.

*.obj là file đối tượng được tạo bởi assembler.

*.out là file thực thi,được tạo bởi linker để load và chạy chương trình trên

TMS320DM642 board .

*.cdb là file cấu hình khi sử dụng DSP/BIOS.

Page 31: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

31

Hình 1. 6 Sơ đồ biên dịch của chương trình

1.4.2. Ngôn ngữ lập trình trên CCS với DSP

Các ứng dụng DSP thường có yêu cầu hiệu năng cao. Do vậy các lập trình

viên thường sử dụng ngôn ngữ assembly. Tuy rất nó hiệu quả nhưng thời gian đưa

ra sản phẩm lâu dẫn đến việc sử dụng C trong lập trình cho DSP trở nên phù hợp

hơn. Có một số lý do cơ bản để sử dụng C thay cho assembly:

+ C dễ phát triển hơn

+C dễ duy trì hơn

+ C tương đối dễ di chuyển

Ngôn ngữ C cho phép bạn xây dựng một chương trình di động và nhanh

chóng có thể kiểm tra khả năng thực thi với nó. Các nhà sản xuất có thể thấy được

kết quả sớm trong chu kỳ phát triển sản phẩm. Tuy nhiên ngôn ngữ C vẫn có vấn đề

riêng của nó, bắt nguồn từ khoảng cách giữa ngôn ngữ lập trình , thiết kế và phần

cứng. ANSI C không được thiết kế như một ngôn ngữ xử lý tín hiệu. Nó nhấn mạnh

vào thiết kế hệ thống chứ không phải là toán học. Do vậy ANSI C không phải là

ngôn ngữ tự nhiên nhất để thực hiện thuật toán DSP.

Các bộ vi xử lý DSP có nhiều yếu tố để tăng sự tương thích, chẳng hạn như

chế độ tối ưu địa chỉ. Do vậy trong thiết kế vi xử lý, DSP thường sử dụng assembly

trong các đoạn mã yêu cầu hiệu năng quan trọng.

Với tất cả các lý do trên , hiệu suất của mã biên dịch có thể thấp hơn so với

assembly.

Ngôn ngữ lập trình C cung cấp một mô hình tính toán thống nhất. Một lập

trình viên có thể giả định chương trình của mình sẽ có kết quả tương tự trên nền

Page 32: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

32

tảng nào. Tuy mô hình thực thi trên các nền tảng có khác nhau.

C cũng giả định một bộ nhớ nền tảng lớn. Trên thực tế, hiệu năng truy cập bộ

nhớ trong một số trường hợp có thể là nhân tố chính ảnh hưởng tới hiệu suất ứng

dụng.

Các tính năng phần cứng là rất cấn thiết để xử lý hiệu quả nhưng không được

hỗ trợ trong C. Do vậy để xây dựng được các chương trình có hiệu năng cao ta

không thể bỏ qua các nền tảng phần cứng. Các chương trình sẽ được tăng tốc khi có

chương trình chuyên dụng cho phần cứng cụ thể. Tuy nhiên điều này sẽ làm cho

chương trình lớn hơn, phức tạp hơn và ít di động hơn.

1.4.3. Download,cài đặt và làm việc với Code Composer Studio

1.4.3.1. Download Code Composer Studio 5.3 và CCS 3.1

B1. Vào website http://processors.wiki.ti.com/index.php/Download_CCS

B2. Download bản 5.3 off-line Installers

B3. Thực hiện cài đặt trên máy

B4. Đăng ký một tài khoản trên trang ti.com và kích hoạt tài khoản

B5. Download file active và sử dụng file đó để active CCS

Vì hiện nay các trang web của TI không còn hỗ trợ trực tiếp cho việc

download CCS 3.1. vì vậy phải gửi mail cho họ để xin lại đường link down. Khi

down được ta chỉ việc click vào file launch.exe và cài đặt bằng việc click “next”, và

cuối cùng là “finish”

Lý do phải cài 2 phiên bản khác nhau của CCS này là vì CCS 5.3 thì không

tương thích với việc debug code cho TMS320DM642 nhưng phần mềm này có thể

nạp được file out xuống kit EVMDM642. Trong khi đó CCS 3.1 lai chỉ làm việc

được trong môi trường Win XP, và có thể debug code tạo file out. Nhưng bản CCS

3.1 lại không nạp được code xuống EVMDM642.

Ở đây có một chú ý là chúng em sử dụng máy ảo để chạy Win XP và cài đặt

CCS 3.1 trên đó. Còn trên Win 7 32 bít chúng em cài CCS 5.3 ( không dùng Win 7

64 bit bởi vì chạy trên Win 7 64 bít gặp khá nhiều trục trặc do không tương thích

môi trường ). Thêm nữa chún em chưa sử dụng máy thật XP để chạy CCS 3.1 nên

cũng chưa giám khẳng định là trên Win XP chạy tại máy thật thì CCS có thể debug,

compile và run nạp code xuống kit hay không.

Trong đồ án này chúng em sử dụng gói example đi kèm board mà TI cung

cấp download tại địa chỉ: http://www.mediafire.com/?os2bez5d2lje48h . Khi

Page 33: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

33

download về sẽ được một file có tên là evmdm642.zip , Trong file này có những file

nhỏ: demo chứa những file out,có thể lấy những file này chạy luôn được chương

trình. File docs là file chứa những tài liệu tham khảo cho việc tìm hiểu về cách sử

dụng board DSP evmdm642 . file examples chứa những ví dụ được TI viết sẵn,

những ví dụ này miêu tả những chức năng cơ bản của board. File gel chứa file

evmdm642.gel , khi cấu hình thiết bị đích chúng ta cần phải add file này vào.

Hình 1. 7 Thư mục chứa file gel

1.4.3.2. Bắt đầu làm việc với CCS

Với CCS 3.1

Khi ta download về xuất hiện thư mục CCS 3.1 và ta click vào file

launch.exe và bắt đầu tiến hành setup

Page 34: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

34

Hình 1. 8 Bắt đầu cài đặt CCS 3.1

Sau đó ta sẽ nhấn chọn “Install Product”:

Hình 1. 9 Lựa chọn cài đặt CCS 3.1

Tiếp tục ta nhấp chọn “ C6000 Code Composer Studio v3.1”

Page 35: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

35

Hình 1. 10 Lựa chọn dòng chip hỗ trợ

Sau đó CCS 3.1 sẽ hiện ra màn hình cài đặt thông thường và nhiệm vụ của ta

bây giờ là click “next” và “finish” và hoàn thành cài đặt.

Hình 1. 11 Hoàn thành cài đặt CCS3.1

Sau khi cài đặt xong Desktop sẽ xuất hiện biểu tượng của bộ phần mềm CCS

Page 36: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

36

cho ta làm việc:

Hình 1. 12 Biểu tượng của chương trình sau khi cài đặt

Để làm việc với CCS 3.1, đầu tiên ta phải chạy file “Setup CCStudio 3.1” để

chọn mô hình chíp cho CCStudio 3.1:

Hình 1. 13 Cài đặt cho CCS3.1

Sau đó ta phải set “properties” cho con DM642 của ta để nó phù hợp với

TMS320DM642 trên board của ta.

Page 37: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

37

Hình 1. 14 Lựa chọn thiết lập

Khi hộp thoại properties của DM642 hiện ra ta sẽ thiết lập lại các thông số

của nó như sau.

Hình 1. 15 Thiết lập Properties cho DM642

Ở đây có hai option cần chú ý là Gel file và CPU Clock. Về Gel file thì ta

chọn đường dẫn tới file gel của chúng ta. Và CPU clock ta thay đổi từ 600 lên 720

MHz. Sau khi chọn xong ta click “Save & Quit” .Khi đó cửa sổ làm việc với code

của CCS 3.1 sẽ hiện lên.

Page 38: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

38

Hình 1. 16 Cửa sổ làm việc của CCS 3.1

Vì trong đồ án của chúng em sẽ sử dụng những ví dụ có sẵn trong gói phần

mềm đi kèm theo board EVMDM642,do đĩa đi kèm theo board đã bị bị mất nên

chúng em sẽ download gói evmdm642.zip này trên internet. Để mở một project có

sẵn chúng ta sẽ click chuột phải vào “project” và chọn “ open project” rồi tìm đến

thư mục chứa file “.pjt” để add vào của sổ làm việc của ta.

Hình 1. 17 Lựa chọn mở project

Về compile và build cơ bản cũng giống như những trình biên dịch của những

Page 39: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

39

ngôn ngữ khác. Nên nhóm sẽ không nêu thêm chi tiết về các làm việc với nó nữa.

Về làm việc với CCS v5.3

Sau khi click đúp vào biểu tượng trên desktop màn hình khởi động của CCS

sẽ hiện lên như sau:

Hình 1. 18 Màn hình cài đặt CCS 5.3

Ta sẽ thấy suất hiện 1 block nhắc việc chọn đường dẫn cho workspace,có thể

chọn workspace như mặc định hoặc tùy chọn vào foder mà mình muốn chứa.

Hình 1. 19 Lựa chọn thư mục làm việc

Ở đây lần đầu tiên khi sử dụng CCS ta sẽ được nhắc để “active version” cho

CCS ta có thể chọn FREE licence,hoặc vào web của TI để active.

Page 40: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

40

Hình 1. 20 Tùy chọn License

CCS tích hợp môi trường phát triển IDE sẽ được load và ta sẽ thấy màn hình

welcome như sau:

Hình 1. 21 Màn hình làm việc CCS 5.3

Để tạo một project mới:

Khi muốn tạo một project mới,ở của sổ giao diện chính ta chọn File sau đó

chọn New và New CCS project. Lúc này một dialog box sẽ suất hiện và có các lựa

Page 41: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

41

chọn ban đầu cho ta:

a. Trong “project name” ta đánh tên cho project, chú ý là tên chúng ta

đặt cho project nên mang tính gợi nhớ, không có khoảng trắng, không

có số và gạch ngang ở đầu tên.

b. Trong hộp “ Family” box ta chọn C6000.

c. Trong “ Variant “ box ta chọn loại của vi xử lý. Nếu không có ta có

thể để mặc định.

d. Dưới “ Project templates and examples” ta chọn empty project.

Hình 1. 22 Tạo mới 1 project

Trong “advanced settings” .Tại “ linker command file “ tìm tới thư mục chứa

và chọn DM642.cmd file . Những option khác ta chọn để mặc định.

Page 42: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

42

Hình 1. 23 Tùy chọn cho project khởi tạo

CCS sẽ tạo một thư mục trong workspace để thêm file vào trong đó. Thông tin

của project được chứa trong một số các file XML,như .ccsproject. Chúng ta không

nên sửa đổi các file này. Đề thêm file vào project, ta click chuột phải vào Project

Explorer window và chọn “ Add files…”

Page 43: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

43

Hình 1. 24 Thêm file cho project

Khi add file,chúng ta sẽ chọn đường dẫn tới nơi chứa file cần add, sau đó click

Open, Copy files và click OK.

Hình 1. 25 Tùy chọn thêm file

Chú ý khi ta muốn chọn những file của project có sẵn để chạy lại,ta chọn tất cả

các file trừ file .cmd có trong project đó,vì file cmd đã được ta tạo ra khi ta tạo

project ở bước “advanced option”.

Page 44: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

44

Building the Project:

Để build project ,chọn project từ “main menu” và chon “build Project”. CCS bây

giờ sẽ biên dịch và link project tới thủ tục thực hiện. Nếu tất cả diễn ra tốt,cửa sổ

console sẽ show “Build Finish ” .

Hình 1. 26 Build 1 project

Load project vào Target Hardware

Khi project đã được build,chúng ta cần load project xuống target hardware, và

sau đó chạy nó. Giao diện phần cứng được điều khiển bởi file cấu hình target,cái mà

ta sẽ add project xuống.Đầu tiên ta sẽ click chuột phải vào Add files sau đó điều

chỉnh đường dẫn tới nơi chứa các file .ccxml và .gel sau đó click open, phải chắc

chắn rằng chúng ta đã chọn Copy files và click OK.

Trong Project Explorer window,double-click vào file .ccxml để mở nó. Chọn

Advance tab sau đó click vào lựa chon C6000. Dưới Cpu Properties ( ở cột bên phải

) phải chắc chắn rằng chúng ta đã chọn đúng file .Gel.

Page 45: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

45

Hình 1. 27 Nạp file .out xuống KIT

Để chạy chương trình trên Target hardware

Bây giờ project được load xuống target hardware . Ta chọn Run từ menu

chính và click Resume . Giả sử rằng bạn đã kết nối đường vào và đường ra cho

speakers/ headphones vào board, bạn sẽ nghe thấy âm thanh phát ra từ phần cứng.

Ta có thể suspend và resume chương trình nếu cần.Để load một file out khác xuống

Kit ta vào tab Run chọn “ Debug Configutions”

Chú ý:bước này rất quan trọng vì thực tế trong khi thực hiện project,trình biên dịch

CCS v5.3 không phù hợp với biên dịch code cho board evmdm642. Chính vì vậy

nên chỉ dùng CCS v5.3 để debug và chạy chương trình ( chay file .out ) . Trong quá

trình debug có thể trình biên dịch vẫn báo lỗi. do code và những thư viện hỗ trợ

board , hỗ trợ chip ( BSL,CSL ) . không tương thích với phiên bản CCS này. Nhưng

chúng ta vẫn có thể “ Run ”, nạp code xuống board bình thường. Trong quá trình

nạp code xuống board phải kiểm tra và đảm bảo cả hai đèn của JTag emulator

blackhawk usb-560m đều sáng xanh. Nếu đèn usb bị đỏ thì chúng ta phải kiểm tra

lại kết nối , và reset lại nguồn cho nó bằng cách rút chân cắm nguồn ra rồi cắm lại .

Trong quá trình chạy chương trình chúng ta cũng nên thường xuyên reset board để

board có thể hoạt động đúng.

Page 46: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

46

Hình 1. 28 Thiết lập file .out mặc định cho debug

Sau đó để chọn file out ta nhấp chọn “ File System” và tìm đến thư mục chứa

file out mà ta cần chạy.

Page 47: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

47

CHƯƠNG 2: QUY TRÌNH XỬ LÝ DỮ LIỆU VIDEO CỦA

DSP BOARD EVMDM642

2.1 . Sơ đồ đường đi của luồng dữ liệu video

Hình 2. 1 Sơ đồ luồng dữ liệu video

Hình trên thể hiện quá trình dữ liệu đi từ khối thu ảnh , qua board DSP để thực

hiện quá trình xử lý rồi đến khối hiển thị. Ta sẽ đi vào chi tiết của việc dữ liệu đi

qua các khối và quá trình chi tiết của việc các khối đối xử với dữ liệu sau. Về cơ

bản, Quá trình xử lý video data sẽ được chia ra làm hai phần. Phần thứ nhất là phần

capture và phần thứ hai là phần display.Ban đầu camera sẽ thu ảnh,và dòng dữ liệu

sẽ được giải mã ở bộ video decoder sau đó dòng dữ liệu được đẩy sang bộ đệm

FIFO của video port ,bộDMA controllercó nhiệm vụ thực hiện truy cập bộ nhớ

trực tiếp,giảm thiểu tính toán,xử lý cho CPU và xác định ngưỡng để lấy dữ liệu từ

bộ đệm của video port chuyển sang bộ nhớ của DSP. Phục vụ cho quá trình xử lý

dữ liệu mà ta thực hiện trên DSP. Dữ liệu sau khi qua quá trình xử lý trong DSP

được phục vụ cho phần hiển thị. Dòng dữ liệu từ bộ đệm frame đặt trong bộ nhớ sẽ

được chuyển tới video port FIFO bởi bộ truyền EDMA. Video port sẽ đưa dữ liệu

quay lại bộ mã hóa video bên ngoài để hiển thị. Ngắt EDMA được thực hiện lập tức

ngay sau khi toàn bộ frame được truyền từ bộ nhớ tới video port. Dưới đây chúng ta

sẽ bắt đầu tìm hiểu về quá trình capture và display được đảm nhiệm bởi các thành

phần của board.

Page 48: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

48

2.2 . Video Capture Port

2.2.1. Cấu hình Video Capture FIFO

Trong suốt quá trình video capture,video port FIFO có một trong bốn cấu

hình phụ thuộc vào mode capture. Cho mode BT.656 ,FIFO được chia thành hai

kênh A và B. như biểu diễn ở hình 2.1 mỗi FIFO được cấp xung độc lập với nhau,

tương ứng với FIFO mà đầu vào là một nửa số bus của video port :VDIN[9-0] và

FIFO mà đầu vào là một nửa số bus còn lại của video port : VDIN[19-10]. Mỗi bộ

đệm FIFO của kênh được chia nhỏ thêm thành các phần bộ đệm Y,Cb,Cr với các

con trỏ đọc và thanh ghi ghi riêng biệt (YSRCx,CBSRCx,and CRSRCx).

Hình 2. 2 Cấu hình BT .656 Video Capture FIFO

Đối với raw video 8/10-bit, FIFO được chia thành hai kênh A và B, như

trong Hình 2.2. Mỗi FIFO được cấp xung độc lập với FIFO kênh A nhận dữ liệu từ

các VDIN [9-0] là một nửa số bus của video port và FIFO kênh B nhận dữ liệu một

nửa số bus còn lại từ VDIN [19-10] . FIFO mỗi kênh có một con trỏ ghi và thanh

ghi đọc riêng biệt (YSRCx). Cấu hình FIFO là giống hệt nhau cho TSI capture,

nhưng kênh B bị vô hiệu hóa.

Page 49: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

49

Hình 2. 3 Cấu hình 8/10-Bit Raw Video Capture và TSI Video Capture FIFO

Cho Y / C capture video, FIFO được cấu hình như một kênh duy nhất chia

nhỏ thành các bộ đệm nhỏ hơn Y, CB, và Cr với con trỏ ghi và thanh ghi đọc riêng

biệt (YSRCA, CBSRCA, và CRSRCA). Hình 2.3 cho thấy dữ liệu Y nhận được trên

VDIN [9-0] và dữ liệu Cb / Cr nhận được trên VDIN [19-10] được phân kênh vào

bộ đệm Cb và Cr.

Page 50: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

50

Hình 2. 4 Cấu hình Y/C Video Capture FIFO

Đối với raw video 16/20-bit, FIFO được cấu hình như một bộ đệm duy nhất,

như thể hiện trong hình 2.4. FIFO nhận dữ liệu 16/20-bit từ bus VDIN [19-0] các

FIFO có một con trỏ ghi và thanh ghi đọc riêng biệt (YSRCA).

Hình 2. 5 Cấu hình 16/20-Bit Raw Video Capture FIFO

2.2.2. Chọn chế độ thu video

Các mô-đun video capture hoạt động ở một trong chín chế độ được liệt kê

trong Bảng 2-5 . Giao diện luồng dữ liệu (TSI) đượclựa chọn thực hiện bằng cách

sử dụng bit TSI trong các thanh ghi điều khiển cổng video (VPCTL). Các bit

CMODE đang trongkênh x (VCxCTL). Y / C và raw video 16/20-bit capture mode

chỉ có thể được lựa chọn cho kênh A và chỉ khi các bit DCDIS trong VPCTL được

xóa về 0.

Khi hoạt động như một kênh thu raw video, không có lựa chọn dữ liệu hoặc

phiên dịch dữ liệu được thực hiện. Chế độ thu raw video 16/20-bit được thiết kế

đểchấp nhận dữ liệu từ bộ chuyển đổi A/D với độ phân giải cao hơn so với tám bit

(được sử dụng,Ví dụ, trong hình ảnh y tế).

Bảng 2. 1 Các chế độ lựa chọnVideo Capture

Page 51: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

51

2.2.3. Chế độ thu video chuẩn BT .656

Chế độ capture BT.656, capture 8-bit hoặc 10-bit 4:2:2 luma và chroma dữ

liệu dồn kênh thành một dòng dữ liệu duy nhất. Dữ liệu video được chuyển tải theo

thứ tựCb, Y, Cr, Y, CB, Y, Cr,… nơi chuỗi Cb, Y, Cr đề cập đến để kết hợp với

mẫu luma và chroma và các giá trị Y sau đây tương ứng với các mẫu sáng tới

(luminance ). Các luồng dữ liệu được demultiplexed và mỗi thành phần được đóng

gói vào các FIFO riêng biệt để chuyển vào Y, CB, và Cr bộ đệm trong bộ nhớ DSP.

(Điều này thường được gọi là định dạng phẳng.) Việc đóng gói và thứ tự của các

mẫu được xác định bởi kích thước mẫu (8-bit hoặc 10-bit) và việc chọn endianess

của DSP.Tiêu chuẩn ITU-BT.656 cung cấp cho cả mẫu thành phần 8-bit hoặc 10-

bit. Khi mẫu 10-bit được sử dụng, 2 bit ít quan trọng nhất được coi là giá trị phân

đoạn. Do đó cho hoạt động 8-bit, dữ liệu đầu vào liên kết với bit quan trọng nhất là

bít (9-2) của đầu vào và hai bit ít quan trọng nhất được bỏ qua.Trongchế độ capture

video BT.656, byte dữ liệu trong đó 8 bit quan trọng nhấttất cả đều được thiết lập

lên 1 (FF.0h, FF.4h, FF.8h, FF.Ch) hoặc được tất cả các thiết lập là 0

(00.0h,00.4h,00.8h, 00.Ch) được dành riêng cho mục đích nhận dạng dữ liệu và do

đó,chỉ 254 trong 256 từ 8-bit có thể (hoặc 1016 trong 1024 từ 10-bit) có thểđược sử

dụng để thể hiện giá trị tín hiệu.

2.2.4. Các kênh thu BT.656

Page 52: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

52

Trong hoạt động kênh đôi, cổng video có thể hỗ trợ capture hai dòng dữ liệu

BT.656 hoặc một dòng dữ liệu BT.656 và một dòng dữ liệu raw. Trong trường hợp

thứ 2, các dòng BT.656 có thể xảy ra ở cả hai kênh A hoặc kênh B. Trong cả hai

trường hợp, các dòng BT.656 (s) phải có nhúng mã tham chiếu thời gian và đầu vào

VCTL thích hợp phải được sử dụng như là một tín hiệu CAPEN.Nếu cổng được cấu

hình cho hoạt động đơn kênh, capture sẽ chỉ xảy ra ởKênh A. Nửa chưa sử dụng của

bus truyền VDATA có thể được sử dụng cho GPIO hoặc cho một chức năng ngoại

vi nào đó. Cho chế độ hoạt động đơn kên dòng dữ liệu không theo chuẩn BT.656

không cần nhúng mã tham chiếu thời gian và được hỗ trợ thông qua việc sử dụng

tín hiệu đầu vào điều khiển thời gian (VCTL).

2.2.5. Mã tham chiếu thời gian BT.656

Đối với video chuẩn số, có hai tín hiệu tham chiếu, một ở vị trí đầu của khối

dữ liệu video (Start of Active Video, SAV), và một ở cuối của mỗi khối video (End

of Active Video, EAV). (Về mặt kỹ thuật mỗi dòng bắt đầu với mã EAV và kết thúc

ngay trước các mã EAV tiếp theo.) Mỗi tín hiệu tham chiếu thời gian bao gồm một

trong bốn chuỗi mẫu định dạng sau: FF.Ch 00.0h 00.0h XY.0h. (Các giá trị FFh 00h

được dành riêng cho sử dụng trong những tín hiệu tham chiếu thời gian.) Ba byte

đầu tiên là cố định. Các byte thứ tư có thông tin xác định xác định trường ID, tình

trạng tẩy trống trường và xóa dòng. Sự phân bố của các bit bên trong tín hiệu tham

chiếu thời gian được liệt kê trong Bảng 2-6. Lưu ý rằng hai bit LSB nên bỏ qua

ngay cả trong hoạt động 10-bit.

Bảng 2. 2 Mã tham chiếu thời gian video BT.656

Page 53: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

53

Bit P0, P1, P2 và P3 có trạng thái khác nhau tùy thuộc vào trạng thái của các

bit F, V và H như trong Bảng 2-7

Bảng 2. 3 Các bít bảo vệ BT 656

Các bit bảo vệ cho phép các cổng để thực hiện chức năng DEDSEC (Double

Error Detection , Single Error Correction) dựa trên mã video tham chiếu thời gian

nhận được. Giá trị sửa chữa cho các bit F, H, V dựa trên giá trị các bit bảo vệ được

thể hiệntrong Bảng 2-8. Các mục chỉ ra sự phát hiện lỗi đôi mà không thể được sửa

chữa.Phát hiện những sai sót này làm cho các bít SERRx trong các thanh ghi trang

thái ngắt cổng video (VPIS) được thiết lập

Bảng 2. 4 Sự sửa lỗi bởi các bit bảo vệ

Page 54: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

54

2.2.6. Cửa sổ video BT.656

Định dạng BT.656 là một định dạng xen kẽ bao gồm hai trường. cổng video

cho phép capture một hoặc cả hai trường. Các hình ảnh được capture là một tập hợp

con của từng trường và có thể lớn hơn hoặc nhỏ hơn so với vùng active video. Vị trí

hình ảnh capture được xác định bởi thanh ghi VCxSTRT1 và VCxSTOP cho trường

1, và VCxSTRT2 và VCxSTOP2 cho trường 2. Các bit VCXSTART và VCXSTOP

thiết lập vị trí cửa sổ ngang cho trường liên quan đến các bộ đếm điểm ảnh

HCOUNT. Các bit VCYSTART và VCYSTOP thiết lập vị trí thẳng đứng cho các

bộ đếm dòng VCOUNT. Điều này được thể hiện trong Hình 2-9. Gia tăng

HCOUNT trên mỗi chu kỳ lấy mẫu chroma (mỗi cạnh lên (rise edge) khác

VCLKIN) mà capture được kích hoạt. Một khi VCOUNT = YSTART, line

capturebắt đầu khi HCOUNT = XSTART. Nó tiếp tục cho đến khi HCOUNT =

XSTOP. Capture của một trường là hoàn tất khi HCOUNT = VCXSTOP và

Page 55: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

55

VCOUNT = VCYSTOP.

Hình 2. 6 Các tham số video capture

Bảng 2-10 cho thấy các tiêu chuẩn máy ảnh kỹ thuật số thông thường và số

số trường mỗi giây, số dòng tích cực cho mỗi trường, và số lượng điểm ảnh tích cực

trên mỗi dòng.

Hình 2. 7 Tiêu chuẩn chung của chuẩn thu video

Đối với chế độ thu video BT.656, bộ đệm FIFO được chia thành ba phần (ba

bộ đệm). Một phần là 1.280 byte và được dành riêng để lưu giữ các mẫu dữ liệu Y.

Hai phần khác được dành riêng để lưu giữ các mẫu dữ liệu Cb và các mẫu dữ liệu

Cr tương ứng. Kích thước cho mẫuCb và Cr là 640 byte mỗi bộ đệm . Các dòng dữ

Page 56: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

56

liệu video đến được chia thành Y, CB, và Cr, scaled (nếu được chọn), và các bộ

đệm Y, CB, và Cr được làm đầy. Mỗi một trong số ba bộ đệm có một vị trí bộ nhớ

ánh xạ liên kết với nó; YSRC, CBSRC, và CRSRC. Các YSRC, CBSRC, và vị trí

CRSRC chỉ được đọc và sử dụng bởi DMA để truy cập dữ liệu lấy mẫu video được

lưu trong FIFOs. Nếu capture video được kích hoạt (bit BLKCAP trong VCxCTL

được xóa), điểm ảnh trong cửa sổ capture bị bắt trong các bộ đệm Y, CB, và Cr.

Các các modul capture video này sử dụng các sự kiện YEVT, CbEVT, và CrEVT

để thông báo cho bộ điều khiển DMA sao chép dữ liệu từ bộ đệm capture vào bộ

nhớ DSP. Số lượng doublewords cần thiết để tạo ra các sự kiện được thiết lập bởi

các bít VCTHRLDn trong VCxTHRLD. Trên mỗi YEVT, DMA có thể di chuyển

dữ liệu từ bộ đệm Y tới bộ nhớ DSP bằng cách sử dụng địa chỉ YSRC như địa chỉ

nguồn. trên mỗi CbEVT, DMA có thể di chuyển dữ liệu từ bộ đệm Cb vào bộ nhớ

DSP sử dụng vị trí CBSRC như địa chỉ nguồn. Trên mỗi CrEVT, DMA có thể di

chuyển dữ liệu từ bộ đệm Cr vào bộ nhớ DSP sử dụng các vị trí CRSRC nhưđịa chỉ

nguồn. Lưu ý rằng kích thước chuyển từ bộ đệm Cb và Cr là một nửa kích thước

chuyển giao từ bộ đệm Y cho mỗi bốn mẫu Y, có hai mẫu Cb và hai mẫu Cr.

2.2.7. Lấy mẫu dữ liệu BT.656

Dữ liệu đến (bao gồm mã thời gian) được lấy mẫu và bộ đếm HCOUNT chỉ

đếm khi chu kỳ đồng hồ mà đầu vào CAPEN là tích cực. đầu vào khi CAPEN

không tích cực được bỏ qua. Các mã tham chiếu thời gian được công nhận chỉ khi

ba mẫu liên tiếp lấy với CAPEN hợp lệ là FFh, 00h, 00h theo thứ tự đó. Một mẫu

non-00h sau khi FFh hoặc sau khi 00h đầu tiên gây ra sự công nhận về thời gian

tham chiếu để được thiết lập lại và để tìm kiếm FFh một lần nữa. (dữ liệu không lấy

mẫu;những CAPEN không active; ở giữa của một bộ tham chiếu thời gian không

gây ra các thừa nhận về mặt logic để được thiết lập lại vì đây không được coi là

những đầu vào hợp lệ.)

2.2.8. Cách thức đóng gói trong bộ đệm của BT.656

Dữ liệu thu được luôn luôn đóng gói vào 64-bit trước khi được ghi vào bộ

đệm FIFO capture. Việc đóng gói và thứ tự byte phụ thuộc vào việc kích thước dữ

liệu capture và các chế độ endian của thiết bị. đối với mode little-endian (mặc định),

dữ liệu được đóng gói vào FIFO từ phải sang trái, đối với mode big-endian, dữ liệu

được đóng gói từ trái sang phải. Chế độ BT.656 8-bit sử dụng ba FIFOs cho tách

màu. bốn mẫu được đóng gói vào từng từ như thể hiện trong hình 2-11.

Page 57: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

57

Hình 2. 8 Bit BT.656 FIFO Packing

Chế độ BT.656 10-bit sử dụng ba FIFOs cho tách màu. hai mẫu được đóng

gói vào từng từ với mở rộng zero hoặcmở rộng dấu như thể hiện trong hình 2-12.

Page 58: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

58

Hình 2. 9 10-Bit BT.656 FIFO Packing

10-bit BT.656 chế độ dày đặc sử dụng ba FIFOs cho tách màu. Ba mẫu được

đóng gói vào từng từ với mở rộng zero để cung cấp tăng băng thông DMA như thể

hiện trong hình 2-13.

Page 59: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

59

Hình 2. 10 Đóng gói 10-Bit BT.656 Dense FIFO

2.2.9. Các chế độ thu videoY/C

Chế độ capture Y / C cũng tương tự như chế độ capture BT.656 nhưng

capture dữ liệu 8 hoặc 10-bit 4:02:02 trêndòng dữ liệu luma và chroma riêng biệt.

một dòng dữ liệu chứa mẫu Y và các dòng khác có chứa ghép mẫu đồng vị Cb và

Cr với nhau và với tất cả các mẫu Y khác. Các mẫu Y được ghi vào một FIFO Y và

các mẫu chroma được demultiplexed và ghi vào riêng biệt CB và Cr FIFOs rồi

chuyển dữ liệu từbộ đệm Y, CB, và Cr vào trong bộ nhớ DSP. Cách đónggói và thứ

tự của các mẫu được xác định bởi kích thước mẫu (8-bit hoặc 10-bit) và các chế độ

hoạt động của thiết bị cuối.Chế độ capture Y/C hỗ trợ các chuẩn HDTV như

SMPTE260,SMPTE296, và BT.1120 vớimãnhúng EAV và SAV. Nó cũng hỗ

trợSDTV YCbCr ,chế độ này sử dụng tín hiệu điều khiển riêng biệt (đôi khi được

gọi là chế độ CCIR601) Như với các chế độ BT.656, các byte dữ liệu mà 8 bit

MSBtất cả đều được thiết lập để 1 (FF.0h, FF.4h, FF.8h, FF.Ch) hoặc tất cả được

xóa về 0 (00.0h, 00.4h, 00.8h, 00.Ch),chúng được dành riêng cho mục đích nhận

dạng dữ liệu và do đó chỉ có 254 trong 256 từ 8-bit (hoặc 1016 trong 1024 từ 10-

Page 60: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

60

bit) có thểđược sử dụng để thể hiện giá trị tín hiệu.

2.2.9.1. Các kênh capture Y/C

Vì chế độY / C đòi hỏi toàn bộ bus VDATA, và chỉ hoạt động kênh đơn

được hỗ trợ. Nếu bit DCHDIS trong VPCTL được thiết lập thì mode Y/C không thể

được chọn. Capture Y/C chỉ xảy ra trên kênh A. Nó hỗ trợ cả việc nhúng bộ tham

chiếu thời gian và điều khiển đầu vào bên ngoài.

2.2.9.2. Mã tham chiếu thời gian Y/C

Nhiều giao diện chuẩn Y / C độ phân giải cao cung cấp mã nhúng tham chiếu

thời gian. Các mã này giống với chuẩn BT.656 ngoại trừ việc chúng xuất hiện trên

cả hai dòng dữ liệu song song luma (Y) và chroma (CbCr).

2.2.9.3. Cửa sổ capture ảnh Y/C

Định dạng Y/C SDTV (CCIR601) là một định dạng quét xen kẽ gồm hai

trường giống như BT.656. định dạng Y/C HDTV có thể là xen kẽ hoặc liên tục. Để

capture xen kẽ, các cửa sổ capture được thiết lập giống nhau cho chế độ BT.656.

Đối với các định dạng quét liên tục, chỉ field1 được sử dụng. Trong chế độ

Y/C,HCOUNT tăng trên mỗi chu kỳ lấy mẫu luma (mỗi cạnh tăng của VCLKINA)

mà capture được kích hoạt. lần một YCOUNT = YSTART, capture line bắt đầu khi

HCOUNT = XSTART. Nó tiếp tục cho đến khi HCOUNT = XSTOP. Capturecủa

một trường hoàn tất khi HCOUNT = VCXSTOP và VCOUNT = VCYSTOP. Cho

chế độ capture video Y / C, bộ đệm FIFO được chia thành ba phần (Ba bộ đệm).

Một phần là 2560 byte và được dành riêng cho lưu trữmẫu dữ liệu Y. Hai phần khác

được dành riêng để lưu giữ các mẫu dữ liệu Cb vàCr tương ứng. Các bộ đệm cho

Cb và Cr là1.280 byte.

Các dòng dữ liệu video đến được chia thành Y, CB, và Cr, scaled (nếu được

chọn) ,bộ đệm Y, CB, và Cr được làm đầy. Mỗi một trong số ba bộ đệm có một vị

trí bộ nhớ ánh xạ liên kết với nó; YSRC, CBSRC, và CRSRC. YSRC, CBSRC, và

địạ chỉ CRSRC chỉ được đọc và được sử dụng bởi DMA để truy cập dữ liệu lấy

mẫu video được lưu trong FIFOs. 1 lần đọc phải luôn luôn là 64 bit. Nếu capture

video được kích hoạt, điểm ảnh trong cửa sổ capture được capture trong bộ đệm Y,

CB, và Cr. Các mô-đun capture video sử dụng YEVT, CbEVT, và sự kiện CrEVT

để thông báo cho bộ điều khiển DMA sao chép dữ liệu từ các bộ đệm capture vào

bộ nhớ DSP. Số lượng điểm ảnh cần thiết để tạo ra các sự kiện được thiết lập bởi

Page 61: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

61

các bit VCTHRLDn trong VCxCTL (các giá trị VCTHRLDn phải là một số chẵn

cho chế độ Y/C). Các mô-đun capture tạo ra các sự kiện sau mỗi pixelVCTHRLD

mới được nhận. Trên mỗi YEVT, DMA có thểdi chuyển dữ liệu từ bộ đệm Y vào

bộ nhớ DSP bằng cách sử dụng thanh ghi YSRC nhưđịa chỉ nguồn. Trên mỗi

CbEVT, DMA có thể di chuyển dữ liệu từ bộ đệm Cb vào bộ nhớ DSP bằng cách sử

dụng thanh ghi CBSRC như địa chỉ nguồn. Trên mỗi CrEVT, DMA có thể di

chuyển dữ liệu từ bộ đệm Cr vào bộ nhớ DSP bằng cách sử dụng thanh ghi CRSRC

như địa chỉ nguồn. Lưu ý rằng kích thước chuyển giao từcác bộ đệm Cb và Cr là

một nửa kích thước chuyển giao từ bộ đệm Y, cho mỗi bốn mẫu Y có hai Cb và hai

mẫu Cr. Ba sự kiện DMA được tạo ra đồng thời khi VCTHRLD được đạt tới. Mỗi

sự kiện được kích hoạt lại khi lần đọc đầu tiên của FIFO tương ứng bởi DMA yêu

cầu bắt đầu.

2.2.9.4. Cách đóng gói dữ liệu trong bộ đệm với chế độ Y/C

Dữ liệu thu được luôn luôn đóng gói vào 64 bit trước khi được ghi vào bộ

đệm capture FIFO (s). Việc đóng gói và thứ tự byte phụ thuộc vào kích thước dữ

liệu capture và các chế độ hoạt động của thiết bị cuối. Đối với chế độ little-

endian(mặc định), dữ liệu được đóng gói vào FIFO từ phải sang trái, đối với chế độ

big-endian, dữ liệu được đóng gói từ trái sang phải.

Chế độ Y/C 8-bit sử dụng ba FIFOs cho tách màu. Bốn mẫu đượcđóng gói

vào từng từ như thể hiện trong hình 2-14

Page 62: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

62

Hình 2. 11 Đóng gói 10-Bit Y/C FIFO

Y / C chế độ dày đặc 10-bit sử dụng ba FIFO cho tách màu. Ba mẫu được

đóng gói vào từng từ với mở rộng zero để cung cấp tăng DMAbăng thông như thể

hiện trong hình 2-15.

Page 63: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

63

Hình 2. 12 Đóng gói chế độ 10-Bit Y/C FIFO dày đặc

2.2.10. Chế độ bắt dữ liệu Raw

Trong chế độ capture dữ liệu raw, các dữ liệu được lấy mẫu bởi giao diện

duy nhất khi tín hiệu CAPEN được active. Dữ liệu được capture với tốc độ xung

của bộ tạo, mà không có cực trung gian hoặc start/stop capture dựa trên các giá trị

dữ liệu. Để đảm bảo đồng bộ hóa bắt đầu vào đầu của một khung, một bit thiết

lậptùy chọn đồng bộ hóa cho phép (SSE) được cung cấp trong VCxSTRT1. nếu bit

SSE được thiết lập, sau đó khi các bit được thiết lập lên 1, các cổng video sẽ

không bắt đầu capture dữ liệu cho đến khi sau khi phát hiện hai khoảng tẩy trống

dọc. nếu bit SSE được xóa về 0, capture bắt đầu ngay lập tức khi các bit VCEN

được thiết lập.

Các dữ liệu capture video chuẩn số đi đến được lưu trữ trong FIFO, 2560-

byte (trong hoạt động dual-channel) hoặc 5120-byte (chế độ hoạt động đơn kênh).

Bộ nhớ ánh xạ địa chỉ YSRCx được kết hợp với bộ đệm Y. các YSRCx là thanh ghi

chỉ đọc và được sử dụng để truy cập mẫu dữ liệu video được lưu trữ trong bộ đệm.

Các thiết lập kích thước dữ liệu capture được cài đặt bởi VCxSTOPn. Các bit

VCXSTOP và VCYSTOP cài đặt 24-bit thiết lập kich thước dữ liệu (VCXSTOP

thiết lập 12 bit thấp và VCYSTOP đặt 12 bit cao). Capture được hoàn thành và các

bit tương ứngF1C, F2C, hoặc FRMC được thiết lập khi kích thước dữ liệu đã

capture đạt đến giá trịkết hợp của VCYSTOP và VCXSTOP.

Cổng video tạo ra một YEVT sau khi một số nhất định của mẫu mới đã được

capture trong bộ đệm. Số lượng mẫu cần thiết để tạo YEVTx có thể lập trình và

được thiết lập trong các bit VCTHRLDn của VCxTHRLD. Trên mỗi YEVT, DMA

có thể di chuyển dữ liệu từ bộ đệm vào bộ nhớ DSP. Khi di chuyển dữ liệu từ bộ

đệm vào bộ nhớ DSP, DMA sẽ sử dụng các thanh ghi YSRCx như một địa chỉ

Page 64: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

64

nguồn.

2.2.10.1. Những lưu ý khi thu dữ liệu raw

Chế độ capture dữ liệu raw một gói dữ liệuđơn thông tin duy chỉ sử dụng

CAPEN để điều khiển. Thông tin trường chỉ có sẵn cho kênh A hoạt động sử dụng

các đầu vào FID trên VCTL3. Nếu bit RDFE trong VCACTL được thiết lập, sau đó

các cổng videolấy mẫu đầu vào FID tại lúc bắt đầu của mỗi khối dữ liệu (khi

DCOUNT = 0 và CAPENA được active) để xác định các trường hiện tại. Trong

trường hợp nàycác bit CON,FRAME, CF1 và CF trong VCxCTL được sử dụng một

cách đồng nhất vớichế độBT.656 .

Đối với hoạt động kênh B hoặc khi bit RDFE trong VCACTL không được

thiết lập, không có trường thông tin có sẵn. Có sự linh hoạt trong capture và những

thông báo của DSP vẫn còn cung cấp theo thứ tự các cấu trúc DMA khác nhau và

xử lý luồng. Mỗi gói dữ liệu raw được xử lý tương tự như một đoạn video quét

khung liên tục. Chế độ dữ liệu raw sử dụng các bit CON và FRAME của VCxCTL

trong những cách có dôi chút khác nhau, như được liệt kê trong Bảng 2-16.

Bảng 2. 5 Các chế độ hoạt động thu video raw

VCxCTL bit

OPERATION

CON FRAME CF2 CF1

0 0 x x

Capture frame không liên tục. FRMC được thiết lập sau khi khối capture dữ liệuvà làm cho CCMPx được thiết lập. Capture sẽ tạm dừng sau khi hoàn thànhframe kế tiếp trừ khi các bit FRMC bị xóa.

0 1 x x

Capture khung đơn. FRMC được thiết lập sau khi capturekhối dữ liệu và làm choCCMPx được thiết lập. Capture bị tạm dừng cho đến khi bit FRMC bị xóa.

1 0 x x

Capture khung liên tục. FRMC được thiết lập sau khi capture khối dữ liệu và làm cho CCMPx được thiết lập (ngắt CCMPx có thể được vô hiệu hóa). Cổng sẽ tiếp tục bắt hình không phụ thuộc vào trạng thái của FRMC

1 1 x x Reserved

Page 65: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

65

2.2.10.2. Đóng gói dữ liệu raw trong hàng đợi

Dữ liệu thu luôn luôn được đóng gói vào 64-bit trước khi được ghi vào FIFO

(s). Việc đóng gói và thứ tự byte phụ thuộc vào kích thước capture dữ liệu và các

chế độ của thiết bị cuối. Đối với chế độ little-endian (mặc định), dữ liệu được đóng

gói vào FIFO từ phải sang trái,với chế độ big-endian dữ liệu được đóng gói từ trái

sang phải.

Chế độdữ liệu raw 8-bit lưu trữ tất cả dữ liệu trong một FIFOduy nhất. Bốn

mẫu được đóng gói vào từng từ như thể hiện trong hình 2-17.

Hình 2. 13 Đóng gói dữ liệu raw 8-bit trong FIFO

Chế độ dữ liệu raw 10-bit lưu trữ tất cả dữ liệu vào một FIFO duy nhất. Hai

mẫu là đóng gói vào từng từ với số không hoặc dấu hiệu mở rộng như thể hiện trong

hình sau

Page 66: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

66

Hình 2. 14 Đóng gói dữ liệu raw 10-bit trong FIFO

Chế độ dữ liệu raw 10-bit dày lưu trữ tất cả dữ liệu vào một FIFO duy nhất.

Ba mẫu được đóng gói vào từng từ với mở rộng số không như thể hiện trong hình 2-

19.

Hình 2. 15 Đóng gói dữ liệu raw10-Bit dày trong FIFO

Chế độ dữ liệu raw 10-bit lưu trữ tất cả dữ liệu vào một FIFO duy nhất. Hai

mẫu được đóng gói vào từng từ như thể hiện trong hình 2-20.

Hình 2. 16 Đóng gói dữ liệu raw 16-bit

Chế độ dữ liệu raw 10-bit lưu trữ tất cả dữ liệu vào một FIFO duy nhất. Một

mẫu được đặt hợp lý trong mỗi từ và số không hoặc đăng ký mở rộng như trong

Page 67: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

67

Hình 2-21

Hình 2. 17 Đóng gói dữ liệu raw trong FIFO

2.3. Các cổng video hiển thị.

2.3.1. Các chế độ lựa chọn hiển thị

Có 3 chế độ hiển thị hình ảnh : BT656, ảnh thô (Raw), Y/C tùy thuộc vào

cách thiết lập các bit DMODE trong thanh ghi điểu khiển hiển thị (Video display

control register- VDCTL). Ứng với 3 chế độ này có các tùy chọn hiển thị số bit

khác nhau được liệt kê trong bảng sau :

Bảng 2. 6 Bảng các chế độ hiển thị

DMODE Bits Mode Miêu tả 000 8 bit ITU-R BT.656 Đầu ra video ở định dạng YCbCr 4:2:2 với

độ phân giải 8 bit 001 10 bit ITU-R

BT.656 Đầu ra video ở định dạng YCbCr 4:2:2 với độ phân giải 10 bit

010 8 bit Raw Đầu ra 8 bit 011 10 bit Raw Đầu ra 10 bit 100 8 bit Y/C Đầu ra video ở định dạng YCbCr 4:2:2 với

độ phân giải 8 bit trên 2 kênh song song 101 10 bit Y/C Đầu ra video ở định dạng YCbCr 4:2:2 với

độ phân giải 8 bit trên 2 kênh song song 110 16 bit Raw Đầu ra 16 bit 111 20 bit Raw Đầu ra 20 bit

Page 68: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

68

2.3.1.1. Định thời bức ảnh (Image timing)

Thiết bị hiển thị tạo nên bức ảnh liên tục bằng cách điều khiển khoảng thời

gian quét ngược theo chiều dọc. Module tạo ảnh tạo ra 1 luồng dữ liệu để hiển thị.

Quá trình quét 1 ảnh xen kẽ (interlaced image) và 1 ảnh liên tục (progressive- scan

image) được biểu diễn như sau

Hình 2. 18 Quá trình quét 1 ảnh I

Hình 2. 19 Quá trình quét 1 ảnh P

Vùng hiển thị thể hiện các pixel được hiển thị trên màn hình. Vùng hiển thị

video bắt đầu sau các khoảng trống dọc và ngang. Vùng ảnh hiển thị có thể là 1

vùng nhỏ của vùng hiển thị.Cụ thể 1 khung hình được hiển thị như sau :

Page 69: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

69

Hình 2. 20 Khung hình 1 ảnh I

Page 70: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

70

Hình 2. 21 Khung hình 1 ảnh P

2.3.1.2. Bộ đếm hiển thị hình ảnh

Để tạo ra khoảng timing cho bức ảnh ta sử dụng 5 bộ đếm :

Bộ đếm số dòng khung hình (FLCOUNT) : đếm tổng số dòng trên khung

hình bao gồm cả khoảng trống theo chiều chiều dọc. Reset khi tới giá trị được lập

trình trong thanh ghi kích thước hiển thị (VDFRMSZ)

Bộ đếm số pixel trong khung (FPCOUNT): đếm tổng số pixel trong 1 dòng

bao gồm cả khoảng trống theo chiều ngang. Reset khi tới giá trị được lập trình trong

thanh ghi kích thước hiển thị (VDFRMSZ)

Bộ đếm số dòng của ảnh (ILCOUNT): bắt đầu từ dòng đầu tiên của mỗi

trường dừng khi tới giá trị được lưu trong thanh ghi kích thước ảnh ở trường n

(VDIMGSZn)

Bộ đếm số pixel của ảnh (IPCOUNT): bắt đầu từ pixel đầu tiên được hiển thị

trên mỗi dòng dừng khi tới giá trị được lưu trong thanh ghi kích thước ảnh ở field n

(VDIMGSZn)

Bộ đếm clock cho video (VCCOUNT):đếm trạng thái VCTKIN để xác định

khi nào tăng FPCOUNT và IPCOUNT

Page 71: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

71

12 bit FPCOUNT dung để xác định khi nào bật và tắt tín hiệu đồng bộ theo

chiều dọc (HSYNC)và khoảng trống trên mỗi dòng quét (HBLNK). Trạng thái của

FPCOUNT được đề cập trong các bít VDXPOS của thanh ghi trạng thái hiển thị

(VDSAT)

Hình 2. 22 Hoạt động bộ đếm FLCOUNT

12 bit FLCOUNT đếm xem dòng nào se được hiển thị. FLCOUNT bằng 1

khi đếm tới giá trị trong thanh ghi VDFRMSZ (trong chế độ BT656 là 525 hoặc

625). Trạng thái của thanh ghi FLCOUNT được ghi trong các bit VDYPOS của

thanh ghi VDSAT

Hình 2. 23 Hoạt động của bộ đếm FLCOUNT

2.3.1.3. Bộ tạo tín hiệu đồng bộ

Bộ hiển thị video cần thiết phải tạo ra 1 số tín hiệu điều khiển dung cả trong

và ngoài. Như đã nói ở trên tín hiệu HSYNC, HBLNK, VSNYC, VBLNK and FLD

được tạo ra trực tiếp từ các bộ đếm điểm ảnh và đếm dòng và các thanh ghi so sánh.

Page 72: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

72

Một vài tín hiệu còn được tạo ra gián tiếp để điiều khiển từ bên ngoài.

Một tín hiệu khoảng trống phức hợp được tạo ra bằng cách OR của 2 tín hiệu

HBLNK, VBLNK. Tín hiệu đồng bộ phức hợp CSYNC được tạo ra bằng cách OR 2

tín hiệu VSYNC, HSYNC. Cuối cùng 1 tín hiệu bật video (active video)AVID

được tạo ra. Tín hiệu AVID là đảo ngược của tín hiệu CBLNK cho phép dữ liệu

được hiển thị

Ba trong số 8 tín hiêu đồng bộ được tạo ra qua các bit VCTL1, VCTL2,

VCTL3 được lựa chọn bởi thanh ghi điều khiển hiển thị VDCTL. Mỗi tín hiệu có

thể xuất ra dưới dạng đảo hoặc không đảo được xác định bởi các bit VCTnP trong

thanh ghi VPCTL

2.3.1.4. Bộ đồng bộ ngoài

Bộ hiển thị video cần được đồng bộ với nguồn video sử dụng các tín hiệu

đồng bộ ngoài. VCTL có thể được cấu hình như đầu vào ngoài đồng bộ theo

phương ngang. Khi có tín hiệu HSYNC ngoài, FPCOUNT được nạp giá trị HRLD

và VCCOUNT được nạp giá trị CRLD. VCTL2 có thể được cấu hình như là đầu

vào ngoài đồng bộ theo phương thẳng đứng. VCTL3 được cấu hình như tín hiệu đầu

vào FLD hoặc trường sẽ được xác định bởi hàm logic của VSYNC và HSYNC

2.3.1.5. Bộ đồng bộ cồng

Bộ hiển thị video còn có thể được đồng bộ với bộ hiển thị video của cổng

video khác trên thiết bị. Chế độ này cho phép đầu ra là 20 hoặc 30 bit RGB ( ví dụ

như 8 bit R và 8 bit B của cổng 0 trong kênh đôi với chế độ 8-bit RAW và 8 bit B ở

cổng 1 ở chế độ 8-bit RAW với VP1 đồng bộ với VP0 ). Cổng (con)Slave phải có

cùng tín hiệu VCLKIN và được cấu hình giá trị như cổng chủ (Master). Cổng

master cung cấp tín hiệu điều khiển cần thiết để reset bộ đếm của cổng slave giữ giá

trị đồng bộ. Mỗi cổng video chỉ có thể đồng bộ cổng video trước nó (có chỉ số thấp

hơn).

2.3.2. Chế độ hiển thị video dạng BT.656

Chế độ BT656 có đầu ra là 8 bit hoặc 10 bit tỉ lệ 4:2:2 dữ liệu chói và dữ liệu

màu trong cùng 1 luồng dữ liệu. Mỗi điểm ảnh được đưa ra theo từng cặp với mỗi

cặp bao gồm 2 dữ liệu màu và 2 dữ liệu chói. Các tín hiệu màu đi cùng với dữ liệu

chói của pixel đầu tiên của cặp. Các pixel đưa ra khi có sườn dương của tín hiệu

Page 73: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

73

VCLKOUT trong chuỗi CbYCrY.

Hình 2. 24 Chuỗi đầu ra của định dạng BT656

2.3.2.1. Mã tham chiếu hiển thị

Mã kết thúc video (EAV) và mã bắt đầu hiển thị (SAV) được xét đến mỗi khi

bắt đầu 1 dòng video. EAV và SAV có cấu trúc cố định. EAV và SAV xác định

điểm kết thúc và bắt đầu của các khoảng trống theo phương ngang và nó còn xác

định số trường hiện tại và số khoảng trống theo phương thẳng đứng. SAV và EAV

có 4 bit bảo vệ đi kèm để đảm bảo độ chính xác của dữ liệu.

Định dạng timing trên 1 dòng ở định dạng BT656: 1 dòng bắt đầu 1mã EAV,

1 khoảng blanking 1 mã SAV theo sau là dữ liệu trên dòng của video. Mã EAV xác

định sự kết thúc của dòng trước đó, mã SAV xác định sự bắt đầu của dòng video

hiện tại.

SAV và EAV được xác định bởi 3 byte khởi đầu : FFh, 00h và 00h. Sự kết

hợp này cần tránh trong dòng dữ liệu ra của video.

Hình 2. 25 Timing theo phương ngang mode BT656 (với kích thước khung là 525)

2.3.2.2. Mã khoảng trống (Blanking code)

Khoảng thời gian giữa mã EAV và SAV trên mỗi dòng xác định khoảng

trống theo phương ngang (horizontal blanking interval). Trong thời gian đó cổng

video sẽ xuất giá trị khoảng trống của video. Những giá trị này là 10.0h cho mẫu độ

chói Y và 80.0h cho mẫu màu (Cb/Cr). Những giá trị này còn được đưa ra trong khi

xuất giá trị khoảng trống theo chiều dọc (vertical blanking interval). Ngoài ra nếu

bit DVEN trong thanh ghi VDCTL bị xóa , giá trị khoảng trống sẽ được đưa ra

Page 74: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

74

trong cả quá trình hiển thị video khi mà nó không phải là 1 phần của video.

2.3.2.3. Hiển thị ảnh ở chế độ BT656

Với chế độ hiển thị BT656 , bộ đệm FIFO được chia làm 3 phần . 1 phần có

kích thước 2560 byte sử dụng để lưu dữ liệu độ chói Y. Hai phần khác có kích

thước 1280 mỗi phần dung để lưu dữ liệu Cb và Cr. Mỗi FIFO có 1 địa chỉ ánh xạ

tương ứng với nó : YDST, CBDST và CRDST. Thanh ghi giả chỉ dung để ghi đựợc

sử dụng bởi DMA để điền dữ liệu dầu ra vào bộ đệm FIFO. Bộ hiển thị hình ảnh kết

hợp dữ liệu từ cả 3 bộ FIFO để tạo ra luồng dữ liệu ra CbYCrY.

Nếu hiển thị video được bật, bộ hiển thị video sử dụng các sự kiện YEVT,

CbEVT, CrEVT để nhắc bộ điều khiển DMA là dữ liệu cần được đưa vào bộ đệm

FIFO. Số điểm ảnh cần thiết để thiết lập sự kiện được thiết lập bởi các bit

VDTHRLD trong VDTHRLD. Bộ hiển thị video tạo ra các tín hiệu sự kiện khi bộ

đệm hiển thị nhỏ hơn số điểm ảnh VDTHRLD và bộ đếm DEVTCT chưa vượt quá.

Với mọi YEVT, DMA chuyển dữ liệu từ bộ nhớ DSP tới bộ đệm Y sử dụng thanh

ghi địa chỉ Y FIFO (YDST) làm địa chỉ đích. Tương tự với các bộ đệm Cb và Cr.

Kích thước dịch chuyển của bộ đệm Y gấp đôi kích thước DMA của Cb, Cr.

2.3.2.4. Giải nén dữ liệu tại bộ đệm FIFO chế độ BT656

Dữ liệu hiển thị luôn được đóng trong FIFO dưới dạng từ 64bit và cần được

giải đóng gói trước khi đưa tới hiển thị. Sự giải đóng gói và thứ tự byte phụ thuộc

vào kích thước dữ liệu hiển thị và thứ tự lưu trữ dòng byte trên thiết bị. Mặc định là

little- edian dữ liệu được giải đóng gói từ phải qua trái và với big-edian thì ngược

lại.

Chế độ BT656 8bit sử dụng 3 bộ đệm FIFO cho việc phân chia màu. Bốn

mẫu được giải đóng gói cho mỗi từ . Với 10 bit thì 2 mẫu được giải đóng gói từ mỗi

từ

Page 75: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

75

Hình 2. 26 Giải đóng gói ở chế độ BT656 8 bit

2.3.3. Chế độ hiển thị video Y/C

Chế độ hiển thị Y/C tương tự như chế độ BT656 nhưng dữ liệu 8 hoặc 10 bit

đầu ra ở trên 2 luồng tín hiệu chói và màu riêng biệt. Một luồng chứa mẫu Y và 1

luồng khác chứa hỗn hợp cả Cb Cr. Các mẫu Y được đọc từ bộ đệm Y FIFO và Cb

Cr được đọc từ bộ đệm Cb và Cr FIFO và được kết hợp thành đầu ra mầu. Sự giải

đóng gói và thứ tự của mẫu được quyết định bởi kích thước mẫu (8 bit hoặc 10 bit)

và thứ tự lưu trữ của thiết bị.

Chế độ Y/C có thể tạo ra đẩu ra chuẩn HDTV như BT.1120, SMPTE260,

SMPTE296, với các mã nhúng SAV và EAV. Nó có thể tạo ra các tín hiệu điều

khiển riêng biệt.

Bởi đầu ra là 16 hoặc 20 bit chế độ Y/C yêu cầu cả 2 nửa của bus dữ liệu của

cổng video. Nếu bit DCHDIS trong VPCTL được thiết lập thì chế độ Y/C không thể

Page 76: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

76

được lựa chọn.

2.3.3.1. Các mã tham chiếu thời gian chế độ Y/C

Trong chế độ Y/C các mã cần được đưa ra cả luồng Y và C (VDOUT[9-0] và

VDOUT[19-10])

Hình 2. 27 Timing theo phương ngang chế độ Y/C

2.3.3.2. Mã khoảng trống chế độ Y/C

Khoảng thơi gian giữa mã EAV và SAV trên mỗi dòng thể hiện khoảng

trống theo phương ngang. Trong suốt quá trình này cổng video tạo ra dữ liệu

khoảng trống. Những giá trị này là : 10.0h cho mẫu độ chói Y và 80.0h cho mẫu

màu (Cb/Cr). Những giá trị này còn được đưa ra trong suốt dòng khi mà V=1, trừ

khi được thay thế bởi giá trị VBI. Ngoài ra nếu bit DVEN trong VCTL thiết lập là 0

giá trị khoảng trống không nằm trong ảnh được hiển thị.

2.3.3.3. Ảnh hiển thị ở chế độ Y/C

Có nhiều chuẩn hỗ trợ bởi chế độ hiển thị Y/C cung cấp cho cả định dạng

quét xen kẽ và quét liên tục. Trong việc hiển thị xen kẽ điều khiển hiển thị được

thiết lập như chế độ BT656. Với kiểu quét liên tục kích thước khung được thiết lập

như kích thước của trường đơn và chỉ trường 1 được sử dụng. Chế độ hiển thị Y/C

sử dụng cấu trúc bộ đệm tương tự như chế độ BT656 và cách tạo ra sự kiện DMA

cũng giống nhau.

Page 77: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

77

2.3.3.4. Giải đóng gói bộ đệm FIFO chế độ Y/C

Dữ liệu hiển thị luôn được đóng trong FIFO dưới dạng từ 64bit và cần được

giải đóng gói trước khi đưa tới hiển thị. Sự giải đóng gói và thứ tự byte phụ thuộc

vào kích thước dữ liệu hiển thị và thứ tự lưu trữ dòng byte trên thiết bị. Mặc định là

little- edian dữ liệu được giải đóng gói từ phải qua trái và với big-edian thì ngược

lại.

Hình 2. 28 Giải đóng gói bộ đệm FIFO chế độ Y/C 8- bit

2.3.4. Chế độ hiển thị ảnh thô (RAW)

Chế độ hiển thị dữ liệu thô để tạo ra dữ liệu cho RAMDAC hoặc các dữ liệu

kiểu D/A khác. Điển hình là dữ liệu kiểu RGB. Không có thông tin về timing trong

luồng dữ liệu ra thay vào đó tín hiệu lựa chọn điều khiển được đưa ra để tạo timing.

Hiển thị dữ liệu thô bao gồm việc thiết lập đồng bộ 2 kênh. Nó cho phép kênh B tạo

ra 1 luồng dữ liệu riêng biệt sử dụng chung xung clock và điều khiển như của kênh

A. Chế độ này rất hữu ích khi sử dụng với cổng video thứ 2 trong hệ thống yêu cầu

Page 78: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

78

đầu ra 24 tới 30 bit RGB.

Chế độ dữ liệu thô sử dụng 1 bộ đệm FIFO kích thước 5120 byte để lưu trữ

dữ liệu đầu ra. Bộ đệm này được ghi vào bằng DMA sử dụng thanh ghi đích

YDSTA. DMA được yêu cầu sử dụng sự kiện YEVTA. Trong chế độ đồng bộ thô

(raw sync) (bit RSYNC được thiết lập), bộ đệm FIFO được chia làm 2560 byte cho

mỗi kênh A và B.

Bộ đệm FIFO kênh B được ghi vào bởi DMA sử dụng thanh ghi đích

YDSTB. Cả sự kiện YEVTA và YEVTB được tạo ra sử dụng điều khiển timing của

kênh A

2.3.4.1. Chế độ ảnh thô hỗ trợ đầu ra RGB

Chế độ hiển thị ảnh thô có 1 số tính năng đếm pixel đặc biệt cho phép

FPCOUNT tăng tới 1 tỷ lệ được thiết lập trước. FPCOUNT chỉ tăng khi mẫu

INCPIX đã được gửi đi. Tùy chọn này cho phép theo dõi hiển thị các điểm ảnh

trong khi gửi ra tuần tự các mẫu RGB (INCPIX đươc thiết lập bằng 3 trong trường

hợp này, để chỉ ra rằng 1 điểm ảnh được đại diện bởi 3 mẫu đầu ra)

Chế độ RGB tuần tự cũng được hỗ trợ thông qua 1 chế độ giải đóng gói

FIFO đặc biệt. Khi chế độ giải đóng gói 8 bit thô được lựa chọn(bit RGBX trong

VDCTL) ba byte đầu ra được lựa chọn từ mỗi từ và byte thứ tư được bỏ qua. Điều

này cho phép các cổng video xuất dữ liệu chính xác theo định dạng 24 bit RGB

trong bộ nhớ.

2.3.4.2. Giải đóng gói bộ đệm FIFO dữ liệu ảnh thô

Dữ liệu hiển thị luôn được đóng trong FIFO dưới dạng từ 64bit và cần được

giải đóng gói trước khi đưa tới hiển thị. Sự giải đóng gói và thứ tự byte phụ thuộc

vào kích thước dữ liệu hiển thị và thứ tự lưu trữ dòng byte trên thiết bị. Mặc định là

little- edian dữ liệu được giải đóng gói từ phải qua trái và với big-edian thì ngược

lại

Page 79: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

79

Hình 2. 29 Giải đóng gói bộ đệm dữ liệu ảnh thô

2.3.5. Tổ chức trường và khung hình trong hiển thị video

Như là 1 nguồn video , cổng video luôn xuất ra toàn bộ dữ liệu của khung

hình và truyền tín hiệu điều khiển liên tiếp. Phụ thuộc vào cấu trúc của DMA, cổng

video cần ngắt DSP trên 1 trường hoặc khung cơ bản để cho phép nó cập nhật thanh

ghi cổng video hoặc tham số DMA. Để làm điều đó, cổng video cung cấp khả năng

điều chỉnh trong quá trình hiển thị.

2.3.5.1. Xác định hiển thị và khai báo

Theo thứ tự để cung cấp các tình huống hiển thị khác nhau, cổng video thực

hiện hiển thị linh hoạt và hệ thống khai báo. Việc này được thiết lập sử dụng các bit

CON, FRAME, DF1 và DF2 trong thanh ghi VDCTL

Bit CON điều khiển hiển thị nhiều trường hoặc khung hình. Khi bit CON=1

hiển thị liên tiếp được cho phép, cổng hiển thị video hiển thị trường ngoài (thừa

nhận bit VDEN=1) mà không cần đến sự can thiệp của DSP. Nó dựa vào 1 bộ đêm

hiển thị đơn trong bộ nhớ hoặc dựa trên cấu trúc DMA với khả năng đệm vòng

quanh để phục vụ bộ hiển thị FIFO. Khi bit CON =0 hiển thị liên tiếp không được

phép cổng video thiết lập trường hoặc khung hình hiển thị bit hoàn thành (F1D,

F2D hoặc FRMD) trong thanh ghi VDSTAT dựa trên hiển thị của mỗi trường xác

định bởi trạng thái của các bit điều khiển (FRAME, CD1 và CD2), Mỗi lầm các bit

hoàn thành hiển thị được thiết lập, vi xử lý phải cập nhật tham số DMA thích hợp.

Trong trường hợp này cổng video tiếp tục tạo yêu cầu DMA nhưng nó đánh giá

ngắt DCNA để xác định tham số DMA thể không được cập nhật và dữ liệu được

gửi tới cổng video

Page 80: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

80

Khi 1 trường hoặc 1 khung hình không được cho phép hiển thị, không có sự

kiện DMA gửi cho trường và không gửi ra cho nhóm. Cổng video tiếp tục tạo

timing cho các trường với giá trị mặc điịnh.

Bốn bit CON, FRAME, DF1 và DF2 mã hóa quá trình hiển thị như sau :

Bảng 2. 7 Mã hóa quá trình hiển thị

VDCTL bit CON FRAME DF2 DF1 Hoạt động

0 0 0 0 Dự trữ 0 0 0 1 Hiển thị không liên tục trường 1.Chỉ hiển thị

trường 1. F1D cần được xóa bởi DSP hợac bởi ngắt DCNA. Còn có thể được sử dụng cho

hiển thị khung đơn liên tiếp 0 0 1 0 Hiển thị không liên tục trường 2. Chỉ hiển thị

trường 2 0 0 1 1 Hiển thị không liên tục trường 1 và trường 2.

Hiển thị cả 2 trường. F1D được thiết lập sau khi hiển thị trường 1. F1D cần được xóa bởi DSP trước khi hiển thị trường tiếp theo hoặc

bởi 1 ngắt DCNA. Tuơng tự với F2D 0 1 0 0 Hiển thị khung không liên tục. Hiển thị cả 2

trương. FRMD được thiết lập sau khi hiển thị trường 2 và thiết lập DCMPx

0 1 0 1 Hiển thị khung không liên tiếp tăng dần. Hiển thị trường 1

0 1 1 0 Dự trữ 0 1 1 1 Hiển thị khung đơn. Hiển thị cả 2 trường.

FRMD được thiết lập sau khi hiển thị trường 2 và thiết lập DCMPx

1 0 0 0 Dự trữ 1 0 0 1 Hiển thị trường 1 liên tiếp. Chỉ hiển thị trường

1 . F1D được thiết lập sau khi hiển thị trường 1và thiết lập DCMPx. Không ngắt DCNA

1 0 1 0 Hiển thị trường 2 liên tiếp. Chỉ hiển thị trường 2. F2D được thiết lập sau khi hiển thị trường 2 và thiết lập DCMPx

1 0 1 1 Dự trữ 1 1 0 0 Hiển thị khung liên tiếp. Hiển thị cả 2 trường.

FRMD được thiết lập sau khi hiển thị trường 2 và thiết lập DCMPx

Page 81: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

81

1 1 0 1 Hiển thi khung liên tiếp tăng dần. Hiển thị trường 1

1 1 1 0 Dự trữ 1 1 1 1 Dự trữ

2.3.5.2. Tạo sự kiện hiển thị video

Bộ đệm hiển thị FIFO được điền đầy sử dụng DMA được yêu cầu bởi sự kiện

DMA. Giá trị VDTHRLD xác định giá trị mà bộ đệm FIFO đầy chỗ để có thể nhận

thêm khôi dữ liệu DMA khác. Phụ thuộc vào kích thước của DMA, bộ đệm FIFO sẽ

có đủ chỗ để phục vụ nhiều chuyển đổi trước khi tới mức VDTHRLD. Mỗi khi tới

ngưỡng 1 sự kiện DMA được tạo ran gay khi bộ đệm FIFO giảm xuống dưới

ngưỡng.

Mỗi khi toàn bộ khung dữ liệu được gửi tới FIFO, cổng video cần dừng việc

tạo sự kiện cho phép DSP thay đổi DMA. Từ khi việc hiển thị không được hoàn

thành, 1 bộ đếm sự kiện (DEVTCT) được cung cấp để theo dõi số lượng sự kiện

yêu cầu YEVT. Bộ đếm được nạp giá trị là số lượng sự kiện cần thiết trong hiển thị

trường (DISPEVT1 hoặc DISPEVT2) và tăng mỗi khi có sự kiện được yêu cầu.

Mỗi khi bộ đếm trở về 0 các sự kiện tiếp theo bị gián đoạn. Tại điểm đầu của trường

kế tiếp DEVTCT được nạp và hiển thị sự kiện được cho phép lại.

2.3.6. Hiển thị video dạng dữ liệu thô (raw data mode)

Để hiển thị video dạng dữ liệu thô ta cần thực hiện các bước sau :

1) Thiết lập kích thước khung là VDFRMSZ. Thiết lập số lượng dòng trên 1

khung (FRMHIGHT) và số lượng pixel trên 1 dòng.

2) Thiết lập khoảng trống theo chiều ngang (horizontal blanking) trong

VDHBLNK. Xác định giá trị bắt đầu (HBLNKSTART) và điểm ảnh kết thúc

(HBLNKSTOP)

3) Thiết lậpkhoảng trống bắt đầu theo chiều dọc (vertical blanking) bắt đầu cho

trường 1 trong VDVBLKS1. Xác định dòng bắt đầu (VBLNKYSTART2)và

giá trị bộ đếm điểm ảnh (VBLNKXSTART2) nơi mà khoảng trống theo chiều

dọc bắt đầu cho trường 1

4) Thiết lập điểm cuối trong trường 1 của khoảng trống theo chiều dọc trong

VDVBLKE1. Xác định dòng (VBLNKYSTOP1) và giá trị bộ đếm mà

khoảng trống theo chiều dọc kết thúc

5) Thiết lậpkhoảng trống bắt đầu theo chiều dọc (vertical blanking) bắt đầu cho

Page 82: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

82

trường 2 trong VDVBLKS2. Xác định dòng bắt đầu (VBLNKYSTART2)và

giá trị bộ đếm điểm ảnh (VBLNKXSTART2)nơi mà khoảng trống theo chiều

dọc bắt đầu cho trường 2

6) Thiết lập điểm cuối trong trường 2 của khoảng trống theo chiều dọc trong

VDVBLKE2. Xác định dòng (VBLNKYSTOP2) và giá trị bộ đếm mà

khoảng trống theo chiều dọc kết thúc

7) Thiết lập giá trị bắt đầu đồng bộ theo phương dọc cho trường 1 trong

VDVSYNS1. Xác định dòng (VSYNCYSTART1) và giá trị bộ đếm điểm ảnh

(VSYNCXSTART1) cho điểm ảnh mà giá trị đông bộ theo phương dọc của

trường 1 bắt đầu

8) Thiết lập giá trị kết thúc đồng bộ theo phương dọc cho trường 1 trong

VDVSYNE1. Xác định dòng (VSYNCYSTOP1) và giá trị bộ đếm điểm ảnh

(VSYNCXSTOP1) cho điểm ảnh mà giá trị đông bộ theo phương dọc của

trường 1 kết thúc

9) Thiết lập giá trị bắt đầu đồng bộ theo phương dọc cho trường 2 trong

VDVSYNS2. Xác định dòng (VSYNCYSTART2) và giá trị bộ đếm điểm ảnh

(VSYNCXSTART2) cho điểm ảnh mà giá trị đông bộ theo phương dọc của

trường 1 bắt đầu

10) Thiết lập giá trị kết thúc đồng bộ theo phương dọc cho trường 2 trong

VDVSYNE2. Xác định dòng (VSYNCYSTOP2) và giá trị bộ đếm điểm ảnh

(VSYNCXSTOP2) cho điểm ảnh mà giá trị đông bộ theo phương dọc của

trường 1 kết thúc

11) Thiết lập giá trị đồng bộ theo phương ngang trong VDHSYNC. Xác định giá

trị bộ đếm pixel điểm mà HSYNC bắt đầu (HSYNCYSTART) và độ rộng

xung HSYNC (HSYNCSTOP)

12) Thiết lập định thời hiển thị trường 1. Xác định dòng đầu tiên và điểm đầu

tiên của trường 1 trong VDFLD1

13) Thiết lập định thời hiển thị trường 2. Xác định dòng đầu tiên và điểm đầu tiên

của trường 1 trong VDFLD2

14) Cấu hình DMA để chuyển dữ liệu từ trong bảng trong bộ nhớ DSP tới

YDSTA. Sự dịch chuyển được gây ra bởi sự kiện YEVT

15) Thiết lập các bit DISPEVT1 và DISPEVT2 trong VDDISPEVT.

16) Ghi vào VPIE để cho phép underrun (DUND) và ngắt hoàn thành hiển thị

(DCMP).

17) Ghi vào VDTHRLD để thiết lập ngưỡng của bộ đệm FIFO (VDTHRLD ) và

tỷ lệ tăng FPCOUNT (INCPIX).

18) Ghi vào VDCTL cho phép :

Thiết lập chế độ hiển thị (DMODE= 01x cho đầu ra 8/10 bit, 11x cho đầu

ra 16/20)

Page 83: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

83

Thiết lập khung trường mong muốn qua các bit (CON, FRAME, DF1,

DF2)

Lựa chọn điều khiển đầu ra (VCTL1S, VCTL2S, VCTL3S) hoặc đầu vào

ngoài đồng bộ (HXS, VXS, FXS)

Lựa chọn chế độ giải đóng gói 10 bit (DPK)

Thiết lập bit VDEN cho phép hiển thị

19) Đợi 2 khung hoặc nhiều hơn để cho phép đếm hiển thị và điều khiển tín hiệu

đồng bộ chính xác

20) Ghi vào VDCTL để xóa bit BLKDIS

21) Việc hiển thị được cho phép tại khung bắt đầu sau BLKDIS=0 và bắt đầu với

trường đầu tiên được chọn. Các sự kiện DMA được tạo ra bởi VDTHRLD và

bộ đếm DEVTCT. Khi trường lựa chọn được hiển thị (FLCOUNT =

FRMHEIGHT và FPCOUNT=FRMWIDTH), các bit F1D, F2D hoặc FRMD

được thiết lập đồng thời thiết lập bit DCMP trong VPIS. Ngắt DSP đựợc tạo

ra nếu bit DCMP trong VPIE được thiết lập

22) Nếu điều kiện hiển thị được cho phép, cổng video bắt đầu hiển thị trở lại

điểm bắt đầu của khung hoặc trường tiếp theo. Nếu khung 1 và 2 không liên

tiếp hoặc hiển thị khung được cho phép, khung hoặc trường tiếp theo được

hiển thị, trong quá trình đó DSP cần xóa các bit trạng thái hoàn thành hoặc

ngắt DCNA

2.3.7. Hiển thị video dạng BT.656 hoặc chế độ Y/C

Để hiển thị video dạng BT.656 hoặc dạng Y/C ta cần thực hiện các bước sau :

1) Thiết lập kích thước khung trong VDFRMSZ. Thiết lập số lượng dòng trên

khung (FRMHIGHT) và số lượng điểm ảnh trên 1 dòng (FRMWIDTH)

2) Thiết lập khoảng trống theo chiều ngang trong VDHBLNK. Xác định giá trị

bắt bộ đếm khoảng trống theo chiều ngang (HBLNKSTART) và điểm ảnh

kết thúc (HBLNKSTOP)

3) Thiết lập V bit định thời cho trường 1 trong CDVBIT1. Xác định dòng V bit

được thiết lập (VBITSET1) và dòng V bit được xóa (VBITCLR1)

4) Nếu cần tín hiệu VBLNK ngoài cần thiết lập VBLNK cho trường 1 trong

VDVBLNKS1. Xác định dòng (VBLNKYSTART1) và bộ đếm điểm ảnh

(VBLNKXSTART1) xác định điểm ảnh mà VBLNK bật cho trường 1. Thiết

lập dòng (VBLNKSTOP1) và bộ đếm điểm ảnh (VBLNKSTOP1) thiết lập

giá trị điểm ảnh mà VBLNK tắt cho trường 1

5) Thiết lập V bit định thời cho trường 2 trong VDVBIT2. Xác định dòng mà V

bit được thiết lập (VBITSET2) và dòng mà V bit được xóa

6) Nếu cần tín hiệu VBLNK ngoài cần thiết lập VBLNK cho trường 2 trong

Page 84: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

84

VDVBLNKS2. Xác định dòng (VBLNKYSTART2) và bộ đếm điểm ảnh

(VBLNKXSTART2) xác định điểm ảnh mà VBLNK bật cho trường 2. Thiết

lập dòng (VBLNKSTOP2) và bộ đếm điểm ảnh (VBLNKSTOP2) thiết lập

giá trị điểm ảnh mà VBLNK tắt cho trường 2

7) Thiết lập VDIMGGSZn. Điều chỉnh kích thước ảnh hiển thị bởi các bit

HSIZE và VSIZE

8) Thiết lập VDIMOFF. Điều chỉnh offset của ảnh được hiển thị trong vùng

video được hiển thị với HOFFSET và VOFFSET

9) Thiết lập bit định thời F trong VDFBIT. Xác định dòng mà bit F được xóa

(FBITCLR) và dòng mà bit F được thiết lập

10) Nếu FLD ngoài được yêu cầu, thiết lập định thời cho trường 1. Xác định

dòng và điểm ảnh mà FLD tắt (VFLDT1). Thiết lập định thời cho hiển thị

trường 2. Thiết lập dòng và điểm ảnh mà FLD bật (VDFLDT2)

11) Thiết lập VDCLIP. Giá trị mặc định là 16 cho clipping thấp và 235 cho

clipping cao của tín hiệu chói và 240 clipping cao cho tín hiệu Cb, Cr

12) Thiết lập DMA chuyển dữ liệu từ bộ đệm Y tới bộ nhớ DSP (YDSTA). Việc

chuyển dữ liệu được tạo bởi sự kiệ YEVT

13) Thiết lập DMA chuyển dữ liệu từ bộ đệm Cb tới bộ nhớ DSP tới CBDST.

Việc dịch chuyển tạo bởi sự kiện CbEVT. Kích thước chuyển bằng ½ kích

thước chuyển Y

14) Thiết lập DMA chuyển dữ liệu từ bộ đệm Cr tới bộ nhớ DSP tới CRDST.

Việc dịch chuyển tạo bởi sự kiện CrEVT. Kích thước chuyển bằng ½ kích

thước chuyển Y

15) Thiết lập DISPEVT1 và DISPEVT2 trong VDDISPEVT

16) Ghi vào VPIE cho phép underrun và hoàn thành hiển thị và tạo ngắt

(DCMP)

17) Ghi vào VDTHRLD để thiết lập ngưỡng hiển thị FIFO (các bit VDTHRLD)

18) Ghi vào VDCTL :

+ Thiết lập mode hiển thị (DMODE=00x cho đầu ra BT656, 10x cho đầu ra

10x)

+ Chế độ khung trường mong muốn (CON, FRAME, DF1, DF2)

+ Lựa chọn đầu ra điều khiển (VCTL1S, VCTL2s, VCTL3S) hoặc đầu vào

ngoài (HXS, VXS, FXS)

+ Cho phép scalling (SCALE và RESMPL) nếu yêu cầu

+ Chọn chế độ giải đóng gói 10 bit

+ Thiết lập bit VDEN cho phép hiển thị

19) Đợi 2 khung hoặc nhiều hơn để cho phép đếm hiển thị và điều khiển tín hiệu

đồng bộ chính xác

20) Ghi vào VDCTL xóa các bit BKLDIS

Page 85: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

85

21) Việc hiển thị được cho phép tại khung bắt đầu sau BLKDIS=0 và bắt đầu với

trường đầu tiên được chọn. Các sự kiện DMA được tạo ra bởi VDTHRLD và

bộ đếm DEVTCT. Khi trường lựa chọn được hiển thị (FLCOUNT =

FRMHEIGHT và FPCOUNT=FRMWIDTH), các bit F1D, F2D hoặc FRMD

được thiết lập đồng thời thiết lập bit DCMP trong VPIS. Ngắt DSP đựợc tạo

ra nếu bit DCMP trong VPIE được thiết lập

22) Nếu điều kiện hiển thị được cho phép, cổng video bắt đầu hiển thị trở lại

điểm bắt đầu của khung hoặc trường tiếp theo. Nếu khung 1 và 2 không liên

tiếp hoặc hiển thị khung được cho phép, khung hoặc trường tiếp theo được

hiển thị, trong quá trình đó DSP cần xóa các bit trạng thái hoàn thành hoặc

ngắt DCNA

Page 86: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

86

CHƯƠNG 3: QUY TRÌNH THỰC HIỆN ĐỒ ÁN VÀ CÁC

KẾT QUẢ THU ĐƯỢC

3.1. Chương trình gốc

Chúng em sử dụng chương trình hiển thị 8 thanh mầu với các mầu sắc khác nhau

lên màn hình. Chương trình này có 3 file nguồn đó là colorbar.c , video_rgb.c , và

ycbcr422pl_to_rgb565_h.asm. file colorbar.c định nghĩa các mầu cơ bản , file

video_rgb.c hiển thị các thanh mầu lên màn hình . File

ycbcr422pl_to_rgb565_h.asm định nghĩa hàm yc2rgb16 ( ) có chức năng copy dữ

liệu video từ bộ đệm thu tới bộ đệm display phục vụ cho quá trình hiển thị ảnh lên

màn hình, hàm này được sử dụng trong file video_rgb.c.

Hình 3.1 Build chương trình trên CCS3.1

Lý do sử dụng chương trình này phục vụ cho quá trình phát triển đồ án là bởi

vì nó có định nghĩa hàm yc2rgb16 ( ), một hàm rất hữu ích trong quá trình xử lý sao

chép dữ liệu từ bộ đệm capture tới bộ đệm display. Hơn nữa đây là một chương

trình ngắn và đơn giản, nên thuận tiện cho việc người phát triển có thể dễ dàng phát

triển thuật toán theo ý của họ. Sau khi build và chạy kiểm tra chương trình thành

công, nhóm chuyển sang nghiên cứu vấn đề làm sao để phát triển chương trình từ

hiển thị những mảng ảnh tĩnh sang hiển thị video .

Page 87: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

87

3.2. Thu dữ liệu từ camera,hiển thị video lên màn hình

Một ứng dụng phải link tất cả ba thư viện cần thiết để hoạt động một cách chính

xác nhất : 1 từ phần riêng của board như SAA7115 hoặc SAA7105 , một từ phần

chung VPORTCAP hoặc VPORTDIS và 1 từ BSL ( board support library ). Ba thư

viện dành cho capture và ba thư viện dành cho hiển thị . Một điều quan trọng nữa,

các ứng dụng DSP muốn chạy phải sử dụng thư viện CSL ( Chip Support Library ) .

Khi bắt đầu chạy ứng dụng trong hàm main phải khai báo như sau:

main()

{

/******************************************************/

/* open CSL DAT module for fast copy */

/******************************************************/

CSL_init();

CACHE_clean(CACHE_L2ALL, 0, 0);

CACHE_setL2Mode(CACHE_256KCACHE);

CACHE_enableCaching(CACHE_EMIFA_CE00);

CACHE_enableCaching(CACHE_EMIFA_CE01);

DAT_open(DAT_CHAANY, DAT_PRI_LOW, DAT_OPEN_2D);

}

Các hàm trong hàm main() này có chức năng làm sạch bộ nhớ, sau đó khởi

tạo một bộ đệm với kích cỡ như ở đây là 256K ,để thực quá trình chuyển,sao chép

dữ liệu phục vụ cho quá trình xử lý tín hiệu trong các bộ nhớ này.

Việc thực hiện quá trình khởi tạo kênh thu,kênh hiển thị, các mode dữ liệu

thu, các cấu hình cho trình điều khiển capture và display được thực hiện bởi chọn

các chức năng trong các thư viện hỗ trợ. Cụ thể ở đây :

/******************************************************/

/* Khởi tạo trình điều khiển thu video */

Page 88: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

88

/******************************************************/

capChan = FVID_create("/VP0CAPTURE/A/0",

IOM_INPUT, &status, (Ptr)&EVMDM642_vCapParamsChan, NULL);

/******************************************************/

/* Khởi tạo trình điều khiển hiển thị */

/******************************************************/

disChan = FVID_create("/VP2DISPLAY", IOM_OUTPUT,

&status, (Ptr)&EVMDM642_vDisParamsChan, NULL);

/******************************************************/

/* Cấu hình bộ mã hóa và giải mã video */

/******************************************************/

FVID_control(disChan, VPORT_CMD_EDC_BASE + EDC_CONFIG,

(Ptr)&EVMDM642_vDisParamsSAA7105);

FVID_control(capChan, VPORT_CMD_EDC_BASE + EDC_CONFIG,

(Ptr)&EVMDM642_vCapParamsTVP51XX);

CACHE_clean(CACHE_L2ALL, 0, 0);

Trong đoạn code trên, chương trình đã sử dụng hai hàm quan trọng trong

driver hiển thị và thu dữ liệu đó là FVID_create(), và FVID_control(). Về

FVID_create, do cổng video DM642 có khả năng hoạt động thu kênh đôi, và bởi vì

phần chung của trình điều khiển có thể được móc nối với bất kỳ thành phần phù hợp

EDC nào cho cấu hình codec bên ngoài, đây là cách bắt buộc để đưa thông tin từ

ứng dụng tới trình điều khiển. Việc này được thực hiện xong khi gọi FVID_create

(). Tham số của hàm này là name, kiểu của name là String. Các quy tắc sau đây

được áp dụng cho các định nghĩa của String : Cho driver Capture: String bao gồm

tới 3 chuỗi con, cách nhau bằng '/'. Ví dụ, "VP0CAPTURE/A/0". Nói chung chức

năng của hàm FVID_create() là phân bố và khởi tạo một đối tượng kênh.

FVID_control : gửi lệnh điều khiển tới mini-driver ( mini-driver phục vụ trực

tiếp quá trình chuyển giao dữ liệu giữa các bộ đệm cho quá trình thu và hiển thị dữ

liệu)

Cú pháp : status = FVID_control (fvidChan,cmd,args);

Sau khi khởi tạo bộ nhớ,thiết lập các kênh thu,kênh hiển thị,các trường hoạt

Page 89: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

89

động cũng như các cấu hình bộ giải mã, bộ mã hóa ta sẽ thực hiện copy dữ liệu từ

bộ đệm capture tới bộ đẹm display để hiển thị.

while(1){/* loop forever */

/* copy data from capture buffer to display buffer */

/***************************************************/

for(i = 0; i < numLines; i++) {

yc2rgb16(coeffs, capFrameBuf->frame.iFrm.y1 + i *

(capLinePitch),

capFrameBuf->frame.iFrm.cb1 + (capLinePitch >> 1) *

i,

capFrameBuf->frame.iFrm.cr1 + (capLinePitch >> 1) *

i,

disFrameBuf->frame.rpFrm.buf + (disLinePitch << 1) *

i,

numPixels);

}

FVID_exchange(capChan, &capFrameBuf);

frame++;

}

Ở đây vòng lặp while là vòng lặp vô hạn để copy dữ liệu thu liên tục từ bộ

đệm capture tới bộ đệm display,chính vì sự copy liên tục này mà ta thu được video.

Nếu bỏ vòng lặp while này đi ta chỉ thu được một ảnh tĩnh.

3.3. Các phần đã thực hiện

3.3.1. Chuyển video từ mầu sang video grayscale và chia màn hình làm

bốn phần, mỗi phần hiển thị một ảnh

3.3.1.1. Chuyển ảnh mầu sang ảnh grayscale

3.3.1.1.1. Nguyên lý chuyển đổi ảnh mầu sang ảnh grayscale

Ảnh màu là ảnh tổ hợp từ 3 màu cơ bản : đỏ (R), lục (G), lam (B) và thường

được thu nhận trên các dải băng tần khác nhau. Để biểu diễn 1 ảnh màu ta cần 16 bit

RGB theo tỷ lệ 5:6:5. Mỗi khoảng này biểu thị cho cường độ sáng của 1 trong các

Page 90: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

90

màu chính. Để lưu trữ ảnh màu ta có thể thực hiện lưu trữ từng màu riêng biệt.

Trong ảnh xám, 1 ảnh được biểu diễn dưới dạng 1 ma trận hai chiều. Mỗi

phần tử của ma trận biểu diễn cho mức xám hay cường độ của ảnh tại vị trí đó. Nếu

sử dụng 8 bit để mã hóa mức xam ta sẽ có 256 mức . Mỗi mức xám được biểu diễn

dưới dạng 1 số nguyên nằm trong khoảng từ 0 tới 255, với mức 0 biểu diễn cho mức

cường độ đen nhất và 255 biểu diễn cho mức cường độ sáng nhất.

Để thực hiện chuyển đổi ảnh RGB sang ảnh đen trắng ta thực hiện theo công

thức :

Ix, y = 0.299 * Redx, y + 0.587 * Greenx, y + 0.114 * Bluex, y

Trong đó I(x,y) là mức xám tại pixel có tọa độ (x,y). Tuy nhiên trong code

do phải thực hiện chuyển đổi từ YUV sang RGB nên sử dụng công thức :

I(x,y)=R(x,y) =G(x,y)= B(x,y)

3.3.1.1.2. Thực hiện

Trong project ảnh đầu vào thu được sau bộ giải mã TVP51xx là chuẩn NTSC

kích cỡ QVGA (320x240 ), ảnh YUV. Mỗi tín hiệu Y, U, V thể hiện bởi 8 bit. Tín

hiệu YUV sau khi thu được ta chỉ giữ lại giá trị Y, giá trị Cb, Cr gán bằng 128.Do

công thức chuyển đổi từ YUV sang RGB :

yc2rgb16 {

const short coeff[5], -- Ma trận hệ số

const unsigned char *y_data, -- Dữ liệu độ chói Y

const unsigned char *cb_data, -- Dữ liệu Cb (U)

const unsigned char *cr_data, -- Dữ liệu Cr

unsigned short *rgb_data, -- Đầu ra RGB 565

unsigned num_pixels – số pixel cần chuyển đổi

}

với ma trận hệ số

coeff[] = { 0x2543, 0x3313, -0x0C8A, -0x1A04, 0x408D };

sẽ thực hiện chuyển đổi tín hiệu YUV sang RGB theo công thức :

Page 91: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

91

[ Y - 16 ] * [ coeff[0] 0.0000 coeff[1] ] = [ R]

[ Cb - 128 ] * [ coeff[0] coeff[2] coeff[3] ] = [ G]

[ Cr - 128 ] * [ coeff[0] coeff[4] 0.0000 ] = [ B]

Hay:

B = 1.164 (Y - 16) + 2.018 ( V- 128)

G = 1.164 (Y - 16) - 0.018 ( V- 128) – 0.391 ( U – 128)

R = 1.164 (Y - 16) + 1.596 ( U – 128)

Việc gán giá trị Cb, Cr bằng 128 làm cho R=G=B=1,164(Y-16). Ta gán giá

trị cho Cb, Cr sử dụng mảng 1 chiều 160 phần tử (bằng với ½ số pixel trên 1 hàng):

unsigned char a[160]={

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 128, 128, 128, 128, 128, 128, 128, 128

};

Page 92: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

92

Sau khi thực hiện hàm chuyển đổi ảnh ta thực hiện hàm chuyển đổi từ YUV

4:2:2 sang RGB với đầu vào Cb, Cr đã được gán như ở trên :

For(i = 0; i < (numLines-16); i++) {

capLinePitch, i);

yc2rgb16(coeffs,

capFrameBuf->frame.iFrm.y1 + i* (capLinePitch) ,

a, a,

disFrameBuf->frame.rpFrm.buf + (disLinePitch) + (disLinePitch* 2) * +(disLinePitch*2) * (numLines+16), (disLinePitch/2)); }

Màn hình hiển thị được bố trí như sau :

Hình 3.2 Bố trí màn hình hiển thị

Thực hiện 4 vòng for cho mỗi màn hình nhỏ:

for(i = 0; i < (numLines-16); i++) {

yc2rgb16(coeffs, capFrameBuf->frame.iFrm.y1 + i *

(capLinePitch),

capFrameBuf->frame.iFrm.cb1 + (capLinePitch /2) *

i,

capFrameBuf->frame.iFrm.cr1 + (capLinePitch /2) *

Page 93: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

93

i,

disFrameBuf->frame.rpFrm.buf + (disLinePitch* 2) *

i,

(disLinePitch/2)); }

Vòng for trên thực hiện hiển thị ¼ màn hình trên cùng bên trái va thể hiện

ảnh màu. Giá trị disLinePitch là số lượng pixel trên 1 hàng của bộ đệm hiển thị, do

đầu ra cần giá tri 16 bit nên disLinePitch cần nhân 2. Giá trị Cb, Cr cũng bằng ½

của Y. Giá trị numLines thểhiện số hàng của bộ đệm capture. Giá trị của i chạy tới

numLines-16 thể hiện rằng ta sẽ bớt 16 pixel của màn hình để giành cho việc hiển

thị chữ.

For(i = 0; i < (numLines-16); i++) {

dao_anh_anhtiep(capFrameBuf->frame.iFrm.y1, capLinePitch, i);

yc2rgb16(coeffs, capFrameBuf->frame.iFrm.y1 + i*

(capLinePitch) ,a,a,

disFrameBuf->frame.rpFrm.buf + (disLinePitch) +

(disLinePitch* 2) * i +(disLinePitch* 2) * (numLines+16),

(disLinePitch/2));

dao_anh_anhtiep(capFrameBuf->frame.iFrm.y1, capLinePitch, i);

}

Vòng for trên thực hiện hiển thị ảnh grayscale đảo chiều ở góc phải màn

hình. Giá trị disLinesPitch thể hiện sự dịch chuyển sang ngang ½ màn hình. Giá trị

(disLinePitch* 2) * (numLines+16) thể hiện sự dịch chuyển xuống 16 hàng tiếp

theo.

for(i = 0; i < (numLines-16); i++) { //o day bot moi anh di

16 dong de sau khi hien thi 2 anh tren va duoi se du 32 dong

de hien thi chu

…..

yc2rgb16(coeffs, ys ,a , a ,

disFrameBuf->frame.rpFrm.buf + (disLinePitch) +

(disLinePitch* 2) * i,

(disLinePitch/2));}

Vòng for trên thực hiện hiển thị ảnh sau khi đã được tách biên với thuật toán

Sobel ở góc phải phía trên của màn hình. Giá trị disLinePitch cộng thêm vào thể

hiện sự dịch sang phải ½ màn hình.

Page 94: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

94

for(i = 0; i < (numLines-16); i++) {

yc2rgb16(coeffs, ys, a , a ,

disFrameBuf->frame.rpFrm.buf + (disLinePitch* 2) * i +

(disLinePitch* 2) * (numLines+16), (disLinePitch/2));

}

Vòng for trên thể hiện ảnh sau khi được lọc Gauss và tách biên Sobel được

hiển thị ở góc trái của màn hình. Giá trị (disLinePitch* 2) * (numLines+16) thể hiện

sự dịch chuyển xuống 16 hàng tiếp theo.

Phần còn lại có kích thước 32x640 được dành cho việc hiển thị chữ

3.3.2. Thực hiện thuật toán làm nổi đường biên. Tăng giảm độ sáng của

ảnh

3.3.2.1. Phương pháp Gradient

Phương pháp gradient là phương pháp dò biên cục bộ dựa vào cực đại của đạo hàm

. theo định nghĩa,gradient là một vector có các thành phần biểu thị tốc độ thay đổi

giá trị của điểm ảnh theo hai hướng x và y. các thành phần của gradient được tính

bởi:

Với dx là khoảng cách giữa các điểm theo hướng x ( khoảng cách tính bằng số điểm

) và tương tự với dy. Trên thực tế,người ta hay dùng với dx=dy=1.

Trong phương pháp gradient,người ta lại chia thành hai kỹ thuật : kỹ thuật gradient

và kỹ thuật la bàn.

a. Kỹ thuật gradient

Từ định nghĩa về Gradient , ta thấy nếu áp dụng nó vào xử lý ảnh , việc tính toán

sẽ rất phức tạp, để đơn giản hóa mà không làm mất tính chất của phương pháp

Gradient người ta sử dụng một cặp mặt nạ trực giao ( theo 2 hướng vuông góc ).

Nếu định nghĩa g1,g2 là gradient tương ứng theo hai hướng x và y, thì biên độ

A0 của gradient tại điểm g(m,n) được tính theo công thức:

Page 95: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

95

Chú ý: để giảm tính toán ta có thể tính A0 theo công thức

Các toán tử đạo hàm khá nhiều,nhưng trong phạm vi đồ án chỉ xét toán tử

sobel

---------------------------------------------------------------------------------------------

-

Thuật toán dò biên theo kỹ thuật gradient như sau:

Đàu vào : ma trận ảnh cần tìm biên :

Mặt nạ Hx và Hy

Đầu ra : Một ma trận ảnh ( chứa các đường biên được tìm thấy )

Giải thuật:

For ( mỗi điểm ảnh của ảnh )

If ( nếu điểm ảnh nằm trên đường viền ảnh )

Gán các giá trị các điểm ảnh trên đường viền ảnh = 0 ( hoặc bằng

mầu nền ảnh 0

Else {

Tính xấp xỉ Gradient theo chiều x ( Gx ): nhân chập với mặt nạ Hx.

Tính xấp xỉ Gradient theo chiều y ( Gy ): nhân chập với mặt lạ Hy

Tính giá trị điểm ảnh theo công thức xấp xỉ G:

G = |Gx| + |Gy|

Nếu giá trị điểm ảnh lớn hơn chỉ số màu của ảnh thì gán giá trị ảnh là giá trị

màu lớn nhất. }

Toán tử ( mặt nạ sobel )

Page 96: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

96

Với Hx,Hy lần lượt là mặt nạ theo hướng ngang (x) và hướng dọc (y).

b. Kỹ thuật la bàn

Về phương pháp kỹ thuật này tương tự kỹ thuật Gradient . tuy nhiên,điểm

khác là kỹ thuật Gradient chỉ lấy đạo hàm theo hai hướng ,còn kỹ thuật la bàn

lấy đạo hàm theo 8 hướng chính : Bắc , Nam , Đông , Tây và Đông Bắc , Tây

Bắc , Đông Nam , Tây Nam . Bằng cách sử dụng 8 mặt nạ cho 8 hướng khác

nhau .

Có nhiều toán tử la bàn , nhưng ở đây ta tiếp tục sử dụng toán tử sobel đặc

trựng cho 8 hướng bởi 8 ma trận mặt nạ 3 x 3 như sau.

, , ,

, , ,

Ký hiệu Ai; i= 1,2,…,8 là Gradient theo 8 hướng như mặt nạ kể trên,khi đó

biên độ Gradient tại điểm ảnh (x,y) được tính theo công thức:

A(x,y) = Max(|gi(x,y)|) I = 1,2,…8.

Thuật toán dò biên theo kỹ thuật la bàn như sau:

---------------------------------------------------------------------------------------------

--

Đầu vào : ma trận ảnh cần tìm biên:

Mặt nạ mask1(i) ( i=1,2,…,8).

Đầu ra : một ma trận ảnh ( chứa các đường biên được tìm thấy )

Giải thuật:

For ( mỗi điểm ảnh của ảnh )

Page 97: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

97

If ( nếu điểm ảnh nằm trên đường viền ảnh)

Gán các giá trị điểm ảnh trên đường viền ảnh = 0 ( hoặc bằng màu nền của

ảnh )

Else{

Tính xấp xỉ Gradient theo các hướng khác nhau:

Gi = I (*) mask1(i)

Tính giá trị điểm ảnh theo công thức xấp xỉ G:

G = Max (Gi) (i=1,2,…,8)

Nếu giá trị điểm ảnh lớn hơn chỉ số màu của ảnh thì gán giá trị ảnh là giá trị

màu lớn nhất.

}

---------------------------------------------------------------------------------------------

-

Mỗi toán tử sobel khi thực hiện chập với ma trận mặt lạ của ảnh chỉ cho sự

nổi được một cạnh theo 1 hướng, vì vậy để nổi được 1 cạnh theo tám hướng

ta phải thực hiện 8 phép chập. Nhưng như vậy thì tốc độ của thuật toán sẽ

giảm đáng kể, người ta đã định nghĩa một ma trận mà để nổi một cạnh theo 8

hướng thì chỉ cần thực hiện 1 phép chập mà thôi, đó chính là toán tử quick

mask

Sau đây là đoạn code cho các thuật toán phát hiện biên ảnh.

/*Thực hiện thuật toán la bàn dùng toán tử sobel */

unsigned char sobel_atp( unsigned char *ys, unsigned char

*mask, int cot)

{

int

temp_sobel1,temp_sobel2,temp_sobel3,temp_sobel4,temp_sobel5,t

emp_sobel6,temp_sobel7,temp_sobel8;

Page 98: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

98

// Xu ly thuat toan tach bien

temp_sobel1= *(mask) + 2* *(mask+3) +

*(mask+6) - *(mask+2) - 2* *(mask+5) - *(mask+8);

temp_sobel2= *(mask+1) + 2* *(mask) +

*(mask+3) - *(mask+5) - 2* *(mask+8) - *(mask+7);

temp_sobel3= *(mask) + 2* *(mask+1) +

*(mask+2) - *(mask+6) - 2* *(mask+7) - *(mask+8);

temp_sobel4= *(mask+1) + 2* *(mask+2) +

*(mask+5) - *(mask+3) - 2* *(mask+6) - *(mask+7);

temp_sobel5= -*(mask) - 2* *(mask+3) -

*(mask+6) + *(mask+2) + 2* *(mask+5) + *(mask+8);

temp_sobel6= -*(mask+1) - 2* *(mask) -

*(mask+3) + *(mask+5) + 2* *(mask+8) + *(mask+7);

temp_sobel7= -*(mask) - 2* *(mask+1) -

*(mask+2) + *(mask+6) + 2* *(mask+7) + *(mask+8);

temp_sobel8= -*(mask+1) - 2* *(mask+2) -

*(mask+5) + *(mask+3) + 2* *(mask+6) + *(mask+7);

if(temp_sobel1<0)

temp_sobel1= temp_sobel1* (-1);

if(temp_sobel2<0)

temp_sobel2= temp_sobel2* (-1);

if(temp_sobel3<0)

temp_sobel3= temp_sobel3* (-1);

if(temp_sobel4<0)

temp_sobel4= temp_sobel4* (-1);

if(temp_sobel5<0)

temp_sobel5= temp_sobel5* (-1);

if(temp_sobel6<0)

temp_sobel6= temp_sobel6* (-1);

if(temp_sobel7<0)

temp_sobel7= temp_sobel7* (-1);

if(temp_sobel8<0)

temp_sobel8= temp_sobel8* (-1);

if ((temp_sobel1 + temp_sobel2 +temp_sobel3 +

temp_sobel4 +temp_sobel5 + temp_sobel6 +temp_sobel7 +

Page 99: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

99

temp_sobel8) >1024)

*(ys + cot)= 255;

else

*(ys + cot)= 0;

return *(ys + cot);

}

/* Thực hiện thuật toán phát hiện biên dùng toán tử quick mask */

for(i = 1; i < 239; i++) { y [i * (capLinePitch)]= 0; y [i * (capLinePitch) + 319 ]= 0; } for(j = 0; j < 320; j++) { y [j ]= 0; y [239 * (capLinePitch) + j ]= 0; }*/ while(1){ for(i = 0; i < (numLines); i++) { if(i==0 || i==(numLines-1)){ for(j=0; j<capLinePitch; j++) y[j]=0; } else{ y[0]=0; y[capLinePitch -1]=0; for(j = 1; j < (capLinePitch -1); j++) {

`temp= 4* *(capFrameBuf->frame.iFrm.y1 + (i) * (capLinePitch) + j) - *(capFrameBuf->frame.iFrm.y1 + (i-1) * (capLinePitch) + (j-1))- *(capFrameBuf->frame.iFrm.y1 + (i-1) * (capLinePitch) + (j+1))- *(capFrameBuf->frame.iFrm.y1 + (i+1) * (capLinePitch) + (j-1))- *(capFrameBuf->frame.iFrm.y1 + (i+1) * (capLinePitch) + j+1); if (temp >128|| temp <-128) y[j] = 255;

else y[j] = 0; } }

Nhận xét: Sau khi thực các thuật toán phát hiện ảnh với hai toán tử sobel (thực hiện chập theo cả 8 hướng ) và quick mask nhận thấy kết quả của chúng có nhiều sự khác biệt.

Hình 3.2 Hình ảnh hiển thị trên màn hình,so sánh giữa các ảnh khác nhau.

Page 100: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

100

Hình 3.3.2.1 Hiển thị các ảnh khác nhau trên màn hình

Hình trên cùng bên phải sử dụng toán tử sobel, hình dưới cùng bên trái sử dụng toán tử quick mask , hình trên cùng bên trái là ảnh grayscale,hình dưới cùng bên phải là ảnh gốc.

3.3.2.2. Thuật toán làm tăng giảm độ sáng tối của ảnh

Giả sử có ảnh đầu vào I ~ kich thước ( m x n ) và số nguyên c

Khi đó kỹ thuật tăng,giảm độ sáng được thể hiện qua thuật toán:

--------------------------------------------------------------------------------------------

B1: Với mỗi điểm ảnh,thực hiện phép cộng mức xám của nó với giá trị c

For (int i = 0;i<m;i++)

For (int j =0;j<n;j++)

I [i,j] =I [i,j] +c;

B2: Gán giá trị độ xám mới cho điểm ảnh đầu ra.

Nếu c>0: ảnh sáng lên ;

Nếu c<0: ảnh tối đi;

Page 101: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

101

---------------------------------------------------------------------------------------------

-

/* code chương trình thực hiện việc tăng,giảm độ sáng của ảnh */

void increaselight (unsigned char *duyetmang_y,

unsigned char *duyetmang_cb,unsigned char

*duyetmang_cr,

unsigned char c,

int numLines,

int capLinePitch){

int ki;

for(ki=0; ki< (capLinePitch/2); ki++) {

*duyetmang_y = *duyetmang_y + c;

duyetmang_y + numLines* (capLinePitch) + ki;

*duyetmang_cb = *duyetmang_cb + c;

duyetmang_cb + numLines* (capLinePitch) + ki;

*duyetmang_cr = *duyetmang_cr +c;

duyetmang_y + numLines* (capLinePitch) + ki;}}

3.3.3. Phương pháp lọc gauss, thuật toán viết dòng chữ chạy và đảo ảnh

3.3.3.1. Phương pháp lọc gauss

Gaussian Blur là cách làm mờ một ảnh bằng hàm Gaussian. Phương pháp

này được ứng dụng một cách rộng rãi và hiệu quả trong các phần mềm xử lý đồ họa.

Nó cũng là công cụ phổ biến để thực hiện quá trình tiền xử lý (preprocessing) hình

ảnh dùng làm dữ liệu đầu vào tốt cho các phân tích cao cấp hơn như trong

Computer Vision, hoặc cho các giải thuật được thực hiện trong một tỉ lệ khác của

hình được cho. Nó có thể giúp làm giảm nhiễu (Noise) và mức độ chi tiết (không

mong muốn) của hình ảnh.

Một cách trực quan, đây được xem như là phương pháp làm mờ mịn cũng

giống như hiệu ứng hình ảnh được đặt dưới một lớp màn trong suốt bị mờ. Nó

không giống với trường hợp hình ảnh bị mờ do hậu quả của ống kính bị mất tiêu

điểm (out of focus) hay do bóng của đối tượng dưới ánh sáng thường.

Trong toán học, việc ứng dụng Gaussian Blur cho một hình cũng chính là

Page 102: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

102

tính tích chập (Convolution) hình đó với hàm Gaussian. Vì biến đổi Fourier của một

Gaussian sẽ tạo ra một Gaussian khác cho nên nếu xét trên miền tần số thì phương

pháp này sẽ làm giảm các thành phần có tần số cao trong hình. Hay nói cách khác

Gaussian Blur là một bộ lọc tần số cao (low pass filter : chỉ giữ lại các thành phần

tần số thấp).

Như vậy phát biểu một cách thực hành hơn Gaussian blur là một loại bộ lọc

làm mờ ảnh, sử dụng lý thuyết hàm Gaussian (cũng được biết đến như là dạng phân

tán chuẩn (Normal Distribution) trong thống kê) để tính toán việc chuyển đổi

(Transformation) mỗi Pixel của hình. Dưới đây là phương trình hàm Gaussian dùng

trong không gian một chiều và hai chiều.

Trong đó x và y là tọa độ theo hai trục đứng và ngang còn σ là phương sai

chuẩn của phân tán Gaussian hay là giá trị quyết định độ lệch giữa các điểm trên bề

mặt Gaussian. Trong không gian hai chiều, công thức này sản sinh ra những đường

viền là những đường tròn đồng tâm, tuân theo logic phân tán Gaussian từ điểm

trung tâm. Giá trị từ hệ thống phân tán này sẽ được sử dụng để xây dựng một ma

trận tích chập (Convolution) dùng tính tóan phép tích chập (Convolution) với hình

ảnh gốc.

Giá trị mới của mỗi Pixel sau khi tính tích chập với kernel đại diện cho hàm

Gaussian có thể coi là trung bình lượng giá của các pixel xung quanh nó. Ta thấy

rằng giá trị lượng giá của phần tử trung tâm kernel tương ứng với pixel đang xét là

lớn nhất, giá trị này sẽ nhỏ hơn đối với các phần tử tương ứng với những pixel kế

cận một cách đối xứng và tỉ lệ thuận với khoảng cách của phần tử này với trung

tâm. Tính chất này giúp giữ lại đường viền và biên cũng như làm mờ một cách đồng

bộ hơn so với các phương pháp khác.

Trong lý thuyết, hàm Gaussian tại mỗi điểm trên hình là khác 0. Điều này có

nghĩa là Gaussian Kernel nên có kích thước bằng với hình ảnh và giá trị tại mỗi

phần tử luôn khác 0. Tuy nhiên trong thực hành, do việc tính tóan dựa trên xấp xỉ

rời rạc (Discrete Approximation) cho nên giá trị của các phần tử trên bề mặt

Gaussian ở khỏang cách lớn hơn 3σ so với trung tâm gần như không đáng kể (tiệm

cận 0). Do vậy các phân tán Gaussian ngòai bán kính này sẽ bị bỏ qua, đó cũng là lý

do mà thông thường Gaussian kernel có kích thước giới hạn 3, 5, 7... (Cái này còn

tùy vào giá trị phương sai chuẩn mà bạn chọn). Khoảng cách giữa hai điểm gần

nhau trong Gaussian Kernel là σ.

Do đặc tính có cấu trúc như những hình tròn đối xứng, với hình hai chiều,

Gaussian blur có thể được áp dụng như là hai phép tính toán một chiều độc lập (Độc

lập tuyến tính - Linearly Separable). Có nghĩa là hiệu quả thu được từ tính toán trên

ma trận hai chiều có thể tương đương với cách ứng dụng tính toán một loạt các

Page 103: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

103

Gaussian 1 chiều theo hướng ngang và đứng. Điều này rất hữu ích trong việc giảm

chi phí tính toán thể hiện khá rỏ trong hai công thức tương ứng sau:

Một vấn đề cần quan tâm nữa của Gaussian blur là nếu bạn sử dụng lần lượt

nhiều Gaussian cho một ảnh thì kết quả cũng tương đương với khi bạn dùng một

Gaussian lớn hơn có bán kính bằng căn bậc hai tổng bình phương các bán kính của

các Gaussian đã dùng.

Cũng vì mối quan hệ này mà thời gian tính toán sẽ không thể được tiết kiệm

khi bạn chia nhỏ các Gaussian. Do đó khuyến cáo nên sử dụng Gaussian đơn trong

tính toán nếu có thể.

Ngoài ra Gaussian blur cũng được sử dụng để giảm kích thước của hình ảnh.

Khi tiến hành xử lý giảm tỉ lệ lấy mẩu tín hiệu cho ảnh (Downsampling) người ta

thường áp dụng bộ lọc tần số cao (Low pass filter) trước khi tái lấy mẫu. Điều này

là để chắc chắn những thông tin không mong muốn, tần số cao sẽ không xuất hiện

trong hình đã được Downsampling... (loại bỏ răng cưa Aliasing).

Với những gì đã trình bày ở trên, chúng ta cũng đã nhắc tới bề mặt, ma trận

Gaussian, đó chính là hiện thực hóa của hàm Gaussian trong thực hành. Hàm

Gaussian được áp dụng vào ảnh thông qua phép Convolution giữa ma trận Gaussian

và ma trận điểm ảnh 2 chiều. Dưới đây là ma trận Gaussian được sử dụng để chập

với ma trận điểm ảnh thực hiện trong đồ án:

Sau đây là đoạn mã nguồn thể hiện phép lọc gauss:

void gauss_atp( unsigned char *ys, unsigned char *mask, int

cot){

int sum;

sum = (2* *(mask) + 4* *(mask+1) + 5* *(mask+2) +

2* *(mask + 4) + 4* *(mask+3)+ 4* *(mask+5) + 9* *(mask+6)

+ 12* *(mask+7) + 4* *(mask + 9) + 9* *(mask+8)+ 5*

*(mask+10) + 12* *(mask+11) + 15* *(mask+12) + 5* *(mask +

14) + 12* *(mask+13)+ 4* *(mask+15) + 9* *(mask+16) + 12*

*(mask+17) + 4* *(mask + 19) + 9* *(mask+18)+ 2* *(mask+20) +

4* *(mask+21) + 5* *(mask+22) + 2* *(mask + 24) + 4*

*(mask+23))/159;

*(ys + cot)= (unsigned char)( sum);}

Page 104: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

104

3.3.3.2. Thuật toán hiển thị và dịch dòng chữ trên màn hình

Ý tưởng:

Khi ghi dữ liệu video đã xử lý vào bộ đệm lưu ảnh đầu ra disLinePitch, ta dành

một vùng nhớ có kích thước 32x640 bytes để làm nơi chứa dữ liệu các kí tự chữ cái

( trong chương trình, mỗi pixel được biểu diễn bằng 16 bits chứa thông tin RGB của

pixel đó, do vậy, với vùng nhớ 32x640 bytes, ta có thể lưu giá trị màu sắc của

32x320 pixels trên màn hình).

Hình 3.3.3.1 Bố cục màn hình hiển thị

Mỗi ký tự có kích thước hiển thị trên màn hình là 17x 24 pixels. Tuy nhiên,

để tiện cho việc hiển thị, ta mở rộng ký tự thành 20x24 pixels để chứa thêm dấu

cách:

Page 105: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

105

Hình 3.3.3.2 : Kích thước của một chữ

Vì dữ liệu mà ta xử lý là các mẫu dữ liệu Y, Cb và Cr, sau đó qua hàm

chuyển đổi để chuyển YCbCr thành 16 bits dữ liệu RGB, nên ta cần đến ba mảng

phục vụ cho việc lưu giá trị Y, Cb và Cr ( trong đó, mảng lưu mẫu dữ liệu Y có kích

thước gấp đôi các mảng lưu mẫu dữ liệu Cb và Cr). Để việc trình bày trở nên đơn

giản, chúng ta chỉ xét mảng chứa mẫu dữ liệu Y, các mảng lưu mẫu dữ liệu Cb và

Cr là tương tự.

Thay vì sử dụng một mảng 20x24 phần tử để lưu trữ mẫu dữ liệu Y cho mỗi

ký tự, ta có thể dùng một mảng 20 phần tử để chứa dữ liệu mẫu Y của từng dòng

của ký tự, nhờ vậy có thể tiết kiệm bố nhớ chương trình. Tuy nhiên, ta sẽ phải gán

dữ liệu mẫu Y của từng dòng của ký tự vào mảng rồi hiển thị, sau đó lặp lại việc

này với dòng khác. Sau 24 lần gán và hiển thị liên tục, ta sẽ được một ký tự đầy đủ

trên màn hình.

Page 106: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

106

Tiếp theo, sau khi thực hiện việc hiển thị tất cả các ký tự cần thiết, ta sẽ dịch

dòng chữ sang trái bằng cách lưu lại tất cả các thông tin về tất cả các dòng của tất cả

các ký tự vào các ô nhớ lân cận trái của chúng và cách chúng 4 ô nhớ trong bộ đệm

dữ liệu đầu ra.

Hình 3.3.3.3 Cách chuyển dữ liệu của một dòng của ký tự thành giá trị trung gian sử

dụng trong hàm gán giá trị cho mảng.

Cách thực hiện:

Bước 1: Khai báo một mảng letter gồm 20 phần tử để lưu dữ liệu mẫu Y của từng

dòng của ký tự.

Bước 2: Xây dựng hàm gán giá trị cho mảng letter ( tên của hàm là

truyen_du_lieu_cho_mang) với các tham số như sau:

Con trỏ array : Đại diện cho mảng cần được gán giá trị. Khi gọi hàm trong

chương trình, array sẽ đại diện cho mảng letter truyền vào hàm, array là con trỏ

Page 107: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

107

kiểu unsigned char.

Số nguyên không dấu nume : Biểu diễn số lượng pixel sẽ được hiển thị và

không được hiển thị xen kẽ nhau. VD: từ hình 3.3.4.2, để hiển thị dòng thứ 12 của

ký tự ‘N’, ta truyền vào hàm truyen_du_lieu_cho_mang giá trị nume =

205030502, sau đó, khi hàm truyen_du_lieu_cho_mang thực thi, nume sẽ được

phân tách thành 5 trường số là t1 = 2; t2 = 05; t3 = 03; t4 = 05 và t5 = 02. Trong

đó, t1, t3, t5 sẽ hiển thị giống nhau trên màn hình và t2, t4 sẽ hiển thị giống nhau

trên màn hình.

Tham số enable: quy định trình tự hiển thị của các trường số chứa trong

tham số nume. Nếu enable =0, trường dữ liệu đầu tiên của nume sẽ không được

hiển thị ( màu đen) . Ngược lại, nếu enable khác 0 thì trường dữ liệu đầu tiên của

nume sẽ được hiển thị. Như vậy, nếu tham số enable khác 0 thì kết quả thu được

của 20 pixels trên màn hình ( với nume = 205030502 ) lần lượt là: 2 pixels hiển thị

(màu trắng ) rồi đến 5 pixels không hiển thị ( màu đen), sau đó hiển thị 3 pixels,

không hiển thị 5 pixels rồi cuối cùng hiển thị 2 pixels. Ngược lại, nếu enable = 0,

kết quả thu được của dòng thứ 12 của ký tự ‘N’ sẽ ngược lại.

Dưới đây là mã nguồn của hàm truyen_du_lieu_cho_mang :

void truyen_du_lieu_cho_mang(unsigned char *array, unsigned int nume, unsigned char enable )

{

unsigned char i, t1, t2, t3, t4, t5;

t1 = (nume/100000000);

t2 = (nume - t1 * 100000000)/1000000;

t3 = (nume - t1 * 100000000 - t2 * 1000000)/10000;

t4 = (nume - t1 * 100000000 - t2 * 1000000 - t3 * 10000)/100;

t5 = nume - t1 * 100000000 - t2 * 1000000 - t3 * 10000 - t4 * 100;

if (enable ==0)

{

for(i=0; i< t1; i++)

*( array +i +1)= 0;

for(i=0; i< t2; i++)

*( array +i +1 + t1)= 235;

Page 108: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

108

for(i=0; i< t3; i++)

*( array +i +1 + t1 + t2)= 0;

for(i=0; i< t4; i++)

*( array +i +1 + t1 + t2 + t3)= 235;

for(i=0; i< t5; i++)

*( array +i + t1 +1+ t2 + t3 + t4)= 0;

}

else

{

for(i=0; i< t1; i++)

*( array +1 +i)= 235;

for(i=0; i< t2; i++)

*( array +i +1 + t1)= 0;

for(i=0; i< t3; i++)

*( array +i +1 + t1 + t2)= 235;

for(i=0; i< t4; i++)

*( array +i + t1 +1+ t2 + t3)= 0;

for(i=0; i< t5; i++)

*( array +i + t1 +1 + t2 + t3 + t4)= 235;

}

}

Bước 3: Thực hiện lặp đi lặp lại việc gọi hàm gán dữ liệu cho mảng và hiển thị chúng trong chương trình chính cho đến khi các ký tự đã được hiển thị hết.

Ví dụ:

// Chu T

truyen_du_lieu_cho_mang (g,116010000 ,0);//1, 2

yc2rgb16(coeffs, g,a ,a ,disFrameBuf->frame.rpFrm.buf + (disLinePitch* 2) * (numLines -10) + 838- offset,20);

yc2rgb16(coeffs, g,a ,a ,disFrameBuf->frame.rpFrm.buf + (disLinePitch* 2) * (numLines -9) + 838- offset,20);

//tat ca cac dong con lai

Page 109: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

109

truyen_du_lieu_cho_mang (g, 802080000,0);

for(ti=-8; ti< 14; ti++)

yc2rgb16(coeffs, g,a ,a ,disFrameBuf->frame.rpFrm.buf + (disLinePitch* 2) * (numLines + ti) + 838- offset,20);

3.3.3.3. Phương pháp đảo ảnh 180 ͦ:

Ý tưởng:

Để hiển thị một ảnh xoay ngược 180 ͦ , ta sẽ sử dụng thuật toán đảo ngược dữ

liệu của một mảng. Ở đây ta có thể dùng trực tiếp mảng chứa dữ liệu mẫu Y, Cb và

Cr từ bộ đệm ảnh đầu vào rồi qua hàm đảo ngược mảng để được một mảng chứa

các dữ liệu mẫu Y, Cb và Cr đối ngược với giá trị ban đầu của chúng. Sau đó, ta

thực hiện chuyển đổi những màng này thành các dữ liệu RGB và lưu vào bộ đệm

ảnh đầu ra. Cuối cùng, ta lại thực hiện lại việc đảo ngược các mảng chứa dữ liệu

mẫu Y, Cb và Cr một lần nữa để chúng trở lại trạng thái đầu tiên như khi chưa được

tác động. Chú ý, mỗi mảng dữ liệu mẫu mà ta tác động chỉ lưu trữ dữ liệu của một

dòng của ảnh đầu vào, vì thế, để hiển thị toàn bộ ảnh, ta phải dùng một vòng lặp để

thực hiện thuật toán trên trên tất cả các dòng của ảnh đầu vào.

Các bước thực hiện:

Bước 1: Xây dựng hàm đảo ngược dữ liệu của một mảng ( tên của hàm này là

dao_mang )với các tham số:

+ Con trỏ picture : Đại diện cho mảng chứa dữ liệu mẫu Y, Cb hoặc Cr

sẽ được đảo ngược dữ liệu.

+ Tham số size: Đây là một số nguyên không dấu cho biết kích thước của

mảng ( hay chính là kích thước của mỗi dòng ảnh đầu vào).

+ Tham số line: Tham số này giúp ta xác định dòng ảnh đầu vào nào sẽ

được đảo ngược dữ liệu.

Mã nguồn của hàm dao_mang như sau:

void dao_mang (unsigned char *picture,int size, int line )

{

int ti, tj;

unsigned char temp;

// Dao mang anh de hien thi anh nguoc 180* atp

for(ti=0, tj= (size-1); ti< (size/2), tj>((size-2)/2);

ti++, tj--)

{

temp= *(picture + line* (size) + ti);

Page 110: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

110

*(picture + line * (size) + ti)= *(picture + line *

(size) + tj);

*(picture + line * (size) + tj)= temp;

}

}

Bước 2: Gọi hàm đảo ngược mảng trong chương trình chính.

Ví dụ:

dao_mang(capFrameBuf->frame.iFrm.y1,capLinePitch, i);

dao_mang(capFrameBuf->frame.iFrm.cr1,capLinePitch, i);

dao_mang(capFrameBuf->frame.iFrm.cb1,capLinePitch, i);

Chú ý, trong chương trình chúng ta chỉ đảo ngược một ảnh grayscale nên chỉ

cần đảo ngược mảng dữ liệu mẫu Y.

Bước 3: Gọi hàm chuyển đổi dữ liệu mẫu Y, Cb, Cr thành dữ liệu RGB:

yc2rgb16(coeffs, capFrameBuf->frame.iFrm.y1 + i*

(capLinePitch) ,

a,

a,

disFrameBuf->frame.rpFrm.buf + (disLinePitch)

+ (disLinePitch* 2) * i +(disLinePitch* 2) * (numLines+16),

(disLinePitch/2));

Bước 4: Gọi hàm đảo ngược mảng trong chương trình chính để dữ liệu mẫu Y, Cb.

Cr trở về trạng thái ban đầu.

Chương trình trong chương trình chính sẽ như sau:

dao_mang(capFrameBuf->frame.iFrm.y1, capLinePitch, i);

//Hien thi 1/4 man hinh duoi cung, ben phai the hien anh

grayscale

yc2rgb16

Page 111: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

111

(

coeffs, capFrameBuf->frame.iFrm.y1 + i* (capLinePitch),

a,

a,

disFrameBuf->frame.rpFrm.buf + (disLinePitch) +

(disLinePitch* 2) * i +(disLinePitch* 2) *

(numLines+16), disLinePitch/2)

);

dao_mang(capFrameBuf->frame.iFrm.y1, capLinePitch, i);

Page 112: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

112

KẾT LUẬN

Sau một thời gian nghiên cứu và thực hiện đồ án, đồ án đã đạt được một số

chỉ tiêu kỹ thuật đặt ra ban đầu . Những thuật toán chạy trên kit đã cho những

kết quả gần dúng với lý thuyết. Tuy nhiên vì một số trục trặc về thiết bị nên

nhóm chưa kịp ghi lại nhiều những kết qủa đã thực hiện. Hướng phát triển của

đồ án trong tương lai là sẽ không chỉ dừng lại ở mức nghiên cứu những thuật

toán cơ bản,mà sẽ thực hiện nghiên cứu những vấn đề phục vụ nhiều cho thực

tiễn,những ứng dụng của ngành khoa học xử lý video hình ảnh vẫn đang nghiên

cứu và hoàn thiện.

Do hạn chế về thời gian, khuôn khổ của đồ án cũng như kinh nghiệm thực

tiễn của nhóm chưa nhiều nên không tránh khỏi những sai sót và nhầm lẫn, vì

vậy sự đóng góp của thầy cô và các bạn không chỉ giúp đồ án của nhóm có

chất lượng cao hơn mà còn trang bị cho chúng em một kiến thức vững vàng

hơn trong nghiên cứu và công tác sau này.

Nhóm chúng em xin chân thành cảm ơn!

Page 113: Báo Cáo Đồ Án 2.1

ĐỒ ÁN TỐT NGHIỆP

113

DANH MỤC TÀI LIỆU THAM KHẢO

[1] Dwayne Phillips , Image Processing in C , second edition, R & D

Publications ,2000

[2] Shehrzad Qureshi, Embedded image processing on the TMS320C6000 DSP

& Example in Code Composer Studio and MATLAB , Springer Science+ Business

Media, 2005

[3] Nguyễn Chí Hướng, Đồ án tốt nghiệp đề tài: “Lập trình một số bài toán cơ

bản trong xử lý ảnh số”, Lớp tin học trắc địa K50, Đại học Mỏ Địa Chất

[4] Evaluation Module (EVM)for the TMS320DM642 – Quick start guide,

author : www.spectrumdigital.com , truy nhập cuối cùng ngày 04/06/2013

[5] Texas Instruments - The TMS320DM642 Video Port Mini-Driver.

[6] Texas Instruments - TMS320DM642 Video/Imaging Fixed-Point Digital

Signal Processor.

[7] Texas Instruments - Driver Examples on the DM642 EVM.

[8] Rulph Chassaing - Digital Signal Processing and Applications with the

C6713 and C6416 DSK : Worcester Polytechnic Institute

[9] Texas Instruments - Literature Number: SPRU328B - “ Code Composer

Studio

User’s Guide” February 2000.

[10] TS Nguyễn Thanh Bình , ThS Võ Nguyễn Quốc Bảo : Giáo trình xử lý âm

thanh và hình ảnh - Học viện công nghệ bưu chính viễn thông.