Tai_lieu_ve_PSoC_3 - Tµi liÖu vÒ PSoC – B¶n quyÒn...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN Giíi thiÖu vÒ PSoC PSoC lµ mét tõ viÕt t¾t cña côm tõ tiÕng anh Programmable System on Chip, nghÜa lµ hÖ thèng kh¶ tr×nh trªn mét chÝp. C¸c chÝp chÕ t¹o theo c«ng nghÖ PSoC cho phÐp thay ®æi ®−îc cÊu h×nh ®¬n gi¶n b»ng c¸ch g¸n chøc n¨ng cho c¸c khèi tµi nguyªn cã s½n trªn chÝp. H¬n n÷a nã cßn cã thÓ kÕt nèi t−¬ng ®èi mÒm dÎo c¸c khèi chøc n¨ng víi nhau hoÆc gi÷a c¸c khèi chøc n¨ng víi c¸c cæng vµo ra. ChÝnh v× vËy mµ PSoC cã thÓ thay thÕ cho rÊt nhiÒu chøc n¨ng nÒn cña mét sè hÖ thèng c¬ b¶n chØ b»ng mét ®¬n chÝp. Thµnh phÇn cña chÝp PSoC bao gåm c¸c khèi ngo¹i vi sè vµ t−¬ng tù cã thÓ cÊu h×nh ®−îc, mét bé vi xö lý 8 bit, bé nhí ch−¬ng tr×nh (EEROM) cã thÓ lËp tr×nh ®−îc vµ bé nhí RAM kh¸ lín. §Ó lËp tr×nh hÖ thèng, ng−êi sö dông ®−îc cung cÊp mét phÇn mÒm lËp tr×nh, vÝ dô nh− cho c¸c chÝp PSoC cña Cypress ng−êi lËp tr×nh ph¶i cã phÇn mÒm PSoC Designer. Ngoµi ra ®Ó cµi ®−îc ch−¬ng tr×nh ®iÒu khiÓn vµo chÝp th× ng−êi lËp tr×nh ph¶i cã mét kit ph¸t triÓn do h·ng chÕ t¹o chip cung cÊp (hoÆc mét bé n¹p). PhÇn mÒm thiÕt kÕ ®−îc x©y dùng trªn c¬ së h−íng ®èi t−îng víi cÊu tróc module hãa. Mçi khèi chøc n¨ng lµ mét module mÒm. ViÖc lËp cÊu h×nh cho chÝp nh− thÕ nµo lµ tïy thuéc vµo ng−êi lËp tr×nh th«ng qua mét sè th− viÖn chuÈn. Ng−êi lËp tr×nh thiÕt lËp cÊu h×nh trªn chÝp chØ ®¬n gi¶n b»ng c¸ch muèn chÝp cã nh÷ng chøc n¨ng g× thi kÐo chøc n¨ng ®ã vµ th¶ vµo khèi tµi nguyªn sè hoÆc t−¬ng tù, hoÆc c¶ hai tïy theo tõng chøc n¨ng (Ph−¬ng ph¸p lËp tr×nh kÐo th¶). ViÖc thiÕt lËp ng¾t trªn ch©n nµo, lo¹i ng¾t lµ g×, c¸c ch©n vµo ra ®−îc ho¹t ®éng ë chÕ ®é nh− thÕ nµo ®Òu tïy thuéc vµo viÖc thiÕt lËp cña ng−êi lËp tr×nh khi thiÕt kÕ vµ lËp tr×nh cho PSoC. Víi kh¶ n¨ng ®Æt cÊu h×nh m¹nh mÏ nµy, mét thiÕt bÞ ®iÒu khiÓn, ®o l−êng cã thÓ ®−îc gãi gän trªn mét chip duy nhÊt. ChÝnh v× lý do ®ã, h·ng Cypress MicroSystems ®· kh«ng gäi s¶n phÈm cña m×nh lµ vi ®iÒu khiÓn (µC) nh− truyÒn thèng, mµ gäi lµ “thiÕt bÞ PSoC” (PSoC device), vµ hä hy väng r»ng, víi kh¶ n¨ng ®Æt cÊu h×nh m¹nh mÏ, ng−êi sö dông sÏ cã ®−îc nh÷ng thiÕt bÞ ®iÒu khiÓn, nh÷ng thiÕt bÞ ®o cã gi¸ rÎ, kÝch th−íc nhá gän, vµ s¶n phÈm PSoC cña hä sÏ thay thÕ ®−îc c¸c thiÕt bÞ dùa trªn vi xö lý hoÆc vi ®iÒu khiÓn ®· cã tõ tr−íc ®Õn nay. ChÝp PSoC (CY8C27xxx) cung cÊp: • Bé vi xö lý víi cÊu tróc Harvard. - LÖnh nh©n 8 bit x 8 bit, thanh ghi tÝch lòy lµ 32 bit - Ho¹t ®éng ë tèc ®é cao mµ n¨ng l−îng tiªu hao Ýt - D¶i ®iÖn ¸p ho¹t ®éng tõ 3.0 tíi 5.25V - §iÖn ¸p ho¹t ®éng cã thÓ gi¶m xuèng 1.0 V sö dông chÕ ®é kÝch ®iÖn ¸p • Tèc ®é cña bé vi xö lý lªn ®Õn 24 MHz Ho¹t ®éng trong d¶i nhiÖt ®é -400C ®Õn 850C. C¸c khèi ngo¹i vi cã thÓ ®−îc sö dông ®éc lËp hoÆc kÕt hîp 12 khèi ngo¹i vi t−¬ng tù cã thÓ ®−îc thiÕt lËp ®Ó lµm c¸c nhiÖm vô: - C¸c bé ADC lªn tíi 14 bit - C¸c bé DAC lªn tíi 9 bit. - C¸c bé khuÕch ®¹i cã thÓ lËp tr×nh ®−îc hÖ sè khuÕch ®¹i. - C¸c bé läc vµ c¸c bé so s¸nh cã thÓ lËp tr×nh ®−îc 49 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 3-1 : S¬ ®å khèi cÊu tróc cña PSoC (CY8C27000) 50 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 8 khèi ngo¹i vi sè cã thÓ ®−îc thiÕt lËp ®Ó lµm c¸c nhiÖm vô: - C¸c bé ®Þnh thêi ®a chøc n¨ng, ®Õm sù kiÖn, ®ång hå thi gian thùc, bé ®iÒu chÕ ®é réng xung cã vµ kh«ng cã d¶i an toµn (deadband) - C¸c modun kiÓm tra lçi (CRC modunles) - Hai bé truyÒn th«ng nèi tiÕp kh«ng ®ång bé hai chiÒu - C¸c bé truyÒn th«ng SPI Master hoÆc Slave cã thÓ cÊu h×nh ®−îc - Cã thÓ kÕt nèi víi tÊt c¶ c¸c ch©n vµo ra. • Bé nhí linh ho¹t trªn chÝp - Kh«ng gian bé nhí RAM lµ 256 byte - ChÝp cã thÓ lËp tr×nh th«ng qua chuÈn nèi tiÕp (ISSP) - Bé nhí Flash cã thÓ ®−îc n©ng cÊp tõng phÇn - ChÕ ®é b¶o mËt ®a n¨ng, tin cËy • Kh«ng gian bé nhí ch−¬ng tr×nh Flash tõ 4K ®Õn 16K, phô thuéc vµo tõng lo¹i chÝp víi chu kú ghi xãa cho bé nhí Flash lµ 50.000 lÇn Cã thÓ t¹o ®−îc kh«ng gian bé nhí Flash trªn chÝp lªn tíi 2,304 byte Cã thÓ lËp tr×nh ®−îc cÊu h×nh cho tõng ch©n cña chÝp - §Çu ra logic cã thÓ cung cÊp dßng 25mA víi ®iÖn trë treo cao hoÆc thÊp bªn trong - Thay ®æi ®−îc ng¾t trªn tõng ch©n - §−êng ra t−¬ng tù cã thÓ cung cÊp dßng tíi 40mA • C¸c ch©n vµo ra ba tr¹ng th¸i sö dông Trigger Schmitt §−êng ra ®a chøc n¨ng cã tõ 6 ®Õn 44 tïy thuéc vµo tõng lo¹i chÝp Xung nhÞp cña chÝp cã thÓ lËp tr×nh ®−îc - Cã thÓ lùa chän bé dao ®éng ngoµi lªn tíi 24MHz - Bé dao ®éng th¹ch anh 32,768 kHz bªn trong • Bé t¹o dao ®éng 24/48MHz ë bªn trong (®é chÝnh x¸c lµ 2,5%, kh«ng cÇn thiÕt bÞ ngoµi) Bé t¹o dao ®éng tèc ®é thÊp bªn trong sö dông cho Watchdog vµ Sleep Ngo¹i vi ®−îc thiÕt lËp s½n - Module truyÒn th«ng I2C Master vµ I2C Slave tèc ®é lªn tíi 400kHz • Bé ®Þnh thêi Watchdog vµ Sleep phôc vô chÕ ®é an toµn vµ chÕ ®é nghØ Module ph¸t hiÖn ®iÖn ¸p thÊp ®−îc cÊu h×nh bëi ng−êi sö dông C«ng cô ph¸t triÓn - PhÇn mÒm ph¸t triÓn miÔn phÝ (PSoCTM Designer) - Bé lËp tr×nh vµ bé m« pháng víi ®Çy ®ñ tÝnh n¨ng - M« pháng ë tèc ®é cao 51 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Ch−¬ng 4: CÊu tróc Vi xö lý 1. Bé vi xö lý – CPU 1.1. Giíi thiÖu chung C¸c hä chÝp cña PSoC dùa trªn bé vi xö lý m¹nh mÏ 8 bit víi cÊu tróc Harvard (CÊu tróc Harvard lµ cÊu tróc mµ bus d÷ liÖu, bus ®Þa chØ vµ tÝn hiÖu ®iÒu khiÓn cña bé nhí ch−¬ng tr×nh vµ bé nhí d÷ liÖu ®éc lËp víi nhau). Nã cã 5 thanh ghi ®iÒu khiÓn ho¹t ®éng chÝnh cña CPU. Nh÷ng thanh ghi nµy bÞ t¸c ®éng bëi nh÷ng lÖnh kh¸c nhau. Ng−êi sö dông kh«ng thÓ truy cËp trùc tiÕp vµo c¸c thanh ghi nµy th«ng qua kh«ng gian bé nhí c¸c thanh ghi. C¸c thanh ghi cña CPU ®−îc cho trong b¶ng sau: B¶ng 4-1: C¸c thanh ghi cña CPU Thanh ghi Flags (thanh ghi cê) Program Counter (thanh ghi ®Õm ch−¬ng tr×nh) Accumulator (thanh ghi chøa) Stack Pointer (thanh ghi con trá Stack) Index (thanh ghi chØ sè) M· gîi nhí CPU_F CPU_PC CPU_A CPU_SP CPU_X Bé ®Õm ch−¬ng tr×nh lµ mét thanh ghi16 bit (CPU_PC), nã cho phÐp ng−êi lËp tr×nh truy cËp trùc tiÕp vµo toµn bé kh«ng gian bé nhí ch−¬ng tr×nh trªn chÝp (16 Kbytes ®èi víi thµnh viªn lín nhÊt). §©y lµ mét kh«ng gian nhí liªn tôc vµ kh«ng cÇn ph¶i t¹o thµnh trang (no paging). Thanh ghi chøa (Accumulator) lµ mét thanh ghi ®a môc ®Ých, nã th−êng ®−îc sö dông ®Ó l−u gi÷ kÕt qu¶ cña bÊt cø mét lÖnh nµo sö dông chÕ ®é ®Þa chØ nguån. Thanh ghi chØ sè ®−îc dïng ®Ó l−u gi÷ gi¸ trÞ Offset (®é lÖch) trong chÕ ®é ®Þa chØ chØ sè. Tiªu biÓu lµ nã ®−îc dïng ®Ó ®Þa chØ mét khèi d÷ liÖu bªn trong kh«ng gian nhí d÷ liÖu. Thanh ghi Con trá Stack (Stack Pointer) l−u gi÷ ®Þa chØ cña ®Ønh Stack trong kh«ng gian nhí d÷ liÖu. Nã bÞ t¸c ®éng bëi nh÷ng lÖnh nh− PUSH, POP, LCALL, RETI vµ RET. Nãi chung lµ tÊt c¶ nh÷ng lÖnh cã liªn quan ®Õn stack cña phÇn mÒm. Nã còng cã thÓ bÞ ¶nh h−ëng bëi lÖnh SWAP vµ lÖnh ADD. Thanh ghi cê (Flags) cã ba bit tr¹ng th¸i: bit cê kh«ng - Zero Flag bit[1]; bit cê nhí -Carry Flag bit[2]; bit Supervisory State[3]. Bit cho phÐp ng¾t toµn côc – Global Interrupt enable bit[0] ®−îc dïng ®Ó cho phÐp hoÆc cÊm toµn bé c¸c ng¾t. C¸c cê trªn bÞ ¶nh h−ëng bëi nh÷ng lÖnh to¸n häc, nh÷ng lÖnh logic. v.v… 1.2. Thanh ghi cña CPU 1.2.1. Thanh ghi cê (Flags Register) B¶ng 4-2: Thanh ghi cê (CPU_F) Bit # POR Read/Write Bit Name 7 0 -Reseved 6 0 -Reseved 5 0 -Reseved 4 0 RW XIO 3 0 R Super 2 0 RW Carry 1 1 RW Zero 0 0 RW Global IE Bit 7: Reserved (ch−a ®−îc ®Þnh nghÜa) Bit 6: Reserved Bit 5: Reserved Bit 4: XIO - ®−îc ®Æt bëi ng−êi sö dông cho phÐp lùa chän gi÷a c¸c d·y thanh ghi 52 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 0 = Bank 0 1 = Bank 1 Bit 3: Reserved Bit 2: Carry - ®−îc ®Æt bëi CPU ®Ó chØ râ to¸n tö trong phÐp to¸n logic hoÆc to¸n häc tr−íc ®ã cã nhí hay kh«ng 0 = No Carry (kh«ng cã nhí) 1 = Carry (cã nhí) Bit 1: Zero - ®−îc ®Æt bëi CPU ®Ó chØ râ to¸n tö trong phÐp to¸n logic hoÆc to¸n häc tr−íc ®ã cã b»ng kh«ng hay kh«ng. 0 = Not Equal to Zero (kh«ng b»ng kh«ng) 1 = Equal to Zero (b»ng kh«ng) Bit 0: Global IE – QuyÕt ®Þnh toµn bé c¸c ng¾t lµ cho phÐp hay bÞ cÊm 0 = Disabled (cÊm) 1 = Enabled (cho phÐp) 1.2.2. Thanh ghi chøa B¶ng 4-3: Thanh ghi chøa (CPU_A) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 Read/Write System1 System1 System1 System1 System1 System1 System1 System1 Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Bit [7:0]: 8 bit d÷ liÖu l−u gi÷ kÕt qu¶ cña bÊt cø mét lÖnh to¸n häc/logic sö dông chÕ ®é ®Þa chØ nguån Chó ý: POR (Power on reset): Tr¹ng th¸i cña bÝt sau khi reset nguån. System1: do hÖ thèng ®iÒu chØnh, ng−êi dïng kh«ng thÓ thay ®æi trùc tiÕp ®−îc gi¸ trÞ cña nh÷ng bit nµy 1.2.3. Thanh ghi chØ sè B¶ng 4-4: Thanh ghi chØ sè (CPU_X) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 Read/Write System System System System System System System System1 Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Bit [7:0]: 8 bit d÷ liÖu l−u gi÷ chØ sè cho bÊt cø mét lÖnh nµo sö dông chÕ ®é ®Þa chØ chØ sè 1.2.4. Thanh ghi con trá Stack B¶ng 4-5: Thanh ghi con trá Stack (CPU_SP) Bit # 7 6 5 4 3 2 1 POR 0 0 0 0 0 0 0 1 1 1 1 1 1 Read/Write System System System System System System System1 Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Bit [7:0]: 8 bit d÷ liÖu l−u gi÷ gi¸ trÞ con trá stack hiÖn thêi (trá vµo ®Ønh cña stack) 0 0 System1 Data[0] 1.2.5. Thanh ghi bé ®Õm ch−¬ng tr×nh B¶ng 4-6: Thanh ghi bé ®Õm ch−¬ng tr×nh (CPU_PC) Bit# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Read/ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 write Bit Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data Name [15] [14] [13] [12] [11] [10] [9] [8] [7] [6] [5] [4] [3] [2] [1] [0] Bit[15:0]: 16 bit D÷ liÖu lµ byte thÊp vµ byte cao cña bé ®Õm ch−¬ng tr×nh 53 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 4-1 : CÊu tróc liªn kÕt cña CPU víi bé nhí (cÊu tróc Harvard) 1.3. §Þnh d¹ng cña lÖnh 1.3.1. LÖnh 1 byte LÖnh 1 byte lµ lÖnh kh«ng dïng ®Þa chØ hay d÷ liÖu nh− to¸n h¹ng. lÖnh 1 byte sö dông mét m· lÖnh 8 bit vÝ dô nh− RET,ASR,INC,DEC… B¶ng 4-7 : D¹ng lÖnh 1 byte Byte 0 8- bit opcode 1.3.2. LÖnh 2 byte LÖnh 2 byte lµ lÖnh dïng duy nhÊt mét to¸n h¹ng lµ d÷ liÖu hay ®Þa chØ. LÖnh 2 byte sö dông byte ®Çu tiªn ®Ó chøa m· lÖnh, byte thø hai ®Ó chøa d÷ liÖu hoÆc ®Þa chØ. HoÆc nã sö dông 4 bit ®Çu cho m· lÖnh vµ 12 bit sau cho ®Þa chØ. B¶ng 4-8 : D¹ng lÖnh 2 byte Byte 0 Byte 1 4-Bit opcode 12-bit relative address 8-Bit opcode 8-bit data 8-Bit opcode 8-bit address 1.3.3. LÖnh 3 byte 54 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN LÖnh lo¹i nµy sö dông 3 byte bëi v× nã ®−îc sö dông ®Ó di chuyÓn d÷ liÖu gi÷a hai ®Þa chØ trong kh«ng gian ®Þa chØ mµ ng−êi sö dông cã thÓ truy nhËp. HoÆc nã dïng ®Ó l−u gi÷ mét gi¸ trÞ ®Þa chØ tuyÖt ®èi 16 bit trong c¸c lÖnh LCALL vµ LJMP. B¶ng 4-9 : D¹ng lÖnh 3 byte Byte 0 8-Bit opcode 8-Bit opcode 8-Bit opcode Byte 1 Byte 2 16-bit address (MSB,LSB) 8-bit data 8-bit data 8-bit address 8-bit address 1.4. C¸c chÕ ®é ®Þa chØ trong PSoC 1.4.1. ChÕ ®é ®Þa chØ nguån tøc thêi (Source Immediate) Nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ nµy cã gi¸ trÞ nguån ®−îc l−u gi÷ trong to¸n h¹ng 1 cña lÖnh, kÕt qu¶ ®−îc l−u gi÷ trong thanh ghi A, thanh ghi F, thanh ghi SP hay thanh ghi X ®−îc chØ râ trong lÖnh. LÖnh sö dông chÕ ®é ®Þa chØ nµy cã ®é dµi lµ 2 byte. B¶ng 4-10 : ChÕ ®é ®Þa chØ nguån tøc thêi Opcode Instruction Operand 1 Inmediate Value VÝdô: M· nguån ADD A,7 M· m¸y 01 07 MOV X,8 AND F,9 57 70 08 09 Chó thÝch Gi¸ trÞ tøc thêi lµ 7 ®−îc céng vµo thanh chøa, kÕt qu¶ ®−îc l−u vµo thanh chøa Gi¸ trÞ tøc thêi lµ 8 ®−îc chuyÓn vµo thanh ghi X Gi¸ trÞ tøc thêi lµ 9 ®−îc AND víi gi¸ trÞ trong thanh ghi F, kÕt qu¶ cña phÐp AND ®−îc ®Æt trong thanh ghi F 1.4.2. ChÕ ®é ®Þa chØ nguån trùc tiÕp (Source Direct) Trong chÕ ®é nµy th× ®Þa chØ nguån ®−îc l−u gi÷ trong to¸n h¹ng 1 cña lÖnh. Trong suèt qu¸ tr×nh thi hµnh lÖnh th× ®Þa chØ ®−îc dïng ®Ó lÊy gi¸ trÞ nguån tõ RAM hoÆc tõ kh«ng gian ®Þa chØ thanh ghi. KÕt qu¶ ®−îc chØ râ trong lÖnh lµ ®Æt vµo thanh ghi X hay thanh ghi A. TÊt c¶ nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ trùc tiÕp ®Òu lµ lÖnh cã ®é dµi 2 byte. B¶ng 4-11 : ChÕ ®é ®Þa chØ nguån trùc tiÕp Opcode Instruction Operand 1 Source Address VÝ dô: M· nguån ADD A,[7] M· m¸y 02 07 MOV X, REG[8] 5D 08 Chó thÝch Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 7 ®−îc céng vµo thanh chøa kÕt qu¶ l¹i ®−îc l−u gi÷ trong thanh chøa Gi¸ trÞ trong kh«ng gian thanh ghi t¹i ®Þa chØ 8 ®−îc chuyÓn vµo thanh chøa 1.4.3. ChÕ ®é ®Þa chØ nguån chØ sè (Source Indexed) Trong chÕ ®é nµy th× d÷ liÖu cña nguån ®−îc truy xuÊt trong RAM hoÆc kh«ng gian ®Þa chØ thanh ghi th«ng qua ®Þa chØ lµ gi¸ trÞ hiÖn thêi cña thanh ghi X céng víi mét chØ sè. KÕt qu¶ ®−îc chØ râ trong lÖnh lµ l−u gi÷ trong thanh ghi X hay thanh ghi A. LÖnh cã ®é dµi lµ 2 byte B¶ng 4-12 : ChÕ ®é ®Þa chØ nguån chØ sè Opcode Operand 1 55 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Instruction Source Index VÝ dô: M· nguån ADD A,[X+7] M· m¸y 03 07 MOV X,[X+8] 59 Chó thÝch Gi¸ trÞ trong bé nhí t¹i ®Þa chØ X+7 ®−îc céng vµo thanh chøa, kÕt qu¶ l¹i ®−îc l−u vµo thanh chøa Gi¸ trÞ trong bé nhí t¹i ®Þa chØ X+8 ®−îc di chuyÓn vµo thanh ghi X 08 1.4.4. ChÕ ®é ®Þa chØ ®Ých trùc tiÕp (Destination Direct) Nh−ng lÖnh thuéc chÕ ®é ®Þa chØ nµy cã ®Þa chØ ®Ých ®−îc l−u tr÷ trong m· m¸y cña lÖnh, ®Þa chØ nguån ®−îc chØ râ trong lÖnh lµ thanh ghi A hay X. TÊt c¶ nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh 2 byte. B¶ng 4-13 : ChÕ ®é ®Þa chØ ®Ých trùc tiÕp Opcode Instruction Operand 1 Destination Address VÝ dô: M· nguån ADD [7], A M· m¸y 04 07 MOV REG[8], A 60 Chó thÝch Gi¸ trÞ trong thanh chøa ®−îc céng víi gi¸ trÞ trong bé nhí t¹i ®Þa chØ 7, kÕt qu¶ l¹i ®−îc l−u vµo bé nhí t¹i ®Þa chØ 7. Gi¸ trÞ thanh chøa kh«ng ®æi Gi¸ trÞ trong thanh chøa ®−îc di chuyÓn vµo kh«ng gian thanh ghi t¹i ®Þa chØ 8. Gi¸ trÞ thanh chøa kh«ng ®æi. 08 1.4.5. ChÕ ®é ®Þa chØ ®Ých chØ sè (Destination Indexed) Nh÷ng lÖnh thuéc chÕ ®é ®Þa chØ nµy cã ®Ých ®−îc x¸c ®Þnh b»ng c¸ch lÊy gi¸ trÞ cña thanh ghi X céng víi mét chØ sè lµm ®Þa chØ ®Ó truy xuÊt vµo bé nhí, nguån ®−îc x¸c ®Þnh trong lÖnh lµ thanh ghi A hoÆc mét gi¸ trÞ tøc thêi. Nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh cã ®é dµi 2 byte. B¶ng 4-14 : ChÕ ®é ®Þa chØ ®Ých chØ sè Opcode Instruction Operand 1 Destination Index VÝ dô: M· nguån ADD [X+7], A M· m¸y 05 07 Chó thÝch Gi¸ trÞ trong bé nhí t¹i ®Þa chØ X+7 ®−îc céng vµo thanh chøa, kÕt qu¶ ®−îc l−u vµo bé nhí t¹i ®Þa chØ X+7, thanh chøa kh«ng thay ®æi 1.4.6. ChÕ ®é ®Þa chØ ®Ých trùc tiÕp, nguån tøc thêi tøc thêi (Destination Direct, Source Immediate) Nh÷ng lÖnh thuéc chÕ ®é ®Þa chØ nµy cã ®Þa chØ cña ®Ých ®−îc l−u gi÷ trong to¸n h¹ng 1 cña lÖnh. Gi¸ trÞ cña nguån ®−îc l−u tr÷ trong to¸n h¹ng 2 cña lÖnh. TÊt c¶ nh÷ng lÖnh thuéc chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh cã ®é dµi 3 byte. B¶ng 4-15 : ChÕ ®é ®Þa chØ ®Ých trùc tiÕp, nguån tøc thêi Opcode Instruction Operand 1 Destination Address Operand 2 Immediate Value 56 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN VÝ dô: M· nguån ADD [7],5 06 MOV REG[8],6 M· m¸y 07 05 62 08 06 Chó thÝch Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 7 ®−îc céng víi gi¸ trÞ tøc thêi 5, kÕt qu¶ l¹i ®−îc l−u vµo bé nhí t¹i ®Þa chØ 7. Gi¸ trÞ tøc thêi 6 ®−îc di chuyÓn vµo kh«ng gian thanh ghi t¹i ®Þa chØ 8 1.4.7. ChÕ ®é ®Þa chØ ®Ých chØ sè, nguån tøc thêi (Destination Indexed, Source Immediate) Trong chÕ ®é nµy th× gi¸ trÞ cña thanh ghi X céng víi mét chØ sè ®−îc lÊy lµm ®Þa chØ ®Ó lÊy d÷ liÖu trong bé nhí. Cßn d÷ liÖu nguån lµ mét sè trùc tiÕp. TÊt c¶ nh÷ng lÖnh thuéc chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh 3 byte. B¶ng 4-16 : ChÕ ®é ®Þa chØ ®Ých chØ sè, nguån tøc thêi Opcode Instruction Operand 1 Destination Index Operand 2 Immediate Value VÝ dô: M· nguån ADD [X+7],5 M· m¸y 07 07 05 MOV REG[X+8],6 63 08 06 Chó thÝch Gi¸ trÞ trong bé nhí t¹i ®Þa chØ X+7 ®−îc céng víi gi¸ trÞ tøc thêi 5, kÕt qu¶ l¹i ®−îc l−u vµo bé nhí t¹i ®Þa chØ X+7. Gi¸ trÞ tøc thêi 6 ®−îc di chuyÓn vµo kh«ng gian thanh ghi t¹i ®Þa chØ X+8 1.4.8.ChÕ ®é ®Þa chØ ®Ých trùc tiÕp, nguån trùc tiÕp (Destination Direct, Source Direct) ChØ cã duy nhÊt mét lÖnh sö dông chÕ ®é ®Þa chØ nµy, ®Þa chØ cña ®Ých ®−îc l−u gi÷ trong to¸n h¹ng 1 cña lÖnh cßn ®Þa chØ cña nguån ®−îc l−u gi÷ trong to¸n h¹ng 2 cña lÖnh. TÊt c¶ nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh cã ®é dµi 3 byte. B¶ng 4-17: ChÕ ®é ®Þa chØ ®Ých trùc tiÕp, nguån trùc tiÕp Opcode Instruction Operand 1 Destination Address Operand 2 Source Address VÝ dô: M· nguån MOV [7],[8] 5F M· m¸y 07 08 Chó thÝch Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 ®−îc di chuyÓn vµo bé nhí t¹i ®Þa chØ 7. 1.4.9. ChÕ ®é ®Þa chØ sö dông con trá tù ®éng t¨ng ®Þa chØ • Con trá lµ to¸n h¹ng nguån (Source Indirect Post Increment) ChØ cã duy nhÊt mét lÖnh sö dông chÕ ®é ®Þa chØ nµy, ®Þa chØ nguån l−u gi÷ trong to¸n h¹ng 1 ho¹t ®éng nh− ®Þa chØ cña mét con trá. Trong suèt qu¸ tr×nh lÖnh thi hµnh th× gi¸ trÞ cña con trá sÏ quyÕt ®Þnh xem d÷ liÖu nµo trong RAM sÏ ®−îc ®äc. Sau khi ®äc xong d÷ liÖu th× gi¸ trÞ cña con trá ®−îc t¨ng lªn 1. B¶ng 4-18 : ChÕ ®é ®Þa chØ Source Indiect Post Increment Opcode Instruction Operand 1 Source Address Pointer VÝ dô: M· nguån MVI A,[8] • M· m¸y 3E 08 Chó thÝch Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 trá tíi mét « nhí trong RAM. Gi¸ trÞ t¹i « nhí con trá trá tíi sÏ ®−îc di chuyÓn vµo thanh chøa. Sau ®ã, gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 ®−îc t¨ng lªn. Con trá lµ to¸n h¹ng ®Ých (Destination Indirect Post Increment) 57 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN ChØ cã duy nhÊt mét lÖnh sö dông chÕ ®é ®Þa chØ nµy, ®Þa chØ ®Ých l−u gi÷ trong to¸n h¹ng 1 ho¹t ®éng nh− ®Þa chØ cña mét con trá. Trong suèt qu¸ tr×nh lÖnh thi hµnh th× gi¸ trÞ cña con trá sÏ quyÕt ®Þnh xem d÷ liÖu nµo trong RAM sÏ ®−îc ®äc. Sau khi ®äc xong d÷ liÖu th× gi¸ trÞ cña con trá ®−îc t¨ng lªn 1. B¶ng 4-19: ChÕ ®é Destination Indirect Post Increment Opcode Instruction Operand 1 Destination Address Pointer VÝ dô: M· nguån MVI [8],A M· m¸y 3F 08 Chó thÝch Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 trá tíi mét « nhí trong RAM. Gi¸ trÞ trong thanh chøa sÏ ®−îc di chuyÓn tíi vÞ trÝ « nhí mµ con trá trá tíi. Sau ®ã, gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 ®−îc t¨ng lªn. NhËn xÐt: Nh− vËy ta thÊy c¸c chÕ ®é ®Þa chØ trong PSoC còng t−¬ng ®èi dÔ hiÓu, tãm l¹i nã chØ bao gåm: - C¸c d÷ liÖu tøc thêi lµ c¸c con sè: VÝ dô: 5 , 6 , 7 , 8 … - C¸c d÷ liÖu trùc tiÕp ®−îc x¸c ®Þnh th«ng qua c¸c ®Þa chØ. VÝ dô: [7] , [8] … - C¸c d÷ liÖu ®−îc x¸c ®Þnh th«ng qua chØ sè, nã lµ d÷ liÖu ë ®Þa chØ [X+chØ sè)]: vÝ dô: [X+5], [X+6], …. - C¸c d÷ liÖu ®−îc x¸c ®Þnh gi¸n tiÕp th«ng qua con trá nh− trong hai chÕ ®é ®Þa chØ cuèi. §©y còng lµ hai chÕ ®é ®Þa chØ mµ Ýt lo¹i Vi xö lý cã ®−îc. - Ta cã thÓ nhËn thÊy r»ng nh÷ng lÖnh lÊy thanh ghi A hoÆc X nh− lµ mét phÇn cña to¸n h¹ng ®Òu lµ lÖnh 2 byte (xem l¹i c¸c vÝ dô trªn). Së dÜ nh− vËy lµ v× trong m· lÖnh ®· ®−îc ®Þnh nghÜa s½n lµ lµm viÖc víi thanh ghi nµo. Ch¼ng h¹n nh− trong vÝ dô cña môc 2.4.1 th× ta cã thÓ thÊy lµ m· m¸y gåm 2 byte, byte ®Çu tiªn lµ m· lÖnh cña lÖnh céng vµo thanh chøa, byte thø hai lµ gi¸ trÞ ®−îc céng vµo thanh chøa. Nh− vËy, víi c¸ch ®Þnh nghÜa trªn th× nh÷ng lÖnh nh− vËy sÏ tiÕt kiÖm ®−îc chu kú ho¹t ®éng cña chip, tõ ®ã rót ng¾n ®−îc thêi gian thùc hiÖn lÖnh. ViÖc m· hãa nh− vËy cho phÐp ph¸t huy tèc ®é tÝnh to¸n cña chÝp trong nh÷ng øng dông ®ßi hái tèc ®é tÝnh to¸n cao. - Ngoµi ra cßn ph¶i ph©n biÖt gi÷a c¸ch truy xuÊt bé nhí RAM vµ bé nhí kh«ng gian thanh ghi. C¸ch truy xuÊt hai bé nhí nµy ®−îc ph©n biÖt th«ng qua lÖnh. VÝ dô: [7] lµ d÷ liÖu t¹i ®Þa chØ 7 trong RAM, nh−ng REG[7] l¹i lµ d÷ liÖu t¹i ®Þa chØ 7 trong kh«ng gian thanh ghi. 58 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 2. Ng¾t vµ Bé ®iÒu khiÓn ng¾t B¶ng 4-20: C¸c thanh ghi cña bé ®iÒu khiÓn ng¾t Address 0,DAh 0,DBh 0,DDh 0,DEh 0,E0h 0,E1h 0,E2h x,F7h Chó ý: Name Bit 7 Bit 6 Bit 5 INT_CLR0 VC3 Sleep GPIO INT_CLR1 DCB13 DCB12 DBB11 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access Analog 3 Analog 2 Analog 1 Analog 0 V Monitor RW:00 DBB10 DCB02 DBB01 DBB00 RW:00 I2C RW:00 I2C RW:00 DCB03 INT_CLR3 INT_MSK3 ENSWINT INT_MSK0 VC3 Sleep GPIO INT_MSK1 DCB13 DCB12 DBB11 INT_VC Analog 3 Analog 2 Analog 1 Analog 0 V Monitor RW:00 DBB10 DCB02 DBB01 DBB00 RW:00 Carry Zero GIE DCB03 Pending Interrupt [7:0] CPU_F XOI RC:00 RL:00 L: Nh÷ng lÖnh ¶nh h−ëng ®Õn cê nh− AND, OR vµ XOR cã thÓ ®−îc dïng ®Ó thay ®æi thanh ghi nµy x: ch÷ ‘x’ n»m tr−íc dÊu phÈy trong tr−êng ®Þa chØ chØ râ r»ng thanh ghi nµy cã thÓ ®−îc truy nhËp mµ kh«ng cÇn biÕt lµ d·y thanh ghi nµo ®ang ®−îc sö dông. Bé ®iÒu khiÓn ng¾t cho phÐp mét ®o¹n m· cña ng−êi lËp tr×nh ®−îc thùc hiÖn mçi khi cã mét ng¾t sinh ra tõ c¸c khèi chøc n¨ng trong chip PSoC. Mçi mét khèi sè cã mét ng¾t riªng vµ mçi mét cét khèi t−¬ng tù còng cã mét ng¾t riªng. Mçi mét ng¾t cho nguån cÊp, chÕ ®é ngñ, xung nhÞp thay ®æi, vµ mét ng¾t toµn côc cho c¸c ch©n vµo ra ®a chøc n¨ng. Bé ®iÒu khiÓn ng¾t cïng víi nh÷ng thanh ghi cña nã cho phÐp c¸c ng¾t cã thÓ bÞ v« hiÖu hãa ®ång thêi hoÆc ®éc lËp víi nhau. C¸c thanh ghi cung cÊp mét c¸ch thøc ®Ó ng−êi sö dông cã thÓ xãa tÊt c¶ nh÷ng ng¾t ®ang chê vµ th«ng b¸o ng¾t, hoÆc cã thÓ xãa mét c¸ch ®éc lËp hay riªng biÖt th«ng b¸o ng¾t vµ ng¾t chê. Mét kü thuËt phÇn mÒm ®−îc cung cÊp ®Ó cho phÐp ng−êi lËp tr×nh thiÕt lËp ng¾t mét c¸ch riªng biÖt. ThiÕt lËp mét ng¾t b»ng kü thuËt nµy rÊt m¹nh mÏ vµ h÷u Ých cho viÖc ph¸t triÓn m· nguån, khi mµ nã kh«ng cã ®ñ hÖ thèng phÇn cøng hoµn chØnh ®Ó sinh ra mét ng¾t thùc. B¶ng 4-21 : B¶ng vector ng¾t cña CY8C27xxx Møc −u tiªn ng¾t 0 (cao nhÊt) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 24 25 (thÊp nhÊt) 2.1. §Þa chØ ng¾t 0000h 0004h 0008h 000Ch 0010h 0014h 0018h 001Ch 0020h 0024h 0028h 002Ch 0030h 0034h 0038h 003Ch 0060h 0064h Tªn ng¾t Reset Supply Voltage Monitor Analog Column 0 Analog Column 1 Analog Column 2 Analog Column 3 VC3 GPIO PSOC Block DBB00 PSOC Block DBB01 PSOC Block DCB02 PSOC Block DCB03 PSOC Block DBB10 PSOC Block DBB11 PSOC Block DCB12 PSOC Block DCB13 I2C Sleep Timer M« t¶ cÊu tróc cña bé ®iÒu khiÓn ng¾t 59 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Interrupt Source: Nguån ng¾t (bé ®Þnh thêi, c¸c ch©n vµo ra ®a chøc n¨ng... ) Interrupt Taken or INT_CLRx Write: Thi hµnh ng¾t hoÆc xãa ng¾t INT_MSKx: LËp mÆt n¹ che ng¾t Post Interrupt: Th«ng b¸o ng¾t Pending Interrupt: Ng¾t chê Priority Encoder: Bé m· hãa møc −u tiªn cña ng¾t GIE (CPU_F[0]): Cho phÐp ng¾t toµn côc (Global Interrupt Enable) Interupt Request: Yªu cÇu ng¾t H×nh 4-2: S¬ ®å khèi cña bé ®iÒu khiÓn ng¾t D·y c¸c sù kiÖn x¶y ra khi mét ng¾t ®−îc thi hµnh nh− sau: 1. Khi mét ng¾t ®−îc kÝch ho¹t, cã thÓ lµ do mét ®iÒu kiÖn ng¾t ®−îc sinh ra (do trµn bé ®Õm ch¼ng h¹n) vµ tr−íc ®ã th«ng b¸o ng¾t ®−îc cho phÐp bëi thanh ghi mÆt n¹ che ng¾t, hoÆc cã mét ng¾t ®ang chê ®−îc xö lý vµ GIE (global interrupt enable - cho phÐp ng¾t toµn côc) ®−îc ®Æt tõ 0 sang 1 trong thanh ghi cê cña CPU. 2. LÖnh thi hµnh hiÖn thêi kÕt thóc ë biªn giíi lÖnh (biªn giíi lÖnh lµ thêi ®iÓm CPU chuyÓn tõ lÖnh nµy sang lÖnh kh¸c). 3. Thñ tôc ng¾t bªn trong ®−îc thùc hiÖn, tiªu tèn 13 chu kú m¸y. Trong kho¶ng thêi gian nµy th× CPU thùc hiÖn nh÷ng c«ng viÖc sau: - L−u byte cao, byte thÊp cña bé ®Õm ch−¬ng tr×nh (PCH vµ PCL) vµ thanh ghi cê (CPU_F) vµo trong Stack theo thø tù nh− trªn. - Thanh ghi cê ®−îc xãa tr¾ng vµ tõ ®ã bit GIE bÞ xãa vÒ 0 vµ nh÷ng ng¾t míi sinh ra t¹m thêi bÞ cÊm. - Byte cao cña bé ®Õm ch−¬ng tr×nh (PC[15:8]) ®−îc xãa vÒ 0 (zero) - Vector ng¾t ®−îc ®äc tõ bé ®iÒu khiÓn vector ng¾t vµ gi¸ trÞ cña nã ®−îc ®Æt vµo trong byte thÊp cña bé ®Õm ch−¬ng tr×nh (PC[7:0]). ViÖc nµy sÏ ®Æt bé ®Õm ch−¬ng tr×nh trá vµo ®Þa chØ thÝch hîp trong b¶ng vector ng¾t. 4. Ch−¬ng tr×nh sÏ thi hµnh vector trong b¶ng vector ng¾t. Nh×n chung th× mét lÖnh LJMP trong b¶ng vector ng¾t sÏ chuyÓn sù thi hµnh cña CPU tíi tr×nh phôc vô ng¾t cña ng−êi dïng ®Ó phôc vô cho ng¾t nµy. 60 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 5. Tr×nh phôc vô ng¾t ®−îc thi hµnh. L−u ý r»ng tÊt c¶ c¸c ng¾t ®Òu bÞ v« hiÖu hãa kÓ tõ khi bit GIE = 0. C¸c ng¾t kh¸c cã thÓ ®−îc më l¹i trong tr×nh phôc vô ng¾t nÕu cÇn thiÕt b»ng c¸ch ®Æt bit GIE = 1 (h·y cÈn thËn trong viÖc nµy bëi v× nã cã thÓ lµm trµn Stack) 6. Khi tr×nh phôc vô ng¾t kÕt thóc víi lÖnh RETI th× thanh ghi cê (CPU_F), byte thÊp vµ byte cao cña bé ®Õm ch−¬ng tr×nh ®−îc lÊy ra khái Stack theo ®óng tr×nh tù nh− trªn. Tõ khi thanh ghi cê (CPU_F) ®−îc kh«i phôc l¹i gi¸ trÞ th× nã sÏ cho phÐp c¸c ng¾t. (GIE =1). 7. Ch−¬ng tr×nh sÏ b¾t ®Çu thi hµnh ë lÖnh kÕ tiÕp, ngay sau lÖnh ®−îc thùc hiÖn tr−íc khi x¶y ra ng¾t. Tuy nhiªn, nÕu nh− cã ng¾t ®ang chê ®−îc phôc vô th× nã sÏ ®−îc thùc hiÖn tr−íc. 2.2. C¸c thanh ghi ng¾t B¶ng 4-20 ®· cho ta mét c¸i nh×n tæng quan vÒ mèi quan hÖ cña c¸c thanh ghi ®èi víi ho¹t ®éng cña bé ®iÒu khiÓn vector ng¾t. Chi tiÕt vÒ sö dông c¸c thanh ghi ®−îc tr×nh bµy sau ®©y. 2.2.1. Thanh ghi INT_CLRx Cã 3 thanh ghi xãa ng¾t (INT_CLR0, INT_CLR1 vµ INT_CLR3) cã thÓ ®−îc quy vµo tªn gäi chung INT_CLRx. Nh÷ng thanh ghi INT_CLRx lµ t−¬ng tù nh− nh÷ng thanh ghi INT_MSKx nghÜa lµ chóng gi÷ mét bit cho mçi nguån ng¾t. Tuy nhiªn, vÒ mÆt chøc n¨ng th× thanh ghi INT_CLRx l¹i gièng nh− thanh ghi INT_VC mÆc dï ho¹t ®éng cña chóng hoµn toµn ®éc lËp víi nhau. Khi mét thanh ghi INT_CLRx ®−îc ®äc th× bÊt kú bit nµo ®−îc ®Æt ®Òu chØ râ lµ ng¾t nµo ®· th«ng b¸o cho tµi nguyªn phÇn cøng ®ã. Bëi vËy, ®äc nh÷ng thanh ghi ®ã sÏ gióp cho ng−êi sö dông x¸c ®Þnh ®−îc tÊt c¶ c¸c th«ng b¸o ng¾t. C¸ch mét gi¸ trÞ bit riªng rÏ ®−îc ghi vµo thanh ghi INT_CLRx ®−îc quyÕt ®Þnh bëi bit ENSWINT (Enable Software Interrupt) trong thanh ghi INT_MSK3. Khi bit ENSWINT ®−îc xãa (tr¹ng th¸i mÆc ®Þnh), viÖc viÕt 1 vµo mét bit nµo ®ã trong thanh ghi INT_CLRx ®Òu kh«ng cã t¸c dông g×. Tuy nhiªn, viÖc viÕt 0 vµo mét bit nµo ®ã trong thanh ghi INT_CLRx trong khi bit ENSWINT = 0 sÏ xãa th«ng b¸o ng¾t t−¬ng øng. NÕu bit ENSWINT = 1 th× viÖc viÕt 0 vµo bÊt cø bit nµo trong thanh ghi INT_CLRx sÏ bÞ bá qua. Tuy nhiªn, viÖc viÕt 1 vµo mét bit nµo ®ã trong thanh ghi INT_CLRx trong khi bit ENSWINT = 1 sÏ lµm cho mét ng¾t t−¬ng øng ®−îc th«ng b¸o. ViÖc më ng¾t mÒm sÏ cho phÐp m· cña ng−êi sö dông t¹o ra mét ng¾t mÒm vµ cã thÓ h÷u Ých cho viÖc gì rèi trong tr×nh phôc vô ng¾t, hay lo¹i trõ ¶nh h−ëng cña viÖc sinh ra ng¾t míi trong khi ng¾t cò vÉn ®ang ®−îc thùc thi. 2.2.2. Thanh ghi INT_MSKx Cã 3 thanh ghi mÆt n¹ che ng¾t (INT_MSK0, INT_MSK1, INT_MSK3) cã thÓ ®−îc quy vµo thanh ghi cã tªn gäi chung INT_MSKx. NÕu ®−îc xãa th× mçi bit trong thanh ghi INT_MSKx sÏ ng¨n chÆn mét ng¾t t−¬ng øng víi bit ®ã trë thµnh mét ng¾t chê ®−îc xö lý (®Çu vµo cña bé m· hãa −u tiªn). Tuy nhiªn mét ng¾t vÉn cã thÓ ®−îc th«ng b¸o ngay c¶ khi bit mÆt n¹ cña nã lµ 0. NghÜa lµ tÊt c¶ c¸c bit trong thanh ghi INT_CLRx ®Òu ®éc lËp víi c¸c bit trong thanh ghi INT_MSKx. NÕu mét bit trong thanh ghi INT_MSKx ®−îc set = 1 th× nguån ng¾t kÕt hîp víi bit mÆt n¹ cña nã sÏ sinh ra mét ng¾t ®Ó trë thµnh ng¾t chê. VÝ dô: nÕu bit INT_MSK0[5] ®−îc set vµ cã mét ch©n vµo ra ®a chøc n¨ng ®−îc cÊu h×nh ®Ó sinh ra mét ng¾t th× bé ®iÒu khiÓn ng¾t sÏ cho phÐp mét ng¾t cña GPIO yªu cÇu th«ng b¸o vµ trë thµnh mét ng¾t chê ph¶n håi 61 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN cña CPU. NÕu mét ng¾t cã møc −u tiªn cao h¬n ®−îc sinh ra tr−íc sù ph¶n håi cña CPU tíi ng¾t GPIO th× ng¾t cã yªu cÇu cao h¬n sÏ lµ ng¾t chê chø kh«ng ph¶i lµ ng¾t GPIO. INT_MSK3[7] (ENSWINT) lµ mét bit kh«ng cã mÆt n¹ ®Æc biÖt ®Ó ®iÒu khiÓn ho¹t ®éng cña thanh ghi INT_CLRx. (Xem thªm phÇn d−íi ®Ó biÕt thªm chi tiÕt). 2.2.3. Thanh chi INT_VC Thanh ghi INT_VC thùc hiÖn 2 nhiÖm vô. Khi thanh ghi ®−îc ®äc th× nã sÏ tr¶ vÒ gi¸ trÞ cña ng¾t chê cã møc −u tiªn cao nhÊt. VÝ dô: NÕu ng¾t GPIO vµ ng¾t I2C ®ang ë tr¹ng th¸i chê vµ thanh ghi INT_VC ®−îc ®äc th× nã sÏ ®äc ra gi¸ trÞ 1Ch (lµ gi¸ trÞ cña ng¾t GPIO). Tuy nhiªn, nÕu kh«ng cã ng¾t nµo ®ang ë tr¹ng th¸i chê th× viÖc ®äc thanh ghi INT_VC sÏ tr¶ vÒ gi¸ trÞ 00h. §©y lµ gi¸ trÞ cña vector reset trong b¶ng vector ng¾t. Tuy nhiªn lµ viÖc ®äc ®−îc gi¸ trÞ 00h tõ thanh ghi INT_VC kh«ng cã nghÜa lµ vector ng¾t reset ®ang chê mµ ®iÒu ®ã chØ nãi lªn r»ng ch¼ng cã vector ng¾t nµo ®ang ë tr¹ng th¸i chê c¶. Thanh ghi cã møc −u tiªn cao nhÊt ®−îc chØ râ bëi gi¸ trÞ ®äc vÒ tõ thanh ghi INT_VC vµ nã ®−îc gì bá khái danh s¸ch c¸c ng¾t chê khi CPU thùc hiÖn lÖnh ®äc vector ng¾t. ViÖc xãa ng¾t chê cã møc −u tiªn cao nhÊt x¶y ra kh«ng ®ång bé. 2.2.4. Thanh ghi CPU_F ChØ cã bit GIE trong thanh ghi CPU_F lµ cã ¶nh h−ëng tíi bé ®iÒu khiÓn ng¾t, bit nµy lµ bit cho phÐp ng¾t toµn côc (Global Interrupt Enable). ChØ khi bit nµy ®−îc set th× CPU míi cã thÓ thùc hiÖn mét ng¾t chê. Khi bit nµy ®−îc xãa th× CPU sÏ kh«ng thùc hiÖn mét ng¾t chê nµo c¶ (CÇn l−u ý lµ mét ng¾t vÉn cã th«ng b¸o vµ nÕu bit mÆt n¹ cho phÐp thi nã vÉn trë thµnh ng¾t chê mÆc dï bit GIE = 0, nh−ng nã chØ cã thÓ ®−îc thùc hiÖn khi bit GIE =1). Bit GIE cã gi¸ trÞ mÆc ®Þnh = 0. §Ó cã thÓ ®Æt hoÆc xãa bit GIE th× ta sö dông c¸c lÖnh logic nh− AND,OR,XOR thanh ghi F víi gi¸ trÞ thÝch hîp. TÊt nhiªn, ph−¬ng ph¸p sö dông ë ®©y lµ ph−¬ng ph¸p lËp mÆt n¹. VÝ dô: khi ta muèn xãa bit GIE th× ta sö dông lÖnh AND F,0FEh cßn khi muèn ®Æt bit GIE =1 th× ta sö dông lÖnh OR F,01h. 62 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 3. C¸c cæng vµo ra ®a chøc n¨ng Cæng vµo ra ®a chøc n¨ng cung cÊp cho CPU mét giao diÖn víi bªn ngoµi. Chóng ®ßi hái mét sè l−îng lín thanh ghi cÊu h×nh ®Ó hç trî cho nhiÒu chÕ ho¹t ®éng vµo / ra bao gåm c¶ sè vµ t−¬ng tù. B¶ng 4-22: C¸c thanh ghi vµo ra ®a chøc n¨ng Address 0,xxh 0,xxh 0,xxh 0,xxh 1,xxh 1,xxh 1,xxh 1,xxh Name PRTxDR PRTxIE PRTxGS PRTxDM2 PRTxDM0 PRTxDM1 PRTxIC0 PRTxIC1 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Data Register (Thanh ghi d÷ liÖu) Bit Interrupt Enable (Bit cho phÐp ng¾t) Global Select (Lùa chän toµn côc) Driver Mode 2 (Thanh ghi chÕ ®é ho¹t ®éng 2) Driver Mode 0 (Thanh ghi chÕ ®é ho¹t ®éng 0) Driver Mode 1 (Thanh ghi chÕ ®é ho¹t ®éng 1) Interrupt Control 0 (Thanh ghi ®iÒu khiÓn ng¾t 0) Interrupt Control 1 (Thanh ghi ®iÒu khiÓn ng¾t 1) Bit 0 Access RW:00 RW:00 RW:00 RW:FF RW:00 RW:FF RW:00 RW:00 Chó ý: kÝ tù “x” sau dÊu phÈy trong tr−êng ®Þa chØ cã nghÜa lµ c¸c cæng vµo ra ®Òu cã riªng biÖt c¸c thanh ghi trªn. Mçi mét cæng th× c¸c thanh ghi sÏ cã mét ®Þa chØ riªng. Nh−ng ®Ó dÔ hiÓu th× ta chØ xÐt chung cho tr−êng hîp tæng qu¸t. C¸c cæng vµo ra ®a chøc n¨ng ®Òu cã ®é réng lµ 8 bit/ 1 cæng. Mçi mét cæng vµo/ra bao gåm 8 khèi GPIO gièng hÖt nhau. Mçi mét khèi GPIO ®Òu ®−îc kÕt nèi víi bit cã sè thø tù t−¬ng øng trong ®Þa chØ vµ thanh ghi. Bëi vËy, nh÷ng thanh ghi trong b¶ng 4-22 thùc sù chØ dµnh cho mét cæng (bao gåm 8 khèi GPIO). Trong ®ã th× vÞ trÝ cña bit sÏ chØ râ lµ khèi GPIO nµo trong 8 khèi ®−îc ®iÒu khiÓn víi cæng vµo ra. Mçi mét khèi GPIO c thÓ ®−îc sö dông cho nh÷ng kiÓu vµo ra sau: - Vµo ra sè (Vµo ra sè ®iÒu khiÓn bëi phÇn mÒm) - Vµo ra toµn côc (Vµo ra cho c¸c khèi PSoC sè) - Vµo ra t−¬ng tù (Vµo ra cho c¸c khèi PSoC t−¬ng tù) Mçi mét ch©n vµo ra ®Òu cã vµi chÕ ®é ho¹t ®éng còng nh− lµ kh¶ n¨ng t¹o ng¾t. Trong khi tÊt c¶ c¸c ch©n ®Òu ®−îc nèi ®−êng vµo ra sè th× mét vµi ch©n l¹i kh«ng ®−îc kÕt nèi víi chøc n¨ng vµo ra cña khèi t−¬ng tù hoÆc bus toµn côc. • Vµo ra sè Mét trong nh÷ng chøc n¨ng ho¹t ®éng c¬ b¶n cña cæng vµo ra ®a chøc n¨ng lµ cho phÐp CPU göi th«ng tin ra ngoµi chip vµ lÊy th«ng tin tõ bªn ngoµi vµo. §iÒu nµy ®−îc thùc hiÖn nhê thanh ghi d÷ liÖu cæng (Port Data Register – PRTxDR). ViÖc viÕt d÷ liÖu vµo thanh ghi PRTxDR sÏ l−u l¹i tr¹ng th¸i d÷ liÖu, mçi bit cho mét ch©n GPIO. Trong chÕ ®é th−êng (standard non-bypass) th× mçi ch©n GPIO sÏ lÆp l¹i bit d÷ liÖu ®ã. NghÜa lµ khi ta viÕt mét gi¸ trÞ vµo trong thanh ghi d÷ liÖu PRTxDR th× ë ®Çu ra cña cæng t−¬ng øng sÏ cã gi¸ trÞ gièng nh− trong thanh ghi d÷ liÖu. §iÖn ¸p thùc ë ch©n ra phô thuéc vµo chÕ ®é ho¹t ®éng cña ch©n vµ t¶i bªn ngoµi ®−îc nèi vµo ch©n ®ã. (Xem cÊu tróc cña 1 ch©n vµo ra ®Ó hiÓu râ thªm) CPU cã thÓ ®äc gi¸ trÞ cña mét cæng b»ng c¸ch ®äc gi¸ trÞ cña thanh ghi PRTxDR. Khi CPU ®äc gi¸ trÞ cña PRTxDR th× gi¸ trÞ ®iÖn ¸p hiÖn thêi cña ch©n vµo ra sÏ ®−îc chuyÓn ®æi sang gi¸ trÞ logic vµ ®−îc tr¶ vÒ cho CPU. Ho¹t ®éng nµy sÏ ®äc gi¸ trÞ ®iÖn ¸p cña ch©n vµo ra chø kh«ng ph¶i lµ ®äc vÒ gi¸ trÞ chèt cña thanh ghi PRTxDR. 63 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN • Vµo ra toµn côc (Global IO) C¸c cæng vµo ra ®a chøc n¨ng còng ®−îc nèi liÒn víi c¸c khèi sè th«ng qua c¸c vµo ra toµn côc. TÝnh n¨ng vµo ra toµn côc cña mçi cæng ®−îc mÆc ®Þnh ë tr¹ng th¸i t¾t. §Ó sö dông tÝnh n¨ng nµy th× cã 2 th«ng sè cÇn ph¶i ®−îc thay ®æi. Thø nhÊt ®Ó cÊu h×nh cho mét ch©n GPIO ho¹t ®éng nh− lµ mét ®Çu vµo toµn côc th× bit lùa chän cæng toµn côc cÇn ph¶i ®−îc set ®Ó yªu cÇu GPIO sö dông thanh ghi PRTxGS. Thø hai lµ chÕ ®é ho¹t ®éng cña GPIO cÇn ph¶i ®−îc ®−a vÒ tr¹ng th¸i cao trë. §Ó cÊu h×nh cho mét ch©n GPIO ho¹t ®éng nh− lµ mét ®Çu ra toµn côc th× bit lùa chän cæng toµn côc cÇn ph¶i ®−îc set lÇn n÷a. Nh−ng trong tr−êng hîp nµy th× chÕ ®é ho¹t ®éng cña GPIO lµ bÊt k× trõ chÕ ®é cao trë. • Vµo ra t−¬ng tù TÝn hiÖu t−¬ng tù cã thÓ ®−îc truyÒn dÉn gi÷a CPU vµ ch©n cña chÝp th«ng qua ch©n AOUT cña khèi. Ch©n nµy ®−îc nèi víi khèi th«ng qua mét ®iÖn trë (kho¶ng 300 ohms). Ch©n vµo ra ®a chøc n¨ng cÇn ph¶i ®−a vÒ chÕ ®é cao trë trong tr−êng hîp nµy. • C¸c ng¾t cña khèi GPIO. Mçi mét khèi GPIO ®Òu cã thÓ ®−îc cÊu h×nh mét c¸ch ®éc lËp cho kh¶ n¨ng ng¾t. C¸c khèi GPIO ®−îc cÊu h×nh cho phÐp lùa chän ng¾t cho tõng ch©n vµ còng cã thÓ lùa chän kiÓu ng¾t phï hîp. NghÜa lµ c¸c khèi cã thÓ sinh ra ng¾t khi ch©n ë møc logic cao, thÊp hoÆc khi nã thay ®æi so víi lÇn ®äc tr−íc. C¸c khèi ®Òu cã mét ®Çu ra ng¾t riªng (INTO), nã ®−îc nèi víi c¸c khèi GPIO kh¸c b»ng mét kiÓu nèi d©y lo¹i OR. Do tÊt c¶ c¸c ch©n ®Òu ®−îc nèi víi nhau theo kiÓu OR ®Ó sö dông chung mét hÖ thèng ng¾t GPIO. Nªn nÕu mét ng¾t GPIO ®−îc chia sÎ cho nhiÒu ch©n vµo ra th× tr×nh phôc vô ng¾t cña ng−êi sö dông cÇn ph¶i sö dông vµi kü thuËt ®−îc thiÕt kÕ s½n ®Ó quyÕt ®Þnh xem lµ ch©n nµo ®−îc chän lµ nguån sinh ng¾t. Sö dông mét ng¾t GPIO yªu cÇu nh÷ng b−íc sau: 1. §Æt chÕ ®é ng¾t cho khèi ch©n GPIO. 2. Më bit ng¾t cho khèi ch©n GPIO. 3. Më bit mÆt n¹ ng¾t cho ng¾t GPIO. 4. X¸c nhËn bit ng¾t toµn côc GIE. ë ph¹m vi khèi GPIO, x¸c nhËn ®−êng ra ng¾t phô thuéc duy nhÊt vµo bit cho phÐp ng¾t vµ tr¹ng th¸i cña ch©n quan hÖ víi sù lùa chän chÕ ®é ng¾t. ë cÊp ®é chip, do tr¹ng th¸i tù nhiªn cña cæng nèi d©y OR, ng¾t GPIO kh«ng ph¶i lµ ng¾t nh¹y theo s−ên hay ng¾t nh¹y theo møc. Chóng cã thÓ ®−îc lùa chän lµ nh¹y theo s−ên nh−ng nh¹y theo møc ph¶i ®−îc th¸o bá khái ®−êng ra ng¾t cña cæng nèi d©y OR. NÕu kh«ng cã ng¾t GPIO nµo ®ang x¸c nhËn, th× mét ng¾t GPIO sÏ ®−îc sinh ra bÊt cø khi nµo bit cho phÐp ng¾t cña mét ch©n GPIO ®−îc set vµ ch©n GPIO chuyÓn sang cao hoÆc thÊp mét c¸ch thÝch hîp. Mét khi ®iÒu nµy x¶y ra, ®−êng ra cña ng¾t INTO sÏ ®−îc kÐo xuèng thÊp ®Ó x¸c nhËn ng¾t GPIO (Gi¶ ®Þnh r»ng c¸c ®iÒu kiÖn sinh ng¾t cña hÖ thèng lµ cho phÐp, nh− lµ cho phÐp ng¾t GPIO toµn côc vµ cho phÐp ng¾t toµn côc). L−u ý r»ng cho phÐp ng¾t ë ch©n cã thÓ x¸c nhËn ®Çu ra ng¾t INTO ngay lËp tøc, nÕu nh− ®iÒu kiÖn chÕ ®é ng¾t ®· s½n sµng xuÊt hiÖn ë ch©n. Mét khi INTO ®−îc kÐo xuèng møc thÊp, nã sÏ tiÕp tôc gi÷ INTO ë møc thÊp cho ®Õn khi mét trong c¸c ®iÒu kiÖn sau ®©y thay ®æi: 64 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN - Bit cho phÐp ng¾t ë ch©n ®−îc xãa - §iÖn ¸p ë ch©n chuyÓn ®æi sang tr¹ng th¸i ®èi lËp - Trong chÕ ®é thay ®æi ng¾t, thanh ghi d÷ liÖu ®−îc ®äc, do ®ã thiÕt lËp møc ®é ng¾t néi t¹i sang tr¹ng th¸i ®èi lËp. - ChÕ ®é ng¾t bÞ thay ®æi do ®ã tr¹ng th¸i hiÖn thêi cña ch©n kh«ng sinh ra ng¾t. Khi mét trong c¸c ®iÒu kiÖn trªn x¶y ra th× ®Çu ra INTO ®−îc gi¶i phãng. T¹i thêi ®iÓm nµy, c¸c ch©n kh¸c (hoÆc chÝnh ch©n nµy) cã thÓ x¸c nhËn ®Çu ra ng¾t cña nã, kÐo ®−êng chung xuèng thÊp ®Ó x¸c nhËn mét ng¾t míi. L−u ý r»ng nÕu mét ch©n ®ang x¸c nhËn ®−êng ra ng¾t INTO vµ khi ®ã mét ch©n kh¸c l¹i x¸c nhËn ®Çu ra ng¾t cña nã th× khi ch©n tr−íc gi¶i phãng ®−êng ra ng¾t cña nã mµ ch©n thø hai ®· ®iÒu khiÓn ®Çu ra ng¾t INTO cña nã th× sÏ kh«ng cã sù thay ®æi nµo ®−îc ph¸t hiÖn ra ë ®Çu ra ng¾t INTO. Tøc lµ sÏ kh«ng cã ng¾t míi nµo ®−îc x¸c nhËn trªn ng¾t GPIO. Chó ý, sö dông AND/OR tr¹ng th¸i cña ch©n GPIO vµ cña bit cho phÐp ng¾t toµn côc ®Ó n¾m b¾t ®−îc toµn bé c¸c ng¾t cña cæng nèi d©y OR trong khèi GPIO. 3.1. M« t¶ cÊu tróc cña mét ch©n vµo ra ®a chøc n¨ng S¬ ®å khèi chÝnh cña mét khèi GPIO ®−îc minh häa trong h×nh 4 -3. L−u ý r»ng mét vµi ch©n kh«ng cã ®ñ c¸c chøc n¨ng nh− h×nh vÏ, phô thuéc vµo kÕt nèi ë bªn trong. H×nh 4 – 3 : S¬ ®å mét khèi GPIO 65 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 4 - 4: S¬ ®å khèi chÕ ®é ng¾t cña GPIO 3.2. C¸c thanh ghi cña GPIO §èi víi mét khèi GPIO ®· ®−îc lùa chän, nh÷ng thannh ghi ®éc lËp ®−îc ®Þnh ®Þa chØ nh− trong b¶ng 4 - 23. Trong phÇn tªn cña thanh ghi, ký hiÖu “x” lµ sè thø tù cña cæng. ®−îc cÊu h×nh theo cÊp ®é chÝp (x=0 tíi 7). DA[1:0] ®−îc quy vµo 2 träng sè nhá nhÊt cña ®Þa chØ thanh ghi. B¶ng 4-23: §Þa chØ bit cña thanh ghi bªn trong XOI 0 0 0 0 1 1 1 1 DA[1:0] 00b 01b 10b 11b 00b 01b 10b 11b Register PRTxDR PRTxIE PRTxGS PRTxDM2 PRTxDM0 PRTxDM1 PRTxIC0 PRTxIC1 Reset to: 0 0 0 1 0 1 0 0 (Name) DIN IE BYP DM2 DM0 DM1 IM0 IM1 Function Data Interrupt Enable Global Select Driver Mode, Bit 2 Drive Mode, Bit 0 Driver Mode, Bit 1 Intrpt. Mask, Bit 0 Intrpt. Mask, Bit 1 3.2.1. Thanh ghi PRTxDR Ghi d÷ liÖu vµo 1 bit trong thanh ghi PRTxDR sÏ lµm cho tr¹ng th¸i ®Çu ra cña ch©n t−¬ng øng ë møc cao (DIN=1) hoÆc ë møc thÊp (DIN=0). Trõ khi chÕ ®é bypass ®−îc lùa chän (hoÆc I2C Enable =1 hay thanh ghi lùa chän toµn côc ®−îc viÕt ë møc cao). ViÖc ®äc gi¸ trÞ cña PRTxDR sÏ tr¶ vÒ gi¸ trÞ thùc tr¹ng th¸i cña ch©n, ®−îc quan s¸t bëi bé ®Öm ®Çu vµo. Gi¸ trÞ ®ã cã thÓ kh«ng gièng víi gi¸ trÞ mong muèn ë ®Çu ra nÕu nh− t¶i ®−îc nèi víi ch©n qu¸ lín. 3.2.2. Thanh ghi PRTxIE Thanh ghi PRTxIE ®−îc dïng ®Ó më vµ ®ãng viÖc cho phÐp ng¾t néi t¹i tíi mét khèi GPIO. Gi¸ trÞ 1 sÏ cho phÐp ng¾t ë ®Çu ra INTO vµ gi¸ trÞ 0 sÏ kh«ng cho phÐp ng¾t ë ®Çu ra INTO do ®ã nã cã thÓ ë tr¹ng th¸i cao trë. 3.2.3. Thanh ghi PRTxGS Thanh ghi PRTxGS ®−îc sö dông ®Ó lùa chän khèi cho sù kÕt nèi tíi ®Çu vµo hoÆc ®Çu ra toµn côc. ViÖc viÕt gi¸ trÞ logic cao vµo thanh ghi nµy sÏ cho phÐp global bypass. NÕu chÕ ®é cæng ra lµ cao trë th× ch©n ®ã ®−îc lùa chän cho ®Çu vµo toµn côc. 66 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN NÕu chÕ ®é cæng ra kh¸c chÕ ®é cao trë th× ch©n ®ã ®−îc lùa chän lµ ®Çu ra toµn côc, bá qua gi¸ trÞ cña thanh ghi d÷ liÖu. (gi¶ sö I2C enable = 0). NÕu thanh ghi ®−îc xãa vÒ kh«ng th× chøc n¨ng vµo ra toµn côc cña ch©n ®ã bÞ khãa 3.2.4. Thanh ghi PRTxDMx Cã 8 chÕ ®é ®iÒu khiÓn cho mçi mét ch©n cña cæng. Ba bit chÕ ®é ®−îc sö dông ®Ó lùa chän mét trong 8 chÕ ®é nãi trªn. Ba bit chÕ ®é ®−îc ph©n chia trong ba thanh ghi kh¸c nhau. (PRTxDM0, PRTxDM1,PRTxDM2). VÞ trÝ t−¬ng øng cña bit trong ba thanh ghi sÏ t−¬ng øng víi vÞ trÝ ch©n ra cña cæng. (VÝ dô ba bit ®iÒu khiÓn cho ch©n P2[1] sÏ lµ bit PRT2DM0[1], PRT2DM1[1], PRT2DM2[2]). Tuy r»ng ba bit nµy ®−îc ph©n chia trong ba thanh ghi kh¸c nhau nh−ng chóng l¹i hay ®−îc sö dông cïng nhau theo c¸c cÆp bit t−¬ng øng. VÝ dô ®Ó xÐt chÕ ®é cho ch©n ra P2[1] th× ta quan t©m ®Õn c¸c bit trong DM2,DM1,DM0 hay DM[2:0]. B¶ng 4-22 sÏ cho ta c¸i nh×n tæng quan vÒ sù ph©n chia nµy. B¶ng 4 - 24: C¸c chÕ ®é ®iÒu khiÓn ch©n ra cña chÝp ChÕ ®é DM[2:0] Tr¹ng th¸i cña ch©n M« t¶ 000b 001b 010b 011b 100b 101b 110b 111b Resistive pull down Strong driver High Impedance Resistive pull up Open drain high Slow strong driver High Impedance, analog Open drain low Kháe ë møc cao, ®iÖn trë treo ë møc thÊp ChÕ ®é kháe ë c¶ møc cao vµ thÊp Trë kh¸ng cao c¶ ë møc cao vµ thÊp, cho phÐp ®Çu vµo sè Kháe ë møc thÊp, ®iÖn trë treo ë møc cao. ChËm, kháe ë møc cao, trë kh¸ng cao ë møc thÊp ChÕ ®é chËm, kháe ë møc thÊp vµ cao. ChÕ ®é cao trë cho c¶ cao vµ thÊp, ®Çu vµo sè bÞ khãa, ChÕ ®é chËm, kháe ë møc thÊp, cao trë ë møc cao. §Ó lùa chän ®Çu vµo t−¬ng tù, chÕ ®é ®iÒu khiÓn cæng ra cÇn ph¶i ®−îc chän lµ mét trong c¸c chÕ ®é cao trë, cã thÓ lµ 010b hoÆc 110b. ChÕ ®é 110b cã mét −u ®iÓm lµ bé ®Öm ®Çu vµo khèi sè bÞ khãa, v× thÕ kh«ng cã dßng ®iÖn “crowbar” ch¹y qua ngay c¶ khi ®Çu vµo t−¬ng tù kh«ng gÇn víi ®−êng nguån. Khi ®Çu vµo sè ®−îc cÇn ®Õn trong nh÷ng ch©n ®−îc dïng nh− ®Çu vµo t−¬ng tù th× nªn sö dông chÕ 010b. Khi chÕ ®é 110b ®−îc sö dông th× ch©n sÏ lu«n ®−îc CPU ®äc nh− lµ mét gi¸ trÞ kh«ng vµ ch©n ®ã sÏ kh«ng thÓ sinh ra ®−îc mét ng¾t h÷u Ých. (Kh«ng hoµn toµn yªu cÇu mét chÕ ®é cao trë cÇn ph¶i ®−îc lùa chän khi ho¹t ®éng víi tÝn hiÖu t−¬ng tù). Víi ®Çu vµo toµn côc sö dông cïng víi vµo ra t−¬ng tù th× chÕ ®é ®iÒu khiÓn cÇn ph¶i ®−îc ®Æt lµ 010b. Khèi vµo ra ®a chøc n¨ng GPIO cung cÊp mét chÕ ®é cao trë mÆc ®Þnh. §iÒu nµy ®¹t ®−îc nhê vµo ¶nh h−ëng cña viÖc reset tr¹ng th¸i cña tÊt c¶ c¸c thanh ghi PRTxDM1 vµ PRTxDM2 vÒ FFh. ChÕ ®é ®iÒu khiÓn resistive ®Æt mét ®iÖn trë nèi tiÕp víi ®Çu ra ë bªn trong, cho ®Çu ra ë møc thÊp (chÕ ®é 000b) hoÆc ®Çu ra ë møc cao (chÕ ®é 011b). ChÕ ®é kháe (strong) 001b cung cÊp mét s−ên lªn nhanh nhÊt vµ chÕ ®é 101b còng cung cÊp mét s−ên xuèng nhanh nhÊt. ChÕ ®é open drain còng ®−îc dïng ®iÒu khiÓn tèc ®é s−ên xuèng. C¸c chÕ ®é ®ã cho phÐp chøc n¨ng cùc m¸ng ®Ó ngá nh− lµ chÕ ®é I2C 111b. (mÆc dï tèc ®é s−ên thÊp vÉn kh«ng ®ñ chËm ®Ó gÆp ®−îc chÕ ®é I2C nhanh ®−îc ®Þnh nghÜa). 3.2.5. Thanh ghi PRTxICx ChÕ ®é ng¾t cña tõng ch©n ®−îc quyÕt ®Þnh bëi c¸c bÝt trong hai thanh ghi PRTxIC0 vµ PRTxIC1. Chóng ®−îc quy vµo lµ IM0 vµ IM1 hay IM[1:0]. 67 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Cã 4 chÕ ®é ng¾t cã thÓ cã cho ch©n cña cæng. Hai bit chÕ ®é ®−îc yªu cÇu ®Ó lùa chän c¸c chÕ ®é nãi trªn vµ tõng cÆp bit nµy ®−îc ph©n chia trong 2 thanh ghi kh¸c nhau (PRTxIC0 vµ PRTxIC1). VÞ trÝ cña bit lµ t−¬ng øng víi vÞ trÝ cña ch©n. VÝ dô ch©n 2 cña cæng 1 sÏ t−¬ng øng víi bit 2 trong c¶ hai thanh ghi PRT1IC0 vµ PRT1IC1. Tõng cÆp bit nµy ®−îc xem nh− lµ mét nhãm. B¶ng sau sÏ cho ta thÊy râ h¬n vÒ c¸c chÕ ®é ng¾t trong GPIO. B¶ng 4 - 25: ChÕ ®é ng¾t cña GPIO ChÕ ®é ng¾t IM[1:0] 00b 01b 10b 11b M« t¶ V« hiÖu hãa ng¾t, kh«ng x¸c nhËn ®Çu ra INTO X¸c nhËn ng¾t khi ch©n ë møc thÊp X¸c nhËn ng¾t khi ch©n ë møc cao X¸c nh¹n ng¾t khi cã sù thay ®æi tr¹ng th¸i logic cña ch©n ChÕ ®é 00b sÏ v« hiÖu hãa ng¾t cña ch©n, kÓ c¶ khi bit cho phÐp ng¾t GPIO lµ 1 (cña thanh ghi PRTxIE). ChÕ ®é 01b cã t¸c dông lµ khèi GPIO sÏ x¸c nhËn mét ®−êng ng¾t (INTO) khi ®iÖn ¸p cña ch©n ë møc thÊp. Bit cho phÐp ®−êng ng¾t cña khèi GPIO ®−îc ®Æt lªn møc cao. ChÕ ®é 10b cã t¸c dông lµ khèi GPIO sÏ x¸c nhËn mét ®−êng ng¾t (INTO) khi ®iÖn ¸p cña ch©n ë møc cao. Bit cho phÐp ®−êng ng¾t cña khèi GPIO ®−îc ®Æt lªn møc cao. ChÕ ®é 11b cã t¸c dông lµ khèi GPIO sÏ x¸c nhËn mét ®−êng ng¾t (INTO) khi ®iÖn ¸p cña ch©n ®èi lËp so víi gi¸ trÞ ®äc tr−íc ®ã. ChÕ ®é nµy thay ®æi theo hai chÕ ®é trªn, tïy thuéc vµo gi¸ trÞ mµ tr−íc ®ã nã ®äc ®−îc tõ cæng trong qu¸ tr×nh ®äc thanh ghi d÷ liÖu cæng (PRTxDR). NÕu tr−íc ®ã nã ®−îc gi¸ trÞ 0 tõ GPIO th× GPIO sÏ chuyÓn sang ng¾t ë møc cao. Cßn nÕu gi¸ trÞ nã ®äc ®−îc tr−íc ®ã lµ 1 th× GPIO sÏ chuyÓn sang ng¾t ë møc thÊp. Gi¸ trÞ tr−íc ®ã cña ch©n lµ 0 GPIO pin interrupt enable set Gi¸ trÞ tr−íc ®ã cña ch©n lµ 1 : cho phÐp ng¾t cña ch©n GPIO Interrupt occus : x¶y ra ng¾t Pin State Waveform : d¹ng xung ë ch©n H×nh 4 - 5: ChÕ ®é ng¾t 11b cña GPIO H×nh 4-5 gi¶ thiÕt r»ng bit cho phÐp ng¾t toµn côc GIE = 1, bit mÆt n¹ ng¾t ®· ®−îc ®Æt = 1, chÕ ®é ng¾t cña GPIO lµ 11b. Sù thay ®æi chÕ ®é ng¾t kh¸c víi c¸c chÕ ®é kh¸c, dùa vµo gi¸ trÞ mµ nã ®äc ®−îc tr−íc ®ã cña ch©n ®Ó quyÕt ®Þnh nÕu nh− tr¹ng th¸i cña ch©n thay ®æi. V× thÕ, cæng chøa ch©n GPIO quan t©m cÇn ph¶i ®−îc ®äc trong suèt qu¸ tr×nh phôc vô ng¾t. NÕu cæng kh«ng ®−îc ®äc th× chÕ ®é ng¾t sÏ chØ ho¹t ®éng ë chÕ ®é cao nÕu gi¸ trÞ tr−íc ®ã lµ 0 vµ ë chÕ ®é møc thÊp nÕu gi¸ trÞ tr−íc ®ã lµ 1. 68 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 4. C¸c bé t¹o dao ®éng 4.1. Bé t¹o dao ®éng chÝnh bªn trong (IMO - Internal Main Oscillator) B¶ng 4 - 26: Thanh ghi cña bé IMO Address 1,E8h Name IMO_TR Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Trim [7:0] Bit 2 Bit 1 Bit 0 Access W:00 §Çu ra cña bé IMO cã 2 lo¹i, mét lo¹i lµ SYSCLK cã thÓ lµ nguån xung nhÞp 24MHz ë bªn trong hay nguån xung nhÞp bªn ngoµi, mét lo¹i lµ SYSCLK2X cã tÇn sè xung nhÞp gÊp ®«i SYSCLK. Khi kh«ng cã ®Çu vµo ®é chÝnh x¸c cao tõ bé dao ®éng th¹ch anh 32 kHz th× ®é chÝnh x¸c cña nguån xung nhÞp 24/48MHz ë bªn trong sÏ lµ +/2.5% ®èi víi d¶i nhiÖt ®é vµ hai møc ®iÖn ¸p ho¹t ®éng (3.3 V +/-0.3V vµ 5.0 V +/-5%). Kh«ng cÇn thªm mét thµnh phÇn bªn ngoµi nµo ®Ó ®¹t ®−îc møc ®é chÝnh x¸c nµy. Cã mét lùa chän ®Ó chèt pha cña bé dao ®éng bªn trong nµy sang bé dao ®éng th¹ch anh bªn ngoµi. V× thÕ viÖc lùa chän th¹ch anh vµ ®é chÝnh x¸c cña nã sÏ quyÕt ®Þnh tÝnh chÝnh x¸c cña bé dao ®éng bªn ngoµi. Bé dao ®éng th¹ch anh bªn ngoµi cÇn ph¶i ®−îc æn ®Þnh tr−íc khi chèt tÇn sè dao ®éng cña bé dao ®éng chÝnh bªn trong vµo nguån xung nhÞp nµy. Bé IMO cã thÓ ®−îc khãa khi sö dông nguån xung nhÞp bªn ngoµi. Bëi vËy, m¹ch nh©n ®«i tÇn sè (SYSCLK2X) cã thÓ ®−îc ng¾t ®Ó tiÕt kiÖm n¨ng l−îng cho hÖ thèng. L−u ý r»ng khi sö dông nguån xung nhÞp bªn ngoµi, nÕu nh− SYSCLK2X ®−îc cÇn ®Õn th× IMO kh«ng thÓ bÞ khãa. 4.1.1. Thanh ghi IMO_TR (Internal Main Oscillator Trim Register) Gi¸ trÞ mÆc ®Þnh cña tÊn sè chÝp cho chÕ ®é ho¹t ®éng 5 v«n ®−îc t¶i vµo thanh ghi IMO_TR t¹i thêi ®iÓm khëi ®éng. Bé IMO sÏ ho¹t ®éng víi ®é sai lÖch riªng trong d¶i ®iÖn ¸p tõ 4.75 ®Õn 5.25 v«n khi gi÷ nguyªn gi¸ trÞ cña thanh ghi nµy. NÕu nh− chÝp ho¹t ®éng ë ®iÖn ¸p thÊp, m· cña ng−êi sö dông cÇn ph¶i thay ®æi néi dung cña thanh ghi nµy. §Ó ho¹t ®éng víi gi¶i ®iÖn ¸p 3.0V +/-0.3V th× ph¶i thùc hiÖn víi mét lÖnh ®äc b¶ng tíi SROM (Supervisor ROM), nã cã thÓ cung cÊp mét gi¸ trÞ c¾t tÇn sè cho chÕ ®é ho¹t ®éng nµy. §Ó ho¹t ®éng gi÷a hai gi¶i ®iÖn ¸p, m· cña ng−êi sö dông cã thÓ tù ®éng thªm vµo gi¸ trÞ tèt nhÊt sö dông hai gi¸ trÞ c¾t tÇn sè cã s½n cña nhµ s¶n xuÊt. Bit 7- 0: Trim. Nh÷ng bit nµy l−u gi÷ gi¸ trÞ c¾t tÇn sè cña bé IMO, gi¸ trÞ cña thanh ghi cµng lín th× tÇn sè dao ®éng cña bé IMO cµng lín. 4.2. Bé t¹o dao ®éng tèc ®é thÊp néi t¹i (ILO - Internal Low Speed Oscillator) B¶ng 4 - 27: Thanh ghi ILO Address Name 1,E9h ILO_TR Bit 7 Bit 6 Bit 5 Bit 4 Bias Trim[1:0] Bit 3 Bit 2 Bit 1 Freq Trim[3:0] Bit 0 Access W:00 ILO lµ mét bé ph¸t xung nhÞp néi t¹i tèc ®é thÊp 32 kHz. Nã cã kh¶ n¨ng sinh ra ng¾t ®Ó ®¸nh thøc chÕ ®é ngñ vµ reset l¹i ®ång hå Watchdog. Bé t¹o dao ®éng nµy còng ®−îc sö dông nh− lµ mét nguån xung nhÞp cho c¸c khèi sè. Bé ILO cã thÓ ho¹t ®éng ë ba chÕ ®é: chÕ ®é b×nh th−êng, chÕ ®é nguån gi¶m hoÆc chÕ ®é t¾t (kh«ng sö dông). ChÕ ®é b×nh th−êng tiªu thô nhiÒu n¨ng l−îng h¬n cho ®é chÝnh x¸c cña tÇn sè xung nhÞp. ChÕ ®é nguån gi¶m lu«n lu«n ®−îc dïng khi chÝp ®ang ë tr¹ng th¸i nguån gi¶m (nghØ) vµ cã thÓ ®−îc lùa chän khi chÝp ®ang ho¹t ®éng, nh−ng nã sÏ ph¸t ra mét nguån xung nhÞp cã ®é chÝnh x¸c kÐm h¬n so víi chÕ ®é b×nh th−êng. 69 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN 4.2.1. Thanh ghi ILO_TR Thanh ghi nµy ®Æt ®é ®iÒu chØnh cho ILO. Gi¸ trÞ mÆc ®Þnh ®−îc ®Æt vµo nh÷ng bit trim cña thanh ghi trong qu¸ tr×nh khëi ®éng. Nã dùa vµo mÆc ®Þnh cña nhµ s¶n xuÊt. Nhµ s¶n xuÊt khuyÕn c¸o ng−êi sö dông kh«ng ®−îc thay ®æi gi¸ trÞ cña thanh ghi nµy. Bit 7 vµ 6: §Ó dµnh (kh«ng dïng ®Õn) Bit 5 vµ 4: Bias Trim. Hai bit ®−îc sö dông ®Ó ®Æt dßng ®iÖn bias trong nguån dßng PTAT. Bit 5 ®−îc nghÞch ®¶o v× thÕ mµ chÕ ®é bias trung b×nh ®−îc lùa chän khi c¶ hai bit = 0. Dßng ®iÖn bias ®−îc ®Æt theo b¶ng sau. B¶ng 4 - 28: Dßng ®iÖn bias trong PTAT Bias Current Medium Bias Maximum Bias Minimum Bias Not Needed * Bit 5 0 0 1 1 Bit 4 0 1 0 1 * Cao h¬n kho¶ng 15% so víi chÕ ®é Minimum Bias. Bit 3 tíi bit 0: Freq Trim. Bèn bit ®−îc sö dông ®Ó c¾t tÇn sè. Bit 0 lµ bit cã träng sè nhá nhÊt, bit 3 lµ bit cã träng sè lín nhÊt. Bit 3 ®−îc nghÞch ®¶o bªn trong thanh ghi, bëi vËy, m· 8h sÏ lµm cho tÊt c¶ c¸c nguån dßng t¾t (tÇn sè = 0 kHz). Mét m· 0h sÏ bËt nguån dßng cã träng sè lín nhÊt (tÇn sè = trung b×nh). Mét m· 7h sÏ bËt tÊt c¶ c¸c nguån dßng (tÇn sè = lín nhÊt). 4.3. Bé t¹o dao ®éng th¹ch anh 32 kHz (ECO) M¹ch t¹o dao ®éng th¹ch anh 32 kHz cho phÐp ng−êi sö dông thay thÕ bé t¹o dao ®éng bªn trong (ILO) víi mét bé t¹o dao ®éng bªn ngoµi víi ®é chÝnh x¸c cao h¬n, gi¸ thµnh thÊp vµ n¨ng l−îng tiªu hao Ýt. B¶ng 4 - 29: C¸c thanh ghi cña bé dao ®éng th¹ch anh Address 1,E0h 1,EBh x,FEh Bit 5 Name Bit 7 Bit 6 OSC_CR0 32k Select PLL Mode No Buzz ECO_TR PSSDC[1:0] CPU_SCR1 Bit 4 Bit 3 Sleep[1:0] Bit 2 Bit 1 Bit 0 Access CPU Speed [2:0] RW: 00 W: 00 IRAMDIS RW: 00 M¹ch t¹o dao ®éng th¹ch anh sö dông mét th¹ch anh gi¸ rÎ vµ 2 tô nhá lµ thµnh phÇn bªn ngoµi. TÊt c¶ c¸c thµnh phÇn kh¸c ®Òu n»m trong chÝp PSoC. Bé t¹o dao ®éng th¹ch anh cã thÓ ®−îc cÊu h×nh ®Ó cung cÊp mét tham chiÕu ®Õn bé t¹o dao ®éng bªn trong (IMO) trong chÕ ®é PLL (Phase Lock Loop) ®Ó t¹o ra nguån xung nhÞp hÖ thèng 24 MHz víi ®é chÝnh x¸c cao h¬n. Ch©n XTALIn vµ XTALOut hç trî kÕt nèi víi th¹ch anh 32.768 kHz. §Ó cã thÓ sö dông bé dao ®éng th¹ch anh bªn ngoµi th× bit 7 cña thanh ghi ®iÒu khiÓn bé dao ®éng OSC_CR0 cÇn ph¶i ®−îc ®Æt = 1 (mÆc ®Þnh lµ 0). Thµnh phÇn bªn ngoµi chØ lµ mét th¹ch anh vµ 2 tô nhá nèi víi Vcc. (xem h×nh vÏ). ChuyÓn ®æi gi÷a bé dao ®éng ngoµi vµ bé dao ®éng trong cã thÓ lµm cho bus hÖ thèng kh«ng ®ång bé. Trong tiÕn tr×nh kÝch ho¹t bé ECO, nã cÇn mét kho¶ng thêi gian t¸ch rêi tr−íc khi ®−îc sö dông nh− lµ mét nguån xung nhÞp 32 kHz. Kho¶ng thêi gian t¸ch rêi nµy ®−îc bæ xung vµo phÇn cøng b»ng Sleep Timer. Vi ch−¬ng tr×nh (Firmware - phÇn mÒm ®−îc n¹p cè ®Þnh trong chÝp) cÇn ph¶i ®−îc thiÕt lËp thêi gian nghØ kho¶ng 1 gi©y (kho¶ng thêi gian lín nhÊt cña ECO), vµ sau ®ã cho phÐp ECO b»ng thanh ghi 70 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN OSC_CR0. T¹i thêi gian nghØ 1 gi©y (ng¾t cña Sleep Timer), chuyÓn m¹ch sang ECO ®−îc t¹o ra bëi phÇn cøng. NÕu sau ®ã ECO kh«ng ho¹t ®éng th× ILO sÏ ®−îc kÝch ho¹t l¹i vµ chuyÓn m¹ch sÏ chuyÓn l¹i víi ILO ngay lËp tøc. C¸c b−íc cña vi ch−¬ng tr×nh cÇn ph¶i thùc hiÖn trong viÖc chuyÓn ®æi gi÷a bé ph¸t xung nhÞp chËm néi t¹i sang bé ph¸t xung nhÞp th¹ch anh 32kHz nh− sau: 1. T¹i thêi ®iÓm reset, chip b¾t ®Çu ho¹t ®éng vµ nã sö dông bé ph¸t xung nhÞp chËm néi t¹i. 2. Lùa chän kho¶ng thêi gian nghØ 1 gi©y b»ng bit[4:3] trong thanh ghi OSC_CRO nh− lµ kho¶ng thêi gian ®Ó æn ®Þnh bé ph¸t xung nhÞp. 3. Cho phÐp bé ph¸p xung nhÞp th¹ch anh 32kHz b»ng c¸ch ®Æt bit 7 trong thanh ghi OSC_CR0 lªn 1. 4. Bé ph¸t xung nhÞp th¹ch anh 32kHz trë thµnh nguån xung nhÞp ®−îc lùa chän t¹i ®iÓm kÕt thóc cña mét gi©y nghØ nãi trªn. Kho¶ng thêi gian nghØ cho phÐp bé ph¸t xung nhÞp cã thêi gian ®Ó æn ®Þnh tr−íc khi nã trë thµnh nguån cung cÊp xung nhÞp. Ng¾t Sleep kh«ng ®−îc më trong khi viÖc chuyÓn ®æi ®ang diÔn ra. Reset l¹i Sleep Timer ®Ó ®¶m b¶o kho¶ng thêi gian nghØ cÇn thiÕt (nÕu nh− nã kh«ng giao tiÕp víi bÊt cø mét hÖ thèng thêi gian thùc nµo). L−u ý r»ng bé ph¸t xung nhÞp tèc ®é thÊp vÉn tiÕp tôc ch¹y cho ®Õn khi chuyÓn h¼n sang bé ph¸t xung nhÞp ngoµi nhê vµo ng¾t cña Sleep Timer. 5. Mét lêi khuyªn lµ nªn ®îi hÕt mét gi©y ®Ó bé ph¸t xung nhÞp æn ®Þnh råi míi cho phÐp chÕ ®é PLL chèt tÇn sè bé ph¸t xung nhÞp néi t¹i víi tÇn sè cña bé ph¸t xung nhÞp th¹ch anh 32kHz. L−u ý: a. Bé ph¸t xung nhÞp néi t¹i sÏ ®−îc chuyÓn trë l¹i ngay lËp tøc b»ng c¸ch viÕt gi¸ trÞ 0 vµo bit ®iÒu khiÓn [32k Select]. b. NÕu thiÕt lËp thÝch hîp ®−îc lùa chän trong PSoC Designer th× nh÷ng b−íc trªn sÏ ®−îc thùc hiÖn tù ®éng trong file boot.asm c. ChuyÓn ®æi ph¹m vi hai bé ph¸t xung nhÞp cã thÓ lµm cho xung nhÞp bus hÖ thèng kh«ng ®ång bé. Nh÷ng chøc n¨ng yªu cÇu xung nhÞp 32k nªn më sau khi ®· chuyÓn ®æi xong. 4.4. Vßng chèt pha - Phase Locked Loop (PLL) B¶ng 4 - 30: Thanh ghi cña Phase Locked Loop Address 1,E0h 1,E2h Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Name Bit 7 Bit 6 OSC_CR0 32k Select PLL Mode No Buzz Sleep[1:0] CPU Speed [2:0] OSC_CR2 PLLGAIN EXTCLKEN IMODIS SYSCCKX2DIS Access RW:00 RW:00 Chøc n¨ng PLL sÏ ph¸t ra xung nhÞp hÖ thèng víi ®é chÝnh x¸c cña th¹ch anh. Nã ®−îc thiÕt kÕ ®Ó cung cÊp mét bé ph¸t xung nhÞp 23.986 MHz khi sö dông víi th¹ch anh 32.768 kHz MÆc dï PLL ¨n theo ®é chÝnh x¸c cña th¹ch anh. Nã vÉn yªu cÇu thêi gian ®Ó chèt vµo tÇn sè chÝp khi khëi ®éng lÇn ®Çu. §é dµi cña thêi gian phô thuéc vµo PLLGAIN ®−îc ®iÒu khiÓn bëi bit 7 trong thanh OSC_CR2. NÕu bit nµy ®−îc gi÷ ë møc thÊp th× thêi gian chèt sÏ nhá h¬n 10ms. NÕu bit nµy ®−îc gi÷ ë møc cao th× thêi gian chèt sÏ lín h¬n 50ms. Sau khi viÖc chèt hoµn tÊt th× bit nµy ®−îc khuyÕn c¸o lµ 71 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN nªn gi÷ ë møc cao ®Ó gi¶m sù bÊt æn ë ®Çu ra. NÕu cã thÓ v−ît qua ®−îc thêi gian chèt dµi h¬n th× bit PLLGAIN cã thÓ ®−îc gi÷ ë møc cao trong suèt thêi gian cßn l¹i. Sau khi bé ph¸t xung nhÞp thach anh bªn ngoµi ®−îc lùa chän vµ ho¹t ®éng th× nh÷ng thñ tôc sau ®©y sÏ cho phÐp chÕ ®é PLL vµ cho phÐp chèt tÇn sè thÝch hîp a. Chän tÇn sè CPU lµ 3 MHz hoÆc nhá h¬n b. Më chÕ ®é PLL c. §îi 10 ms hay 50ms, phô thuéc vµo bit 7 trong thanh ghi OSC_CR2 d. §Æt tÇn sè CPU lªn cao h¬n nÕu muèn. §Ó lµm viÖc nµy th× ta thay ®æi gi¸ trÞ c¸c bit CPU Speed trong thanh ghi OSC_CR0. TÇn sè cña CPU sÏ ®−îc thay ®æi ngay lËp tøc khi nh÷ng bit nµy ®−îc set. NÕu nh÷ng thiÕt lËp thÝch hîp ®−îc lùa chän trong PSoC Designer th× nh÷ng b−íc trªn sÏ ®−îc thùc hiÖn tù ®éng trong file boot.asm 4.5. Sleep and Watchdog B¶ng 4 - 31: Nh÷ng thanh ghi cña Sleep vµ Watchdog. Address Name 0,E0h 0,E3h x,FEh 1,E0h 1,E9h 1,EBh x,FFh INT_MSK0 RES_WDT CPU_SCR1 OSC_CR0 ILO_TR ECO_TR CPU_SCR0 Bit 7 Bit 6 VC3 Sleep 32k Select PLL Mode PSSDC[1:0] GIES Bit 5 GPIO Bit 4 Bit 3 Analog3 Analog2 WDSL_Clear[7:0] No Buzz Sleep[1:0] Bias Trim[1:0] WDRS PORS Sleep Bit 2 Analog1 Bit 1 Analog0 Bit 0 V Monitor IRAMDIS CPU Speed [2:0] Freq Trim[3:0] STOP Access RW:00 W:00 RW:00 RW:00 W:00 W:00 RW:XX ChØ dÉn: X: Gi¸ trÞ sau khi reset nguån lµ kh«ng râ x, Ký tù ‘x’ ®øng tr−íc dÊu phÈy trong tr−êng ®Þa chØ chØ râ r»ng thanh ghi nµy cã thÓ ®−îc truy nhËp mµ kh«ng cÇn biÕt lµ d·y thanh ghi nµo ®ang ®−îc sö dông Môc ®Ých cña chÕ ®é nghØ lµ ®Ó gi¶m n¨ng l−îng tiªu thô trung b×nh cña hÖ thèng ®Õn møc cã thÓ. HÖ thèng ®i vµo chÕ ®é nghØ ®−c khëi t¹o vµ ®iÒu khiÓn bëi vi ch−¬ng tr×nh. Trong tr¹ng th¸i nµy, CPU ®−îc dõng l¹i ë mét biªn giíi lÖnh vµ bé ph¸t xung nhÞp 24/48 MHz, modun bé nhí Flash vµ ®iÖn ¸p tham chiÕu band-gap gi¶m n¨ng l−îng tiªu thô. Khèi PSoC duy nhÊt cßn ho¹t ®éng lµ bé ph¸t xung nhÞp 32 kHz (bªn ngoµi hoÆc bªn trong). Khèi PSoC bÊm giê tõ sù lùa chän xung nhÞp 32kHz vµ m¹ch theo dâi ®iÖn ¸p cung cÊp. C¸c khèi PSoC t−¬ng tù cã hai chÕ ®é gi¶m nguån ®−îc ®iÒu khiÓn bëi vi ch−¬ng tr×nh vµ ®éc lËp víi tr¹ng th¸i nghØ. Khèi continuous time analog cã thÓ vÉn ho¹t ®éng, tõ khi chóng kh«ng yªu cÇu nguån xung nhÞp. Tuy nhiªn, khèi analog SC sÏ kh«ng ho¹t ®éng tõ lóc nguån xung nhÞp néi t¹i cung cÊp cho chóng ngõng ho¹t ®éng. HÖ thèng cã thÓ chØ ®−îc ®¸nh thøc khái chÕ ®é nghØ b»ng mét yªu cÇu ng¾t hoÆc sù kiÖn reset hÖ thèng. §ång hå nghØ cung cÊp nh÷ng ng¾t ®Þnh kú ®Ó cho phÐp hÖ thèng thøc dËy, th¨m dß ngo¹i vi, thùc hiÖn chøc n¨ng thêi gian thùc vµ sau ®ã l¹i ®i vµo chÕ ®é nghØ lÇn n÷a. Ng¾t cña ch©n GPIO, ng¾t theo dâi nguån, ng¾t cña cét khèi t−¬ng tù, vµ nguån xung nhÞp ngoµi hay xung nhÞp 32k ë bªn trong ®−îc sö dông lµm mÉu ®Ó ®ång bé hãa nh÷ng ng¾t cã thÓ ®−îc dïng ®Ó ®¸nh thøc hÖ thèng dËy. M¹ch ®Þnh thêi Watchdog ®−îc thiÕt kÕ ®Ó sinh ra mét ng¾t cøng tíi chÝp sau mét kho¶ng thêi gian ®−îc lËp tr×nh tr−íc, trõ khi nã ®−îc phôc vô mét c¸ch ®Þnh kú trong vi ch−¬ng tr×nh. Chøc n¨ng nµy sÏ reset hÖ thèng nÕu nh− CPU ho¹t ®éng sai. Nã còng cã thÓ reset nÕu nh− hÖ thèng bÞ treo. 72 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN Mét khi bé ®Þnh thêi Watchdog ®−îc më th× nã chØ cã thÓ bÞ ®ãng tõ mét sù kiÖn reset bªn ngoµi (XRES) hay mét sù kiÖn reset nguån (POR). Mét reset cña bé ®Þnh thêi Watchdog sÏ vÉn ®Ó watchdog ho¹t ®éng. Bëi vËy, nÕu watchdog ®−îc sö dông trong mét øng dông th× tÊt c¶ c¸c m· (bao gåm c¶ m· khëi ®Çu) cÇn ph¶i ®−îc viÕt nh− thÓ lµ watchdog ®ang ®−îc më. 4.5.1. M« t¶ cÊu tróc Nh÷ng thµnh phÇn cña chÝp cÇn ph¶i cã khi ho¹t ®éng ë chÕ ®é nghØ vµ watchdog lµ lùa chän nguån xung nhÞp 32kHz (bªn ngoµi hoÆc bªn trong), víi bé ®Þnh thêi sleep, bit sleep trong thanh ghi CPU_SCR0, m¹ch sleep, m¹ch lµm t−¬i band gap (®Ó lµm t−¬i ®iÖn ¸p tham chiÕu mét c¸ch ®Þnh kú), vµ bé ®Þnh thêi watchdog. 4.5.1.1. Lùa chän nguån xung nhÞp 32kHz MÆc ®Þnh nguån xung nhÞp 32kHz ®−îc lÊy tõ bé ph¸t xung nhÞp néi t¹i tèc ®é thÊp (ILO). Cã thÓ lùa chän nguån xung nhÞp lÊy tõ bé ph¸t xung nhÞp ngoµi (ECO). ViÖc lùa chän nµy ®−îc thùc hiÖn b»ng c¸ch thay ®æi gi¸ trÞ bit 7 trong thanh ghi OSC_CR0. Lùa chän ECO lµ nguån xung nhÞp 32kHz sÏ cho phÐp bé ®Þnh thêi sleep vµ ng¾t cña nã dïng trong øng dông thêi gian thùc. Cho dï nguån xung nhÞp nµo ®−îc lùa chän th× nguån xung nhÞp 32kHz còng gi÷ mét vÞ trÝ then chèt trong chøc n¨ng nghØ. Nã ch¹y liªn tôc vµ th−êng xuyªn ®¸nh thøc hÖ thèng dËy, nã còng ®Þnh kú lµm t−¬i l¹i ®iÖn ¸p band gap trong suèt qu¸ tr×nh nghØ. 4.5.1.2. Bé ®Þnh thêi nghØ Bé ®Þnh thêi nghØ lµ mét bé ®Õm tiÕn 15 bit b»ng nguån xung nhÞp 32kHz lùa chän, cã thÓ lµ ILO hoÆc ECO. Bé ®Þnh thêi nµy lu«n lu«n ®−îc ho¹t ®éng. NÕu mét bé ICE ho¹t ®éng ë chÕ ®é gì rèi vµ bit Stop trong thanh ghi OSC_CR0 ®−îc set th× bé ®Þnh thêi nghØ sÏ bÞ v« hiÖu hãa. V× thÕ ng−êi sö dông sÏ kh«ng cã reset th−êng xuyªn cña watchdog khi mét ®iÓm ng¾t ®−îc t×m ra trong tr−êng gì rèi. NÕu ng¾t cña bé ®Þnh thêi nghØ ®−îc cho phÐp, mét ng¾t ®Þnh kú tíi CPU ®−îc sinh ra dùa trªn kho¶ng thêi gian nghØ lùa chän trong thanh ghi OSC_CR0. VÒ mÆt chøc n¨ng th× bé ®Þnh thêi sleep kh«ng cÇn thiÕt ph¶i trùc tiÕp kÕt hîp víi tr¹ng th¸i nghØ. Nã cã thÓ ®−îc dïng nh− lµ mét ng¾t cña bé ®Þnh thêi ®a môc ®Ých cho dï hÖ thèng cã ®ang ë tr¹ng th¸i nghØ hay kh«ng. Tr¹ng th¸i reset cña bé ®Þnh thêi sleep lµ mét gi¸ trÞ ®Õm ®Õn 0. Cã hai c¸ch ®Ó reset bé ®Þnh thêi Sleep. Mét lµ bÊt cø reset phÇn cøng nµo, vÝ dô nh− reset nguån (POR), reset ngoµi hay watchdog reset. Hai lµ reset bé ®Þnh thêi Sleep b»ng vi ch−¬ng tr×nh. LÖnh viÕt gi¸ trÞ 38h vµo thanh ghi RES_WDT sÏ reset bé ®Þnh thêi Sleep (l−u ý: bÊt cø lÖnh ghi gi¸ trÞ vµo thanh ghi RES_WDT ®Òu reset l¹i bé ®Þnh thêi watchdog). Xãa bé ®Þnh thêi Sleep cã thÓ ®−îc lµm bÊt cø lóc nµo ®Ó ®ång bé hãa ho¹t ®éng cña bé ®Þnh thêi Sleep víi xö lý cña CPU. Mét vÝ dô hay cña viÖc nµy lµ sau khi reset nguån (POR), vÝ dô CPU ®−îc gi÷ chËm ®Ó chê ®iÖn ¸p t¨ng ®ñ, còng rÊt quan träng. H¬n n÷a, mt phÇn quan träng cña phÇn më ®Çu ch−¬ng tr×nh cã thÓ ®−îc yªu cÇu. Trong khi ®ã th× bé ®Þnh thêi Sleep sÏ b¾t ®Çu ®Õm ngay sau khi POR vµ nã sÏ ®Õm ®Õn mét gi¸ trÞ nµo ®ã t¹i thêi ®iÓm m· cña ng−êi sö dông ®−îc thi hµnh. Trong tr−êng hîp nµy nªn xãa bé ®Þnh thêi Sleep tr−íc khi cho phÐp ng¾t khëi ®Çu cña bé ®Þnh thêi Sleep. §Ó ch¾c ch¾n r»ng kho¶ng nghØ ®Çu tiªn sÏ b»ng kho¶ng thêi gian ®Æt tr−íc. 4.5.1.3. Bit Sleep ChÕ ®é nghØ ®−îc khëi ®Çu trong vi ch−¬ng tr×nh b»ng c¸ch thiÕt lËp bit Sleep trong thanh ghi ®iÒu khiÓn hÖ thèng (CPU_SCR0). §Ó ®¸nh thøc hÖ thèng th× bit nµy 73 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN cÇn ph¶i ®−îc xãa ®ång thêi víi bÊt cø mét ng¾t ®−îc phÐp nµo. Tuy nhiªn, cã hai tÝnh n¨ng ®Æc biÖt cña bit nµy ®¶m b¶o ho¹t ®éng cña Sleep ®óng c¸ch. Thø nhÊt, lÖnh ghi ®Ó ®Æt bit nµy lªn 1 ®−îc ng¨n chÆn, nÕu mét ng¾t ®¶m nhiÖm giíi h¹n lÖnh ®ã. Thø hai, cã mét khãa liªn ®éng ®Ó ®¶m b¶o r»ng mét khi nã ®−îc set, bit sleep cã thÓ kh«ng bÞ xãa bëi mét ng¾t ®Õn trõ khi lµ m¹ch nghØ ®· hoµn thµnh xong mét chuçi sù kiÖn nghØ vµ tÝn hiÖu gi¶m n¨ng l−îng cña hÖ thèng ®−îc x¸c nhËn. §iÒu nµy sÏ ng¨n chÆn m¹ch sleep khái ng¾t trong gi÷a tiÕn tr×nh hÖ thèng ®ang ë tr¹ng th¸i gi¶m n¨ng l−îng vµ cã lÏ sÏ ®Ó hÖ thèng ë mét tr¹ng th¸i kh«ng x¸c ®Þnh. 4.5.2. L−u ý khi sö dông chÕ ®é nghØ trong øng dông Nh÷ng phÇn sau ®©y sÏ nªu vµi l−u ý vÒ chÕ ®é nghØ vµ liªn hÖ cña nã víi vi ch−¬ng tr×nh vµ phÇn mÒm øng dông. a. NÕu mét ng¾t ®ang chê, ®−îc cho phÐp vµ ®−îc lËp lÞch ®Ó thi hµnh t¹i lÖnh cuèi cïng sau khi viÕt vµo bit sleep th× hÖ thèng sÏ kh«ng ®i vµo chÕ ®é nghØ. LÖnh sÏ vÉn ®−îc thi hµnh, nh−ng nã sÏ kh«ng thÓ set ®−îc bit sleep trong thanh ghi CPU_SCR0. Thay vµo ®ã th× lÖnh sÏ ®−îc thi hµnh vµ t¸c ®éng cña lÖnh nghØ bÞ bá qua. b. Bit cho phÐp ng¾t toµn côc kh«ng cÇn thiÕt ph¶i ®−îc më ®Ó ®¸nh thøc hÖ thèng khái tr¹ng th¸i nghØ. C¸c bit cho phÐp ng¾t ®éc lËp víi nhau vµ cã kh¶ n¨ng ®−îc thiÕt lËp trong thanh ghi mÆt n¹ che ng¾t. NÕu bit cho phÐp ng¾t toµn côc kh«ng ®−îc set th× CPU sÏ kh«ng thùc hiÖn tr×nh phôc vô ng¾t liªn quan tíi ng¾t ®ã. Tuy nhiªn, hÖ thèng sÏ bÞ ®¸nh thøc vµ tiÕp tôc thi hµnh c¸c lÖnh t¹i thêi ®iÓm mµ nã ®i vµo tr¹ng th¸i nghØ. Trong tr−êng hîp nµy th× ng−êi sö dông ph¶i xãa ng¾t chê mét c¸ch thñ c«ng, hoÆc cã thÓ më bit cho phÐp ng¾t toµn côc råi sau ®ã ®Ó cho CPU thi hµnh tr×nh phôc vô ng¾t. NÕu mét ng¾t chê kh«ng ®−îc xãa th× nã sÏ vÉn tiÕp tôc x¸c nhËn, vµ mÆc dï bit sleep ®−îc ghi vµ chuçi sù kiÖn nghØ ®−îc thi hµnh, ngay khi chÝp ®i vµo chÕ ®é nghØ, bit sleep sÏ bÞ xãa bëi ng¾t chê vµ hÖ thèng sÏ tho¸t khái chÕ ®é nghØ. c. Khi thøc dËy, lÖnh n»m ngay sau lÖnh nghØ sÏ ®−îc thi hµnh tr−íc tr×nh phôc vô ng¾t (nÕu cho phÐp). LÖnh n»m ngay sau lÖnh nghØ ®−îc dõng l¹i tr−íc khi hÖ thèng ®i vµo chÕ ®é nghØ. Bëi vËy, khi mét ng¾t x¶y ra vµ ®¸nh thøc hÖ thèng dËy th× lÖnh ngay sau lÖnh nghØ sÏ ®−îc thi hµnh vµ khi ®ã th× tr×nh phôc vô ng¾t còng ®−îc thi hµnh. (NÕu bit cho phÐp ng¾t toµn côc ®−îc set, thùc hiÖn lÖnh sÏ chØ tiÕp tôc t¹i n¬i mµ nã bá dë tr−íc khi ®i vµo chÕ ®é nghØ.) d. NÕu chÕ ®é PLL ®−îc më th× tÇn sè cña CPU cÇn ph¶i ®−îc gi¶m xuèng 3MHz tr−íc khi ®i vµo chÕ ®é nghØ. KhuyÕn c¸o lµ nªn ®îi 10ms sau khi hÖ thèng thøc dËy ®Ó ®¶m b¶o tÇn sè ho¹t ®éng b×nh th−êng cña CPU ®−îc kh«i phôc. e. N¨ng l−îng cña phÇn t−¬ng tù cÇn ph¶i ®−îc t¾t b»ng vi ch−¬ng tr×nh tr−íc khi ®i vµo chÕ ®é nghØ. ChÕ ®é nghØ cña hÖ thèng sÏ kh«ng ®iÒu khiÓn m¶ng t−¬ng tù. Cã nhiÒu c¸ch ®iÒu khiÓn nguån n¨ng l−îng ®éc lËp cho mçi khèi t−¬ng tù vµ nhiÒu c¸ch ®iÒu khiÓn nguån n¨ng l−îng chÝnh trong khèi tham chiÕu. C¸ch ®iÒu khiÓn nguån n¨ng l−îng cÇn ph¶i ®−îc thùc hiÖn bëi vi ch−¬ng tr×nh. f. NÕu bit cho phÐp ng¾t toµn côc bÞ ®ãng, nã chØ cã thÓ ®−îc më mét c¸ch an toµn sau lÖnh viÕt vµo bit sleep. Nã th−êng g©y r¾c rèi khi cã mét ng¾t ë lÖnh cuèi cïng ngay tr−íc lÖnh ghi vµo bit sleep. §iÒu nµy cã nghÜa lµ t¹i thêi ®iÓm quay vÒ tõ ng¾t, lÖnh nghØ sÏ ®−îc thi hµnh vµ cã thÓ bá qua bÊt cø mét sù chuÈn bÞ nµo cña vi ch−¬ng tr×nh cÇn thiÕt ph¶i thùc hiÖn theo tr×nh tù ®Ó ®i vµo chÕ ®é nghØ. §Ó ng¨n chÆn ®iÒu nµy th× cÇn ph¶i cÊm c¸c ng¾t tr−íc khi ®i vµo chÕ ®é 74 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN nghØ. Sau khi chuÈn bÞ cho chÕ ®é nghØ, cho phÐp ng¾t toµn côc vµ viÕt vµo bit sleep víi hai lÖnh liªn tiÕp sau: and f,~01h // v« hiÖu hãa ng¾t toµn côc (chuÈn bÞ cho chÕ ®é nghØ, cã thÓ cã nhiÒu lÖnh) or f,01h mov // cho phÐp ng¾t toµn côc reg[ffh],08h // ®−a hÖ thèng vµo chÕ ®é nghØ. Do kho¶ng thêi gian cña lÖnh cho phÐp ng¾t toµn côc lµ rÊt nhá nªn khã cã thÓ cã mét ng¾t sÏ x¶y ra ngay sau lÖnh trªn. Ng¾t sím nhÊt cã thÓ x¶y ra lµ sau lÖnh tiÕp theo (lµ lÖnh ®−a hÖ thèng vµo chÕ ®é nghØ) ®· ®−îc thi hµnh. Bëi vËy, nÕu mét ng¾t ®ang chê vµ lÖnh nghØ ®−îc thi hµnh nh− ®−îc m« t¶ trong môc (a) th× lÖnh nghØ sÏ ®−îc bá qua. LÖnh ®Çu tiªn ®−îc thi hµnh sau tr×nh phôc vô ng¾t sÏ lµ lÖnh n»m ngay sau lÖnh nghØ. 4.5.2.1. §¸nh thøc hÖ thèng. Mét khi hÖ thèng ®· ë tr¹ng th¸i nghØ th× sù kiÖn duy nhÊt cã thÓ ®¸nh thøc hÖ thèng lµ mét ng¾t. Bit cho phÐp ng¾t toµn côc trong thanh ghi CPU_F kh«ng cÇn thiÕt ph¶i ®−îc set. BÊt cø mét ng¾t kh«ng bÞ che nµo ®Òu cã thÓ ®¸nh thøc hÖ thèng dËy. Mét lùa chän cho CPU lµ cã thi hµnh ng¾t ®ã hay kh«ng sau khi hÖ thèng bÞ ®¸nh thøc. D·y sù kiÖn ®¸nh thøc hÖ thèng ®−îc ®ång bé víi xung nhÞp 32kHz víi môc ®Ých t¹o ®é trÔ khi khëi ®éng l¹i, cho phÐp Module bé nhí Flash cã ®ñ thêi gian ®Ó kh«i phôc l¹i møc n¨ng l−îng ho¹t ®éng tr−íc khi CPU ph¸t ra lÖnh ®äc ®Çu tiªn. Mét lý do kh¸c cho sù trÔ ®ã lµ ®Ó cho phÐp IMO, Bandgap, m¹ch LVD /POR cã thêi gian æn ®Þnh tr−íc khi ®i vµo ho¹t ®éng. D·y sù kiÖn ®¸nh thøc hÖ thèng ®−îc chØ ra trong H×nh 4-6 vµ ®−îc m« t¶ nh− sau: a. Khi mét ng¾t ®¸nh thøc x¶y ra vµ ®−îc ®ång bé hãa víi s−ên ©m cña xung nhÞp 32kHz. b. T¹i s−ên d−¬ng tiÕp theo cña nguån xung nhÞp, tÝn hiÖu gi¶m nguån hÖ thèng ®−îc ®¶o l¹i. Module b nhí Flash, IMO vµ m¹ch bandgap ®−îc cÊp n¨ng l−îng ë tr¹ng th¸i ho¹t ®éng b×nh th−êng. c. T¹i s−ên d−¬ng tiÕp theo cña xung nhÞp 32kHz, gi¸ trÞ chÝnh x¸c râ rµng cña POR vµ LVD ®· æn ®Þnh vµ ®−îc lÊy mÉu. d. T¹i s−ên ©m tiÕp theo cña xung nhÞp 32kHz ( sau kho¶ng 15 us), tÝn hiÖu BRQ ®−îc ®¶o l¹i nhê m¹ch logic nghØ. Trªn s−ên tiÕp theo cña CPUCKL, tÝn hiÖu BRA ®−îc ®¶o l¹i bëi CPU vµ lÖnh thi hµnh tiÕp tôc. Thêi gian ®¸nh thøc hÖ thèng lµ tõ 75 ®Õn 105 us. 75 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 4-6: BiÒu ®å d·y c¸c sù kiÖn ®¸nh thøc hÖ thèng 4.5.2.2. Lµm t−¬i bandgap Trong suèt qu¸ tr×nh ho¹t ®éng b×nh th−êng, m¹ch bandgap cung cÊp cho hÖ thèng mét ®iÖn ¸p tham chiÕu (VREF) ®Ó sö dông cho c¸c khèi t−¬ng tù, bé nhí Flash vµ m¹ch ph¸t hiÖn ®iÖn ¸p thÊp (LVD). B×nh th−êng ®Çu ra cña bandgap ®−îc nèi trùc tiÕp ®Õn tÝn hiÖu VREF. Tuy nhiªn, trong tr¹ng th¸i ngñ th× khèi sinh ®iÖn ¸p tham chiÕu vµ m¹ch ph¸t hiÖn ®iÖn ¸p thÊp hoµn toµn ®−îc gi¶m n¨ng l−îng. Khèi bandgap vµ LVD ®−îc më l¹i ®Þnh kú trong suèt qu¸ tr×nh nghØ ®Ó theo dâi ®iÖn ¸p thÊp. §iÒu nµy ®−îc thùc hiÖn b»ng c¸ch bËt bandgap mét c¸ch ®Þnh kú, cho mét kho¶ng thêi gian khëi ®éng b»ng nguyªn mét xung nhÞp 32kHz, vµ kÕt nèi nã tíi VREF ®Ó lµm t−¬i l¹i ®iÖn ¸p tham chiÕu trong nguyªn mét xung nhÞp 32kHz tiÕp theo nh− ®−îc chØ trong H×nh 4-7. Trong kho¶ng thêi gian xung nhÞp thø hai cña chu kú lµm t−¬i, m¹ch LVD ®−îc cho phÐp ®Ó æn ®Þnh trong suèt kho¶ng thêi gian xung nhÞp 32kHz ë møc cao. Trong kho¶ng thêi gian xng nhÞp thø hai ë møc thÊp, ng¾t LVD ®−îc cho phÐp x¶y ra. 76 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN - Bandgap is turn on, but not yet connected to VREF: Bandgap ®−îc bËt, nh−ng vÉn ch−a ®−îc nèi víi VREF - Bandgap output is connected to VREF. Voltage is refreshed: §Çu ra bandgap ®−îc nèi víi VREF - Bandgap is powered down until next refresh cycle: Bandgap ®−îc gi¶m nguån cho ®Õn chï kú lµm t−¬i tiÕp theo. - VREF is slowly leaking to ground: VREF bÞ rß rØ ®iÖn ¸p xuèng ®Êt mét c¸ch chËm ch¹p. - Low voltage monitors are active during CLK32 low: Bé theo dâi ®iÖn ¸p thÊp ®−îc kÝch ho¹t trong xuèt qu¸ tr×nh CLK32 ë møc thÊp. H×nh 4-7: Ho¹t ®éng lµm t−¬i bandgap Tèc ®é lµm t−¬i tû lÖ víi tèc ®é xung nhÞp 32kHz vµ ®−îc ®iÒu khiÓn bëi chu kú nhiÖm vô nghØ cña hÖ thèng. (Power System Sleep Duty Cycle). PSSDC, bit[7:6] cña thanh ghi ECO_TR. B¶ng 4 - 32 liÖt kª mét sè gi¸ trÞ cã thÓ lùa chän. ThiÕt lËp mÆc ®Þnh (128 lÇn ®Õm cho bé ®Þnh thêi nghØ) thÝch hîp víi nhiÒu øng dông, dßng ®iÖn tiªu tèn trung b×nh d−íi 5uA. B¶ng 4-32: B¶ng lùa chän chu kú nhiÖm vô nghØ cña hÖ thèng PSSDC 00b (mÆc ®Þnh) 01b 10b 11b 4.5.2.3. Sè ®Õm cña bé ®Þnh thêi nghØ 256 1024 64 16 Thêi gian t−¬ng øng 8 ms 31.2 ms 2 ms 500 us Bé ®Þnh thêi Watchdog (WDT) T¹i thêi ®iÓm khëi ®éng chÝp, WDT khëi ®Çu lµ bÞ ®ãng. Bit PORS trong thanh ghi ®iÒu khiÓn hÖ thèng sÏ ®iÒu khiÓn më WDT. T¹i lóc khëi ®éng bit PORS khëi ®Çu ®−îc ®Æt lµ 1, nã chØ râ r»ng hoÆc sù kiÖn POR hay XRES ®· x¶y ra. WDT ®−îc më b»ng c¸ch xãa bit PORS. Mét khi bit nµy ®−îc xãa vµ bé ®Þnh thêi watchdog ®i vµo ho¹t ®éng th× nã sÏ kh«ng thÓ bÞ ®ãng (v× bit PORS kh«ng thÓ ®−îc set lªn 1 bëi vi ch−¬ng tr×nh, nã chØ cã thÓ bÞ xãa). C¸ch duy nhÊt ®Ó v« hiÖu hãa chøc n¨ng watchdog sau khi nã ®· ®−îc më lµ th«ng qua POR hay XRES. MÆc dï WDT bÞ v« hiÖu hãa tõ lóc POR hay XRES cho ®Õn hÕt m· khëi ®Çu, nh−ng toµn bé m· ch−¬ng tr×nh nªn ®−îc viÕt nh− thÓ lµ nã ®ang ®−îc më. (WDT cÇn ph¶i ®−îc xãa mét c¸ch ®Þnh kú). Lý do lµ v× trong m· khëi ®Çu sau sù kiÖn WDR (watchdog reset), bé ®Þnh thêi watchdog ®−îc më vµ tÊt c¶ c¸c m· ch−¬ng tr×nh cÇn ph¶i biÕt ®iÒu nµy. Bé ®Þnh thêi watchdog b»ng ba lÇn ®Õm ®Çu ra ng¾t cña bé ®Þnh thêi nghØ vµ v× vËy, kho¶ng thêi gian watchdog b»ng 3 lÇn kho¶ng thêi gian lùa chän cña bé ®Þnh thêi nghØ. Khi ng¾t cña bé ®Þnh thêi nghØ ®−îc x¸c nhËn, bé ®Þnh thêi watchdog b¾t ®Çu t¨ng. Khi bé ®Õm ®Õm ®Õn ba, gi¸ trÞ ®Õm cuèi ®−îc x¸c nhËn. Gi¸ trÞ ®Õm cuèi nµy ®−îc ghi nhËn bëi xung nhÞp 32kHz. Bëi v©y, tÝn hiÖu reset Watchdog sÏ chuyÓn lªn møc cao sau xung nhÞp 32kHz tiÕp theo vµ ®−îc gi÷ ®Ó x¸c nhËn trong mét chu kú. Bé Flip-Flop ghi nhËn gi¸ trÞ ®Õm cuèi cña WDT kh«ng ®−îc reset bëi tÝn hiÖu reset WDT khi nã ®−îc x¸c nhËn, nh−ng l¹i ®−îc reset bëi bÊt cø mét reset nµo kh¸c. 77 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 4 - 8: Watchdog reset Mét khi ®−îc cho phÐp th× WDT cÇn ph¶i ®−îc xãa mét c¸ch ®Þnh kú bëi vi ch−¬ng tr×nh. §iÒu nµy ®−îc thùc hiÖn víi mét lÖnh viÕt vµo thanh ghi RES_WDT. LÖnh viÕt nµy lµ mét gi¸ trÞ kh«ng phô thuéc, v× thÕ bÊt cø lÖnh ghi nµo ®Òu xãa bé ®Þnh thêi watchdog. NÕu v× mét lý do nµo ®ã mµ vi ch−¬ng tr×nh kh«ng xãa watchdog trong kho¶ng thêi gian lùa chän th× m¹ch WDT sÏ sinh ra mét WDR (watchdog reset) tíi chÝp. WDR t−¬ng ®−¬ng víi nh÷ng reset kh¸c. TÊt c¶ c¸c thanh ghi ®Òu ®−îc ®−a vÒ gi¸ trÞ mÆc ®Þnh. Mét ®iÒu quan träng cÇn ph¶i nhí vÒ reset Watchdog lµ nã lµ khëi ®Çu RAM cã thÓ bÞ ®ãng (IRAM trong thanh ghi CPU_SCR1). Trong tr−êng hîp nµy, thµnh phÇn cña SRAM kh«ng bÞ ¶nh h−ëng, v× thÕ khi WDR x¶y ra th× c¸c biÕn cña ch−¬ng tr×nh tån t¹i xuyªn qua sù kiÖn reset nµy. Trong øng dông thùc hµnh th× ph¶i biÕt r»ng kho¶ng thêi gian cña bé ®Þnh thêi Watchdog n»m vµo kho¶ng 2 ®Õn 3 lÇn kho¶ng thêi gian cña bé ®Þnh thêi nghØ. C¸ch duy nhÊt ®Ó ®¶m b¶o kho¶ng thêi gian watchdog b»ng ®ñ 3 lÇn kho¶ng thêi gian cña bé ®Þnh thêi nghØ lµ xãa bé ®Þnh thêi nghØ khi xãa thanh ghi WDT. Nh−ng ®iÒu nµy lµ kh«ng thÓ trong nh÷ng øng dông sö dông bé ®Þnh thêi nghØ nh− lµ mét ®ång hå thêi gian thùc. Trong tr−êng hîp nµy th× vi ch−¬ng tr×nh xãa thanh ghi WDT mµ kh«ng xãa bé ®Þnh thêi nghØ, ®iÒu nµy cã thÓ x¶y ra t¹i bÊt cø ®iÓm nµo trong kho¶ng thêi gian nghØ. NÕu nã x¶y ra ë gÇn gi¸ trÞ cuèi cña bé ®Þnh thêi nghØ th× kÕt qu¶ lµ kho¶ng thêi gian WDT sÏ chØ lín h¬n 2 lÇn kho¶ng thêi gian nghØ. 78 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN Ch−¬ng 5: HÖ thèng khèi PSoC Sè CÊu tróc cña hÖ thèng sè. H×nh vÏ d−íi ®©y m« t¶ cÊu tróc cao nhÊt cña hÖ thèng sè trong PSoC. Mçi thµnh phÇn ®Òu ®−îc m« t¶ chi tiÕt trong phÇn nµy. H×nh 5 - 1: S¬ ®å khèi m« t¶ cÊu tróc c¸c khèi sè trong PSoC C¸c thanh ghi sè B¶ng sau ®©y liÖt kª toµn bé c¸c thanh ghi sè cña hÖ thèng sè trong PSoC B¶ng 5 - 1: B¶ng thèng kª c¸c thanh ghi sè Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 GLOBAL DIGITAL INTERCONNECT (GDI) REGISTERS 1,D0h 1,D1h 1,D2h 1,D3h GDI_O_IN GDI_E_IN GDI_O_OU GDI_E_OU GIONOUT7 GIENOUT7 GOOUTIN7 GOEUTIN7 x,B0h x,B1h x,B2h x,B3h x,B4h x,B5h x,B6h x,B8h x,B9h x,BAh x,BBh x,BCh x,BDh RDI0RI RDI0SYN RDI0IS RDI0LT0 RDI0LT1 RDI0RO0 RDI0RO1 RDI1RI RDI1SYN RDI1IS RDI1LT0 RDI1LT1 RDI1RO0 GIONOUT6 GIENOUT6 GOOUTIN6 GOEUTIN6 Bit 1 Bit 0 GIONOUT5 GIONOUT4 GIONOUT3 GIONOUT2 GIONOUT1 GIONOUT0 GIENOUT5 GIENOUT4 GIENOUT3 GIENOUT2 GIENOUT1 GIENOUT0 GOOUTIN5 GOOUTIN4 GOOUTIN3 GOOUTIN2 GOOUTIN1 GOOUTIN0 GOEUTIN5 GOEUTIN4 GOEUTIN3 GOEUTIN2 GOEUTIN1 GOEUTIN0 DIGITAL ROW REGISTERS RI3[1:0] RI2[1:0] RI1[1:0] RI0[1:0] RI3SYN RI2SYN RI1SYN RI0SYN BCSEL[1:0] IS3 IS2 IS1 IS0 LUT1[3:0] LUT0[3:0] LUT3[3:0] LUT2[3:0] GOO5EN GOO1EN GOE5EN GOE1EN GOO4EN GOO0EN GOE4EN GOE0EN GOO7EN GOO3EN GOE7EN GOE3EN GOO6EN GOO2EN GOE6EN GOE2EN RI3[1:0] RI2[1:0] RI1[1:0] RI0[1:0] RI3SYN RI2SYN RI1SYN RI0SYN BCSEL[1:0] IS3 IS2 IS1 IS0 LUT1[3:0] LUT0[3:0] LUT3[3:0] LUT2[3:0] GOO5EN GOO1EN GOE5EN GOE1EN GOO4EN GOO0EN GOE4EN GOE0EN Access RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 79 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN x,BEh RDI1RO1 GOO7EN GOO3EN GOE7EN GOE3EN GOO6EN DIGITAL BLOCK REGISTERS GOO2EN GOE6EN GOE2EN Data and Control Register 0,20h DBB00DR0 Data[7:0] 0,21h DBB00DR1 Data[7:0] 0,22h DBB00DR2 Data[7:0] 0,23h DBB00CR0 Function Control/Status bit for selected function[6:0] Enable 1,20h DBB00FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,21h DBB00IN Data Input[3:0] Clock Input[3:0] 1,22h DBB00OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] 0,24h DBB01DR0 Data[7:0] 0,25h DBB01DR1 Data[7:0] 0,26h DBB01DR2 Data[7:0] 0,27h DBB01CR0 Function Control/Status bit for selected function[6:0] Enable 1,24h DBB01FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,25h DBB01IN Data Input[3:0] Clock Input[3:0] 1,26h DBB01OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] 0,28h DBB02DR0 Data[7:0] 0,29h DBB02DR1 Data[7:0] 0,2Ah DBB02DR2 Data[7:0] 0,2Bh DBB02CR0 Function Control/Status bit for selected function[6:0] Enable 1,28h DBB02FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,29h DBB02IN Data Input[3:0] Clock Input[3:0] 1,2Ah DBB02OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] 0,2Ch DBB03DR0 Data[7:0] 0,2Dh DBB03DR1 Data[7:0] 0,2Eh DBB03DR2 Data[7:0] 0,2Fh DBB03CR0 Function Control/Status bit for selected function[6:0] Enable 1,2Ch DBB03FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,2Dh DBB03IN Data Input[3:0] Clock Input[3:0] 1,2Eh DBB03OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] 0,30h DBB10DR0 Data[7:0] 0,31h DBB10DR1 Data[7:0] 0,32h DBB10DR2 Data[7:0] 0,33h DBB10CR0 Function Control/Status bit for selected function[6:0] Enable 1,30h DBB10FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,31h DBB10IN Data Input[3:0] Clock Input[3:0] 1,32h DBB10OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] 0,34h DBB11DR0 Data[7:0] 0,35h DBB11DR1 Data[7:0] 0,36h DBB11DR2 Data[7:0] 0,37h DBB11CR0 Function Control/Status bit for selected function[6:0] Enable 1,34h DBB11FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,35h DBB11IN Data Input[3:0] Clock Input[3:0] 1,36h DBB11OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] 0,38h DBB12DR0 Data[7:0] 0,39h DBB12DR1 Data[7:0] 0,3Ah DBB12DR2 Data[7:0] 0,3Bh DBB12CR0 Function Control/Status bit for selected function[6:0] Enable 1,38h DBB12FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,39h DBB12IN Data Input[3:0] Clock Input[3:0] 1,3Ah DBB12OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] 0,3Ch DBB13DR0 Data[7:0] 0,3Dh DBB13DR1 Data[7:0] 0,3Eh DBB13DR2 Data[7:0] 0,3Fh DBB13CR0 Function Control/Status bit for selected function[6:0] Enable 1,3Ch DBB13FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,3Dh DBB13IN Data Input[3:0] Clock Input[3:0] 1,3Eh DBB13OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] Interrupt Mask Register 0,E1h INT_MSK1 DCB13 DCB12 DBB11 DBB10 DCB03 DCB02 DBB01 DBB00 ChØ dÉn: RW : 00 # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 RW : 00 Ký hiÖu ‘ # ’ cã nghÜa lµ truy nhËp theo mét c¸ch riªng. Ký hiÖu ‘ x ‘ n»m trong tr−êng ®Þa chØ cho biÕt thanh ghi cã thÓ ®−îc truy nhËp mµ kh«ng cÇn biÕt d·y thanh ghi nµo ®ang ®−îc sö dông. 80 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 1. Liªn kÕt sè toµn côc (Global Digital Interconnect - GDI) GDI lµ mét cÊu h×nh kÕt nèi trong d·y tÝn hiÖu hçn hîp PSoC cã møc ®é chung nhÊt. B¶ng 5 - 2: C¸c thanh ghi cña GDI Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access 1,D0h 1,D1h 1,D2h 1,D3h GDI_O_IN GDI_E_IN GDI_O_OU GDI_E_OU GIONOUT7 GIENOUT7 GOOUTIN7 GOEUTIN7 GIONOUT6 GIENOUT6 GOOUTIN6 GOEUTIN6 GIONOUT5 GIENOUT5 GOOUTIN5 GOEUTIN5 GIONOUT4 GIENOUT4 GOOUTIN4 GOEUTIN4 GIONOUT3 GIENOUT3 GOOUTIN3 GOEUTIN3 GIONOUT2 GIENOUT2 GOOUTIN2 GOEUTIN2 GIONOUT1 GIENOUT1 GOOUTIN1 GOEUTIN1 GIONOUT0 GIENOUT0 GOOUTIN0 GOEUTIN0 RW : 00 RW : 00 RW : 00 RW : 00 GDI bao gåm bèn ®−êng bus 8 bit. Hai ®−êng bus lµ bus ®Çu vµo cho phÐp tÝn hiÖu ®i tõ ch©n cña chÝp vµo CPU. Nh÷ng bus nµy ®−îc gäi lµ Global Input Odd (GIO[7:0]) vµ Global Input Even (GIE[7:0]). Hai bus kh¸c lµ bus ®Çu ra cho phÐp tÝn hiÖu ®i tõ CPU ®Õn c¸c ch©n cña chÝp. Chóng ®−îc gäi lµ Global Output Odd (GOO[7:0]) vµ Global Output Even (GOE[7:0]). Tõ “Odd” vµ “Even” trong phÇn tªn cña bus chØ ra r»ng cæng nµo cña chÝp cã thÓ ®−îc kÕt nèi víi bus. Nh÷ng ®−êng Bus cã tªn “Odd” ®−îc kÕt nèi víi tÊt c¶ c¸c cæng ®−îc ®¸nh sè lÎ vµ nh÷ng bus cã tªn “Even” ®−îc kÕt nèi víi tÊt c¶ c¸c cæng ®−îc ®¸nh sè ch½n. L−u ý r»ng tõ Odd vµ Even trong tªn bus ¸m chØ c¸c cæng chø kh«ng ph¶i lµ c¸c ch©n. Cã hai ®Çu tíi tÝn hiÖu GDI vµ c¸c ch©n cña cæng. Mét ®Çu ®Çu ®−îc cÊu h×nh nh− lµ mét nguån hay mét ®Ých. VÝ dô, mét ch©n GPIO cã thÓ cÊu h×nh ®Ó cÊp tÝn hiÖu cho ®Çu vµo toµn côc hay nhËn tÝn hiÖu tõ mét ®Çu ra toµn côc. Cã hai kiÓu tÝn hiÖu ®−îc kÕt nèi víi bus toµn côc. Nh÷ng khèi sè ®−îc sö dông nh− lµ mét nguån hay ®Ých cho m¹ng toµn côc, vµ xung nhÞp hÖ thèng cã thÓ ®−îc dïng ®Ó cung cÊp xung nhÞp cho nh÷ng thµnh phÇn cÇn thiÕt th«ng qua m¹ng toµn côc. B¶ng 5-3: Sù s¾p xÕp bus toµn côc tíi c¸c cæng Global Bus GIO[7:0], GOO[7:0] GIE[7:0], GOE[7:0] Ports P1, P3, P5 P0, P2, P4 V× cã nhiÒu cæng cïng kÕt nèi víi mét ®−êng bus toµn côc nªn cã mét c¸ch s¾p ®Æt mét tíi nhiÒu (one-to-many) gi÷a c¸c ®−êng nèi cña mét bus toµn côc vµ c¸c ch©n cña cæng vµo ra. VÝ dô, NÕu GIO[1] ®−îc sö dông ®Ó ®−a mét tÝn hiÖu ®Çu vµo tíi mét khèi PSoC sè th× mét trong c¸c ch©n P1[1], P3[1], P5[1] cã thÓ ®−îc sö dông. §Çu ra còng t−¬ng tù nh− vËy. VÝ dô, NÕu GOE[3] ®−îc sö dông ®Ó mang mét tÝn hiÖu tõ khèi PSoC sè ®Õn mét ch©n vµo ra th× bÊt cø ch©n nµo trong c¸c ch©n P0[3], P2[3], P4[3] ®Òu cã thÓ ®−îc sö dông. 1.1. M« t¶ kiÕn tróc. Môc ®Ých chÝnh cña biÓu ®å khèi kiÕn tróc lµ ®Ó trao ®æi th«ng tin gi÷a bus toµn côc vµ c¸c cæng vµo ra. L−u ý r»ng bÊt cø ®Çu vµo nµo ®Òu cã thÓ ®−îc nèi víi ®Çu ra t−¬ng øng cña nã, sö dông bé ®Öm ba tr¹ng th¸i ®−îc ®Æt ë 4 gãc cña h×nh vÏ. H¬n n÷a, ®Çu ra toµn côc cã thÓ ®−îc nèi t¾t víi ®Çu vµo toµn côc b»ng bé ®Öm ba tr¹ng th¸i. H×nh ch÷ nhËt n»m ë gi÷a cña h×nh vÏ ®¹i diÖn cho d·y c¸c khèi PSoC sè. 81 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 5-2: S¬ ®å cÊu tróc liªn kÕt vµo ra sè 1.2. Thanh ghi GDI_O_IN vµ GDI_E_IN Sö dông bit thiÕt lËp trong c¸c thanh ghi GDI_x_IN, m¹ng ®Çu vµo toµn côc cã thÓ ®−îc cÊu h×nh ®Ó kÝch thÝch m¹ng ®Çu ra t−¬ng øng cña nã. VÝ dô, GIE[7] → GOE[7]. Cã tÊt c¶ 16 bit ®iÒu khiÓn kh¶ n¨ng kÕt nèi gi÷a ®Çu vµo toµn côc vµ ®Çu ra toµn côc. Nh÷ng bit nµy n»m trong thanh ghi GDI_O_IN vµ GDI_E_IN. B¶ng sau ®©y liÖt kª ý nghÜa cña tõng vÞ trÝ bit trong thanh ghi GDI_O_IN vµ GDI_E_IN. 82 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN B¶ng 5-4: Thanh ghi GDI_x_IN GDI_x_IN[0] GDI_x_IN[1] GDI_x_IN[2] GDI_x_IN[3] GDI_x_IN[4] GDI_x_IN[5] GDI_x_IN[6] GDI_x_IN[7] 1.3. 0: Kh«ng kÕt nèi gi÷a GIx[0] vµ GOx[0] 1: Cho phÐp GIx[0] kÝch thÝch GOx[0] 0: Kh«ng kÕt nèi gi÷a GIx[1] vµ GOx[1] 1: Cho phÐp GIx[1] kÝch thÝch GOx[1] 0: Kh«ng kÕt nèi gi÷a GIx[2] vµ GOx[2] 1: Cho phÐp GIx[2] kÝch thÝch GOx[2] 0: Kh«ng kÕt nèi gi÷a GIx[3] vµ GOx[3] 1: Cho phÐp GIx[3] kÝch thÝch GOx[3] 0: Kh«ng kÕt nèi gi÷a GIx[4] vµ GOx[4] 1: Cho phÐp GIx[4] kÝch thÝch GOx[4] 0: Kh«ng kÕt nèi gi÷a GIx[5] vµ GOx[5] 1: Cho phÐp GIx[5] kÝch thÝch GOx[5] 0: Kh«ng kÕt nèi gi÷a GIx[6] vµ GOx[6] 1: Cho phÐp GIx[6] kÝch thÝch GOx[6] 0: Kh«ng kÕt nèi gi÷a GIx[7] vµ GOx 1: Cho phÐp GIx[7] kÝch thÝch GOx[7] Thanh ghi GDI_O_OU vµ GDI_E_OU. Nh÷ng bit cÊu h×nh thªm ®−îc ®−a ra trong thanh ghi GDI_x_OU. Nã cho phÐp ®Çu ra toµn côc kÝch thÝch ®Çu vµo toµn côc t−¬ng øng. VÝ dô, GOE[7] → GIE[7]. Cã tÊt c¶ 16 bit ®iÒu khiÓn kh¶ n¨ng kÕt nèi gi÷a ®Çu ra toµn côc vµ ®Çu vµo toµn côc. Nh÷ng bit nµy n»m trong thanh ghi GDI_O_OU vµ GDI_E_OU. B¶ng sau ®©y liÖt kª ý nghÜa cña tõng vÞ trÝ bit trong thanh ghi GDI_O_OU vµ GDI_E_OU. B¶ng 5-5: Thanh ghi GDI_x_OU GDI_x_OU[0] GDI_x_OU[1] GDI_x_OU[2] GDI_x_OU[3] GDI_x_OU[4] GDI_x_OU[5] GDI_x_OU[6] GDI_x_OU[7] 0: Kh«ng kÕt nèi gi÷a GIx[0] vµ GOx[0] 1: Cho phÐp GOx[0] kÝch thÝch GIx[0] 0: Kh«ng kÕt nèi gi÷a GIx[1] vµ GOx[1] 1: Cho phÐp GOx[1] kÝch thÝch GIx[1] 0: Kh«ng kÕt nèi gi÷a GIx[2] vµ GOx[2] 1: Cho phÐp GOx[2] kÝch thÝch GIx[2] 0: Kh«ng kÕt nèi gi÷a GIx[3] vµ GOx[3] 1: Cho phÐp GOx[3] kÝch thÝch GIx[3] 0: Kh«ng kÕt nèi gi÷a GIx[4] vµ GOx[4] 1: Cho phÐp GOx[4] kÝch thÝch GIx[4] 0: Kh«ng kÕt nèi gi÷a GIx[5] vµ GOx[5] 1: Cho phÐp GOx[5] kÝch thÝch GIx[5] 0: Kh«ng kÕt nèi gi÷a GIx[6] vµ GOx[6] 1: Cho phÐp GOx[6] kÝch thÝch GIx[6] 0: Kh«ng kÕt nèi gi÷a GIx[7] vµ GOx 1: Cho phÐp GOx[7] kÝch thÝch GIx[7] Kh¶ n¨ng cÊu h×nh cña GDI kh«ng cho phÐp ®−êng nèi ch½n vµ ®−êng nèi lÎ hay ®−êng nèi víi chØ sè kh¸c nhau nèi ®−îc víi nhau. Ch¼ng h¹n nh÷ng kÕt nèi sau ®©y lµ kh«ng thÓ cã trong chÝp PSoC. GOE[7] → GIO[7] GOE[0] → GIE[7] 83 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN 2. KÕt nèi d·y c¸c khèi sè (Array Digital Interconnect - ADI) D·y c¸c khèi PSoC sö dông mét kiÕn tróc leo thang ®−îc thiÕt kÕ ®Ó hç trî tõ mét tíi bèn hµng khèi PSoC sè. PhÇn kÕt nèi theo d·y (ADI) kh«ng cã mét sù kÕt nèi cã thÓ cÊu h×nh nµo c¶, bëi vËy nã còng ch¼ng sö dông mét thanh ghi nµo c¶. 2.1. M« t¶ kiÕn tróc KÕt nèi d·y khèi sè ®−îc chØ ra trong H×nh 5-3. ADI kh«ng thÓ cÊu h×nh ®−îc, bëi vËy th«ng tin trong ch−¬ng nµy chØ gióp cho ng−êi ®äc hiÓu vÒ cÊu tróc cña nã mµ th«i. H×nh 5-3: CÊu tróc d·y c¸c khèi PSoC sè Nh÷ng thµnh viªn khc nhau trong hä PSoC sÏ cã sù biÕn ®æi sè l−îng c¸c khèi PSoC trong mét d·y. Nh÷ng khèi nµy ®−îc s¾p xÕp theo c¸c hµng vµ ADI cung cÊp mét kiÕn tróc liªn kÕt chung gi÷a liªn kÕt sè toµn côc (GDI) vµ liªn kÕt khèi sè theo hµng (RDI). Kh«ng cÇn biÕt sè l−îng hµng cã trong mét chÝp, ®iÒu quan träng lµ c¸c hµng PSoC ®−îc liªn kÕt víi vµo ra toµn côc theo mét c¸ch gièng nhau. Sù liªn kÕt nµy t¹o ra mét vÞ trÝ duy nhÊt cña hµng vµ ®−îc gi¶i thÝch nh− sau: a. §Þa chØ thanh ghi: C¸c hµng vµ khèi trong chÝp cÇn ph¶i cã mét ®Þa chØ thanh ghi duy nhÊt. b. Møc −u tiªn ng¾t: Mçi mét khèi PSoC cã mét vector ng¾t vµ mét møc −u tiªn ng¾t. VÞ trÝ cña hµng trong d·y quyÕt ®Þnh ®é −u tiªn cña c¸c khèi PSoC trong mét hµng. Hµng ®−îc ®¸nh sè cµng thÊp th× ®é −u tiªn ng¾t cµng cao vµ ®Þa chØ vector ng¾t cµng thÊp. 84 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN c. TruyÒn tin phæ biÕn: Mçi mét hµng PSoC sè cã mét m¹ng truyÒn tin ë bªn trong vµ cã thÓ ®−îc sö dông ®éc lËp ë bªn trong bëi mét trong bëi bèn khèi PSoC sè. HoÆc cã thÓ ®−îc sö dông ë bªn ngoµi, trong tr−êng hîp cã n¬i cÇn sö dông m¹ng truyÒn tin tõ bªn ngoµi, nguån truyÒn tin cã thÓ lµ mét trong nh÷ng hµng kh¸c trong d·y. Bëi vËy, tïy thuéc vµo vÞ trÝ cña hµng trong d·y, sÏ cã sù lùa chän kh¸c nhau cho viÖc sö dông m¹ng truyÒn tin phæ biÕn. d. VÞ trÝ trong d·y: Khèi ®Çu tiªn trong hµng ®Çu tiªn vµ khèi cuèi cïng trong hµng cuèi cïng kh«ng ®−îc nèi víi nhau, bëi vËy, d·y c¸c khèi sè kh«ng cã d¹ng nh− lµ mét ®−êng vßng. Khèi ®Çu tiªn trong d·y cã ®Çu vµo tõ khèi tr−íc ®−îc h¹ xuèng møc thÊp. NÕu cã hµng thø hai trong d·y th× ®Çu ra tíi khèi tiÕp theo sÏ ®−îc nèi víi khèi tiÕp theo. Khèi cuèi cïng cña hµng cuèi cïng cã ®Çu ra tíi khèi tiÕp theo ®−îc h¹ xuèng møc thÊp. 85 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN 3. KÕt nèi c¸c khèi sè theo hµng (Row Digital Interconnect – RDI) Môc nµy chØ nãi vÒ mét hµng khèi PSoC sè. Nã kh«ng nãi vÒ chøc n¨ng, ®Çu vµo hay ®Çu ra cho nh÷ng khèi PSoC riªng biÖt. B¶ng 5-6: Thanh ghi hµng PSoC sè Address x,xxh x,xxh x,xxh x,xxh x,xxh x,xxh x,xxh Name RDI0RI RDI0SYN RDI0IS RDI0LT0 RDI0LT1 RDI0RO0 RDI0RO1 Bit 7 Bit 6 RI3[1:0] GOO5EN GOO7EN Bit 5 Bit 4 RI2[1:0] BCSEL[1:0] LUT1[3:0] LUT3[3:0] GOO1EN GOE5EN GOE1EN GOO3EN GOE7EN GOE3EN Bit 3 Bit 2 Bit 1 Bit 0 RI1[1:0] RI0[1:0] RI3SYN RI2SYN RI1SYN RI0SYN IS3 IS2 IS1 IS0 LUT0[3:0] LUT2[3:0] GOO4EN GOO0EN GOE4EN GOE0EN GOO6EN GOO2EN GOE6EN GOE2EN Access RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 RW : 00 ChØ dÉn: Ký tù ‘x’ tr−íc dÊu phÈy trong tr−êng ®Þa chØ cho biÕt r»ng thanh ghi nµy cã ë c¶ hai d·y thanh ghi Ký tù ‘xx’ sau dÊu phÈy trong tr−êng ®Þa chØ cho biÕt r»ng cã nhiÒu thanh ghi nh− vËy. Cã rÊt nhiÒu tÝn hiÖu ghÐ qua hµng PSoC sè trªn ®−êng ®i cña nã hoÆc tõ nh÷ng khèi PSoC riªng biÖt. Tuy nhiªn, cã mét sè l−îng nhá c¸c tÝn hiÖu ghÐ qua m¹ch cÊu h×nh ®−îc trªn ®−êng ®i cña nã tíi vµ tõ c¸c khèi PSoC sè. M¹ch cÊu h×nh ®−îc cho phÐp kÕt nèi mÒm dÎo h¬n gi÷a khèi sè vµ bus toµn côc. 3.1. M« t¶ kiÕn tróc Trong H×nh 5-4, bªn trong mét hµng khèi PSoC sè, cã bèn khèi PSoC. Hai khèi ®Çu lµ lo¹i C¬ b¶n (DBB). Hai khèi sau lµ lo¹i truyÒn th«ng (DCB). H×nh vÏ m« t¶ kÕt nèi gi÷a c¸c khèi PSoC trong mét hµng. H×nh 5-4: Chi tiÕt vÒ nhãm bèn khèi sè PSoC Trong H×nh 5-5, chi tiÕt vÒ nhãm bèn khèi PSoC ®−îc thay b»ng mét hép ë t©m cña h×nh vÏ víi tªn gäi “4 PSoC Block Grouping” 86 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN H×nh 5-5: CÊu tróc mét hµng khèi PSoC sè 3.2. C¸c thanh ghi ®−îc ®Þnh nghÜa Hai ®Çu vµo duy nhÊt tíi hµng khèi PSoC sè cã thÓ cÊu h×nh ®−îc lµ hai ®−êng bus 8 bit ®Çu vµo toµn côc Global Input Even vµ Global Input Odd. Hai ®Çu ra duy nhÊt cã thÓ cÊu h×nh ®−îc cña hµng khèi PSoC sè lµ hai ®−êng bus 8 bit ®Çu ra toµn côc Global Output Even vµ Global Output Odd. H×nh 5-5 minh häa mèi liªn hÖ gi÷a tÝn hiÖu toµn côc vµ tÝn hiÖu cña hµng. Chó ý phÝa bªn tr¸i cña H×nh 5-5 lµ ®Çu vµo toµn côc (GIE[n] vµ GIO[n]) lµ nh÷ng ®Çu vµo tíi bé chän ®a thµnh phÇn vµo 4 ra 1. §Çu ra cña nh÷ng bé chän nµy l¹i lµ ®Çu vµo cña hµng (RI[x]). Do cã bèn bé chän vµo 4 ra 1 nªn mçi bé cã mét sè ®Çu vµo nhÊt ®Þnh nªn mét hµng cã thÓ truy nhËp ®Õn tÊt c¶ c¸c ®−êng ®Çu vµo toµn côc trong chÝp PSoC. 3.2.1. Thanh ghi RDIxRI. Nh÷ng bit lùa chän dïng ®Ó ®iÒu khiÓn bèn bé chän ®−îc ®Æt trong thanh ghi RDIxRI, ký tù ‘x’ biÓu thÞ cho chØ sè hµng t−¬ng øng. B¶ng 5-7 liÖt kª ý nghÜa cña bèn thiÕt lËp cã thÓ cho mçi bé chän ®a thµnh phÇn. B¶ng 5-7: Thanh ghi RDIxRI RI0[1:0] 0h: GIE[0] 1h: GIE[4] 2h: GIO[0] 3h: GIO[4] 0h: GIE[1] 87 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN RI1[1:0] RI2[1:0] RI3[1:0] 1h: GIE[5] 2h: GIO[1] 3h: GIO[5] 0h: GIE[2] 1h: GIE[6] 2h: GIO[2] 3h: GIO[6] 0h: GIE[3] 1h: GIE[7] 2h: GIO[3] 3h: GIO[7] 3.2.2. Thanh ghi RDIxSYN MÆc ®Þnh mçi ®Çu vµo cña hµng ®Òu ®−îc ®ång bé víi xung nhÞp hÖ thèng. Tuy nhiªn, ng−êi sö dông cã thÓ lùa chän ®Ó v« hiÖu hãa sù ®ång bé hãa nµy b»ng c¸ch thiÕt lËp bit thÝch hîp trong thanh ghi RDIxSYN. B¶ng 5-8: Thanh ghi RDIxSYN RI3SYN RI2SYN RI1SYN RI0SYN 0: §Çu vµo cña hµng thø 3 ®−îc ®ång bé hãa víi xung nhÞp hÖ thèng 24MHz 1: §Çu vµo cña hµng thø 3 kh«ng ®ång bé hãa víi xung nhÞp cña hÖ thèng 0: §Çu vµo cña hµng thø 2 ®−îc ®ång bé hãa víi xung nhÞp hÖ thèng 24MHz 1: §Çu vµo cña hµng thø 2 kh«ng ®ång bé hãa víi xung nhÞp cña hÖ thèng 0: §Çu vµo cña hµng thø 1 ®−îc ®ång bé hãa víi xung nhÞp hÖ thèng 24MHz 1: §Çu vµo cña hµng thø 1 kh«ng ®ång bé hãa víi xung nhÞp cña hÖ thèng 0: §Çu vµo cña hµng thø 0 ®−îc ®ång bé hãa víi xung nhÞp hÖ thèng 24MHz 1: §Çu vµo cña hµng thø 0 kh«ng ®ång bé hãa víi xung nhÞp cña hÖ thèng Thanh ghi RDIxRI vµ RDIxSYN lµ hai thanh ghi duy nhÊt t¸c ®éng ®Õn tÝn hiÖu ®Çu vµo cña hµng khèi PSoC sè. TÊt c¶ c¸c thanh ghi kh¸c ®Òu liªn quan tíi cÊu h×nh tÝn hiÖu ®Çu ra. 3.2.3. Thanh ghi RDIxIS Nh− ®· ®−îc ®Ò cËp, mçi mét b¶ng tra cøu (Lookup table - LUT) cã hai ®Çu vµo, mét ®Çu vµo cã thÓ cÊu h×nh ®−îc (®Çu vµo A) cßn mét ®Çu vµo cè ®Þnh víi ®Çu ra cña hµng. §Çu vµo cã thÓ cÊu h×nh ®−îc cña LUT chän gi÷a mét ®Çu ra ®¬n vµ mét ®Çu vµo ®¬n. B¶ng 5-9 liÖt kª lùa chän cho mçi LUT trong mét hµng. Nh÷ng bit nµy ®−îc ®Æt tªn lµ IS (Input Select). §Çu vµo cè ®Þnh cña LUT lu«n lu«n lµ RO[sè cña LUT + 1]. VÝ dô, ®Çu vµo cè ®Þnh cña LUT0 lµ RO[1], ®Çu vµo cè ®Þnh cña LUT1 lµ RO[2]… vµ LUT 3 lµ RO[0]. B¶ng 5-9: Thanh ghi RDIxIS BCSEL[1:0] IS3 IS2 IS1 IS0 0: Hµng 0 ®iÒu khiÓn m¹ng truyÒn tin néi bé 1: Hµng 1 ®iÒu khiÓn m¹ng truyÒn tin néi bé 2: Hµng 2 ®iÒu khiÓn m¹ng truyÒn tin néi bé 3: Hµng 3 ®iÒu khiÓn m¹ng truyÒn tin néi bé 0: §Çu vµo 3 cña LUT 3 lµ RO[3] 1: §Çu vµo 3 cña LUT 3 lµ RI[3] 0: §Çu vµo 2 cña LUT 2 lµ RO[2] 1: §Çu vµo 2 cña LUT 2 lµ RI[2] 0: §Çu vµo 1 cña LUT 1 lµ RO[1] 1: §Çu vµo 1 cña LUT 1 lµ RI[1] 0: §Çu vµo 0 cña LUT 0 lµ RO[0] 1: §Çu vµo 0 cña LUT 0 lµ RI[0] • Khi gi¸ trÞ cña BCSELL b»ng víi sè hµng th× bé ®Öm ba tr¹ng th¸i sÏ ®iÒu khiÓn m¹ng truyÒn tin cña hµng ®−îc v« hiÖu hãa tõ ®Çu vµo lùa chän cña bé Mux vµ v× thÕ mét khèi trong hµng cã thÓ m¹ng truyÒn tin néi bé. 88 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 3.2.4. Thanh ghi RDIxLTx §Çu ra tõ hµng PSoC sè lµ mét bit phøc t¹p h¬n ®Çu vµo. H×nh 5-5 miªu t¶ ®Çu ra cña hµng PSoC sè. Chó ý trong h×nh vÏ th× khèi ®−îc ®Æt tªn lµ ‘Lx’. Khèi nµy ®¹i diÖn cho mét b¶ng tra cøu 2 ®Çu vµo (LUT). LUT cho phÐp ng−êi sö dông ®Þnh râ mét trong sè 16 hµm logic cã thÓ ¸p dông víi hai ®Çu vµo. §Çu ra cña hµm logic sÏ quyÕt ®Þnh gi¸ trÞ sÏ ®−îc ®−a tíi bus ®Çu ra toµn côc Global Output Even vµ Global Output Odd. B¶ng 5-10 miªu t¶ mèi quan hÖ gi÷a bèn bit cÊu h×nh cña b¶ng tra cøu vµ kÕt qu¶ cña hµm logic. Mét sè ng−êi sö dông nhËn ra r»ng rÊt dÔ ®Ó quyÕt ®Þnh thiÕt lËp bit thÝch hîp b»ng c¸ch nhí c¸c bit cÊu h×nh ®¹i diÖn theo cét ®Çu ra trong mét b¶ng ch©n lý gåm 2 ®Çu vµo. B¶ng 5-10 liÖt kª b¶y gi¸ trÞ minh häa cho mèi liªn hÖ gi÷a cét ®Çu ra cña b¶ng ch©n lý víi bit cÊu h×nh ®Çu vµo. B¶ng 5-10: VÝ dô vÒ b¶ng ch©n lý LUT A B AND OR A+ B A& B A B True 0 0 1 1 0 1 0 1 0 0 0 1 1h 0 1 1 1 7h 1 0 1 1 Bh 0 0 1 0 2h 0 0 1 1 3h 0 1 0 1 5h 1 1 1 1 Fh LUT[3:0] B¶ng 5-11: Thanh ghi RDIxLTx LUTx[3:0] 0h: 0000: FALSE 1h: 0001: A .AND. B 2h: 0010: A .AND. B 3h: 0011: A 4h: 0100: A .AND B 5h: 0101: B 6h: 0110: A .XOR. B 7h: 0111: A .OR. B 8h: 1000: A .NOR. B 9h: 1001: A .XNOR. B Ah: 1010: B Bh: 1011: A .OR. B Ch: 1100: A Dh: 1101: A .OR. B Eh: 1110: A .NAND. B Fh: 1111: TRUE 3.2.5. Thanh ghi RDIxROx. Nh÷ng bit cÊu h×nh cuèi cïng cho ®Çu ra tõ d·y c¸c khèi PSoC sè ®−îc cho trong hai thanh ghi RDIxROx. Hai thanh ghi nµy l−u gi÷ 16 bit vµ cã thÓ ®éc lËp cho phÐp bé ®Öm ba tr¹ng th¸i kÕt nèi víi tÊt c¶ 8 ®−êng ra ch½n vµ 8 ®−êng ra lÎ. §iÒu nµy cã nghÜa lµ bÊt cø hµng nµo ®Òu cã thÓ kÕt nèi víi ®Çu ra toµn côc. L−u ý r»ng bé kÝch thÝch ba tr¹ng th¸i ®−îc dïng ®Ó kÝch thÝch ®−êng ra toµn côc. Bëi vËy, ®èi víi chÝp cã h¬n mét hµng khèi PSoC sè ®Ó cã nhiÒu bé kÝch thÝch trªn mét ®−êng ra toµn côc th× tr¸ch nhiÖm cña ng−êi sö dông lµ ph¶i kh¼ng ®Þnh r»ng chÝp ch−a ®−îc cÊu h×nh víi nhiÒu bé kÝch thÝch trªn bÊt cø mét ®Çu ra toµn côc nµo. 89 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN 4. C¸c khèi PSoC sè (Digital Blocks) B¶ng 5-12: Thanh ghi cña khèi PSoC sè Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Thanh ghi ®iÒu khiÓn vµ d÷ liÖu 0,xxh DBB00DR0 Data[7:0] 0,xxh DBB00DR1 Data[7:0] 0,xxh DBB00DR2 Data[7:0] 0,xxh DBB00CR0 Function Control/Status bit for selected function[6:0] Enable Thanh ghi mÆt n¹ che ng¾t 0,E1h INT_MSK1 DCB13 DCB12 DBB11 DBB10 DCB03 DCB02 DBB01 DBB00 Thanh ghi cÊu h×nh 1,xxh DBB00FN Data Invert BCEN End/Single Mode[1:0] Function[2:0] 1,xxh DBB00IN Data Input[3:0] Clock Input[3:0] 1,xxh DBB00OU AUXCLK AUXEN AUX IO Select[1:0] OUTEN Output Select[1:0] ChØ dÉn: Access # : 00 W : 00 # : 00 # : 00 RW : 00 RW : 00 RW : 00 RW : 00 ‘#’ truy nhËp bit theo mét c¸ch riªng ‘xx’ ký tù ®i sau dÊu phÈy trong tr−êng ®Þa chØ cho biÕt r»ng cã nhiÒu thanh ghi nh− vËy TÊt c¶ c¸c khèi PSoC sè ®Òu cã thÓ ®−îc cÊu h×nh ®Ó thùc hiÖn bÊt cø mét chøc n¨ng nµo trong 5 chøc n¨ng c¬ b¶n sau: bé ®Þnh thêi, bé ®Õm, bé ®iÒu chÕ ®é réng xung, PRS, kiÓm tra chu kú thõa (CRC). Nh÷ng chøc n¨ng nµy ®−îc sö dông b»ng c¸ch cÊu h×nh mét khèi PSoC ®éc lËp hay mét chuçi vµi khèi PSoC liÒn nhau ®Ó thùc hiÖn chøc n¨ng lín h¬n 8 bit. C¸c khèi PSoC sè truyÒn th«ng cã thªm hai chøc n¨ng n÷a ®ã lµ: SPI chñ, SPI tí hay truyÒn th«ng kh«ng ®ång bé hai chiÒu. Mçi mét chøc n¨ng cña khèi PSoC sè ®Òu ®éc lËp víi c¸c khèi chøc n¨ng kh¸c. Cã tíi 7 thanh ghi ®−îc sö dông ®Ó quyÕt ®Þnh chøc n¨ng vµ tr¹ng th¸i cña khèi PSoC. Nh÷ng thanh ghi nµy ®−îc ®−a ra trong B¶ng 5-12. C¸c thanh ghi chøc n¨ng cña khèi sè lu«n lu«n kÕt thóc víi ch÷ FN, tªn cña nh÷ng thanh ghi ®Çu vµo lu«n lu«n kÕt thóc víi ch÷ IN vµ cuèi cïng tªn cña thanh ghi ®Çu ra lu«n lu«n kÕt thóc víi ch÷ OU. Mçi khèi PSoC cã ba thanh ghi (DR0, DR1, DR2) vµ mét thanh ghi ®iÒu khiÓn (CR0). ý nghÜa cña nh÷ng bit trong thanh ghi nµy phô thuéc nhiÒu vµo chøc n¨ng mµ nã ®¶m nhiÖm. Ngoµi 7 thanh ghi ®iÒu khiÓn chøc n¨ng vµ tr¹ng th¸i cña khèi PSoC sè cßn cã thªm mét bit che ng¾t cho mçi mét khèi sè. Mçi mét khèi PSoC cã duy nhÊt mét vector ng¾t vµ v× vËy cã thÓ t¹o cho nã mét tr×nh phôc vô ng¾t. 4.1. M« t¶ cÊu tróc ë møc cao nhÊt, nh÷ng thµnh phÇn chÝnh cña khèi PSoC sè lµ ®−êng d÷ liÖu, bé chän ®Çu vµo, bé chia ®Çu ra, bus ba tr¹ng th¸i PRSCRC, giao diÖn bus hÖ thèng, c¸c thanh ghi cÊu h×nh, vµ d¶i tÝn hiÖu. 4.1.1. Bé chän ®Çu vµo Nh×n chung, mçi mét chøc n¨ng ®Òu cã mét ®Çu vµo xung nhÞp vµ mét ®Çu vµo d÷ liÖu cã thÓ ®−îc lùa chän tõ nhiÒu nguån kh¸c nhau. Mçi mét ®Çu vµo ®−îc lùa chän víi mét bé chän vµo 16 ra 1. H¬n n÷a, cã mét bé chän vµo 4 ra 1 cung cÊp mét ®Çu vµo phô cho chøc n¨ng SPI Slave, chøc n¨ng yªu cÇu 3 ®Çu vµo: Xung nhÞp, d÷ liÖu, vµ SS_ (trõ khi lµ SS_ ®−îc b¾t Ðp ho¹t ®éng cïng víi bit cho phÐp vµo ra phô). §Çu vµo bé chän nµy dù ®Þnh ®−îc lùa chän tõ ®Çu vµo GPIO. 4.1.2. §ång bé hãa l¹i xung nhÞp ®Çu vµo. Nh÷ng khèi PSoC sè cho phÐp lùa chän xung nhÞp tõ 1 trong 16 nguån. Nguån cã thÓ lµ xung nhÞp hÖ thèng (VC1, VC2, VC3, SYSCLK vµ SYSCLKX2), c¸c ch©n ®Çu vµo, ®Çu ra tõ c¸c khèi PSoC kh¸c. §Ó qu¶n lý ®−îc ®é lÖch xung vµ ®¶m b¶o r»ng giao diÖn gi÷a c¸c khèi ®−îc tÝnh to¸n thêi gian phï hîp trong tÊt c¶ c¸c tr−êng hîp, tÊt c¶ 90 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN c¸c ®Çu vµo xung nhÞp cña khèi sè cÇn ph¶i ®−îc ®ång bé hãa l¹i víi xung nhÞp hÖ thèng SYSCLK hoÆc SYSCLKX2. Xung nhÞp SYSCLK hoÆc SYSCLKX2 còng cã thÓ ®−îc sö dông trùc tiÕp. Bit AUXCLK trong thanh ghi DxBxxOU ®−îc sö dông ®Ó chØ râ ®Çu vµo ®ång bé. ViÖc ®ång bé hãa ®Çu vµo ®−îc thùc hiÖn theo c¸c luËt sau: a. NÕu xung nhÞp ®Çu vµo b¾t nguån tõ SYSCLK (cã thÓ ®· ®−îc chia nhá) th× sÏ ®−îc khèi PSoC sè ®ång bé hãa l¹i víi xung nhÞp SYSCKL. HÇu hÕt c¸c xung nhÞp trong chÝp b¾t ®Òu thuéc lo¹i nµy. VÝ dô, VC1, VC2… b. NÕu xung nhÞp ®Çu vµo b¾t nguån tõ SYSCLKX2, th× nã sÏ ®−îc ®ång bé hãa víi xung nhÞp SYSCLKX2 c. Chän trùc tiÕp tõ xung nhÞp SYSCLK d. Chän trùc tiÕp tõ xung nhÞp SYSCLKX2 e. §ång bé hãa Bypass. RÊt it khi lùa chän ®iÒu nµy, bëi v× nÕu xung nhÞp kh«ng ®−îc ®ång bé th× chóng cã thÓ b¾t ®Çu sai víi lÖnh ®äc vµ ghi cña CPU. Tuy nhiªn, nã cã thÓ x¶y ra víi tr−êng hîp mét ch©n ngoµi ph¸t xung nhÞp cho khèi sè ë tr¹ng th¸i kh«ng ®ång bé. VÝ dô, nÕu ng−êi sö dông muèn ®ång bé t¸c ®éng cña CPU b»ng ng¾t hay b»ng mét kü thuËt nµo kh¸c. Nh÷ng l−u ý sau ®©y liÖt kª nh÷ng cÊu h×nh kh«ng ®−îc cho phÐp, mÆc dï phÇn cøng kh«ng hÒ ng¨n cÊm chóng. B¶ng tãm t¾t cña nh÷ng l−u ý nµy lµ bé chia xung nhÞp kh«ng ®−îc cÊu h×nh nh− lµ mét c¸ch ®Ó t¹o xung nhÞp ®Çu ra b»ng víi SYSCLK hay SYSCLKX2. 1. Khi VC1 ®−îc cÊu h×nh lµ chia bëi 1 th× lùa chän xung nhÞp VC1 lµ kh«ng cho phÐp. ViÖc cÊu h×nh nµy t¹o ra mét xung nhÞp b»ng víi xung nhÞp hÖ thèng SYSCLK. Bëi vËy, SYSCLK nªn ®−îc dïng trùc tiÕp b»ng c¸ch ®Æt c¸c bit AUXCLK trong thanh ghi DxBxxOU lªn 11b. 2. Khi c¶ VC1 vµ VC2 ®Òu ®−îc cÊu h×nh chia bëi 1 th× còng t−¬ng tù viÖc chän xung nhÞp VC2 lµ kh«ng cho phÐp. Bëi vËy, sö dông xung nhÞp trùc tiÕp nh− trªn. 3. Khi VC3 ®−îc cÊu h×nh sao cho ®Çu ra cã tÇn sè b»ng víi xung nhÞp hÖ thèng SYSCLK hay SYSCLKX2 th× viÖc chän xung nhÞp tõ VC3 còng kh«ng ®−îc phÐp. Bëi vËy, còng ph¶i sö dông xung nhÞp trùc tiÕp SYSCLK hoÆc SYSCLK. TÊt c¶ nh÷ng vÊn ®Ò ®−îc ®Ò cËp trong phÇn t¸i ®ång bé xung nhÞp thùc ®−îc miªu t¶ trong H×nh 5-6. H×nh 5-6: T¸i ®ång bé xung nhÞp ®Çu vµo 91 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN B¶ng 5-13:Nh÷ng lùa chän bit AUXCLK M· 00 M« t¶ Bypass 01 T¸i ®ång bé SYSCLK (24M) víi 10 T¸i ®ång bé víi SYSCLKX2 (48M) 11 SYSCLK trùc tiÕp Sö dông ChØ sö dông thiÕt lËp nµy cho ®Çu vµo ë tr¹ng th¸i kh«ng ®ång bé. Còng ®−îc sö dông khi SYSCLK2 (48M) ®−îc lùa chän. Sö dông thiÕt lËp nµy cho bÊt cø xung nhÞp nµo dùa trªn SYSCLK. VC1, VC2, VC3 ®−îc ®iÒu khiÓn bëi SYSCKL, c¸c khèi sè víi nguån xung nhÞp dùa trªn SYSCLK, m¹ng truyÒn tin víi nguån dùa trªn SYSCLK , ®Çu vµo vµ ®Çu ra hµng víi nguån dùa trªn SYSCLK. Sö dông thiÕt lËp nµy cho bÊt cø xung nhÞp nµo dùa trªn SYSCLK2. VC3 ®−îc ®iÒu khiÓn bëi SYSCLK2, c¸c khèi sè víi xung nhÞp dùa trªn SYSCLK2, bus truyÒn tin víi nguån dùa trªn SYSCLK2, ®Çu vµo vµ ®Çu ra cña hµng víi nguån dùa trªn SYSCLK2 Sö dông thiÕt lËp nµy ®Ó ph¸t xung nhÞp SYSCKL trùc tiÕp tíi c¸c khèi sè. L−u ý r»ng thiÕt lËp nµy hoµn toµn kh«ng liªn hÖ víi xung nhÞp t¸i ®ång bé nh−ng tõ kÓ tõ ®ã th× SYSCLK kh«ng thÓ t¸i ®ång bé víi chÝnh nã. Nã cho phÐp mét ®é xiªn trùc tiÕp ®iÒu khiÓn nguån SYSCLK 4.1.3. Bé ph©n ly ®Çu ra HÇu hÕt c¸c chøc n¨ng cã hai ®Çu ra, mét ®Çu ra chÝnh vµ mét ®Çu ra phô. Mçi mét ®Çu ra ®Òu ®−îc ®iÒu khiÓn trªn hµng bus ®Çu ra. Mçi mét bé ph©n ly ®−îc thi hµnh víi 4 bé kÝch thÝch 3 tr¹ng th¸i. Cã hai bit ®Ó lùa chän mét trong bèn bé kÝch thÝch vµ mét bit thªm vµo ®Ó cho phÐp bé kÝch thÝch. Clock Select: Lùa chän xung nhÞp Data Select: Lùa chän d÷ liÖu vµo Aux Data Select: Lùa chän ®Çu vµo d÷ liÖu vµo phô Internal Signals for Carry, Compare, Enable, Capture, and Gate chaining form previous block: TÝn hiÖu trong cho Nhí, So s¸nh, Cho phÐp, Chôp, vµ Cæng tõ khèi tr−íc ®ã. Primary Function Output clock chaining to next block: §Çu ra chøc n¨ng chÝnh ph¸t xung nhÞp tíi khèi tiÕp theo trong chuçi. Block Interrupt: Ng¾t cña khèi Broadcast Output: §Çu ra truyÒn tin phæ biÕn Internal Signals for Data, Carry, Compare, and Gate chaining to next block: TÝn hiÖu trong cho D÷ liÖu, Nhí, So s¸nh, vµ Cæng tíi khèi tiÕp theo. H×nh 5-7: S¬ ®å khèi m« t¶ møc cao nhÊt cña c¸c khèi PSoC sè. 92 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 4.1.4. TÝn hiÖu nèi chuçi c¸c khèi Mçi mét khèi PSoC sè cã kh¶ n¨ng nèi thµnh chuçi ®Ó t¹o ra nh÷ng chøc n¨ng cã ®é réng lín h¬n 8 bit. Cã nh÷ng tÝn hiÖu ®Ó truyÒn b¸ th«ng tin nh− lµ So s¸nh, Nhí, Cho phÐp, Chôp vµ Cæng tõ mét khèi tíi mét khèi tiÕp theo ®Ó thi hµnh chøc n¨ng víi ®é chÝnh x¸c cao h¬n. Sù lùa chän trong thanh ghi chøc n¨ng quyÕt ®Þnh xem tÝn hiÖu nµo lµ thÝch hîp víi chøc n¨ng mong muèn. Nh÷ng Module ®−îc thiÕt kÕ ®Ó thi hµnh chøc n¨ng sè víi ®é réng lín h¬n 8 bit sÏ tù ®éng lùa chän tÝn hiÖu nèi chuçi, ®Ó kh¼ng ®Þnh th«ng tin chÝnh x¸c ch¹y gi÷a c¸c khèi. 4.2. Nh÷ng ngo¹i vi ®−îc t¹o bëi khèi PSoC sè • C¸c bé ®Þnh thêi 8,16,24,32-bit víi c¸c ®Æc ®iÓm sau: H×nh 5-8: S¬ ®å nguyªn lý cña bé ®Þnh thêi - §é réng thanh ghi 8, 16, 24, 32 bit, sö dông 1,2,3,4 khèi PSoC theo thø tù - Xung nhÞp nguån lªn tíi 48 MHz - Tù ®éng n¹p l¹i chu kú khi ®Õm xong - Kh¶ n¨ng chôp (capture) tíi 24 MHz - §Çu ra ®Õm kÕt thóc cã thÓ ®−îc sö dông nh− lµ ®Çu vµo xung nhÞp cho c¸c chøc n¨ng sè vµ t−¬ng tù kh¸c - Lùa chän chÕ ®é ng¾t khi ®Õm kÕt thóc, chôp, hoÆc lµ khi bé ®Õm ®¹t mét gi¸ trÞ ®Æt tr−íc. C¸c Module bé ®Þnh thêi lµ nh÷ng bé ®Õm lïi víi chu kú cã thÓ lËp tr×nh ®−îc, cã kh¶ n¨ng chôp gi÷. Xung nhÞp vµ c¸c tÝn hiÖu cho phÐp cã thÓ ®−îc lùa chän tõ nguån ngoµi hoÆc tõ xung nhÞp hÖ thèng. Sau khi ®· khëi ®éng, Bé ®Þnh thêi ho¹t ®éng liªn tôc vµ tù ®éng t¶i chu kú tõ thanh ghi chu kú mçi khi ®Õm kÕt thóc. C¸c sù kiÖn cã thÓ chôp gi÷ gi¸ trÞ ®Õm hiÖn thêi cña Timer b»ng c¸ch x¸c nhËn s−ên xung cña tÝn hiÖu chôp gi÷ ë ®Çu vµo. Trong mçi chu kú, bé ®Þnh thêi sÏ so s¸nh gi¸ trÞ ®Õm víi gi¸ trÞ so s¸nh ®Æt ë trong thanh ghi compare ®Ó kiÓm tra ®iÒu kiÖn “Less than” hay “Less than or Equal To”. C¸c ng¾t cã thÓ ®−îc sinh ra dùa trªn tÝn hiÖu ®Õm kÕt thóc hoÆc ®iÒu kiÖn so s¸nh. • C¸c bé ®Õm 8, 16,24,32 bit víi nh÷ng ®Æc ®iÓm sau: - §é réng thanh ghi ®Õm 8,16,24,32 bit, t−¬ng øng chiÕm 1,2,3,4 khèi PSoC. - Xung nhÞp cã thÓ lªn tíi 48 MHz - Tù ®éng t¶i l¹i chu kú khi ®Õm kÕt thóc - §é réng xung cã thÓ lËp tr×nh ®−îc - Cã ®Çu vµo cho phÐp/kh«ng cho phÐp ho¹t ®éng ®Õm liªn tôc 93 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 5-9: S¬ ®å nguyªn lý cña bé ®Õm Module bé ®Õm 8,16,24, vµ 32 bit lµ nh÷ng bé ®Õm lïi víi chu kú vµ ®é réng xung cã thÓ lËp tr×nh ®−îc. Xung nhÞp vµ c¸c tÝn hiÖu cho phÐp cã thÓ ®−îc lùa chän tõ bé ®Þnh thêi chuÈn cña hÖ thèng hay nguån ngoµi. Sau khi ®−îc khëi ®éng, bé ®Õm ho¹t ®éng liªn tôc vµ sÏ t¶i l¹i gi¸ trÞ bªn trong cña nã tõ thanh ghi chu kú sau khi ®¹t ®Õn gi¸ trÞ ®Õm kÕt thóc. Trong mçi chu kú xung nhÞp, bé ®Õm sÏ so s¸nh gi¸ trÞ ®Õm hiÖn thêi víi gi¸ trÞ ®−îc l−u tr÷ trong thanh ghi so s¸nh. §iÒu kiÖn so s¸nh lµ “less than” hay “less than or equal to” ®−îc kiÓm tra liªn tôc trong mçi chu kú xung nhÞp. §Çu ra so s¸nh cung cÊp møc logic cã thÓ ®−îc dÉn tíi c¸c ch©n hoÆc c¸c Module kh¸c. Mét ng¾t cã thÓ ®−îc bËt lªn khi bé ®Õm ®¹t tíi gi¸ trÞ ®Õm tíi h¹n hoÆc khi ®Çu ra so s¸nh ®−îc x¸c ®Þnh. • Bé ®iÒu chÕ ®é réng xung 8,16 bit víi nh÷ng ®Æc ®iÓm sau: H×nh 5-10: S¬ ®å nguyªn lý cña bé ®iÒu chÕ ®é réng xung - Bé ®iÒu chÕ ®é réng xung 8 bit hoÆc 16 bit sö dông 1 hoÆc 2 khèi sè - Nguån xung nhÞp cã thÓ lªn tíi 48MHz - Tù ®éng n¹p l¹i gi¸ trÞ ®iÒu chÕ khi kÕt thóc mét chu kú ®iÒu chÕ xung. - Cã thÓ lËp tr×nh ®é réng xung - Më vµ khãa ng¾t ngay c¶ khi bé ®iÒu chÕ ®ang ho¹t ®éng - Ng¾t cã thÓ lùa chän theo s−ên d−¬ng cña ®Çu ra hoÆc theo gi¸ trÞ ®Õm cuèi - §Çu vµo xung nhÞp vµ ®Çu vµo cho phÐp cã thÓ ®−îc lùa chän tõ nhiÒu nguån kh¸c nhau - §Çu ra cã thÓ ®−îc nèi tíi mét ch©n vµo ra hoÆc ®−îc sö dông néi bé bªn trong chÝp PSoC. • Bé ®iÒu chÕ ®é réng xung 8,16 bit kÕt hîp víi d¶i an toµn: Chøc n¨ng t¹o d¶i an toµn sÏ ph¸t ra tÝn hiÖu trªn c¶ hai ®Çu ra chÝnh vµ ®Çu ra phô cña khèi. Chøc n¨ng nµy sinh ra xung nhÞp kh«ng gèi lªn nhau. Hai pha xung nhÞp ®ã kh«ng bao giê cïng ë møc cao trong cïng mét thêi ®iÓm vµ kho¶ng 94 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN thêi gian ë gi÷a hai pha ®ã ®−îc gäi lµ d¶i an toµn. §é réng cña d¶i an toµn ®−îc quyÕt ®Þnh bëi gi¸ trÞ ®Æt tr−íc cña thanh ghi. NÕu nguån xung nhÞp lµ mét PWM, th× nã sÏ t¹o ra hai ®Çu ra PWM víi ®Çu ra ®¶m b¶o kh«ng gèi lªn nhau. Mét tÝn hiÖu tÝch cùc trªn ®Çu vµo “Kill” sÏ khãa c¶ hai ®Çu ra ngay lËp tøc. H×nh 5-11: Nguyªn lý ®iÒu chÕ ®é réng xung cã gi¶i an toµn Module PWM víi d¶i an toµn ®−îc cÊu h×nh sö dông mét hay hai khèi sè ®Ó t¹o ra mét bé PWM 8 hay 16 bit vµ sö dông thªm mét khèi n÷a cho chøc n¨ng t¹o d¶i an toµn. • Bé t¹o d·y CRC phôc vô viÖc kiÓm tra lçi - Kh¶ n¨ng t¹o d·y tõ 2 ®Õn 16 bit. - §Çu vµo xung nhÞp lªn tíi 48 MHz - Cã thÓ lËp tr×nh ®a thøc mÉu - §Çu vµo nèi tiÕp, ®Çu ra song song H×nh 5-12: S¬ ®å nguyªn lý cña bé t¹o d·y CRC • Bé truyÒn vµ bé nhËn giao tiÕp quang häc - Tèc ®é cã thÓ lùa chän lªn tíi 115.2 kbit/gi©y - Khung d÷ liÖu bao gåm bit Start vµ Stop - Ng¾t cã thÓ ®−îc sinh ra khi bé ®Öm thu ®Çy (chØ ®èi víi bé thu) - Ng¾t cã thÓ ®−îc sinh ra khi bé ®Öm ph¸t rçng (chØ ®èi víi bé ph¸t) 95 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 5-13: S¬ ®å nguyªn lý cña bé truyÒn quang häc • Bé truyÒn th«ng kh«ng ®ång bé UART, TX, RX víi nh÷ng ®Æc ®iÓm: - Bé nhËn vµ truyÒn tÝn hiÖu kh«ng ®ång bé - §Þnh d¹ng d÷ liÖu t−¬ng thÝch víi ®Þnh d¹ng d÷ liÖu RS-232 - Tû sè xung ®ång bé lªn tíi 6 Mbit/s - Khung d÷ liÖu bao gåm bit Start, bit ch½n lÎ (lùa chän) vµ c¸c bit Stop - Ng¾t khi thanh ghi nhËn ®Çy (lùa chän) hoÆc lµ khi bé ®Öm truyÒn rçng - Ph¸t hiÖn ch½n lÎ, khung qu¸ t¶i, khung b¸o lçi - C¸c chøc n¨ng ph¸t vµ thu ë møc cao. H×nh 5-14: S¬ ®å nguyªn lý cña bé truyÒn th«ng UART Module UART ®−îc x©y dùng bëi hai module TX vµ RX cïng víi mét sè th− viÖn hç trî cho viÖc truyÒn th«ng. V× vËy module TX vµ RX cã thÓ ®−îc sö dông riªng. 96 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN • Bé truyÒn th«ng SPI Master víi nh÷ng ®Æc ®iÓm sau: H×nh 5-15: S¬ ®å nguyªn lý cña bé truyÒn th«ng SPI Master - Hç trî giao thøc kÕt nèi thiÕt bÞ ngo¹i vi nèi tiÕp SPI Master - Hç trî c¸c chÕ ®é xung nhÞp SPI : 0, 1, 2, vµ 3 - C¸c nguån vµo cã thÓ lùa chän cho xung nhÞp vµ MISO - §Çu ra cã thÓ lùa chän ®Ó dÉn tíi MOSI vµ SCLK - Ng¾t cã thÓ lËp tr×nh khi cã ®iÒu kiÖn SPI ®· thùc hiÖn xong - ThiÕt bÞ SPI Slave cã thÓ ®−îc lùa chän mét c¸ch ®éc lËp • Bé truyÒn th«ng SPI Slave víi nh÷ng ®Æc ®iÓm - Hç trî giao thøc kÕt nèi thiÕt bÞ ngo¹i vi nèi tiÕp (SPI) kiÓu Slave - Hç trî c¸c chÕ ®é giao thøc 0,1,2, vµ 3. - C¸c nguån vµo cã thÓ lùa chän cho MOSI, SCLK vµ ~SS - §Çu ra cã thÓ lùa chän ®Ó dÉn ra MISO - Ng¾t cã thÓ lËp tr×nh dùa trªn ®iÒu kiÖn SPI Done - SS cã thÓ ®−îc ®iÒu khiÓn b»ng phÇn mÒm nhóng H×nh 5-16: S¬ ®å nguyªn lý cña bé truyÒn th«ng SPI Slave 97 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Ch−¬ng 6 : HÖ thèng khèi PSoC t−¬ng tù KiÕn tróc cña hÖ thèng t−¬ng tù H×nh d−íi ®©y cho thÊy kiÕn tróc cña hÖ thèng t−¬ng tù trong PSoC. Mçi thµnh phÇn sÏ ®−îc m« t¶ chi tiÕt trong trong ch−¬ng nµy. H×nh 6-1: S¬ ®å khèi cña hÖ thèng t−¬ng tù trong PSoC C¸c khèi PSoC lµ nh÷ng tµi nguyªn cã thÓ cÊu h×nh ®îc. C¸c khèi t−¬ng tù trªn chÝp PSoC sÏ gi¶m thiÓu sù cÇn thiÕt cho nhiÒu lo¹i chÝp vµ nh÷ng thiÕt bÞ ngo¹i vi bªn ngoµi. C¸c khèi PSoC t−¬ng tù ®−îc cÊu h×nh ®Ó cung cÊp nh÷ng chøc n¨ng ngo¹i vi ®a d¹ng. PhÇn mÒm PSoC Designer tÝch hîp víi m«i tr−êng ph¸t triÓn sÏ cung cÊp cho ta cÊu h×nh tù ®éng cña c¸c khèi PSoC b»ng c¸ch lùa chän nh÷ng chøc n¨ng mong muèn. Mçi mét khèi Analog cã rÊt nhiÒu kh¶ n¨ng cho ®Çu vµo vµ mét vµi ®Çu ra. Nh÷ng ®Çu vµo tíi nh÷ng khèi nµy bao gåm c¶ nh÷ng tÝn hiÖu t−¬ng tù tõ nh÷ng khèi kh¸c. Nguån ®iÖn ¸p tham chiÕu cã thÓ lÊy tõ trong chÝp hay ngoµi chÝp tïy ý. Cã ba lo¹i khèi PSoC: khèi thêi gian liªn tôc (Continues Time - CT), khèi chuyÓn m¹ch cho tô (Switch Capacitor - SC) ®iÖn lo¹i C vµ lo¹i D. Nh÷ng khèi t−¬ng tù nµy ®−îc tæ chøc thµnh c¸c cét. Cã bèn cét trong dßng hä CY8C27xxx. Mét cét khèi t−¬ng tù bao gåm 1 khèi CT, 1 khèi SC lo¹i C vµ 1 khèi SC lo¹i D. Nh÷ng khèi trong cïng mét cét sÏ sö dông nguån xung nhÞp nh− nhau. Mçi mét khèi t−¬ng tù cã 3 ®Çu ra: 98 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN - Bus ®Çu ra t−¬ng tù (ABUS) lµ mét ®Çu ra ®−îc chia sÎ víi c¸c khèi trong cïng mét cét. Trong mét thêi ®iÓm chØ cã duy nhÊt mét khèi ®−îc phÐp sö dông bus ®Çu ra nµy. §©y còng lµ bus ®Çu ra t−¬ng tù duy nhÊt trùc tiÕp kÝch thÝch cho ch©n ra t−¬ng tù. - Bus so s¸nh lµ mét bus sè ®−îc chia sÎ víi c¸c khèi trong cïng mét cét. T¹i mét thêi ®iÓm chØ cã duy nhÊt mét khèi ®−îc phÐp sö dông bus so s¸nh nµy. - §Çu ra néi bé trong khèi CT ®−îc dïng ®Ó kÕt nèi víi c¸c khèi liÒn kÒ. M−êi hai khèi PSoC t−¬ng tù cã thÓ ho¹t ®éng ®éc lËp hoÆc kÕt hîp víi c¸c khèi sè ®Ó cã ®−îc nh÷ng chøc n¨ng thÝch hîp. Víi ®iÖn ¸p tham chiÕu chÝnh x¸c sÏ cho phÐp viÖc so s¸nh t−¬ng tù rÊt chÝnh x¸c. Giao diÖn víi hÖ thèng t−¬ng tù 1.1. M« t¶ cÊu tróc H×nh 6-2: S¬ ®å giao diÖn cña mét cét khèi t−¬ng tù 1.1.1. Giao diÖn Bus d÷ liÖu t−¬ng tù Giao diÖn Bus t−¬ng tù c¸ch ly d·y t−¬ng tù vµ nh÷ng thanh ghi giao diÖn hÖ thèng t−¬ng tù víi bus d÷ liÖu hÖ thèng CPU ®Ó gi¶m thiÓu t¶i cho bus. Bé truyÒn nhËn ®−îc bæ xung víi bus d÷ liÖu hÖ thèng ®Ó c¸ch ly bus d÷ liÖu t−¬ng tù víi bus d÷ liÖu hÖ thèng. §iÒu nµy ®ßi hái ph¶i t¹o ra mét hÖ thèng bus t−¬ng tù néi bé. 1.1.2. Giao diÖn víi bus so s¸nh t−¬ng tù 99 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Mçi mét cét t−¬ng tù cã mét bus so s¸nh kÕt hîp víi nã. TÊt c¶ c¸c khèi PSoC t−¬ng tù ®Òu cã mét ®Çu ra so s¸nh cã thÓ trùc tiÕp kÝch thÝch bus so s¸nh nµy. Tuy nhiªn, t¹i mét thêi ®iÓm chØ cã mét khèi duy nhÊt trong mét cét ®−îc phÐp kÝch thÝch cho bus so s¸nh nµy. §Çu ra cña bus so s¸nh nµy cã thÓ kÝch thÝch c¸c khèi sè nh− lµ mét ®Çu vµo d÷ liÖu. Nã còng cã thÓ phôc vô nh− lµ mét ®Çu vµo cho bé decimator, hoÆc mét ®Çu vµo ng¾t. 1.1.3. Nguån xung nhÞp cho c¸c khèi t−¬ng tù C¸c khèi SC yªu cÇu hai pha kh«ng gèi lªn nhau. Nh÷ng khèi nµy ®−îc ph©n chia thµnh 4 cét, hai khèi cho mçi cét. Mçi cét cã mét ®Çu vµo xung nhÞp riªng vµ nguån xung nhÞp nµy sö dông chung cho c¸c khèi trong cét. Cã bèn lùa chän xung nhÞp ®Çu vµo ®ã lµ 24V1, 24V2, ACLK0, ACLK1. Nguån xung nhÞp 24V1, 24V2 lµ nguån xung nhÞp hÖ thèng. Hai nguån xung nhip ACLK0, ACLK1 lµ hai ®Çu vµo lùa chän nguån xung nhÞp lÊy tõ c¸c khèi PSoC sè nh»m cã ®−îc mét nguån xung nhÞp thÝch hîp 1.1.4. Giao diÖn gi÷a hÖ thèng t−¬ng tù víi ch©n vµo ra. H×nh 6-3: S¬ ®å khèi vµo ra t−¬ng tù víi ch©n ngoµi 100 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN B¶ng 6-1: Thanh ghi cÊu h×nh vµo ra t−¬ng tù Address 0,60h 1,62h Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access AMX_IN ACI3[1:0] ACI2[1:0] ACI1[1:0] ACI0[1:0] ABF_CR0 AcolMux1 AcolMux2 ABUF1EN ABUF2EN ABUF0EN ABUF3EN Bypass PWR 1.1.4.1. RW:00 RW:00 Thanh ghi AMX_IN Thanh ghi AMX_IN lµ thanh ghi lùa chän ®Çu vµo tõ ch©n vµo ra cña bé MUX cho c¸c cét t−¬ng tù. C¸c gi¸ trÞ cña hai bit t−¬ng øng sÏ cho phÐp lùa chän ®−îc 4 ®Çu vµo t−¬ng øng víi 4 ch©n ®· ®−îc quy ®Þnh cho nã. Cét ACI1 cã thªm bé lùa chän ACOL1MUX cho phÐp lùa chän gi÷a hai ®Çu ra cña bé ACI0 vµ ACI1. T−¬ng tù nh− vËy Cét ACI2 cã thªm bé lùa chän ACOL2MUX cho phÐp lùa chän gi÷a hai ®Çu ra cña bé ACI2 vµ ACI3. Nh÷ng bit ®iÒu khiÓn cho ACOL1MUX vµ ACOL2MUX ®−îc ®Æt t¹i thanh ghi ABF_CR0. Ngoµi ra cßn cã thªm 4 ®−êng vµo Analog trùc tiÕp tíi c¸c khèi SC. 1.1.4.2. Thanh ghi ABF_CR0 §©y lµ thanh ghi ®iÒu khiÓn ®Çu vµo t−¬ng tù tõ cæng 0, vµ c¸c bé khuÕch ®¹i ®Öm cho ®Çu ra tíi c¸c ch©n ra t−¬ng tù. Bit 7: ACol1MUX: Lùa chän ®Çu ra cña bé ACI0 hay ACI1 cho cét t−¬ng tù 1. Bit 6: ACol2MUX: Lùa chän ®Çu ra cña bé ACI2 hay ACI3 cho cét t−¬ng tù 2 Bit 5 tíi 2: Më vµ khãa bé khuÕch ®¹i ®Çu ra cho tõng cét. Bit 1: Bypass. ChÕ ®é Bypass sÏ nèi ®Çu vµo cña bé khuÕch ®¹i trùc tiÕp tíi ®Çu ra cña bé khuyÕch ®¹i (NghÜa lµ bá qua bé khuÕch ®¹i ®ªm trung gian). Khi bit nµy ®−îc thiÕt lËp th× toµn bé c¸c bé khuÕch ®¹i ®iÒu khiÓn bëi thanh ghi nµy sÏ ë chÕ ®é Bypass. Bit 0: PWR. Bit nµy ®−îc sö dông ®Ó ®Æt møc n¨ng l−îng cho bé khuÕch ®¹i. Khi bit nµy ®−îc ®Æt th× toµn bé c¸c bé khuÕch ®¹i sÏ ho¹t ®éng ë møc n¨ng l−îng cao. 1.2. Nguån tham chiÕu ®iÖn ¸p cho c¸c khèi t−¬ng tù. PSoC lµ mét thµnh phÇn sö dông nguån ®¬n, v× vËy nã kh«ng cã ®iÖn ¸p ©m. Mét gi¶i ph¸p ®Æt ra lµ t¹o mét ®Êt gi¶ lµ kho¶ng ®iÖn ¸p VCC/2. §Êt nµy sÏ ®−îc nèi tíi tÊt c¶ c¸c khèi t−¬ng tù vµ ®−îc ®Öm ng¨n c¸ch gi÷a c¸c khèi. L−u ý r»ng cã thÓ cã mét ®é lÖch nhá vÒ ®iÖn ¸p gi÷a c¸c bé ®Öm ®Êt cho tÝn hiÖu t−¬ng tù. §Êt gi¶ nµy ®−îc t¹o ra theo s¬ ®å sau. H×nh 6-4: S¬ ®å nguyªn lý m¹ch t¹o ®Êt gi¶ ViÖc ®iÒu khiÓn tham chiÕu ®iÖn ¸p ®−îc thùc hiÖn b»ng c¸ch thay ®æi gi¸ trÞ cña thanh ghi ARF_CR. Víi viÖc ®iÒu chØnh c¸c bit REF[2:0] trong thanh ghi ARF_CR ta cã thÓ thiÕt lËp ®−îc ®iÖn ¸p tham chiÕu cho chÝp theo b¶ng sau ®©y: 101 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN B¶ng 6-2: B¶ng ®iÖn ¸p tham chiÕu cã thÓ t¹o ®−îc trong PSoC VÝ dô: P2[4]=2.2V, P2[6]=1.0V 000b 001b 010b 011b 100b 101b 110b 111b AGND Nguån §iÖn ¸p Vcc/2 2.5V 1.65V P2[4] 2.2V Vcc/2 2.5V 1.65V 2*Vbg 2.6V 2*Vbg 2.6V P2[4] 2.2V Vbg 1.3V 1.6*Vbg 1 .08V RefHI RefLO Nguån §iÖn ¸p Nguån §iÖn ¸p Vcc/2+Vbg 3.8V Vcc/2-Vbg 1.2V 2.95V 0.35V P2[4]+P2[6] 3.2V P2[4]-P2[6] 1.2V Vcc 5V Vss 0.0V 3.3V 0.0V 3*Vbg 3.9V 1*Vbg 1.3V 2*Vbg+P2[6] 3.6V 2*Vbg-P2[6] 1.6V P2[4]+Vbg 3.5V P2[4]-Vbg 0.9V 2*Vbg 2.6V Vss 0.0V 3.2*Vbg 4.16V Vss 0.0V L−u ý HÖ thèng 5.0V HÖ thèng 3.3V HÖ thèng 5.0V HÖ thèng 3.3V HÖ thèng 5.0V HÖ thèng 5.0V 2. C¸c khèi PSoC t−¬ng tù Nh÷ng chøc n¨ng ®−îc t¹o bëi c¸c khèi PSoC t−¬ng tù (cã thÓ kÕt hîp víi khèi PSoC sè) 2.1. C¸c bé khÕch ®¹i 2.1.1. Bé khÕch ®¹i INSAMP - Instrumentation Amplifier - §é khuÕch ®¹i cã thÓ lËp tr×nh tõ 2 ÷ 16 hoÆc lªn tíi 93 ®èi víi cÊu tróc 3 bé K§TT - Trë kh¸ng vi sai ®Çu vµo cao - Mét ®Çu ra - Cã thÓ lùa chän cÊu tróc hai hoÆc ba bé K§TT H×nh 6-5: S¬ ®å nguyªn lý bé khuÕch ®¹i INSAMP 2.1.2. Bé khuÕch ®¹i ®¶o AMPINV - Inverting Amplifier H×nh 6-6:S¬ ®å nguyªn lý bé khuÕch ®¹i ®¶o 102 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN - §é khuÕch ®¹i cã thÓ lËp tr×nh tõ víi 18 cÊp, ®é khuÕch ®¹i tèi ®a lµ -47 - Mét ®Çu ra ®¬n ®−îc tham chiÕu ®èi víi ®Êt cña Analog 2.1.3. Bé khuÕch ®¹i kh«ng ®¶o PGA - Programmable Gain Amplifier - §é khuÕch ®¹i cã thÓ lËp tr×nh tõ víi 33 cÊp, ®é khuÕch ®¹i tèi ®a lµ 48 - Mét ®Çu ra ®¬n víi ®iÖn ¸p tham chiÕu cã thÓ lùa chän - Trë kh¸ng ®Çu vµo cao Module PGA lµ mét module K§TT dùa trªn bé khuÕch ®¹i kh«ng ®¶o, ®é khuÕch ®¹i víi ®é khuÕch ®¹i cã thÓ lËp tr×nh ®−îc. Bé khuÕch ®¹i nµy cã trë kh¸ng ®Çu vµo cao, b¨ng th«ng réng vµ ®iÖn ¸p tham chiÕu cã thÓ lùa chän ®−îc H×nh 6-7: S¬ ®å nguyªn lý bé khuÕch ®¹i kh«ng ®¶o PGA 2.1.4. Bé so s¸nh ng−ìng kh¶ tr×nh - Programmable Threshold Comparator - Tham chiÕu ng−ìng cã thÓ lËp tr×nh ®−îc - KÕt nèi trùc tiÕp víi c¸c khèi PSoC sè vµ ng¾t - Kh¶ tr×nh tèc ®é vµ n¨ng l−îng tiªu thô H×nh 6-8: S¬ ®å nguyªn lý bé so s¸nh ng−ìng 2.2. C¸c bé chuyÓn ®æi t−¬ng tù sang sè - ADC 2.2.1. ADCINC12 - 12 bit Incremental ADC - §é ph©n gi¶i 12 bit, bï 2 - Tèc ®é lÊy mÉu: 7,8 ÷ 480 mÉu/gi©y - D¶i ®Çu vµo: AGND ± Vref - Hç trî chÕ ®é b×nh th−êng hoÆc chÕ ®é khö hµi bËc cao 103 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN - Xung nhÞp bªn trong hoÆc bªn ngoµi H×nh 6-9: S¬ ®å nguyªn lý bé chuyÓn ®æi ADC 12-bit Incremental ADCINC12 lµ mét bé biÕn ®æi A/D 12 bit, bï 2 toµn d¶i (d¶i ®Õm tõ –2048 ÷ 2047) víi nhiÒu d¶i ®Çu vµo cã thÓ chän lùa. D¶i ®iÖn ¸p ®Çu vµo cã thÓ ®−îc ®o b»ng c¸ch t¹o ra nh÷ng ®iÖn ¸p tham chiÕu vµ “®Êt” cña Analog chÝnh x¸c. ADCINC12 lµ mét bé ADC kiÓu tÝch ph©n, nã hç trî ®Ó c¾t bá nh÷ng tÇn sè cao, lo¹i bá mét c¸ch tèi −u c¸c tÇn sè 50/60 Hz vµ nh÷ng hµi bËc hai cña nh÷ng tÇn sè nµy cã thÓ ®¹t ®−îc b»ng c¸ch ®Æt cöa sæ lÊy mÉu lµ 100 ms (tÇn sè lÉy mÉu lµ 9,84 mÉu/gi©y) 2.2.2. ADCINC14 - 14 bit Incremental ADC Ho¹t ®éng t−¬ng tù nh− ADCINC12 bit nh−ng cã ph©n d¶i lµ 14 bit. 2.2.3. ADCINCVR - 7 to 13 bit Variable Resolution Incremental ADC - §é ph©n gi¶i 7 ÷13 bit, bï 2 - Tèc ®é lÊy mÉu: 4 ÷ 10000 mÉu/gi©y - D¶i ®Çu vµo: VSS ÷ VDD - Xung nhÞp bªn trong hoÆc bªn ngoµi H×nh 6-10: S¬ ®å nguyªn lý bé ADCINCVR ADCINCVR lµ mét bé biÕn ®æi A/D ®é ph©n gi¶i cã thÓ ®iÒu chØnh ®−îc tõ 7 ÷13 bit, nã cã thÓ ®−îc ®Æt cÊu h×nh ®Ó lo¹i bá nh÷ng thµnh phÇn tÇn sè cao kh«ng mong muèn b»ng c¸ch tèi −u hãa thêi gian tÝch ph©n. D¶i ®iÖn ¸p ®Çu vµo cã thÓ ®−îc ®o b»ng c¸ch t¹o ra nh÷ng ®iÖn ¸p tham chiÕu vµ “®Êt” cña Analog chÝnh x¸c. 2.2.4. DELSIG8 - 8 bit Deltal Sigma ADC - §é ph©n gi¶i 8 bit, bï 2 - Tèc ®é lÊy mÉu: 32K mÉu/gi©y - D¶i ®Çu vµo: ®−îc ®Þnh nghÜa bëi c¸c lùa chän tham chiÕu trong hoÆc ngoµi - Xung nhÞp bªn trong hoÆc bªn ngoµi 104 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN DELSIG8 lµ mét bé biÕn ®æi A/D cã kiÓu tÝch ph©n hµng ®îi, cÇn ph¶i cã 127 chu kú tÝch ph©n ®Ó cã ®−îc mét mÉu ë ®Çu ra. H×nh 6-11: S¬ ®å nguyªn lý bé ADC DelSig8 2.2.5. DELSIG11 - 11 bit Deltal Sigma ADC Còng gièng nh− DELSIG8 nh−ng ®é ph©n gi¶i lµ 11 bit, ngoµi ra cßn cã thÓ kÕt hîp thªm mét khèi Analog ®Ó n©ng cao ®é chÝnh x¸c. 2.2.6. DUALADC - Hai bé ADCINCVR kÕt hîp víi nhau ®Ó t¹o ra bé ADC kÐp 2.2.7. TRIADC - Ba bé ADCINCVR kÕt hîp víi nhau ®Ó t¹o ra ba bé ADC. 2.2.8. SAR6 - 6 bit Successive Apropximation Register - §é ph©n gi¶i 6 bit - Sö dông duy nhÊt mét khèi PSoC t−¬ng tù - Thêi gian chuyÓn ®æi tiªu biÓu lµ 25us - Giao diÖn lËp tr×nh øng dông API ®−îc tèi −u ®Ó ®¬n gi¶n trong sö dông. H×nh 6-12: S¬ ®å nguyªn lý cña bé ADC SAR6 2.3. C¸c bé chuyÓn ®æi sè sang t−¬ng tù DAC 6 bit , 8 bit, 9 bit - §é ph©n gi¶i lµ 8 bit - §Çu ra lµ ®iÖn ¸p - Hç trî c¸c lo¹i ®Þnh d¹ng sè ®Çu vµo nh− lµ bï 2, nhÞ ph©n cã dÊu vµ kh«ng dÊu - Gi÷ mÉu cho bus t−¬ng tù vµ ®Çu ra bªn ngoµi - Tèc ®é cËp nhËt cã thÓ ®¹t tíi 125 mÉu/gi©y. 105 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 6-13: S¬ ®å nguyªn lý cña bé chuyÓn ®æi DAC 2.4. C¸c bé läc 2.4.1. Bé läc th«ng thÊp LBF2 - Two-Pole Low Pass Filter - §é khuÕch ®¹i do ng−êi lËp tr×nh lùa chän - TÇn sè c¾t vµ tû lÖ suy gi¶m do ng−êi lËp tr×nh lùa chän, kh«ng cÇn thiÕt bÞ ngoµi - §é æn ®Þnh cña tÇn sè c¾t phô thuéc trùc tiÕp vµo ®é chÝnh x¸c cña xung nhÞp - TÇn sè lÊy mÉu cña bé läc lªn tíi 1.0 MHz H×nh 6-14: S¬ ®å nguyªn lý cña bé läc th«ng thÊp 2.4.2. Bé läc th«ng gi¶i PBF2 - Two-Pole Band Pass Filter H×nh 6-15: S¬ ®å nguyªn lý cña bé läc th«ng gi¶i 106 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN - §é khuÕch ®¹i d¶i gi÷a lËp tr×nh ®−îc - TÇn sè gi¶i th«ng cã thÓ lËp tr×nh ®−îc, kh«ng cÇn thiÕt bÞ ngoµi - §é æn ®Þnh cña tÇn sè gi¶i th«ng phô thuéc trùc tiÕp vµo ®é chÝnh x¸c cña xung nhÞp. - TÇn sè lÊy mÉu lªn tíi 1.0 MHz - Bé ph¸t hiÖn v−ît qua ®iÓm kh«ng ®−îc tÝch hîp s½n. 2.5. Khèi PSoC SC (Analog Switch capacitor PSoC Block) - §iÒu chØnh toµn bé b»ng tham sè phôc vô cho nh÷ng ph¸t triÓn tïy ý - Lùa chän møc n¨ng l−îng tiªu thô - Khèi ®−îc cÊu h×nh nguyªn mÉu H×nh 6-16: S¬ ®å nguyªn lý cña bé SC Block 2.6. C¸c bé lùa chän MUX (Mutiplexer) 2.6.1. Bé chän 4 ®Çu vµo t−¬ng tù (4 to 1 Analog Mutiplexer) H×nh 6-17: S¬ ®å nguyªn lý cña bé chän 4 ®Çu vµo 107 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN - Trë kh¸ng ®Çu vµo cao - Cã thÓ kÕt hîp víi khèi RefMux ®Ó ®a d¹ng hãa ®Çu vµo tÝn hiÖu cho khèi SC. - Cã thÓ lËp tr×nh lùa chän ®Çu vµo. 2.6.2. Bé chän tham chiÕu (Reference Multiplexer) - Cung cÊp ph−¬ng ph¸p ®Ó ®−a ®iÖn ¸p tham chiÕu(AGND, REFHi, REFLO) ra ch©n ngoµi - Cung cÊp mét bé chän vµo 4 ra 1 cho khèi SC nÕu ®−îc sö dông víi AMUX4 - Cung cÊp mét ph−¬ng ph¸p nèi trùc tiÕp ®Çu vµo t−¬ng tù sang ®Çu ra t−¬ng tù H×nh 6-18: S¬ ®å nguyªn lý cña bé chän ®iÖn ¸p tham chiÕu 2.7. DTMFDiler - DTMF Diler Analog Output - Xung nhÞp cã thÓ lùa chän ®−îc - §Çu ra Analog - Ch¹y d−íi nÒn ®Ó cho phÐp ®iÒu khiÓn hÖ thèng trong khi ®ang quay sè (lùa chän cÊu h×nh) - ¢m s¾c cã thÓ ®−a ra mét c¸ch liªn tôc b»ng ®iÒu khiÓn ch−¬ng tr×nh - Tù ®éng bæ sung kho¶ng ©m s¾c ®· ®−îc ®Æt cÊu h×nh cho tÊt c¶ c¸c ©m s¾c ra - Chu kú ©m s¾c cã thÓ ®Æt cÊu h×nh ®−îc - Kh¶ n¨ng cña ®Çu ra tõ –1,7dBm ch−a ®−îc khuÕch ®¹i ®èi víi t¶i 600 Ω cho tíi +3,1 dBm ®· khuÕch ®¹i - Kh¶ n¨ng l¸i t¶i 32 Ω ë ®Çu ra ë møc ®iÖn ¸p 5VRMS. H×nh 6-19: S¬ ®å nguyªn lý bé DTMFDiler 108 Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN Ch−¬ng 7: Mét sè tµi nguyªn bæ xung kh¸c 1. Nh÷ng User Module ®−îc bæ xung 1.1. Module HiÓn thÞ Tinh thÓ láng - LCD - Sö dông giao thøc theo tiªu chuÈn c«ng nghiÖp cña HITACHI HD44780 - ChØ yªu cÇu sö dông 7 ch©n I/O trªn mét cæng vµo ra - C¸c hµm hç trî viÖc in x©u ký tù trong RAM vµ ROM - C¸c hµm hç trî viÖc in c¸c sè - C¸c hµm hç trî viÖc in c¸c thanh ®å häa theo chiÒu ngang hoÆc chiÒu däc Module LCD lµ mét tËp th− viÖn c¸c ch−¬ng tr×nh con ®Ó ghi c¸c x©u ký tù vµ ®Þnh d¹ng c¸c sè theo mét chuÈn chung hai hoÆc bèn hµng, c¸c thanh ®å häa ngang hoÆc däc ®−îc hç trî b»ng c¸ch sö dông nh÷ng ®Æc ®iÓm ®å häa hay ký tù cña Module LCD nµy. Module nµy ®−îc ph¸t triÓn ®Æc biÖt dµnh riªng cho chuÈn c«ng nghiÖp cña Hitachi HD44780 hai hµng 16 ký tù, nh−ng vÉn sÏ lµm viÖc cho nhiÒu mµn hiÓn thÞ 4 hµng kh¸c. Th− viÖn nµy sö dông chÕ ®é giao diÖn 4-bit ®Ó tiÕt kiÖm c¸c ch©n vµo ra cho chÝp. 1.2. Module TruyÒn th«ng I2C - Giao diÖn theo chuÈn c«ng nghiÖp I2C cña h·ng Philips - VËn hµnh ë chÕ ®é Master vµ Slave, cã kh¶ n¨ng hç trî nhiÒu Master - ChØ sö dông 2 ch©n (SDA vµ SCL) ®Ó giao tiÕp víi Bus I2C - Tèc ®é d÷ liÖu chuÈn lµ 100/400 kBit/s, hç trî 50 kbit/s - API x©y dùng s½n khiÕn cho viÖc lËp tr×nh trë nªn dÔ dµng - ChÕ ®é 7 bit ®Þa chØ, hç trî ®Õn 10 bit ®Þa chØ Module I2CHW bæ sung mét thiÕt bÞ I2C d−íi d¹ng phÇn mÒm nhóng, bus I2C lµ mét chuÈn c«ng nghiÖp, giao diÖn phÇn cøng cã hai d©y, ®−îc ph¸t triÓn bëi h·ng Philip. Master khëi t¹o tÊt c¶ c¸c thao t¸c truyÒn th«ng lªn bus I2C vµ cung cÊp xung nhÞp cho tÊt c¶ c¸c thiÕt bÞ Slave. Module I2CHW hç trî chÕ ®é chuÈn víi tèc ®é lªn tíi 400 kbit/s. Module nµy kh«ng cÇn sö dông khèi PSoC nµo. Nã t−¬ng thÝch víi c¸c thiÕt bÞ Slave kh¸c trªn cïng mét bus. 1.3. Module E2PROM 109 Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN - Ho¹t ®éng theo nguyªn t¾c cña mét EEPROM cã ®Þnh h−íng byte - Cã cÊu tróc ®Þnh h−íng theo khèi - Sö dông bé nhí hiÖu qu¶. Module E2PROM lµ bé gi¶ lËp bé nhí EEPROM trong bé nhí Flash cña PSoC. E2PROM cã thÓ ®−îc ®Þnh nghÜa ®iÓm b¾t ®Çu t¹i bÊt kú ®−êng biªn cña khèi Flash nµo, víi mét byte ®é dµi tõ 1 ÷ phÇn d− cßn l¹i cña bé nhí Flash. API cho phÐp ng−êi sö dông ®äc hoÆc viÕt tõ 1 ÷ N byte trong mét lÇn ®äc. Module nµy lµ mét kü thuËt phÇn mÒm cïng víi phÇn cøng Flash cho ROM cña chÝp nªn nã kh«ng chiÕm bÊt kú mét tµi nguyªn phÇn cøng nµo cña thiÕt bÞ PSoC. Bé nhí Flash cña thiÕt bÞ PSoC ®−îc tæ chøc d−íi d¹ng 256 khèi 64 byte ®èi víi thiÕt bÞ 16 K. Kü thuËt Flash cña PSoC cho phÐp ®äc tõng byte d÷ liÖu trong bé nhí Flash, nh−ng khi viÕt l¹i th× yªu cÇu ph¶i viÕt c¶ 64 byte cïng mét lóc. Vïng l−u tr÷ cña E2PROM ph¶i b¾t ®Çu t¹i ®−êng biªn khèi bé nhí Flash vµ cã thÓ bao gåm 1 hoÆc nhiÒu byte. Sö dông c¸c hµm API lµ E2Read() vµ E2Write() ®Ó ®äc vµ ghi d÷ liÖu. Hµm E2Read() cña API ®äc bé nhí Flash b»ng c¸ch sö dông lÖnh ROMX cña M8C. LÖnh nµy cho phÐp ®äc bé nhí Flash theo tõng byte mét c¸ch cã hiÖu qu¶. Nã yªu cÇu sö dông 8 byte cuèi cïng cña RAM, tõ 0xF8 ÷ 0xFF. Hµm E2Write() cña API ghi d÷ liÖu cña bé nhí Flash theo tõng khèi, dùa trªn ®Þa chØ ®Çu cña kh«ng gian nhí E2PROM, hµm E2Write() ph©n tÝch d÷ liÖu ®−îc viÕt thµnh nhiÒu phÇn vµ dùa theo ®−êng biªn cña tõng khèi, nã còng yªu cÇu sö dông 8 byte cuèi cïng cña RAM tõ 0xF8 ÷ 0xFF. 110 ...
View Full Document

Ask a homework question - tutors are online