Digital Signal Processing Lab Student's Manual - Ton Duc Thang University, 2016

Cẩm nang thực hành Xử lý tín hiệu số (DSP) dành cho sinh viên. Hướng dẫn chi tiết các thí nghiệm, giúp nắm vững kiến thức, kỹ năng thực tế.

Trường đại học

Ton Duc Thang University

Người đăng

Ẩn danh

Thể loại

Student’s Manual

2016

49
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Bắt đầu Hướng dẫn thực hành Xử lý Tín hiệu số DSP

Cẩm nang thực hành Xử lý Tín hiệu số (Digital Signal Processing - DSP) là tài liệu nền tảng cho sinh viên ngành Kỹ thuật Điện - Điện tử. Nội dung chính tập trung vào việc triển khai các thuật toán xử lý tín hiệu trên phần cứng chuyên dụng. Mục tiêu là thu hẹp khoảng cách giữa lý thuyết và ứng dụng thực tiễn. Sinh viên sẽ làm việc trực tiếp với bộ công cụ phát triển phần cứng và phần mềm hiện đại. Tài liệu này cung cấp hướng dẫn chi tiết qua từng bài thí nghiệm, từ những khái niệm cơ bản đến các kỹ thuật phức tạp. Các bài thực hành được thiết kế theo lộ trình khoa học. Sinh viên bắt đầu bằng việc làm quen với bộ kit phát triển TMS320C6713 DSK của Texas Instruments và môi trường phát triển tích hợp (IDE) Code Composer Studio (CCS). Đây là hai công cụ cốt lõi xuyên suốt khóa học. Các thí nghiệm tiếp theo đi sâu vào các chủ đề quan trọng như tạo tín hiệu, phân biệt tín hiệu liên tục và rời rạc, thiết kế bộ lọc số và phân tích phổ tần số. Mỗi bài học đều có mục tiêu rõ ràng, cơ sở lý thuyết tóm tắt và quy trình thực hiện từng bước. Việc này đảm bảo sinh viên có thể tự mình hoàn thành các tác vụ, từ việc tạo một dự án mới trên CCS, biên dịch mã nguồn, nạp chương trình xuống phần cứng, cho đến việc kiểm tra và phân tích kết quả. Cẩm nang nhấn mạnh tầm quan trọng của việc hiểu rõ hoạt động của phần cứng, đặc biệt là codec âm thanh AIC23, cách nó thực hiện chuyển đổi tương tự-số (ADC) và số-tương tự (DAC) trong thời gian thực. Các khái niệm như tốc độ lấy mẫu, xử lý dựa trên ngắt (interrupt-driven processing) và bộ nhớ được giải thích cặn kẽ, giúp sinh viên nắm vững cách một hệ thống DSP thực thụ vận hành. Cuốn cẩm nang này không chỉ là một tài liệu hướng dẫn mà còn là một công cụ học tập hiệu quả, trang bị cho sinh viên những kỹ năng cần thiết để giải quyết các bài toán xử lý tín hiệu số trong thế giới thực.

1.1. Tổng quan về bộ kit thực hành TMS320C6713 DSK

Bộ kit thực hành TMS320C6713 DSK (DSP Starter Kit) là nền tảng phần cứng chính cho các thí nghiệm. Nó được xây dựng quanh bộ xử lý tín hiệu số dấu phẩy động TMS320C6713, hoạt động ở tần số 225 MHz. Bộ xử lý này có khả năng thực thi song song lên đến tám lệnh trong một chu kỳ xung nhịp, đạt hiệu suất 1800 triệu lệnh mỗi giây (MIPS). Các tính năng phần cứng nổi bật khác bao gồm: bộ codec âm thanh nổi 24-bit chất lượng cao (AIC23), bốn giắc cắm âm thanh 3.5mm cho micro, line-in, loa và line-out, bộ nhớ SDRAM 16MB và Flash 512K. Bộ codec AIC23 hỗ trợ nhiều tốc độ lấy mẫu khác nhau, từ 8 kHz đến 96 kHz, lý tưởng cho các ứng dụng âm thanh. Ngoài ra, kit còn có bốn công tắc DIP và bốn đèn LED lập trình được, cho phép người dùng tương tác và giám sát chương trình đang chạy.

1.2. Làm quen với môi trường Code Composer Studio CCS

Code Composer Studio (CCS) là một môi trường phát triển tích hợp (IDE) toàn diện. Nó cung cấp tất cả các công cụ cần thiết để phát triển ứng dụng cho bộ xử lý DSP của Texas Instruments. Các công cụ này bao gồm một trình biên dịch C/C++ tối ưu hóa, trình hợp dịch (assembler), trình liên kết (linker), trình gỡ lỗi (debugger) và trình nạp chương trình (program loader). CCS giao tiếp với kit DSK thông qua kết nối USB. Giao diện của CCS cho phép người dùng tạo dự án, viết và quản lý mã nguồn, thiết lập các tùy chọn biên dịch, xây dựng tệp thực thi (.out), nạp chương trình xuống DSP và chạy gỡ lỗi theo thời gian thực. Một tính năng mạnh mẽ của CCS là khả năng đọc và trực quan hóa dữ liệu từ bộ nhớ của DSP, cho phép vẽ đồ thị tín hiệu trong miền thời gian hoặc miền tần số.

