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 |
Chia sẻ: lylyngoc | Lượt xem: 2526 | 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