Cáckhảosátcủa đồ áncho thấy tầm quan trọng của lọc số, ưu điểm của lọc số 
so với lọc tương tự. Có nhiều loại bộ lọc, nhưng chủ yếu dựa trên hai loại cấu trúc 
căn bản đó là kiểu FIR và IIR. Đặc biệt, đồ ánđã tìm hiểu khá rõ bộ lọc số kiểu 
thích nghi, đó là kiểu lọc thông minh và sự hoạt động rất hiệu quả của nó; dựa trên 
các thuật toán như LMS, RLS, NLMS, .v.v. Và sự ổn định của chúng khi chúng ta 
thiết kế theo kiểu cấu trúc FIR. Chúng ta đã tiếp cận với bộ xử lý TMS320C6711 
của hãng Texas Instruments, và đã tiến hành chạy thời gian thực trên 
TMS320C6711 DSK. Kết quả đem lại khá hấp dẫn, trực quan với dạng sóng ngỏ 
vào, ngỏ ra; chúng ta có thể thay đổi tức thời các hệ số của bộ lọc; mà đây là điều 
rất khó đối với bộ lọc tương tự.
                
              
                                            
                                
            
 
            
                 94 trang
94 trang | 
Chia sẻ: lylyngoc | Lượt xem: 2850 | Lượt tải: 5 
              
            Bạn đang xem trước 20 trang tài liệu Luận văn Thực thi khử nhiễu kiểu thích nghi trên TMS320C6711 DSK, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ei (2.60) 
Ở đây, e(i) = d(i) - uiWi-1. Từ( 2.59), số bước được tính toán khi: 
 (i) =  max.
CP
P
i
i
2
2
||||
|||| , với bây giờ: 
iP = 
1iP + (1- ) 2
*
|||| i
i
u
u ei (2.61) 
2.5.3.4.3.Kết quả sự mô phỏng: 
 Chúng ta minh họa kết quả của sự hoạt động của các thuật toán đã đề xuất 
bằng các hình vẽ ở trên. Ở hình(2.12) chúng ta thể hiện MSD( 2~ |||| iWE ). Các dòng 
nét liền chỉ cho biết các kết quả của APA với số bước cố định, ở đây chúng ta chọn 
 = 0.002; 0.03 và 1. Nên có thể thấy, đề xuất VS_APA hội tụ nhanh hơn và có lỗi 
điều chỉnh sai thấp hơn. 
2.6.KẾT LUẬN: 
Chương này đã xây dựng được lý thuyết rất chặc chẽ để có thể hiểu về một bộ 
lọc thích nghi một cách rõ ràng, sự hoạt động, quá trình cập nhật các hệ số theo một 
thuật toán định trước. Các thuật toán như: LMS, RLS, NLMS được xây dựng lên 
cho ứng dụng cập nhật các hệ số một cách hiệu quả và thông minh. Đây là thuyết 
cơ sở để chương sau sẽ đi xây dựng bộ lọc thích nghi cho khử nhiễu với một thuật 
toán cụ thể được chọn cho việc cập nhật các hệ số. 
49
CHƯƠNG 3: 
KHỬ NHIỄU KIỂU THÍCH NGHI. 
3.1.MỞ ĐẦU: 
Chương này tiếp cận các ý tưởng cơ bản để thiết kế một bộ lọc thích nghi cho 
ứng dụng khử nhiễu, dựa trên các lý thuyết đã được giới thiệu ở các chương trước. 
Khử nhiễu dựa trên việc trừ nhiễu từ tín hiệu nhận được, một hoạt động được 
điều khiển theo kiểu thích nghi nhằm mục đích cải tiến hoạt động( tăng tỷ số tín 
hiệu trên nhiễu) của hệ thống. Khi sự hoạt động của hệ thống được điều khiển bởi 
một quá trình xử lý thích nghi, nó có thể đạt được một hoạt động hệ thống cao vượt 
trội hơn so với khử nhiễu không thích nghi. 
3.2.LÝ THUYẾT KHỬ NHIỄU KIỂU THÍCH NGHI: [5] 
3.2.1.Các chế độ khử nhiễu kiểu thích nghi: 
Về cơ bản, một bộ khử nhiễu thích nghi có một cặp ngỏ vào, các hệ thống điều 
khiển thích nghi lặp khép kín. Toàn bộ cấu trúc của hệ thống được xác định như 
hình 3.1 sau đây. 
Hình 3.1: Cấu trúc khử nhiễu thích nghi. 
Trong thực tế, hai ngỏ vào của hệ thống được xuất phát từ một đôi cảm biến: 
một bộ cảm biến chính và một bộ cảm biến tham khảo. Bộ cảm biến chính nhận một 
tín hiệu mang thông tin s(n) đã bị thay đổi bởi nhiễu cộng v0(n). Tín hiệu s(n) và 
nhiễu cộng là không tương quan với nhau. Bộ cảm biến tham khảo nhận một nhiễu 
50
v1(n) mà không tương quan với tín hiệu s(n) nhưng tương quan với nhiễu v0(n) ở 
ngỏ vào bộ cảm biến chính, theo một chiều hướng chưa xác định: 
 E[s(n)v1(n-k)] = 0 ; với mọi k (3.1) 
 E[v0(n)v1(n-k)] = p(k) (3.2) 
Ở đây, trước khi các tín hiệu nhận giá trị thực và p(k) là một phép tương quan 
chéo chưa biết cho độ trễ k. 
Tín hiệu tham khảo v1(n) được xử lý bằng một bộ lọc thích nghi để cung cấp 
tín hiệu ngỏ ra y(n). Ngỏ ra bộ lọc được trừ cho tín hiệu chính d(n), là đáp ứng 
mong muốn của bộ lọc thích nghi. Tín hiệu lỗi được định nghĩa như sau: 
 e(n) = d(n) – y(n) (3.3) 
Tín hiệu lỗi quay vòng được sử dụng để điều chỉnh đưa ra các hệ số của bộ lọc 
thích nghi, và vòng lặp điều khiển thực hiện lọc và phép trừ được khép kín. Chú ý 
rằng s(n) thật ra là một phần của tín hiệu lỗi e(n). Bây giờ, bộ lọc thích nghi cố gắng 
để tối thiểu hóa giá trị trung bình bình phương của tín hiệu lỗi e(n). Tín hiệu mang 
thông tin s(n), về bản chất không bị thay đổi bởi bộ khử nhiễu thích nghi. Kể từ đây, 
tối thiểu hóa giá trị trung bình bình phương của e(n) là tương đương với việc tối 
thiểu hóa giá trị nhiễu ra v0(n) – y(n). Với s(n) còn lại, về bản chất không thay đổi, 
nó theo sau việc tối thiểu hóa giá trị trung bình bình phương của tín hiệu lỗi, thực ra 
là tương tự khi tối đa hóa hoạt động của hệ thống( tỷ số tín hiệu trên nhiễu) của hệ 
thống. 
Hiệu quả sử dụng khử nhiễu thích nghi, phụ thuộc bộ cảm biến tham khảo 
được đặt trong trường nhiễu của bộ cảm biến chính với hai mục tiêu đặc trưng liên 
quan: 
1) Thành phần s(n) của ngỏ ra bộ cảm biến chính là không thể nhận ra ở ngỏ ra 
bộ cảm biến tham khảo. 
2) Ngỏ ra bộ cảm biến tham khảo là tương quan rất cao với thành phần nhiễu 
của ngỏ ra bộ cảm biến chính. Ngoài ra, sự thích nghi của các hệ số bộ lọc có thể 
được điều chỉnh phải là điều kiện thuận lợi gần nhất. 
51
3.2.2.Các kiểu lọc của khử nhiễu thích nghi: 
 Hai kiểu lọc chủ yếu chung nhất được dùng cho khử nhiễu là các bộ lọc FIR 
và các bộ lọc IIR. 
 Đối với các bộ lọc FIR: 
 Ứng dụng quan trọng của việc dùng các bộ lọc FIR là vì chúng vốn có độ ổn 
định cao. Nó cũng tốt cho việc loại bỏ các tần số nào đó. Đây là ưu điểm để nó được 
chọn trước cho các ứng dụng để thiết kế các loại khác nhau của các hệ thống tuyến 
tính bất biến theo thời gian. 
 Bất lợi chính của kiểu lọc này là đáp ứng xung bị giới hạn trong thời gian bằng 
các số nhịp hệ số tác động trong bộ lọc. 
 Đáng giá của việc đang đề cập là, rất phổ biến, chúng ta thích thiết kế các bộ 
lọc FIR pha tuyến tính. Các ưu điểm của đáp ứng pha tuyến tính đó là: 
 + Số lượng phép toán chỉ bao gồm các phép tính thực, không có các 
phép tính phức. 
 + Các bộ lọc pha tuyến tính cung cấp trễ không bị bóp méo và chỉ cố 
