1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu dsp starter kit tms320c6713

76 392 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 76
Dung lượng 1,69 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tìm hiểu dsp starter kit tms320c6713

Trang 1

CHƯƠNG I : TӘNG QUAN Vӄ KIT TMS320C6713

I. GIӞI THIӊU CHUNG Vӄ KIT TMS320C6713

1. Tәng quan

DSP Starter Kit TMS320C6713 là kit phát triӇn cho phép ngưӡi sӱ dөng thiӃt kӃ

và thӱ nghiӋm các ӭng dөng cho chip xӱ lý tín hiӋu sӕ TMS320C6713 cӫa Texas Instruments DSK này có thӇ đưӧc sӱ dөng như mӝt thiӃt kӃ tham khҧo cho giao tiӃp giӳa DSP vӟi các thành phҫn phә biӃn như SDRAM, FLASH và các bӝ mã hóa/giҧi mã codec Trên Kit có bӝ JTAG emulator cho phép gӥ rӕi chương trình tӯ Code Composer Studio thông qua cәng USB cӫa máy tính

DSK có chӭa các thành phҫn cҫn thiӃt đӇ làm viӋc vӟi DSP cӫa TI DSK cũng có thӇ sӱ dөng vӟi phiên bҧn đҫy đӫ cӫa Code Composer Studio và mӝt bӝ JTAG emulator ngoài

Trang 3

Hình 1.3 Sơ đ͛ kh͙i DSK C6713

C6713 trên DSK có 264kB bӝ nhӟ trong, bҳt đҫu tҥi 0x00000000 và 16MB bӝ nhӟ SDRAM ngoài, đưӧc ánh xҥ qua CE0 bҳt đҫu tҥi 0x80000000 DSK cũng bao gӗm 512kB bӝ nhӟ FLash (256kB sҹn sàng cho ngưӡi sӱ dөng), đưӧc ánh xҥ qua CE1 bҳt đҫu tҥi 0x90000000 Mӝt sӕ đһc trưng:

 DSP TMS320C6713 hoҥt đӝng ӣ tҫn sӕ 225MHz

 Mӝt bӝ codec stereo AIC23

 16 Mbytes DRAM đӗng bӝ

 512 Kbytes bӝ nhӟ Flash (cҩu hình mһc đӏnh 256 Kbytes)

 4 LED và DIP switches

 Cҩu hình board bҵng lӋnh thông qua các thanh ghi cӫa CPLD

DSP giao tiӃp vӟi các tín hiӋu audio tương tӵ thông qua bӝ codec AIC23 và bӕn jack audio 3.5mm (microphone input, line input, line output, headphone output) Tҥi mӝt thӡi điӇm, bӝ codec có thӇ lӵa chӑn microphone hoһc line input là đҫu vào Lӕi ra tương

Trang 4

thӇ điӅu chӍnh) McBSP0 đưӧc sӱ dөng đӇ gӱi các lӋnh tӟi bӝ giao tiӃp điӅu khiӇn codec trong khi McBSP1 đưӧc sӱ dөng cho dӳ liӋu audio sӕ

CPLD (Programmable logic device) đưӧc sӱ dөng kӃt nӕi logic các thành phҫn trên kit CPLD giao tiӃp ngưӡi dùng thông qua viӋc cho phép cҩu hình kit bҵng cách đӑc và ghi tӟi các thanh ghi cӫa nó

DSK có 4 LED và 4 DIP switch cung cҩp cho ngưӡi sӱ dөng các tương tác, phҧn hӗi đơn giҧn

Code Composer giao tiӃp vӟi DSK thông qua mӝt bӝ JTAG emulator nhúng sҹn sӱ dөng cәng USB DSK cũng có thӇ đưӧc sӱ dөng vӟi mӝt bӝ emulator ngoài qua kӃt nӕi JTAG ngoài

1.2 Hoҥt đӝng cơ bҧn

DSK đưӧc thiӃt kӃ đӇ làm viӋc vӟi phҫn mӅm phát triӇn Code Composer Studio (CCStudio) Code Composer giao tiӃp vӟi Kit thông qua bӝ JTAG emulator on-board Sau khi cài đһt phҫn mӅm CCStudio, làm theo các bưӟc sau đӇ kӃt nӕi DSK vӟi máy tính

 KӃt nӕi DSK vӟi máy tính thông qua cable USB chuҭn

 Nӕi nguӗn vӟi DSK

 Khӣi đӝng CCStudio trên máy tính



1.3 Bҧn đӗ nhӟ

Hӑ C67xx có không gian đӏa chӍ lӟn Chương trình và dӳ liӋu có thӇ đһt ӣ vӏ trí bҩt

kǤ trong không gian nhӟ Các đӏa chӍ có đӝ rӝng 32 bit

Bҧn đӗ nhӟ chӍ ra không gian đӏa chӍ chung cӫa DSP 6713 bên trái và các mөc đích

sӱ dөng cө thӇ cӫa DSK ӣ bên phҧi Mһc đӏnh, bӝ nhӟ trong nҵm ӣ đӏa chӍ đҫu cӫa không gian đӏa chӍ Các phҫn cӫa bӝ nhӟ trong có thӇ cҩu hình lҥi bҵng phҫn mӅm EMIF có 4 vùng đӏa chӍ riêng rӁ đưӧc gӑi CE0-CE3 SDRAM chiӃm CE0 trong khi

bӝ nhӟ Flash và CPLD chia sҿ CE1 CE2 và CE3 dành cho các kӃt nӕi mӣ rӝng

Trang 5

Hình 1.4 B̫n đ͛ nhͣ và t͝ chͱc b͡ nhͣ cͯa DSK C6713

1.4 Switch thiӃt lұp cҩu hình

DSK có 4 switch cho phép ngưӡi sӱ dөng điӅu khiӇn trҥng thái hoҥt đӝng cӫa DSK khi nó bҳt thӵc hiӋn

Bҧng 1 Xác lұp các switch cҩu hình hoҥt đӝng cho DSK

Trang 6

Switch 1 điӅu khiӇn endianness cӫa DSP trong khi switch 2 và 3 cҩu hình chӃ đӝ khӣi đӝng đưӧc sӱ dөng khi DSP bҳt đҫu thӵc hiӋn Switch 4 điӅu khiӇn bӝ phân kênh on-chip lӵa chӑn tín hiӋu HPI và McASP mang tӟi connector mӣ rӝng HPI Mһc đӏnh, tҩt cҧ các swich ӣ trҥng thái off tương ӭng vӟi EMIF khӣi đӝng trong chӃ đӝ little endian và các tín hiӋu HPI đưa tӟi connector mӣ rӝng HPI

2. Các thành phҫn cӫa DSK

2.1. CPLD (Programmable Logic)

CPLD đưӧc sӱ dөng đӇ thӵc thi các chӭc năng cө thӇ cӫa DSK ViӋc thiӃt kӃ phҫn cӭng thưӡng sӱ dөng tұp hӧp các khӕi chӭc năng khác nhau và tұn dөng khҧ năng tích hӧp cao cӫa DSP, tránh sӱ dөng các thành phҫn logic bên ngoài CPLD thӵc thi các chӭc năng logic khác nhau đӇ loҥi bӓ các thiӃt bӏ thêm vào hӋ thӕng Ví dө, CPLD kӃt nӕi nhiӅu các tín hiӋu reset khác nhau đӃn tӯ các nút reset và theo dõi nguӗn và tҥo ra mӝt tín hiӋu reset chung

C6713 DSK sӱ dөng mӝt CPLD Altera EPM3128TC100-10 EPM3128TC100-10 hoҥt đӝng ӣ điӋn áp 3.3V, 100 chân dҥng đóng vӣ QFP, chӭa 128 macrocells, 80 chân vào/ra, thӡi gian trӉ 10 ns tӯ chân này đӃn chân kia ThiӃt bӏ dӵa trên EEPROM và có thӇ cҩu hình trong hӋ thӕng thông qua giao tiӃp JTAG File mã nguӗn cӫa CPLD đưӧc viӃt theo chuҭn công nghiӋp VHDL và đi kèm vӟi DSK

2.2. AIC23 Codec

DSK sӱ dөng mӝt bӝ codec stereo AIC23 cӫa Texas Instruments cho các tín hiӋu audio vào/ra Bӝ codec lҩy mүu các tín hiӋu tương tӵ trên microphone hoһc line input và chuyӇn đәi chúng thanh tín hiӋu sӕ đӇ DSP có thӇ xӱ lý đưӧc Khi DSP hoàn thành viӋc

