Kỹ thuật vào ra PingPong

Một phần của tài liệu nghiên cứu các quy trình thực hiện hệ thống xử lý trong miền thời gian thực trên bo mạch nhúng DSP (Trang 73)

Ở mức cao thì mạch điều khiển EDMA đọc tín hiệu audio từ McBSP và lưu nó vào bộ nhớ đệm. Dữ liệu nhận được được lưu trong hai bộ đệm logic cạnh nhau là Ping và Pong. Ban đầu dữ liệu đến sẽ được lưu trong bộ đệm Ping. Khi nó đầy thì dữ liệu tới sẽ được gửi tới bộ đệm Pong, trong khi đó DSP sẽ xử lí dữ liệu trong bộ đệm Ping mà không sợ nó bị ghi đè lên. Khi mà Pong đầy thì Ping Pong sẽ được cấu hình ngược lại. Nếu chỉ có một bộ đệm được dùng thì DSP sẽ xử lí tất cả dữ liệu trên bộ đệm trong khoảng thời gian từ khi bộ đệm đầy cho đến khi mẫu tín hiệu tiếp theo được nhận. Khi cả hai bộ đệm được dùng thì DSP sẽ có nhiều thời gian hơn để xử lí luồng dữ liệu nhận được và điều này sẽ giúp cho hệ thống gần với thời gian thực hơn. Tương tự ta cũng có hai bộ đệm Ping Pong tách biệt cho quá trình truyền dữ liệu.

PingPong là kỹ thuật điển hình sử dụng EDMA. Đây là kỹ thuật kết hợp giữa tính năng Linked Transfer của EDMA và kỹ thuật điều phối các tiến trình (ngắt cứng và ngắt mềm).

Trong kỹ thuật này, dữ liệu audio được vận chuyển qua lại từ codec thông qua McBSP2, một cổng nối tiếp hai chiều. Bộ điều khiển EDMA được cấu hình để lấy mỗi mẫu audio 16 bít có dấu trên McBSP2 và lưu trữ trong một bộ đệm ở trong bộ nhớ tới khi nó có thể được xử lý. Một khi nó được xử lý, nó được gửi lại ra McBSP2 đến codec và phát đi. Một kênh EDMA được sử dụng để truyền dữ liệu đến codec trong khi một kênh khác được sử dụng để nhận dữ liệu từ codec.

Kỹ thuật này sử dụng EDMA để giải phóng DSP khỏi nhiệm vụ vận chuyển dữ liệu. Bộ điều khiển EDMA lấy trực tiếp dữ liệu audio đến từ McBSP2 và đặt vào một

Đồ án tốt nghiệp đại học Trang 74

Nguyễn Thị Thanh Huyền Lớp ĐT7 – K50

bộ đệm dữ liệu. Nó cũng lấy dữ liệu từ một bộ đệm trong bộ nhớ và gửi nó ra McBSP2 để tạo ra tín hiệu audio ra. Có nhiều kênh EDMA riêng biệt được sử dụng để phát và nhận dữ liệu liệu audio.

Hình 4-6 Các bộ đệm Ping-Pong

Dữ liệu audio số được nhận từ codec thông qua McBSP2. Dữ liệu audio là một chuỗi các số nguyên 16 bít có dấu biểu diễn biên độ của tín hiệu vào tại một thời điểm nào đó. Vì AIC23 là một codec stereo nên đầu vào audio chứa cả kênh audio phải và trái. Dữ liệu được nhận theo từng frame chứa 2 phần tử, một mẫu 16 bít từ kênh trái theo sau bởi một mẫu khác 16 bít từ kênh phải. Các frame được nhận với tốc độ là 48KHz, tốc độ lấy mẫu mặc định của DSK.

Đồ án tốt nghiệp đại học Trang 75

Nguyễn Thị Thanh Huyền Lớp ĐT7 – K50

4.7.1.Vận chuyển dữ liệu kiểu Ping-Pong

Về mặt logic ở phía nhận dữ liệu thì đây là hai bộ đệm. Khi dữ liệu đến đầu tiên nó được điền vào bộ đệm Ping. Khi Ping đầy thì dữ liệu sẽ được điền vào Pong. Như vậy trong khoảng thời gian điền dữ liệu vào Pong, DSP có thể thoải mái xử lý dữ liệu trong Ping. Đến khi Pong đầy, thì dữ liệu từ Ping được chuyển ngược lại và DSP lại xử lý bên Pong. Quá trình như vậy cứ lặp đi lặp lại vô hạn lần.

Như vậy nếu tính cả phía truyền thì có tất cả là 4 bộ đệm Ping-Pong: 2 bộ đệm PING - PONG bên nhận và 2 bộ đệm PING-PONG bên thu.

Int16 gBufferRcvPing[BUFFSIZE]; // Transmit PING buffer Int16 gBufferRcvPing[BUFFSIZE]; // Transmit PONG buffer Int16 gBufferRcvPong[BUFFSIZE]; // Receive PING buffer Int16 gBufferRcvPong[BUFFSIZE]; // Receive PONG buffer

Giới hạn của chuyển đổi DAC, ví dụ như codec của DSK6416 chỉ chấp nhận tốc độ dữ liệu max là 48000 mẫu trong một giây. Từ đó có thể thấy rằng tốc độ chuyển đổi DAC của codec trên bo mạch là khá chậm, phải nghĩ đến hình thức truyền thông khác. Ví dụ này có ích ở chỗ cho biết cách config cho một thiết bị như thế nào.

Một phần của tài liệu nghiên cứu các quy trình thực hiện hệ thống xử lý trong miền thời gian thực trên bo mạch nhúng DSP (Trang 73)