Hoạt động của modul SSI Định dạng bus

Một phần của tài liệu Tổng hợp tiếng nói trên T-Engine (Trang 94 - 103)

. P(S1| S1 ) P(S3| S1 ) P(S2| S3 ) P(S3| S2) = π3 a33 a33 a31 a11 a13 a32 a

Bit Tên bit Giá trị khởi tạo

A.2.3 Hoạt động của modul SSI Định dạng bus

Định dạng bus

Modul SSI có thể làm việc như là một bộ truyền hoặc nhận và có thể được cấu hình trong nhiều định dạng bus tuần tự Các định dạng bus có thể là một trong 8 chế độ chính được chỉ ra trong hình dưới đây:

Chế độ không nén:

Chế độ không nén được thiết kế để hỗ trợ tất cả các luồng dữ liệu âm thanh tuần tự mà được chia thành các kênh. Nó có thể hỗ trợ các chế độ Phillip, Sony và Masushita cũng như rất nhiều các chế độ đa dạng khác nữa.

Chế độ bộ nhận tớ (Slave receiver) : Chế độ này cho phép modul SSI nhận dữ liệu tuần tự từ một thiết bị khác. Đồng hồ và các tín hiệu lựa chọn từ được sử dụng cho luồng dữ liệu tuần tự cũng được cung cấp từ thiết bị ngoài. Nếu các tín hiệu này không phù hợp với định dạng đựoc chỉ ra trong modul SSI thì hoạt động không được đảm bảo.

Chế độ bộ truyền tớ (Slave transmiter): Chế độ này cho phép modul SSI truyền dữ liệu tuần tự tới một thiết bị khác. Đồng hồ và các tín hiệu lựa chọn từ được sử dụng cho luồng dữ liệu tuần tự cũng được cung cấp từ thiết bị ngoài. Nếu các tín hiệu này không phù hợp với định dạng đựoc chỉ ra trong modul SSI thì hoạt động không được đảm bảo.

Chế độ bộ nhận chủ (Master receiver): Chế độ này cho phép modul SSI nhận dữ liệu từ một thiết bị khác. Đồng hồ và các tín hiệu lựa chọn từ được cung cấp bên trong từ đồng hồ vào HAC_BIT_CLK. Định dạng của những tín hiệu này được định nghĩa trong modul SSI. Nếu dữ liệu tới không phù hợp với định dạng được định nghĩa thì hoạt động không được đảm bảo.

Chế độ bộ truyền chủ (Master transmitter): Chế độ này cho phép modul SSI truyền dữ liệu tới một thiết bị khác. Đồng hồ và các tín hiệu lựa chọn từ được cung cấp bên trong từ đồng hồ vào HAC_BIT_CLK. Định dạng của những tín hiệu này được định nghĩa trong modul SSI. Nếu dữ liệu ra không phù hợp với định dạng được định nghĩa thì hoạt động không được đảm bảo.

Các trường cấu hình- Liên quan tới độ dài từ: Tất cả các bit cấu hình liên quan tới độ dài từ của SSICR là hợp lệ trong chế độ không nén. Có nhiều cấu hình mà modul SSI hỗ trợ, một số tổ hợp được chỉ ra dưới đây là các định dạng phổ biến được đưa ra bởi Philips, Sony và Matsushita.

Định dạng Phillips

Định dạng Sony

Định dạng Matsushita

Chế độ nén

Chế độ nén được sử dụng để truyền một luồng bit liên tục. Nó thường là một luồng bit được nén mà cần giải mã luồng nhận được. Trong chế độ luồng ( không cho phép burst mode) không có khái niệm của một từ dữ liệu Tuy nhiên, để nhận và

