Tải bản đầy đủ (.pdf) (24 trang)

Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.07 MB, 24 trang )



MỤC LỤC


Phần Trang

Lời mở đầu 2
Lời cảm ơn 3
I. Yêu cầu bộ lọc và lý thuyết tổng quát 4
1. Yêu cầu về bộ lọc FIR 4
2. Lý thuyết bộ lọc FIR 4
II. Mô phỏng MATLAB và viết chương trình CCS 10
1. Mô phỏng Matlab bài toán bộ lọc FIR 10
2. Yêu cầu phần mềm và phần cứng 14
3. Viết chương trình trên CCS 6.1 16
III. Kết quả 23
IV. Tài liệu tham khảo 24
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
2


LỜI MỞ ĐẦU

Xử lý tín hiệu số (Digital Signal Processing – DSP) đã trở thành môn học cơ sở cho nhiều
ngành khoa học, kĩ thuật: Điện- Điện tử, Viễn thông,…Trong đó, phép xử lí cơ bản nhất
của DSP là lọc, và các hệ thống được đề cập đến nhiều nhất trong xử lý tín hiệu số là các
bộ lọc số (Digital Filter). Nếu xét về đáp ứng xung có thể chia các bộ lọc số thành 2 loại
chính là bộ lọc có đáp ứng xung hữu hạn FIR (Finite Impulse Response) còn gọi là lọc
không đệ quy, và bộ lọc có đáp ứng cung vô hạn IIR (Infinite Impulse Response) còn gọi


là lọc đệ quy. Xét về đáp ứng tần số biên độ có thể chia các bộ lọc, FIR hay IIR, thành 4
loại cơ bản: thông thấp, thông cao, thông dải và chắn dải. Các bộ lọc này có thể được thiết
kế bằng những phương pháp sau đây: phương pháp cửa sổ ( Window Design Techniques),
phương pháp lấy mẫu tần số (Frequency Sampling Design Techniques) và phương pháp
xấp xỉ tối ưu cân bằng gợn sóng (Optimal Equiripple Design Techniques).
Trong báo cáo bài tập lớn này, nhóm xin phép được trình bày việc thiết kế bộ lọc thông
thấp FIR bậc 3 thực hiện trên phần cứng TMS320C5515 của Texas Instrument (TI) để
nắm vững lí thuyết về bộ lọc FIR cũng như làm quen với KIT TMS320C5515 và các phần
mềm hỗ trợ Code Composer Studio (CCS), MATLAB…













Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
3

LỜI CẢM ƠN


Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ, giúp đỡ

ít hay nhiều, dừ trực tiếp hay gián tiếp của người khác. Trong suốt thời gian thực hiện báo
cáo này, nhóm em đã nhận được sự quan tâm, giúp đỡ của quý Thầy cô và bạn bè.
Với lòng biết ơn sâu sắc nhất, nhóm xin chân thành cảm ơn PGS.TS Lê Tiến Thường đã
hướng dẫn nhóm trong việc tiếp cận đến các vấn đề Xử lý số tín hiệu để hoàn thành báo
cáo này.
Project được thực hiện trong gần suốt học kì 2, bước đầu đã giúp nhóm tìm hiểu thêm về
một số kiến thức còn hạn chế và còn nhiễu bỡ ngỡ. Do vậy, không tránh khỏi những thiếu
sót là điều chắc chắn, nhóm rất mong nhận được những ý kiến đóng góp quý báu của quý
Thầy cô và các bạn học cùng lớp để những kiến thức của nhóm trong lĩnh vực này được
hoàn thiện hơn.















Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
4

I. Yêu cầu bộ lọc và lý thuyết tổng quát

1. Yêu cầu về bộ lọc FIR
Trong project này, yêu cầu thiết kế bộ lọc thông thấp FIR bậc 3, có tần số cắt 