xӱ lý, nó sӱ dөng bӝ codec đӇ chuyӇn các mүu thành tín hiӋu tương tӵ trên đưӡng line output và headphone đӇ ngưӡi sӱ dөng có thӇ nghe đưӧc ĐiӋn áp lӟn nhҩt cӫa tín hiӋu lӕi vào đưӧc xác đӏnh bӣi mҥch ADC trong codec, giá trӏ này là 6 Vpp vӟi codec trên Kit

Hình 1.5 H͏ th͙ng DSP vͣi tín hi͏u vào/ra tương t͹

Trang 7

Bӝ codec giao tiӃp vӟi DSP sӱ dөng hai kênh nӕi tiӃp, mӝt đӇ điӅu khiӇn các thanh ghi cҩu hình bên trong codec và mӝt đӇ gӱi và nhұn các mүu audio sӕ McBSP0 đưӧc sӱ dөng như kênh điӅu khiӇn mӝt hưӟng Nó đưӧc lұp trình đӇ gӱi tӯ điӅu khiӇn có đӝ rӝng

16 bit tӟi AIC23 dưӟi đӏnh dҥng SPI 7 bit cao cӫa tӯ điӅu khiӇn xác đӏnh thanh ghi đưӧc điӅu chӍnh và 9 biӃt thҩp chӭa giá trӏ thanh ghi Kênh điӅu khiӇn chӍ đưӧc sӱ dөng khi cҩu hình codec, nó ӣ trҥng thái nghӍ khi dӳ liӋu audio đang đưӧc truyӅn

Hình 1.6 Giao ti͇p cͯa Codec trên DSK

McBSP1 đưӧc sӱ dөng như kênh dӳ liӋu hai hưӟng Tҩt cҧ dӳ liӋu audio đi qua kӋnh này Rҩt nhiӅu đӏnh đҥng dӳ liӋu đưӧc hӛ trӧ dӵa trên sӵ thay đәi đӝ rӝng mүu, nguӗn tín hiӋu clock và đӏnh dҥng dӳ liӋu nӕi tiӃp Các ví dө DSK nói chung sӱ dөng đӝ rӝng mүu 16 bit vӟi codec ӣ chӃ đӝ chӫ, nó tҥo ra tín hiӋu đӗng bӝ khung ӣ tӕc đӝ lҩy mүu đúng mà không cҫn sӵ can thiӋp cӫa DSP

Codec có tҫn sӕ xung nhӏp hӋ thӕng 12MHz Bӝ chia bên trong codec tҥo ra các tҫn

sӕ lҩy mүu phә biӃn như 48KHz, 44.1KHz và 8KHz Tӕc đӝ lҩy mүu đưӧc đһt bӣi thanh ghi SAMPLERATE cӫa codec

AIC23 là bӝ code stereo audio, nó thӵc hiӋn tҩt cҧ các chӭc năng đòi hӓi cӫa ADC, DAC, bӝ lӑc thông thҩp, oversampling

Trang 8

Hình 1.7 Sơ đ͛ kh͙i TLV320AIC23 codec

2.3 SDRAM

DSK sӱ dөng 128 megabit bӝ (16 megabytes) nhӟ SDRAM giao tiӃp qua EMIF 32 bit SDRAM đưӧc đánh đӏa chӍ tҥi đӏa chӍ bҳt đҫu CE0 (có đӏa chӍ 0x8000 0000) Bӝ

Trang 9

điӅu khiӇn SDRAM đưӧc tích hӧp là mӝt phҫn cӫa EMIF và phҧi đưӧc cҩu hình bҵng phҫn mӅm đӇ hoҥt đӝng thích hӧp Xung nhӏp EMIF đưӧc tính tӯ xác lұp PLL và nên đưӧc cҩu hình bҵng phҫn mӅm ӣ tҫn sӕ 90MHz Con sӕ này dӵa trên trên mӝt xung nhӏp nӝi cӫa PLL là 450MHz đӇ thu đưӧc tҫn sӕ hoҥt đӝng 225MHz nhӡ bӝ chia 2 và 90MHz nhӡ bӝ chia 5

Khi sӱ dөng SDRAM, bӝ điӅu khiӇn phҧi đưӧc xác lұp đӇ làm tươi mӛi hàng cӫa mҧng nhӟ mӛi 15.6 micro giây đӇ duy trì dӳ liӋu Vӟi tҫn sӕ xung nhӏp 90Mhz cӫa EMIF, thӡi gian này tương ӭng vӟi 1400 chu kǤ bus

2.4 Bӝ nhӟ FLASH

Flash là loҥi bӝ nhӟ không mҩt nӝi dung khi mҩt nguӗn Khi đӑc nó giӕng như mӝt

bӝ nhӟ ROM Flash có thӇ đưӧc xóa theo các khӕi lӟn đưӧc đưӧc gӑi là các sector hoһc trang Mӝt khi mӝt khӕi đã đưӧc xóa mӛi tӯ có thӇ đưӧc lұp trình thông qua mӝt chuӛi lӋnh đһc biӋt Sau đó toàn bӝ khӕi phҧi đưӧc xóa lҥi lҫn nӳa đӇ thay đәi nӝi dung

DSK sӱ dөng 512Kbyte bӝ nhӟ Flash ngoài làm tùy chӑn khӣi đӝng Nó có đӏa chӍ bҳt đҫu cӫa CE1 (đӏa chӍ 0x9000 0000) Flash đưӧc nӕi tҥo ra bӝ nhӟ 256K 16 bit hӛ trӧ tùy chӑn khӣi đӝng 16-bit cӫa DSK Tuy nhiên, phҫn mӅm đi kèm vӟi DSK coi bӝ nhӟ Flash là bӝ nhӟ 8 bit (bӓ qua 8 bit cao) đӇ phù hӧp vӟi chӃ đӝ khӣi đӝng mһc đӏnh cӫa

6713 Trong cҩu hình này, chӍ có 256 Kbytes có thӇ sӱ dөng khi không thay đәi phҫn mӅm

2.5 Leds và switch

DSK có 4 led truy nhұp đưӧc bҵng phҫn mӅm (D7-D10) và DIP switch cung cҩp cho ngưӡi sӱ dөng cách vào/ra đơn giҧn Cҧ Leds và switch đưӧc truy nhұp thông qua thanh ghi USER_REG cӫa CPLD

II. CÁC VҨN Đӄ Vӄ NGҲT

1. Gӟi thiӋu vӅ ngҳt

Phҫn này mô tҧ các ngҳt CPU, bao gӗm reset và các ngҳt không che đưӧc (NMI) Các thanh ghi điӅu khiӇn CPU và chӭc năng cӫa nó trong điӅu khiӇn ngҳt đưӧc mô tҧ Quá trình xӱ lý ngҳt, phương pháp mà CPU sӱ dөng đӇ tӵ đӝng phát hiӋn sӵ xuҩt hiӋn cӫa các ngҳt và chuyӇn viӋc thӵc hiӋn cӫa chương trình tӟi chương trình phөc vө ngҳt

Trang 10

Thông thưӡng, các DSP làm viӋc trong môi trưӡng có chӭa nhiӅu các sӵ kiӋn ngoài bҩt đӗng bӝ Các sӵ kiӋn này đòi hӓi chip DSP phөc vө khi chúng xҧy ra Mӝt ngҳt là mӝt sӵ kiӋn thӵc hiӋn dӯng quá trình hiӋn tҥi trong CPU đӇ CPU có thӇ giҧi quyӃt nhiӋm vө cҫn thiӃt tương ӭng vӟi sӵ kiӋn Các nguӗn ngҳt này có thӇ là on chip hoһc off chip như các bӝ timers, bӝ chuyӇn đәi ADC hoһc các thiӃt bӏ ngoҥi vi khác

Mӝt ngҳt thӵc hiӋn cҩt giӳ trҥng thái hiӋn tҥi, hoàn thành nhiӋm vө cӫa chương trình phөc vө ngҳt, lҩy lҥi nӝi dung các thanh ghi và bӕi cҧnh cӫa quá trình tҥi thӡi điӇm

bӏ ngҳt và tiӃp tөc công viӋc tҥi vӏ trí bӏ gián đoҥn

