Thêm đối tượng cấu hình EDMA

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 51)

Click chuột phải bào EDMA Configuration Manager và chọn Insert edmacfg như hình dưới đây:

Có tối đa 16 đối tượng cấu hình có thể được sử dụng cùng một lúc. 4.3.1.2. Định dạng trường địa chỉ ( Specifying Address Formats)

Địa chỉ nguồn và đích được thiết lập theo một trong 4 cách sau: Numeric, Extern Declaration Object (Extern Decl. Obj.), User’s Header file, and McBSP handle.

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

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

Numeric: Địa chỉ kiểu hexa.

Extern Declaration Object ( Các đối tượng định nghĩa ngoài ): Để sử dụng

cách này chúng ta tiến hành theo các bước sau:

- B1: Khai báo tên kí hiệu cần dùng ở mục CSL Extern Declaration.Chẳng hạn ở đây ta dùng tên là Ping.

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

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

- B2: Click chuột phải vào Ping và chọn Properties. Khai báo các thuộc tính của đối tượng Ping tương ứng:

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

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

Trong đó ping điền trong mục Symbol Name chính là tên của đối tượng được định nghĩa.

- B3: Khai báo địa vào cấu hình EDMA như hình sau :

Chú ý: Đối tượng ping sử dụng ở đây phải được định nghĩa ít nhất là một lần trong đoạn chương trình của chúng ta nếu không chương trình sẽ bị lỗi khi ta biên dịch.

User’s Header file: Kí tự được định nghĩa trong file header có thể được sử

dụng như là một địa chỉ đích hoặc địa chỉ nguồn. Khi User’s Header file được lựa chọn thì trường “Enter full address” sẽ được dùng tới. Để dùng cách này ta cần tuân theo các bước sau:

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

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

// myfile.h

#define BUFFSIZE 256

#define myESIZE 0x0004 //element size of 4 bytes Uint32 myBuffer[BUFFSIZE];

- B2: Khai báo để cấu hình có thể sử dụng file.h này như hình :

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

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

4.3.1.3. Số khung truyền và chỉ số khung ( Transfer Count and Index Setting )

Bao gồm Frame count ( Thanh ghi đếm số khung truyền ) và element count ( thanh ghi đếm các element được truyền ).

Giá trị thanh ghi count có thể được thiết lập bằng 2 cách:

C1: Giá trị dạng Hexa. Giá trị này có thể khai báo gián tiếp trên tab Advanced

của EDMA configuration.  C2: User’s Header file: Chú ý:

 Header file có thể được tham chiếu dưới CSL Extern Declaration.

 Kí tự phải được định nghĩa trong chương trình nếu không sẽ có lỗi khi biên dịch.

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

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

 Nếu bạn tham chiếu file header trong những file C khác, phải cẩn thận khi định nghĩa các biến toàn cục nhiều lần.#IFDEF có thể được sử dụng để ngăn chặn lỗi này.

4.3.1.4. Thiết lập số khung truyền sử dụng file header (Transfer Count Register Setting using the User’s Header File)

Sử dụng kí tự từ file header có thể rất tiện lợi. Ví dụ, header file có thể được định nghĩa một kí tự chẳng hạn như BUFFSIZE trong file header như sau:

// myfile.h

#define BUFFSIZE 256

#define myESIZE 0x0004 //element size of 4 bytes Uint32 myBuffer[BUFFSIZE];

File này giống file header myfile.h mà ta đã tạo ra từ trước.

Trong ví dụ này, giá trị BUFFSIZE được cấu hình cho thành phần element count của EDMA configuration. Cấu hình EDMA sẽ truyền số BUFFSIZE cho element.

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

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

Ngoài ra ví dụ này cũng định nghĩa myESIZE để thiết lập chỉ số element index (EIX) (Nó mô tả khoảng cách mà con trỏ sẽ di chuyển sau mỗi lần truyền).

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

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

Transfer Count page/tab: FRAME counter ( FC ) không được dùng tới (“NULL”); ELEMENT counter (EC) được thiết lập là BUFFSIZE.

Index page/tab: Element index được thiết lập là mySIZE

4.3.1.5. Thiết lập địa chỉ liên kết (Link address setting)

Giá trị thanh ghi reload/link có thể được thiết lập bằng 2 cách khác nhau: table number và table handle:

 Table Number: Sử dụng bảng số chuyên dụng Reload/Link.

 Table Handle: Đúng hơn là bảng số chuyên dụng “hardcode”, tên bảng quản lí bộ nhớ ( Table Handle ) chuyên dụng có từ danh sách drop-down, như hình dưới.

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

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

