DSPå•世以來,以其強大的功能ã€åˆç†çš„åƒ¹æ ¼å·²ç¶“è¢«è¨è¨ˆè€…廣泛應用。但ä¸åŒäºŽFPGA器件的是,DSP并䏿˜¯ç‚ºç¾å ´å¯ç·¨ç¨‹è€Œé–‹ç™¼çš„ï¼Œå› æ¤ï¼Œåœ¨åµŒå…¥äº†DSP器件的產å“ä¸ï¼Œå¦‚果需è¦å°ç”¢å“性能進行å‡ç´šè€Œéœ€è¦å‡ç´šç¨‹åºæ™‚,往往會由于ç¾å ´å¯ç·¨ç¨‹èƒ½åŠ›ç¼ºä¹ï¼Œè€Œçµ¦ç”¨æˆ¶é€ æˆéº»ç…©ã€‚本文以TIå…¬å¸çš„54系列DSP為例,通éŽå°DSP開發éŽç¨‹çš„分æžå’Œä»£ç¢¼ç”Ÿæˆæ©Ÿç†çš„æ·±å…¥ç ”究,找到了一種å°DSP器件進行ç¾å ´ç·¨ç¨‹çš„æ–¹æ³•。
  
[b]1 54x DSP的開發
[/b]  CCS集æˆé–‹ç™¼ç’°å¢ƒæ˜¯TIå…¬å¸é‡å°å…¶å…¨ç³»åˆ—DSP開發的仿真編è¯å™¨ï¼Œå¯é–‹ç™¼ç›®å‰TIå…¬å¸å¹¾ä¹Žæ‰€æœ‰é¡žåž‹çš„DSP芯片。在CCS集æˆé–‹ç™¼ç’°å¢ƒä¸‹ï¼Œ54x DSP的開發一般分為以下幾個æ¥é©Ÿï¼šç¨‹åºç·¨å¯«ã€ç¨‹åºç·¨è¯ã€COFF文件生æˆã€ä»¿çœŸé‹è¡Œã€HEX文件生æˆã€ç¨‹åºå˜å„²å™¨ç‡’寫和上機é‹è¡Œç‰ï¼Œå…·é«”æµç¨‹å¦‚圖1所示。

  在æºç¨‹åºæ£ç¢ºçš„æƒ…æ³ä¸‹ï¼Œå¯ç·¨è¯ç”ŸæˆCOFF(common()bject File Format)文件,其åŽç¶´ç‚º.out,å¯ç”¨äºŽé€²è¡Œç¡¬ä»¶ä»¿çœŸé‹è¡Œï¼Œä½†ä¸èƒ½ç›´æŽ¥ä½œç‚ºç¨‹åºç‡’寫。如果è¦å°‡ç¨‹åºå¯«å…¥DSP的外部程åºå˜å„²å™¨ï¼Œé¦–å…ˆè¦æ ¹æ“š.out文件生æˆHEX文件。
  HEX文件的生æˆéœ€è¦èª¿ç”¨å°ˆç”¨çš„生æˆç¨‹åºHEX500,在WIN32環境下執行HEX500*.cmd命令,生æˆéœ€è¦çš„*.hex文件。按照命令文件*.cmdä¸çš„é¸é …,å¯è¨ç½®å˜å„²å™¨çš„類型ã€ä½æ•¸ã€èµ·å§‹åœ°å€ï¼Œç¨‹åºçš„人å£åœ°å€ã€å¼•å°Žæ–¹å¼å’Œhexæ–‡ä»¶çš„æ ¼å¼ç‰ã€‚䏋颿˜¯ä¸€æ®µç”¨ä¸²å£å°8ä½ä¸²è¡ŒEOPROM進行引導的命令文件的例å。
  123.out ï¼ï¼Šè¼¸å…¥æ–‡ä»¶å*ï¼
  -i ï¼ï¼ŠINTELæ ¼å¼ï¼Šï¼
  -map 123.mxp
  -o 123.hex ï¼ï¼Šè¼¸å‡ºæ–‡ä»¶å*ï¼
  -memwidth 8 ï¼ï¼Š8ä½å˜å„²å™¨ï¼Šï¼
  -romwidth 8 ï¼ï¼Šè¼¸å‡ºæ–‡ä»¶ç‚ºå—節*ï¼
  -bcrotorg 0x0000 ï¼ï¼Šå¤–部å˜å„²å™¨é–‹å§‹åœ°å€ï¼Šï¼
  -bootorg serial ï¼ï¼Šä¸²å£è£è¼‰ï¼Šï¼
  -e_main ï¼ï¼Šä¸»ç¨‹åºäººå£ï¼Šï¼
   SECTI()NS
 {.text;boot
ã€€ã€€ï½ ï¼ï¼Šæ•´å€‹ç¨‹åºä½œç‚ºä¸€æ®µå¼•導*ï¼
  
[b]2 HEX文件
[/b]  CCS的編è¯å™¨å’ŒéˆæŽ¥å™¨ç”ŸæˆCOFF目標文件。COFFç›®æ¨™æ–‡ä»¶æ˜¯äºŒé€²åˆ¶æ ¼å¼ï¼Œæœ‰åˆ©äºŽæ¨¡å¡ŠåŒ–編程和更高效的程åºç‰‡æ–·å’Œç›®æ¨™ç³»çµ±å˜å„²å™¨ç®¡ç†ã€‚ä½†æ˜¯å¤§å¤šæ•¸çš„ç·¨ç¨‹å™¨ä¸æŽ¥å—COFF文件。å¯ä»¥ç”¨HEX轉化程åºå°‡å…¶è½‰æ›ç‚ºä»¥ä¸‹5種標準的ASCIIåå…é€²åˆ¶æ ¼å¼ï¼š
  ◇ASCII-HEX,支æŒ16ä½åœ°å€ï½
  ◇擴展的TeKtronix;
  ◇Intel MCS-86;
  ◇Motorola-s,支æŒ16ä½ã€24ä½ã€32ä½åœ°å€ï¼›
  ◇TI Tagged,支æŒ16ä½åœ°å€ã€‚
  ä»ç„¶ç”¨å‰é¢çš„例å,命令文件生æˆçš„HEX文件片斷如圖2所示(用UltraEdit-32打開)。

  在命令文件ä¸ï¼Œä¹Ÿå¯ä»¥æ ¹æ“šå…·é«”應用情æ³çš„ä¸åŒè¦å®šä¸åŒçš„åƒæ•¸ï¼Œä¾‹å¦‚,當使用并行å˜å„²å™¨ä½œç‚ºç¨‹åºå˜å„²å™¨æ™‚,則引導è£è¼‰å‘½ä»¤å°±è¦æ”¹ç‚ºparallelã€‚å…·é«”åƒæ•¸è¨ç½®è¦‹åƒè€ƒæ–‡ç»[1]。
  
[b]3 硬件編程接å£
[/b]  為仿真調試的方便,54x DSP器件都具有仿真編程用的JTAG接å£ï¼Œå…¶å¼•腳定義如圖3所示。
  通éŽJTAGå£ï¼Œå¯ä»¥èˆ‡DSP建立通信è¯ç³»ï¼Œå¹¶é€šéŽç‰¹å®šçš„程åºï¼ŒæŽ§åˆ¶DSP的內部單元,讓DSP執行é 定的æ“作.這是DSP實ç¾ç¾å ´å¯ç·¨ç¨‹çš„硬件基礎,如圖4所示。

  
[b]4 ç¾å ´å¯ç·¨ç¨‹çš„å¯¦ç¾æ–¹æ³•
[/b]  由于DSP的程åºä¸€èˆ¬å˜å„²åœ¨å¤–部å˜å„²å™¨ä¹‹ä¸ï¼Œå› æ¤ï¼Œç¾å ´å¯ç·¨ç¨‹çš„實ç¾å°±æ˜¯è¦å°‡æ–°ç¨‹åºé€šéŽDSP寫入å˜å„²å™¨ã€‚在以å‰ï¼Œç”±äºŽå˜å„²å™¨çš„燒寫電壓普é高于其工作電壓,åªèƒ½é€šéŽç·¨ç¨‹å™¨ç‡’寫.隨著技術的發展,ç¾åœ¨è¨±å¤šE2PROMã€Flashå˜å„²å™¨ç‰éƒ½å¯é€²è¡Œé›»æ“¦å¯«ï¼Œæ“¦å¯«é›»å£“å’Œå·¥ä½œé›»å£“ä¸€è‡´ï¼Œå› æ¤å®Œå…¨å¯ä»¥é€²è¡Œå·¥ä½œé›»å£“下的編程。
  å°DSP進行ç¾å ´ç·¨ç¨‹ï¼Œéœ€è¦ç”¨åˆ°çš„å™¨ææœ‰è¨ˆç®—機和DSP仿真器;需è¦ç”¨åˆ°çš„軟件有CCS集æˆé–‹ç™¼å¹³è‡ºã€UltraEdit-32程åºå’ŒDSPç¾å ´ç·¨ç¨‹ç¨‹åºã€‚å…·é«”æ“作æ¥é©Ÿå¦‚下:
  ①在CCS集æˆé–‹ç™¼ç’°å¢ƒä¸‹ï¼Œå°‡ç¨‹åºç·¨è¯å®Œæˆï¼Œå¹¶åœ¨ç›®æ¨™æ¿ä¸Šé‹è¡Œé€šéŽã€‚
  ②打開程åºå˜å„²å™¨çª—å£ï¼Œæ ¹æ“šç¨‹åºçš„èµ·å§‹ã€çµæŸåœ°å€ï¼Œå°‡æ•´å€‹ç¨‹åºä»£ç¢¼å˜å„²ç‚ºä¸€å€‹æ•¸æ“šæ–‡ä»¶ï¼ˆdat文件)。
  ③生æˆhex文件。
  ④用UltraEdit-32ç¨‹åºæ‰“é–‹hex文件,找出程åºäººå£å€¼å’Œç¨‹åºé•·åº¦å€¼ä»¥åŠç¨‹åºé–‹å§‹åœ°å€å€¼.
  ⑤調入燒寫程åºï¼Œå¹¶è£è¼‰å…¥ç³»çµ±èŠ¯ç‰‡.
  ⑥將程åºå…¥å£å€¼ã€ç¨‹åºé•·åº¦å€¼ã€ç¨‹åºé–‹å§‹åœ°å€å€¼å¡«äººç¾å ´ç·¨ç¨‹ç¨‹åºä¸å¹¶ç·¨è¯é€šéŽã€‚
  ⑦將å˜å„²çš„程åºä»£ç¢¼èª¿å…¥æ•¸æ“šç©ºé–“çš„é©ç•¶ä½ç½®ï¼ˆå˜æ”¾ä½ç½®è‡ªå®šï¼‰ã€‚
  ⑧é‹è¡Œç¾å ´ç·¨ç¨‹ç¨‹åºï¼Œé€šéŽDSP將代碼寫入外部程åºå˜å„²å™¨ã€‚
  以上æ¥é©Ÿåƒ…在編程開始時進行,一旦編程開始,就å¯ä»¥é€£çºŒå°å¤šå€‹å™¨ä»¶ç¾å ´ç·¨ç¨‹ã€‚
  DSPç¾å ´ç·¨ç¨‹ç¨‹åºçš„編制也很簡單。下é¢çš„åƒè€ƒç¨‹åºæ˜¯æ ¹æ“šå‰é¢çš„å‘½ä»¤æ–‡ä»¶åƒæ•¸ç·¨å¯«çš„,并經仿真驗è‰é€šéŽã€‚è¨å®šMc·BSP2å£ä»¥SPIæ–¹å¼å¼•導串行E2PROM。
  .text
  …… ï¼›McBSP2å£SPIåˆå§‹åŒ–,主動方å¼
  STM #1000H,ARl;從1000Hé–‹å§‹10個å—為程åº
  ;代碼å‰çš„æ•¸æ“š
  ST #08AAH,* ARl+ ;引導é
  ST #0018H,* ARl+
  ST #O003H,* ARl+
  ST #0800H,* ARl+
  ST #D010H,* ARl+ ï¼›ä¸é‡è¦
  ST #000lH,* ARl+
  ST #0C428H,* ARl+ ;主程åºäººå£ç‚º1C428H
  ST #2340H,* ARl+ ;程åºä»£ç¢¼ç¸½å—數2340H
  ST #000lH,* ARI+
  ST #0C000H,* ARl+;程åºé–‹å§‹åœ°å€1C000H
  STM #(1000H+0AH+2340H),ARl
  ST #O,* ARlï¼›æœ€åŽæ”¾çµæŸæ¨™å¿—#0000H
  STM #O,ADDRESS ;地å€å¯„å˜å™¨æ¸…é›¶
  STM #1000H,AR2 ;程åºä»£ç¢¼é–‹å§‹åœ°å€
  STM #(0AH+2340H+1),BRC
  RPTB LOOP ;寫循環
  LDM ADDRESS,A
  SFTL A,-8
  AND #OOFFH,A
  OR #0200H,A
  STLM A,AR3 ;寫指令+地å€é«˜ä½
  LDM ADDRESS,A
  SFTL A,8
  AND #OFF00H,A
  LD * AR2,B
  SFTL B.-8
  AND #0FFH,B
  ADD B.A
  STLM A,AR4 ;地å€ä½Žä½+數據å—節
  LDM ADDRESS.A
  ADD #1.A
  STLM A,ADDRESS ï¼›E2PROM地å€+1
  CALL WRITE ;寫E2PROMå程åº
  LDM ADDRESS,A
  SFTL A,-8
  AND #00FFH,A
  OR #0200H,A
  STLM A,AR3 ;寫指令+地å€é«˜ä½
  LDM ADDRESS,A
  SFTL A,8
  AND #0FFOOH,A
  LD *AR2+.B;程åºä»£ç¢¼åœ°å€+1
  AND #0FFH,B
  ADD B.A
  STLM A,AR4 ;地å€ä½Žä½+數據å—節
  LDM ADDRESS,A
  ADD #1,A
  STLM A,ADDRESS ï¼›EOPROM地å€+1
  CALL WRITE;寫EOPROMå程åº
  LOOP:NOP
  .end
  
[b]çµ èªž
[/b]  本文介紹的DSPç¾å ´å¯ç·¨ç¨‹æ–¹æ³•ï¼Œç¶“å¯¦éš›æ‡‰ç”¨æ•ˆæžœè‰¯å¥½ï¼Œå…¶æ–¹ä¾¿éˆæ´»çš„特點增強了ç¾å ´è™•ç†å•題的能力。由于其完全由軟件實ç¾ï¼Œå› æ¤é€™ç¨®æ–¹æ³•åŒæ¨£ä¹Ÿé©ç”¨äºŽå…¶ä»–å“牌的DSP產å“。
                             編輯:何世平