truyền thì cần có chuyển đổi giữa bus tuần tự và bộ nhớ đã được định dạng. Như vậy cần lựa chọn giới hạn từ và việc này cần được thực hiện bởi một modul khác. Khi chế độ burst được cho phép thì các bit dữ liệu được truyền đi có thể được nhận dạng bởi thực tế là đồng hồ tuần tự ra chỉ được kích hoạt khi có một từ cần đưa ra và chỉ một số nhất định xung đồng hồ tuần tự cần thiết cho mỗi từ 32 bit được tạo ra. Đồng hồ bit tuần tự dừng tại mức thấp khi SSICR.SCKP = 0 và tại mức cao nếu SSICR.SCKP=1. Chú ý là chế độ burst chỉ hợp lệ trong ngữ cảnh modul SSI đang truyền dữ liệu. Dữ liệu trong chế độ burst mode không thể được nhận bởi modul này. Dữ liệu được truyền đi và nhận trong các khối 32 bit và bit đầu tiên nhận/ truyền là bit 31 khi được lưu trong bộ nhớ.

Chân chọn từ trong chế độ này không hoạt động như là một tín hiệu bắt đầu từ hệ thống như trong chế độ không nén, mà thay vào đó được sử dụng để chỉ ra bộ nhận có thể nhận dữ liệu burst khác hoặc bộ truyền có thể truyền dữ liệu burst khác.

Các chế độ hoạt động

Có 3 chế độ hoạt động là : cấu hình, cho phép và cấm. Hình 51 chỉ ra đồ hình của việc chuyển trạng thái giữa các chế độ này:

Chế độ định cấu hình : Vào chế độ này sau khi modul thoát khỏi trạng thái reset. Tất cả các thiết lập cần thiết trong thanh ghi điều khiển nên được định nghĩa trong chế độ này, trước khi modul SSI được cho phép bởi bit EN.

Chế độ cho phép: Hoạt động của modul trong chế độ này phụ thuộc vào chế độ hoạt động được lựa chọn.

Thao tác truyền dữ liệu