.
Thiết kế trên KIT TMS 320C5515.
2. Lý thuyết bộ lọc FIR
Các hệ thống LTI rời rạc có thể phân loại thành hệ thống FIR ( Finite Impulse Response)
và IRR ( Infinite Impulse Response), đó là nó có đáp ứng xung h(n) hữu hạn hay vô hạn.
Trong bài báo cáo này, ta chỉ đề cập đến bộ lọc FIR.
Đây là dạng bộ lọc có đáp ứng xung h(n) có giá trị trên khoảng thời gian hữu hạn    
và bằng 0 ở các giá trị khác:
 












trong đó M được xem như là bậc của bộ lọc. Tương ứng với nó, chiều dài của vector đáp
ứng xung của bộ lọc FIR  











là 

   
Các hệ số của đáp ứng xung










được gọi theo nhiều cách khác nhau hệ số
lọc ( filter coeficients, filter weights, hay filter taps).
Ta đã biết y(n) là tích chập (convolution) của chuỗi đầu vào x(n) với chuỗi bộ lọc h(n),
được viết dưới dạng:




 








 





 

 



 
Hay viết rút gọn lại là:













 




Vì vậy với bộ lọc FIR, có phương trình đơn giản như sau:










 



Hay khai triển ra là:




 






 



 

 

  
Như vậy, phương trình I/O nhận được từ tổng có trọng số của các mẫu đầu vào hiện tạo và
M mẫu trước đó 

 



 

  
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
5

Về mặt lý thuyết, dựa trên đặc điểm của đáp ứng tần số, xử lý tín hiệu số quan tâm đến 4
loại bộ lọc lý tưởng sau đây:
a. Bộ lọc thông thấp lý tưởng

Đáp ứng biên độ - tần số :













 



Khi đó đáp ứng xung của bộ lọc thông thấp lý tưởng với trễ nhóm  là:












 
b. Bộ lọc thông cao lý tưởng
Đáp ứng biên độ - tần số :













 



Khi đó đáp ứng xung của bộ lọc thông thấp lý tưởng với trễ nhóm  là:





 

 








 
c. Bộ lọc thông dải lý tưởng
Đáp ứng biên độ - tần số :















 



Khi đó đáp ứng xung của bộ lọc thông thấp lý tưởng với trễ nhóm  là:












 





 
d. Bộ lọc chắn dải lý tưởng
Đáp ứng biên độ - tần số :
















 



Khi đó đáp ứng xung của bộ lọc thông thấp lý tưởng với trễ nhóm  là:





 

 








  








 
Chúng ta có nhận xát là đáp ứng cung của các bộ lọc lý tưởng nói trên có chiều dài vô hạn,
xuất phát từ chỉ số  đến , và không nhân quả, dẫn đến không thể thực hiện được về
mặt vật lý. Khi tổng hợp bộ lọc thực tế, ta phải chấp nhận đáp ứng xung phải xuất pát từ
chỉ số 0 để đáp ứng điều kiện nhân quả. Khi đó, đáp ứng tần số của bộ lọc thực tế có phần
quá độ từ dải thông đến dải chắn, hoặc ngược lại, và được gọi là dải chuyển tiếp (transition
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
6

band). đồng thời phải có sự gợn sóng (ripple) ở cả dải thông và dải chắn hoặc ít nhất tại
một trong hai, dải thông hoặc dải chắn.
Việc thiết kế bộ lọc là quá trình tìm ra các tham số, hay dãy đáp ứng xung của bộ lọc, thỏa
mãn các yêu cầu chỉ tiêu kỹ thuật cho trước, cụ thể là một số hoặc tất cả các tham số tuyệt
đối (absolute specification) sau:
 Tần số cắt dải thông 


 Tần số cắt dải chắn 


 Độ gợn sóng dải thông 


 Độ gợn sóng dải chắn



Trên thực tế, các tham số thường được cho dưới dạng tương đối(relative specification) tính
theo đơn vị decibels dưới dạng sau đây:
 Độ gợn sóng dải thông theo dB được tính bằng công thức:


 
  

  


 Độ suy gảm dải chắn theo dB được tính bằng công thức:


 


  


 Bộ lọc FIR có một số ưu điểm về mặt thực hiện như sau:
- Đáp ứng pha là tuyến tính
- Tương đối dễ thiết kế và luôn luôn là hê thống ổn định
- Thực hiện được với hiệu quả cao
- Có thể thực hiện được trên cơ sở áp dụng biến đỗi Fourier rời rạc
 Hàm đáp ứng pha - tần số của bộ lọc FIR có dạng sau:





   
 Và hàm đáp ứng tần số của bộ lọc FIR được cho dưới dạng độ lớn và pha như sau:





 









Dựa trên tính chất đối xứng hay phản đối xứng của dãy đáp ứng xung và chiều dài N của
dãy đáp ứng xung, người ta phân loại bộ lọc FIR làm 4 loại sau đây:
a. Bộ lọc FIR loại 1:
h(n) đối xứng, N lẻ,    



Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
7




 























với 



 















 

  

 

  
  


dẫn đến: 























b. Bộ lọc FIR loại 2:
h(n) đối xứng, N chẵn,   





 










 
















với 



 



 


  




dẫn đến: 










 
















c. Bộ lọc FIR loại 3:
h(n) đối xứng, N lẻ,  


 





 



























với 



 



 

  




dẫn đến: 


























Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
8

d. Bộ lọc FIR loại 4:
h(n) đối xứng, N chẵn,  


 






 






























với 



 



 

  




dẫn đến: 





























 Có 3 phương pháp để tổng hợp bộ lọc FIR pha tuyến tính, đó là:
 Phương pháp của sổ.
 Phương pháp lấy mẫu tần số
 Phương pháp lặp
Trong phần này ta xét phương pháp thiết kế dựa trên phương pháp cửa số.
Tư tưởng cơ bản của phương pháp cửa sổ là tìm ra đáp ứng xung của bộ lọc lý tưởng
rồisau đó cắt xén ở hai đầu ( hay nhân với một hàm của sổ) dãy đáp ứng xung đó sao cho
ta thu được một bộ lọc FIR pha tuyến tính, đồng thời là nhân quả. Điểm nhấn mạnh ở
phương pháp này là tìm ra đáp ứng xung thích hợp của bộ lọc lý tưởng và lựa chọn hàm
của sổ thích hợp. Về mặt lý tưởng, bộ lọc thông thấp lý tưởng pha tuyến tính có độ lợi dải
thông bằng 1 và đáp ứng tần số bằng 0 trên toàn dải chắn, tức là:





 







 


, với 


Thì ta sẽ thu được dãy đáp ứng xung











 

Có tính chất đối xứng tại 
Với các bộ lọc số lý tưởng khác, bao gồm thông cao, thông dải, và chắn dải, dãy của đáp
ứng xung cũng có dạng tương tự như vậy và có thể suy ra từ dạng đáp ứng xung của bộ lọc
thông thấp lý tưởng nói trên.
Để thu được đáp ứng xung của bộ loc FIR về mặt thực tế, phương pháp cửa số dùng kỹ
thuật nhân hàm đáp ứng xung của bộ lọc lý tưởng 

 với một hàm cửa sổ w(n), với
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
9

w(n) là một hàm đối xứng với  trong khoảng từ 0 đến N-1 và bằng 0 trong khoảng còn
lại. Kết quả là hàm đáp ứng xung của bộ lọc thực tế h(n) là đối xứng hoặc phản đối xứng
với  


trong khoảng [0,N-1].
Các cửa sổ thông dụng:
 Cửa sổ chữ nhật
 Cửa sổ tam giác
 Cửa sổ Hamming
 Cửa sổ Hanning
 Cửa sổ Blackman
 Cửa sổ Kaiser











Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
10