1.3. Cấu trúc các bài thí nghiệm xử lý tín hiệu số cốt lõi

Chương trình thực hành được chia thành năm bài thí nghiệm chính. Lab 1 giới thiệu về phần cứng DSK và phần mềm CCS, cùng với bài tập tạo tín hiệu hình sin. Lab 2 tập trung vào tín hiệu thời gian liên tục và thời gian rời rạc, sử dụng MATLAB để minh họa các khái niệm. Lab 3 và Lab 4 đi sâu vào kỹ thuật lọc số, lần lượt trình bày về bộ lọc FIR (Finite Impulse Response)bộ lọc IIR (Infinite Impulse Response). Cuối cùng, Lab 5 giới thiệu và triển khai biến đổi Fourier nhanh (FFT), một công cụ cơ bản để phân tích tần số của tín hiệu. Mỗi bài thí nghiệm đều xây dựng dựa trên kiến thức của bài trước, tạo thành một lộ trình học tập logic và hoàn chỉnh.

II. Thách thức Từ Tín hiệu liên tục đến Xử lý số trên DSK

Một trong những thách thức cơ bản nhất trong xử lý tín hiệu số là chuyển đổi thế giới tương tự (analog) sang dạng số (digital) mà không làm mất thông tin quan trọng. Các tín hiệu trong tự nhiên, như âm thanh hay hình ảnh, đều là tín hiệu thời gian liên tục. Tuy nhiên, máy tính và các bộ xử lý số chỉ có thể làm việc với tín hiệu thời gian rời rạc. Quá trình chuyển đổi này được gọi là lấy mẫu tín hiệu (sampling). Việc lựa chọn tốc độ lấy mẫu (sampling rate) phù hợp là cực kỳ quan trọng. Theo định lý lấy mẫu Nyquist-Shannon, tốc độ lấy mẫu phải lớn hơn ít nhất hai lần tần số cao nhất có trong tín hiệu gốc để có thể tái tạo lại tín hiệu một cách chính xác. Nếu tốc độ lấy mẫu quá thấp, hiện tượng chồng phổ (aliasing) sẽ xảy ra, gây ra sai lệch không thể phục hồi. Ngược lại, nếu tốc độ lấy mẫu quá cao, hệ thống sẽ phải xử lý một lượng dữ liệu khổng lồ không cần thiết, gây lãng phí tài nguyên tính toán. Cẩm nang này giải quyết thách thức này bằng cách hướng dẫn sinh viên thực hiện quá trình lấy mẫu trên kit TMS320C6713 DSK. Bộ codec âm thanh AIC23 trên kit đóng vai trò là bộ chuyển đổi A/D, lấy mẫu tín hiệu đầu vào và biến nó thành một chuỗi các giá trị số. Các thuật toán sau đó sẽ được thực thi trên chuỗi dữ liệu này. Quá trình xử lý phải được hoàn thành trong khoảng thời gian giữa hai mẫu, tức là trong một chu kỳ lấy mẫu (T = 1/fs). Ví dụ, với tốc độ lấy mẫu 44.1 kHz, mọi phép tính cho một mẫu phải xong trong vòng 22.6 micro giây. Đây là một yêu cầu nghiêm ngặt về xử lý thời gian thực, đòi hỏi mã nguồn phải được tối ưu hóa cao.

2.1. Hiểu rõ sự khác biệt giữa tín hiệu liên tục và rời rạc

Tín hiệu thời gian liên tục được định nghĩa tại mọi thời điểm, trong khi tín hiệu thời gian rời rạc chỉ được xác định tại các thời điểm cụ thể, cách đều nhau. Trong môi trường máy tính, không thể lưu trữ toàn bộ giá trị của một tín hiệu liên tục. Thay vào đó, chúng ta biểu diễn nó bằng một chuỗi các mẫu. MATLAB là một công cụ mạnh mẽ để trực quan hóa sự khác biệt này. Lệnh plot trong MATLAB có thể nối các điểm dữ liệu gần nhau để tạo ra một đồ thị trông giống như tín hiệu liên tục. Trong khi đó, lệnh stem hiển thị các mẫu riêng lẻ, thể hiện đúng bản chất của tín hiệu rời rạc. Việc hiểu rõ sự khác biệt này là bước đầu tiên để làm chủ các kỹ thuật xử lý tín hiệu số.

2.2. Kỹ thuật lấy mẫu tín hiệu và tầm quan trọng của nó

Lấy mẫu tín hiệu là quá trình chuyển đổi một tín hiệu liên tục thành tín hiệu rời rạc bằng cách lấy giá trị của nó tại các khoảng thời gian đều đặn. Khoảng thời gian giữa hai mẫu liên tiếp được gọi là chu kỳ lấy mẫu (Ts). Tần số lấy mẫu (fs = 1/Ts) quyết định độ chính xác của việc biểu diễn tín hiệu. Thí nghiệm trong cẩm nang minh họa điều này bằng cách lấy mẫu tín hiệu sin(2πt) với các chu kỳ Ts khác nhau. Kết quả cho thấy khi fs giảm, số lượng mẫu trong một chu kỳ tín hiệu cũng giảm, và việc biểu diễn tín hiệu trở nên kém chính xác hơn. Bộ codec AIC23 trên kit DSK hoạt động như một bộ lọc chống chồng phổ (anti-aliasing filter) hiệu quả, đảm bảo tín hiệu đầu vào được giới hạn trong khoảng Nyquist trước khi lấy mẫu.

