朱 磊,李維維,韓天琪,趙曉田
(西安工程大學 電子信息學院,陜西 西安 710048)
帶自舉功能的DSP外設擴展模塊設計
朱 磊,李維維,韓天琪,趙曉田
(西安工程大學 電子信息學院,陜西 西安 710048)
TMS320VC54x系列DSP(Digital Signal processor)沒有AD、DA等常用外設且缺少程序存儲器,故其應用系統(tǒng)通常需進行外設擴展模塊與自舉模塊設計,針對傳統(tǒng)解決方案將兩個模塊分別實現(xiàn)存在擴展器件多、系統(tǒng)集成度不高等問題,本文提出了一種帶自舉功能的DSP外設擴展模塊。該模塊通過將C8051F330單片機作為唯一的外擴芯片,利用其片內(nèi)FLASH存儲DSP自舉程序代碼,并采用其片上AD、DA實現(xiàn)DSP的外設擴展。實驗表明本文提出的DSP外設擴展模塊合理可行。
TMS320VC54x;DSP;外設擴展;自舉
TMS320VC54x系列DSP由于具有快速運算能力,其指令執(zhí)行速度最高可達160 MIPS,因此在消費電子、通信等領域應用廣泛[1]。但此系列DSP片上沒有AD、DA等工業(yè)常用外設,常需要對其進行外設擴展模塊設計,另外,此系列DSP也沒有FLASH、EEPROM等便于改寫的片內(nèi)程序存儲器,掉電后不能保存用戶程序代碼,因此還需要對其擴展自舉模塊。文獻[2-4]給出了不同的DSP外設擴展模塊設計方案,而文獻[5-6]則給出了不同的DSP自舉模塊設計方案,上述將外設擴展模塊與自舉模塊分別實現(xiàn)的設計方案,存在外擴器件較多、集成度不高、成本較高等問題。為此,文中提出了一種帶自舉功能的DSP外設擴展模塊,該模塊僅用外擴一個芯片,就能一體實現(xiàn)DSP的外設擴展與自舉,具有擴展器件少、系統(tǒng)集成度高、穩(wěn)定性好、成本較低等特點。
文中提出的DSP外設擴展模塊,借助C8051F330豐富的片上外設資源對DSP實現(xiàn)10位AD、DA擴展,同時利用
C8051F330片內(nèi)FLASH存儲DSP用戶程序代碼,并用標準串行總線實現(xiàn)自舉,模塊原理框圖如圖1所示。圖1中虛線框部分為本文設計的DSP外設擴展模塊,其中C8051F330是本模塊的唯一外擴芯片。一方面,目標板中的DSP通過將其片上McBSP0配置為SPI工作模式,實現(xiàn)控制C8051F330片上的AD采樣數(shù)據(jù)或DA形成模擬波形,從而完成對DSP的AD、DA外設擴展。上述SPI通信中,TMS320VC5416為主設備,C8051F330為從設備。另外,考慮到只有SPI主設備才能啟動數(shù)據(jù)傳輸,為了將SPI從設備的AD采樣數(shù)據(jù)第一時間傳輸給SPI主設備,SPI從設備通過I/O引腳觸發(fā)SPI主設備的外部中斷,從而使SPI主設備啟動SPI通信。另一方面,利用C8051F330片內(nèi)FLASH的剩余空間(從0x0BB7到0x1FF)存儲DSP程序代碼,同時,利用5個I/O引腳模擬DSP的標準串行自舉接口,從而實現(xiàn)DSP的標準串行自舉模塊設計。DSP有多種自舉模式[7],標準串行自舉模式占用的DSP硬件資源最少,故本文模塊選用了標準串行自舉模式。但在此模式下,自舉模塊必須與DSP的McBSP0接口相連,為了進一步減少對DSP硬件資源的占用,本文將C8051F330的SPI接口與5個I/O引腳模擬的標準串行自舉接口復用DSP的McBSP0接口。
圖1 帶自舉功能的DSP外設擴展模塊原理框圖Fig. 1 Principle block diagram of DSP peripheral extension module with bootloader function
文中提出的DSP外設擴展模塊硬件主要包括如下幾部分:自舉模塊,SPI通信模塊,外設擴展模塊以及C8051F330最小系統(tǒng)模塊,考慮到介紹C8051F330最小系統(tǒng)的文獻較多,此處不再贅述, 這里主要給出其他模塊的硬件連接關系,如圖2所示。
圖2 DSP外設擴展模塊主要硬件連接關系圖Fig. 2 Main hardware connection diagram of DSP peripheral extension module
圖2虛線框1為自舉模塊(標準串行自舉方式)引腳連接關系,其中與標準串行自舉直接相關的DSP引腳為接收時鐘信號(BCLKR0),多通道緩沖接收引腳(BDR0),幀同步接收信號(BFSR0),因為DSP與單片機啟動不同步,因此需要設置RS引腳在單片機上電后對DSP進行復位,設置XF引腳在DSP準備好后觸發(fā)單片機的INT0啟動自舉操作。另外,DSP的自舉方式有多種,且標準串行自舉模式比較靠后,所以必須在硬件上對DSP的INT2、INT3和BIO引腳進行上拉保護,從而確保DSP上電后,其片上Bootloader進入標準串行自舉方式。圖2虛線框2給出了SPI通信模塊中DSP與單片機對應引腳連接關系,本文采用4線主從方式實現(xiàn)SPI通信,DSP的BCKLX0為時鐘控制引腳,BFSX0為片選引腳,為了最大限度節(jié)省DSP硬件資源,自舉模塊和SPI通信模塊中的BDR0引腳進行了復用。為使主從設備更好地進行通信,SPI通信過程中設置了主從握手函數(shù),P16為握手中斷控制引腳。圖2虛線框3說明了外設擴展模塊引腳連接關系,外設擴展模塊介紹了AD、DA及參考電壓硬件設置,P17引腳為AD波形輸入端,實驗時配置為模擬輸入,開漏輸出。P01引腳為DA的波形輸出端,P00引腳為參考電壓接入引腳,配置為模擬輸入,開漏輸出,AD采樣必須設置電壓基準,C8051F330的電壓基準可以被配置為外部電壓基準、內(nèi)部電壓基準或電源電壓VDD,為了使硬件設計更加簡單,本文選用內(nèi)部電壓基準。
DSP外設擴展模塊軟件設計分為兩部分:代碼轉換程序設計和C8051F330單片機程序設計。代碼轉換程序是為了將用戶在DSP開發(fā)軟件CCS下編譯生成的.out文件(一種公共目標文件格式,包含了許多冗余信息)去除冗余信息,變?yōu)槿坑杏玫腄SP自舉文件格式,具體過程參見文獻[8]。下面詳細介紹單片機程序的具體內(nèi)容。
圖3 C8051F330程序主流程圖Fig. 3 Main flowchart of C8051F330 program
C8051F330單片機程序包括四部分:DSP與單片機之間的通信協(xié)議、兩次初始化程序、自舉程序及片上外設驅動程序。C8051F330單片機程序主流程圖如圖3所示,圖3中,單片機系統(tǒng)上電后,程序便開始運行,首先要禁止看門狗,防止程序跑飛,因DSP啟動速度比C8051F330快,故自舉前,先要初始化單片機端口并復位DSP,等待DSP的XF引腳觸發(fā)P07中斷后啟動自舉操作。自舉完成后,就要利用C8051F330單片機的片上AD、DA對DSP進行外設擴展,DSP的外設擴展是建立在SPI通信基礎上的,通信前,需要對單片機進行第二次初始化,避免引腳沖突。通信過程中,單片機與DSP需要通過SPI_handshaking()函數(shù)進行握手,握手成功后,單片機便可通過SPI通道讀取DSP發(fā)送的AD命令或DA命令進行AD、DA擴展。
為了使DSP和單片機進行良好的通信,本文設置了SPI通信協(xié)議,具體如圖4所示,下面對此協(xié)議的制定作簡要介紹。協(xié)議中一幀數(shù)據(jù)包括4個字節(jié):第一字節(jié)為起始標志字節(jié),值為0xC5,對應的二進制數(shù)為11000011,起始標志字節(jié)在數(shù)據(jù)傳輸中發(fā)揮著巨大作用,它標志著傳輸數(shù)據(jù)是否有意義;第二字節(jié)為命令字節(jié),DSP在數(shù)據(jù)傳輸過程中處于兩種命令狀態(tài),如果第二字節(jié)的6-7位值為01,則DSP處于AD命令狀態(tài),6-7位為10則DSP處于DA命令狀態(tài);第三、四字節(jié)分別裝載的是10位AD、DA高、低8位數(shù)據(jù)。
圖4 DSP與單片機之間的通信協(xié)議Fig. 4 Communication protocols between DSP and MCU
單片機需要進行兩次初始化,第一次初始化是在自舉之前,包括端口初始化、時鐘初始化和中斷初始化,第二次初始化是在自舉之后,在第一次初始化的基礎上還需進行SPI初始化、AD初始化、DA初始化,兩次初始化期間,時鐘只能初始化一次,否則單片機初始化不會成功。時鐘初始化時被配置為24.5 MHz。之所以要對單片機進行兩次初始化是因為自舉和SPI通信過程中,DSP的McBSP0接口進行了復用,而且這樣設計可以節(jié)省更多的硬件資源,降低設計成本。下面主要介紹下AD、DA和SPI初始化過程。AD初始化如下所示:
標準串行自舉邏輯時序圖如圖5所示,圖5指出模擬標準串行自舉只需3個I/O引腳,但本文卻用5個I/O口,其中另設了XF和RS引腳。因為DSP啟動速度與單片機不同步,因此需設置RS引腳讓單片機上電后對DSP進行復位,設置XF引腳讓DSP觸發(fā)單片機的外部中斷INT0,啟動自舉模塊。圖5中的邏輯時序圖說明為保證DSP正常運行,以下條件必須滿足:傳輸每個字節(jié)數(shù)據(jù)需至少保證40個DSP時鐘周期的延時時間,單片機時鐘(BCLKR0) 不可超過DSP時鐘頻率的1/2。發(fā)送幀同步信號之前應先發(fā)送2個時鐘信號,幀同步信號置高期間發(fā)送1.5個時鐘,幀同步信號置底后開始按位發(fā)送數(shù)據(jù), 一字節(jié)數(shù)據(jù)發(fā)送完成后再發(fā)送兩個時鐘信號。
圖5 DSP標準串行自舉邏輯時序圖Fig. 5 Timing conditions for DSP serial port boot operation
片上外設驅動程序包括SPI通信驅動程序、AD與DA驅動程序。SPI通信是DSP外設擴展模塊的軟件基礎,通信前,單片機先拉低DPS_INT0觸發(fā)DSP的外部中斷INT0,再讀取一個無意義的SPI數(shù)據(jù)和DSP進行握手,握手成功后,主從設備便可通過SPI通道互相寫數(shù)據(jù)或讀取對方發(fā)送dat[]中的數(shù)據(jù)。SPI通信讀函數(shù)驅動程序如下所示,程序中SPI0DAT為SPI0數(shù)據(jù)寄存器,C8051F330在SPI通信中通過讀SPI0DAT來讀取接收緩沖器中的數(shù)據(jù)。
SPI通信讀函數(shù)驅動程序:
C8051F330內(nèi)部AD有6種轉換啟動方式,本文采用寫‘1’到ADC0CN的AD0BUSY位,向AD0BUSY寫‘1’方式提供了用軟件控制ADC0轉換的能力。AD0BUSY位在轉換期間被置‘1’,轉換結束后賦‘0’。單片機初始化完成,給C8051F330的P17端口輸入正弦波(由于實驗設備仍需完善,正弦波頻率限制在0~20 Hz,幅值限制在0~3.3 V)進行AD采樣,本文采用查詢方式進行AD采樣,使用AD中斷標志(AD0INT)來不斷查詢AD轉換是否完成。當AD0INT位為邏輯‘1’時,AD數(shù)據(jù)寄存器(ADC0H:ADC0L)中的轉換結果有效。采樣完后,單片機通過SPI通道將采樣值傳送給DSP,DSP通過SPI_READ()函數(shù)從SPI讀取采樣數(shù)據(jù)。C8051F330片內(nèi)DA為電流模式數(shù)/模轉換器(IDAC)。IDAC的最大輸出電流可以有3種不同的設置:0.5 mA、1 mA和2 mA,此程序中設置為2 mA。DA轉換時,DSP通過SPI_WRITE()函數(shù)將需要進行DA的數(shù)據(jù)寫給單片機,最終單片機再將DSP發(fā)來的數(shù)據(jù)進行DA處理,AD采樣驅動程序如下所示:
為驗證本文設計模塊的可行性,下面以TMS320VC5416目標板為例,設計了如下兩個實驗:一、16位標準串行自舉實驗;二、片上AD與DA擴展實驗。
實驗一:16位標準串行自舉實驗
實驗一是為了驗證C8051F330單片機可否成功實現(xiàn)TMS320VC5416處理器的16位標準串行自舉。為了使實驗結果便于觀察,本文用CCS編寫了液晶顯示程序,顯示內(nèi)容為“基于C8051F330的DSP自舉模塊 液晶顯示自舉測試等”。由上文可知,須將編寫程序代碼在CCS軟件下編譯生成.out文件,再將.out文件去除冗余信息,變?yōu)槿坑杏玫腄SP程序代碼,移植到C8051F330單片機中才能使用,結合所編寫的自舉程序上電運行后可得到如圖6所示結果,從圖6中可以觀察到DSP完全可以脫離仿真器,從C8051F330單片機讀取DSP用戶程序,以上結果說明自舉模塊設計合理可行。
實驗二:AD與DA擴展實驗
實驗二是為了驗證在完全脫離DSP仿真器的情況下,利用C8051F330片上AD、DA對TMS320VC5416進行片上外設擴展的可行性。實驗中由 TMS320VC5416 控制 C8051F330片上的AD、DA采樣數(shù)據(jù)或形成模擬波形,為了使實驗結果便于觀察,用示波器對AD采樣前的波行與DA重構波形進行雙通道跟蹤,實驗時,通過DSP試驗箱給單片機的P17口接入頻率為20 Hz、最大幅值為1.31 V的正弦波,如圖7中黃色波形所示。單片機的P01端口為DA輸出端,C8051F330的DA輸出為電流輸出,因為要用示波器顯示DA輸出波形,所以需在P01端口接入電阻,將電流輸出轉換為電壓輸出,DA輸出波形如圖7中藍色波形所示。觀察示波器波形,可看到DA重構波形與AD采樣前的波形吻合。以上結果說明,該模塊設計的利用C8051F330片上外設資源對TMS320VC5416處理器進行AD與DA擴展是合理可行的。
圖6 自舉實驗結果圖Fig. 6 Experimental result of bootloader
圖7 AD與DA實驗結果圖Fig. 7 Experimental result of AD and DA
文中提出了一種帶自舉功能的DSP[9]外設擴展模塊,該模塊利用C8051F330的片內(nèi)FLASH存儲DSP用戶程序,并利用5個I/O引腳模擬的標準串行總線實現(xiàn)DSP自舉,從而以一種占用DSP硬件資源最少的方式解決了DSP掉電后不能保存用戶程序的問題;利用C8051F330的片上外設資源對DSP進行10位AD、DA外設擴展,同時C8051F330的SPI接口同標準串行自舉接口復用DSP的McBSP0接口,從而在實現(xiàn)DSP外設擴展的同時,最大限度地節(jié)省了DSP的硬件資源。該模塊用一塊單片機一體實現(xiàn)DSP外設擴展及自舉,具有擴展器件少、集成度高、系統(tǒng)穩(wěn)定性好、成本低廉等優(yōu)點。另外,C8051F330的FLASH內(nèi)存為8K字節(jié),除去單片機程序,可存儲5K字節(jié)左右的DSP程序,因此該模塊可廣泛用于程序代碼不超過5K字節(jié)的DSP系統(tǒng)中。
[1] 宋曉梅.現(xiàn)代電子系統(tǒng)設計教程[M].北京:北京大學出版社,2011.
[2] 苑瑋琦,湯永華.TMS320VC5416在點鈔機人民幣號碼識別記錄系統(tǒng)中的應用[J].電子技術應用,2006,32(7):58-60.
YUAN Wei-qi,TANG Yong-hua.Application of TMS320VC5416 in paper currency number recognition system of record[J].Application of Electronic Technique,2006,32(7):58-60.
[3] 馮涵,何培宇,高勇.一種基于TMS320VC5416 DSK 的有源噪聲控制系統(tǒng)設計與實現(xiàn)[J].四川大學學報:自然科學版,2008,45(4):842-846.
FENG Han,HE Pei-yu,GAO Yong.A design and implementation of active noise control system with TMS320VC5416 DSK[J].Journal of Sichuan University:Natural Science Edition,2008,45(4): 842-846.
[4] 周杰,陳賢詳,楊集.基于CPLD和DSP的不同采樣速率多路數(shù)據(jù)采集系統(tǒng)的設計[J].科學技術與工程,2009,9(8):2080-2084.
ZHOU Jie,CHEN Xian-xiang,YANG Ji.New method of designing a multichannel data acquisition system with different sampling rate based on CPLD and DSP[J].Science Technology and Engineering,2009,9(8):2080-2084.
[5] 徐菲,劉同懷,黃魯.基于Flash的TMS320VC5416 DSP系統(tǒng)自舉實現(xiàn)[J].計算機工程與科學,2006;28(4): 68-70.
XU Fei,LIU Tong-huai,HUANG Lu.Flash-based implementation of the TMS320VC5416 DSP booting system[J].Computer Engineering & Science,2006,28(4):68-70.
[6] 李莉.用軟件編程實現(xiàn)TMS320VC5416的并行自舉加載[J].艦船電子工程,2006,26(2):104-107.
LI Li.Implementation of TMS320VC5416 parallel bootloader with software programming[J].Ship Electronic Engineering,2006,26(2):104-107.
[7] 李志豪,蒲澤新.TMS320VC5416 DSP自舉引導方法的分析與研究[J].信息技術,2003,27(10):58-61.
LI Zhi-hao,PU Ze-xin.A study of DSP TMS320VC5416 bootloader mode[J].Information Technology,2003,27(10):58-61.
[8] 朱磊.CCS環(huán)境兩次編程實現(xiàn)DSP串行EEPROM自舉的方法[J].微計算機應用,2010,31(2):72-75.
ZHU Lei.The method realizing DSP serial EEPROM bootload by twice programming in CCS environment[J].Microcomputer Applications,2010,31(2):72-75.
[9] 張攀,舒健.基于DSP和FPGA的MCI控制系統(tǒng)設計[J].電子科技,2014(1):90-94,99.
ZHANG Pan,SHU Jian.Design of MCI control system based on DSP and FPGA [J].Electronic Science and Technology,2014(1):90-94,99.
TMS320VC54x series Digital Signal Processors (DSP) have no common peripherals, such as analog to digital convert (AD), digital to analog convert (DA) and lack of program memories. Therefore, peripheral expansion modules and bootloader module should be considered and designed in application system of this serie DSP. The traditional solution which has completed the modules respectively has the disadvantages of more expansion devices, lower degree of system integration. To overcome the problems mentioned in traditional solution, this paper proposed peripheral expansion module for DSP with the bootloader function. C8051F330 is the only outside chip which will be used in this module. Its internal FLASH is used to store bootloader program code of DSP and its on-chip AD and DA are used to realize DSP peripheral extension. Experiments show that the proposed DSP peripheral extension module is reasonable.
TMS320VC54x; DSP; Peripheral expansion; bootloader
TN91
A
1674-6236(2014)11-0177-04
2014–02–21 稿件編號:201402126
陜西省教育廳自然科學項目(12JK0547);西安工程大學博士科研啟動基金項目(BS1205);西安市科技局技術轉移促進工程項目(CXY1349(2))
朱 磊(1979—),男,四川綿陽人,碩士,副教授。研究方向:通信與信息系統(tǒng)。
DSP peripheral extension module with bootloader function
ZHU Lei, LI Wei-wei, HAN Tian-qi, ZHAO Xiao-tian
(Electronic and Information College, Xi’an Polytechnic University, Xi’an 710048, China)