7.7.2 Tràn
Tràn xuất hiện khi tổng từng phần hoặc ngõ ra lọc vượt quá chiều dài cho phép của thanh ghi hoặc bộ cộng. Khi điều này xảy ra kết quả sẽ có lỗi như dấu thay đổi hoặc sai biên độ. Đầu tiên xem ví dụ đơn giản. Xét một vi xử lý logic 4 bit dấu chấm cố định sử dụng số bù hai. Nếu x1 = 0.875 (0111) và x2 = 0.125 (0001), tổng x1 + x2 dạng nhị phân là 0111 + 0001 = 1000 mà có -1 khi kết quả đúng nên là +1.
Một ví dụ khác là x3 = -0.500 (1100) và x4 = 0.625 (0101) thì dạng nhị phân x3 – x4 = 0110 mà là 0.875 trong khi kết quả đúng nên là -1.125. Một ví dụ khác x1 = -7/8 = 1001, và x2 = -7/8 = 1001.
Trong tổng thập phõn đỳng là ngược lại tổng số bự hai cho kết quả (1) 0010 = ẳ khi bỏ bit tràn.
Vì lọc FIR tràn kết quả ngõ ra sai. Lọc IIR tràn gây ra kết quả sai nghiêm trọng vì lỗi tràn hồi tiếp bên trong hệ thống. Nếu ngõ ra cuối cùng có chiều dài từ cho phép, tràn trong tổng từng phần không quan trọng vì thuộc tính số học số bù hai. Ở đây có những cách khác nhau để chống lại sự tràn.
Ở đây ta xét số học và tỉ lệ.
Bão hòa số học
Bão hòa số học làm việc dựa vào nguyên lý của sự bão hòa để ngăn cảng sự tràn bằng cách giữ kết quả tại giá trị lớn nhât. Đặc tính truyền của bão hòa số học chỉ trong hình 7.42. Khi cờ tràn nhạy, nghĩa là bất kỳ tín hiệu x lớn hơn 1 hoặc thấp hơn -1 ngõ ra y có được như 1 hoặc -1. Trong ví dụ trước, với
+ +
+ Z-1
Z-1 0.8
0.6 -1
e2(n) x(n)
x
x
phần cứng 4 bit bão hòa số học được sử dụng, cộng x1 + x2 sẽ có kết quả 0111 hoặc 0.875 là giá trị thập phân, so với giá trị đúng là 1, ở đó lỗi là 0.125, ngược lại bão hòa số học có kết quả là -1.
Hình. 7.42: Đặc tính truyền bão hào số học Tỉ lệ
Kỹ thuật hiệu quả nhất để ngăn tran là scaling tín hiệu và hệ số. Một ví dụ đơn giản sẽ minh họa Xét một lọc FIR bậc nhất trong hình 7.43. Giả sử x(n) = 0.8 và x(n – 1) = 0.6, thì không cần thừa số tỉ lệ, β
= 1, ngõ ra là y(n) = 0.9x(n) + 0.8x(n – 1) = 1.2, và tràn sẽ xuất hiện trong vi xử lý DSP 16 bit dấu chấm cố định mà không cần số học bão hòa. Bây giờ nếu tín hiệu scaled xuống bằng β = 0.5 thì x(n) = 0.4, x(n – 1) = 0.3, kết quả y(n) = 0.6 mà không tràn
Hình. 7.43: thừa số tỉ lệ β được cộng đến lọc FIR để chống tràn Với lọc FIR, những hệ số có thể được tỉ lệ như
(7.90a)
Hoặc
(7.90b) Với h(k), h(i) là đáp ứng xung của lọc. Trong phương pháp đầu tràn không xuất hiện nó dựa vào điều kiện xấu nhất mà không giống như trong thực tế. Trong phương pháp hai cho thấy sự lượng tử hệ số nhiễu có thể tràn. Ngõ vào tín hiệu có thể tỉ lệ giống nhau.
Với lọc IIR, tín hiệu vào scaling một cách xấp xỉ để ngăn tràn tại mỗi mã n khi tính tổng của tích. Tuy nhiên, xu hướng đo là giảm sự lượng tử SNR. Trong hệ thống số dấu chấm cố định, tín hiệu
y
-1 x
-1
1 1
Z-1
+ x(n)
y(n) x(n) - 1
0.8 0.9
β x
và mỗi node biến trong lọc nên nhỏ hơn 1 về mặt biên độ để tránh tràn. Xem hi(n) là đáp ứng xung của node thứ I liên hệ với đầu vào x(n), và vi(n) là biến node thứ I với một sự tràn có thể xuất hiện. Thì
Bây giờ lấy giá trị tuyệt đối của hai vế
Với là giá trị lớn nhất của ngõ vào x(n). Vì vậy điều kiện hiệu quả là |vi(n)| < 1 để không xuất hiện tràn trong hệ thống
(7.91) Với tất cả nodes trong lọc. Nếu điều kiện trên không thỏa, tín hiệu vào x(n) có thể được scaled bằng một thừa số s để
(7.92a) Mẫu trong phần bên phải là chuẩn L1 chú thích . Vì vậy scaling có thể được viết như
(7.92b) Scaling trong lọc IIR phụ thuộc vào dạng thực hiện lọc. Khi sử dụng dạng tầng hoặc song song ta chỉ cần tập trung vào phần lọc bậc nhất và hai.
Ví dụ 7.7.3
Với lọc được cho trong hình 7.44, đáp ứng xung từ đầu vào của node thứ nhất là h1(n) = 0.8nu(n), tìm giá trị lớn nhất của đầu vào x(n) để không có tràn. Nếu giá trị lớn nhất của đầu vào là 0.7, Cái thừa số scaling xấp xỉ là bao nhiêu?
Hình 7.44: Ví dụ 7.7.3
Giải
Đáp ứng xung từ ngõ vào node thứ nhất được cho như h1(n) = 0.8nu(n), vì vậy
Đáp ứng xung từ ngõ vào node thứ hai là
Z-1
x(n) + y(n)
0.8 -0.9
+
v1(n) v2(n)
x x
h2(n) = 0.8nu(n) – 0.9(0.8)n – 1u(n – 1) = δ(n) – 0.1(0.8)n-1u(n-1) Vì vậy
Điệu kiện để không tràn là
Nếu tín hiệu vào có giá trị lớn nhất là 0.7 thì thừa số tỉ lệ là
Hoặc = 0.4
Ví dụ 7.7.4
Cho một lọc IIR có hàm truyền
Tìm giá trị lớn nhất của đầu vào để không xảy ra tràn với dạng trực tiếp II và dạng tầng.
Giải
Đầu tiên ta viết hàm truyền như
Mà cho cấu trúc dạng trực tiếp II trong hình 7.45a. bằng
Từ sự thực hiện dạng trực tiếp II, ở đây có những nodes, v1, v2, v3 và v4 mà tràn có thể xảy ra bất cứ lúc nào. Vì hai nodes v2 và v3 là những phiên bản trễ của v1, ta chỉ cần xét v1 và v4. Ta có
Thực hiện dạng trực tiếp II
Z-1
x(n) + + y(n)
v1(n)
Z-1
x(n) + +
Z-1 V3(n)
-0.3 -0.5
0.14
v1(n) v4(n)
+
Z-1
v5(n) v3(n)
v4(n) x x x
(a) Thực hiện dạng tầng Hình. 7.45: Ví dụ 7.7.4 Vì vậy đáp ứng xung với node v1 là
Mặc khác
Vì vậy đáp ứng xung của hệ thống là
Giá trị lớn nhất của ngõ vào mà không bị tràn được cho bởi = 0.277