2.3. Tạo tín hiệu hình sin cơ bản trên kit TMS320C6713

Một trong những bài tập đầu tiên là tạo ra một tín hiệu hình sin bằng phương pháp tra bảng (table look-up). Thay vì tính toán giá trị sin cho mỗi mẫu trong thời gian thực, một bảng chứa các giá trị sin được tính toán trước sẽ được lưu trong bộ nhớ. Ví dụ, để tạo tín hiệu sin 1kHz với tốc độ lấy mẫu 8kHz, ta cần 8 mẫu để biểu diễn một chu kỳ sóng sin. Các giá trị này (1000*sin(2πn/8) với n=0..7) được lưu vào một mảng. Chương trình sẽ đọc tuần tự các giá trị từ mảng này và gửi đến bộ chuyển đổi D/A của codec để tạo ra tín hiệu âm thanh tương tự. Phương pháp này rất hiệu quả về mặt tính toán và thường được sử dụng trong các hệ thống nhúng thời gian thực. Sinh viên sẽ viết mã C, biên dịch và nạp lên kit DSK để quan sát tín hiệu đầu ra trên máy hiện sóng.

III. Phương pháp Lọc Tín hiệu số Thiết kế bộ lọc FIR IIR

Lọc tín hiệu số là một trong những kỹ thuật quan trọng và phổ biến nhất trong DSP. Mục đích của việc lọc là loại bỏ các thành phần tần số không mong muốn khỏi tín hiệu hoặc chỉ giữ lại những thành phần cần thiết. Có hai loại bộ lọc số chính được đề cập trong cẩm nang này: bộ lọc FIR (Finite Impulse Response)bộ lọc IIR (Infinite Impulse Response). Mỗi loại có những đặc điểm, ưu và nhược điểm riêng, phù hợp với các ứng dụng khác nhau. Bộ lọc FIR có đáp ứng xung hữu hạn, nghĩa là đầu ra của nó sẽ trở về zero sau một khoảng thời gian hữu hạn khi đầu vào là một xung đơn vị. Ưu điểm lớn nhất của bộ lọc FIR là chúng luôn ổn định và có thể được thiết kế để có pha tuyến tính, một đặc tính quan trọng trong các ứng dụng xử lý âm thanh và hình ảnh để tránh méo pha. Tuy nhiên, để đạt được một đáp ứng tần số sắc nét, bộ lọc FIR thường yêu cầu bậc cao, đồng nghĩa với việc cần nhiều phép tính và bộ nhớ hơn. Ngược lại, bộ lọc IIR có đáp ứng xung vô hạn do cấu trúc có chứa vòng lặp phản hồi (feedback). Điều này cho phép chúng đạt được cùng một đáp ứng tần số như bộ lọc FIR nhưng với bậc thấp hơn nhiều, giúp tiết kiệm tài nguyên tính toán. Tuy nhiên, sự tồn tại của vòng phản hồi có thể khiến bộ lọc trở nên không ổn định nếu các cực của hàm truyền không nằm trong vòng tròn đơn vị. Ngoài ra, bộ lọc IIR thường không có pha tuyến tính. Cẩm nang hướng dẫn sinh viên quy trình thiết kế cả hai loại bộ lọc này, từ việc xác định các tham số thiết kế như dải thông, dải chặn, tần số cắt, đến việc tính toán các hệ số bộ lọc và triển khai chúng trên phần cứng DSK.

3.1. Quy trình thiết kế bộ lọc FIR Finite Impulse Response

Quá trình thiết kế một bộ lọc FIR bao gồm các bước: xác định tham số, tính toán hệ số, chọn cấu trúc và triển khai. Các tham số thiết kế bao gồm tần số dải thông (passband), dải chặn (stopband), gợn sóng (ripple) trong dải thông và độ suy hao trong dải chặn. Một trong những phương pháp phổ biến để tính toán hệ số bộ lọc FIR là phương pháp cửa sổ (windowing technique). Phương pháp này bắt đầu từ một bộ lọc lý tưởng (có đáp ứng xung vô hạn) và nhân nó với một hàm cửa sổ (hữu hạn) để giới hạn chiều dài đáp ứng xung. Các loại cửa sổ khác nhau như cửa sổ Hamming, Hanning, hay Kaiser sẽ cho ra các đặc tính khác nhau về độ rộng dải chuyển tiếp và độ suy hao dải chặn.

3.2. Sử dụng công cụ FDATool của MATLAB để thiết kế bộ lọc

MATLAB cung cấp một công cụ đồ họa mạnh mẽ là Filter Design and Analysis Tool (FDATool) để đơn giản hóa quá trình thiết kế bộ lọc. Sinh viên có thể nhập trực tiếp các thông số kỹ thuật mong muốn như loại bộ lọc (thông thấp, thông cao, ...), phương pháp thiết kế (FIR Equiripple, Window), bậc bộ lọc, và các tần số đặc trưng. FDATool sẽ tự động tính toán các hệ số bộ lọc và hiển thị các đáp ứng của nó như đáp ứng biên độ và đáp ứng pha. Sau khi thiết kế xong, các hệ số này có thể được xuất ra không gian làm việc của MATLAB hoặc ra một tệp tin để sử dụng trong chương trình C trên Code Composer Studio.

