1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Xử lý tiếng nói trên nền công nghệ nhúng FPGA

81 285 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 81
Dung lượng 1,33 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

BỘ 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 2

Mở đầ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 3

Mở đầ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 4

Mở đầ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 5

Mở đầ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 6

Mở đầ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 7

Mở đầ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 8

Mở đầ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 9

Mở đầ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 10

Mở đầ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 11

Chươ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 12

Chươ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ử

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 13

Chươ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 14

Chươ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 15

Chươ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 16

Chươ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 17

Chươ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 18

Chươ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 19

Chươ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 20

Chươ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 21

Chươ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 22

Chươ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 23

Chươ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 24

Chươ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 25

Chươ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 26

Chươ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 27

Chươ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 28

Chươ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 29

Chươ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 30

Chươ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 31

Chươ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 32

Chươ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 33

Chươ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 34

Chươ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 35

Chươ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 36

Chươ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 37

Chươ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 38

Chươ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 39

Chươ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 40

Chươ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 = − qf i− + f i− For j=i-1 downto 1

1i ( ) 1i ( ) 2 2 1 1i i ( 1) 1i ( 2)

f j = fjqfj− + fj− End

end

Ngày đăng: 19/07/2017, 22:54

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[3] WAI C. CHU (2003), “SPEECH CODING ALGORITHMS Foundation and Evolution of Standardized Coders”, Mobile Media Laboratory DoCoMo USA Labs San Jose, California Sách, tạp chí
Tiêu đề: SPEECH CODING ALGORITHMS Foundation and Evolution of Standardized Coders
Tác giả: WAI C. CHU
Năm: 2003
[4] Telecommunication Standardization Sector of ITU , “ITU-T Recommendation G.729”, ITU-T Sách, tạp chí
Tiêu đề: ITU-T Recommendation G.729
[6]. Joan Daemen, Vincent Rijmen, “AES Proposal”,1999 Sách, tạp chí
Tiêu đề: AES Proposal
[1]. Volnei A.Pedron; Circuit Design With VHDL; MIT Press, 2004 Khác
[2]. Tống Văn On; Thiết kế mạch số với VHDL và Verilog; Nhà xuất bản lao động xãhội, 2007 Khác
[5]. Douglas L.Perry, VHDL.Programming by Example, McGraw.Hill Khác

HÌNH ẢNH LIÊN QUAN

Hình 2.1: Khối AddRoundKey - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 2.1 Khối AddRoundKey (Trang 22)
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 - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
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 (Trang 27)
Bảng 2 Các tiêu chuẩn mã hóa tiếng nói - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Bảng 2 Các tiêu chuẩn mã hóa tiếng nói (Trang 28)
Hình 3.1: Tổng hợp tiếng nói - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 3.1 Tổng hợp tiếng nói (Trang 29)
Hình 3.2: Mạch thu phát LPC - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 3.2 Mạch thu phát LPC (Trang 30)
Hình 3.3: Bộ mã hóa - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 3.3 Bộ mã hóa (Trang 32)
Hình 3.5: Sơ đồ bộ giải mã - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 3.5 Sơ đồ bộ giải mã (Trang 56)
Bảng mã cố định và các hệ số khuếch đại). Các tham số được liệt kê trong bảng 1. - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Bảng m ã cố định và các hệ số khuếch đại). Các tham số được liệt kê trong bảng 1 (Trang 57)
Hình 4.2: Hình ảnh mặt trước của bo mạch - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 4.2 Hình ảnh mặt trước của bo mạch (Trang 66)
Hình 4.3: Hình ảnh mặt sau của bo mạch - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 4.3 Hình ảnh mặt sau của bo mạch (Trang 66)
Hình 4.6: Biểu đồ xung của giao thức I2S - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 4.6 Biểu đồ xung của giao thức I2S (Trang 69)
Hình 4.7:  Biểu đồ data của giao thức I2S - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 4.7 Biểu đồ data của giao thức I2S (Trang 70)
Hình 4.9: Sơ đồ khối giải mã AES - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 4.9 Sơ đồ khối giải mã AES (Trang 72)
Hình 4.10: Sơ đồ khối mã hóa AES - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Hình 4.10 Sơ đồ khối mã hóa AES (Trang 73)
Bảng 4 Các thủ tục dùng trong bộ mã hóa - Xử lý tiếng nói trên nền công nghệ nhúng FPGA
Bảng 4 Các thủ tục dùng trong bộ mã hóa (Trang 76)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm