Các chip FPGA ngày nay có mật độ tích hợp lớn, tốc độ đáp ứng cao và giá cả ngày càng hạ cùng với các công cụ hỗ trợ của các nhà sản xuất liên tiếp được tung ra như công cụ hỗ trợ DSP, c
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-CAO MINH TRÍ
XỬ LÝ TIẾNG NÓI TRÊN NỀN CÔNG NGHỆ NHÚNG
FPGA
LUẬN VĂN THẠC SĨ KHOA HỌC
CHUYÊN NGÀNH: ĐO LƯỜNG VÀ CÁC HỆ THỐNG
ĐIỀU KHIỂN
NGƯỜI HƯỚNG DẪN KHOA HỌC :
PGS.TSKH TRẦN HOÀI LINH
Hà Nội – Năm 2011
Trang 2Mở đầu 1
LỜI CAM ĐOAN
Tôi xin cam đoan quyển luận văn thạc sỹ khoa học: “Xử lý tiếng nói trên
nền công nghệ nhúng FPGA” do tôi tự thiết kế dưới sự hướng dẫn của thầy giáo
PGS.TSKH Trần Hoài Linh Các số liệu và kết quả là hoàn toàn đúng với thực tế
Để hoàn thành quyển luận văn này, tôi chỉ sử dụng những tài liệu được ghi
trong danh mục tài liệu tham khảo và không sao chép hay sử dụng bất kỳ tài liệu
nào khác Nếu phát hiện có sự sao chép, tôi xin chịu hoàn toàn trách nhiệm
Hà Nội, ngày 25 tháng 09 năm 2011
Học viên
Cao Minh Trí
Trang 3Mở đầu 2
Mục lục
MỞ ĐẦU 6
CHƯƠNG I: TỔNG QUAN VỀ FPGA 10
I.1 Khái niệm và ứng dụng của FPGA 10
I.1.1 Một số khái niệm về FPGA 10
I.1.2 Các ứng dụng của FPGA 11
I.2 CẤU TRÚC CỦA FPGA 11
I.3 QUY TRÌNH THIẾT KẾ TRÊN FPGA 13
I.3.1 Mô tả thiết kế 14
I.3.2 Chọn phương pháp lập trình 14
I.3.3 Mô phỏng chức năng 14
I.3.4 Hiệu chỉnh các kết nối 14
I.3.5 Đặt khối và định tuyến 15
I.3.6 Nạp thiết kế và lập trình 15
I.3.7 Kiểm tra 15
I.4 NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL VÀ CÔNG CỤ LẬP TRÌNH ISE 15
I.4.1 Ngôn ngữ mô tả phần cứng VHDL 15
I.4.2 Công cụ lập trình ISE 16
I.4.3 Công cụ lập trình EDK và SDK 17
I.4.4 MicroBlaze, Xilkernel và ngoại vi 17
CHƯƠNG II: MÃ HÓA THÔNG TIN 20
II.1 Mô tả thuật toán 21
II.2 Cải tiến thuật toán AES 23
CHƯƠNG III CƠ SỞ LÝ THUYẾT NÉN TIẾNG NÓI 25
III.1 Tổng quan 25
Trang 4Mở đầu 3
III.2 Thuật toán CS-ACELP của G.729 ITU-T 28
III.3 Giới thiệu chung về thuật toán CS-ACELP 30
III.3.1.Encoder 30
III.3.2.Decoder 31
III.4 Mô tả tính năng của bộ mã hóa 32
III.4.1 Tiền xử lí 32
III.4.2 Lượng tử và phân tích tiên lượng tuyến tính 33
III.4.3 Cửa sổ và phương pháp tự tương quan 33
III.4.4 Thuật toán Levinson-Dublin 34
III.4.5 Biến đổi LP thành LSP 35
III.4.6 Lượng tử hóa hệ số LSP 36
III.4.7 Nội suy hệ số LSP 39
III.4.8 Chuyển đổi LSP sang LP 39
III.4.9 Trọng số cảm nhận 40
III.4.10 Phân tích độ trễ pitch theo vòng mở 42
III.4.11 Tính toán đáp ứng xung 43
III.4.12 Tính toán tín hiệu đích 43
III.4.13 Tìm kiếm trong mã thích nghi 44
III.4.14 Cách tạo bảng mã vector thích nghi 46
III.4.15 Tính toán từ mã cho bảng mã thích nghi 46
III.4.16 Tính toán chỉ số khuếch đại trong bảng mã thích nghi 47
III.4.17 Cấu trúc bảng mã cố định và tìm kiếm 48
III.4.18 Thủ tục tìm kiếm trên bảng mã cố định 49
III.4.19 Tính toán từ mã cho bảng mã cố định 51
III.4.20 Lượng tử hóa hệ số khuếch đại 52
III.4.21 Tiên đoán hệ số khuếch đại 52
Trang 5Mở đầu 4
III.4.22 Tìm kiếm trên bảng mã để lượng tử hóa hệ số khuếch đại 53
III.4.23 Tính toán từ mã cho bộ lượng tử hệ số khuếch đại 54
III.4.24 Cập nhật bộ nhớ 54
III.5 Mô tả tính năng bộ giải mã 55
III.5.1 Thủ tục giải mã tham số 57
III.5.2 Hậu xử lí 59
III.5.3 Bộ lọc chu kỳ dài 60
III.5.4 Bộ hậu lọc chu kì ngắn 61
III.5.5 Bộ lọc bù nghiêng 62
III.5.6 Điều chỉnh hệ số khuếch đại thích nghi 62
III.5.7 Lọc thông cao 63
III.5.8 Khởi tạo bộ mã hóa và giải mã 63
Chương IV XÂY DỰNG BOARD ĐÀM THOẠI ỨNG DỤNG THUẬT TOÁN NÉN ÂM THANH 64
IV.1 Cấu tạo phần cứng 64
IV.2 Xây dựng phần mềm trên board 67
IV.3.Đánh giá và thử nghiệm 76
KẾT LUẬN VÀ KIẾN NGHỊ 77
Trang 6Mở đầu 5
Danh mục hình vẽ
Hình 0.1: Quá trình truyền tiếng nói trong mô hình giải pháp của luận văn 8
Hình 0.2: Quá trình nhận tiếng nói 9
Hình 1.1: Cấu trúc chung của FPGA 11
Hình 1.2: Khối logic của FPGA 12
Hình 1.3: I/O Block 13
Hình 1.4: Các kết nối khả trình trong FPGA 13
Hình 2.1: Khối AddRoundKey 21
Hình 2.2: Khối SubBytes 22
Hình 2.3: Khối ShiftRows 22
Hình 2.4: Khối MixColums 23
Hình 3.1: Tổng hợp tiếng nói 28
Hình 3.2: Mạch thu phát LPC 29
Hình 3.3: Bộ mã hóa 31
Hình 3.4: Mô tả thủ tục cửa sổ hóa (windowing) 33
Hình 3.5: Sơ đồ bộ giải mã 55
Hình 4.1: Cấu tạo board 64
Hình 4.2: Hình ảnh mặt trước của bo mạch 65
Hình 4.3: Hình ảnh mặt sau của bo mạch 65
Hình 4.4: Mô tả quá trình truyền dữ liệu 66
Hình 4.5: Mô tả quá trình nhận dữ liệu 66
Hình 4.6: Biểu đồ xung của giao thức I2S 68
Hình 4.7: Biểu đồ data của giao thức I2S 69
Hình 4.8:Vòng khóa pha tạo tần số lấy mẫu âm tần 69
Hình 4.9: Sơ đồ khối giải mã AES 71
Hình 4.10: Sơ đồ khối mã hóa AES 72
Hình 4.11: Giản đồ xung của IP AES 73
Hình 4.12: Biểu đồ thời gian cho thủ tục tải khóa cho bộ giải mã 74
Hình 4.13: Biểu đồ thời gian cho quá trình xử lý mã hóa cho khối dữ liệu 74
Trang 7Mở đầu 6
MỞ ĐẦU
I Lý do chọn đề tài
Những nghiên cứu về nén âm thanh cũng như bảo mật thông tin đã được
nghiên cứu từ lâu trên thế giới, và cũng có nhiều sản phẩm ứng dụng những thành
quả này Tuy nhiên ở nước ta các sản phẩm ứng dụng công nghệ nén âm thanh hầu
như chưa xuất hiện nhiều, nếu có là mua sẵn chip DSP cũng như firmware dịch sẵn
về nạp để dùng cho một nhiệm vụ cụ thể đã được đặt ra trước đó hay dùng cho các
phần mềm trên PC FPGA đã xuất hiện ở Việt Nam được một thời gian nhưng ứng
dụng của nó thì chưa được rộng, nó mới chỉ xuất hiện trong quân sự và một số ứng
dụng trong viễn thông và một số ứng dụng khác đòi hỏi khả năng đáp ứng thời gian
thực cao Các chip FPGA ngày nay có mật độ tích hợp lớn, tốc độ đáp ứng cao và
giá cả ngày càng hạ cùng với các công cụ hỗ trợ của các nhà sản xuất liên tiếp được
tung ra như công cụ hỗ trợ DSP, công cụ cấu hình nhúng EDK, SDK … của hãng
Xilinx đã làm FPGA trở thành một công cụ vừa mềm dẻo, linh hoạt trong thay đổi
cấu hình, vừa mạnh trong tính toán Thêm nữa các công cụ đàm thoại chuyên dụng
dùng trong một số ngành sản xuất (ví dụ như trong các hầm mỏ) ngày nay thì lại đa
phần là sử dụng công nghệ analog lạc hậu, hay xảy ra hỏng hóc, chất lượng âm
thanh không đảm bảo nên việc thay thế nó bằng các công nghệ số là rất cần thiết
Tuy nhiên do những đặc thù của các ngành nghề đó như môi trường độc hại, hay
các yêu cầu về tính năng sử dụng hơi đặc biệt nên dù muốn nhưng chưa thể thực
hiện được ngay (nếu thay bằng của nước ngoài thì đắt đỏ) Nếu mua các board âm
thanh nhúng bán sẵn trên thị trường thì không đủ tính năng đáp ứng Chính vì thế
tôi chọn đề tài nghiên cứu với mục đích ứng dụng thuật toán nén âm thanh, tận dụng
tính linh hoạt cùng năng lực tính toán mạnh của FPGA nhằm tạo ra sản phẩm có giá
thành hạ phù hợp với các đặc thù của một số ngành sản xuất như khai thác khoáng
sản …
Trang 8Mở đầu 7
II Một số định hướng cho kết quả nghiên cứu
Tiếng nói người có tần số nằm trong khoảng 300-3400 Hz, nên theo lý thuyết
của Nyquist tần số lấy mẫu phải ít nhất gấp hai lần tần số của tín hiệu liên tục Giá
trị thường được sử dụng là 8kHz để làm tần số lấy mẫu tiêu chuẩn cho tín hiệu tiếng
nói Để chuyển mẫu tương tự thành định dạng số tiêu chuẩn với mức tổn thất về
chất lượng là chấp nhận được thì độ phân giải của ADC khi số hóa phải lớn hơn
8bit/ mẫu và với độ phân giải là 16bit/ mẫu thì đáp ứng được chất lượng âm thanh
cao Trong luận văn tôi sử dụng độ phân giải 16bit/mẫu trong quá trình nghiên cứu
Với tần số lấy mẫu 8kHz, độ phân giải 16 bit thì tốc độ truyền thông phải là
8*16=128kb/s Với nhiều ứng dụng như VoiIP, InterCom thì tốc độ này vẫn quá
cao, nên việc giảm tốc độ này xuống là cần thiết Nén tín hiệu âm thanh là một
trong những giải pháp thông dụng để giảm được lượng thông tin cần truyền đi trên
đường truyền Hiện nay đã xuất hiện nhiều thuật toán cho tỉ lệ nén, và chất lượng
âm thanh tái tạo khác nhau như MELP (2 kbs), ACELP (4,8 kbs)… Với tỉ lệ nén
cao mà vẫn đảm bảo chất lượng âm thanh thì độ phức tạp của thuật toán càng lớn
nên tùy thuộc vào tài nguyên cũng như yêu cầu về tốc độ truyền thông mà ta áp
dụng thuật toán nào phù hợp nhất
Bên cạnh đó, nhu cầu về mã hóa thông tin trên đường truyền hiện nay đã trở
nên phổ biến Luận văn cũng sẽ nghiên cứu về việc ứng dụng FPGA trong mã hóa
tín hiệu (âm thanh) để bảo vệ thông tin trên đường truyền
III Mục đích của đề tài
Luận văn đặt ra các mục đích chính như sau:
1 Nghiên cứu công nghệ nhúng trên nền FPGA của hãng Xilinx
2 Nghiên cứu thuật toán nén CSCELP (8kbs) triển khai trên nền nhúng
MicroBlaze (32 bit)
Trang 9Mở đầu 8
3 Nghiên cứu về ngôn ngữ VHDL để viết các IP giao tiếp giữa FPGA và các
ngoại vi khác như chíp codec âm thanh Si3000 (gồm cả ADC và DAC), IP
thực hiện mã hóa và giải mã theo thuật toán mã hóa AES 128 bit
4 Sử dụng giao thức CAN để truyền nhận âm thanh giao tiếp giữa các board
nhúng FPGA
5 Đánh giá hiệu năng của board nhúng FPGA trong thực hiện các bài toán
phức tạp
IV Đối tượng nghiên cứu, phạm vi đề tài
Đối tượng nghiên cứu: Công nghệ nhúng trên nền FPGA, thuật toán nén âm thanh
CSCELP, thuật toán mã hóa AES
Phạm vi nghiên cứu: Cấu hình board nhúng FPGA bằng công cụ EDK, SDK, ISE
10 của hãng Xilinx Viết chương trình nén âm thanh trên bằng ngôn ngữ C nhúng
để triển khai trên board Viết chương trình mã hóa AES bằng VHDL Đánh giá khả
năng thực sự của công nghệ nhúng FPGA trong các ứng dụng thực tế
V Bố cục của luận văn
Mục đích cuối cùng của luận văn là ứng dụng công nghệ nhúng trên FPGA,
nén tiếng nói, mã hóa thông tin nhằm xây dựng hệ thống đàm thoại điều hành sản
xuất trong lò với nguyên tắc làm việc được mô tả trong sơ đồ sau:
Hình 0.1: Quá trình truyền tiếng nói trong mô hình giải pháp của luận văn
Trang 10Mở đầu 9
Hình 0.2: Quá trình nhận tiếng nói
Với mục tiêu và phạm vi nghiên cứu nêu trên luận văn tôi định bố cục thành 4
chương:
• Chương I : Tổng quan về FPGA
• Chương II : Bảo mật thông tin
• Chương III: Cơ sở lý thuyết nén tiếng nói
• Chương IV: Xây dựng board đàm thoại ứng dụng thuật toán nén âm thanh
• Kết luận và kiến nghị
VI Ý nghĩa khoa học của luận văn
Các vấn đề đề cập trong luận văn cho thấy khả năng ứng dụng công nghệ
nhúng FPGA, thuật toán nén tiếng nói, thuật toán mã hóa AES trong việc chế tạo
thiết bị đàm thoại điều hành sản xuất trong công nghiệp nói riêng cũng như đánh giá
được tương đối thực chất khả năng của công nghệ FPGA trong các ứng dụng khác
trong công nghiệp ở Việt Nam
Với năng lực hạn chế của bản thân cũng như các nguyên nhân khách quan, chủ
quan khác, luận văn không tránh khỏi những thiếu sót Tác giả rất mong được sự
góp ý của quý thầy cô, các bạn bè và đồng nghiệp để luận văn được hoàn thiện hơn
Tác giả xin chân thành cảm ơn các thầy giáo và cô giáo trong Bộ môn Kỹ
thuật đo và Tin học công nghiệp, Trường Đại học Bách Khoa Hà Nội, các bạn bè
đồng nghiệp đã giúp đỡ và tạo điều kiện thuận lợi trong thời gian thực hiện luận
văn Đặc biệt tác giả xin bày tỏ lòng biết ơn sâu sắc với Thầy giáo PGS.TSKH Trần
Hoài Linh đã quan tâm, tận tình hướng dẫn giúp tác giả xây dựng và hoàn thành
luận văn này
Dữ liệu từ
CAN
Giải mã AES
Trang 11Chương I: Tổng quan về FPGA 10
CHƯƠNG I: TỔNG QUAN VỀ FPGA
Chương này sẽ trình bày các vấn đề tổng quan về FPGA và giới thiệu chung về cấu
trúc của chip Xilinx XC3s500e được sử dụng để thực hiện toàn bộ thiết kế của Luận
văn Ngôn ngữ lập trình để mô tả thiết kế là VHDL với phần mềm ISE 10.1
FPGA là các vi mạch tích hợp chuyên dụng được thiết kế với tính năng cơ
bản là khả năng tái cấu hình và khả năng thực hiện các phép tính toán số học và
logic với tốc độ cao Hiện nay, FPGA được sử dụng nhiều trong các thiết bị công
nghiệp cũng như dân dụng, chính vì nó có khả năng chống nhiễu công nghiệp tốt,
thay đổi cấu trúc phần cứng mềm dẻo, hoạt động ổn định, đáp ứng tức thời với
những sự kiện cần phản ứng nhanh (cỡ ns)
I.1 Khái niệm và ứng dụng của FPGA
I.1.1 Một số khái niệm về FPGA
FPGA (Field-Programmable Gate Array) là một thiết bị cấu trúc logic mà
người dùng có thể lập trình trực tiếp, không phải sử dụng bất kì một công cụ chế tạo
mạch tích hợp nào Chữ Field ở đây muốn chỉ đến khả năng tái lập trình “bên
ngoài”, tuỳ theo mục đích ứng dụng của người sử dụng, không phụ thuộc vào dây
chuyền sản xuất phức tạp của nhà máy bán dẫn
FGPA là vi mạch tích hợp mật độ cực cao, có khả năng xử lý mạnh, khả năng
tái cấu hình dễ dàng, thực hiện các phép tính toán số học và logic với tốc độ cao nên
được ứng dụng trong các lĩnh vực yêu cầu một lượng lớn xử lý song song, đặc biệt
là mã hóa và giải mã
Vi mạch FPGA được cấu thành từ các bộ phận:
• Các khối logic cơ bản lập trình được gọi là “Logic Block”
• Các kết nối khả trình
Trang 12Chương I: Tổng quan về FPGA 11
• Khối vào ra (I/O)
• Các phần tử tích hợp sẵn như: RAM, ROM, bộ đếm, DSP Slice, nhân vi xử
lý
Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp
những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính Ngoài
ra, nhờ mật độ cổng logic lớn, FPGA được ứng dụng cho những bài toán đòi hỏi
khối lượng tính toán cao và dùng trong các hệ thống làm việc theo thời gian thực
I.1.2 Các ứng dụng của FPGA
FPGA được ứng dụng rộng rãi trong các thiết bị công nghiệp cũng như dân
dụng hiện nay như: các bộ vi điều khiển, thông tin vô tuyến, xử lý video và audio
số, phân tích nhận dạng ảnh, nhận dạng tiếng nói, xử lý ảnh, các thiết bị hàng
không, thiết bị quân sự, xử lý ảnh y khoa và rất nhiều ứng dụng khác sử dụng
FPGA như một bộ đồng xử lý hoặc bộ xử lý số tín hiệu (DSP)
I.2 CẤU TRÚC CỦA FPGA
Mỗi nhà sản xuất có một cấu trúc FPGA riêng, nhưng nhìn chung cấu trúc của
FPGA như sau:
Hình 1.1: Cấu trúc chung của FPGA
Trang 13Chương I: Tổng quan về FPGA 12
trong đó gồm các khối chính như sau:
a) Khối Logic Block (Configurable Logic Blocks – CLBs): Phần tử chính của
FPGA là các khối logic cơ bản lập trình được gọi là “Logic Block” Khối logic được
cấu thành từ LUT và một phần tử nhớ đồng bộ flip-flop Cụ thể LUT (Look Up
Table) là khối logic có thể thực hiện bất kì hàm logic nào từ đầu vào, kết quả của
hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần
tử nhớ flip-flop
Cấu trúc khối Logic Block được mô tả trên hình 1.2
Hình 1.2: Khối logic của FPGA
Với các dòng FPGA của hãng Xilinx, còn có thêm khái niệm Slice Một Slice
gồm 4 khối logic, số lượng các Slice thay đổi từ vài nghìn đến vài chục nghìn, tùy
theo loại FPGA
b) Khối vào/ra (I/O Block): Khối vào/ra nhiều hay ít là tuỳ thuộc vào từng loại
FPGA Chúng có thể được kết nối với các thiết bị ngoại vi như: LED, USB, RS232,
RAM tuỳ theo mục đích sử dụng
Khối vào/ra điều khiển dòng dữ liệu giữa các chân vào ra I/O và các khối logic
bên trong của FPGA Trên hình 1.3 là sơ đồ khối của khối vào/ra
Trang 14Chương I: Tổng quan về FPGA 13
Hình 1.3: I/O Block
c) Các kết nối khả trình (Programmable Interconnect): Các đường kết nối được nối
với nhau thông qua các khối chuyển mạch lập trình được Trong một khối chuyển
mạch có chứa một số lượng nút chuyển lập trình được, đảm bảo cho các dạng liên
kết phức tạp khác nhau
Hình 1.4: Các kết nối khả trình trong FPGA
I.3 QUY TRÌNH THIẾT KẾ TRÊN FPGA
Quy trình thiết kế một hệ thống trên FPGA bao gồm các bước sau:
1 Mô tả thiết kế
2 Chọn phương pháp lập trình
Trang 15Chương I: Tổng quan về FPGA 14
3 Mô phỏng chức năng của thiết kế
4 Hiệu chỉnh các kết nối của thiết kế để thỏa mãn về mặt thời gian
5 Đặt khối và định tuyến
6 Nạp thiết kế và tiến hành lập trình
7 Kiểm tra hoạt động của hệ thống
I.3.1 Mô tả thiết kế
Xác định những yêu cầu của thiết kế và dựa trên khả năng của công nghệ hiện
có, người thiết kế kiến trúc sẽ xây dựng nên toàn bộ kiến trúc tổng quan cho thiết
kế Cần lập một bảng các đặc tính kỹ thuật cần có của hệ thống thiết kế, đó là định
hướng cần thiết cho người thiết kế để có thể tiết kiệm thời gian và tránh hiểu lầm
I.3.2 Chọn phương pháp lập trình
Sau khi mô tả thiết kế, cần lựa chọn cách thực hiện thiết kế theo mong muốn
Một thiết kế có thể được mô tả qua sơ đồ nguyên lý (schematic) đối với các chip
nhỏ, hay sử dụng ngôn ngữ mô tả phần cứng HDL (Hardware Description
Language) như Verilog hay VHDL với các thiết kế lớn hơn
I.3.3 Mô phỏng chức năng
Người thiết kế cần mô phỏng tổng thể thiết kế về mặt chức năng để kiểm tra
thiết kế có hoạt động đúng với các chức năng yêu cầu hay không
I.3.4 Hiệu chỉnh các kết nối
Bước tiếp theo là sử dụng một công cụ phân tích về mặt thời gian để tách rời
tất cả các kết nối trong thiết kế, tính thời gian trễ của các kết nối dựa trên các ràng
buộc giữa chúng Từ đó, xác định các kết nối không thỏa mãn về thời gian, tiến
hành hiệu chỉnh lại các ràng buộc
Trang 16Chương I: Tổng quan về FPGA 15
I.3.5 Đặt khối và định tuyến
Tiến hành sắp đặt chip sao cho tối ưu cho việc chạy dây Sau đó thực hiện việc
nối dây các tế bào
I.3.6 Nạp thiết kế và lập trình
Quá trình nạp thiết kế vào FPGA thường nạp vào SRAM Thông tin cấu hình
sẽ được nạp vào bộ nhớ Thiết kế được nạp vào FPGA dưới dạng dòng bit Dòng bit
được truyền lúc này sẽ mang thông tin định nghĩa các khối logic cũng như kết nối
của thiết kế Tuy nhiên, SRAM sẽ mất dữ liệu khi mất nguồn nên thiết kế sẽ không
lưu được đến phiên làm việc kế tiếp
Lập trình là thuật ngữ để mô tả quá trình nạp chương trình cho các bộ nhớ dữ
liệu, ví dụ như PROM Như vậy, thông tin cấu hình vẫn được lưu trữ khi mất
nguồn
I.3.7 Kiểm tra
Sau khi hoàn thành thiết kế cần kiểm tra hoạt động của hệ thống đã lập trình,
tìm ra các lỗi của hệ thống để có hướng sửa chữa Kiểm tra hệ thống là cần thiết để
đưa ra kết quả rằng mọi phần của hệ thống đều hoạt động tốt khi kết hợp với nhau
và hệ thống đạt được những chỉ tiêu kỹ thuật đặt ra hay không
I.4 NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL VÀ CÔNG CỤ LẬP
TRÌNH ISE
I.4.1 Ngôn ngữ mô tả phần cứng VHDL
VHDL (VHSIC Hardware Description Laguage) là một ngôn ngữ dùng để mô
tả phần cứng cho các mạch tích hợp tốc độ cao VHDL đuợc thiêt kế nhằm thay thế
cho một số khâu cần thiết trong quá trình thiết kế Đầu tiên, nó cho phép mô tả cấu
trúc của một bản thiết kế, tức là làm thế nào để có thể phân tách bản thiết kế thành
Trang 17Chương I: Tổng quan về FPGA 16
các bản thiết kế con và làm thế nào để kết nối các bản thiêt kế con đó lại với nhau
Thứ hai, nó cho phép mô tả đặc diểm chức năng của các bản thiết kế tương tự như
trong ngôn ngữ lập trình Thứ ba, dựa vào kêt quả đạt được, nó cho phép một bản
thiêt kế có thể mô phỏng được khi đưa vào sản xuât, vì vay các nhà thiêt kê có thể
so sánh một cách nhanh chóng việc thay thế và kiểm tra để điều chỉnh chính xác mà
không mất thời gian và tiền bạc trong lần chế tạo đầu tiên
I.4.2 Công cụ lập trình ISE
a Tổng quan ngôn ngữ VHDL
VHDL (Very High Speed Integrated Circuit Hardware Description Language)
là một ngôn ngữ chung để mô tả các thiết kế phần cứng ở mức phần tử logic cơ bản
cấu thành nên hệ thống và đã được phát triển bởi tổ chức quốc phòng Mỹ Mục đích
chính là để thuận tiện cho việc trao đổi dữ liệu thiết kế phần cứng theo một định
dạng chuẩn mà mọi người có thể hiểu và thông dịch, tạo điều kiện thuận lợi trong
việc phối hợp hay hợp tác trong các dự án thiết kế Đặc biệt nó rất thuận tiện trong
việc chuyển đổi hay tổng hợp biên dịch thành một dạng ngôn ngữ thực thi phần
cứng thực Điều này rất khó thực hiện bằng các ngôn ngữ bậc cao như C nhưng với
VHDL điều này chính là ưu điểm nổi bật và là thế mạnh trong việc mô hình hoá hệ
thống, mô tả một cách chi tiết các phần tử cứng cấu thành tham gia trong hệ thống
VHDL là một chuẩn IEEE (chuẩn std1076) đã được sự hỗ trợ bởi rất nhiều nhà
cung cấp phát triển phần cứng Ứng dụng một cách chuyên nghiệp ngôn ngữ này là
phục vụ cho việc mô tả các mạch ASICs phức hợp, chế tạo thực thi các mạch
FPGA
Ngôn ngữ VHDL có thể đọc hiểu khá dễ dàng với cấu trúc cú pháp rõ ràng
gần giống như ngôn ngữ Visual Basic và Pascal Nó có thể phát huy được thế mạnh
về cú pháp để định nghĩa xây dựng kiểu dữ liệu mới và hỗ trợ cho việc lập trình
theo nhóm Với xu thế hiện nay các nhóm phát triển có thể thực thi với điều kiện
cách xa nhau về khoảng cách địa lý, vì vậy việc phối hợp và thiết kế theo nhóm là
rất cần thiết
Trang 18Chương I: Tổng quan về FPGA 17
b ISE 10.1
Là môi trường phát triển cho các hệ FPGA của xilinx từ Spartan đến Virtex
Nó hỗ trợ ngôn ngữ lập trình cấp thấp như VHDL,VERILOG, hay mô hình
SCHEMATIC dùng để cấu hình phần cứng của FPGA thành ASIC Nó là nền tảng
của mọi hệ nhúng trên nền FPGA của Xilinx (MicroBlaze cũng được xây dựng từ
VHDL)
I.4.3 Công cụ lập trình EDK và SDK
a EDK10.1 (Embeded Development Kit)
Là môi trường làm việc với hệ nhúng của FPGA, bằng EDK 10.1 ta sẽ cấu
hình FPGA thành một vi xử lý 32 bit microblaze hay tận dụng sẵn vi xử lý cứng
Power PC, là công cụ để tích hợp các ngoại vi trong thư viện cho trước bởi hãng
như IP điều khiển ngắt, IP cổng COM,v v hay các ngoại vi được phát triển bằng
VHDL hay verilog bởi người sử dụng
b SDK10.1(Software Development Kit)
Sau khi đã cấu hình xong thành microblaze, ta sẽ dùng SDK để cấu hình hệ
điều hành sẽ được nạp trong chip như tối đa bao nhiêu thread sẽ được chạy trong hệ,
bao nhiêu semaphore, bao nhiêu timer Cấu hình lwIP (IP trong thư viện sẽ dùng để
điều khiển giao tiếp với mạng LAN) Tiếp theo ta sẽ dùng SDK làm môi trường
lập trình bằng ngôn ngữ C hay C++ nhúng, biên dịch và nạp trên chip
I.4.4 MicroBlaze, Xilkernel và ngoại vi
a MicroBlaze
VHDL là một ngôn ngữ mạnh và cơ bản nhất để lập trình FPGA, nhưng nó
vẫn có những hạn chế riêng của nó với nhiều qui định ngặt nghèo, nếu ta muốn lập
trình để mô tả một quá trình tuần tự thì rõ ràng nó không thể thuận lợi hơn lập trình
tuần tự truyền thống trên vi xử lý Chính vì vậy hãng Xilinx đã cung cấp công cụ để
cấu hình FPGA thành vi xử lý 32 bit MicroBlaze
Trang 19Chương I: Tổng quan về FPGA 18
MicroBlaze có 1 hệ thống kết nối linh hoạt bên trong nhằm trợ giúp cho nhiều
ứng dụng nhúng khác nhau Hệ thống bus vào ra I/O chính, CoreConnect PLB bus,
là 1 bộ nhớ hệ thống kinh điển sắp đặt bus thực thi với khả năng trao đổi theo chuẩn
chủ/tớ Đa số các phần cung cấp và các giao tiếp trực tiếp với PLB (hoặc qua PLB
tới cầu OPB bus) Để truy nhập vào bộ nhớ địa phương (FPGA BRAM),
MicroBlaze sử dụng bus chuyên dụng LMB bus, nhằm giảm tải cho những đường
bus khác Các bộ đồng xử lý do người dùng định nghĩa được trợ giúp bằng một kiểu
kết nối chuyên dụng gọi là FSL (Fast Simplex Link – kết nối đơn công nhanh) Giao
diện các bộ đồng xử lý có tăng tốc các thuật toán có khối lượng tính toán lớn bằng
cách bỏ 1 phần hoặc toàn bộ khối lượng tính toán cho 1 modul phần cứng do người
dùng định nghĩa
Rất nhiều khía cạnh của MicroBlaze có thể được cấu hình bởi người dùng:
dung lượng cache, độ sâu pipeline (3 hoặc 5 giai đoạn), các ngoại vi nhúng, đơn vị
quản lý bộ nhớ, và giao diện bus Phiên bản tối ưu khu vực, sử dụng 3 pipeline, hy
sinh tần số đồng hồ cho khu vực logic được giảm tải Phiên bản tối ưu hiệu năng mở
rộng pipeline lên thành 5 giai đoạn, cho phép tăng tốc lên đến 210MHz (trên
Virtex-5 FPGA family) Sự tùy biến cho phép các nhà phát triển tạo ra các thiết kế thích
hợp cân bằng các yêu cầu phần cứng và phần mềm ứng dụng
Với đơn vị quản lý bộ nhớ, MicroBlaze mang khả năng của những hệ điều
hành như Linux kernel Ngược lại nó giới hạn cho các hệ điều hành với sự bảo vệ
được đơn giản hóa và mô hình bộ nhớ ảo: như FreeRTOS hoặc Linux không chứa
phần trợ giúp MMU Tổng lượng tính toán trên 1 đơn vị thời gian của MicroBlaze
nhỏ hơn các vi xử lý cứng (vi xử lý được cấy sẵn lúc chế tạo) như con PowerPC440
trong Virtex-5
b Hệ điều hành thời gian thực Xilkernel
Xilkernel là kernel dạng module, có dung lượng nhỏ và hoạt động bền vững
Nó được tích hợp với Platform Studio Framework và thư viện phần mềm miễn phí
đi kèm với EDK Nó cho phép mức độ tuỳ biến cao, nó cho phép người dùng thay
đổi nhân để tối ưu theo cả 2 tiêu chí tính năng và dung lượng Nó hỗ trợ các đặc tính
Trang 20Chương I: Tổng quan về FPGA 19
của Vi xử lý đã được yêu cầu trong nhân nhúng có dung lượng bé, với POSIX API
Xilkernel làm việc trên cả 2 bộ xử lý MicroBlaze và Power PC Các dịch vụ của
IPC có thể được sử dụng để thực thi các dịch vụ ở mức độ cao hơn (ví dụ như
mạng, video, audio, ) và sau đó chạy ứng dụng đang sử dụng những dịch vụ này
c Tổng quan về các ngoại vi
Vì MicroBlaze không thể tự mình làm việc với các ngoại vi nên ta phải sử
dụng các IP (Intellectual Property) được phát triển bởi các hãng hay do chính người
sử dụng viết bằng các ngôn ngữ VHDL hoặc Verilog (một dạng khác của VHDL)
Trong trường hợp này là IP giao tiếp I2S hay được sử dụng trên các chip âm thanh
Trang 21Chương II: Bảo mật thông tin 20
CHƯƠNG II: MÃ HÓA THÔNG TIN
Từ ngày xa xưa trong chiến tranh vấn đề bảo mật thông tin đã được coi trọng
rất nhiều Việc sử dụng mã hóa trong thư tín đã được Cesar áp dụng, theo thời gian
việc phá mã đã được phát triển nên bên bên cần bảo mật đã nghĩ ra nhưng thuật toán
phức tạp hơn để đối phương không thể giải mã Đó chính là mật mã, mật mã (hay
bảo mật) là một ngành ứng dụng toán học có liên quan tới những biến đổi của dữ
liệu để bảo mật Trong mật mã, người gửi biến đổi những thông tin chưa được bảo
vệ (plain text) thành văn bản được viết bằng mật mã (cipher text) Người nhận sử
dụng mật mã để biến đổi cipher text trở lại thành plain text, xác minh lại đặc điểm
nhận dạng người gửi, kiểm tra toàn vẹn dữ liệu, hay một vài sự kết hợp Trong
nhiều trường hợp, người gửi và người nhận sẽ sử dụng các khóa (key) như một đầu
vào cho thuật toán mã hóa Với một số thuật toán, các khóa được giữ bí mật Nếu
người thứ 3 có thể lấy được các khóa bí mật, anh ta có thể giả mạo thành một trong
hai người đang trao đổi thông tin hoặc truy nhập được những thông tin đang trao đổi
bí mật giữa hai người Một trong những vấn đề chủ yếu đi kèm với mật mã là lấy
các khóa bí mật được cấp phép của người dùng mà không phơi bày chúng với những
kẻ tấn công Nó được biết như sự phân phối khóa bí mật Có một kỹ thuật mã hóa
thông tin hay được dùng có tên là AES
Trong mật mã học, AES (Advanced Encryption Standard, hay Tiêu chuẩn mã
hóa tiên tiến) là một thuật toán mã hóa kiểu khối được chính phủ Hoa kỳ áp dụng
làm tiêu chuẩn mã hóa Giống như tiêu chuẩn tiền nhiệm trước đây là DES (Data
Encryption Standard), AES được kỳ vọng áp dụng trên phạm vi thế giới và đã được
nghiên cứu rất kỹ lưỡng AES được chấp thuận làm tiêu chuẩn liên bang bởi Viện
tiêu chuẩn và công nghệ quốc gia Hoa kỳ (NIST) sau một quá trình tiêu chuẩn hóa
kéo dài 5 năm Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ Joan
Daemen và Vincent Rijmen [6]
Trang 22Chương II: Bảo mật thông tin 21
II.1 Mô tả thuật toán [6]
AES chỉ làm việc với khối dữ liệu 128 bít và khóa có độ dài 128, 192 hoặc
256 bít Trong khuôn khổ luận văn khối dữ liệu 128 bit sẽ được sử dụng
Các khóa con sử dụng trong các chu trình được tạo ra bởi quá trình tạo khóa
con Rijndael
AES làm việc với từng khối dữ liệu 4×4 byte (tiếng Anh: state, khối trong
Rijndael có thể có thêm cột) Quá trình mã hóa bao gồm 4 bước:
1 AddRoundKey — mỗi byte của khối được kết hợp với khóa con, các khóa con
này được tạo ra từ quá trình tạo khóa con Rijndael
Tại bước này, khóa con được kết hợp với các khối Khóa con trong mỗi chu
trình được tạo ra từ khóa chính với quá trình tạo khóa con Rijndael; mỗi khóa con
có độ dài giống như các khối Quá trình kết hợp được thực hiện bằng cách XOR
từng bít của khóa con với khối dữ liệu như được mô tả trong hình sau:
Hình 2.1: Khối AddRoundKey
Trong bước AddRoundKey, mỗi byte được kết hợp với một byte trong khóa
con của chu trình sử dụng phép toán XOR (⊕ )
Trang 23Chương II: Bảo mật thông tin 22
2 SubBytes — đây là phép thế (phi tuyến) trong đó mỗi byte sẽ được thế bằng
một byte khác theo bảng tra
Các byte được thế thông qua bảng tra S-box Đây chính là quá trình phi tuyến
của thuật toán Hộp S-box này được tạo ra từ một phép nghịch đảo trong trường hữu
hạn GF (2 8) có tính chất phi tuyến như được mô tả như trong hình 2.2:
Hình 2.2: Khối SubBytes
Trong bước SubBytes, mỗi byte được thay thế bằng một byte theo bảng S,
b ij = S(a ij )
3 ShiftRows — đổi chỗ, các hàng trong khối được dịch vòng
Các hàng được dịch vòng một số vị trí nhất định Đối với AES, hàng đầu được
giữ nguyên Mỗi byte của hàng thứ 2 được dịch trái một vị trí Tương tự, các hàng
thứ 3 và 4 được dịch 2 và 3 vị trí Do vậy, mỗi cột khối đầu ra của bước này sẽ bao
gồm các byte ở đủ 4 cột khối đầu vào Đối với Rijndael với độ dài khối khác nhau
thì số vị trí dịch chuyển cũng khác nhau như được mô tả như hình 2.3:
Hình 2.3: Khối ShiftRows
Trang 24Chương II: Bảo mật thông tin 23
Trong bước ShiftRows, các byte trong mỗi hàng được dịch vòng trái Số vị
trí dịch chuyển tùy thuộc từng hàng
4 MixColumns — quá trình trộn làm việc theo các cột trong khối theo một phép
biến đổi tuyến tính
Bốn byte trong từng cột được kết hợp lại theo một phép biến đổi tuyến tính
khả nghịch Mỗi khối 4 byte đầu vào sẽ cho một khối 4 byte ở đầu ra với tính chất
là mỗi byte ở đầu vào đều ảnh hưởng tới cả 4 byte đầu ra Cùng với bước
ShiftRows, MixColumns đã tạo ra tính chất khuyếch tán cho thuật toán Mỗi
cột được xem như một đa thức trong trường hữu hạn và được nhân với đa thức c(x)
= 3x3 + x2 + x + 2 (modulo x4 + 1) Vì thế, bước này có thể được xem là phép nhân
ma trận trong trường hữu hạn như được mô tả trên hình 2.4:
Hình 2.4: Khối MixColums
Trong bước MixColumns, mỗi cột được nhân với một hệ số cố định c(x)
Tại chu trình cuối thì bước MixColumns được thay thế bằng bước
AddRoundKey
II.2 Cải tiến thuật toán AES
Ngoài ra, đối với các hệ thống 32 bít hoặc lớn hơn, ta có thể tăng tốc độ thực
hiện thuật toán bằng cách sát nhập các bước SubBytes, ShiftRows,
MixColumns và chuyển chúng thành dạng bảng Có cả thảy 4 bảng với 256 mục,
mỗi mục là 1 từ 32 bít, 4 bảng này chiếm 4096 byte trong bộ nhớ Khi đó, mỗi chu
Trang 25Chương II: Bảo mật thông tin 24
trình sẽ được bao gồm 16 lần tra bảng và 12 lần thực hiện phép XOR 32 bít cùng
với 4 phép XOR trong bước Trong trường hợp kích thước các bảng vẫn lớn so với
thiết bị thực hiện thì chỉ dùng một bảng và tra bảng kết hợp với hoán vị vòng quanh
Các văn bản sau khi đã được mã hóa có thể được giải mã với quá trình giải mã
là làm ngược lại qui trình mã hóa Các chi tiết về quá trình giải mã có thể thao khảo
tại [6]
II.3 Triển khai AES trên FPGA
Ở chương IV khi trình bày về triển khai AES trên board đàm thoại tôi đã trình
bày về IP AES về thuật toán cũng như các bus dữ liệu giao tiếp với các khối chức
năng khác trong board
Trang 26Chương III: Cơ sở lý thuyết nén tiếng nói 25
CHƯƠNG III CƠ SỞ LÝ THUYẾT NÉN TIẾNG NÓI
Lĩnh vực tiếng nói đã được nghiên cứu từ thế kỷ 19, nhưng chỉ tập trung vào lĩnh
vực điện thoại, truyền tiếng nói qua sóng điện, vì thời ki đầu chỉ áp dụng được công
nghệ tương tự Công nghệ này có nhược điểm là tín hiệu bị ảnh hưởng bởi nhiễu
điện từ, suy hao theo khoảng cách v…v, những nhược điểm này lại được khắc phục
tốt bằng các công nghệ số, nhưng khi đó để bảo đảm chất lượng tiếng nói trong lưu
trữ, liên lạc điện thoại số vệ tinh ….nếu chỉ số hóa thông thường sẽ tạo ra một lượng
lớn dữ liệu trong lưu trữ, và trong truyền thông nên lúc này đã đặt ra bài toán làm
sao nén được âm thanh với lượng mất mát ít về chất lượng nhưng vẫn đủ để nghe
hiểu nhưng lại làm giảm đáng kể dữ liệu số hóa và trong nhiều năm qua đã ra đời
nhiều thuất nén như CELP, MELP với tỉ lệ nén khác nhau (nói chung tỉ lệ nén càng
cao thì độ phức tạp của thuật toán càng lớn) Tùy vào tình huống cụ thể mà ta quyết
định sử dụng thuật toán nào cho hợp lý
III.1 Tổng quan
Mã hóa tiếng nói là quá trình đạt được một sự biểu diễn thu gọn của tín hiệu
tiếng nói phục vụ cho truyền tín hiệu không dây hay có dây với băng thông giới hạn
hoặc là cho lưu trữ Thực chất có thể hiểu rộng ra nén làm một trường hợp đặc biệt
của mã hóa tiếng nói Bộ mã hóa trở thành các thành phần cần thiết trong viễn thông
và trong các ứng dụng đa phương tiện Các hệ thống thương mại ứng dụng mã tiếng
nói bao gồm liên lạc điện thoại, VOIP, họp VIDEO, đồ chơi điện tử cũng như nhiều
game trên PC
Mã tiếng nói là nghệ thuật tạo ra một cách biểu diễn gọn gàng để chúng có thể
truyền hay lưu giữ một cách hiệu quả trong các ứng dụng đa phương tiện số và giải
mã tín hiệu với một chất lượng cảm nhận tốt nhất có thể Giống như bất cứ tín hiệu
liên tục theo thời gian khác, tiềng nói có thể được biểu diễn bằng các quá trình xử lý
lấy mẫu và lượng tử hóa
Trang 27Chương III: Cơ sở lý thuyết nén tiếng nói 26
Tín hiệu thường được lượng tử hóa bằng 2 dạng 16 bit và 8 bit Giống nhiều
tín hiệu khác, tuy nhiên, tín hiệu được lấy mẫu vẫn còn chứa lượng lớn thông tin
thừa hoặc những thông tin không cảm nhận bởi người Hầu hết các bộ mã âm thanh
là bị giảm chất lượng, có nghĩa là tín hiệu tổng hợp được cảm nhận tương tự như tín
hiệu nguyên bản ban đầu nhưng có thể khác nhau về mặt vật lý Bộ mã âm thanh
chuyển đổi tín hiệu số hóa sang biểu diễn mã hóa, chúng sẽ được truyền theo các
khung (frames) Bộ giải mã tiếng nói nhận những frame được mã hóa và tổng hợp
lại tiếng nói Các tiêu chuẩn thông thường được tạo ra các các quan hệ vào ra cho cả
2 bộ
Quan hệ vào ra được xác định bằng các phép tham chiếu, nhưng các phép tra
bảng được cho phép miễn là quan hệ vào ra được duy trì Các bộ giải mã khác nhau
chủ yếu ở tốc độ bit (được đo bằng số bit/ 1 frame hay /1s), độ trễ (giữa công đoạn
ghi và phát lại) và chất lượng cảm thụ của tiếng nói sau khi được tổng hợp lại
Có nhiều kiểu mã Bảng 1 tập trung vào tốc độ bit, độ phức tạp của thuật toán
mã, và các ứng dụng được tiêu chuẩn hóa thuộc bốn lớp lớn các bộ mã tiền nói đang
16-64 Thấp điện thoại dây
Mã hóa băng con 12-256 Trung bình Họp Video trực tuyến
LPC Vocoder 2,0 – 4,8 Cao Điện thoại vệ tinh, quân sự
Bảng 2 liệt kê các tiêu chuẩn mã tiếng nói Kiểu waveform cố gắng để mã hóa
hình dạng chính xác của tín hiệu sóng tiếng nói mà không quan tâm bản chất tự
nhiên của tiếng nói trong cảm nhận của con người Những bộ mã bao gồm các loại
sau: Mã với tỉ lệ thấp (nó yêu cầu tốc độ bit cao >= 16kbps), mã theo thuật toán dự
báo tuyến tính LPC (Linear Prediction Coders) Hàm kích thích được xây dựng từ
Trang 28Chương III: Cơ sở lý thuyết nén tiếng nói 27
tín hiệu (gần như có chu kì) bởi các xung đơn (từ 1-8 cho mỗi chu kì pitch), nhiễu
giả lập ngẫu nhiên, hoặc bởi một số kết hợp từ 2 phần trên Nếu kích thích chỉ được
sinh ra từ bộ nhận, dựa trên chu kì pitch được truyền và thong tin tiếng nói, thì hệ
thống sẽ được sử dụng như bộ mã-giải mã LPC Bộ mã-giải mã LPC (nó cung cấp
thông tin thêm về hình dạng phổ của kích thích) đã được chấp nhận như tiêu chuẩn
mã giữa 2.0 và 4.8 kbps Bộ mã LPC dựa trên phân tích-tổng hợp (LPC-AS), theo
một cách khác, chọn hàm kích thích bằng cách thử một tập lớn các kích thích ứng
cử viên và tìm ra phàn tử tốt nhất LPC-AS được sử dụng trong các ứng dụng có tốc
độ bit nằm giữa 4.8 và 16kbps Bộ mã băng con là bộ mã trên miền tần số, nó sẽ
biểu diễn bằng tham số tín hiệu tiếng nói theo các tính chất về phổ trong các giải tần
khác nhau Các bộ mã này ít được sử dụng hơn các bộ mã LPC nhưng nó có lợi thế
về khả năng co giãn và không cần xây dựng mô hình cho tín hiệu đầu vào Mã hóa
băng con được sử dụng rộng rãi cho việc mã audio chất lượng cao
Bảng 2 Các tiêu chuẩn mã hóa tiếng nói
Ứng dụng Tốc độ bit (kbps) Băng thông(kHz) Thuật toán
Điện thoại có dây 64
16-64
3,4 3,4
µ-law or A-law PCM
ADPCM Họp trưc tuyến 48-64
16
7 3,4
Split-band ADPCM Low-delay CELP Điện thoại số 13
8,0
3,4 3,4
RPE-LTP ASCELP Ứng dụng đa phương tiện 5,3-6,3
2,0-18,2
3,4 3,4-7,5
MPLPC, CELP HVXC, CELP Điện thoại vệ tinh 4,15
3,6
3,4 3,4
IMBE AMBE Điện thoại bảo mật 2,4
2,4 4,8 16-32
3,4 3,4 3,4 3,4
LPC-10e MELP CELP CVSD
Trang 29Chương III: Cơ sở lý thuyết nén tiếng nói 28
Hình 3.1: Tổng hợp tiếng nói
Trong khuôn khổ luận văn sẽ chỉ tập trung trình bày thuật toán CS-CELP và
ứng dụng của nó trong mạch đi kèm
III.2 Thuật toán CS-ACELP của G.729 ITU-T [3,4]
Mã dự báo tuyến tính LPC (Linear Predictive Coding) là một phương pháp
mới và khác hoàn toàn với các phương pháp PCM, DPCM, và ADPCM để tái hiện
bằng số các tín hiệu tương tự Phương pháp này dùng bộ lọc ngang (hay các mạch
số tương đương) cộng các thành phần phụ để tổng hợp dạng sóng theo yêu cầu Các
tham số của dạng sóng tổng hợp được số hóa để truyền đi thay vì tín hiệu thực sự
Xét hiệu quả các kết quả nếu quá trình tổng hợp chính xác hoàn toàn với tiến trình
tương tự Vì đã có các thông số về tiếng nói, LPC đặc biệt thích hợp với tổng hợp
tiếng nói và tạo tiếng nói Nếu bộ lọc có khoảng 10 nhánh độ lợi, và các tham số
được thu thập khoảng 10 đến 25ms, quá trình tổng hợp tiếng nói rất dễ dàng mặc dù
có thể nó hơi giả tạo
Voiced hoặc Unvoiced
Hệ số khuếch đại
Trang 30Chương III: Cơ sở lý thuyết nén tiếng nói 29
Xét hệ thống phát LPC như hình 3.2 Các giá trị mẫu của tiếng nói ở đầu vào
được phân tích để tìm ra các tham số tổng hợp, toàn bộ các giá trị ra so sánh với đầu
vào Các kết quả sai khác được mã hoá theo các giá trị tham số từ tín hiệu số được
truyền Bộ thu trong hình 3.2 dùng các giá trị tham số và sai số lượng tử để tái tạo
lại dạng sóng âm thanh
Hình 3.2: Mạch thu phát LPC
Từ mã LPC hoàn chỉnh có khoảng 80 bit – 1 bit để chuyển đổi trường hợp có
âm và không có âm, 6 bit cho cao độ, 5 bit cho độ lợi khuếch đại, 6 bit cho từng độ
lợi của 10 nhánh, và một vài bit phát hiện lỗi Ghi nhận các tham số mỗi 10-25ms
tương đương với số mẫu 40-100 mẫu, vì thế LPC đòi hỏi tốc độ bit khoảng
3000-8000
Việc giảm đáng kể tốc độ bit làm cho LPC có khả năng thay thế trong nổ lực
cải tiến chất lượng của tổng hợp tiếng nói cho truyền thông thoại ITU-T đã phát
hành Khuyến nghị G.729 vào năm 1996, được biết đến như một bộ mã hoá tiếng nói
chất lượng cao, độ trễ thấp và tốc độ 8 Kbps Thuật toán được dựa trên kỹ thuật mã
hoá dự báo tuyến tính kích thích theo mã hình học đại số - cấu trúc phức hợp
CS-ACELP (Conjugate Structure-Algebraic Code Excited Linear Prediction ) và sử
Bộ Phân tích
X(k)
Bộ mã hóa
Tín hiệu LPC
Các biến số
Bộ Giải mã
Tín hiệu LPC
Bộ tổng hợp
Xq(k)
Trang 31Chương III: Cơ sở lý thuyết nén tiếng nói 30
dụng các khung tiếng nói 10ms Codec phân phối tiếng nói chất lượng thực
(toll-quality) (tương đương với 32 Kbps ADPCM) cho hầu hết các điều kiện hoạt động
Chương này này sẽ diễn tả các khía cạnh quan trọng của thuật toán và mục
đích của chương này là tìm hiểu sổ mã vector lượng tử hoá vector được thiết kế và
huấn luyện ra sao và làm quen với các tính năng của cấu trúc CS-ACELP
III.3 Giới thiệu chung về thuật toán CS-ACELP [3,4]
Thuật toán CS-ACELP được đưa ra bởi khuyến nghị G.729 Nó gồm hai phần
Encoder và Decoder
III.3.1.Encoder
Với nguyên tắc mã hóa như hình 3.2, tín hiệu đầu vào sau khi qua bộ lọc thông
cao và được căn chuẩn theo trong khối tiền xử lí, nó sẽ là đầu vào cho các các phân
tích tiếp theo Phân tích LP được thực hiện với tần suất 10 ms một lần để tạo ra các
hệ số của bộ lọc LP Các hệ số này được chuyển và lượng tử hóa LSP (Line
Spectrum Pair) bằng cách sử dụng lượng tử hóa vecter VQ 18bit Tín hiệu kích
thích được chọn bằng thủ tục tìm kiếm phân tích-tổng hợp trong đó sai lệch giữa tín
hiệu ban đầu và tín hiệu tái tạo được cực tiểu hóa Nó được thực hiện bằng lọc tín
hiệu sai lệch bằng bộ lọc có sự thay đổi trọng số theo hướng cảm nhận lại (các trọng
số này ban đầu xuất phát từ bộ lọc LP khi chưa được lượng tử )
Trên hình 3.3 là sơ đồ khối bộ mã hóa
Trang 32Chương III: Cơ sở lý thuyết nén tiếng nói 31
Hình 3.3: Bộ mã hóa
III.3.2.Decoder
Nguyên tắc bộ giải mã như hình III.3 Đầu tiên các chỉ số của các tham số
được tách ra từ luồng dữ liệu thu được Các chỉ số được giải mã để đạt được các
tham số tương ứng với khung 10ms tiếng nói Các tham số ấy là các hệ số LSP, 2
giá trị trể pitch trong 2 khung con, 2 vector mã cố định, và 2 bộ khuếch đại đi kèm
Tiền xử lí Tiếng nói
được ADC Nội suy, lượng tử
Phân tích Pitch
Trang 33Chương III: Cơ sở lý thuyết nén tiếng nói 32
với bộ mã thích nghi và cố định Các hệ số LSP được nội suy để chuyển thành hệ số
của bộ lọc LP cho mỗi khung con
Sau đó mỗi khung con 5ms sẽ thực hiện các bước sau:
1 Kích thích được xây dựng bằng cách thêm vector của 2 bảng mã thích nghi
và cố định được căn tỉ bởi hệ số khuếch đại tương ứng
2 Tiếng nói được xây dựng lại bằng lọc tín hiệu kích thích qua bộ lọc tổng hợp
LP
3 Tín hiệu tiếng nói được tái tạo sẽ đi qua khâu hậu lọc, chúng gồm bộ hậu lọc
thích nghi dựa trên bộ lọc tổng hợp ngắn và dài hạn, chúng nằm sau bộ lọc
thông cao và khâu xử lí căn chỉnh theo tỉ lệ
Về lượng trễ: bộ mã hóa tiếng nói và tín hiệu âm thanh với frame độ dài 10ms
Hơn nữa nó có thêm đoạn 5ms sớm hơn Kết quả tạo ra 1 frame có độ dài 15ms
Như vậy tổng trễ trong thực tế gồm các nguyên nhân sau:
1 Thời gian xử lí cho các hoạt động mã hóa và giải mã
2 Thời gian truyền trong truyền thông
3 Trễ trong trộn dữ liệu tiếng nói với dữ liệu khác
III.4 Mô tả tính năng của bộ mã hóa [3,4]
III.4.1 Tiền xử lí
Tín hiệu vào cho bộ mã hóa được dùng dưới dạng 16bit PCM Hai hàm xử lí
được áp dụng trước khi mã hóa:
1 Căn chỉnh tỉ lệ biên độ
2 Lọc thông cao: Bộ lọc thông cao có nhiệm vụ loại bỏ thành phần tần số thấp
(nhỏ hơn 140Hz) trong tín hiệu Công thức của nó như sau:
0.46363718 0.92724705 0.46363718( )
Trang 34Chương III: Cơ sở lý thuyết nén tiếng nói 33
III.4.2 Lượng tử và phân tích tiên lượng tuyến tính:
Bộ lọc LP được xác định như sau:
10 i 1
với â , i=1 10 là các hệ số được lượng tử hóa của bộ lọc LP Sự phân tích tiên i
lượng tuyến tính được thực thi một lần cho mỗi frame bằng cách sử dụng phương
pháp tự tương quan với cửa sổ không đối xứng có độ dài 30ms Cứ 80 mẫu (10ms)
các hệ số tự tương quan của cửa sổ tiếng nói được tính toán và chuyển thành các hệ
số LP bằng thuật toán Levingson Tiếp theo các hệ số LP được chuyển thành vùng
LSP cho các mục đính nội suy và lượng tử hóa Bộ lọc với các hệ số đã được nội
suy và lượng tử hóa lại được chuyển lại thành bộ lọc LP (để xây dựng thành bộ lọc
tổng hợp cho mỗi frame con)
III.4.3 Cửa sổ và phương pháp tự tương quan:
Cửa sổ phân tích LP gồm 2 phần: phần đầu là một nửa cửa sổ Hamming và
phần sau là 1/4 chu kì của hàm cosin
0.54 0.46 cos(2 / 399) 0, ,199( )
⎧
với 5ms sớm (tức tương đương với 40 mẫu của frame kế tiếp) theo trong phân tích
LP Cửa sổ phân tích LP được áp dụng cho 120 mẫu của quá khứ, 80 mẫu của hiện
tại và 40 mẫu của frame tương lai Thủ tục window được mô tả như trên hình 3.4:
Hình 3.4: Mô tả thủ tục cửa sổ hóa (windowing)
Trang 35Chương III: Cơ sở lý thuyết nén tiếng nói 34
Nhìn hình vẽ ta thấy độ dài cửa sổ trong phân tích LP tương ứng với 6
subframe Tín hiệu sau khi qua cửa sổ sẽ được tính như sau:
III.4.4 Thuật toán Levinson-Dublin:
Các hệ số tự tương quan ( )r k′ được sử dụng để tính hệ số của bộ lọc LP a i
với i=1 10 bằng cách giải hệ phương trình sau:
10
1
i i
=
Hệ phương trình (3.6) được giải bằng sử dụng thuật toán Levinson-Durbin với
mô tả bằng đệ qui như sau:
1
i i
j i i
Trang 36Chương III: Cơ sở lý thuyết nén tiếng nói 35
III.4.5 Biến đổi LP thành LSP
Hệ số bộ lọc LP a i=0…10 được biến đổi thành cặp phổ vạch LSP dùng cho i
các mục đích lượng tử hóa và nội suy Với bộ lọc LP cấp 10, các hệ số LSP được
xác định như là nghiệm để từ đó thực hiện các phép tính của đa thức tổng và sai
với q i =cos( )w i Các w i là các cặp phổ vạch (LSF) và nó thỏa mãn thứ tự như sau
0<w <1 w <….<2 w < ∏ Các hệ số 10 q được tham chiếu như là các hệ số LSP trong i
miền cosin
F1(z) và F2(z) là các đa thức đối xứng chỉ với 5 hệ số đầu của mỗi đa thức cần
tính Các hệ số của các đa thức này được tìn bằng quan hệ đệ qui:
với f1(0) = f2(0) = 1.0 Hệ số LSP được tìm bằng cách lượng giá F1(z) và F2(z) tại 60
điểm được chia đều từ 0 đến π để kiểm tra sự thay đổi dấu Sự thay đổi dấu đánh
dấu việc mở rộng của nghiệm và khoảng thay đổi sau đó được chia 4 để cho phép
việc tìm nghiệm sẽ được thực hiện tốt hơn Đa thức Chebysev được sử dụng để tính
F1(z) và F2(z) Trong phương pháp này nghiệm được tìm trực tiếp trong miền
domain Đa thức F1(z) và F2(z), được tính ở z e= jω , có thể được viết lại như sau
Trang 37Chương III: Cơ sở lý thuyết nén tiếng nói 36
Chú ý: T m (x) = cos(mω) là đa thức Chebysev bậc m, và f(i) i=1 5 là các hệ số cuả
F1(z) hoặc F2(z) được tính toán sử dụng phương trình (3.11)
Đa thức C(x) được tính tại giá trị x=cos(ω) sử dụng quan hệ đệ qui
với giá trị khởi tạo là b5 = 1 và b6 = 0
III.4.6 Lượng tử hóa hệ số LSP
Hệ số LSP q i được lượng tử sử dụng dưới dạng LSF ωi trong vùng tần số được
chuẩn hóa [0, π]; có nghĩa là: ωi = arccos(q i ) i = 1, ,10
Lượng tử hóa được chia làm 2 giai đoạn
Giai đoạn 1: sử dụng bộ VQ có số chiều là 10 bằng codebook với đầu vào 7
với L1,L2,L3 là các chỉ số trong codebook Để tránh hiện tượng đỉnh cộng hưởng
trong bộ lọc tổng hợp LP, các hệ số l được sắp xếp để mà các hệ số cạnh nhau có i
khoảng cách vector J nhỏ nhất
Trang 38Chương III: Cơ sở lý thuyết nén tiếng nói 37
Chương trình sắp xếp lại như sau:
end
Sự sắp xếp này được thực hiện 2 lần Đầu tiên với giá trị J=0.0012 sau đó với
J=0.0006 Sau quá trình sắp xếp, hệ số LSF được lượng tử ˆ( )m
i
ω cho frame hiện tại
m được tính như sau:
vớip là các hệ số của bộ tiên đoán MA Điều mà bộ MA sử dụng được cách li bởi i k,
bit L0 Tại thời điểm khởi tạo giá trị ban đầu của l i k = ⋅i π / 11 với k=0
Sau khi tính ˆωi bộ lọc tương ứng được kiểm tra tính ổ định Nó được làm như
Chương trình mã hóa các biến số LSF có thể vạch ra như sau Cho mỗi một
trong 2 bộ MA phép xấp xỉ tốt nhất cho bộ hệ số LSF hiện tại phải tìm được
Phép xấp xỉ tôt nhất được xác định như là một cách để cực tiểu hóa sai lệch
Trang 39Chương III: Cơ sở lý thuyết nén tiếng nói 38
Trọng số ωi được tính bằng phương pháp thích nghi bằng cách sử dụng hàm
của các hệ số LSF khi chưa được lượng tử hóa:
khi cho i
Hơn nữa trọng số w5 và w6 đều được nhân với 1.2 Vecto được lượng tử cho
frame m được tính bởi:
Mã đầu tiên L1 được tìm theo tiêu chuẩn giá trị qui đổi của nó làm cực tiểu
hóa sai lệch trung bình bình phương nhỏ nhất sẽ được chọn Nó được tiếp tục bằng
cách tìm kiếm mã L2, nó xác định phần thấp hơn của giai đoạn 2 Với mỗi ứng cử
viên, vecto ˆωi với i=1 5 được xây dựng lại sử dụng phương trình (3.15), và được
sắp xếp để đảm bảo khoảng cách vecto 0.0012
Trọng số MSE của (3.16) được tính toán, và vecto L2 mà tạo ra kết quả sai
lệch nhỏ nhất được chọn Sử dụng vecto L1 và phần thấp của giai đoạn 2 L2, phần
cao của giai đoạn 2 được tìm từ mã L3 Thủ tục sắp xếp lại được sử dụng để đảm
bảo khoảng cách vecto là 0,0012 Vecto L3 cực tiểu hóa trọng số MSE được chọn
Vecto kết quả ˆl i, i=1 10 được sắp xếp để đảm bảo sai lệch nhỏ nhất là 0.0006 Quá
trình này được thực hiện cho từng mô hình của 2 bộ lọc tiên đoán MA xác định bởi
L0, và bộ tiên đoán MA mà tạo ra trọng số MSE nhỏ nhất sẽ được chọn Như đã
Trang 40Chương III: Cơ sở lý thuyết nén tiếng nói 39
được giải thích ở trên, vecto ˆl được sắp xếp lại 2 lần và việc kiểm tra tính ổn định i
được áp dụng để tạo ra hệ số LSF ˆωi khi đã được lượng tử hóa
III.4.7 Nội suy hệ số LSP
Hệ số LP (đã được lượng tử và chưa được lượng tử) được sử dụng cho frame
con thứ 2 Với frame con đầu tiên, các hệ số LP (khi chưa và đã được lượng tử) ta
lấy được bằng nội suy tuyến tính các tham số tương ứng trong các frame con kề
nhau Phép nội suy được thực hiện dựa trên các hệ số LSP trong vùng cosine Đặt
current
i
q là hệ số LSP được tính cho frame 10ms hiện tại, và q i previous là hệ số LSP
được tính trong frame 10ms trước Hệ số LSP được nội suy trong mỗi một trong hai
frame con được tính như sau:
frame con 1: q i(1) =0.5q i previous +0.5q i(current) cho i= K1, ,10 (3.21)
frame con 2: q i(1) =q i(current) cho i= K1, ,10 (3.22)
Thủ tục nội suy hoàn toàn tương tự được sử dụng cho nội suy của các hệ số
LSP khi chưa được lượng tử bằng thay thế q i bằng ˆq i trong phương trình (3.22)
III.4.8 Chuyển đổi LSP sang LP
Khi hệ số LSP được lượng tử và nội suy, chúng được chuyển ngược lại thành
hệ số LP a i Phép chuyển đổi này được thực hiện như sau Các hệ số của F z1( ) và
2( )
F z được tìm bằng cách mở rộng phương trình (3.9) và (3.10) để biết các hệ số
LSP khi chưa được lượng tử hóa và nội suy Các hệ số f i , i=1 5 được tính từ 1( ) q i
sử dụng cách tính đệ qui:
For i=1 to 5
1 ( ) 2 2 1 1i ( 1) 2 ( 1 1)
f i = − q − f i− + f i− For j=i-1 downto 1
1i ( ) 1i ( ) 2 2 1 1i i ( 1) 1i ( 2)
f j = f − j − q − f − j− + f − j− End
end