3.3. Giới thiệu bộ lọc IIR và cấu trúc chuyển vị

Bộ lọc IIR được đặc trưng bởi hàm truyền có cả tử số và mẫu số. Sự hiện diện của mẫu số tạo ra các vòng phản hồi trong cấu trúc bộ lọc, dẫn đến đáp ứng xung kéo dài vô hạn. Cẩm nang giới thiệu cấu trúc thực hiện chuyển vị (transposed realization) cho bộ lọc IIR. Cấu trúc này hiệu quả về mặt tính toán và được mô tả bằng một thuật toán cập nhật trạng thái theo từng mẫu. Sinh viên sẽ viết một hàm trong MATLAB để mô phỏng hoạt động của bộ lọc IIR theo cấu trúc này, tính toán đầu ra và các vector trạng thái bên trong tại mỗi thời điểm. Việc này giúp hiểu sâu hơn về cơ chế hoạt động của các bộ lọc có phản hồi.

IV. Hướng dẫn Phân tích Phổ tần số với Biến đổi Fourier Nhanh

Phân tích tín hiệu trong miền tần số là một nhiệm vụ cốt lõi của DSP. Nó cho phép chúng ta biết được một tín hiệu bao gồm những thành phần tần số nào và với biên độ bao nhiêu. Công cụ toán học nền tảng cho việc này là Biến đổi Fourier. Đối với tín hiệu số, chúng ta sử dụng Biến đổi Fourier Rời rạc (Discrete Fourier Transform - DFT). DFT biến đổi một chuỗi N điểm trong miền thời gian thành một chuỗi N điểm trong miền tần số. Tuy nhiên, việc tính toán DFT trực tiếp đòi hỏi một lượng lớn phép tính, khoảng N² phép nhân và N² phép cộng phức, không hiệu quả cho các ứng dụng thời gian thực với N lớn. Để giải quyết vấn đề này, Biến đổi Fourier nhanh (Fast Fourier Transform - FFT) đã ra đời. FFT không phải là một biến đổi mới mà là một tập hợp các thuật toán hiệu quả để tính toán DFT. Khi N là lũy thừa của 2, các thuật toán FFT có thể giảm đáng kể độ phức tạp tính toán xuống còn khoảng N*log₂(N) phép toán. Sự cải thiện này là rất lớn, giúp cho việc phân tích phổ thời gian thực trở nên khả thi. Cẩm nang này tập trung vào một trong những thuật toán FFT phổ biến nhất: thuật toán decimation-in-time (phân chia theo thời gian). Thuật toán này hoạt động bằng cách chia nhỏ một DFT N điểm thành hai DFT N/2 điểm, và tiếp tục quá trình chia này một cách đệ quy cho đến khi chỉ còn lại các DFT 2 điểm. Các kết quả sau đó được kết hợp lại thông qua một cấu trúc tính toán gọi là "bướm" (butterfly). Việc triển khai thuật toán FFT trên DSK đòi hỏi sự hiểu biết sâu sắc về quản lý bộ nhớ và tối ưu hóa mã nguồn.

4.1. Nguyên lý cơ bản của Biến đổi Fourier Rời rạc DFT

Biến đổi Fourier Rời rạc (DFT) là một ánh xạ một-một giữa một chuỗi phức N điểm trong miền thời gian, ký hiệu là {x[n]}, và một chuỗi phức N điểm trong miền tần số, ký hiệu là {X[m]}. Công thức DFT định nghĩa X[m] là tổng có trọng số của các mẫu x[n], với các trọng số là các lũy thừa của gốc đơn vị phức WN = e^(-j2π/N). Cả hai chuỗi x[n] và X[m] đều có tính tuần hoàn với chu kỳ N. DFT là biến đổi Fourier duy nhất có thể được tính toán chính xác trên máy tính số (bỏ qua các hiệu ứng sai số hữu hạn).

4.2. Thuật toán FFT phân chia theo thời gian decimation in time

Thuật toán FFT decimation-in-time bắt đầu bằng cách tách chuỗi đầu vào {x[n]} thành hai chuỗi con: một chuỗi gồm các mẫu ở chỉ số chẵn và một chuỗi gồm các mẫu ở chỉ số lẻ. DFT của hai chuỗi con này sau đó được tính toán và kết hợp lại để tạo thành DFT của chuỗi ban đầu. Quá trình này được lặp lại, chia nhỏ các DFT thành các DFT có kích thước nhỏ hơn. Sơ đồ dòng tín hiệu (signal flow graph) của thuật toán này cho thấy cấu trúc nhiều tầng, với mỗi tầng bao gồm N/2 phép tính "bướm". Một phép tính "bướm" lấy hai đầu vào và tạo ra hai đầu ra, liên quan đến một phép nhân với một hệ số phức gọi là "twiddle factor".

4.3. Triển khai thuật toán sắp xếp bit đảo ngược bit reversal

Một bước quan trọng trước khi thực hiện thuật toán FFT decimation-in-time theo kiểu tại chỗ (in-place) là sắp xếp lại thứ tự của các mẫu đầu vào theo một trật tự gọi là bit đảo ngược (bit-reversal). Ví dụ, trong một FFT 8 điểm, mẫu ở chỉ số 1 (nhị phân 001) sẽ được hoán đổi với mẫu ở chỉ số 4 (nhị phân 100), vì 100 là dạng đảo ngược của 001. Thuật toán này đảm bảo rằng sau khi thực hiện các tầng tính toán "bướm", các thành phần tần số đầu ra sẽ nằm đúng thứ tự. Cẩm nang cung cấp một đoạn mã C minh họa cách thực hiện hiệu quả thuật toán hoán đổi vị trí dựa trên chỉ số bit đảo ngược.

V. Ứng dụng Triển khai các thuật toán DSP trên phần cứng thực

Mục tiêu cuối cùng của cẩm nang là hướng dẫn sinh viên triển khai thành công các thuật toán xử lý tín hiệu số đã học lên phần cứng thực là kit TMS320C6713 DSK. Quá trình này không chỉ là việc viết mã, mà còn là một quy trình kỹ thuật hoàn chỉnh, bao gồm việc thiết lập dự án, quản lý thư viện, biên dịch, liên kết, nạp chương trình và gỡ lỗi. Code Composer Studio đóng vai trò trung tâm trong quy trình này. Sinh viên sẽ học cách tạo một dự án mới từ đầu, chỉ định đúng loại vi xử lý đích (target). Sau đó, cần phải thêm các tệp mã nguồn (.c, .asm) và các tệp hỗ trợ quan trọng vào dự án. Các tệp hỗ trợ này bao gồm tệp lệnh liên kết (.cmd) - có nhiệm vụ ánh xạ các phần của chương trình vào các vùng nhớ vật lý của DSP, và các thư viện hỗ trợ thời gian chạy (.lib) - cung cấp các hàm cấp thấp để giao tiếp với phần cứng như codec, đèn LED. Việc thiết lập đúng các tùy chọn xây dựng (build options) là rất quan trọng. Ví dụ, cần phải chỉ định đường dẫn đến các tệp tiêu đề (header files), chọn mô hình bộ nhớ phù hợp (ví dụ: data=far), và cấu hình kích thước của ngăn xếp (stack). Sau khi dự án được cấu hình đúng, quá trình xây dựng (build) sẽ biên dịch và liên kết tất cả các tệp lại với nhau để tạo ra một tệp thực thi duy nhất có đuôi .out. Tệp này sau đó được nạp từ PC xuống bộ nhớ của kit DSK thông qua kết nối USB. Cuối cùng, sinh viên có thể chạy chương trình và sử dụng các công cụ của CCS để quan sát kết quả, chẳng hạn như dùng tính năng Graph để vẽ đồ thị dữ liệu trong bộ đệm hoặc dùng máy hiện sóng để xem tín hiệu tương tự tại cổng line-out.

5.1. Tích hợp mã nguồn và thư viện hỗ trợ vào dự án CCS

Một dự án CCS điển hình bao gồm nhiều loại tệp. Tệp mã nguồn .c chứa logic chính của thuật toán (ví dụ: hàm lọc FIR hoặc FFT). Tệp .asm (assembly) có thể được dùng để thiết lập các vector ngắt. Tệp .cmd rất quan trọng vì nó định nghĩa cách trình liên kết phân bổ mã và dữ liệu vào bộ nhớ trong (internal memory) hay bộ nhớ ngoài (SDRAM) của DSP. Ngoài ra, các thư viện như rts6700.lib (run-time support), dsk6713bsl.lib (board support library) và csl6713.lib (chip support library) phải được thêm vào để cung cấp các hàm chức năng cơ bản. Quá trình này giúp sinh viên hiểu về cấu trúc của một dự án nhúng hoàn chỉnh.

5.2. Nạp và chạy chương trình trên kit DSK để kiểm chứng

Sau khi xây dựng thành công dự án và tạo ra tệp .out, bước tiếp theo là kết nối với kit DSK (Debug > Connect). Sau đó, sử dụng lệnh File > Load Program để tải tệp .out vào DSP. Khi nạp xong, chương trình đã sẵn sàng để thực thi. Lệnh Debug > Run sẽ khởi động chương trình. Ví dụ, trong bài tạo tín hiệu sin, sinh viên có thể kết nối cổng LINE OUT của DSK với máy hiện sóng hoặc loa để xác minh rằng một tín hiệu sin 1 kHz đang được tạo ra. Quá trình này mang lại trải nghiệm thực tế về chu trình phát triển phần mềm cho hệ thống nhúng.

5.3. Trực quan hóa kết quả Đồ thị tín hiệu và phổ tần số

Code Composer Studio cung cấp các công cụ mạnh mẽ để trực quan hóa dữ liệu. Sinh viên có thể tạm dừng chương trình (Debug > Halt) và sử dụng tính năng View > Graph > Time/Frequency. Bằng cách chỉ định địa chỉ của một bộ đệm trong bộ nhớ (ví dụ: bộ đệm chứa dữ liệu đầu ra) và các thuộc tính đồ thị (số điểm, kiểu hiển thị), CCS có thể vẽ dạng sóng của tín hiệu trong miền thời gian hoặc tính toán và hiển thị phổ tần số của nó. Công cụ này cực kỳ hữu ích để gỡ lỗi và xác minh rằng thuật toán đang hoạt động đúng như mong đợi mà không cần đến các thiết bị đo lường bên ngoài.

