Thanh ghitrạng thái của cổng SSI:

Một phần của tài liệu Xây dựng bộ điều khiển và nhận dạng tiếng nói phần 4 (Trang 30 - 33)

Thanh ghi trạng thái của cổng SSI (SSISR) là một thanh ghi chỉ đọc (read only) 8-bit được dùng bởi DSP56002 để quản lý trạng thái và các cờ nhập nối tiếp của cổng SSI. SR chiếm vị trí x:$FFEE.

Bit cờ báo đầy thanh ghi nhận (RDF) của SSISR (bit 7) được đặt khi nội dung của RSR được truyền hết đến RX. Và RDF được xóa khi DSP56002 đọc RX, hay được xóa bằng phần cứng, phần mềm, các đặc tính SSI hoặc lệnh STOP.

Bit cờ báo trống TX (TDE)của SSISR (bit 6) được đặt khi nội dung của TX được truyền hết đến TSR và cũng còn được đặt trong việc cấm chu kỳ Timeslot trong chế độ mạng. TDE được xóa khi DSP56002 ghi dữ liệu mới vào TX hay DSP56002 ghi vào thanh ghi Timeslot (TSR) để cho phép truyền timeslot kế tiếp.

Bit cờ báo lỗi nhận chạy vượt (overrun) (ROE) của SSISR (bit 5) được đặt khi thanh ghi dịch nhận dữ liệu nối tiếp được nhận và sẵn sàng truyền dữ liệu đến RX nhưng RX đã đầy (RDF=1). ROE được xóa bằng phần cứng, phần mềm và cũng được xóa bằng cách đọc SSISR với ROE được đặt, rồi tiếp theo đọc RX.

Bit cờ báo lỗi nhận chạy chậm (underrun)(TUE) của SSISR (bit 4) được đặt khi TSR đang trống (không có dữ liệu nào được truyền đến) và sự truyền timeslot đang xảy ra. Khi lỗi này xảy ra thì dữ liệu trước đó (dữ liệu còn hiện hành trong TX) sẽ được truyền ngược trở lại. TUE cũng có thể được xóa bằng

phần cứng, phần mềm… Và cũng được xóa bằng khi đọc SSISR với TUE được đặt, rồi tiếp theo ghi TX hay TSR.

Các bit cờ báo nhập nối tiếp (IF0 và IF1) của SSISR (bit 0 và 1) không được dùng trong hệ thống DRP56002 này.

Khi bit cờ báo truyền tín hiệu đồng bộ (TFS) của SSISR (bit 2) được đặt thì nó chỉ ra rằng có một sự truyền tín hiệu đồng bộ xảy ra trong timeslot hiện hành của DSP56002. TFS được đặt tại vị trí khởi đầu của timeslot đầu tiên trong khung và được xóa trong tất cả các timeslot khác của DSP56002. TFS được dùng trong chế độ mạng để xác định khung (frame) khởi đầu.

*

0 RDFTDERDETUERFSTFSIF1IF00 0 1 2 3 4 7 6 5 23

Thanh ghitrạng thái SSI X:$FFEE (Đọc)

Cờ vào nối tiếp 0,1 Khung đồng bộ truyền Khung đồng bộ nhận Cờ lỗi nhận tràn Thanh ghi truyền trống Đầy thanh ghi nhận

Cờ lỗi truyền

8

Trong hệ thống DSP, các lệnh sau đây dùng để tác động khung khởi đầu trong chế độ mạng để thiết lập sự đồng bộ cần thiết trước khi dùng các ngắt để truyền dữ liệu giữa DSP56002 và các bộ ADC và DAC.

DO #$100,GOTHRU

JCLR #2,X:SSISR,* ;chờ khi bit khung tx là 1 JSET #2,X:SSISR,* ;chờ khi bit khung tx là 0 NOP

GOTHRU

Khi bit cờ báo nhận tín hiệu đồng bộ (RFS) của SSISR (bit 3) được đặt thì nó chỉ ra rằng có một sự nhận tín hiệu đồng bộ xảy ra khi nhận lại từ mà ở trong thanh ghi nhận dữ liệu nối tiếp. Điều đó có nghĩa là từ dữ liệu đó là timeslot đầu tiên của DSP56002 của khung. RFS cũng được dùng trong chế độ mạng để xác định khung khởi đầu.

Trong hệ thống DSP, các lệnh sau của DSP56002 là một phần thiết lập CS4215 trước khi đi vào chế độ điều khiển và chế độ dữ liệu:

MOVEP #$01E8,X:PCC ;mở cổng SSI;CLB=0

JCLR #3,X :SSISR,* ;chờ bit khung rx là 1

JSET #,X :SSISR,* ;chờ bit khung rx là 0 JCLR #3,X :SSISR,* ;chờ bit khung rx là 1

JSET #18,X :RX_BUFF_BASE,* ;dừng tại chổ cho đến khi CLB đặt

;---

;CLB=0 ;--- BSET #18,X :TX_BUFF_BASE ;đặt CLB DO #4,_INIT_LOOPB JCLR #2,X:SSISR, * JCLR #2,X:SSISR, * _INIT_LOOPB

MOVEP #0,X:PCC ;tắt,reset cổng SSI

Các lệnh và macro sau được dùng để lái tín hiệu dạng số hóa tín hiệu tương tự trái và phải được nhận từ hai bộ ADC đưa đến kênh trái và phải của hai bộ DAC. DATA_LOOP WAIT_RECEIVE WAIT_WORD GET_LEFT GET_RIGHT MOVE X0,A PUT_LEFT MOVE X1,B PUT_RIGHT JMP DATA_LOOP

WAIT_RECEIVE MACRO ; đây là macrochờ nhận dữ liệu

JCLR #3, X :SSISR, * JSET #3, X :SSISR,* ENDM WAIT_SEND MACRO JCLR #2,X:SSISR,* JSET #2,X:SSISR,* ENDM

GET_LEFT MACRO ; đây là macro nhận kênh trái vào x0 (adsbygoogle = window.adsbygoogle || []).push({});

MOVE X :RX_BUFF_BASE,X0

ENDM

PUT_LEFT MACRO ; đây là macro xuất từ a đến kênh trái

MOVE A,X :TX_BUFF_BASE

ENDM

GET_RIGHT MACRO ;đây là macro nhận kênh phải vào x1

PUT_RIGHT MACRO ; đây là macro xuất b ra kênh phải MOVE B,X:RX_BUFF_BASE+1 ENDM WAIT_WORD MACRO JCLR #1,R7,* ENDM

Một phần của tài liệu Xây dựng bộ điều khiển và nhận dạng tiếng nói phần 4 (Trang 30 - 33)