a. Thiết lập bằng Table Number

Các bảng số được dùng trong phạm vi từ 0 đến 18. Bảng 0 có địa chỉ là 0X01A00630. Mặt khác, thực tế có 20 bảng nhưng hai bảng đầu tiên ( có địa chỉ là 0X01A0060 và 0X01A00618 ) là được để dành riêng và người sử dụng không can thiệp vào chúng. (Hàm EDMA_allocaTable() sẽ cho chúng ta các thông tin chi tiết về bảng table Number mà chúng ta sử dụng )

Ta sử dụng Table Number trong cấu hình EDMA như sau:

b. Thiết lập bằng Table Handle

Thiết lập giá trị thanh ghi Reload/Relink bằng cách lựa chọn bảng Table Handle. Tiến hành theo hai bước sau:

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

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

Rename tên Table handle.

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

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

B2: Từ hộp thoại cấu hình của EDMA ta khai báo như sau:

4.3.2. Cấu hình EDMA bằng câu lệnh

Cấu hình cho bên phát

EDMA_Config gEdmaConfigXmt = {

EDMA_FMKS(OPT, PRI, HIGH) | // Mức ưu tiên là High

EDMA_FMKS(OPT, ESIZE, 16BIT) | // Kích thước một mẫu truyền là 16 bít EDMA_FMKS(OPT, 2DS, NO) | // 2 dimensional source?

EDMA_FMKS(OPT, SUM, INC) | // Dạng update địa chỉ nguồn là INC EDMA_FMKS(OPT, 2DD, NO) | // 2 dimensional dest

EDMA_FMKS(OPT, DUM, NONE) | // Dạng update địa chỉ đích là None EDMA_FMKS(OPT, TCINT, YES) | // Có dùng ngắt EDMA không ? Yes EDMA_FMKS(OPT, TCC, OF(0)) | // Cờ truyền TCC

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

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

EDMA_FMKS(OPT, LINK, YES) | // Cho phép liên kết các tham số. EDMA_FMKS(OPT, FS, NO), // Sử dụng đồng bộ khung ? (Uint32)&gBufferXmtPing, // Địa chỉ nguồn.

EDMA_FMK (CNT, FRMCNT, NULL) | // Số khung truyền mỗi lần EDMA_FMK (CNT, ELECNT, BUFFSIZE), // Số element truyền mỗi lần EDMA_FMKS(DST, DST, OF(0)), // Địa chỉ đích

EDMA_FMKS(IDX, FRMIDX, DEFAULT) | // Chỉ số khung EDMA_FMKS(IDX, ELEIDX, DEFAULT), // Chỉ số element

EDMA_FMK (RLD, ELERLD, NULL) | // Reload element EDMA_FMK (RLD, LINK, NULL) // Reload link };

Cấu hình cho bên nhận:

EDMA_Config gEdmaConfigRcv = {

EDMA_FMKS(OPT, PRI, HIGH) | // Priority

EDMA_FMKS(OPT, ESIZE, 16BIT) | // Element size

EDMA_FMKS(OPT, 2DS, NO) | // 2 dimensional source? EDMA_FMKS(OPT, SUM, NONE) | // Src update mode EDMA_FMKS(OPT, 2DD, NO) | // 2 dimensional dest EDMA_FMKS(OPT, DUM, INC) | // Dest update mode

EDMA_FMKS(OPT, TCINT, YES) | // Cause EDMA interrupt? EDMA_FMKS(OPT, TCC, OF(0)) | // Transfer complete code EDMA_FMKS(OPT, LINK, YES) | // Enable link parameters? EDMA_FMKS(OPT, FS, NO), // Use frame sync?

EDMA_FMKS(SRC, SRC, OF(0)), // Src address EDMA_FMK (CNT, FRMCNT, NULL) | // Frame count EDMA_FMK (CNT, ELECNT, BUFFSIZE), // Element count

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

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

(Uint32)&gBufferRcvPing, // Dest addres

EDMA_FMKS(IDX, FRMIDX, DEFAULT) | // Frame index value EDMA_FMKS(IDX, ELEIDX, DEFAULT), // Element index value EDMA_FMK (RLD, ELERLD, NULL) | // Reload element

EDMA_FMK (RLD, LINK, NULL) // Reload link };

4.4. Bộ biến đổi AIC 23

DSK sử dụng bộ Texas Instrument AIC23 ( #TLV320AIC320 ) để biến đổi số - tương tự cho tín hiệu audio vào và ra. Tín hiệu tương tự có thể vào qua đường MIC IN hoặc là đường LINE IN để chuyển đổi sang dạng số mà DSP có thể xử lý. Sau khi kết thúc quá trình xử lý, tín hiệu số có thể chuyển đổi ngược lại thành tín hiệu tương tự và xuất ra ngoài thông qua đường Headphone hoặc đường LINE OUT. Bộ chuyển đổi số - tương tự sử dụng hai kênh điều khiển. Một kênh điều khiển thanh ghi trong định dạng cho bộ mã hóa. Một kênh có chức năng gửi và nhận các mẫu tín hiệu số và tương tự. McBSP1 được sử dụng vô hướng để điều khiển kênh. Nó sẽ được chương trình gửi một từ điều khiển để định dạng thanh ghi. Còn 9 bit thấp là giá trị thanh tghi. Kênh diều khiển chỉ sử dụng khi định dạng khởi tạo cho bộ mã hóa, nó thường được sử dụng khi tín hiệu âm thanh đang được truyền.

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

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

Hình 4-4 Bộ chuyển đổi số - tương tự AIC23

McBSP2 được sử dụng như là một kênh tín hiệu có hướng. Tất cả tín hiệu âm thanh sẽ được truyền qua kênh này. Nhiều dữ liệu định dạng sẽ được cơ bản cung cấp trên ba biến là độ rộng mẫu, nguồn tín hiệu đồng hồ và nguồn định dạng dữ liệu. Các ví dụ của DSK thường sử dụng mẫu có độ rộng là 16 bit để mã hõa, nó tạo ra khung đồng bộ và xung đồng hồ để chuẩn hóa tấn số lấy mẫu.

Bộ mã hóa có hệ thống đồng hồ 12 MHz này phù hợp với tần số của USB vì nhiều hệ thống USB sử dụng đồng 12MHZ và cũng có thể dùng chung đồng hồ cho bộ mã hóa và điều bộ điều khiển USB. Có thể tạo ra nhiều tân số nhỏ hơn từ tần số cơ sở này, như các tần số 48KHz, 44.1 KHz và 8KHz. Tần số lấy mẫu có thể được khởi tạo bằng thanh ghi SAMPLERATE.

4.5. McBSP ( Multichannel Buffered Serial Port )

McBSP bao gồm McBSP1 và McBSP2. Trong đó McBSP1 ( Là một cổng nối tiếp) được dùng để cấu hình và điều khiển AIC23. AIC23 sẽ nhận liên tiếp các lệnh thông qua McBSP1 để cấu hình các thông số như là độ lớn, tốc độ mẫu và định dạng của mẫu tín hiệu. McBSP2 là cổng nối tiếp 2 chiều. EDMA sẽ cấu hình cho các mẫu dữ liệu

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

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

truyền thông trên McBSP2. Khi McBSP2 nhận dữ liệu nó sẽ được lưu vào vùng bộ nhớ đệm để chờ xử lý. Trong quá trình truyền EDMA gửi data ngược lại McBSP2.

Người ta có thể cấu hình cho McBSP thông qua hai cách:

Cách 1: Cấu hình dựa vào hỗ trợ của công cụ McBSP configuration manager Đây là

một công cụ cho phép ta cấu hình McBSP gián tiếp trên file cấu hình thông qua các lựa chọn theo giao diện như ở hình sau

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

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

Cách 2: Cấu hình thông qua các đoạn mã trong file nguồn như là đoạn cấu hình mẫu dưới đây. Cấu hình cho McBSP2 MCBSP_Config mcbspCfg2 = { MCBSP_FMKS(SPCR, FREE, NO) | MCBSP_FMKS(SPCR, SOFT, NO) | MCBSP_FMKS(SPCR, FRST, YES) | MCBSP_FMKS(SPCR, GRST, YES) | MCBSP_FMKS(SPCR, XINTM, XRDY) | MCBSP_FMKS(SPCR, XSYNCERR, NO) | MCBSP_FMKS(SPCR, XRST, YES) | MCBSP_FMKS(SPCR, DLB, OFF) | MCBSP_FMKS(SPCR, RJUST, RZF) | MCBSP_FMKS(SPCR, CLKSTP, DISABLE) | MCBSP_FMKS(SPCR, DXENA, OFF) | MCBSP_FMKS(SPCR, RINTM, RRDY) | MCBSP_FMKS(SPCR, RSYNCERR, NO) | MCBSP_FMKS(SPCR, RRST, YES), MCBSP_FMKS(RCR, RPHASE, SINGLE) | MCBSP_FMKS(RCR, RFRLEN2, DEFAULT) | MCBSP_FMKS(RCR, RWDLEN2, DEFAULT) | MCBSP_FMKS(RCR, RCOMPAND, MSB) | MCBSP_FMKS(RCR, RFIG, NO) | MCBSP_FMKS(RCR, RDATDLY, 0BIT) | MCBSP_FMKS(RCR, RFRLEN1, OF(1)) | MCBSP_FMKS(RCR, RWDLEN1, 16BIT) |

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

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

MCBSP_FMKS(RCR, RWDREVRS, DISABLE), MCBSP_FMKS(XCR, XPHASE, SINGLE) | MCBSP_FMKS(XCR, XFRLEN2, DEFAULT) | MCBSP_FMKS(XCR, XWDLEN2, DEFAULT) | MCBSP_FMKS(XCR, XCOMPAND, MSB) | MCBSP_FMKS(XCR, XFIG, NO) | MCBSP_FMKS(XCR, XDATDLY, 0BIT) | MCBSP_FMKS(XCR, XFRLEN1, OF(1)) | MCBSP_FMKS(XCR, XWDLEN1, 16BIT) | MCBSP_FMKS(XCR, XWDREVRS, DISABLE), MCBSP_FMKS(SRGR, GSYNC, DEFAULT) | MCBSP_FMKS(SRGR, CLKSP, DEFAULT) | MCBSP_FMKS(SRGR, CLKSM, DEFAULT) | MCBSP_FMKS(SRGR, FSGM, DEFAULT) | MCBSP_FMKS(SRGR, FPER, DEFAULT) | MCBSP_FMKS(SRGR, FWID, DEFAULT) | MCBSP_FMKS(SRGR, CLKGDV, DEFAULT), MCBSP_MCR_DEFAULT, MCBSP_RCERE0_DEFAULT, MCBSP_RCERE1_DEFAULT, MCBSP_RCERE2_DEFAULT, MCBSP_RCERE3_DEFAULT, MCBSP_XCERE0_DEFAULT, MCBSP_XCERE1_DEFAULT,

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

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

MCBSP_XCERE2_DEFAULT, MCBSP_XCERE3_DEFAULT, MCBSP_FMKS(PCR, XIOEN, SP) | MCBSP_FMKS(PCR, RIOEN, SP) | MCBSP_FMKS(PCR, FSXM, EXTERNAL) | MCBSP_FMKS(PCR, FSRM, EXTERNAL) | MCBSP_FMKS(PCR, CLKXM, INPUT) | MCBSP_FMKS(PCR, CLKRM, INPUT) | MCBSP_FMKS(PCR, CLKSSTAT, DEFAULT) | MCBSP_FMKS(PCR, DXSTAT, DEFAULT) | MCBSP_FMKS(PCR, FSXP, ACTIVEHIGH) | MCBSP_FMKS(PCR, FSRP, ACTIVEHIGH) | MCBSP_FMKS(PCR, CLKXP, FALLING) | MCBSP_FMKS(PCR, CLKRP, RISING) };

Để cấu hình cho McBSP1 ta có thể dùng đoạn mã như sau. MCBSP_Config mcbspCfg1 = { MCBSP_FMKS(SPCR, FREE, NO) | MCBSP_FMKS(SPCR, SOFT, NO) | MCBSP_FMKS(SPCR, FRST, YES) | MCBSP_FMKS(SPCR, GRST, YES) | MCBSP_FMKS(SPCR, XINTM, XRDY) | MCBSP_FMKS(SPCR, XSYNCERR, NO) | MCBSP_FMKS(SPCR, XRST, YES) | MCBSP_FMKS(SPCR, DLB, OFF) | MCBSP_FMKS(SPCR, RJUST, RZF) |

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

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

MCBSP_FMKS(SPCR, CLKSTP, NODELAY) | MCBSP_FMKS(SPCR, DXENA, OFF) | MCBSP_FMKS(SPCR, RINTM, RRDY) | MCBSP_FMKS(SPCR, RSYNCERR, NO) | MCBSP_FMKS(SPCR, RRST, YES), MCBSP_FMKS(RCR, RPHASE, DEFAULT) | MCBSP_FMKS(RCR, RFRLEN2, DEFAULT) | MCBSP_FMKS(RCR, RWDLEN2, DEFAULT) | MCBSP_FMKS(RCR, RCOMPAND, DEFAULT) | MCBSP_FMKS(RCR, RFIG, DEFAULT) | MCBSP_FMKS(RCR, RDATDLY, DEFAULT) | MCBSP_FMKS(RCR, RFRLEN1, DEFAULT) | MCBSP_FMKS(RCR, RWDLEN1, DEFAULT) | MCBSP_FMKS(RCR, RWDREVRS, DEFAULT), MCBSP_FMKS(XCR, XPHASE, SINGLE) | MCBSP_FMKS(XCR, XFRLEN2, OF(0)) | MCBSP_FMKS(XCR, XWDLEN2, 8BIT) | MCBSP_FMKS(XCR, XCOMPAND, MSB) | MCBSP_FMKS(XCR, XFIG, NO) | MCBSP_FMKS(XCR, XDATDLY, 1BIT) | MCBSP_FMKS(XCR, XFRLEN1, OF(0)) | MCBSP_FMKS(XCR, XWDLEN1, 16BIT) | MCBSP_FMKS(XCR, XWDREVRS, DISABLE), MCBSP_FMKS(SRGR, GSYNC, FREE) |

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

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

MCBSP_FMKS(SRGR, CLKSP, RISING) | MCBSP_FMKS(SRGR, CLKSM, INTERNAL) | MCBSP_FMKS(SRGR, FSGM, DXR2XSR) | MCBSP_FMKS(SRGR, FPER, OF(0)) | MCBSP_FMKS(SRGR, FWID, OF(19)) | MCBSP_FMKS(SRGR, CLKGDV, OF(99)), MCBSP_MCR_DEFAULT, MCBSP_RCERE0_DEFAULT, MCBSP_RCERE1_DEFAULT, MCBSP_RCERE2_DEFAULT, MCBSP_RCERE3_DEFAULT, MCBSP_XCERE0_DEFAULT, MCBSP_XCERE1_DEFAULT, MCBSP_XCERE2_DEFAULT, MCBSP_XCERE3_DEFAULT, MCBSP_FMKS(PCR, XIOEN, SP) | MCBSP_FMKS(PCR, RIOEN, SP) | MCBSP_FMKS(PCR, FSXM, INTERNAL) | MCBSP_FMKS(PCR, FSRM, EXTERNAL) | MCBSP_FMKS(PCR, CLKXM, OUTPUT) | MCBSP_FMKS(PCR, CLKRM, INPUT) | MCBSP_FMKS(PCR, CLKSSTAT, DEFAULT) | MCBSP_FMKS(PCR, DXSTAT, DEFAULT) | MCBSP_FMKS(PCR, FSXP, ACTIVELOW) | MCBSP_FMKS(PCR, FSRP, DEFAULT) | MCBSP_FMKS(PCR, CLKXP, FALLING) |

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

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

MCBSP_FMKS(PCR, CLKRP, DEFAULT

4.6. EDMA kết hợp với McBSP

Sử dụng EDMA và McBSP để quản lí bộ nhớ mà không có sự can thiệp từ DSP. McBSP1 ( Là một cổng nối tiếp ) được dùng để cấu hình và điều khiển AIC23. AIC23 sẽ nhận liên tiếp các lệnh thông qua McBSP1 để cấu hình các thông số như là độ lớn, tốc độ mẫu và định dạng của mẫu tín hiệu.

McBSP2 là cổng dữ liệu,và là cổng nối tiếp 2 chiều. EDMA sẽ cấu hình cho các mẫu dữ liệu truyền thông trên McBSP2. Khi McBSP2 nhận dữ liệu nó sẽ được lưu vào vùng bộ nhớ đệm để chờ xử lí. Trong quá trình truyền EDMA gửi data ngược lại McBSP2.

Trong đó McBSP chia làm 2 kênh: . Trong đó McBSP1 là cổng vào ra điều khiển các thông số hoạt động của Codec, còn McBSP2 là cổng dữ liệu.

Analog CPU EDMA McBSP AIC23 BUFFER DSK

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

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

Codec sử dụng 2 kênh nối tiếp để giao tiếp với bộ xử lý DSP. Đó là McBSP1 và McBSP2. Trong đó, một dùng để điều khiển thanh ghi cấu hình cho Codec, một dùng để truyền và nhận các tín hiệu số. AIC23 có 10 thanh ghi có điều khiển như âm lượng, định dạng dữ liệu, tốc độ lấy mẫu…các thanh ghi này được viết thông qua kênh điều khiển McBSP1.

4.7. Kỹ thuật vào ra Ping Pong

Ở 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

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 51)

Tải bản đầy đủ (PDF)

(111 trang)