II. Mô phỏng MATLAB và lập trình trên CCS
1. Mô phỏng Matlab bài toán bộ lọc FIR
Trước khi thiết kế bộ lọc FIR dựa trên yêu cầu đặt ra, nhóm thực hiện thiết kế bộ lọc FIR
trên Matlab bằng công cụ fdatool của nó. Sau đó tiến hành mô phỏng trên Simulink dựa
vào bộ lọc FIR đã được thiết kế với một số mẫu tín hiệu.
Tổng quan về công cụ thiết kế bộ lọc số FDATool
Công cụ thiết kế bộ lọc số (FDATool) cung cấp cho ta những kĩ thuật iên tiến để thiết kế,
phân tích, mô phỏng các bộ lọc số. Nó cho phép nâng cao khả năng xử lý hệ thống trong
thời gian thực như với bộ lọc thích nghi, bộ lọc đa nhiệm và sự chuyển đổi giữa chúng.
Ở hộp công cụ hỗ trợ thiết kế bộ lọc FIR gồm:
+ Tramg bị cho thiết kế bộ lọc FIR bao gồm các chức năng giảm thiểu về thứ tự, về gợn
song, về pha, về bang kề bên, về điểm đơn bang, lỗi xấp xỉ, song hài và độ gợn song lớn
nhất của thiết kế.
+ Thiết kế với bộ lọc FIR gọn nhẹ, tối ưu với những thiết kế pha phi tuyến và giảm thiểu
được lỗi.
+ Thiết kế bộ lọc FIR nửa băng tần được trang bị bao gồm: phương pháp cửa sổ, phương
pháp hình vuông…
Tiến hành thiết kế bộ lọc FIR với fdatool
+ Gõ lệnh >>fdatool trên command window, hiện ra cửa sổ làm việc Filter Design &
Analysis Tool.
+ Trong cửa sổ làm việc, thiết kế bộ lọc FIR theo yêu cầu, sử dụng phương pháp cửa sổ

(Design/Window)
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
11


Hình 1. Bộ lọc thông thấp FIR dùng phương pháp cửa sổ trong Design và Response

Hình 2. Chọn bậc bộ lọc trong Filter và sử dụng cửa sổ hình chữ nhật bằng cách chọn
Rectangular Window trong Options

Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
12



Hình 3. Trong Frequency chọn Fc- tần số cắt của bộ lọc FIR và tần số lấy mẫu- Fs
Cuối cùng, nhấn Design Filter để hoàn thành việc thiết kế bộ lọc.
Ta thấy đáp ứng tần số của bộ lọc hiển thị trên của sổ Filter

Hình 4. Đáp ứng tần số của bộ lọc hiển thị trên cửa sổ Filter
Và đáp ứng xung của FIR được xuất ra bằng cách chọn File/ Export…
Trong Command Window sẽ hiện ra bảng Num chứa các giá trị của h(n)
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
13


Hình 5. Các giá trị của h(n)

Do vậy, ta được 



 
Dựa vào thiết kế bộ lọc FIR ở trên, mô phỏng bằng code Matlab như sau
Tín hiệu đầu vào
( ) 5sin(1000 ) 3 os(4000 ) 6sin(20000 ) 8cos(32000 )x t t c t t t
   
   







f1=500;
f2=2000;
f3=10000;
f4=16000;
fs=40000;
T=1/fs;
L=1000;
t=(0:L-1)*T;

NFFT = 2^nextpow2(L);
x=5*sin(2*pi*f1*t)+3*cos(2*pi*f2*t)+6*sin(2*pi*f3*t)+8*cos(2*pi*f4*t);
X=fft(x,NFFT)/L;
f=fs/2*linspace(0,1,NFFT/2+1);

subplot(2,2,1);
plot(f,2*abs(X(1:NFFT/2+1)));
title('Input signal X(t)');
xlabel('f[Hz]');
ylabel('Magnitude of X(t)');

h4=[0.2406 0.2694 0.2594 0.2406];
y=conv(x,h4);
Ly=L+length(h4)-1;
NFFTy=2^nextpow2(Ly);
Y=fft(y,NFFTy)/Ly;
fy=fs/2*linspace(0,1,NFFTy/2+1);
subplot(2,2,2); plot(fy,2*abs(Y(1:NFFTy/2+1)));
title('Output signal Y(t) after X(t) pass throw Lowpass FIlter 3kHz');
xlabel('f[Hz]'); ylabel('Magnitude of Y(t)');

Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
14