định số lượng của bộ trễ. 
 Đối với các bộ lọc IIR: 
 Ưu điểm chính của các bộ lọc IIR là chọn lựa rất tốt cho lọc các đỉnh tần số 
hẹp, ví lẽ chúng có cả các điểm cực và các điểm 0 ở trong hàm truyền của nó. Vì 
vậy đáp ứng xung của nó là vô hạn, nó không phụ thuộc nhiều vào các thông số bộ 
lọc cho sự thực hiện kéo dài đáp ứng xung. 
 Bất lợi chính của các kiểu lọc này là tính không ổn định của chúng trong ứng 
dụng. Vì chúng có các điểm cực ở trong hàm truyền của chúng. 
3.2.3.Các thuật toán cập nhật cho các bộ lọc: 
 Từ điều kiện các bộ lọc làm mẫu ở các thời điểm khác nhau, các bộ lọc phải 
khác nhau ở các thời điểm khác nhau, vì vậy các bộ lọc phải thích nghi. Trong thực 
tế cho mục đích này, có nhiều thuật toán được đưa ra như ta đã giới thiệu ở chương 
trước có thể hoạt động rất tốt cho sự thích nghi của các bộ lọc. Thực tế trong điều 
kiện khử nhiễu thì thuật toán LMS được sử dụng đầu tiên. Lý do cho điều này là các 
52
thủ tục tính toán của chúng là tương đối nhỏ và dễ dàng thực hiện trong các kiểu 
khác nhau của việc thực hiện các ứng dụng. 
Các nhân tố quan trọng của các thuật toán: 
+ Tốc độ hội tụ: liên quan đến cách thức mà các thuật toán dùng để chuyển đổi 
nhanh các thông số bộ lọc nhằm tối ưu hóa các giá trị của chúng. 
+ Các thủ tục tính toán: số các hoạt động tính toán cần để cập nhật mỗi thông 
số bộ lọc. 
+ Lỗi điều chỉnh: liên quan đến có bao nhiêu sai khác từ giá trị tối ưu của 
chúng. 
+ Đánh dấu: liên quan đến cách thức mà các thuật toán sẽ kéo theo sự khác 
nhau của các giá trị thông số. 
+ Độ thiết thực: liên quan đến hoạt động thuật toán cập nhật các thông số 
không bị giả tạo bởi sự ảnh hưởng nhỏ như là nhiễu. 
+ Độ ổn định: Một thuật toán được cho là ổn định nếu sai số bình phương 
trung bình hội tụ đến giá trị cuối cùng. 
+ Các thuộc tính số hóa: các thuật toán nên ổn định trong quá trình số hóa có 
nghĩa là ít lỗi lượng tử hóa. Các lỗi lượng tử hóa này xảy ra khi các thuật toán 
được thực hiện trên các DSP, mà luôn luôn có độ dài từ hữu hạn. 
Trong thực tế, các thuật toán được cập nhật ở tốc độ lấy mẫu và hoạt động tính 
toán đủ nhanh. Nó không thể thực hiện được các thuật toán mà là chậm cho 
các hệ thống thời gian thực. Nhân tố khác mà ảnh hưởng hoàn toàn rất mạnh là 
các đặc tính phần cứng, được thực hiện cho việc thực hiện các hệ thống thời 
gian thực. 
Các thuật toán thích nghi: 
Phần này ta sẽ nhắc sơ lược lại hai thuật toán LMS và NLMS thường được sử 
dụng trong thuật toán khử nhiễu thích nghi. 
Nhiệm vụ của thuật toán thích nghi là cập nhật các hệ số bộ lọc bằng việc tối 
thiểu hóa lỗi trung bình bình phương. Các thuật toán thích nghi có thể bị tách ra ở 
53
các kiểu riêng mà dựa trên tiêu chuẩn chúng có được sử dụng để cập nhật các hệ số 
bộ lọc được thích nghi không. 
 Thuật toán LMS: 
Gồm hai bước cơ bản: thứ nhất ngỏ ra bộ lọc y(n) được tính toán và 
so sánh ngược lại đáp ứng mong muốn d(n) để xác định sai số ngỏ ra 
bộ lọc. Sai số này lần lượt cung cấp cho việc điều chỉnh vector thông 
số bộ lọc w(n). Như thể hiện ở phương trình sau đây: 
 y(n) = w’(n)x(n) (3.4) 
Ở đây, x(n) là vector giá trị đầu vào ở thời điểm n, w’(n) là chuyển vị 
của w(n),  là thông số số bước, e(n) là vector lỗi: e(n) = d(n) – y(n) 
 w(n+1) = w(n) +  x(n)e(n) (3.5) 
Các thuật tính độ ổn định và độ hội tụ của thuật toán được xác định rõ 
bằng thông số số bước. Nếu  quá lớn thì các thuật toán sẽ không hội 
tụ trong khả năng trung bình bình phương. Nếu  là quá nhỏ thì độ 
hội tụ các thuật toán sẽ rất chậm. Vậy thuật toán sẽ hội tụ nếu và chỉ 
nếu thông số số bước thỏa mãn: 
 0< <
max
2
 (3.6) 
Ở đây, max là giá trị của ma trận E[
)(nx
x T(n)]. Thuật toán LMS thực 
hiện tính toán hiệu quả hơn thuật toán NLMS. 
 Thuật toán NLMS: 
