Khi sử dụng PORT A để mở rộng bộ nhớ thì ta phải chia ra làm ba nhóm chính: Nhóm BUS dữ liệu 24 bits, nhóm BUS địa chỉ 16 bits và nhóm BUS điều khiển gồm các chân điều khiển vào ra... Kh
Trang 1Phần I: Nghiên cứu phần cứng bộ vi xử lý tín hiệu số
DSP56002.
Chương 1: Giới thiệu chung
Các bé vi xử lý tín hiệu số được phát sinh từ năm 1982 với những hàm đặc biệt để
xử lý nhanh các tín hiệu, nó được ứng dụng trong rất nhiều lĩnh vực như trong viễn thông, trong đo lường điều khiển, trong quân sự, trong xử lý ảnh, xử lý âm
DSP56002 là một trong những bộ vi xử lý tín hiệu số nói trên, nó thuộc họ DSP56K của hãng MOTOROLA
DSP56002 là bộ vi xử lý tín hiệu số 24 bits với các đặc điểm sau:
• Cổng truyền tin chủ HI (PORTB)
• Cổng truyền tin nối tiếp đồng bộ (SPI) và không đồng bộ (SCI) (PORTC)
• 25 chân vào ra đa năng
• Có bé Timer và bộ đếm sự kiện 24bit
• Các bộ điều khiển Reset và Interrupt
MCU của nó gồm:
• Khối logic số học ALU
• Khối địa chỉ AGU
• Khối điều khiển chương trình CPU
DSP56002 thực hiện xử lý nhanh các tín hiệu trong thời gian thực, các khối xử lý của nó thực hiện các phép toán cộng, trừ , nhân, nhân có nhớ đặc biệt nó có bộ nhân cộng logic (hay còn gọi là bộ cộng dồn) MAC để thực hiện phép tính nhân chập là phép toán rất quan trọng trong lĩnh vực xử lý tín hiệu số Các khối xử lý logic số học, khối địa chỉ và khối điều khiển chương trình hoạt động độc lập với nhau, tuy nhiên chúng có thể giao diện với nhau và giao diện với các bộ nhớ thông qua các BUS địa chỉ và BUS số liệu Trên DSP56002 có chứa : 4 BUS dữ liệu 24 bits là XDB, YDB, PDB và GDB; 3 BUS địa chỉ 16 bits là XAB,YAB và PAB.Giao diện chủ HI cho phép ta kết nối DSP này với các DSP khác hoặc các bộ vi xử
lý hay vi điều khiển chuyên dụng Trong khi đó các chân ở cổng C đóng vai trò là các cổng truyền tin cho phép ta kết nối DSP56002 với các thiết bị ngoài như : Các
bộ ADC, DAC, các bộ CODEC
Trang 2ĐÓ hiểu rõ hơn ta có thể xem cấu trúc của nó ở hình 1.
Cấu trúc của DSP56002 được mô tả như sau:
Hình 1: Sơ đồ khối của DSP56002
Cấu trúc này được tích hợp trên một chip và đưa ra 132 chân, các chân đưa ra được sắp xếp theo từng khối , từng nhóm chức năng riêng biệt
Sau đây ta sẽ lần lượt đi nghiên cứu cụ thể từng khối, từng bộ phận của bộ vi xử lý tín hiệu số này
Chương II: PORT A
I Giới thiệu chung về PORT A:
Trang 3PORT A là cổng cho phép ta có thể dễ dàng mở rộng bộ nhớ (giao diện với bộ nhớ), PORT A bao gồm 50 chân được chia làm 3 nhóm, mỗi nhóm ứng với một chức năng khác nhau đó là:
• Nhóm chân cho BUS dữ liệu D0 đến D23
• Nhóm chân cho BUS địa chỉ A0 đến A15
• Nhóm chân cho BUS điều khiển
Cả 50 chân đều ở trạng thái cao trở khi khởi động
• Khối BUS địa chỉ: Gồm 16 chân A0 đến A15, đây là các đầu ra 3 trạng thái, nó
sẽ không thay đổi khi bộ nhớ chương trình ngoài chưa được truy nhập Nhóm chân này cho phép ta truy nhập đến 64K byte vùng nhớ của bộ nhớ ngoài X-memory , Y-memory và P-memory
• Khối BUS dữ liệu D0 đến D23, là các chân 3 trạng thái, 2 chiều Nhóm chân này cho phép truyền dữ liệu giữa các bộ nhớ ngoài và các khối xử lý bên trong
• /PS; /DS; X//Y: Cả 3 chân này đều là đầu ra, chóng quy định xem bộ xử lý có làm việc với bộ nhớ ngoài hay không, nếu có thì bộ nhớ nào được lựa chọn
Việc chọn bộ nhớ ngoài được mô tả như bảng dưới đây:
/PS /DS X//Y Bộ nhớ ngoài được chọn
• Bus điều khiển : gồm 7 chân.
- /RD là một đầu ra cho phép bộ vi điều khiển đọc dữ liệu từ bộ nhớ ngoài lên BUS dữ liệu
- /WR cũng là một đầu ra dùng cho chức năng viết
- /BN (BUS needed) là một đầu ra, hoạt động ở mức thấp mỗi khi DSP yêu cầu bộ nhớ ngoài
- /BR (BUS Request) là một đầu vào hoạt động ở mức thấp mỗi khi có sự trao đổi dữ liệu giữa DSP56002 với thiết bị ngoài
- /BG (BUS Grant) là một đầu ra
- /BS (BUS strobe) là một đầu ra hoạt động ở mức thấp mỗi khi DSP có yều cầu giao diện với thiết bị ngoại vi Chân này thường được sử dụng cùng chân /WT để tạo nên trạng thái đợi cho BUS dữ liệu khi không xử lý kịp
- /BW (BUS wait) tạo trạng thái đợi cho BUS dữ liệu khi DSP không xử lý kịp
II Giao diện PORT A:
DSP56002 có thể truy nhập tới một hay nhiều bộ nhớ : X-memory , Y-memory và P-memory, nếu chỉ truy nhập đến các bộ nhớ trong thông qua các BUS dữ liệu và
Trang 4BUS địa chỉ trong thì việc truy nhập đó chỉ thực hiện trong mét chu kỳ lệnh, ngoài
ra DSP56002 còn có thể truy nhập tới cácbộ nhớ bên ngoài thông qua PORT A, nhưng việc truy nhập bộ nhớ ngoài thông qua PORT A sẽ phải thực hiện trong hai chu kỳ lệnh
Khi sử dụng PORT A để mở rộng bộ nhớ thì ta phải chia ra làm ba nhóm chính: Nhóm BUS dữ liệu 24 bits, nhóm BUS địa chỉ 16 bits và nhóm BUS điều khiển gồm các chân điều khiển vào ra
Khi làm việc với bộ nhớ ngoài thì chân /PS của DSP56002 sẽ được nối tới chân /CS của bộ nhớ ngoài như hình 2:
Hình 2: Kết nối DSP56002 với bộ nhớ ngoài thông qua PORT A
Còn các bộ nhớ trong gồm X-memory, Y-memory và P-memory sẽ được chọn nhờ các chân /RD, /WR, X//Y và /DS (Hình 3):
Cụ thể nó được xác định như sau:
/PS /DS /X//Y Bộ nhớ được lựa chọn
Trang 50 0 X Không định nghĩa
Hình 3: Sơ đồ lựa chọn các bộ nhớ bên trong
III Thanh ghi điều khiển BUS (BCR):
Thanh ghi điều khiển BUS (BCR) xác định thời gian hoạt động của BUS bằng cách điều khiển thời gian của tín hiệu trên các chân /RD, /WR và trên các chân đưa dữ liệu ra Thanh ghi này có địa chỉ thuộc ô nhớ $FFFE
BCR là một thanh ghi 16 bit, mỗi bộ nhớ được trỏ bởi 4 bit (hình 4), các thiết bị ngoại vi khi được truy nhập nó sẽ có vùng nhớ từ $FFC0 đến $FFFF Ta có thể lập trình để chẽn vào 15 trạng thái đợi cho mỗi qua trình truy nhập bộ nhí
IV BUS strobe và trễ ở các chân:
Quá trình hoạt động trên cổng A (khi truyền đồng bộ) có thể chèn thêm vào các trạng thái trễ để có thể xử lý tín hiệu kịp thời (Nhằm không bị mất dữ liệu khi bé vi
xử lý không xử lý kịp) bằng cách sử dụng hai chân /BS và /WT
Trang 6Khi đó ta có thể dùng thêm một BUS gọi là “BUS trọng tài” để “phân xử” công bằng đối với các sự truy nhập lên BUS “BUS trọng tài” sẽ quyết định BUS nào hay thiết bị ngoại vi nào được truy nhập trong một thời điểm nhất định.
Trong quá trình “phân xử” đó “BUS trọng tài” phải xử dụng đến các chân /BN, /BR, /BG, /BS, và chân /WT
Qua sự phân tích trên ta thấy : Cổng A là một cổng vô cùng quan trọng trong việc
xử lý, điều khiển và đặc biệt là cực kỳ cần thiết cho việc mở rộng bộ nhớ cho bộ xử
lý tín hiệu số DSP56002 Mọi hoạt động của MCU, mọi sự kết hợp với bộ nhớ ngoài cũng như việc kết hợp với thiết bị ngoài đều phải thông qua cổng A để thu/phát và điều khiển
Trang 7Hình 4: Mô tả thanh ghi BCR và các vùng nhớ.
Cấu trúc của nó là phần đậm ở sơ đồ hình 5
Hình 5: Giao diện PORT B
I Vào ra vạn năng (GPIO):
Trang 8Khi PORT B là một cổng vào ra vạn năng thì nó hoạt động với 3 thanh ghi gồm : thanh ghi điều khiển PORT B (PBC),thanh ghi định chiều dữ liệu PORT B (PBDDR) và thanh ghi dữ liệu PORT B (PBC) (Hình 6).
Thanh ghi PBC đặt tại X:$FFE0
Thanh ghi PBDDR đặt tại X:$FFE2
Thanh ghi PBD đặt tại X:$FFE4
Khi Reset thì PBC và PBDDR đều bị xoá, mà khi thanh ghi định chiều dữ liệu bị xoá thì cả 15 chân của PORT B mặc định là các lối vào
Hình 6: Các thanh ghi điều khiển PORT B
Việc lựa chọn PORT B hoạt động ở chế độ GPIO hay HI là do thanh ghi điều khiển PORT B (PBC) quy định (Hình 6) Còn việc xác định xem PORT B là cổng vào hay ra thì được xác định bởi thanh ghi PBDDR (Hình 6) PORT B sẽ là các đầu vào nếu các bits của thanh ghi PBDDR được xoá về 0, ngược lại nó sẽ là các đầu ra khi các bits của thanh ghi PBDDR được đặt là 1
Trang 9ra thì ta phải thực hiênh như sau:
Lệnh thứ nhất viết 15 bits dữ liệu tới thanh ghi PORT B, nhưng các đầu ra là không thay đổi trừ khi chu kỳ lệnh được thực hiện
Lệnh thứ hai viết 24 bits dữ liệu tới bộ nhớ ngoài Y-memory, nó làm xuất hiện ở PORT A trong xung nhịp T2 và T3 của chu kỳ lệnh
II Chế độ HI (Host interface):
Chế độ HI có các đặc điểm sau:
• Cổng song song cái mà được kết nối trực tiếp với BUS dữ liệu của bộ vi xử lý hay bé DSP khác
• Có hai nhóm thanh ghi : mét cho bộ xử lý chủ và một cho CPU của DSP
• CPU của DSP nhìn giao diện chủ như một ngoại vi chiếm dữ 3 từ (24 bits) trong không gian của bộ nhớ
• Các thanh ghi truyền và nhận số liệu được đệm kép để cho phép DSP và bộ xử
lý chủ truyền số liệu một cách có hiệu quả với tốc độ cao
• Tốc độ đạt được là 3,3 triệu byte/s ở tần số làm việc 40 (MHz)
• Có 15 chân:
♦ H0 đến H7: BUS dữ liệu chủ
♦ HA0 đến HA2: Chọn địa chỉ chủ
♦ HR//W : Điều khiển đọc viết
♦ /HEN: Host cho phép truyền
♦ /HRED: Host yêu cầu
♦ /HACK: Chân báo nhận
Trang 10• Giao diện giữa DSP và Host: Được thể hiện trên sơ đồ hình 8.
Việc truyền dữ liệu trong chế độ HI được thực hiện là 8 bits, 16 bits hoặc 24 bits, có các kiểu truyền sau:
♦Truyền dữ liệu từ DSP tới Host
♦ Truyền dữ liệu từ Host tới DSP
♦ Truyền dữ liệu từ Host của DSP này tới Host của DSP khác
Sơ đồ hình 7 cũng mô tả các thanh ghi trong chế độ HI Bên trái của sơ đồ là các thanh ghi chạy dọc xuống, còn bên phải là giao diện trong chế độ này
1 Giao diện Host với CPU của DSP:
DSP CPU nhìn HI như một vùng nhớ ánh xạ ngoài chiếm 24 bits trongvùng nhớ dữ liệu
Trang 11Việc truyền và nhận dữ liệu thông qua bộ đệm hai chiều cho phép DSP và Host truyền dữ liệu với tốc độ và hiệu quả cao Lệnh MOVEP cho phép truyền dữ liệu từ Host tới bộ nhớ và từ bộ nhớ tới Host mà không cần thông qua các thanh ghi trung gian Khi Reset bằng cả phần mềm lẫn phần cứng thì chế độ HI đều bị bá qua mà thay vào đó PORT B sẽ làm việc trong chế độ vào ra vạn năng GPIO và các chân
a Thanh ghi điều khiển HCR:
Trang 12Đây là thanh ghi 8 bits điều khiển việc đọc ghi, các bits của nó được mô tả như sau:
Reset: 0 0 0 0 0 0 0 0 Thanh ghi này ở địa chỉ X:$FFE8 Khi Reset các bits đều bị xóa về 0
Bit 0 (HRIE): Đây là bit được sử dụng để cho phép ngắt DSP khi bit HRDE ở
thanh ghi trạng thái HSR được đặt là 1
Khi xóa bit này thì các ngắt trong khi thu được bỏ qua
Bit 1 (HTIE): Đây là bit được sử dụng để cho phép ngắt DSP khi bit HTDE ở
thanh ghi trạng thái HSR được đặt là 1
Khi xóa bit này thì các ngắt trong lúc truyền được bỏ qua
Bit 2 (HCIE): Bit này cho phép ngắt DSP khi bit HCP trên HSR được đặt là 1.
Xoá bit này đồng nghĩa với việc bỏ qua các ngắt
Bit 3 và Bit 4 (HF2 và HF3): Là các bit cờ
b Thanh ghi trạng thái HSR:
Thanh ghi này là một thanh ghi 8 bit chỉ đọc
Các bits của nó được mô tả như sau:
Reset: 0 0 0 0 0 0 0 0Thanh ghi này nằm ở ô nhớ có địa chỉ X:$FFE9 Khi Reset các bit cũng bị xoá về 0
Bit 0 (HRDF): Bit này cho ta biết vùng chứa dữ liệu khi truyền nhận.
Nó sẽ được đặt là 1 khi dữ liệu được truyền từ nhóm thanh ghi TXH:TXM:TXL tới thanh ghi HRX
Nó bị xoá khi DSP đọc dữ liệu ở HRX
Bit 1 (HTDE): Bit này chỉ ra rằng thanh ghi truyền dữ liệu HTX là rỗng và DSP có
thể viết nên
Bit này được dặt là 1 khi thanh ghi HTX nhận được dữ liệu truyền từ nhóm thanh ghi RXH:RXM:RXL
Bit này bị xoá khi HTX được viết lên bởi DSP
Bit 2 (HCP): Bit này cho biết trạng thái bit HC trong thanh ghi CVR (Command
vector register)
Bit 3 và bit 4 (HF0 và HF1): Chỉ ra trạng thái của cờ 0 và 1 trong ICR.
Bit 7 (DMA): Bit này là bit cho phép hay không cho phép Host truy nhập trực tiếp
lên bộ nhớ
1: Cho phép
0: Bá qua
c Thanh ghi truyền dữ liệu HRX:
Thanh ghi này được sử dụng cho việc truyền dữ liệu từ Host tới DSP Đây là một thanh ghi 24 bits và chỉ được đọc bởi DSP CPU Nó được nạp dữ liệu từ nhóm thanh ghi TXH:TXM:TXL khi bit TXDE trên thanh ghi trạng thái ngắt ISR và bit HRDF trên thanh ghi trạng thái HSR là 0 Khi việc truyền dữ liệu được thực hiện
Trang 13thì cả hai bit này được đặt là 1 Đọc thanh ghi HRX sẽ xoá bit HTDF Việc Reset không làm ảnh hưởng đến thanh ghi này.
d Thanh ghi nhận dữ liệu HTX:
Thanh ghi này được sử dụng cho việc truyền dữ liệu từ DSP tới Host Đây là một thanh ghi 24 bits và chỉ được viết bởi DSP CPU Viết lên HTX sẽ xoá bit HDRE của thanh ghi trạng thái HSR Thanh ghi này được truyền dữ liệu tới từ nhóm thanh ghi (RXH:RXM:RXL) nếu cả hai bits HTDE của thanh ghi HSR và RXDF của thanh ghi ISR đều là 0 Việc Reset không làm ảnh hưởng đến thanh ghi này
Ngoài các thanh ghi trên ta còn một số thanh ghi cũng cần phải chú ý như sau:
• Thanh ghi điều khiển ngắt (ICR):
Đây là một thanh ghi 8 bits đọc viết để điều khiển việc ngắt và điều khiển các cờ trong chế độ HI, khi Reset các bit bị xoá hết về 0 Các bits của nó được mô tả như sau:
Reset: 0 0 0 0 0 0 0 0 Hai bit 0 và 1 (TREQ và RREQ) là hai bit để điều khiển chân /HREQ trong hai chế độ ngắt và DMA
Hai bits 3 và 4 (HF0 và HF1) là hai bits cờ trạng thái khi truyền thông tin từ Host tới DSP
Hai bit 5 và 6 (HM0 và HM1) là hai bits để chọn chế độ Hai bits này thiết lập
4 chế độ như sau:
Trang 14Bit 1 (TXDF): Báo việc truyền dữ liệu.
Bit 2 (TRDY): Báo trạng thái TXDE./HRDE
Bit 3 và bit 4 (HF2 và HF3): Chỉ ra trạng thái của cờ T2 và T3 trong HCR
Bit 6 (DMA): Chỉ ra trạng thái của hai bit MM1 và MM0 trong thanh ghi ICR.Bit 7 (HREQ): Chỉ ra trạng thái chân /HREQ
3 Truyền dữ liệu từ Host tới DSP:
Khi lập trình để truyền dữ liệu từ Host tới DSP ta cần chú ý đến các thanh ghi sau: ISR, ICR, HSR và HCR
Các thanh ghi này đã được nghiên cứu rất kỹ ở phần trên Ta chỉ cần biết thêm rằng
bộ xử lý chủ có vùng nhớ trong P-memory gồm: vùng nhận dữ liệu P:$0020, vùng truyền dữ liệu P:$0022 và vùng mã lệnh P:$0024 đến P:$007E
Quá trình thực hiện lệnh được tiến hành như sau: Bộ xử lý chủ viết ra các lệnh mong muốn HV trong thanh ghi Vector lệnh CVR Sau đó thiết lập bits 7 (HC) trong thanh ghi CVR để cho phép Host thực hiện các lệnh Đồng thời bit HCP trong thanh ghi HSR cũng được thiết lập Nếu bit HCIE trong thanh ghi HCR được đặt bởi DSP thì việc xử lý lệnh sẽ được bắt đầu Khi HC được thực hiện như một bit báo nhận thì nó có thể được bộ xử lý chủ đọc như một bit xác định trạng thái khi các lệnh được thực hiện
Có một điều phải lưu ý là mặc dù ta có thể viết vào HC và HV đồng thời, tuy nhiên
để đảm bảo ổn định các Vector ngắt ta chỉ nên viết vào HV khi HC đã được xoá
4 Truyền dữ liệu từ DSP tới Host:
Việc truyền dữ liệu từ DSP tới Host cũng tương tự như từ Host tới DSP Các thanh ghi ta phải dùng gồm: ISR, HSR, ICR và HCR Các thanh ghi này cũng đã được nghiên cứu kỹ ở phần trên
Chương 4: PORT C
I Giới thiệu chung về PORT C:
PORT C là cổng truyền tin nối tiếp nó được mô tả như sau (phần vẽ đậm hình 8):
Trang 15PORT C gồm có 9 chân, ba chân PC0, PC1 và PC2 (Là RxD, TxD và SCLK) là các chân vào ra dùng cho truyền tin nối tiếp (SCI) Sáu chân còn lại là các chân PC3 đến PC8 ( tương đương với SC0, SC1, SC2, SCK, SRD và STD) dành cho truyền tin nối tiếp đồng bộ (SSI).
Trang 16Sau đây ta sẽ đi xét cụ thể từng trường hợp ứng dụng của PORT C.
II PORT C với chức năng vào ra thông thường:
Lúc này PORT C được bởi 3 thanh ghi:
• Thanh ghi điều khiển PORT C (PCC)
• Thanh ghi định chiều dữ liệu PORT C (PCDDR)
• Thanh ghi dữ liệu PORT C (PCD)
Khi Reset thì tất cả các bits trong hai thanh ghi PCC và PCDDR đều bị xoá về 0, lúc này PORT C mặc định được dùng cho chế độ vào ra thông thường và cả 9 chân của PORT C đều là các đầu vào
1 Thanh ghi điều khiển PORT C (PCC):
Đây là một thanh ghi 24 bits, nó thuộc ô nhớ X:$FFE1 Ta có thể mô tả nó như sau:
23 9 8 7 6 5 4 3 2 1 0
Khi Reset các bit của thanh ghi này đều bị xoá về 0 và PORT C mặc định là một cổng vào ra thông thường
Các bits 9 đến 23 luôn có giá trị là 0
Bit 3 đến bit 8 dành cho chế độ truyền tin nối tiếp đồng bộ
Bit 3: SC0 Bit 4: SC1 Bit 5: SC2 Bit 6: SCK Bit 7: SRD Bit 8: STD
Bit 0 đến bit 2 dùng cho chế độ truyền tin nối tiếp (SCI)
Nếu các bits từ 0 đến 8 có giá trị là 0 thì PORT C đóng vai trò như một cổng vào ra thông thường Còn nếu chúng có giá trị là 1 thì PORT C đóng vai trò là cổng truyền tin nối tiếp
2 Thanh ghi định chiều dữ liệu PORT C (PCDDR):
Đây là thanh ghi 24 bits, nó thuộc ô nhớ X:$FFE3 Thanh ghi này được mô tả như sau:
23 9 8 7 6 5 4 3 2 1 0
Khi Reset các bit của thanh ghi này cũng bị xoá về 0 do đó PORT C được mặc định
là các đầu vào
Các bits 9 đến 23 luôn có giá trị là 0
Các bits 0 đến 8 (CD0 đến CD8) đóng vai trò là các bits định chiều dữ liệu
Nếu các bits này là 0 thì chiều dữ liệu là vào
Nếu các bits này là 1 thì chiều dữ liệu là ra
3 Thanh ghi dữ liệu PORT C (PCD):
Đây cũng là một thanh ghi 24 bits, nó thuộc ô nhớ X:$FFE5 Ta có thể mô tả thanh ghi này như sau:
23 9 8 7 6 5 4 3 2 1 0
Các bits 9 đến 23 cũng luôn có giá trị là 0
Các bits 0 đến 8 là các bits số liệu
Trang 174 Lập trình cho PORT C:
Dõ dàng để lập trình cho PORT C ta cũng cần phải quan tâm đến các thanh ghi của
nó Việc đầu tiên khi lập trình là phải thiết lập trạng thái ban đầu cho PORT C, ta có thể dùng các lệnh MOVEP để thiết lập trạng thái cho PORT C
Khi truyền dữ liệu giữa PORT C và các thanh ghi thì ta dùng lệnh MOVE
Chẳng hạn để thiết lập trạng thái ban đầu cho PORT C là cổng vào ra vạn năng thông thường với các đầu vào PC0 đến PC3 và các đầu ra là PC4 đến PC8 ta chỉ cần thực hiện hai lệnh:
MOVEP #$0,X:$FFE1MOVEP #$01F0,X:$FFE3Cũng giống với PORT B, khi thực hiện truyền dữ liệu ở PORT C ta cũng phải mất 1 thời gian trễ sau khi thực hiện lệnh
III PORT C với chức năng truyền tin nối tiếp (SCI):
SCI là một chế độ hoạt động đồng thời hai chiều cho việc truyền tin tới các bộ DSP
khác, các bộ vi xử lý hay tới các thiết bị ngoài như MODEM…
Giao diện trong chế độ này chỉ gồm 3 chân sau:
• Chân truyền tin TxD: Chân này truyền dữ liệu ra bằng cách lấy dữ liệu từ thanh ghi dịch của SCI và đưa ra ngoài mỗi khi xườn xung ở chân SCKP là mức thấp Chân này cũng phải được lập trình trước khi sử dụng
• Chân nhận tin RxD: Đây là chân nhận dữ liệu từ ngoài vào sau đó đưa tới thanh ghi dịch của SCI Dữ liệu sẽ được nhận vào mỗi khi xườn xung ở chân SCKP là mức cao Trước khi sử dụng ta cũng phải lập trình cho nã
• Chân phát nhận xung nhịp SCLK: Đây là chân 2 hướng cung cấp xung Clock, ta cũng phải lập trình cho chân này
Chế độ SCI có các đặc điểm sau:
• Truyền tin không đồng bộ với tốc độ 625 Kpbs khi hệ thống làm việc ở tần số 40 MHz
• Truyền tin đồng bộ với tốc độ 5 Mpbs khi hệ thống làm việc ở tần số 40 MHz
• Chế độ cho nhiều bộ xử lý:
♦ Với 2 chế độ đánh thức: Đánh thức đường dây rỗi và đánh thức bằng bit địa chỉ
♦ Chế độ “Wired-OR”
• Bộ phát tốc độ/ngắt Timer tích hợp trên chip hoặc ở ngoài
• Làm việc với 4 mức ưu tiên ngắt
Khi lập trình trong chế độ này ta cần chú ý đến các thanh ghi sau:
• Thanh ghi điều khiển của SCI (SCR)
• Thanh ghi trạng thái của SCI (SSR)
• Thanh ghi điều khiển xung nhịp của SCI (SCCR)
• Thanh ghi nhận số liệu của SCI (SRX)
Trang 18• Thanh ghi truyền số liệu của SCI (STX).
• Thanh ghi truyền dữ liệu địa chỉ của SCI (STXA)
1 Thanh ghi điều khiển của SCI (SCR):
Đây là thanh ghi 16 bits thuộc vùng nhớ X:$FFF0
SCK
P
STIR TMI
E TIE RIE ILIE TE RE WOMS RWU WAKE SBK SSFTD WDS2 WDS1 WDS0
Khi Reset các bits của thanh ghi này bị xoá hết về 0
Các bit 0 (WDS0) bit 1 (WDS1) và bit 2 (WSD2): Đây là các bit lựa chọn kiểu dữ liệu chuẩn:
Bit 3 (SSFTR): Bit này quy định chiều dịch chuyển dữ liệu của SCI.
0: Các bit có trọng số nhỏ nhất được truyền/nhận trước
1: Các bit có trọng số lớn nhất được truyền/nhận trước
Bit 4 (SBK): Đây là bit gửi tín hiệu “BREAK” Nếu nó được kích hoạt sau đó xoá
về 0 thì bộ truyền xẽ hoàn tất việc truyền số liệu, gửi 10 hoặc 11 bits 0 sau đó quay trở lại truyền số liệu hoặc ở trạng thái nghỉ Bit này có thể được sử dụng
để đánh dấu 1 điều kiện không bình thường bằng cách xác định lỗi của khung truyền số liệu do sự đánh mất bit STOP
Bit 5 (WAKE): Đây là bit dùng để đánh thức hệ thống.
0: Đánh thức đường dây rỗi
1: Đánh thức bằng bit địa chỉ
Bit 6 (RWU): Đây là bit đánh thức bộ nhận số liệu Khi bit này là 1 và SCI đang
hoạt động theo kiểu không đồng bộ thì chức năng đánh thức được cho phép, tức là tất cả các cửa nhận số liệu đều hoạt động, trừ IDLE và các ngắt là bị cấm
Bit 7 (WOMS): Đây là bit lựa chọn chế độ “Wired-OR” Khi nó là 1, chân TxD
của SCI sẽ được lập trình như 1 đầu ra hoặc có thể kết nối với các chân TxD khác trong cùng 1 cấu hình BUS thích hợp Bit này bị xoá khi có Reset
Bit 8 (RE): Đây là bit cho phép nhận.
1: Cho phép
Trang 190: Bá qua.
Bit 9 (TE): Đây là bit cho phép truyền.
1: Cho phép
0: Bá qua
Bit 10 (ILIE): Là bit cho phép ngắt đường dây rỗi.
1: Ngắt của SCI sẽ xuÊt hiện nếu IDLE=1
Bit 14 (STIR): Là bit quy định mức ngắt của Timer.
Bit 15 (SCKP): Đây là bit quy định xườn tác dụng của xung nhịp.
0: Quy định xườn âm
1: Quy định xườn dương
2 Thanh ghi trạng thái của SCI (SSR):
Đây là thanh ghi 8 bits, thuộc địa chỉ X:$FFF1 và ta có thể mô tả nó như sau:
Bit 0 (TRNE): Đây là bit báo nhận trạng thái rỗng của bộ truyền dữ liệu.
Bit này = 1 tức là cả hai thanh ghi dịch truyền và thanh ghi dữ liệu là rỗng
Bit 1 (TDRE): Báo trạng thái rỗng của thanh ghi truyền số liệu.
Bit 2 (RDRE): Báo trạng thái đầy của thanh ghi nhận số liệu.
Bit 3 (IDLE): Đây là cờ báo đường dây rỗi.
=1: Khi 10 hoặc 11 bit liên tiếp =1 được nhận
=0: Khi phát hiện 1 bit START
Bit 4 (OR): Cờ báo lỗi tràn Nó sẽ dựng khi ký tù trong dòng dữ liệu nhận được có
thể bị mất
Bit 5 (PE): Cờ kiểm tra lỗi chẵn lẻ.
Bit 6 (FE): Cờ báo lỗi khung số liệu.
Bit 7 (R8): Đây là bit xác định kiểu của số liệu truyền Bit này thông báo byte số
liệu nhận là địa chỉ hay dữ liệu
3 Thanh ghi điều khiển xung nhịp của SCI (SCCR):
Đây là thanh ghi 16 bits thuộc vùng địa chỉ X:$FFF2 Nó được mô tả như sau:
Trang 20TCM RCM SCP COD CD11 CD0
Khi Reset thanh ghi này bị xoá toàn bộ về 0
Các bit 0 đến 11 (CD0 đến CD11): Là các bit dùng để xác định hệ số chia xung
nhịp Các bits này được sử dụng để đặt trước 1 bộ đếm 12 bits Bộ đếm không thể xâm nhập bởi người sử dụng Khi bộ đếm =0 thì nó lại được lặp lại bằng các bit chia xung nhịp
Bit 12 (COD): Đây là bit điều khiển bộ chia xung nhịp đầu ra Khi nó bằng 0 và
SCLK là một đầu ra thì xung nhịp của SCI được chia bởi 16 trước khi đưa đến SCLK Khi bit này có giá trị là 1 và SCLK là một đầu ra thì xung nhịp của SCI được đưa thẳng tới chân SCLK của hệ thống
Bit 13 (SCP): Bit này dùng để lựa chọn trước mức xung nhịp của SCI.
Bit 14 (RCM): Đây là bit xác định nguồn xung nhịp nhận
Bit này là 0: Tức là xung nhịp cho bộ nhận là xung nhịp bên trong Bit này là 1: Tức là xung nhịp cho bộ nhận là xung nhịp bên tngoài và được lấy vào qua chân SCLK
Bit 15 (TCM): Là bit xác định nguồn xung nhịp truyền.
0: Nguồn xung nhịp truyền là nguồn bên trong
1: Nguồn xung nhịp truyền là nguồn bên ngoài
4 Các thanh ghi dữ liệu:
a Các thanh ghi nhận dữ liệu:
Các từ dữ liệu thu được trên RxD được dịch tới thanh ghi dịch nhận của SCI Khi hoàn thành việc nhận từ dữ liệu được truyền tới SRX Bộ xử lý sẽ biến đổi
dữ liệu nối tiếp thành dữ liệu song song và đưa vào bộ đệm hai chiều
Thanh ghi SRX có thể đọc ở 3 địa chỉ : X:$FFF4, X:$FFF5 và X:$FFF6 Khi đọc ở địa chỉ X:$FFF4, nội dung phần thấp của SRX sẽ được đưa đến BUS dữ liệu, phần còn lại có giá trị bằng 0 Khi đọc ở địa chỉ X:$FFF5, nội dung phần giữa của SRX được đưa tới BUS dữ liệu, phần còn lại có giá trị bằng 0 Khi đọc
ở địa chỉ X:$FFF6, nội dung phần cao của SRX được đưa tới BUS dữ liệu, phần còn lại có giá trị bằng 0 Ta có thể mô tả các điều trên qua sơ đồ sau:
b Các thanh ghi truyền dữ liệu:
Các thanh ghi này thuộc 4 vùng địa chỉ khác nhau: X:$FFF3 đến X:$FFF6
Trang 21Trong chế độ không đồng bộ, khi dữ liệu được truyền thì 3 vùng địa chỉ được dùng là X:$FFF4, X:$FFF5 và X:$FFF6 và thanh ghi được gọi là STX Khi viết
ở địa chỉ X:$FFF4, các byte thấp của BUS dữ liệu sẽ được truyền tới STX Khi viết ở địa chỉ X:$FFF5, các byte ở giữa của BUS dữ liệu sẽ được truyền tới STX Khi viết ở địa chỉ X:$FFF6, các byte cao của BUS dữ liệu sẽ được truyền tới STX Ta mô tả điều đó như sau:
Còn địa chỉ X:$FFF3 sẽ được viết vào 11 bits số liệu không đồng bộ, thường là
số liệu địa chỉ Khi địa chỉ này được dùng thì thanh ghi được gọi sẽ là STXA và
dữ liệu từ các byte thấp trên BUS dữ liệu được cất vào STXA Các bits số liệu địa chỉ sẽ được xoá khi ta viết vào các vùng địa chỉ : X:$FFF4, X:$FFF5, và X:
$FFF6
Khi cả STX và STXA được viết thì bit TDRE sẽ bị xoá
IV PORT C với chế độ truyền tin đồng bộ (SSI):
Chế độ SSI gồm các khâu truyền nhận hoạt động độc lập với nhau và một bộ phát xung nhịp Chế độ SSI có các đặc điểm sau:
• Tốc độ 10 Mpbs ở tần số làm việc là 40 MHz
• Làm việc với bộ đệm hai chiều
• Có các khâu truyền nhận tách biệt độc lập nhau
• Có bộ phát xung nhịp
• Giao diện kết nối với thiết bị ngoài rất rộng: Các thiết bị được kết nối thường là
các CODECS, các bộ biến đổi ADC, DAC, các bộ DSP khác……
• Bao gồm 6 chân:
♦ Chân truyền dữ liệu STD
♦ Chân nhận dữ liệu SRD
♦ Chân xung nhịp nối tiếp SCK
♦ 3 chân điều khiển nối tiếp SC0, SC1 và SC2
• Có 3 chế độ hoạt động: Normal, On-deman và Network
1 Các chân số liệu và các chân điều khiển:
Chế độ SSI có 6 chân vào ra và được chia làm 2 nhóm mỗi nhóm 3 chân Nhóm chân thứ nhất gồm: chân được sử dụng cho việc truyền số liệu là STD, chân được
Trang 22sử dụng cho việc thu số liệu là SRD và chân được sử dụng để phát xung nhịp là SCK.
Nhóm chân thứ hai là 3 chân còn lại SC0, SC1 và SC2 cũng được sử dụng nhưng
nó phụ thuộc vào chế độ hoạt động được chọn Sự phụ thuộc này được mô tả như sau:
Tên chân của
Xung nhịp
(GCK=0)
Cổng xung nhịp (GCK=1)
SC0=0 (in)
SC0=1 (out)
(SCD0)
RXC ngoàiRXC trong
RXC ngoàiRXC trong
Đầu vào F0Đầu ra F0
Đầu vào F0Đầu ra F0
SC1=0 (in)
SC1=1 (out)
(SCD1)
FSR ngoàiFSR trong
Không dùngFSR trong
Đầu vào F1Đầu ra F1
Đầu vào F1Đầu ra F1
SC2=0 (in)
SC2=1 (out)
(SCD2)
FST ngoàiFST trong
Không dùngFST trong
FS* ngoàiFS* trong
Không dùngFS* trong
SCK=0 (in)
SCK=1 (out)
(SCKD)
TXC ngoàiTXC trong
TXC ngoàiTXC trong
FST-Khuôn dạng truyền đồng bộ F1-Cờ 1
Ta có thể lập trình 3 chân này như các chân điều khiển SSI trong thanh ghi PORT C
Sau đây ta sẽ đi xét từng chân:
• Chân truyền số liệu nối tiếp STD:
STD được sử dụng cho việc truyền số liệu từ thanh ghi dịch truyền nối tiếp STD là một đầu ra khi số liệu đang được truyền Số liệu này thay đổi trên sườn dương của xung nhịp, STD sẽ dơi vào trạng thái cao trở trên sườn âm của xung nhịp tương ứng với số bits số liệu cuối cùng của từ nếu xung nhịp lấy từ bên ngoài Với một xung nhịp lấy từ bên trong , chân STD sẽ ở trạng thái cao trở sau khi số liệu cuối cùng vừa được truyền trong trường hợp không còn từ số liệu nào tiếp theo ngay sau đó Nếu có một từ số liệu tiếp theo ngay sau từ số liệu vừa truyền thì sẽ không có trạng thái tổng trở cao của STD
• Chân nhận số liệu nối tiếp SRD:
Trang 23SRD nhận số liệu nối tiếp và truyền số liệu đó tới thanh ghi dịch nhận số liệu SRD có thể được lập trình như một chân vào ra vạn năng được gọi là PC7 So liệu được lấy mẫu trên sườn âm của xung nhịp.
• Chân xung nhịp nối tiếp SCK:
Đây là chân 2 chiều mà cung cấp xung nhịp cho giao diện SSI SCK là một đầu vào hay đầu ra xung nhịp được sử dụng bởi cả hai bé trong các chế độ đồng bộ hoặc chỉ bởi bộ truyền trong các chế độ không
• Chân điều khiển nối tiếp SC0:
Chức năng của chân này phụ thuộc vào chế độ đồng bộ hay không đồng bộ Trong chế độ đồng bộ chân này được sử dụng cho vào ra cờ nối tiếp, còn trong chế độ không đồng bộ thì chân này sẽ được sử dụng cho việc vào ra xung nhịp nối tiếp Hướng của chân này được quyết định bởi bit SCD0 trong thanh ghi điều khiển CRB
• Chân điều khiển nối tiếp SC1:
Chức năng của chân này phụ thuộc vào chế độ đồng bộ hay không đồng bộ Với chế độ đồng bộ nó cũng được dùng cho việc vào ra cờ nối tiếp Trong chế độ không đồng bộ chân này được dùng cho việc đồng bộ hoá bộ nhận Chiều của nó được quyết định bởi bit SCD1 trong thanh ghi CRB
• Chân điều khiển nối tiếp SC2:
Chân này dùng để đồng bộ hoá bộ truyền và bộ nhận Trong chế độ đồng bộ thì
nó đồng bộ hoá cho cả hai, còn trong chế độ không đồng bộ nó chỉ đồng bộ cho
bộ truyền Chiều của chân này được quyết định bởi bit SCD2 của thanh ghi SRB
2 Các thanh ghi của chế độ SSI:
a Thanh ghi điều khiển A (CRA):
CRA là một trong hai thanh ghi 16 bits của SSI được dùng để điều khiển hoạt động của SSI CRA điều khiển bộ phát xung nhịp, độ dài của từ số liệu, số từ trong mét khung số liệu nối tiếp của SSI
Ta có thể mô tả thanh ghi này như sau:
Các bits 0 đến 7 (PM0 đến PM7): dùng để lựa chọn các mức xung nhịp khác
nhau cho SSI
Các bits 8 đến 12 (DC4 đến DC0): dùng để điều khiển khung số liệu.
Các bits 13 và 14 (WLo và WL1): được dùng để lựa chọn độ dài của một từ
là 8, 12, 16 hay 24 bits/từ
0011
0101
8121624
Bit 15 (PSR): dùng để điều khiển một bộ chia tần số.
0: chia cho 1
Trang 241: chia cho 8.
b Thanh ghi điều khiển B (CRB):
Thanh ghi CRB điều khiển các chân chức năng SC0, SC1 và SC2 của SSI, làm cho các chân này có thể được sử dụng như các đầu vào hay đầu ra xung nhịp, như các chân đồng bộ hoá khung số liệu hoặc như các chân cờ vào ra nối tiếp
Bit 0 (OF0): là chân cờ ở đầu ra nối tiếp Khi SSI đang ở kiểu đồng bộ và nhận
chân SC0 là một đầu ra thì số liệu hiện tại ở trong bit OF0 sẽ được viết tới SC0 tại chỗ bắt đầu của khung số liệu
Bit 1 (OF1): là cờ đầu ra nối tiếp 1 Khi SSI đang ở kiểu đồng bộ và nhận chân
SC1 là một đầu ra thì số liệu hiện tại ở trong bit OF1 sẽ được viết tới SC1 tại chỗ bắt đầu của khung số liệu
Bit 2 (SCD0): đây là bit điều khển hướng nối tiếp cho SC0.
Bit 5 (SCKD): đây là bit điều khiển hướng của xung nhịp.
Bit 6 (SHFD): đây là bit điều khiển hướng dịch chuyển trong thanh ghi dịch.
0: MSB trước
1: LSB trước
Bit 7 và 8 (FSL0 và FSL1): được dùng để lựa chọn các kiểu đồng bộ hoá
khung số liệu được phát đi hay được nhận về
FSL1 FSL0 Độ dài xung nhịp đồng bộ hoá
0 0 Bằng độ dài của từ số liệu cho cả truyền và nhận
0 1 Bằng độ dài của một bit cho việc truyền và bằng độ dài của
một từ cho việc nhận
1 0 Bằng độ dài của một bit cho cả truyền và nhận
1 1 Bằng độ dài của một bit cho việc nhận và bằng độ dài của
một từ cho việc truyền
Bit 9 (SYN): đây là bit điều khiển các chức năng truyền và nhận của SSI để
làm cho chúng đồng bộ hay không đồng bộ với nhau
Bit 10 (GCK): đây là bit dùng để lựa chọn xung nhịp kiểu liên tục hay xung
nhịp chỉ có khi có số liệu được gửi vào trong thanh ghi dịch truyền
Bit 11 (MOD): được sử dụng để lựa chọn kiểu hoạt động của SSI.
0: Normal1: Network
Bit 12 (TE): bit cho phép truyền số liệu.
Trang 25Bit 13 (RE): bit cho phép việc nhận số liệu.
Bit 14 (TIE): bit cho phép ngắt khi truyền số liệu.
Bit 15 (RIE): bit cho phép ngắt khi nhận số liệu.
c Thanh ghi trạng thái của SSI (SSISR):
Đây là thanh ghi 8 bits chỉ đọc được dùng để thăm dò trạng thái và các cờ của DSP56002 ở chế độ SSI
Bit 0 (IF0): Đây là bit cờ đầu vào nối tiếp 0 Bit này chỉ có tác dụng khi SCD0 bị
xoá và SYN là 1
Bit 1 (IF1): Đây cũng là một bit cờ đầu vào nối tiếp 1 Nó có tác dụng khi SCD1 bị
xoá và YSN là 1
Bit 2 (TFS): Là một bit cờ báo việc đồng bộ hoá khung số liệu truyền đi.
Bit 3 (RFS): Là một bit cờ báo việc đồng bộ hoá khung số liệu nhận về.
Bit 4 (TUE): Bit này là bit cờ báo lỗi tràn dưới bộ truyền TUE =1 đồng nghĩa với
việc thanh ghi dịch truyền nối tiếp là rỗng
Bit 5 (RDE): Bit này là bit cờ báo lỗi tràn trên bộ nhận Bit này bằng 1 khi thanh
ghi dịch nhận đã đầy
Bit 6 (TDE): Bit này có tác dụng thông báo thanh ghi số liệu truyền của SSI là
trống rỗng Bit này dựng khi nội dung của thanh ghi số liệu truyền đã được truyền đi
Bit 7 (RFD): Bit này thông báo trạng thái đầy của thanh ghi số liệu nhận.
d Thanh ghi dịch nhận của chế độ SSI :
Đây là thanh ghi 24 bits, thanh ghi này nhận số liệu từ chân RxD Số liệu được dịch vào theo hướng các bits có trọng số lớn nhất trước nếu SHFD=0 và theo hướng các bits có trọng số nhỏ trước nếu bit SHFD=1 Độ dài khung số liệu phụ thuộc vào các bits điều khiển độ dài từ trong thanh ghi CRA
e Thanh ghi số liệu nhận của SSI (RX):
RX là một thanh ghi 24 bits chỉ đọc, nó nhận số liệu từ thanh ghi dịch nhận, DSP sẽ
bị ngắt bất cứ khi nào RD đầy nếu các ngắt tương ứng được cho phép
f Thanh ghi dịch truyền của SSI:
Thanh ghi dịch truyền của SSI là một thanh ghi 24 bits dùng để chứa số liệu đang được truyền đi Số liệu được dịch ra ngoài tới chân truyền số liệu nối tiếp Số liệu các bits được dịch ra ngoài có thể là 8, 12, 16 hoặc 24 bits Số liệu được dịch vào theo hướng các bits có trọng số lớn nhất trước nếu SHFD=0 và theo hướng các bits
có trọng số nhỏ trước nếu bit SHFD=1
g Thanh ghi số liệu truyền của SSI (TX):
TX là một thanh ghi 24 bits chỉ viết Khi cần truyền số liệu thì người lập trình viết
số liệu vào trong thanh ghi này sau đó số liệu tự động được nạp vào thanh ghi sịch truyền DSP bị ngắt bất cứ khi nào thanh ghi TX trống rỗng nếu như ngắt tương ứng được cho phép
Trang 26Chương 4: Bé Timer/Counter của DSP56002.
I Giới thiệu chung:
Bé Timer của DSP56002 có thể sử dụng xung nhịp bên trong hay bên ngoài và có thể ngắt bộ xử lý khi có một số lượng nhất định các sự kiện bên ngoài hay có thể gửi tín hiệu tới một thiết bị ngoài sau khi đếm các sự kiện bên trong
Bé Timer được nối với các thiết bị ngoài qua chân vào ra hai chiều TIO Khi TIO là một đầu vào thì chức năng đếm các sự kiện bên ngoài được thực hiện hoặc có thể là được dùng để đo độ rộng chu kỳ của các tín hiệu bên trong Khi TIO được sử dụng như một đầu ra thì nó có tác dụng đưa tín hiệu ra bên ngoài theo xung nhịp
Khi TIO không được sử dụng cho bé Timer/Counter thì nó được sử dụng như một chân vào ra trong chế độ GPIO
II Sơ đồ khối của bộ Timer/Counter:
Bé Timer/Counter của DSP56002 gồm một thanh ghi điều khiển trạng thái 24 bits
có thể đọc viết TDSR, mét thanh ghi đếm TCR 24 bits cũng có thể đọc viết, một bộ đếm 24 bits và một mạch logic được dùng cho việc phát sinh ngắt và lựa chọn xung nhịp
Cấu trúc của bộ Timer/Counter được mô tả như hình 9
III Các thanh ghi của bộ Timer/Counter:
1 Thanh ghi đếm của bộ Timer TCR:
Đây là một thanh ghi 24 bits chứa giá trị được nạp vào bộ đếm khi bé Timer cho phép hoạt động (TE=1) hoặc khi bộ đếm vừa giảm đến 0 và một sự kiện mới xuất hiện Nếu TCR được nạp với giá trị n, bộ đếm sẽ được nạp lại sau n+1 sự kiện, khi
bé Timer bị cấm hoạt động (TE=0) và chương trình viết lên TCR thì giá trị viết lên TCR vẫn được giữ ở đó nhưng không xuất hiện được nạp vào bộ đếm cho đến khi
bé Timer được phép hoạt động
Trang 27Hình 9: Sơ đồ khối của bộ Timer/Counter của DSP56002.
2 Thanh ghi điều khiển trạng thái TCSR của Timer :
Thanh ghi này dùng để điều khiển bộ Timer đồng thời ghi lại trạng thái của nó.Thanh ghi điều khiển trạng thái của Timer TCSR được mô tả như sau:
Bit 0 (TE): Đây là bit cho phép Timer hoạt động, khi cho phép Timer hoạt động thì
nó có giá trị là 1
Bit 1 (TIE): Bit này cho phép ngắt Timer Khi bit này là 1 thì các ngắt sẽ xuất hiện.
Trang 28Bit 2 (INV): Là bit biến đổi đảo cực tính của tín hiệu ở trên chân TIO
Bit 3 đến bit 5 (TC0 đến TC2): Đây là các bit điều khiển Timer Chúng điều khiển
việc lựa chọn xung nhịp, lựa chọn chức năng của chân TIO và lựa chọn các chế độ làm việc của Timer:
Bit 6 (GPIO): Đây là bit xác định chức năng vào ra cho chân TIO
Bit 7 (TS): Là bit thông báo trạng thái của Timer.
Bit 8 (DIR): Bit này xác định hướng của chân TIO khi chân này hoạt động trong
chế độ GPIO
Bit 9 (DI): Đây là bit cho biết giá trị chân TIO
Bit 10 (DO): Bit này được sử dụngcho việc đưa số liệu ra chân TIO nếu như chân
này hoạt động trong chế độ GPIO
Các bit còn lại của thanh ghi không được sử dụng trong chế độ này và dùng để dự trữ
Chương 5: Các khối xử lý chính của DSP56002 và các
MODULES nhí.
DSP56002 có 3 khối xử lý chính thực hiện độc lập với nhau là : Khối số học và Logic ALU, khối địa chỉ AGU và đơn vị xử lý chương trình PCU
Sau đây ta sẽ đi xét từng khối:
I Khối số học và Logic ALU:
Đơn vị AGU thực hiện tất cả các thao tác Logic và số học trên các toán hạng số liệu, nó bao gồm 4 thanh ghi 24 bits là : X0, X1; Y0 ,Y1 và hai thanh ghi tích luỹ là
A và B Một bộ dịch, hai mạch dịch giới hạn và đặc biệt là bộ nhân có tích luỹ MAC
Sơ đồ cấu trúc của khối số học và Logic được mô tả như sau (hình 10):
Các mạch dịch giới hạn cho phép xử lý số liệu đọc từ các thanh ghi tích luỹ A và B
ra tới BUS số liệu XDB hoặc YDB Đơn vị Logic và bộ nhân có tích luỹ MAC điều khiển việc xử lý số học và thực hiện tất cả các tính toán trên các toán hạng số liệu tring DSP Các lệnh số học của đơn vị nhân tích luỹ MAC có thể nhân lên tới 3 toán hạng đầu vào và đưa ra moọt kết quả 56 bits Hoạt động của đơn vị MAC xuất hiện độc lập và song song với các hoạt động của các BUS số liệu XDB, YDB và các thanh ghi của nó có thể đệm cho các đầu vào và đầu ra của ALU Thao tác nhân và tích luỹ được thực hiện trong cùng một chu kỳ lệnh Nếu chỉ dùng lệnh nhân không
Trang 29tích luỹ MPY thì đơn vị MAC sẽ xoá thanh ghi tích luỹ và sau đó cộng thanh ghi tích luỹ đó với kết quả của phép nhân mà nó thực hiện Cấu trúc của đơn vị MAC như hình 11.
Hình 10: Cấu trúc bộ ALU của DSP56002
Trang 30Hình 11: Cấu trúc đơn vị MAC của DSP56002.
II Khối địa chỉ AGU:
Đơn vị địa chỉ AGU sử dụng phép tính số học với các số nguyên để thực hiện tính toán địa chỉ cần thiết cho việc địa chỉ hoá các toán hạng số liệu trong bộ nhớ Nó sử dụng các thanh ghi để sinh ra các địa chỉ
Đơn vị địa chỉ AGU được chia làm 2 nửa riêng biệt, mỗi nửa có một đơn vị Logic
số học ALU và các bộ thanh ghi: Thanh ghi địa chỉ Rn, thanh ghi offset Nn và các thanh ghi kiểu hoạt động Mn
Hai đơn vị số học có thể sinh ra hai địa chỉ 16 bits trong mỗi chu kỳ lệnh để đưa ra hai trong ba BUS địa chỉ XAB, YAB hoặc PAB Hai khối ALU độc lập làm việc với hai bộ nhớ số liệu để cung cấp hai toán hạng trong mét chu kỳ lệnh Mỗi toán hạng có thể được địa chỉ hoá bởi một bộ thanh ghi
Trang 31Cấu trúc của khối địa chỉ được mô tả như hình 12.
Hình 12 : Sơ đồ khối của khối địa chỉ AGU của DSP56002
III Đơn vị điều khiển chương trình PCU:
Đơn vị điều khiển chương trình PCU thực hiện việc phát sinh ra các địa chỉ chương trình , tìm kiếm lệnh, giải mã lệnh, điều khiển lặp và xử lý các ngắt PCU bao gồm
bộ điều khiển giải mã chương trình PDC, bộ phát sinh địa chỉ chương trình PAG và
bộ điều khiển ngắt chương trình PIC
Bộ điều khiển mã chương trình PDC 24 bits thực hiện giải mã các lệnh, đồng thời giữ lại một bản sao của lệnh phục vụ cho lệnh nhảy JMP và lệnh lặp REP
Bộ phát sinh địa chỉ chương trình PAG chứa bộ đếm chương trình PC, thanh ghi địa chỉ lặp LA, bộ đếm lặp lại LC, con trá Stack SP, thanh ghi kiểu hoạt động OMR và thanh ghi trạng thái SR
Khi thực hiện các vòng lặp , thanh ghi LC nạp số lần thực hiện vòng lặp, thanh ghi
LA nạp địa chỉ lệnh cuối cùng và kích hoạt cờ vòng lặp trong thanh ghi SR Khi thực hiện các vòng lặp lồng vào nhau thì trước khi thực hiện lệnh các giá trị của thanh ghi LA, LC , SR và địa chỉ của lệnh đầu tiên trong vòng lặp được gửi vào Stack Trong khi cờ vòng lặp ở SR được kích hoạt, một mạch kiểm tra vòng lặp trong PDC sẽ so sánh giá trị trong PC với giá trị trong LA để tìm kiếm lệnh cuối cùng sau đó kiểm tra giá trị trong thanh ghi LC Nếu giá trị của LC bằng 1 thì LC,
Trang 32LA và các cờ vòng lặp trong thanh ghi SR được nạp lại với giá trị trong Stack Nếu giá trị LC khác 1 thì nó sẽ giảm đi 1 và SS được nạp vào PC địa chỉ của lệnh đầu tiên trong vòng lặp.
Bộ điều khiển ngắt chương trình PIC nhận tất cả các yêu cầu ngắt, phân xử chúng
và đưa ra địa chỉ vector ngắt Các ngắt được phân chia ra thành 4 mức ưu tiên khác nhau từ 0 đến 3 Mức 0,1,2 tương ứng với các ngắt có thể chắn được, mức 3 tương ứng với các ngắt không thể che được
Ta có cấu trúc đơn vị điều khiển chương trình PCU như sau:
Hình 13: Sơ đồ khối đơn vị điều khiển chương trình
IV Các MODULES nhí:
Bộ nhớ của DSP56002 có thể chia theo nhiều cách để tạo ra các hoạt động song song tốc độ cao và để mở rộng bộ nhớ ra bên ngoài Bộ nhớ chương trình và bộ nhớ
số liệu là riêng biệt Bộ nhớ số liệ lại được chia thành hai không gian nhớ khác nhau
là X và Y Cả hai bộ nhớ chương trình và số liệu đều có thể mở rộng thêm Trên chip còn tích hợp hai bộ nhớ ROM số liệu và bộ nhớ ROM chương trình điều khiển các thao tác nạp chương trình vào bộ nhớ RAM
1 Bộ nhớ chương trình P-memory:
DSP56002 có 512 ô nhớ RAM chương trình Các địa chỉ được nhận từ bộ điều khiển Logic chương trình qua BUS PAB Các vector ngắt được đặt tại 128 ô nhớ của bộ nhớ chương trình từ $0000 đến $007F Bộ nhớ có thể mở rộng lên tới 64K
2 Bộ nhớ số liệu X-memory:
Bộ nhớ số liệu X-memory bao gồm một bộ nhớ RAM chiếm giữ 256 ô nhớ địa chỉ thấp (0 đến 255), một bộ nhớ ROM chiếm giữ các ô nhớ có địa chỉ cao (256 đến 511) Ngoài ra còn có các thanh ghi ngoại vi nằm trên chip chiếm giữ vùng nhớ cao
Trang 33nhất của bộ nhớ memory ($FFC0 đến $FFFF), 16 bits địa chỉ cho bộ nhớ memory được nhận từ BUS XAB và 24 bits số liệu được truyền trên BUS XDB tới
X-bộ Logic số học ALU Ta cũng có thể mở rộng X-bộ nhớ X-memory lên đến 64K
3 Bộ nhí số liệu Y-memory:
Bộ nhớ số liệu Y-memory bao gồm một bộ nhớ RAM chiếm giữ 256 ô nhớ địa chỉ thấp (0 đến 255), một bộ nhớ ROM chiếm giữ các ô nhớ có địa chỉ cao (256 đến 511) 16 bits địa chỉ cho bộ nhớ Y-memory được nhận từ BUS YAB và 24 bits số liệu được truyền trên BUS YDB tới bộ Logic số học ALU Ta cũng có thể mở rộng
bộ nhớ X-memory lên đến 64K
4 Thanh ghi cách thức hoạt động OMR:
Đây là thanh ghi 24 bits, tuy nhiên ta chỉ dùng 6 bits để điều khiển, các bits còn lại không dùng đến Cấu trúc của thanh ghi này được mô tả như sau:
Hình 20: Thanh ghi cách thức hoạt động OMR
Chức năng các bits của thanh ghi này được mô tả như sau:
1 1 ROM –Y và RAM –Y không được sử dụng và dùng cho bộ nhớ
ngoài X-ROM được sử dụng
0 0 0 Chế độ đơn chip, RAM chương trình được sử dụng Vector
Reset đặt tại $0000
0 1 0 Kiểu mở rộng bình thường RAM chương trình được sử dụng
Vector Reset đặt tại $0000
0 1 1 Kiểu phát triển.RAM chương trình được sử dụng Vector Reset
Trang 34đặt tại $0000
1 0 1 Nạp chương trình từ PORT B sau đó trở về mode 0
Chương 6 : Card DSP56002EVM và phần mềm EVM.
Card DSP56002EVM là một hệ thống xử lý tín hiệu số hoàn chỉnh, nó bao gồm bộ
xử lý tín hiệu số DSP56002, một bộ nhớ RAM mở rộng, một bộ mã hoá và giải mã tín hiệu CODEC CS4215, CODEC có chứa 2 bộ biến đổi ADC và DAC Ngoài ra trên Card DSP56002EVM còn có bộ nhớ EPROM Bộ xử lý tín hiệu số DSP56002 được nạp chương trình từ bộ EPROM hoặc từ máy tính Việc ghép nối máy tính với Card DSP56002EVM thông qua cổng RS232 của máy tính và cổng truyền tin nối tiếp của DSP56002 Tín hiệu tương tự được đưa qua bộ biến đổi ADC để trở thành tín hiệu số, sau đó đưa vào DSP56002 và sau khi xử lý song, tín hiệu này lại được đưa ra dưới dạng tương tự thông qua bé DAC của CODEC CS4215
Cấu trúc của Card DSP56002EVM được mô tả như hình 14
Vi mạch mã hoá và giải mã CS4215 là một chip đơn CMOS, có hai kênh biến đổi ADC 16 bits, hai kênh biến đổi DAC 16 bits CS4215 có các đặc trưng sau đây:
• Tần số lấy mẫu từ 4KHz đến 50KHz
• Mã hoá tín hiệu 16 bits hoặc 8 bits
• Có hệ số khuyếch đại cho các tín hiệu vào tương tự có thể lập trình được
• Có các bộ tạo xung nhịp trên chip
• Nguồn cung cấp 5V
• Các đầu vào mức Microphone
• Các đầu vào Headphone, Speaker
• Có các bộ lọc trên chip
• Có giao diện nối tiếp để ghép nối rễ ràng với DSP hoặc các bộ vi xử lý , vi điều khiển khác
Trang 35Phần mềm EVM là một phần mềm giúp người lập trình vừa chạy vừa soát lỗi khi sử dụng ngôn ngữ Assembler của DSP56002 Muốn chạy mô phỏng trên phần mềm này thì người lập trình phải nạp chương trình Assembler đã viết lên Card DSP56002EVM để chạy
Cửa sổ của chương trình khi chạy như sau:
Cửa sổ này được chia ra làm nhiếu cửa sổ nhỏ gồm cửa sổ lênh (COMMAND), cửa
sổ các thanh ghi (REGISTERS), cửa sổ UNASSEMBLE và cửa sổ số liệu (DATA)