Phổ biên độ của tín hiệu đầu ra và đầu vào như sau

Hình 6. Phổ biên độ của tín hiệu vào và ra
Cho thấy với bộ lọc thông thấp FIR tần số cắt 3kHz, tại các tần số cao 10kHz và 16kHz
đều bị triệt tiêu gần như hoàn toàn. Vì vậy có thể sử dụng bộ lọc FIR h = {0.2406, 0.2694,
0.2594, 0.2406}.
2. Yêu cầu phần mềm và phần cứng
Phần mềm và phần cứng
Các phần mềm và phần cứng cần thiết cho bài tập lớn bao gồm
 Bộ TMS320C5515 eZdsp™ USB Stick Development Tool do TI sản xuất

 Phần mềm giao tiếp giữa PC với bộ KIT Code Composer Studio
TM
(CCS)
 Phần mềm tính toán MATLAB ( thực hiện việc mô phỏng)
 Máy tính Laptop, USB, phần mềm hỗ trợ phát song….
Giới thiệu về KIT TMS320C5515 eZdsp™ USB Stick Development Tool

Hình 7. KIT TMS320C5515 eZdsp™ USB Stick Development Tool
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
15

Các thành phần chính của bộ KIT
 C55x CPU và các bộ nhớ liên quan
 Phần cứng tăng tốc FFT
 Bốn bộ điều khiển DMA và giao diện bộ nhớ bên ngoài
 Module quản lí điện
 Các thiết bị ngoại vi I/O bao gồm I2S, I2C, SPI, UART, Timers, EMIF, 10 bit SAR
ADC, điều khiển LCD, USB 2.0.

Hình 8. Sơ đồ khối chức năng bộ KIT
Phần mềm giao tiếp giữa PC với bộ KIT Code Composer Studio
TM
(CCS)
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
16


Hình 9. Phần mềm giao tiếp giữa PC với bộ KIT Code Composer Studio

TM
(CCS)
Code Composer Studio là môi trường phát triển tích hợp được TI xây dựng nhằm hỗ trợ
khách hàng trong việc tiếp cận và phát triển ứng dụng với các sản phẩm của TI. IDE này
có môi trường làm việc khá thân thiện, có kết hợp với Programer và Debugger.

3. Lập trình trên CCS 6.1
Trong project này, nhóm sử dụng tín hiệu đầu vào như trên
( ) 5sin(1000 ) 3 os(4000 ) 6sin(20000 ) 8cos(32000 )x t t c t t t
   
   

Và được tạo ra từ matlab như sau
f1=500;
f2=2000;
f3=10000;
f4=16000;
fs=40000;
T=1/fs;
L=1000;
t=(0:L-1)*T;

% Tao tin hieu x(n) cac tan so f1, f2, f3, f4
x=5*sin(2*pi*f1*t)+3*cos(2*pi*f2*t)+6*sin(2*pi*f3*t)+8*cos(2*pi*f4*t);

% Tao file du lieu vao dang binary
id = fopen('F:\Project\x.bin','wb');
fwrite( id, x, 'float') ;
fclose(id) ;


Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
17

Sau khi chạy trong matlab, nhóm được file x.bin để làm ngõ vào của KIT TMS320C5515.
Trong CCS 6.1, tạo Project mới để lập trình cho KIT với các thông số bộ FIR tần số cắt
3kHZ như trên:
h = {0.2406, 0.2694, 0.2594, 0.2406}
Trong main.c
#include <stdio.h>
#include <stdlib.h>
#include "usbstk5515.h"
#include "convolution.h"
#include "overlap.h"

#define M 3
#define Lx 1000