Có tám thanh ghi điӅu khiӇn dӏch vө ngҳt Mӝt sӵ chuyӇn đәi tương đӕi cӫa mӝt chân ngҳt đһt trҥng thái chӡ ngҳt bên trong thanh ghi cӡ ngҳt (IFR) NӃu ngҳt tương ӭng đưӧc cho phép, CPU bҳt đҫu quá trình phөc vө ngҳt và chuyӇn hưӟng chương trình tӟi chương trình phөc vө ngҳt tương ӭng

2. Các loҥi ngҳt và tín hiӋu đưӧc sӱ dөng

Có ba loҥi ngҳt trong CPU TMS320C6000 bao gӗm:

Trang 11

 LӋnh đang thӵc hiӋn bӏ bӓ qua và tҩt cҧ các thanh ghi trҧ lҥi giá trӏ mһc đӏnh

 Gói lӋnh FP phөc vө ngҳt reset phҧi đһt ӣ vӏ trí có đӏa chӍ 0

 Reset không chӏu ҧnh hưӣng bӣi các lӋnh rӁ nhánh

2.2. Các ngҳt không che đưӧc

NMI là ngҳt có mӭc ưu tiên cao thӭ hai sau reset và thưӡng đưӧc sӱ dөng đӇ cҧnh báo CPU nhӳng vҩn đӅ nghiêm trӑng cӫa phҫn cӭng như lӛi vӅ nguӗn

ĐӇ ngҳt NMI xҧy ra, bit cho phép ngҳt không che đưӧc trong thanh ghi cho phép ngҳt phҧi đưӧc đһt bҵng 1 NӃu NMIE đưӧc đһt bҵng 1, chӍ có điӅu kiӋn duy nhҩt có thӇ ngăn cҧn NMI là khi NMI xҧy ra trong khe thӡi gian cӫa mӝt lӋnh rӁ nhánh

Trang 12

NMIE đưӧc xóa vӅ 0 khi reset đӇ tránh ngăn cҧn ngҳt reset NMIE đưӧc xóa tҥi thӡi điӇm xҧy ra mӝt ngҳt NMI đӇ ngăn mӝt ngҳt NMI khác xҧy ra trong quá trình mӝt ngҳt NMI đang thӵc hiӋn Không thӇ xóa NMIE bҵng phҫn mӅm, nhưng có thӇ đһt NMIE Trong khi NMIE bӏ xóa, các ngҳt che đưӧc INT4-INT15 bӏ cҩm

2.3. Các ngҳt che đưӧc (INT4-INT15)

Các CPU cӫa các DSP C6000 có 12 ngҳt có thӇ che đưӧc Các ngҳt này có mӭc ưu

tiên thҩp hơn so vӟi các ngҳt NMI và reset Các ngҳt này có th͋ đưͫc gán cho các thiӃt bӏ

ngoài, ngoҥi vi on-chip, điӅu khiӇn phҫn mӅm hoһc không sӱ dөng Giҧ thiӃt rҵng mӝt ngҳt che đưӧc không xҧy ra trong khe trӉ (delay slots) cӫa mӝt lӋnh rӁ nhánh, các điӅu kiӋn sau phҧi thӓa mãn đӇ xӱ lý mӝt ngҳt che đưӧc:

 Bit cho phép ngҳt chung GIE trong thanh ghi trҥng thái điӅu khiӇn CSR đưӧc đһt bҵng 1

 Bit NMIE trong thanh ghi cho phép ngҳt IER đһt bҵng 1

 Bit cho phép ngҳt tương ӭng trong thanh ghi IER đһt bҵng 1

 Ngҳt tương ӭng xҧy ra đһt bit tương ӭng trong thanh ghi cӡ ngҳt IFR lên 1 và không có cӡ ngҳt có mӭc ưu tiên cao hơn bҵng 1 trong thanh ghi IFR

Đӏa chӍ và nӝi dung cӫa IST đưӧc chӍ ra trong hình sau Bӣi vì mӛi FP chӭa tám lӋnh

32 bit, mӛi đӏa chӍ trong bҧng đưӧc tăng 32 byte (20h) tӯ đӏa chӍ liӅn kӅ

Trang 13

8 ng 3 8 ng đ͓a ch͑ các ng̷t

Bҧng vector ngҳt đưӧc sӱ dөng khi mӝt ngҳt bҳt đҫu Mӛi vӏ trí có đӝ dài 32 byte tương ӭng vӟi mӝt gói lӋnh FP Đӏa chӍ bên phía phҧi bҧng tương ӭng vӟi đӏa chӍ offset cӫa mӝt ngҳt cө thӇ Ví dө, FP cӫa ngҳt INT11 có đӏa chӍ là đӏa chӍ cơ bҧn cӝng vӟi đӏa chӍ offset 160h Do mӛi FP chӭa tám lӋnh 32 bit, mӛi đӏa chӍ offset trong bҧng tăng 20h

Gói lӋnh Reset phҧi ӣ đӏa chӍ không Tuy nhiên, các FP tương ͱng vͣi các ng̷t khác

có th͋ đ̿t l̩i đ͓a ch͑ Đӏa chӍ đһt lҥi có thӇ đưӧc xác đӏnh bҵng cách viӃt đӏa chӍ này vào

trưӡng đӏa chӍ cơ sӣ bҧng phөc vө ngҳt ISTB (Interrupt Service Table Base) cӫa thanh ghi ISTP Khi reset, ISTB bҵng không ĐӇ đһt lҥi bҧng vector, trưӡng ISTB đưӧc sӱ dөng

đӇ ghi đӏa chӍ cơ sӣ mӟi, đӏa chӍ đһt lҥi là ISTB cӝng vӟi offset Thanh ghi Con tr͗ b̫ng phͭc vͭ ng̷t ISTP (Interrupt Service Table Pointer)

Gói reset FP phҧi đưӧc đһt tҥi đӏa chӍ 0, nhưng phҫn còn lҥi cӫa IST có thӇ đưӧc đһt

ӣ vӏ trí bҩt kǤ trong bӝ nhӟ chương trình Vӏ trí cӫa IST đưӧc xác đӏnh bӣi trưӡng ISTB (Interrupt Service Table Base) trong thanh ghi con trӓ bҧng phөc vө ngҳt ISTP Trưӡng HPEINT xác đӏnh ngҳt cө thӇ và vӏ trí cӫa gói FP cө thӇ bên trong IST

Trang 14

Trưӡng ISTB đưӧc xóa vӅ không khi reset, do đó tài thӡi điӇm khӣi đҫu IST phҧi

nҵm tҥi đӏa chӍ 0 Sau khi reset, ta có thӇ đӏnh vӏ lҥi IST bҵng cách viӃt mӝt giá trӏ mӟi

vào ISTB NӃu đưӧc đӏnh vӏ lҥi, ISFP đҫu tiên (tương ӭng vӟi /RESET) sӁ không bao giӡ thӵc hiӋn qua xӱ lý ngҳt, bӣi vì reset xóa ISTB vӅ 0

Trưӡng HPEINT (Highest Priority Enable Interrupt) chӍ ra sӕ cӫa ngҳt (quan hӋ vӟi

vӏ trí bit trong thanh ghi cӡ ngҳt IFR) có mӭc ưu tiên cao nhҩt đưӧc phép bӣi bit tương

ӭng trong thanh ghi cho phép ngҳt IER Do đó, ISTP có thӇ đưӧc sӱ dөng đӇ rӁ nhánh tӟi ngҳt đưӧc phép có mӭc ưu tiên cao nhҩt NӃu không có ngҳt nào đang chӡ và đưӧc phép, HPEINT chӭa giá trӏ 0 Ngҳt tương ӭng không cҫn đưӧc phép bӣi NMIE (trӯ khi nó là

NMI) hoһc bӣi GIE0

4. Interrupt Service Fetch Packet (ISFP)

Mӝt ISFP là mӝt FP đưӧc sӱ dөng phөc vө mӝt ngҳt Hình sau chӍ ra mӝt ISFP chӭa mӝt chương trình phөc vө ngҳt nhӓ đӫ đӇ đһt vӯa bên trong mӝt FP ĐӇ trӣ vӅ chương

trình chính, FP chӭa mӝt lӋnh rӁ nhánh tӟi lӋnh con trӓ trӣ vӅ ngҳt (B IRP) Theo sau bӣi mӝt lӋnh NOP 5 cho phép đӏa chӍ đích đưӧc thӵc hiӋn trong pipeline

NӃu chương trình phөc vө ngҳt quá lӟn không chӭa đӫ đưӧc trong mӝt FP, mӝt l͏nh rͅ nhánh tͣi v͓ trí chͱa mã chương trình phͭc vͭ ng̷t là cҫn thiӃt Hình sau chӍ ra mӝt