VI. Tổng kết Cẩm nang thực hành Xử lý Tín hiệu số và Tương lai

Cẩm nang thực hành Xử lý Tín hiệu số cung cấp một lộ trình học tập toàn diện, kết hợp chặt chẽ giữa lý thuyết hàn lâm và kinh nghiệm thực tiễn. Bằng cách hoàn thành các bài thí nghiệm, sinh viên không chỉ nắm vững các khái niệm cơ bản về tín hiệu và hệ thống, mà còn phát triển được những kỹ năng kỹ thuật quan trọng trong việc làm việc với phần cứng DSP và môi trường phát triển chuyên nghiệp. Khóa học bắt đầu từ những bước cơ bản nhất như làm quen với kit TMS320C6713 DSKCode Composer Studio, sau đó tiến dần đến các chủ đề nâng cao như thiết kế bộ lọc FIRIIR, và triển khai thuật toán FFT. Cách tiếp cận "learning by doing" (học qua thực hành) giúp củng cố kiến thức và xây dựng sự tự tin khi giải quyết các vấn đề kỹ thuật phức tạp. Sinh viên học được cách đọc và hiểu tài liệu kỹ thuật, cách thiết lập một dự án nhúng, cách tối ưu hóa mã nguồn cho các yêu cầu thời gian thực, và cách sử dụng các công cụ gỡ lỗi để xác minh và phân tích kết quả. Những kỹ năng này có giá trị ứng dụng cao và là nền tảng vững chắc cho sự nghiệp trong các lĩnh vực viễn thông, xử lý âm thanh, xử lý hình ảnh, điều khiển tự động và nhiều ngành công nghệ cao khác. Kiến thức và kinh nghiệm thu được từ cẩm nang này sẽ là hành trang quý giá, mở ra nhiều cơ hội cho các dự án nghiên cứu và phát triển sản phẩm trong tương lai.

6.1. Các kỹ năng cốt lõi sinh viên đạt được sau khóa học

Sau khi hoàn thành các bài thực hành, sinh viên sẽ thành thạo các kỹ năng chính: (1) Lập trình C cho các hệ thống nhúng thời gian thực trên nền tảng DSP. (2) Sử dụng thành thạo môi trường Code Composer Studio để phát triển, gỡ lỗi và nạp chương trình. (3) Hiểu và triển khai các thuật toán xử lý tín hiệu số kinh điển như lọc số và phân tích phổ. (4) Giao tiếp và điều khiển các ngoại vi phần cứng như codec âm thanh. (5) Phân tích và trực quan hóa tín hiệu trong cả miền thời gian và miền tần số. (6) Kỹ năng giải quyết vấn đề khi tích hợp phần mềm và phần cứng.

6.2. Hướng phát triển các ứng dụng DSP trong thực tiễn

Các kiến thức từ cẩm nang này là bước khởi đầu cho vô số ứng dụng thực tiễn. Trong lĩnh vực âm thanh, có thể phát triển các bộ cân bằng âm thanh (equalizer), hiệu ứng âm thanh (reverb, echo), hoặc hệ thống loại bỏ tiếng ồn chủ động. Trong viễn thông, các kỹ thuật điều chế, giải điều chế và mã hóa kênh đều dựa trên nền tảng DSP. Trong xử lý hình ảnh, các bộ lọc được sử dụng để làm sắc nét hoặc làm mờ ảnh, trong khi FFT được dùng cho các thuật toán nén ảnh như JPEG. Nền tảng TMS320C6713 DSK cung cấp một môi trường lý tưởng để sinh viên tiếp tục khám phá và xây dựng các dự án nguyên mẫu cho những ứng dụng này.

11/09/2025

Trích đoạn nội dung tài liệu

igital Signal Processing Lab - Student’s Manual DAI HOC TON BUC THANG TON DUC THANG UNIVERSITY Faculty of Electrical and Electronics Engineering DIGITAL SIGNAL PROCESSING LAB STUDENT'S MANUAL TON DUC THANG UNIVERSITY - 2016 TABLE OF CONTENTS LAB1 INTRODUCTION TO TMS320C6713 DSK AND CODE COMPOSER STUDIO. nh nh HH Hà Hà HH HH Tà Hà HH HH TH Ho HH Hy 3 1.2 Getting Familiar with Code Composer Studio |DE. ch nh HH HH nh Ho tk Hà 6 1.2 GENERATION OF SINUSOID USING THE TMS320C6713 DSP STARTER KIT (DSKI.2 Recall background of sampling. nh nh nh HH Hà Hà KH HH nâu 13 1.

nh nh nh HH nh Hà HH HH KH tk KH KH Ki ty 14 LAB2__ DISCRETE AND CONTINOUS TIME SIGNAL. ch nh HH hà Hà Hay 19 2.1 Starting Matlab and getting help. tte eee tenet enti TH HH TH Ho HH hờ 19 2.2 Matrices and operations. ánh nh nh Hà Hàng Hà KHE HH tk Hit 19 2.23 Matlab scripts and funcfiOnS.

ch nh nh TH han Hà Hà KHE HH KH hy 20 2.4 Continuous time vs. ii rn iri Hà HH HH Hà HH th Ho 20 2.5 Processing Of speech signal. nh nh nh nh HH KH HH hy 22 2. 22 LAB3 FINITE IMPULSE RESPONSE (FIR) FILTERING.

nh HH HH gen 24 3.1 le» ae AT.1 Design parameter determinatiOn. ch nh HH hà HH HH HH KH kh tết 25 3.2 Filter coefficlent calculafion. iinet 26 LAB 4 INFINITE IMPULSE RESPONSE (IIR) FILTERING. nh HH HH Hà Ho aa 33 4.

nh nh TH HH Hà HH HH KH TH H TH HH TT HH TH TH HH 34 4.21 'Transposed realiza†iOn. ác nh nh HH HH HH HH kh KH tk KH KH tk KH kh 34 4. EE HH rr HH KH KH TH KH 36 LAB5 IMPLEMENTATION OF FAST FOURIER TRANSFORM (FFT) ON DSK.1 Discrete Fourier Transform. ác nh nh HH HH HH Hà Tà Hà He TH kh HH Hà Ho hay 40 5.2 A fast Fourier transform algorithim.

LH HH HH kh kh KH kh 41 5.2 IMPLEMENTING AN FFT ALGORITHM ON THE C6713 DSK. án SE nh nh nh nà HH HH HH ghe 43 5.1 The bit reversing algorithm. ch HH HH HH Hà KH KH tk ki 43 5.2 Implementing the Factored Buff©rfly. ch nh nh nh Hà Hà HH Hà Hg HH tt 45 DSP LAB - Student’s Manual TENTATIVE SCHEDULE Week 1 - 2 Introduction to the lab.1 Intro to DSK and code composer studio Lab 1 — 1.2 Generation of sinusoid using DSK Lab 2 — Digital process of continuous time signal Week 3 Lab 3 — FIR filtering Week 4 Lab 4 — IIR filtering Week 5 Lab 5 — FFT DSP LAB — Student’s Manual LAB 1 INTRODUCTION TO TMS320C6713 DSK AND CODE COMPOSER STUDIO 1.1 TMS320C6713 DSK The hardware experiments in the DSP lab are carried out on the Texas Instruments TMS320C6713 DSP Starter Kit (DSK), based on the TMS320C6713 floating point DSP running at 225 MHz.

The basic clock cycle instruction time is 1/225 MHz) = 4. During each clock cycle, up to eight instructions can be carried out in parallel, achieving up to 8x225 = 1800 million instructions per second (MIPS). Other hardware features of the TMS320C6713 DSK board include: e Embedded JTAG support via USB e High-quality 24-bit stereo codec e Four 3.5mm audio jacks for microphone, line in, speaker and line out e 512K words of Flash and 16 MB SDRAM e Expansion port connector for plug-in modules e On-board standard IEEE JTAG interface e +5V universal power supply Line In Headphone Mic In Line Out _ 15 MEG SDRAM Be = ay TMS320C 6713 Power USB DIP LEDs Reset Config External Hurricane Jack Port Switches Switch Switch JTAG Header Figure 1-1 TMS320C6713 DSP Starter KIT Page 3 of 49 DSP LAB — Student’s Manual McBSPs AIC23 * Codec pt Host Port Int 6713 — DSP Su 0123 0123 Figure 1-2 TMS320C6713 DSK block diagram The C6713 processor has 256 KB of internal memory, and can potentially address 4GB of external memory. The DSK board includes a 16MB SDRAM memory and a 512KB Flash ROM.

It has an on- board 16-bit audio stereo codec (the Texas Instruments AlIC23B) that serves both as an A/D anda D/A converter. There are four 3.5 mm audio jacks for microphone and stereo line input, and speaker and head-phone outputs. The AlIC23 codec can be programmed to sample audio inputs at the following sampling rates: fs = 8, 16, 24, 32, 44.1, 48, 96 kHz The ADC part of the codec is implemented as a multi-bit third-order noise-shaping delta-sigma converter that allows a variety of oversampling ratios that can realize the above choices of fs. The corresponding oversampling decimation filters act as anti-aliasing prefilters that limit the spectrum of the input analog signals effectively to the Nyquist interval [-fs /2, fs /2].

The DAC part is similarly implemented as a multi-bit second-order noise-shaping delta-sigma converter whose oversampling interpolation filters act as almost ideal reconstruction filters with the Nyquist interval as their passband. The DSK also has four user-programmable DIP switches and four LEDs that can be used to control and monitor programs running on the DSP. All features of the DSK are managed by the CCS, which is a complete integrated development environment (IDE) that includes an optimizing C/C++ compiler, assembler, linker, debugger, and program loader. The CCS communicates with the DSK via a USB connection to a PC.

In addition to facilitating all programming aspects of the C6713 DSP, the CCS can also read signals stored on the DSP’s memory, or the SDRAM, and plot them in the time or frequency domains. The following block diagram depicts the overall operations involved in all of the hardware experiments in the DSP lab. Processing is interrupt-driven at the sampling rate fs, as explained below. Page 4 of 49 DSP LAB — Student’s Manual ccs interrupt Y pfocessing Ssing =—| MeBsp cBS “——| AIC23 «— analog input algorithm y > codec > analog output.