Thuật toán NLMS là một sự mở rộng của thuật toán LMS. Một trong 
số các vấn đề với LMS là sự hiệu chỉnh của vector ước lượng thông số 
w(n), là số hạng tỷ lệ với x(n). Vì vậy thuật toán LMS trải qua sự 
khuếch đại nhiễu độ dốc( Gradient). 
Để khắc phục điều này, LMS có thể bị thay đổi sao cho giới hạn hiệu 
chỉnh  e(n)x(n) là được bình thường hóa bởi tiêu chuẩn Euclidean 
(Ơ_Clit) của đầu vào bộ lọc x(n). Để vô dụng các vấn đề với phép 
54
chia cho 0 khi x(n) là 0, một giá trị xác định nhỏ  cũng được đưa 
vào tiêu chuẩn. 
Thuật toán NLMS là thuật toán với các sự thay đổi ở trên và nó được 
đúc kết ở các phương trình sau: 
 y(n) = w’(n)x(n) (3.7) 
 e(n) = d(n) – y(n) (3.8) 
 w(n+1) = w(n) + 2||)(|| nx
 x(n)e(n) (3.9) 
Ở đây,  là một hằng số xác định rất nhỏ, tiêu chuẩn hội tụ cho thuật 
toán LMS trở thành thuật toán NLMS khi: 0<  <2 
Thêm vào sự bình thường hóa LMS( NLMS) cộng thêm gánh nặng 
cho việc tính toán, vì nó cần tính ||x(n)||2 cho mỗi lần lặp lại và nó có 
thể được tính đệ quy như sau: 
 ||x(n)||2 = ||x(n)||2 + |x(n+1)|2 - |x(n-M)|2 (3.10) 
Với 
)(nx là giá trị ngỏ vào khó chấp nhận nhất và nó đã bị giả tạo bởi 
chiều dài bộ lọc là M. Như vậy NLMS sẽ phức tạp hơn LMS. Và thực 
tế chúng ta sẽ sử dụng thuật toán LMS cho khử nhiễu kiểu thích nghi. 
3.3.KẾT LUẬN: 
 Chương này xây dựng lý thuyết về khử nhiễu kiểu thích nghi một cách rõ ràng 
dựa trên các lý thuyết cơ bản. Đã chọn lựa ra được kiểu cấu trúc ổn định cho bộ lọc 
đó là kiểu đáp ứng xung hữu hạn FIR; và quyết định thực hiện hoạt động cập nhật 
hệ số cho bộ lọc theo thuật toán LMS, với các phép tính đơn giản nhưng rất hiệu 
quả, thực tế thuật toán này thường được sử dụng cho ứng dụng khử nhiễu. 
55
CHƯƠNG 4: 
CẤU TRÚC TMS320C6711 DSK 
4.1.MỞ ĐẦU: 
Chương này sẽ khảo sát phần cứng card DSP cụ thể là TMS320C6711 DSK; 
cũng như giới thiệu bộ xử lý TMS320C6711 của TI trên card đó. Các thuật toán khử 
nhiễu sẽ được thi hành trên DSK TMS320C6711. 
4.2.TMS320C6711 DSK: [5] & [18] & [19] 
Hình vẽ 4.1 sau đây giới thiệu board TMS320C6711 DSK: 
Hình 4.1: Board TMS320C6711 DSK. 
TMS320C6711 DSK là một công cụ hữu ích để thực hiện các ứng dụng xử lý 
số tín hiệu, sử dụng bộ xử lý TMS320C6711. Như ở hình vẽ 4.1, trên board mạch 
có chip TLC320AD535, là bộ mã hóa/ giải mã( Codec) 16 bits. Bộ chip này lấy 
mẫu ở tần số 8000.0 Hz, được kết nối với xung đồng hồ 4 MHz nằm trên board; nó 
có hai chức năng chính là chuyển đổi tín hiệu từ dạng tương tự ở ngỏ vào thành 
dạng số để xử lý, và sau đó chuyển ngược trở lại thành tín hiệu tương tự để đưa ra 
ngỏ ra; chính là hai kết nối: một đầu vào microphone và một đầu ra đơn 
56
loudspeaker. Ngoài ra, DSK này còn có 16 MB SDRAM và 128KB flash ROM 
được nối kết với bộ xử lý TMS320C6711. 
Board này nối với máy vi tính thông qua cổng song song. PC này được cài 
phần mềm CCS, là một môi trường phát triển tích hợp gồm những công cụ như: viết 
chương trình ứng dụng bằng ngôn ngữ Asembly hoặc C, và các trình biên dịch 
chúng( như: Compiler, Asembler), hay linker, chạy và gỡ lỗi chương trình thời gian 
thực. Ngoài ra, CCS cung cấp giao diện người dùng đồ họa sử dụng file .GEL, cho 
phép người lập trình thực thi các hàm có các biến có thể được hiệu chỉnh tức thời( 
Real Time) mà không cần phải biên dịch lại chương trình. CCS nó còn cho ta nhìn 
thấy đồ thị của các biến đang chạy. Sơ đồ khối của board này chúng ta tham khảo ở 
hình 4.2 sau đây: 
Hình 4.2: Sơ đồ khối TMS320C6711 DSK. 
4.2.1. Giới thiệu bộ xử lý TMS320C6711: 
4.2.1.1.Giới thiệu chung: 
Năm 1982, Texas Instruments đã giới thiệu thế hệ đầu đời là bộ xử lý tín hiệu 
số TMS32010. Đây là bộ xử lý 16 bit tự hào với bộ nhớ và bộ nhân nằm trên chíp, 
57
với thời gian mỗi chu kỳ lệnh là 200ns. Sau đó, bộ thứ hai TMS320C25 với nhiều 
bộ nhớ trên chíp hơn và thời gian mỗi chu kỳ lệnh là 100ns. Tiếp sau đó, bộ thứ ba 
TMS320C30 là một bộ xử lý 32 bit, với nhiều bộ nhớ trên chíp hơn và thời gian mỗi 
chu kỳ lệnh là 60ns, tương ứng 16,6 triệu lệnh trên một giây( MIPS). Nhiều lệnh có 
thể được thực hiện song song, làm cho thời gian chu kỳ thực hiện một lệnh là 30ns. 
Có một số lệnh trong những lệnh đặc biệt là có thể làm cho những hoạt động xử lý 
chung trở nên thuận lợi như lọc và phân tích phổ. Kiến trúc của TMS320C30 được 
thiết kế tạo thuận lợi với những công cụ như trình biên dịch C. Năm 1999, TI cho ra 
đời bộ xử lý TMS320C6711, với tốc độ xử lý từ 100 đến 250 MHz, riêng bộ xử lý 
TMS320C6711 mà chúng ta sử dụng là 150 MHz, 64 bit floating-point, có 32 thanh 
ghi mục đích chung 32 bit, 8 khối chức năng đó là: 4 ALUs( Floating- and Fixed-
Point), 2 ALUs( Fixed-Point) và 2 Multipliers( Floating- and Fixed-Point), 2 bộ 
định thời mục đích chung 32 bit, và có 256 chân. 
Hình 4.3: Chip TMS320C6711. 
Ở hình 4.3 trên, “nnn” là tốc độ của bộ xử lý; ví dụ TMS320C6711GFN là 150 
MHz, còn TMS320C6711DGDP là 250 MHz. Và “xx” là mã nhận dạng( ID), như 
thể hiện ở bảng 4.1 sau: 
Bảng 4.1: Bảng mã ID. 
58
Các đặc tính của các bộ xử lý C6211/6711 được thể hiện ở bảng 4.2 sau đây: 
Bảng 4.2: Các đặc tính của C6211/6711. 
Những bộ xử lý DSP có một số ứng dụng kể cả giao tiếp và điều khiển, đồ 
hoạ, lời nói và xử lý ảnh. Chúng được sử dụng trong những đồ chơi biết nói, những 
thiết bị điện tử tạo ra nhiều loại nhạc khác nhau, những bộ phân tích phổ, thích ứng 
với những bộ triệt hiệu ứng dội vang lại( echo). v.v. Những bộ xử lý DSP ngày nay 
có những ứng dụng thật đáng ngạc nhiên như: Những modem và máy fax, mã hoá 
dữ liệu, truyền dữ liệu, nén lời nói, nhận dạng và tổng hợp lời nói, nén và nâng cao 
hình ảnh, thị lực của người máy, tổng hợp âm thanh, âm nhạc số, chỉ dẫn đường xe 
cộ, phân tích động đất và quang phổ, radar và định vị thiết bị ngầm dưới nước bằng 
sóng siêu âm( sonar), điều khiển motor.v.v. 
4.2.1.2.Sơ đồ khối chức năng TMS320C6711: 
59
Hình 4.4: Sơ đồ khối chức năng và CPU của TMS320C6711. 
4.2.1.2.1.CPU: 
 Gồm các khối sau: 
 Khối Instruction Fetch. 
 Khối Instruction Dispatch. 
 Khối Instruction Decode. 
 Hai đường dẫn dữ liệu( data patch), mỗi đường có 4 khối chức 
năng. 
 Và các khối: Control Register, Control Logic, Test, In-Circuit 
Emulation, Interrupt Control. 
Được thể hiện rõ ở hình vẽ 4.5 sau: 
60
Hình 4.5: CPU của TMS320C6711. 
Có độ dài từ lệnh rất lớn( VLIW)( độ rộng 256 bit) để cung cấp đến 8 lệnh 32 
bit trên một chu kì xung đồng hồ. 
4.2.1.2.2.Bản đồ bộ nhớ: 
Hình 4.6 sau mô tả bản đồ địa chỉ vùng nhớ của TMS320C6711. 
Hình 4.6: Bản đồ địa chỉ vùng nhớ của TMS320C6711. 
61
Trong bản đồ trên không có cache L1 8KB vì được truy cập trực tiếp từ CPU. 
Cache L1 có 4 KB dành cho program cache và 4 KB dành cho data memory cache. 
L1 có độ rộng 256 bit nối đến CPU, do đó CPU có thể truy cập 8 lệnh trong 1 chu kì 
xung đồng hồ. 
Trên bản đồ vùng nhớ có các vùng nhớ dùng để giao tiếp với các thiết bị ngoại 
vi như sau: 
- EMIF: hỗ trợ giao tiếp với bộ nhớ bên ngoài như SDRAM, SBSRAM, 
SRAM. 
- EDMA Controller: gồm 16 kênh có thể lập trình được, điều khiển quá 
trình truyền dữ liệu giữa các vùng nhớ mà không cần sự can thiệp của 
CPU. 
- HPI: là một cổng song song để cho bộ xử lý chủ có thể truy xuất trực 
tiếp vào không gian bộ nhớ của chip TMS320C6711. 
- Interupt Selector: cho phép lựa chọn các mức ưu tiên cho các ngắt phần 
cứng để ánh xạ vào trong các ngắt mềm của CPU. 
- McBSP: dựa trên chuẩn giao tiếp cổng nối tiếp và có thể đệm các mẫu 
nối tiếp trong vùng nhớ( để dữ liệu có thể truyền đi một cách liên tục) 
một cách tự động nhờ sự hổ trợ của EDMA Controller. 
4.2.1.2.3.Các đường truyền dữ liệu: 
Hình 4.7 dưới, mô tả các đường truyền dẫn dữ liệu bên trong chip 
TMS320C6711. Có hai tập thanh ghi mục đích chung( Register File) A và B trong 
cấu trúc đường dẫn dữ liệu. Mỗi tập thanh ghi có 16 thanh ghi 32 bit. Trong mỗi 
đường dẫn dữ liệu có 4 khối chức năng( L, S, M, D) thực hiện các thao tác khác 
nhau. Mỗi khối có 1 cổng ghi dành cho toán hạng đích( dst) và 2 cổng đọc dành cho 
2 toán hạng nguồn( src) nằm trong 2 tập thanh ghi mục đích chung. Khi thao tác với 
dữ liệu 32 bit thì 8 khối chức năng có thể thực hiện song song trong mỗi chu kì 
xung đồng hồ. 
62
Hình 4.7: Các đường truyền dữ liệu. 
63
4.2.1.2.4.Đường ống( Pipeline): 
Cơ chế pipeline được chia làm ba giai đoạn: 
 Tìm lệnh( Fetch) 
 Giải mã lệnh( Decode) 
 Thực thi lệnh( Execute) 
Tất cả các lệnh trong tập lệnh của TMS320C6711 đều trải qua ba giai đoạn 
trên. 
Giai đoạn tìm lệnh được chia làm bốn phase cho tất cả các lệnh., xem hình 4.8 
sau: 
 (a) (b) 
Hình 4.8: Các phase tìm lệnh. 
- PG: tạo địa chỉ lệnh. 
- PS: gởi địa chỉ lệnh. 
- PW: sẵn sàng truy cập lệnh. 
- PR: nhận gói lệnh tìm được 
Trong TMS320C6711 một gói lệnh tìm được( FP) bao gồm tám lệnh 32bit 
được xử lý đồng thời với nhau trong một chu kỳ xung đồng hồ. 
Giai đoạn giải mã lệnh được chia làm hai phase: 
- DP: gởi lệnh vào các thanh ghi. 
- DC: giải mã lệnh. 
Trong phase DP các FP được chia thành các gói lệnh thực thi( EP). Một EP có 
thể là một lệnh hay từ hai lệnh đến tám lệnh song song. Các lệnh trong cùng một EP 
được chỉ định tới các khối chức năng thích hợp. Trong phase DC, các thanh ghi 
PG PS PW PR 
CPU 
PW 
Các khối 
chức năng 
Các thanh 
 ghi 
 PG 
Bộ nhớ 
PS 
PR 
64
nguồn, thanh ghi đích và các đường dẫn có liên quan được giải mã để có thể thực 
thi lệnh trong các khối chức năng. 
Giai đoạn thực thi lệnh gồm mười phase, tùy theo từng lệnh mà có số lượng 
phase khác nhau để thực thi lệnh. 
4.2.1.2.5.Ngắt( Interrupt): 
Bộ xử lý DSP làm việc trong môi trường thường xuyên xảy ra các sự thay đổi 
bất thường từ bên ngoài, hay đó chính là các ngắt. Các sự kiện này khi xảy ra phải 
được bộ xử lý xử lý. Ngắt là một sự kiện làm tạm dừng tiến trình xử lý hiện thời của 
CPU để chuyển sang hoàn thành nhiệm vụ do ngắt đó tạo ra. Các nguồn ngắt có thể 
nằm trong chip hay ở ngoài, chẳng hạn như bộ định thời( Timer) hay bộ ADC, và 
các thiết bị ngoại vi khác. 
Để tiến hành xử lý một ngắt che được( Maskable Interrupt) thì phải thực 
hiện các bước sau: 
- Bit GIE trong thanh ghi CSR được set lên 1. 
- Bit NMIE trong thanh ghi IER được set lên 1. 
- Bit IE tương ứng ở trong thanh ghi IER được set lên 1. 
Khi một ngắt tương ứng xuất hiện sẽ thiết lập một bit tương ứng trong thanh 
ghi IFR. 
TMS320C6711 giao tiếp với thiết bị ngoại vi thông qua các ngắt. Chip này có 
16 ngắt mềm trong bảng dich vụ ngắt, tuy nhiên lại có rất nhiều nguồn ngắt( ngắt 
cứng), lớn hơn 16 ngắt, do đó có các thanh ghi IML và IMH để thực hiện lựa chọn 
các ngắt này. C6711 giao tiếp với TLC320AD535 thông qua các cổng đệm nối tiếp 
đa kênh McBSP. 
Có các ngắt trong TMS320C6711 được thể hiện ở hình 4.9 sau: 
65
Hình 4.9: Các ngắt DSP C6711. 
Các ngắt 00 – 03: là các ngắt không che và cố định. 
Các ngắt 04 – 15: là các thanh ghi có thể lập trình được bằng cách thay đổi các 
giá trị nhị phân trong các trường thanh ghi điều khiển chọn ngắt. 
4.2.1.3.Các cổng đệm nối tiếp đa kênh( McBSP): 
McBSP trong bộ DSP TMS320C6000 như là một cổng giao tiếp dữ liệu tốc độ 
cao. McBSP có thể hoạt động trong các chế độ khác nhau, tùy theo ứng dụng. Để 
hoạt động thích hợp thì cổng nối tiếp phải được khởi tạo theo một cấu trúc riêng. 
Phần này miêu tả các bước khởi tạo cần thiết khi EDMA hay CPU được sử dụng 
cho dịch vụ dữ liệu McBSP. Thông thường EDMA được sử dụng cho hoạt động 
đọc/viết hoạt động truyền từ/đến McBSP. Sự truyền EDMA đọc/viết được đồng bộ, 
và McBSP cung cấp các sự kiện đồng bộ. Như một sự lựa chọn, trong các kiểu, ở 
đây CPU đọc từ DRR và viết đến DXR, phương pháp kiểm soát vòng( Polled) hay 
ngắt( Interrupt) sẽ được sử dụng; trong đồ án này ta sẽ sự dụng phương pháp ngắt. 
66
Hình 4.10: Sơ đồ khối chức năng của McBSP. 
 Một McBSP của một thiết bị DSP TMS320C6000 này có thể được kết nối đến 
một McBSP của một thiết bị DSP TMS320C6700 khác, như được thể hiện ở hình 
4.11 sau đây: 
Hình 4.11: Sự kết nối giữa các McBSP của các CPU C6x. 
Hình 4.12: Tốc độ truyền tối đa của các McBSP của các CPU C6x. 
67
Chương trình khởi tạo McBSP sẽ được giới thiệu trong phần phụ lục. 
4.2.2.TLC320AD535: [17] 
4.2.2.1. Giới thiệu: 
Bộ giải mã hai kênh thoại/dữ liệu TLC320AD535 là một thiết bị kết nối bộ 
trộn tín hiệu( Mixed-Signal) dãi rộng( Broadband). AD535 bao gồm một bộ giải 
mã hai kênh và mạch lai tương tự với hai cổng nối tiếp độc lập cho việc giao tiếp 
với bộ xử lý chủ; và có các điện trở, các điện dung bên ngoài dùng để điều chỉnh độ 
lợi và các điểm cực bộ lọc. Thiết bị này cũng chứa độ xiên microphone, biên độ, 
khả năng trộn âm thanh trong kênh thoại, điều khiển độ lợi có thể lập trình được. 
4.2.2.2.Các đặc tính của AD535: 
+ Nguồn cung cấp 5 V hay 3.3 V. 
+ Các chế độ phần mềm nguồn thấp riêng biệt cho các kênh dữ liệu và thoại. 
+ Tốc độ lấy mẫu kênh dữ liệu và thoại riêng biệt lên đến 11,025 kHz. 
+ Xử lý tín hiệu 16-bit. 
+ Dãi động ở các kênh dữ liệu và thoại là 80 dB. 
+ Toàn bộ tín hiệu/( nhiễu + các sự sai lệch khác) là 77 dB cho ADC. 
+ Toàn bộ tín hiệu/( nhiễu + các sự sai lệch khác) là 74 dB cho DAC. 
+ Các biên độ độ lợi có thể lập trình được. 
+ Lái kênh âm thanh và dữ liệu TAPI 600-W. 
+ Lái headphone 60-W với biên độ độ lợi có thể lập trình được. 
+ Lái các speaker khác nhau AT41 8- với biên độ độ lợi có thể lập trình 
được. 
+ Độ xiên microphnone tối đa là 5 mA ở 2.5 V/1.5 V. 
+ Tham chiếu thu phát tối đa là 2.5 mA ở 2.5 V/1.5 V. 
+ Tham chiếu kênh dữ liệu tối đa là 10 mA ở 2.5 V/1.5 V. 
+ Mạch reset nguồn MVDD 5-V. 
+ Mạch cho ghi nhanh hay sự ghi đến thiết bị bộ nhớ nhanh. 
+ Cho phép hoạt động trong một gói 64-chân PM từ –40°C đến 85°C. 
68
4.2.2.3.Sơ đồ khối chức năng: 
Hình 4.25 : Sơ đồ khối chức năng của AD535. 
4.3.KẾT LUẬN: 
Như vậy phần cứng TMS320C6711 DSK đã được giới thiệu, các thiết bị quan 
trọng trên board này, mà ta sẽ sử dụng trong quá trình tiến hành khử nhiễu; như: Bộ 
xử lý TMS320C6711, bộ mã hoá/giải mã TLC320AD535. Các cơ chế hoạt động 
cũng như tập lệnh của CPU ở DSK này. Tất cả các lý thuyết được đưa ra ở các 
chương trên sẽ được đúc kết lại với ứng dụng thực tế: Tiến hành khử nhiễu kiểu 
thích nghi trên TMS320C6711 DSK, ở chương sau đây. 
69
CHƯƠNG 5: 
THỰC HIỆN BỘ LỌC THÍCH NGHI ĐỂ KHỬ NHIỄU TRÊN 
TMS320C6711 DSK 
5.1.MỞ ĐẦU: 
Trong chương này chúng ta sẽ tiến hành thực hiện khử nhiễu trên 
TMS320C6711 DSK, với tín hiệu đầu vào card là tín hiệu tương tự được lấy từ ngỏ 
ra audio của PC và đầu ra của card được đưa ra loadspeaker. Tín hiệu audio từ PC là 
tín hiệu mong muốn, mà ta cần đảm bảo tính chính xác cao. Tín hiệu nhiễu được tạo 
ra bằng phần mềm, từ chương trình tạo nhiễu giả ngẫu nhiên. Ta sẽ xem xét chất 
lượng khử nhiễu của bộ lọc thích nghi trên DSP. Sau đây là cách tổ chức chương 
trình và lưu đồ thuật toán của chương trình khử nhiễu kiểu thích nghi, còn phần 
chương trình được giới thiệu ở phần phụ lục. 
5.2.TỔ CHỨC CHƯƠNG TRÌNH VÀ CÁC LƯU ĐỒ THUẬT TOÁN CỦA 
CHƯƠNG TRÌNH KHỬ NHIỄU KIỂU THÍCH NGHI: 
5.2.1.Tổ chức chương trình: 
Chương trình khử nhiễu kiểu thích nghi được tổ chức theo sơ đồ sau: 
Hình 5.1: Sơ đồ tổ chức chương trình khử nhiễu kiểu thích nghi. 
Chương trình khử nhiễu kiểu thích nghi này được thực hiện theo cấu trúc ở 
hình 3.1. Với nguồn nhiễu được tạo ra từ chương trình tạo nhiễu giả ngẫu nhiên 
theo sơ đồ sau: 
CHƯƠNG TRÌNH CHÍNH 
 LỌC 
 THÍCH NGHI 
TẠO NHIỄU 
 GIẢ NGẪU 
 NHIÊN 
VÀO/RA TÍN 
 HIỆU VÀ 
 HIỂN THỊ 
70
Hình 5.2: Sơ đồ tạo chuỗi nhiễu giả ngẫu nhiên. 
Ở sơ đồ trên, thanh ghi sreg.regval 16 bit( b0 – b15), fb là biến tạm, ban đầu 
nhận giá trị của phép XOR của hai bit b0 và b1, sau đó XOR với kết quả của phép 
XOR giữa hai bit b11 và b13; kết quả nhận được đưa vào bit b0 sau khi thanh ghi 
sreg.regval đã dịch trái 1 bit. Như vậy mỗi lần dịch thanh ghi sẽ nhận một giá trị 
khác nhau. 
Với mỗi mẫu tín hiệu vào, nhận từ hàm input_sample() được lấy ở bộ Codec( 
TLC320AD535) sẽ được cộng với một mẫu tín hiệu nhiễu để tạo ra tín hiệu sai lệch 
dplusn_sig. Tín hiệu ngỏ ra của bộ lọc thích nghi, y là tín hiệu ước lượng của 
nhiễu; bộ lọc thích nghi ước lượng hàm truyền của nhiễu theo thuật toán LMS dựa 
trên sai số E = dplusn_sig – y, hồi tiếp về bộ lọc thích nghi. Với mỗi thời điểm n, 
ngỏ ra của bộ lọc thích nghi được tính toán và 30 hệ số được cập nhật. Tín hiệu sai 
số E này là sai khác giữa tín hiệu mong muốn desired_sig và nhiễu cộng giả ngẫu 
nhiên với ngỏ ra của bộ lọc thích nghi. Sau đó sai số E này xuất ra theo hàm 
output_sample((short)E); Hàm này sẽ xuất dữ liệu ra trên bộ Codec, sau đó xuất 
ra loadspeaker, là tín hiệu tương tự sau khi đã được bộ Codec chuyển đổi số sang 
tương tự; chính là tín hiệu mong muốn cần quan tâm. 
5.2.2.Các lưu đồ thuật toán: 
Lưu đồ chương trình chính main(): 
71
Hình 5.3: Lưu đồ thuật toán chương trình chính. 
Lưu đồ chương trình ngắt lọc thích nghi c_int11() : 
 Khởi tạo: T = 0; 
Kiểm tra điều 
kiện: i < NH ? 
Khởi tạo bộ đệm nhiễu; 
 Tăng i; 
Đúng 
Sai 
Kiểm tra điều 
kiện: T < N ? 
Khởi tạo vector độ trễ 
và các hệ số bộ lọc; 
 Tăng T; 
Sai 
 Gọi chương trình ngắt 
 Khởi tạo: i = 0 
 Bắt đầu 
 Thiết lập thanh ghi dịch; 
Khởi tạo vòng quay chuỗi nhiễu; 
Đúng 
 Bắt đầu; 
Khởi tạo các tín hiệu: 
dplusn_sig = 0; y = 0; E = 0; 
Gọi hàm tạo nhiễu; 
72
Hình 5.4: Lưu đồ thuật toán chương trình ngắt lọc thích nghi. 
 B A 
Tính sai số ngỏ ra: E = dplusn_sig – y; 
 Khởi tạo: i = N – 1; 
Sai 
C 
73
Hình 5.5: Lưu đồ thuật toán chương trình ngắt lọc thích nghi( tt). 
L ưu đồ chương trình con tạo chuỗi nhiễu giả ngẫu nhiên prn(): 
Bắt đầu 
Sai 
 Tính giá trị vòng quay fb: 
fb = b0 XOR b1; 
 fb = fb XOR (b11 XOR b13); 
Bit b0 = 1 ? 
Chuỗi nhiễu nhận mức dương; Chuỗi nhiễu nhận mức âm; 
Đúng 
74
Hình 5.6: Lưu đồ thuật toán chương trình tạo nhiễu giả ngẫu nhiên. 
5.3.KẾT LUẬN: 
Chương này chỉ giới thiệu sơ lược cách tổ chức và hoạt động của chương trình khử 
nhiễu kiểu thích nghi; cùng với các lưu đồ thuật toán của các hàm trong chương 
trình đó. Còn phần thực thi chương trình sẽ được giới thiệu thông qua bảo vệ đồ án. 
Kãút luáûn vaì 
hæåïng phaït 
triãøn âãö taìi 
75
Các khảo sát của đồ án cho thấy tầm quan trọng của lọc số, ưu điểm của lọc số 
so với lọc tương tự. Có nhiều loại bộ lọc, nhưng chủ yếu dựa trên hai loại cấu trúc 
căn bản đó là kiểu FIR và IIR. Đặc biệt, đồ án đã tìm hiểu khá rõ bộ lọc số kiểu 
thích nghi, đó là kiểu lọc thông minh và sự hoạt động rất hiệu quả của nó; dựa trên 
các thuật toán như LMS, RLS, NLMS, .v.v. Và sự ổn định của chúng khi chúng ta 
thiết kế theo kiểu cấu trúc FIR. Chúng ta đã tiếp cận với bộ xử lý TMS320C6711 
của hãng Texas Instruments, và đã tiến hành chạy thời gian thực trên 
TMS320C6711 DSK. Kết quả đem lại khá hấp dẫn, trực quan với dạng sóng ngỏ 
vào, ngỏ ra; chúng ta có thể thay đổi tức thời các hệ số của bộ lọc; mà đây là điều 
rất khó đối với bộ lọc tương tự. 
Hai thuật toán được dùng chủ yếu trong lọc thích nghi là LMS và RLS; loại 
RLS thì có cơ sở toán học rất chặt chẽ, nhưng vì do yêu cầu phải tính toán nhiều 
hơn và độ chính xác cao hơn nên phức tạp hơn và tốn thời gian hơn; nên ít được áp 
dụng bằng kiểu LMS đơn giản hơn, phần thực nghiệm của đồ án này tập trung cho 
kiểu LMS. Các kết quả thực nghiệm thể hiện khá rõ tính năng của bộ lọc thích nghi 
và khả năng ứng dụng của khử nhiễu. 
Đây là bước đầu tìm hiểu về quá trình xử lý với TMS320C6711 DSK để xử lý 
âm thanh như: lọc âm, nén âm, phân tích phổ âm, . . .Sau đó sẽ phát triển lên bước 
cao hơn với các ứng dụng của các bộ DSP chuyên dụng khác như là: xử lý ảnh, âm 
thanh cho điện thoại di động, phân tích phổ tín hiệu ứng dụng cho mạng điện thoại 
di động, phân tích quang phổ, xử lý sóng siêu âm hay cao hơn nữa là: bộ xử lý dò 
đường cho robot, cho xe hơi tự động, nhiều ứng dụng khác thực tế và .v.v. 
Hướng phát triển của đề tài là mở rộng cho nhiều kiểu cấu trúc khác nhau để 
so sánh kết quả hoạt động của chúng với nhau. Qua đó thấy được tầm quan trọng 
của lọc số nói riêng và tính hữu dụng của các bộ DSP nói chung, chúng được sử 
dụng khá phổ biến trong công nghiệp, trong những dụng cụ từ hiện đại quy mô đến 
các đồ dùng dân dụng, các đồ chơi trẻ em, .v.v. 
Mỗi bộ lọc số có thể có các vai trò riêng như chuyên về xử lý ảnh hay xử lý 
âm thanh, phân tích phổ, .v .v. và vì vậy sẽ có nhiều card DSP để tiến hành thí 
76
nghiệm các kiểu ứng dụng khác nhau; như ở đồ án này sử dụng DSK chuyên về âm 
thanh. 
Mặc dù đã rất cố gắng và cẩn thận nhưng đồ án này vẫn sẽ không tránh khỏi 
những thiếu sót; mong các Thầy, Cô hướng dẫn thêm để đồ án được hoàn chỉnh 
hơn. 
 Đà Nẵng, ngày 1 tháng 5 năm 2006. 
TÀI LIỆU THAM KHẢO 
[1]Nguyễn Đình Huy - Xác suất và thống kê - Nhà xuất bản Đại học quốc gia TP. 
Hồ Chí Minh – Năm 2003. 
[2]Nguyễn Hữu Hùng - Lọc số kiểu thích nghi trên DSP - Luận văn Thạc sỹ kỹ 
thuật - Tiến sỹ Ngô Văn Sỹ, hướng dẫn. 
77
[3]Nguyễn Quốc Trung - Xử lý tín hiệu và lọc số - Tập một và hai – Nhà xuất bản 
Khoa học và kỹ thuật Hà Nội – Năm 1999. 
[4]Tống Văn On – Lý thuyết và bài tập xử lý tín hiệu số - Nhà xuất bản Lao động, 
xã hội – 2002. 
[5]Aizezi Abuding Vishnuvardhan Yalamanchili - Department of Signal and 
Systems - Chalmers University of Technology Gothenborg - Sweden 2004. 
[6]Douglas L.Jones - The Connexons Project and Licensed under the Creative 
Commons Attribution License. 
 [7]Hyun-Chool Shin, Ali H. Sayed, Fellow, IEEE, and Woo-Jin Song, Member, 
IEEE - IEEE SIGNAL PROCESSING LETTERS, VOL. 11, NO. 2, FEBRUARY 
2004. 
[8]Monson H.Hayes, Wiley - Statistical Digital Signal Processing and Modeling - 
1996. 
[9]Rulph Chassaing - Digital Signal Processing with C and the TMS320C30 - John 
Wiley & Sons, Inc - 1997. 
[10]Rulph Chassaing - DSP Applications Using C and the TMS320C6x DSK - 
John Wiley & Sons, Inc - 2002. 
[11]Sen M.Kuo, Bob H.Lee - Real-Time Digital Signal Processing - John Wiley & 
Sons – 2001. 
[12]Simon Haykin, Prentice Hall - Adaptive Filter Theory - 2002. 
[13]Steven W.Smith - Digital Signal Processing. 
[14]Steven W.Smith – The Scientist and Engineer’s Guide Digital Signal 
Processing – Chapter 14: Introduction to Digital Filters 
[15]Texas Instrucments - TMS320C6000 CPU and Instruction Set Reference Guide 
- Literature Number: SPRU189F October 2000. 
[16]Texas Instruments - Getting Started Guide Code Composer Studio. 
[17]Texas Instruments Incorporated, 2000 - Mixed Signal Products - SLAS202B. 
[18]Texas Instruments Incorporated, 2000 - SPRS073B – AUGUST 1998 – 
REVISED APRIL 2000. 
78
[19]TMS320C6711/TMS320C6711B/TMS320C6711C/TMS320C6711D Silicon 
Errata - SPRZ173P. 
PHỤ LỤC 
1.CÁC THANH GHI CỦA BỘ XỬ LÝ TMS320C6711: 
 Các thanh ghi ngoại vi: 
79
Hình 1.1: Các thanh ghi EMIF 
Hình 1.2: Các thanh ghi Cache. 
80
Hình 1.3: Các thanh ghi chọn ngắt. 
Hình 1.4: Các thanh ghi thiết bị. 
Hình 1.5: Các thanh ghi bộ định thời 0 và 1. 
2.CHƯƠNG TRÌNH KHỬ NHIỄU KIỂU THÍCH NGHI: 
2.1.Chương trình chính: khunhieuthichnghi.c 
//BO LOC FIR KIEU THICH NGHI DE KHU NHIEU AUDIO 
#include "Cac_he_so_chuoi_nhieu.cof" //Cac he so chuoi nhieu 
#include "Tao_nhieu.h" //Thu vien tao chuoi nhieu 
#define N 30 //So cac he so cua bo loc 
#define B 1E-12 //Toc do do hoi tu 
float delay[N]; //Bo dem du lieu vao 
float w[N]; //Cac he so bo loc 
int noise[NH]; //Cac mau nhieu 
81
short prn(void) //Tao nhieu gia ngau nhien 
{ 
 short prnseq; 
 if(sreg.bt.b0) //Chuoi {1,-1} 
 prnseq = -800; //Muc am cua nhieu 
 else 
 prnseq = 800; //Muc duong cua nhieu 
 fb =(sreg.bt.b0)^(sreg.bt.b1); //XOR cac bit 0 va 1 
 fb ^=(sreg.bt.b11)^(sreg.bt.b13); //XOR cac bit 11 va 13 roi XOR voi fb 
 sreg.regval<<=1; //Dich thanh ghi sang trai 1 bit 
 sreg.bt.b0 = fb; //Dong duong dan vong quay 
 return prnseq; 
} 
interrupt void c_int11() //ISR: Doan chuong trinh ngat 
{ 
 int i; 
 float noise_sig, desired_sig, dplusn_sig = 0, y = 0, E = 0; 
 noise[0] = prn(); //Chuoi nhieu ngo vao 
 for (i = NH-1; i >= 0; i--) //Cap nhat chuoi nhieu gia ngau nhien 
 { 
 noise_sig = hn[0]*noise[0]; 
 noise_sig = noise_sig + (hn[i]*noise[i]); 
 desired_sig = input_sample(); //Nhan tin hieu ngo vao la tin hieu 
 //muon 
 delay[0] = noise[0]; 
 dplusn_sig = noise_sig + desired_sig; 
/* Tinh toan nhieu uoc luong */ 
 for (i = 0; i<N; i++) 
 y = y + (delay[i]*w[i]); 
82
 E = dplusn_sig - y; //Sai so ngo ra chinh la tin hieu mong 
 //muon 
/* Tinh toan va cap nhat cac he so moi cho bo loc theo thuat toan LMS */ 
 for (i = N-1; i >= 0; i--) 
 { 
 w[i] = w[i] + (B*E*delay[i]); 
 delay[i] = delay[i-1]; 
 } 
 output_sample((short)E); //Ngo ra cua bo loc da khu nhieu 
 } 
return; 
} 
/* Chuong trinh chinh */ 
void main() 
{ 
 short i, T; 
 sreg.regval = 0xffff; //Thiet lap thanh ghi dich 
 fb = 1; //Lay gia tri quay vong chuoi nhieu 
 for (i = 0; i<NH; i++) 
 noise[i] = 0; //Khoi tao bo dem nhieu 
/* Khoi tao cac he so va cac vector do tre*/ 
 for (T= 0; T<N; T++) 
 { 
 delay[T] = 0; //Khoi tao bo dem du lieu 
 w[T]=0; //Khoi tao he so bo loc 
 } 
 comm_intr(); //Khoi tao DSK, codec, McBSP 
 while(1); //Lap vo han 
} 
83
2.2.Chương trình thư viện tạo chuỗi nhiễu: Tao_nhieu.h 
//Tao_nhieu.h - file thu vien cho chuoi nhieu gia ngau nhien 
typedef struct BITVAL //Cac bit cua thanh ghi duoc dinh kieu integer 
{ 
 unsigned int b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1; 
 unsigned int b7:1, b8:1, b9:1, b10:1, b11:1, b12:1,b13:1; 
 unsigned int dweebie:2; //Dien vao cac bit trong - Cac bit 14 va 15 
} 
bitval; 
typedef union SHIFT_REG 
{ 
 unsigned int regval; 
 bitval bt; 
} 
 shift_reg; 
2.3.Chương trình tạo hệ số chuỗi nhiễu bằng Matlab: taoheso.m 
%TAO CAC HE SO CHUOI NHIEU TRUNG BINH 0 
function taoheso(n,b) % n la so cac he so 
 % b chua cac he so trung binh 0 
fid = fopen('Cac_he_so_chuoi_nhieu.cof','w'); % Mo/tao file 
n = 101; 
fprintf(fid,'#define NH %d\n',n); 
fprintf(fid,'float hn[NH] =\n{'); % Bat dau 
for i = 1:nn, 
b(i)=randn; % Tao chuoi nhieu gia ngau nhien trung binh 0 
 fprintf(fid,'%d, ' ,b(i)); % In cac he so 
 if (mod(i,5) == 0) % Cu moi 5 he so, 
 fprintf(fid,'\n'); % Tiep dong moi 
 end 
84
end 
fprintf(fid,'%d' ,b(n)); % He so cuoi cung 
fprintf(fid,'};\n'); % Ket thuc bang dau } 
fclose(fid); % Dong file 
size(b) 
2.4.Chương trình khởi tạo ngắt DSK: C6xdskinit.c 
/* C6xdskinit.c Khoi tao DSK, AD535, McBSP */ 
#include 
#include "c6xdsk.h" 
#include "c6xdskinit.h" 
#include "c6xinterrupts.h" 
char polling = 0; 
void mcbsp0_init() //Thiet lap McBSP0 
{ 
 *(unsigned volatile int *)McBSP0_SPCR = 0; //reset cong noi tiep 
 *(unsigned volatile int *)McBSP0_PCR = 0; //Thiet lap thanh ghi dieu khien chan 
 *(unsigned volatile int *)McBSP0_RCR = 0x10040; //Thiet lap thanh ghi dieu 
 //khien rx 
*(unsigned volatile int *)McBSP0_XCR = 0x10040; //Thiet lap thanh ghi dieu 
 //khien tx 
 *(unsigned volatile int *)McBSP0_DXR = 0; 
 *(unsigned volatile int *)McBSP0_SPCR = 0x12001; //Thiet lap thanh ghi dieu 
 //khien SP 
} 
void mcbsp0_write(int out_data) //Ham ghi 
{ 
 int temp; 
 if (polling) //Bo qua neu la ngat 
 { 
85
 temp = *(unsigned volatile int *)McBSP0_SPCR & 0x20000; 
 while ( temp == 0) 
 temp = *(unsigned volatile int *)McBSP0_SPCR & 0x20000; 
 } 
 *(unsigned volatile int *)McBSP0_DXR = out_data; 
} 
int mcbsp0_read() //Ham doc 
{ 
 int temp; 
 if (polling) 
{ 
 temp = *(unsigned volatile int *)McBSP0_SPCR & 0x2; 
 while ( temp == 0) 
 temp = *(unsigned volatile int *)McBSP0_SPCR & 0x2; 
 } 
 temp = *(unsigned volatile int *)McBSP0_DRR; 
 return temp; 
} 
 void TLC320AD535_Init() //Khoi tao AD535 
{ 
 mcbsp0_read(); //Thiet lap thanh ghi so 3 cua AD535 
 mcbsp0_write(0); 
 mcbsp0_read(); 
 mcbsp0_write(0); 
 mcbsp0_read(); 
 mcbsp0_write(0); 
 mcbsp0_read(); 
 mcbsp0_write(1); //Gui bit cho giao tiep thu hai 
 mcbsp0_read(); 
86
 mcbsp0_write(0x0386); //Reset kenh thoai 
 mcbsp0_read(); 
 mcbsp0_write(0); //Xoa giao tiep thu hai 
 mcbsp0_read(); 
 mcbsp0_write(0); 
 mcbsp0_read(); 
 mcbsp0_write(0); 
 mcbsp0_read(); 
 mcbsp0_write(1); //Gui bit cho giao tiep thu hai 
 mcbsp0_read(); 
 mcbsp0_write(0x0306); //Xoa reset kenh thoai 
 mcbsp0_read(); 
 mcbsp0_write(0); //Xoa giao tiep thu hai 
 mcbsp0_read(); 
 mcbsp0_write(0); //Thiet lap thanh ghi so 4 cua AD535 
 mcbsp0_read(); 
 mcbsp0_write(0); 
 mcbsp0_read(); 
 mcbsp0_write(1); 
 mcbsp0_read(); 
 mcbsp0_write(0x0400); //Thiet lap do loi tien khuech dai microphone 
 //den 20 dB 
 mcbsp0_read(); 
 mcbsp0_write(0); 
 mcbsp0_read(); 
 mcbsp0_write(0); //Thiet lap thanh ghi so 5 cua AD535 
 mcbsp0_read(); 
 mcbsp0_write(0); 
 mcbsp0_read(); 
87
 mcbsp0_write(1); 
 mcbsp0_read(); 
mcbsp0_write(0x0502); 
 mcbsp0_read(); 
 mcbsp0_write(0); 
 mcbsp0_read(); 
} 
void c6x_dsk_init() //Khoi tao DSP va cac ngoai vi 
{ 
 CSR=0x100; //Cam tat ca cac ngat 
 IER=1; //Cam cac ngat tru NMI 
 ICR=0xffff; //Xoa trong luc ngat 
 *(unsigned volatile int *)EMIF_GCR = 0x3300; //Dieu khien toan cuc EMIF 
 *(unsigned volatile int *)EMIF_CE0 = 0x30; //Dieu khien CE0 cua EMIF 
 *(unsigned volatile int *)EMIF_CE1 = 0xffffff03; //Dieu khien CE1 cua EMIF, 8 
 //bit bat dong bo 
 *(unsigned volatile int *)EMIF_SDCTRL = 0x07117000; //Dieu khien SDRAM 
 //cua EMIF 
 *(unsigned volatile int *)EMIF_SDRP = 0x61a; //Chu ky lam tuoi SDRAM 
 //cua EMIF 
 *(unsigned volatile int *)EMIF_SDEXT = 0x54519;//EMIF SDRAM extension 
 mcbsp0_init(); 
 TLC320AD535_Init(); 
} 
void comm_poll() //Giao tiep/Khoi tao viec dung kieu kiem soat vong 
{ 
 polling = 1; //Neu la kiem soat vong 
 c6x_dsk_init(); //Goi ham khoi tao DSK 
} 
88
void comm_intr() //Giao tiep/Khoi tao viec dung kieu ngat 
{ 
 polling = 0; //Neu la ngat 
 c6x_dsk_init(); //Goi ham khoi tao DSK 
 config_Interrupt_Selector(11, XINT0); //Dung ngat INT11 
 enableSpecificINT(11); //Cho ngat rieng 
 enableNMI(); //Cho phep NMI 
 enableGlobalINT(); //Cho phep GIE cho ngat toan cuc 
 mcbsp0_write(0); //Ghi den SP0 
} 
void output_sample(int out_data) //Cong cho ngo ra 
{ 
 mcbsp0_write(out_data & 0xfffe); //Che LSB 
} 
int input_sample() //Cong cho ngo vao 
{ 
 return mcbsp0_read(); //Doc tu McBSP0 
} 
3.CHƯƠNG TRÌNH KHỬ NHIỄU KIỂU FIR BÌNH THƯỜNG: 
khunhieuFIR.c 
//BO LOC FIR KHU NHIEU KIEU BINH THUONG 
#include "He_so_bo_loc.cof" 
#include "Cac_he_so_chuoi_nhieu.cof" 
#include "Tao_nhieu.h" //File thu vien tao chuoi nhieu 
int noise[NH]; //Cac mau nhieu 
int data[N]; //Cac mau du lieu duoc lam tre 
short fb; //so vong quay 
shift_reg sreg; 
short prn(void) //Tao nhieu gia ngau nhien 
89
{ 
 short prnseq; 
 if(sreg.bt.b0) //Chuoi {1,-1} 
 prnseq = -800; //Muc am cua nhieu 
 else 
 prnseq = 800; //Muc duong cua nhieu 
 fb =(sreg.bt.b0)^(sreg.bt.b1); //XOR cac bit 0 va 1 
 fb ^=(sreg.bt.b11)^(sreg.bt.b13); //XOR cac bit 11 va 13 roi XOR voi fb 
 sreg.regval<<=1; //Dich thanh ghi sang trai 1 bit 
 sreg.bt.b0 = fb; //Dong duong dan vong quay 
return prnseq; 
} 
interrupt void c_int11() //ISR 
{ 
 int i; 
 int yn; 
 int yd; //Khoi tao ngo ra bo loc 
 noise[0] = prn(); //Khoi tao nhieu ngo vao 
 yn = hn[0]*noise[0]; 
 for (i = NH-1; i > 0; i--) 
 { 
 yn +=(hn[i]*noise[i]); //y(n)+= h(i)*x(n-i) 
 noise[i] = noise[i-1]; //Dich chuyen nhieu de cap nhat cac bo tre 
 } 
 data[0] = yn + (input_sample()<<3); 
 //output_sample(yn); 
 //output_sample(noise[0]); 
 yd = h[0]*data[0]; 
 for (i = N-1; i > 0; i--) 
90
 { 
 yd +=(h[i]*data[i]); //y(n)+= h(i)*x(n-i) 
 data[i] = data[i-1]; //Dich chuyen du lieu de cap nhat cac bo tre 
 } 
 output_sample(yd); //Ngo ra tu bo loc 
 return; 
 void main() 
 { 
 short i; 
 sreg.regval = 0xffff; //Thiet lap thanh ghi dich 
 fb = 1; //Khoi tao so vong quay 
 for (i = 0; i<NH; i++) 
 noise[i] = 0; //Khoi tao bo dem nhieu 
 for (i = 0; i<N; i++) 
 data[i] = 0; //Khoi tao bo dem du lieu 
 comm_intr(); //Khoi tao DSK, codec, McBSP 
 while(1); //Lap vo han 
 } 
91
MỤC LỤC 
DANH MỤC TỪ VIẾT TẮT ................................Error! Bookmark not defined. 
Måí âáöu .............................................................Error! Bookmark not defined. 
CHƯƠNG 1:TỔNG QUAN VỀ LỌC SỐ.............................................................4 
1.1.MỞ ĐẦU: ......................................................................................................4 
1.2.GIỚI THIỆU VỀ LỌC SỐ: [14].....................................................................6 
1.3.CÁC THÔNG SỐ CỦA HỆ THỐNG Ở MIỀN THỜI GIAN: [14].................8 
1.3.1.Tốc độ chuyển đổi hay thời gian lên( Risetime):......................................8 
1.3.2.Gợn sóng nhô( Overshoot) trong đáp ứng bậc thang: ...............................8 
1.3.3.Pha tuyến tính:.........................................................................................8 
1.4.CÁC THÔNG SỐ CỦA HỆ THỐNG Ở MIỀN TẦN SỐ: [14].......................9 
1.5.CÁC BỘ LỌC THÔNG THẤP, THÔNG CAO, THÔNG DẢI, VÀ CHẮN 
DẢI: [4] & [14]..................................................................................................11 
1.6.CẤU TRÚC CĂN BẢN CỦA CÁC BỘ LỌC SỐ: [2] & [3] & [4] & [5].....15 
1.6.1.Bộ lọc FIR: ............................................................................................15 
1.6.1.1.Phép biến đổi Z( Z-Transform): ......................................................15 
1.6.1.2.Các bộ lọc FIR: ...............................................................................17 
1.6.1.3.Cấu trúc hàng rào( Lattice) FIR:......................................................18 
1.6.1.4.Các bộ lọc FIR có pha tuyến tính sử dụng các cửa sổ( Window): ....19 
1.6.2.Bộ lọc IIR:.............................................................................................21 
1.6.2.1.Cấu trúc bộ lọc IIR dạng trực tiếp I: ................................................23 
1.6.2.2.Cấu trúc bộ lọc IIR dạng trực tiếp II:...............................................23 
1.7.KẾT LUẬN: ................................................................................................24 
CHƯƠNG 2:CÁC BỘ LỌC THÍCH NGHI.......................................................24 
2.1.MỞ ĐẦU: ....................................................................................................24 
2.2.MỘT SỐ KHÁI NIỆM CƠ BẢN: ................................................................25 
2.2.1.Biến ngẫu nhiên:....................................................................................25 
2.2.2.Quá trình ngẫu nhiên: ............................................................................25 
2.2.3.Đặc tính từng phần của quá trình ngẫu nhiên rời rạc theo thời gian:.......25 
92
2.2.4.Tương quan của các tín hiệu: .................................................................26 
2.3.GIỚI THIỆU LỌC THÍCH NGHI: [9] & [10]..............................................27 
2.4.CÁC CẤU TRÚC THÍCH NGHI: [9] & [10]...............................................28 
2.4.1.Khử nhiễu:.............................................................................................28 
2.4.2.Nhận dạng hệ thống:..............................................................................28 
2.4.3.Bộ dự đoán thích nghi: ..........................................................................29 
2.5.CÁC BỘ LỌC WIENER: [2] & [9] & [10] ..................................................29 
2.5.1.Giới thiệu: .............................................................................................29 
2.5.2.Bộ lọc FIR Wiener: ...............................................................................32 
2.5.3.Các thuật toán lọc thích nghi: ................................................................35 
2.5.3.1.Giới thiệu: .......................................................................................35 
2.5.3.2.Thuật toán LMS: .............................................................................37 
2.5.3.3.Thuật toán RLS: ..............................................................................40 
2.5.3.4.Thuật toán NLMS: [7].....................................................................43 
2.5.3.4.1.Giới thiệu: ................................................................................43 
2.5.3.4.2.Số bước khác nhau APA: ..........................................................44 
2.5.3.4.3.Kết quả sự mô phỏng:...............................................................48 
2.6.KẾT LUẬN: ................................................................................................48 
CHƯƠNG 3:KHỬ NHIỄU KIỂU THÍCH NGHI. ............................................49 
3.1.MỞ ĐẦU: ....................................................................................................49 
3.2.LÝ THUYẾT KHỬ NHIỄU KIỂU THÍCH NGHI: [5] ................................49 
3.2.1.Các chế độ khử nhiễu kiểu thích nghi: ...................................................49 
3.2.2.Các kiểu lọc của khử nhiễu thích nghi: ..................................................51 
3.2.3.Các thuật toán cập nhật cho các bộ lọc:..................................................51 
3.3.KẾT LUẬN: ................................................................................................54 
CHƯƠNG 4:CẤU TRÚC TMS320C6711 DSK .................................................55 
4.1.MỞ ĐẦU: ....................................................................................................55 
4.2.TMS320C6711 DSK: [5] & [18] & [19] ......................................................55 
4.2.1. Giới thiệu bộ xử lý TMS320C6711:......................................................56 
93
4.2.1.1.Giới thiệu chung: ............................................................................56 
4.2.1.2.Sơ đồ khối chức năng TMS320C6711:............................................58 
4.2.1.2.1.CPU:.........................................................................................59 
4.2.1.2.2.Bản đồ bộ nhớ: .........................................................................60 
4.2.1.2.3.Các đường truyền dữ liệu:.........................................................61 
4.2.1.2.4.Đường ống( Pipeline): ..............................................................63 
4.2.1.2.5.Ngắt( Interrupt):........................................................................64 
4.2.1.3.Các cổng đệm nối tiếp đa kênh( McBSP): .......................................65 
4.2.2.TLC320AD535: [17] .............................................................................67 
4.2.2.1. Giới thiệu: ......................................................................................67 
4.2.2.2.Các đặc tính của AD535:.................................................................67 
4.2.2.3.Sơ đồ khối chức năng:.....................................................................68 
4.3.KẾT LUẬN: ................................................................................................68 
CHƯƠNG 5:THỰC HIỆN BỘ LỌC THÍCH NGHI ĐỂ KHỬ NHIỄU TRÊN 
TMS320C6711 DSK ............................................................................................69 
5.1.MỞ ĐẦU: ....................................................................................................69 
5.2.TỔ CHỨC CHƯƠNG TRÌNH VÀ CÁC LƯU ĐỒ THUẬT TOÁN CỦA 
CHƯƠNG TRÌNH KHỬ NHIỄU KIỂU THÍCH NGHI:....................................69 
5.2.1.Tổ chức chương trình: ...........................................................................69 
Chương trình khử nhiễu kiểu thích nghi được tổ chức theo sơ đồ sau: ............69 
5.2.2.Các lưu đồ thuật toán:............................................................................70 
5.3.KẾT LUẬN: ................................................................................................74 
Kãút luáûn vaì hæåïng phaït triãøn âãö taìi ..........................74 
TÀI LIỆU THAM KHẢO ...................................................................................76 
PHỤ LỤC.............................................................................................................78 
1.CÁC THANH GHI CỦA BỘ XỬ LÝ TMS320C6711:...................................78 
2.CHƯƠNG TRÌNH KHỬ NHIỄU KIỂU THÍCH NGHI:.................................80 
2.1.Chương trình chính: khunhieuthichnghi.c.................................................80 
2.2.Chương trình thư viện tạo chuỗi nhiễu: Tao_nhieu.h ................................83 
94
2.3.Chương trình tạo hệ số chuỗi nhiễu bằng Matlab: taoheso.m ....................83 
2.4.Chương trình khởi tạo ngắt DSK: C6xdskinit.c.........................................84 
3.CHƯƠNG TRÌNH KHỬ NHIỄU KIỂU FIR BÌNH THƯỜNG: khunhieuFIR.c
..........................................................................................................................88 
            Các file đính kèm theo tài liệu này:
 do_an_tot_nghiep120_6504.pdf do_an_tot_nghiep120_6504.pdf