chương trình phөc vө ngҳt cho ngҳt INT4, mӝt lӋnh rӁ nhánh tӟi vӏ trí nhӟ 1234h đưӧc sӱ dөng đӇ hoàn thành chương trình phөc vө ngҳt

Trang 15

hình 1.8 :l͏nh rͅ nhánh tͣi v͓ trí chͱa mã chương trình phͭc vͭ ng̷t

5. Các thanh ghi điӅu khiӇn ngҳt:

CSR (Control Status Register): chӭa bit cho phép ngҳt (GIE) và các bit điӅu

khiӇn/trҥng thái khác

Thanh ghi CSR chӭa các bit điӅu khiӇn và trҥng thái

Trang 16

IER (Interrupt Enable Register): cho phép/cҩm các ngҳt đӝc lұp

IFR (Interrupt Flag Register): hiӇn thӏ trҥng thái cӫa các ngҳt

Trang 17

ISR (Interrupt Set Register): đһt các ngҳt đӧi

- ICR (Interrupt Clear Register): xóa các ngҳt đang đӧi

- ISTP (Interrupt Service Table Pointer): con trӓ tӟi bҧng chương trình phөc vө ngҳt

- IRP (Interrupt Return Pointer): chӭa đӏa chӍ quay trӣ vӅ đưӧc sӱ dөng đӇ trӣ vӅ tӯ

ngҳt che đưӧc Đӏa chӍ này đưӧc thiӃt lұp qua lӋnh B IRP

- NRP (Nonmaskable Interrupt Return Pointer): Chӭa đӏa chӍ quay trӣ vӅ đưӧc sӱ dөng đӇ trӣ vӅ tӯ ngҳt không che đưӧc Sӵ trӣ vӅ này đưӧc thiӃt lұp qua lӋnh B NRP

Cho phép và c̭m ng̷t chung

Thanh ghi điӅu khiӇn trҥng thái CSR có chӭa hai trưӡng cho phép điӅu khiӇn các ngҳt: GIE và PGIE Cho phép ngҳt GIE cho phép hoһc cҩm tҩt cҧ các ngҳt che đưӧc:

- GIE=1 cho phép các ngҳt che đưӧc đưӧc xӱ lý

- GIE=0 cҩm các ngҳt không che đưӧc sao cho chúng không đưӧc xӱ lý

Bit 1 cӫa CSR là bit PGIE và giӳ giá trӏ trưӟc đó cӫa GIE khi ngҳt che đưӧc đưӧc xӱ

lý Trong quá trình xӱ lý ngҳt che đưӧc, giá trӏ cӫa bit GIE đưӧc sao chép vào bit PGIE,

và bit GIE đưӧc xóa Giá trӏ trưӟc đó cӫa PGIE bӏ mҩt Bit GIE đưӧc xóa trong khi thӵc

Trang 18

thiӃt bӏ đưӧc lưu lҥi Khi trӣ vӅ tӯ chương trình phөc vө ngҳt, bҵng lӋnh B IRP, nӝi dung

cӫa PGIE đưӧc sao chép ngưӧc lҥi bit GIE Bit PGIE không thay đәi giá trӏ

Mөc đích cӫa bit PGIE là ghi lҥi giá trӏ cӫa bit GIE tҥi thӡi điӇm quá trình xӱ lý ngҳt bҳt đҫu ĐiӅu này là cҫn thiӃt bӣi vì các ngҳt đưӧc phát hiӋn song song vӟi viӋc thӵc hiӋn lӋnh Thông thưӡng, bit GIE bҵng 1 khi mӝt ngҳt xҧy ra Tuy nhiên, nӃu mӝt ngҳt đưӧc phát hiӋn song song vӟi mӝt lӋnh MVC thӵc hiӋn xóa bit GIE, bit GIE có thӇ bӏ xóa bӣi lӋnh MVC trưӟc khi quá trình xӱ lý ngҳt bҳt đҫu Bӣi vì bit PGIE ghi lҥi trҥng thái cӫa bit GIE sau khi tҩt cҧ các lӋnh đã đưӧc thӵc hiӋn hoàn tҩt trưӟc khi chương trình phөc vө ngҳt bҳt đҫu, bit PGIE ghi lҥi thӵc tӃ rҵng bit GIE đưӧc xóa khi ngҳt xҧy ra

ĐiӅu khiӇn ngҳt đӝc lұp

ViӋc phөc vө các ngҳt hiӋu quҧ đòi hӓi điӅu khiӇn đӝc lұp tҩt cҧ ba loҥi ngҳt: reset, ngҳt không che đưӧc và ngҳt che đưӧc Cho phép và cҩm các ngҳt đӝc lұp đưӧc thӵc hiӋn qua thanh ghi cho phép ngҳt IER Trҥng thái chӡ cӫa các ngҳt đưӧc lưu trong thanh ghi

cӡ ngҳt IFR Xӱ lý các ngҳt thӫ công có thӇ đưӧc thiӃt lұp thông qua viӋc sӱ dөng thanh ghi đһt ngҳt ISR và thanh ghi xóa ngҳt ICR Các con trӓ trӣ vӅ tӯ ngҳt lҩy lҥi trҥng thái sau khi phөc vө các ngҳt che đưӧc và không che đưӧc

Cho phép và c̭m các ng̷t

Ta có thӇ cho phép và cҩm các ngҳt đӝc lұp bҵng cách đһt và xóa các bit trong thanh ghi IER tương ӭng vӟi các ngҳt đӝc lұp Mӝt ngҳt có thӇ đưӧc xӱ lý chӍ khi bit cho phép ngҳt tương ӭng trong thanh ghi IER đưӧc đһt Bit 0, tương ӭng vӟi reset, không ghi

Cho phép và c̭m ng̷t chung Thanh ghi điӅu khiӇn trҥng thái CSR có chӭa hai

trưӡng cho phép điӅu khiӇn các ngҳt: GIE và PGIE Cho phép ngҳt GIE cho phép hoһc cҩm tҩt cҧ các ngҳt che đưӧc:

- GIE=1 cho phép các ngҳt che đưӧc đưӧc xӱ lý

- GIE=0 cҩm các ngҳt không che đưӧc sao cho chúng không đưӧc xӱ lý

Bit 1 cӫa CSR là bit PGIE và giӳ giá trӏ trưӟc đó cӫa GIE khi ngҳt che đưӧc đưӧc xӱ

lý Trong quá trình xӱ lý ngҳt che đưӧc, giá trӏ cӫa bit GIE đưӧc sao chép vào bit PGIE,

và bit GIE đưӧc xóa Giá trӏ trưӟc đó cӫa PGIE bӏ mҩt Bit GIE đưӧc xóa trong khi thӵc hiӋn mӝt ngҳt che đưӧc đӇ ngăn chһn ngҳt che đưӧc khác xҧy ra trưӟc khi trҥng thái cӫa

thiӃt bӏ đưӧc lưu lҥi Khi trӣ vӅ tӯ chương trình phөc vө ngҳt, bҵng lӋnh B IRP, nӝi dung

cӫa PGIE đưӧc sao chép ngưӧc lҥi bit GIE Bit PGIE không thay đәi giá trӏ Mөc đích cӫa bit PGIE là ghi lҥi giá trӏ cӫa bit GIE tҥi thӡi điӇm quá trình xӱ lý ngҳt bҳt đҫu ĐiӅu này là cҫn thiӃt bӣi vì các ngҳt đưӧc phát hiӋn song song vӟi viӋc thӵc hiӋn lӋnh Thông thưӡng, bit GIE bҵng 1 khi mӝt ngҳt xҧy ra Tuy nhiên, nӃu mӝt ngҳt đưӧc phát hiӋn song song vӟi mӝt lӋnh MVC thӵc hiӋn xóa bit GIE, bit GIE có thӇ bӏ xóa bӣi lӋnh MVC trưӟc khi quá trình xӱ lý ngҳt bҳt đҫu Bӣi vì bit PGIE ghi lҥi trҥng thái cӫa bit GIE sau khi tҩt

cҧ các lӋnh đã đưӧc thӵc hiӋn hoàn tҩt trưӟc khi chương trình phөc vө ngҳt bҳt đҫu, bit PGIE ghi lҥi thӵc tӃ rҵng bit GIE đưӧc xóa khi ngҳt xҧy ra

ĐiӅu khiӇn ngҳt đӝc lұp

Trang 19