TMS320C6713 DSP Is Figure 1-3 DSP experiments block diagram The AlC23 codec is configured (through CCS) to operate at one of the above sampling rates fs. Each collected sample is converted to a 16-bit two’s complement integer (a short data type in C). The codec actually samples the audio input in stereo, that is, it collects two samples for the left and right channels. At each sampling instant, the codec combines the two 16-bit left/right samples into a single 32-bit unsigned integer word (an unsigned int, or Uint32 data type in C), and ships it over to a 32-bit receive- register of the multichannel buffered serial port (McBSP) of the C6713 processor, and then issues an interrupt to the processor.

AIC23 Codec Te © FOO McBSPO cs uK cucD hh scu‹ › HO SPI Format SDIN ~ - [Digital KG McBSP1 DOUT | 5 Bt, lant ADC ta ~$==i====| MIC IN ` a: CUŒ1 DSP Fam —LRCOUT BCU< i en une RIN ‘ki oa — ức: Cc : UNE OUT “ =b>| HP 0UT === [HP OUT Figure 1-4 AIC Codec Upon receiving the interrupt, the processor executes an interrupt service routine (ISR) that implements a desired sample processing algorithm programmed with the CCS (e., filtering, audio effects, etc. During the ISR, the following actions take place: the 32-bit input sample (denoted by x in the diagram) is read from the McBSP, and sent into the sample processing algorithm that computes the corresponding 32-bit output word (denoted by y), which is then written back into a 32-bit transmit- register of the McBSP, from where it is transferred to the codec and reconstructed into analog format, and finally the ISR returns from interrupt, and the processor begins waiting for the next interrupt, which will come at the next sampling instant. Clearly, all processing operations during the execution of the ISR must be completed in the time interval between samples, that is, T = 1/fs. For example, if fs = 44.1 kHz, then, T = 1/fs = 22.

With an instruction cycle time of Tc = 4.44 nanoseconds, this allows T/Tc = 5108 cycles to be executed during each sampling instant, or, up to 8x5108 = 40864 instructions, or half of that per channel. Page 5 of 49 DSP LAB — Student’s Manual RECAP: C6713 DSK OVERVIEW e 225 MHz TMS320C67 13 floating point DSP e AIC23 stereo codec (ADC and DAC) © Ideal for audio applications o 8-96 KHz sample rates e Memory o 16 MB dynamic RAM o 512 KB nonvolatile FLASH memory e General purpose I/O o 4LEDs o 4 DIP switches e USB interface to PC How to know if your DSK working? >DSK Power On Self Test 1. Power up DSK and watch LEDs. Power On Self Test (POST) program stored in FLASH memory automatically executes.

POST takes about 10 to 15 seconds to complete. All DSK subsystems are automatically tested. During POST, a 1KHz sinusoid is output from the AlIC23 codec for 1 second. Listen with headphones or observe on oscilloscope.

If POST is successful, all four LEDs (D7 >D10) blink 3 times and then they remain on.2 Getting Familiar with Code Composer Studio IDE 1. Connecting with DSK To connect DSK with CCS, do the following steps: 1. Power up the DSK, then wait for POST to complete 2. Connect the USB cable from PC to DSK 4 >.

Launch CCS me , CCS will load and wait for your input 4. Connect to DSK Page 6 of 49 DSP LAB — Student’s Manual € 1C6713 DSK/CPU_1 - C621x - Code Composer Studio - Not Connect File Edit Yiew Project Debug GEL Option Profile Tools DSP/BIOS Windo as TC fw O88 + (2) GEL files 3} Projects Assembly/Source Stepping » The target is now connected Reset Emulator Ctrl+Shift+R. Connect Alt+C ® › HALTED 1.2 Creating a new project In this lab, you will create a project with the Code Composer Studio™ IDE and add source code files and libraries to the project. There are the following types of files: ib This library provides runtime support for the target DSP chip This file contains source code that provides the main functionality of this project This file declares the buffer C-structure as well as define any required constants -pjt This file contains all of your project build and configuration options .asm_ This file contains assembly instructions .cmd_ This file maps sections to memory To create a new project, do the following steps: 1.

Project >New Page 7 of 49 DSP LAB — Student’s Manual Project Creation tả Project Name: |helloworld Location: |C:\CCStudio_v3.1\MyProjects\hellowo ~| Project Type: | Executable [.out] | Target ITMS320CB7>% ix] — Finish Cancel | Help Write your new C code: File > New > Source File (type in your new C code) 1. Try “helloworld” program: #include <stdio.h> void main() { printf(“hello world.\n’); } Save the new C code in your project directory, make sure it has a .c extension © Add the new C code to the project: Project > Add file to project Add the required support files to the project: Project > Add file to project 1.cmd_ - linker command file 2.lib - run-time support library functions Add the optional support files to the project: 1.asm or vectors_intrasm - use to set up interrupt vectors 2.lib - DSK board support library functions — useful for interfacing to the codec, DIP switches, and LEDs 3.lib - chip support library functions Set up the build options for C6713: Project > Build options 1. Make sure target version is C671x 2. Make sure Opt Level is “None” Page 8 of 49 DSP LAB — Student’s Manual Build Options for helloworld.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