Thao tác truyền dữ liệu có thể được điều khiển bằng một trong hai cách: hoặc dùng DMA hoặc dùng ngắt. Sử dụng DMA là cách thường hay được dùng hơn để giảm tải cho CPU. Trong chế độ điều khiển bằng DMA, một kết thúc bởi tràn dưới, tràn trên của dữ liệu hoặc một DMA kết thúc được thông báo thông qua sử dụng ngắt. Một cách thay thế là sử dụng các ngắt mà modul SSI tạo ra để cung cấp dữ liệu khi cần. Chế độ này có tải ngắt cao hơn bởi vì modul SSI là có bộ đệm kém và sẽ cần dữ liệu được ghi tối thiểu là trong mỗi chu kì từ hệ thống. Khi modul SSI được cho phép cho việc truyền dữ liệu, ít nhất một từ dài (long word) phải được ghi vào thanh ghi truyền tải trước khi cấm bộ truyền( trong chế độ 16 bit, 2 từ 16 bit sẽ được truyền, trong chế độ 8 bit, 4 byte sẽ được truyền. Với tất cả các kiểu dữ liệu khác, một từ dữ liệu sẽ được truyền Lỗi trong việc thực hiện sẽ dẫn đến khóa và cần tắt nguồn hoặc reset bằng tay để thiết bị tiếp tục hoạt động.

Khi cấm một modul SSI, đồng hồ của SSI phải được cung cấp liên tục cho đến khi modul đi vào trạng thái treo(idle), được chỉ ra bởi IIRQ bit. Hình 5.9 thể hiện thao

tác truyền trong chế độ điều khiển bằng ngắt. Chú ý là SCKD=0 thì xung đồng hồ vào qua chân SSI_SCK; trái lại xung đồng hồ vào thông qua HAC_BIT_CLK.

Truyền dữ liệu sử dụng DMA

Ngắt lỗi SSI? DMAC truyền xong? Đúng Sai Sai Đúng Sai Chờ ngắt Idle từ SSI Kết thúc

Dừng SSI, DMA, ngắt lỗi, cho phép ngắt Idle

Truyền tiếp?

Sử dụng các bit trong SSISR để tổ chức lại dữ liệu sau khi tràn Chờ ngắt từ DMAC

hoặc SSI Bắt đầu

Thoát t/thái thiết lập lại, cấu hình các bit trong SSICR

Cho phép SSI, DMA, các ngắt lỗi

Cấu hình DMA điều khiển cung cấp dữ liệu cần truyền

Chỉ rõ TRMD, EN, SCKD, SWSD, MUEN, DEL, PDTA, SDTA, SPDP, SWSP, SCKP, SWL, DWL, CDNL EN=1, DMEN=1, UIEN=1, OIEN=1 EN=0, DMEN=0, UIEN=0, OIEN=0, IIEN=1

Truyền dữ liệu sử dụng ngắt

Đúng

Chờ ngắt Idle từ SSI Kết thúc

Dừng SSI, ngắt dữ liệu, ngắt lỗi, cho phép ngắt Idle Nạp dữ liệu của kênh thứ n

Đúng

Sai Ngắt

dữ liệu?

Sử dụng các bit trong SSISR để tổ chức lại dữ liệu sau khi tràn Chờ ngắt từ SSI

Cho phép SSI, ngắt dữ liệu, các ngắt lỗi

Bắt đầu

Thoát t/thái thiết lập lại, cấu hình các bit trong SSICR

Chỉ rõ TRMD, EN, SCKD, SWSD, MUEN, DEL, PDTA, SDTA, SPDP, SWSP, SCKP, SWL, DWL, CDNL EN=0, DMEN=0, UIEN=0, OIEN=0, IIEN=1 EN=1, DMEN=1, UIEN=1, OIEN=1 n = ((CHNL + 1) x 2) CHNL = CHNL + 1 CHNL>CHNLmax? Sai CHNL = 0 Truyền tiếp? Đúng Sai

Thao tác nhận dữ liệu Sai Sai Sai Đúng Chờ ngắt Idle từ SSI Kết thúc

Dừng SSI, DMA, ngắt lỗi, cho phép ngắt Idle Truyền tiếp? Đúng Ngắt lỗi SSI? DMAC nhận xong?

Sử dụng các bit trong SSISR để tổ chức lại dữ liệu sau khi tràn Chờ ngắt từ DMAC

hoặc SSI Bắt đầu

Thoát t/thái thiết lập lại, cấu hình các bit trong SSICR

Cho phép SSI, DMA, các ngắt lỗi

Cấu hình DMA điều khiển truyền dữ liệu từ SSI tới bộ nhó

Chỉ rõ TRMD, EN, SCKD, SWSD, MUEN, DEL, PDTA, SDTA, SPDP, SWSP, SCKP, SWL, DWL, CDNL EN=1, DMEN=1, UIEN=1, OIEN=1 EN=0, DMEN=0, UIEN=0, OIEN=0, IIEN=1 Đúng

Cũng giống như thao tác truyền dữ liệu, thao tác nhận dữ liệu có thể được điều khiển bằng 1 trong 2 cách: sử dụng DMA hoặc sử dụng ngắt. Khi cấm modul SSI, đồng hồ SSI phải được cung cấp liên tục cho đến khi modul đi vào trạng thái idle, mà được chỉ ra bởi bit IIRQ.

Chờ ngắt Idle từ SSI

Kết thúc

Dừng SSI, ngắt dữ liệu, ngắt lỗi, cho phép ngắt Idle Đọc dữ liệu từ thanh ghi nhận

dữ liệu

Sử dụng các bit trong SSISR để tổ chức lại dữ liệu sau khi tràn Bắt đầu

Thoát t/thái thiết lập lại, cấu hình các bit trong SSICR

Truyền tiếp? Đúng

Sai Chờ ngắt từ SSI Cho phép SSI, ngắt dữ liệu,

các ngắt lỗi Ngắt dữ liệu? Đúng Sai EN=0, DMEN=0, UIEN=0, OIEN=0, IIEN=1 EN=1, DMEN=1, UIEN=1, OIEN=1 Chỉ rõ TRMD, EN, SCKD, SWSD, MUEN, DEL, PDTA, SDTA, SPDP, SWSP, SCKP, SWL, DWL, CDNL

Một phần của tài liệu Tổng hợp tiếng nói trên T-Engine (Trang 94 - 103)

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

(116 trang)
w