ViӋc phөc vө các ngҳt hiӋu quҧ đòi hӓi điӅu khiӇn đӝc lұp tҩt cҧ ba loҥi ngҳt: reset, ngҳt không che đưӧc và ngҳt che đưӧc Cho phép và cҩm các ngҳt đӝc lұp đưӧc thӵc hiӋn qua thanh ghi cho phép ngҳt IER Trҥng thái chӡ cӫa các ngҳt đưӧc lưu trong thanh ghi

cӡ ngҳt IFR Xӱ lý các ngҳt thӫ công có thӇ đưӧc thiӃt lұp thông qua viӋc sӱ dөng thanh ghi đһt ngҳt ISR và thanh ghi xóa ngҳt ICR Các con trӓ trӣ vӅ tӯ ngҳt lҩy lҥi trҥng thái sau khi phөc vө các ngҳt che đưӧc và không che đưӧc

Cho phép và c̭m các ng̷t

Ta có thӇ cho phép và cҩm các ngҳt đӝc lұp bҵng cách đһt và xóa các bit trong thanh ghi IER tương ӭng vӟi các ngҳt đӝc lұp Mӝt ngҳt có thӇ đưӧc xӱ lý chӍ khi bit cho phép ngҳt tương ӭng trong thanh ghi IER đưӧc đһt Bit 0, tương ӭng vӟi reset, không ghiđưӧc

và thưӡng đưӧc đӑc là 1, do đó ngҳt reset là luôn đưӧc phép Ta không thӇ cҩm ngҳt reset Các bit IE4-IE15 có thӇ viӃt bҵng 1 hoһc 0, cho phép hoһc cҩm ngҳt tương ӭng Khi NMIE=0, tҩt cҧ các ngҳt (trӯ ngҳt reset) bӏ cҩm Bit NMIE đưӧc xóa khi reset đӇ ngăn chһn bҩt kǤ quá trình xӱ lý ngҳt nào cho đӃn khi ta cho phép NMI Sau khi reset, ta phҧi đһt bit NMIE đӇ cho phép NMI và cho phép INT4-INT15 đưӧc phép bҵng cách đһt bit GIE trong thanh ghi CSR và bit tương ӭng trong IER Không thӇ xóa thӫ công bit NMIE; bit NMIE không ҧnh hưӣng khi viӃt giá trӏ 0 vào nó Bit NMIE đưӧc xóa khi xҧy

ra mӝt NMI NӃu bӏ xóa, bit NMIE chӍ đưӧc đһt khi hoàn tҩt lӋnh B NRP hoһc bҵng cách

viӃt giá trӏ 1 vào nó

Tr̩ng thái cͯa các ng̷t

Thanh ghi cӡ ngҳt IFR chӭa trҥng thái cӫa INT4-INT15 và NMI Mӛi bit tương ӭng cӫa ngҳt trong IFR đưӧc đһt bҵng 1 khi ngҳt xҧy ra; trái lҥi, các bit tương ӭng có giá trӏ 0 NӃu ta muӕn kiӇm tra trҥng thái cӫa các ngҳt, sӱ dөng lӋnh MVC đӇ đӑc IFR

Đ̿t và xóa các ng̷t

Thanh ghi đһt ngҳt ISR và thanh ghi xóa ngҳt ICR cho phép ta đһt hoһc xóa các ngҳt che đưӧc thӫ công trong thanh ghi cӡ ngҳt IFR ViӃt giá trӏ 1 tӟi IS4-IS15 trong thanh ghi ISR sӁ làm cӡ ngҳt tương ӭng trong thanh ghi cӡ ngҳt đưӧc đһt bҵng 1 Tương tӵ, viӋc ghi giá trӏ 1 vào mӝt bit trong thanh ghi ICR sӁ làm cho cӡ ngҳt tương ӭng trong thanh ghi IFR đưӧc xóa ViӋc viӃt giá trӏ 0 tӟi bit bҩt kǤ cӫa thanh ghi ISR hoһc ICR không có ҧnh hưӣng gì Ta không thӇ đһt hoһc xóa bit bҩt kǤ trong ISR hoһc ICR đӇ ҧnh hưӣng đӃn NMI hoһc reset

Trͧ v͉ tͳ chương trình phͭc vͭ ng̷t

Sau khi /RESET lên mӭc cao, các thanh ghi điӅu khiӇn đưӧc đһt vào trҥng thái đã biӃt

và chương trình bҳt đҫu thӵc hiӋn tҥi đӏa chӍ 0 Sau khi các chương trình phөc vө ngҳt che đưӧc và không che đưӧc thӵc hiӋn, lӋnh rӁ nhánh sӱ dөng thanh ghi con trӓ trӣ vӅ

tương ӭng sӁ đưa chương trình trӣ vӅ vӏ trí thӵc hiӋn trưӟc khi bӏ ngҳt Trͧ v͉ tͳ các ng̷t không che đưͫc Thanh ghi con trӓ trӣ vӅ tӯ ngҳt không che đưӧc NRP chӭa con trӓ trӣ

vӅ thӵc hiӋn hưӟng CPU tӟi vӏ trí thích hӧp đӇ tiӃp tөc thӵc hiӋn chương trình sau khi xӱ

lý ngҳt NMI LӋnh B NRP trong chương trình phөc vө ngҳt sӁ điӅu khiӇn trӣ vӅ vӏ trí bӏ

gián đoҥn khi thӵc hiӋn chương trình phөc vө ngҳt

Trang 20

ghi con trӓ trӣ vӅ tӯ ngҳt IRP chӭa con trӓ trӣ vӅ hưӟng dүn CPU tӟi vӏ trí thích hӧp đӇ

tiӃp tөc thӵc hiӋn chương trình sau khi xӱ lý xong ngҳt che đưӧc LӋnh B IRP trong

chương trình phөc vө ngҳt thӵc hiӋn điӅu này

Phát hiӋn và xӱ lý ngҳt

Khi mӝt ngҳt xҧy ra, nó đһt cӡ ngҳt tương ӭng trong thanh ghi cӡ IFR Phө thuӝc vào điӅu kiӋn cө thӇ, ngҳt có thӇ đưӧc phөc vө hay không phөc vө

g̷t trong ng̷t

Nói chung, khi mӝt CPU đang xӱ lý mӝt chương trình phөc vө ngҳt, các ngҳt khác bӏ

cҩm Tuy nhiên, khi mӝt chương trình phөc vө ngҳt là đӇ xӱ lý các ngҳt che đưӧc INT15, mӝt ngҳt NMI có thӇ ngҳt mӝt quá trình phөc vө ngҳt che đưӧc Nói cách khác, mӝt ngҳt không che đưӧc (NMI) có thӇ ngҳt mӝt ngҳt che đưӧc nhưng mӝt ngҳt NMI hoһc ngҳt che đưӧc không thӇ ngҳt mӝt ngҳt NMI khác Có nhӳng thӡi điӇm ta muӕn cho phép mӝt ngҳt bӏ ngҳt bӣi mӝt ngҳt khác Mһc dù vi xӱ lý mһc đӏnh không cho phép mӝt chương trình phөc vө ngҳt bӏ ngҳt bӣi mӝt mӝt ngҳt (trӯ trưӡng hӧp nguӗn ngҳt là NMI),

INT4-ta có thӇ cho phép điӅu này bҵng phҫn mӅm ĐӇ cho phép ngҳt trong ngҳt, chương trình phөc vө ngҳt phҧi thӵc hiӋn thêm các bưӟc khӣi đҫu sau đӇ công viӋc thông thưӡng cӫa

nó lưu bҩt kǤ các thanh ghi nào (kӇ cҧ các thanh ghi điӅu khiӇn) mà nó chӍnh sӱa:

- Các nӝi dung cӫa IRP (hoһc NRP) phҧi đưӧc lưu lҥi

- Nӝi dung cӫa bit PGEI phҧi đưӧc lưu lҥi

- Bit GIE phҧi đưӧc đһt bҵng 1

Trưӟc khi trӣ lҥi tӯ chương trình phөc vө ngҳt, chương trình phҧi lҩy lҥi nӝi dung cӫa các thanh ghi đã đưӧc lưu theo trұt tӵ sau:

- Bit GIE phҧi đưӧc xóa vӅ 0

- Bit PGIE phҧi đưӧc lҩy lҥi giá trӏ đã lưu

- IRP (hoһc NRP) phҧi đưӧc lҩy lҥi giá trӏ đã lưu

