báo cáo Đồ Án 2.1
TRANSCRIPT
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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:
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
ĐỒ Á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 )
ĐỒ Á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ệ .
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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.
ĐỒ Á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ả.
ĐỒ Á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
ĐỒ Á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ụ
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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ã.
ĐỒ Á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ộ
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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.
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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”
ĐỒ Á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
ĐỒ Á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.
ĐỒ Á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.
ĐỒ Á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
ĐỒ Á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.
ĐỒ Á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
ĐỒ Á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.
ĐỒ Á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…”
ĐỒ Á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”.
ĐỒ Á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.
ĐỒ Á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.
ĐỒ Á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.
ĐỒ Á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.
ĐỒ Á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.
ĐỒ Á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.
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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ệ
ĐỒ Á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à
ĐỒ Á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ữ
ĐỒ Á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.
ĐỒ Á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.
ĐỒ Á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.
ĐỒ Á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-
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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.
ĐỒ Á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ỉ
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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 :
ĐỒ ÁN TỐT NGHIỆP
69
Hình 2. 20 Khung hình 1 ảnh I
ĐỒ Á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
ĐỒ Á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.
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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ừ
ĐỒ Á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ể
ĐỒ Á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.
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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)
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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 .
ĐỒ Á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 */
ĐỒ Á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
ĐỒ Á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
ĐỒ Á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 :
ĐỒ Á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
};
ĐỒ Á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) *
ĐỒ Á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.
ĐỒ Á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:
ĐỒ Á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 )
ĐỒ Á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 )
ĐỒ Á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;
ĐỒ Á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 +
ĐỒ Á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.
ĐỒ Á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;
ĐỒ Á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à
ĐỒ Á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
ĐỒ Á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);}
ĐỒ Á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:
ĐỒ Á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.
ĐỒ Á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ỏ
ĐỒ Á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;
ĐỒ Á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
ĐỒ Á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);
ĐỒ Á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
ĐỒ Á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);
ĐỒ Á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!
ĐỒ Á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.