int main( void )
{
float h[M+1] = { 0.2406, 0.2694, 0.2694, 0.2406 } ;

float *x , *y, *ytemp ;
x = ( float* ) malloc( Lx * sizeof ( float* ) ) ;
y = ( float* ) malloc( ( M + Lx )* sizeof ( float* ) ) ;
ytemp = ( float*) malloc( M * sizeof ( float* ) ) ;
if( ( x == NULL ) || ( y == NULL ) || ( ytemp == NULL ) )
{
printf(" Error : Memory full \n") ;
exit ( 1 ) ;

}
overlap( M, h, Lx, x, y, ytemp ) ;
printf(" OK \n " ) ;
return 0 ;
}
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
18

Trong overlap.c
#include <stdio.h>
#include <stdlib.h>
#include "overlap.h"
#include "usbstk5515.h"
#include "convolution.h"


void overlap( unsigned short M, float *h ,
unsigned short Lx, float *x ,
float *y , float *ytemp )
{
FILE *pfile_in, *pfile_out ; // open files input
and output
Uint8 *pdata_in, *pdata_out ; // buffer_data
Uint32 i, k ; // count var
Uint32 *p_y_Uint32 = ( Uint32* )y ,tempt ; // tranmitter
Uint32 *p_x_Uint32 = ( Uint32* )x, data[4] ; // receiver
float sizefile ;//Int32 sizefile ; // sizefile of input
(byte)
Uint32 number_block ; // How many blocks have input file got ?


//
//
// Open file input and output
//
//
pfile_in = fopen("D:\\CCS\\workspace\\LowpassFilter\\x.bin","rb");
pfile_out = fopen("D:\\CCS\\workspace\\LowpassFilter\\y.bin","wb");
if ( ( pfile_in == NULL ) || ( pfile_out == NULL ) )
{

Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
19


printf(" Error : can't open files \n");
exit(1) ;
}
//
//
// Buffer Data
//
//
pdata_in = ( Uint8* ) malloc( 4 * Lx * sizeof( Uint8 ) ) ;
pdata_out = ( Uint8* ) malloc( 4 * Lx * sizeof( Uint8 ) );
if ( ( pdata_in == NULL )|| ( pdata_out == NULL ) )
{
printf(" Error : memory are full \n") ;
exit(1);

}
//
//
// xem file x.bin co bao nhieu byte
//
//
fseek( pfile_in, 0L , SEEK_END ) ;
sizefile = (float)ftell ( pfile_in ) ; // sizefile dang byte
fseek( pfile_in, 0L, SEEK_SET ) ;
//
//
// Processing
//
//
for ( i = 0 ; i < M ; i++ )
ytemp[i] = 0 ;
for ( number_block = 0 ; number_block < sizefile /( 4*Lx ) ;
number_block++ )
{

fread( pdata_in, sizeof(Uint8), 4 * Lx, pfile_in ) ;
for ( i = 0 ; i < Lx ; i++ )
{
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
20


if ( number_block % 50 == 0 ) printf(" %ld \n ", number_block ) ;
//

//
fread( pdata_in, sizeof(Uint8), 4 * Lx, pfile_in ) ;
for ( i = 0 ; i < Lx ; i++ )
{
data[0] = (Uint32)( *( pdata_in + 4*i ) ) ;
data[1] = (Uint32)( *( pdata_in + 4*i + 1 ) ) << 8 ;
data[2] = (Uint32)( *( pdata_in + 4*i + 2 ) ) << 16 ;
data[3] = (Uint32)( *( pdata_in + 4*i + 3 ) ) << 24 ;
*( p_x_Uint32 + i ) = (Uint32)( data[0] | data[1] |
data[2] | data[3] ) ;
}
//
//
conv( M, h, Lx, x, y ) ;
for ( k = 0 ; k < M ; k++ )
{
y[ k ] += ytemp[ k ] ;
ytemp[ k ] = y[ k + Lx ] ;
}
//
//
for (i = 0; i < Lx ; i++ )
{
tempt = *( p_y_Uint32 + i ) ;
*( pdata_out + 4*i ) = (Uint8) ( tempt & 0x000000FF
);
*( pdata_out + 4*i + 1 ) = (Uint8) ( ( tempt & 0x0000FF00
) >> 8 ) ;
*( pdata_out + 4*i + 2 ) = (Uint8) ( ( tempt & 0x00FF0000
) >> 16 ) ;

Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
21


*( pdata_out + 4*i + 3 ) = (Uint8) ( ( tempt & 0xFF000000 ) >> 24 ) ;

}
fwrite( pdata_out, sizeof(Uint8), 4 * Lx, pfile_out) ;
}
//
//
//
//

fread( pdata_in, sizeof(Uint8), (sizefile - number_block * Lx * 4 ) ,
pfile_in ) ;
for ( i = 0 ; i < Lx ; i++ )
{
if ( i < (sizefile/4 - number_block * Lx ) )
{
data[0] = (Uint32)( *( pdata_in + 4*i ) ) ;
data[1] = (Uint32)( *( pdata_in + 4*i + 1 ) ) << 8 ;
data[2] = (Uint32)( *( pdata_in + 4*i + 2 ) ) << 16 ;
data[3] = (Uint32)( *( pdata_in + 4*i + 3 ) ) << 24 ;
*( p_x_Uint32 + i ) = (Uint32)( data[0] | data[1] |
data[2] | data[3] ) ;
}
else
*( p_x_Uint32 + i ) = 0 ;

}
//
//
conv( M, h, Lx, x, y ) ;
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
22


for ( k = 0 ; k < M ; k++ )
{
y[ k ] += ytemp[ k ] ;
ytemp[ k ] = y[ k + Lx ] ;
}
//
//
for (i = 0; i < Lx ; i++ )
{
tempt = *( p_y_Uint32 + i ) ;
*( pdata_out + 4*i ) = (Uint8) ( tempt & 0x000000FF
) ;
*( pdata_out + 4*i + 1 ) = (Uint8) ( ( tempt & 0x0000FF00 ) >>
8 ) ;
*( pdata_out + 4*i + 2 ) = (Uint8) ( ( tempt & 0x00FF0000 ) >>
16 ) ;
*( pdata_out + 4*i + 3 ) = (Uint8) ( ( tempt & 0xFF000000 ) >>
24 ) ;
}
fwrite( pdata_out, sizeof(Uint8), 4 * Lx, pfile_out) ;
//

//
for (i = 0; i < M ; i++ )
{
tempt = *( ytemp + i ) ;
*( pdata_out + 4*i ) = (Uint8) ( tempt & 0x000000FF
) ;
*( pdata_out + 4*i + 1 ) = (Uint8) ( ( tempt & 0x0000FF00 ) >>
8 ) ;
*( pdata_out + 4*i + 2 ) = (Uint8) ( ( tempt & 0x00FF0000 ) >>
16 ) ;
*( pdata_out + 4*i + 3 ) = (Uint8) ( ( tempt & 0xFF000000 ) >>
24 ) ;
}
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
23


III. Kết quả
Kết quả thực hiện được
 Nhóm đã tìm hiều lý thuyết bộ FIR và một số lý thuyết liên quan trong bài tập lớn
này.
 Tìm được bộ lọc có đáp ứng phù hợp với yêu cầu của project
 Thực hiện code trong CCS và build thành công
 Mô phỏng MATLAB có kết quả phù hợp với yêu cầu













fwrite( pdata_out, sizeof(Uint8), 4 * M , pfile_out) ;
//
//
// Close
//
//
free(pdata_in);
free(pdata_out) ;
fclose(pfile_in) ;
fclose(pfile_out) ;
Báo cáo bài tập lớn Xử lý tín hiệu tương tự và số
GVHD: PGS.TS Lê Tiến Thường Nhóm 1
24

IV. Tài liệu tham khảo

 Giáo trình “ Xử lý số tín hiệu và wavelet” – Lê Tiến Thường.
 Giáo trình: “Digital Design of Signal Processing Systems” - Shoab Ahmed
Khan.
 Giáo trình: “Digital Signal Processing Using MATLAB, 3rd Edition” –
Vinay K.Ingle và John G.Proakis
 Các tài liệu, ebook được thu thập trên mạng Internet.


×