Mһc dù các bưӟc 2, 3 phҧi đưӧc thӵc hiӋn theo trұt tӵ, quan trӑng là bit GIE phҧi đưӧc xóa trưӟc tiên ĐiӅu này có nghĩa là các bit GIE và PGIE phҧi đưӧc lҩy lҥi vӟi các lӋnh viӃt riêng rӁ tӟi CSR NӃu các bit này không đưӧc lҩy lҥi riêng rӁ, có thӇ bit PGIE bӏ ghi

đè như các ngҳt đang đưӧc cҩm

Trang 21

CHƯƠNG II : TRÌNH BIÊN DӎCH CCS v3.1(Code composer studio IDE (v3.1))

1. Giӟi thiӋu vӅ Code Composer Studio

Code Composer Studio là môi trưӡng phát triӇn tích hӧp (IDE) xây dӵng ӭng dөng cho các bӝ xӱ lý tín hiӋu sӕ DSP, các vi điӅu khiӇn và các vi xӱ lý cӫa hãng Texas

Instruments (TI)

Code Composer Studio bao gӗm bӝ các công cө sӱ dөng đӇ phát triӇn và gӥ rӕi các ӭng dөng Nó bao gӗm các bӝ biên dӏch cho mӛi hӑ cӫa TI, trình soҥn thҧo mã nguӗn, môi trưӡng xây dӵng dӵ án, gӥ rӕi, profiler, mô phӓng và nhiӅu đһc trưng khác CCS hӛ trӧ gӥ rӕi thӡi gian thӵc và mô phӓng dҥng đӗ hӑa CCStudio IDE cung cҩp mӝt giao diӋn ngưӡi dùng duy nhҩt đӇ thӵc hiӋn qua các giai đoҥn phát triӇn ӭng dөng Các công

cө và giao diӋn quen thuӝc cho phép ngưӡi sӱ dөng làm quen nhanh chóng và thêm các chӭc năng cho ӭng dөng nhӡ các công cө

Trang 22

Hình 2.1 Lưu đ͛ phát tri͋n ph̯n m͉m t̩o ra mã đ͙i tưͫng tͳ ngôn ngͷ C

Các bưӟc cơ bҧn thӵc hiӋn trên CCStudio bao gӗm biên dӏch C, hӧp dӏch, liên kӃt, gӥ rӕi,

mô phӓng và emulator Đҫu tiên CCStudio dӏch mã C thành mã dưӟi dҥng mã gӧi nhӟ hoһc dҥng đҥi sӕ cho DSP cө thӇ mà ta lӵa chӑn (đuôi asm) Bưӟc tiӃp theo là dӏch mã assembly thành mã đӕi tưӧng dưӟi dҥng nhӏ phân (hoһc ngôn ngӳ máy) cө thӇ đӕi vӟi DSP lӵa chӑn (đuôi obj) Trình liên kӃt thӵc hiӋn liên kӃt các file đӕi tưӧng đӇ tҥo tҥo thành mӝt file đӕi tưӧng duy nhҩt bҵng cách gán các đӏa chӍ tuyӋt đӕi trong bӝ nhӟ cho DSP cө thӇ (đuôi out) File thӵc hiӋn này có thӇ tҧi và chҥy trӵc tiӃp trên bӝ DSP

Sau khi đã tҥo ra file thӵc hiӋn, chúng ta phҧi kiӇm tra và gӥ rӕi bҵng cách sӱ dөng phҫn mӅm mô phӓng và emulator

2  Thành phҫn cӫa mӝt dӵ án

Mӝt dӵ án bao gӗm các file thư viӋn, các file cҩu hình và mã nguӗn

Trang 23

Các file cҩu hình bao gӗm bҧng vector ngҳt, xác lұp chӃ đӝ hoҥt đӝng cho kit, cho

phép hoһc cҩm ngҳt, vӏ trí các file và các phҫn trong bӝ nhӟ

2.1 Section

Section là đơn vӏ nhӓ nhҩt cӫa mӝt file đӕi tưӧng (object file) Mӝt section là mӝt khӕi mã hoһc dӳ liӋu chiӃm không gian nhӟ cҥnh các section khác trong bҧn đӗ bӝ nhӟ File đӕi tưӧng COFF luôn chӭa ba section mһc đӏnh:

- text : chӭa mã thӵc hiӋn

- data: chӭa dӳ liӋu đã đưӧc khӣi đҫu

- bss: không gian đӇ dành cho các biӃn chưa đưӧc khӣi đҫu

Ngoài ra, trình hӧp dӏch và liên kӃt cho phép ta tҥo ra, đһt tên và liên kӃt vӟi các section đã đưӧc đһt tên đã đưӧc sӱ dөng giӕng các section như các section data, text và bss

Có hai loҥi section cơ bҧn:

- Section đã đưӧc khӣi đҫu: chӭa mã hoһc dӳ liӋu Các section text và data là các

section đã đưӧc khӣi đҫu; các section đưӧc đһt tên vӟi chӍ dүn sect cũng đã đưӧc khӣi

đҫu

- Section chưa đưӧc khӣi đҫu: không gian nhӟ đӇ giành trong bҧn đӗ nhӟ Section bss

là chưa khӣi đҫu; các section đưӧc đһt tên vӟi chӍ dүn usect cũng chưa đưӧc khӣi đҫu

Mӝt vài chӍ dүn cho phép ta gán các phҫn khác nhau cӫa mã và dӳ liӋu vӟi các section tương ӭng Trình hӧp dӏch tҥo ra các section này trong quá trình xӱ lý tҥo file đӕi tưӧng Mӝt trong các chӭc năng cӫa trình liên kӃt là đһt các section vào trong bҧn đӗ nhӟ cӫa hӋ thӕng đích; chӭc năng này gӑi là allocation Bӣi vì phҫn lӟn các hӋ thӕng chӭa vài loҥi bӝ nhӟ khác nhau, sӱ dөng các section có thӇ giúp ta sӱ dөng bӝ nhӟ hiӋu quҧ hơn Tҩt cҧ các section đưӧc đһt đӝc lұp, ta có thӇ đһt bҩt kǤ section nào vào khӕi nhӟ bҩt kǤ

đã đưӧc xác đӏnh cӫa bӝ nhӟ đích Chҷng hҥn, ta có thӇ đӏnh nghĩa mӝt section chӭa chương trình con khӣi tҥo hӋ thӕng, sau đó đһt chương trình này vào phҫn bӝ nhӟ ROM cӫa bҧn đӗ nhӟ

Hình sau chӍ ra cách đһt tương ӭng các section vào trong bӝ nhӟ mà ta giҧ thiӃt

Trang 24

Hình 2.2 Phân chia b͡ nhͣ cho các section Cách thͱc trình biên d͓ch x͵ lý các section

Trình biên dӏch xác đӏnh các phҫn cӫa chương trình ngôn ngӳ assembly thuӝc vӅ mӝt section đã cho Trình biên dӏch có năm chӍ dүn hӛ trӧ chӭc năng này:

Chú ý: NӃu ta không sӱ dөng bҩt kǤ mӝt chӍ dүn section nào, trình hӧp dӏch sӁ đưa mӑi thӭ vào trong text section

Các section không đưͫc khͧi đ̯u

Các section không đưӧc khӣi đҫu dành không gian trong bӝ nhӟ TMS320C6000; chúng đưӧc đһt trong RAM Các section này không có nӝi dung thӵc sӵ trong file đӕi tưӧng; chúng đơn giҧn là giành bӝ nhӟ Mӝt chương trình có thӇ sӱ dөng không gian này trong thӡi gian chҥy đӇ tҥo ra và tích trӳ các biӃn

Các vùng dӳ liӋu không đưӧc khӣi đҫu đưӧc xây dӵng bӣi chӍ dүn bss và usect

- ChӍ dүn bss giành không gian trong section bss

- ChӍ dүn usect giành không gian không khӣi đҫu cho mӝt section đưӧc đһt tên cө thӇ

Trang 25

Mӛi khi ta thӵc hiӋn các chӍ dүn bss hoһc usect, trình biên dӏch giành thêm không

gian trong bss hoһc section đưӧc đһt tên Các ch͑ d̳n bss và usect không k͇t thúc

section hi͏n t̩i ho̿c b̷t đ̯u m͡t section mͣi; chúng giành mӝt lưӧng không gian nhӟ

xác đӏnh và sau đó trình biên dӏch tiӃp tөc dӏch đoҥn mã và dӳ liӋu vào trong section hiӋn tҥi

Trong đó:

Symbol: tương ӭng vӟi tên cӫa biӃn mà ta dành không gian Nó có thӇ đưӧc tham chiӃu bӣi bҩt kǤ section khác và cũng có thӇ đưӧc khai báo như mӝt global symbol (vӟi chӍ dүn global)

Size in bytes: là mӝt

Các chӍ dүn section đưӧc khӣi đҫu (.text, data và sect) chӍ dүn cho trình biên dӏch dӯng lҳp ghép mã hoһc dӳ liӋu vào section hiӋn tҥi và bҳt đҫu lҳp ghép chúng vòa mӝt section đưӧc chӍ ra Tuy nhiên, các chӍ dүn bss và usect không kӃt thúc section hiӋn thӡi

và bҳt đҫu mӝt section mӟi; chúng đơn giҧn thoát khӓi section hiӋn tҥi tҥm thӡi Các chӍ dүn bss và usect có thӇ xuҩt hiӋn bҩt cӭ ӣ đâu trong section đưӧc khӣi đҫu mà không làm ҧnh hưӣng đӃn nӝi dung cӫa nó

Trình biên dӏch xӱ lý các subsection không khӣi đҫu (đưӧc tҥo ra bӣi chӍ dүn usect) theo cùng cách giӕng như các section không đưӧc khӣi đҫŒ0

Subsection: Subsection là mӝt section nhӓ hơn bên trong mӝt section lӟn hơn Giӕng

như section, subsection có thӇ đưӧc quҧn lý bӣi trình liên kӃt Các subsection cho phép điӅu khiӇn sӱ dөng bӝ nhӟ chһt chӁ hơn Ta có thӇ tҥo ra các subsection bҵng cách sӱ dөng các chӍ dүn sect hoһc usect Cú pháp cho tên các subsection là:

Mӝt subsection đưӧc xác đӏnh bӣi tên section cơ sӣ theo sau bӣi dҩu hai chҩm và tên cӫa subsection Mӝt subsection có thӇ đưӧc đһt riêng rӁ hoһc nhóm vӟi các section khác

sӱ dөng cùng tên section cơ sӣ Ví dө, ta có thӇ tҥo ra mӝt subsection gӑi là _func bên trong section text:

Trang 26

Sӱ dөng chӍ dүn SECTION cӫa trình liên kӃt, ta có thӇ đһt text:_func riêng rӁ hoһc cùng vӟi các tҩt cҧ section text

Có thӇ tҥo ra hai loҥi subsection:

- Các subsection đưӧc khӣi đҫu đưӧc tҥo ra bҵng chӍ dүn sect

- Các subsection không đưӧc khӣi đҫu đưӧc tҥo ra bҵng chӍ dүn usect

Section Program Counters (SPC)

Trình hӧp dӏch duy trì mӝt bӝ đӃm chương trình riêng rӁ cho mӛi section Các bӝ đӃm chương trình này đưӧc gӑi là bӝ đӃm chương trình section SPC

Mӝt SPC biӇu diӉn đӏa chӍ hiӋn tҥi bên trong mӝt mӝt section cӫa mã hoһc dӳ liӋu Ban đҫu, trình hӧp dӏch đһt mӛi SPC bҵng 0 Khi trình hӧp dӏch điӅn mӝt section vӟi mã hoһc dӳ liӋu, nó tăng SPC tương ӭng NӃu ta tiӃp tөc lҥi quá trình hӧp dӏch vào mӝt section, trình hӧp dӏch nhӟ giá trӏ trưӟc đó cӫa SPC tương ӭng và tiӃp tөc tăng SPC tӯ giá trӏ này

Trình hӧp dӏch xӱ lý mӛi section như thӇ nó đưӧc bҳt đҫu tҥi đӏa chӍ 0; trình liên kӃt xҳp xӃp lҥi mӛi section theo vӏ trí cuӕi cùng cӫa nó trong bҧn đӗ nhӟ

Trang 27

Hình 2.3: b n đ͛ nhͣ cͯa section 2.2 Tҥo mӝt dӵ án vӟi CCStudio

Bưӟc 1: Tҥo mӝt dӵ án mӟi

Vào Project/New«

Trong cӱa sә Project Creation:

- Phҫn Project Name: nhұp tên dӵ án

Trang 28

- Project Type: chӑn Executable (.out)

- Target: chӑn chip DSP tương ӭng

Hình 2.4 Xác l̵p các thông tin v͉ d͹ án

Sau đó nhҩn Finish đӇ CCS tҥo ra dӵ án

Bưӟc 2: Thêm file vào dӵ án

NӃu các file mã nguӗn chưa có sҹn, đӇ tҥo ra mӝt file chương trình mӟi, vào

- csl6713.lib (trong thư mөc C:\CCStudio_v3.1\C6000\csl\lib)

- rts6700.lib (trong thư mөc C:\CCStudio_v3.1\C6000\cgtools\lib)

- dsk6713bsl.lib (trong thư mөc C:\CCStudio_v3.1\C6000\dsk6713\lib)

File ánh xҥ bӝ nhӟ cmd: c6713dsk.cmd

Sau khi đã thêm các file, cҫn tiӃn hành quét các file phө thuӝc

Trang 29

Bưӟc 3: ThiӃt lұp các tùy chӑn

ĐӇ thiӃt lұp các tùy chӑn cho dӵ án, vào Project\Build Options«Mӝt cӱa sә cho phép xác lұp các tùy chӑn sӁ hiӋn ra bao gӗm các tab General, Compiler, Linker, Linker Order Trong mӛi tab sӁ các loҥi tùy chӑn khác nhau

Tùy ch͕n trong Tab Compiler

Trong tab Compiler, chӑn Basic

- Target Version: C671x(-mv6710)

- Generate Debub Info: Full Symbolic Debug

- Opt Speed vs Size: Speed Most Critical

Trang 30

Hình 2.5: C͵a s͝ thi͇t l̵p các tùy ch͕n

Trong tab Compiler, chӑn Preprocessor

Include Search Path (-i): Xác đӏnh đưӡng dүn nơi trình biên dӏch có thӇ tìm thҩy các file

đi kèm (include files) Các đưӡng dүn khác nhau phҧi đưӧc tách biӋt bӣi dүu chҩm phҭy NӃu mӝt file đi kèm không tìm thҩy trong thư mөc hiӋn hành, trình biên dӏch sӁ tìm kiӃm trong đưӡng dүn xác đӏnh bӣi trưӡng này tӯ trái qua phҧi NӃu file đi kèm vүn không tìm thҩy, trình biên dӏch sӁ tìm kiӃm trong đưӡng dүn xác đӏnh bӣi biӃn môi trưӡng C_DIR

Define Symbol d): Predefines the specified constant(s) for the preprocessor

(-dname[=def]) Multiple constants must be separated by semi-colons This is equivalent to inserting

#define name def

at the top of each C source file If the optional definition is omitted, the constant is set to

1

Trang 31

Trong tab Compiler chӑn Advanced

Memory Model: Changes near and far assumptions on four levels by enabling the

-mln option: "Far Aggregate Data ml0)", "Far Calls ml1)", "Far Calls & Agg Data ml2)", or "Far Calls & Data (-ml3)" If no level is specified, all data and functions default

(-to near Selecting "Near Calls & Data" disables any previously selected memory model option

Trang 32

Tùy ch͕n trong Tab Linker

Heap Size (-heap): Specifies the heap size, in words, used for C programs Hex values

must be preceded by "0x"

Stack Size (-stack): Xác đӏnh kích thưӟc cӫa ngăn xӃp Giá trӏ hexa phҧi đưӧc bҳt đҫu

bҵng tiӅn tӕ "0x"

Library Search Path (-i): Xác đӏnh đưӡng dүn mà bӝ liên kӃt (linker) có thӇ tìm thҩy file

thư viӋn đӕi tưӧng NhiӅu đưӡng dүn phҧi đưӧc cách nhau bӣi dҩu chҩm phҭy NӃu mӝt thư viӋn không tìm thҩy trong đưӡng dүn hiӋn hành, bӝ liên kӃt sӁ tìm kiӃm đưӡng dүn đưӧc xác đӏnh trong trưӡng này NӃu ta thêm trӵc tiӃp các thư viӋn vào danh sách cӫa dӵ

án, ta không cҫn thiӃt phҧi cung cҩp đưӡng dүn đӃn các thư viӋn này

Include Libraries (-l): Xác đӏnh tên cӫa các thư viӋn đưӧc liên kӃt vào chương trình

NӃu các thư viӋn đưӧc thêm trӵc tiӃp vào danh sách cӫa dӵ án, ta không cҫn xác đӏnh trưӡng này

Trang 33

Bưӟc 4: Dӏch chương trình

2.3 Tҧi chương trình vào DSK

Trưӟc tiên cҫn kӃt nӕi giӳa phҫn mӅm CCStudio vӟi DSK ĐӇ làm đưӧc viӋc này, vào menu Debug/Connect

Sau khi chương trình đưӧc dӏch tҥo ra file out, đӇ tҧi chương trình vào DSK thӵc hiӋn các bưӟc sau:

- Vào File/Load Program«

- Chӑn file out vӯa tҥo ra trong thư mөc chӭa dӵ án (thưӡng nҵm trong thư mөc con debug)

Trang 34

CHƯƠ III: ĐI͈U CH͆ S͘





Trang 35

 

1.1 ĐiӅu chӃ và giҧi điӅu BPSK:

1.1.1 ĐiӅu chӃ BPSK:

(a) ĐiӅu chӃ BPSK (H 4.1) (b) Giҧi điӅu chӃ BPSK

Pha cӫa sóng mang hình sin đưӧc thay đәi lҫn lưӧt 1800 tuǤ theo mӭc luұn

lý 0 hoһc 1 cӫa chuӛi sӕ ta có thӇ coi biӇu thӭc sóng mang ӣ hai trưӡng hӧp này lҫn lưӧt là Acos0t và Acos(0t +1800) = -A cos0t

Trang 36

 BiӇu thӭc cӫa BPSK:

Mӝt cách tәng quát, ta có thӇ viӃt biӇn thӭc BPSK dưӟi dҥng sau:

VBPSK(t) = Ad(t)cos(0t + ) Trong đó A là biên đӝ, 0 là tҩn sӕ và là góc pha ban đҫu cӫa sóng mang; d(t) là luӗng bit nhӏ phân cҫn truyӅn, vӟi qui ưӟc d(t) = +1 nӃu bit

nhӏ phân có mӭc luұn lý 1 và d(t) = -1 nӃu bit có mӭc luұn lý 0

Thông thưӡng, đӇ đơn giҧn hoá biӇu thӭc và không làm mҩt tính tәng

quát, ta chӑn = 0 Ngoài ra, ta có thӇ xem mӕi liên quan giӳa biên đӝ A

cӫa sóng mang vӟi công suҩt phát cӫa sóng mang là PS là:

As 2PS

Do đó:

vBPSK(t) = 2PS d(t).cos(0t)

NӃu luӗng bit nhӏ phân d(t) có tôc đӝ bit là fb, hay có chu kǤ bit là Tb =

1/fb, như vұy năng lưӧng phát cӫa sóng mang cho mӛi bit chuyӇn tҧi là:

Trang 37

Eb = PS.Tb

 Giҧn đӗ vectơ cӫa BPSKg

ĐӇ có thӇ biӇu diӉn tín hiӋu vBPSK(t) thành giҧn đӗ vec tơ, trưӟc tiên ta xét vectơ đơn vӏ trӵc chuҭn cӫa hӋ thӕng

Mӝt cách tәng quát, mӝt tín hiӋu v(t) bҩt kǤ tuҫn hoàn chu ky T có thӇ đưӧc phân tích thành chuӛi Fourier dưӟi dҥng sau:

u1(t) = 2 cosn2 t

| (5.18a)

u2(t) = 2sinn2 t

| (5.18b)

làm các hàm cơ sӣ trӵc giao cӫa (5.17) thì do tính chuҭn hoá vӅ biên đӝ, ta có:

u1(t)*u1(t- ) = 1

u2(t)*u2(t- ) = 1

u1(t)* u2(t- ) = 0

Ta gӑi các hàm (5.18) là các hàm cơ sӣ trӵc chuҭn

Tín hiӋu vBPSK(t) (5.15) có thӇ đưӧc xem như hai tín hiӋu riêng biӋt:

S1(t) = 2PS.cos0t

S0(t) = - 2PS.cos0t

Theo (5.18), ta chӑn các hàm trӵc chuҭn là:

Trang 38

2 PT s b s2 E b

u1(t) = 2 cos 0 2 cos 2

n t

 Phә tҫn sӕ cӫa BPSKg

Tӯ (5.15), ta có thӇ xem như vBPSK(t) là tích sӕ cӫa tín hiӋu xung PS d t( )vӟi sóng mang cos0t Do đó nӃu gӑi G(f) là hàm mұt đӝ phә công suҩt

Ngày đăng: 19/05/2016, 15:39

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Các thành ph̯n đi kèm vͣi DSK TMS320C6713 - Tìm hiểu dsp starter kit tms320c6713
Hình 1.1 Các thành ph̯n đi kèm vͣi DSK TMS320C6713 (Trang 2)
Hình 1.3 Sơ đ͛ kh͙i DSK C6713 - Tìm hiểu dsp starter kit tms320c6713
Hình 1.3 Sơ đ͛ kh͙i DSK C6713 (Trang 3)
Hình 1.4 B̫n đ͛ nhͣ và t͝ chͱc b͡ nhͣ cͯa DSK C6713 - Tìm hiểu dsp starter kit tms320c6713
Hình 1.4 B̫n đ͛ nhͣ và t͝ chͱc b͡ nhͣ cͯa DSK C6713 (Trang 5)
Hình 1.5 H͏ th͙ng DSP vͣi tín hi͏u vào/ra tương t͹ - Tìm hiểu dsp starter kit tms320c6713
Hình 1.5 H͏ th͙ng DSP vͣi tín hi͏u vào/ra tương t͹ (Trang 6)
Hình 1.7 Sơ đ͛ kh͙i TLV320AIC23 codec - Tìm hiểu dsp starter kit tms320c6713
Hình 1.7 Sơ đ͛ kh͙i TLV320AIC23 codec (Trang 8)
Hình 1.8 :l͏nh rͅ nhánh tͣi v͓ trí chͱa mã chương trình phͭc vͭ ng̷t - Tìm hiểu dsp starter kit tms320c6713
Hình 1.8 l͏nh rͅ nhánh tͣi v͓ trí chͱa mã chương trình phͭc vͭ ng̷t (Trang 15)
Hình 2.2 Phân chia b͡ nhͣ cho các section - Tìm hiểu dsp starter kit tms320c6713
Hình 2.2 Phân chia b͡ nhͣ cho các section (Trang 24)
Hình 2.3: b n đ͛ nhͣ cͯa section  2.2.  Tҥo mӝt dӵ án vӟi CCStudio - Tìm hiểu dsp starter kit tms320c6713
Hình 2.3 b n đ͛ nhͣ cͯa section 2.2. Tҥo mӝt dӵ án vӟi CCStudio (Trang 27)
Hình 2.4 Xác l̵p các thông tin v͉ d͹ án - Tìm hiểu dsp starter kit tms320c6713
Hình 2.4 Xác l̵p các thông tin v͉ d͹ án (Trang 28)
Hình 2.5: C͵a s͝ thi͇t l̵p các tùy ch͕n - Tìm hiểu dsp starter kit tms320c6713
Hình 2.5 C͵a s͝ thi͇t l̵p các tùy ch͕n (Trang 30)
Hình : Chòm sao cͯa m͡t tín hi͏u QAM-16 - Tìm hiểu dsp starter kit tms320c6713
nh Chòm sao cͯa m͡t tín hi͏u QAM-16 (Trang 52)
Hình b: Gi̫n đ͛ chòm sao QAM-8 hình tròn - Tìm hiểu dsp starter kit tms320c6713
Hình b Gi̫n đ͛ chòm sao QAM-8 hình tròn (Trang 53)
Hình :BER cho QAM - Tìm hiểu dsp starter kit tms320c6713
nh BER cho QAM (Trang 54)
Hình sau: - Tìm hiểu dsp starter kit tms320c6713
Hình sau (Trang 65)
Hình sau là ta lҩy 1/8T chu kǤ. Là 6 giá trӏ đҫu là mӭc thҩp chӭ không  phҧi là 12 giá trӏ ӣ trên - Tìm hiểu dsp starter kit tms320c6713
Hình sau là ta lҩy 1/8T chu kǤ. Là 6 giá trӏ đҫu là mӭc thҩp chӭ không phҧi là 12 giá trӏ ӣ trên (Trang 71)

TỪ KHÓA LIÊN QUAN

w