1 引言
通過DSP 處理的數(shù)據(jù)往往要傳輸給PC 機進行存儲和再處理,那么就必須解決DSP 與 PC 機之間的高速通信問題。本設計方案以德州儀器(TI)的C5000 系列DSP 芯片TMS320VC5416為微處理器,利用Cypress公司提供的USB2.0接口芯片CY7C68001 實現(xiàn)了USB2.0 從機接口設計,從而使PC機與DSP 通過USB2.0 接口實現(xiàn)高速雙向地傳輸數(shù)據(jù)。
2 TMS320VC5416 與CY7C68001 EZUSBSX2硬件接口設計
系統(tǒng)方案采用PC機作為上位機,負責USB總線上檢測到設備接入并進行枚舉、識別的過程,并且可以通過在PC機上運行應用程序來控制數(shù)據(jù)的傳輸。USB芯片作為USB設備端,連接DSP與上位機的數(shù)據(jù)交換。DSP用于實現(xiàn)USB協(xié)議,通過DSP編程實現(xiàn)DSP數(shù)據(jù)通過USB接口與PC機通信,且USB芯片的描述符寫入及各種命令狀態(tài)的處理均通過DSP編程實現(xiàn)。
TMS320VC5416 是TI 的一款16bit 定點高性能DSP,由于VC5416的功耗低、性能高,其分開的指令和數(shù)據(jù)空間使該芯片具有高度的并行操作能力,在單周期內(nèi)允許指令和數(shù)據(jù)同時存取,再加上高度優(yōu)化的指令集,使得該芯片具有很高的運算速度,同時該芯片本身具有豐富的片內(nèi)存儲器資源以及多種片上外設,因此在工程界得到了廣泛的應用。
Cypress 公司的CY7C68001 EZ-USB SX2 是一款高性能、使用方便的USB2.0 接口芯片,滿足USB2.0 協(xié)議,可工作在高速(480Mbps)或全速(12Mbps)模式下,提供一個控制端點用于處理USB設備的請求以及四個可配置端點用于傳輸控制和數(shù)據(jù)信號,這四個端點共享一個4KB的FIFO空間,具備標準的8位或16位外部主機接口,可無縫連接多種標準微處理器,比方說DSP、ASIC和FPGA等,并可根據(jù)需求設置為同步或異步接口,片內(nèi)集成鎖相環(huán)(PLL),該芯片廣泛應用于DSL調(diào)制解調(diào)器、MP3、讀卡器、數(shù)碼照機、掃描儀、打印機等設備。
系統(tǒng)的硬件接口設計如圖1、圖2所示,兩者通過數(shù)據(jù)、地址總線以及讀、寫信號線等進行通信,CY7C68001的片選信號連接至TMS320VC5416 的I/O空間片選信號上,CY7C68001 的FIFO擴展在VC5416 的I/O 空間上。

?

?
電源部分采用一片1117 將5V 轉為3.3V供給CY7C68001EZ-USB SX2,模擬地與數(shù)字地之間采用磁珠連接,復位部分采用RC電路設計,且芯片資料上介紹有典型值100KΩ和0.1μF。
3 接口操作原理
CY7C68001 有兩個外部接口:
(1) 命令接口:用來訪問CY7C68001 寄存器、Endpoint 0緩沖器,以及描述表。
(2) FIFO數(shù)據(jù)接口:用來訪問4個1K字節(jié)的FIFO中的數(shù)據(jù)。
這兩個外部接口均可以通過同步或異步的方式進行訪問。
本設計采用異步的方式進行訪問。根據(jù)圖3 的地址分配,利用TMS320VC5416 的三根高位地址線(A11、A12、A13)連接CY7C68001 的FIFOAD0/1/2,用以選擇FIFO2、FIFO4、FIFO6、FIFO8以及命令接口,其地址表如圖3所示。CY7C68001的地址線FIFOADR[2:0]為100B 時,選中CY7C68001 的命令口(Command)。通過CY7C68001的命令口,可以訪問37個寄存器、Endpoint 0緩沖器(64個字節(jié)FIFO)和描述表(500個字節(jié)FIFO)等,對這些寄存器進行讀寫方式采用二次尋址方式,即首先通過命令口將要尋址的寄存器的子地址和操作類型(讀或寫)寫入,然后再通過命令口將數(shù)據(jù)讀出或寫入相應的寄存器。

?
寫入命令口的內(nèi)容稱為命令字,命令字包含要尋址的寄存器的子地址,或要寫入寄存器的數(shù)據(jù)的高4位或低4位。讀命令口必須要跟在給命令口寫讀命令字之后,讀出的為相應寄存器的8位數(shù)據(jù)。所以,寄存器的寫操作由3 個步驟組成:

?
4 USB 接口的軟件設計
USB接口的軟件設計由兩部分組成:一是在PC機Windows中運行USB 2.0 Utility 工具,是一個Windows 圖形用戶界面軟件,提供CY7C68001 與Windows 操作系統(tǒng)的接口程序,使得CY7C68001的開發(fā)變得簡單。二是在在DSP中運行嵌入式應用程序代碼,提供硬件的驅動,用來管理CY7C68001進行不同方式的數(shù)據(jù)處理,從而實現(xiàn)USB2.0 傳輸協(xié)議。
4.1 USB 接口的軟件設計流程
USB接口的軟件設計,DSP端代碼大致包括DSP芯片初始化(vc5416_init 函數(shù))、USB芯片初始化(sx2_init 函數(shù))、USB芯片配置程序( s x 2 _ s e t u p 函數(shù)) 以及USB 芯片數(shù)據(jù)讀寫程序(sx2_processdata 函數(shù)),程序流程如圖4 所示。
DSP芯片初始化(vc5416_init函數(shù))主要負責設置VC5416的工作頻率,配置SWCR以及SWWSR寄存器,另外本應用系統(tǒng)采用一個GPIO引腳作為68001的復位信號,所以還需要對其進行相關設置。

?
USB芯片初始化(sx2_init函數(shù))主要負責清除Buffer緩沖區(qū)以及使能VC5416 的外部中斷INT1,待初始化結束后發(fā)出READY中斷,此時DSP將描述符寫入68001,進行枚舉過程,待枚舉通過后發(fā)出ENUMOK中斷,枚舉方式可以采用外部EEPROM通過I2C總線上電后從外部導入描述符,也可采用通過運行DSP程序從DSP導入到68001,本應用系統(tǒng)采用第二種枚舉方式。
USB芯片配置程序(sx2_setup函數(shù))是在命令通道(0節(jié)點)收到無法自動處理的上位機請求,68001向VC5416發(fā)出SETUP中斷后執(zhí)行的程序,此時VC5416 通過對SETUP寄存器連續(xù)執(zhí)行八次讀操作流程即可得到8字節(jié)請求,系統(tǒng)可以響應該請求或STALL該請求。
USB 芯片數(shù)據(jù)讀寫程序(sx2_processdata 函數(shù))即PC 機與USB從設備端遵照USB傳輸協(xié)議進行數(shù)據(jù)通信。
CY7C68001的地址FIFOAD[2:0]為100時,選中CY7C68001的命令接口。對于命令接口的讀寫要分兩步進行,即在READY有效時,先通過命令接口寫入要尋址寄存器的子地址和操作類型(讀或寫),之后,在READY再次有效時分兩次讀寫命令接口,即可讀寫一個字節(jié)的數(shù)據(jù)。
4.2 中斷服務程序設計要點
DSP使用一個外部中斷引腳(INT1)與CY7C68001的INT腳相連,USB總線上產(chǎn)生一系列的活動,均會觸發(fā)相應的中斷,一旦中斷產(chǎn)生,DSP 會從CY7C68001 的Command 口中讀取相應的值,來判斷產(chǎn)生的是何種中斷。
CY7C68001 EZ-USB SX2 包括六個中斷源:SETUP(收到來自于USB 上位機(PC)發(fā)送過來的Set-up 包時產(chǎn)生的中斷)、EP0BUF(端點0 緩存可用時產(chǎn)生的中斷)、FLAGS(OUT 端點FIFO的狀態(tài)從空變?yōu)榉强諘r產(chǎn)生的中斷)、ENUMOK(SX2枚舉完成后產(chǎn)生的中斷)、BUSACTIVITY(SX2檢測到總線活動時產(chǎn)生的中斷)以及READY(SX2上電并且復位完畢后產(chǎn)生的中斷),每一個中斷源都可以通過置位或清除INTENABLE寄存器中相應位來使能或禁止。
CY7C68001芯片采用中斷緩沖機制,每次只會有一個中斷源,其他中斷源只有在上一個中斷被讀走后才會發(fā)出新的中斷請求。
因此,當一個中斷產(chǎn)生時,INT引腳為低電平狀態(tài),同時中斷狀態(tài)位會置入命令接口,在進入中斷程序后應先對中斷源進行判斷,首先判斷是否是讀寄存器所產(chǎn)生的中斷,如果是則將數(shù)據(jù)準備好標志位置1然后返回,否則外部PC通過選通SLRD/SLOE信號從命令接口中讀取中斷狀態(tài)位來判斷產(chǎn)生的是何種中斷,然后根據(jù)中斷源進行相應操作,DSP讀取中斷狀態(tài)位后自動清除中斷標志位。
5 結束語
通過硬件平臺的搭建和軟件程序的實現(xiàn),驗證了該接口電路可以滿足高速信號處理的數(shù)據(jù)傳輸要求,并具有速度快和可靠性高等優(yōu)點。
二、FIFO實現(xiàn)高速模數(shù)轉換器與DSP的接口
在數(shù)字信號處理系統(tǒng)中,大多數(shù)高速模數(shù)轉換器都不能直接與DSP相連接。FIFO恰好架起了DSP與ADC之間的一座橋梁,因為它能緩存大量的數(shù)據(jù)塊。同時由于DSP訪問外部存儲器器件必須通過外部存儲器接口External Memory Interface, EMIF, 而C6000系列DSP的EMIF具有很強的接口能力。它不僅具有很高的數(shù)據(jù)吞吐率(最高1200MB/s),而且可以與目前幾乎所有類型的存儲器直接接口。本文介紹了用FIFO 在DSPs和模擬前端(AFEs)之間進行數(shù)據(jù)緩存的實現(xiàn)方法。
?
1 AD9042高速模數(shù)轉換器
AD9042是一款低功率12bit的41MSPS模數(shù)轉換器。它的快速、高分辨率特點使其非常適合于視頻、多媒體、圖像處理、高速數(shù)據(jù)采集和通信等很多應用領域。圖1為AD9042的采樣時序圖。由該圖可以看出:AD9042不能與TMS320C6205直接相連。
因為ADC總是在進行數(shù)據(jù)輸出,因此輸出無高阻狀態(tài),而如果模數(shù)轉換器直接與DSP總線相連接,DSP就不能使用其它外圍設備了,而且DSP必須在每個轉換時鐘周期讀一次采樣數(shù)據(jù),這樣,即使使用DMA通道傳輸也是不可能實現(xiàn)的,因為其它外圍設備也要使用總線。
雖然采樣鎖存可以解決數(shù)據(jù)總是輸出的問題,但是,如果模數(shù)轉換器運行在41MSPS,那么,DSP每24ns就要讀一次新采樣。這將占去DSP中的大部分I/O帶寬,此時如果DSP處于busy態(tài),那么在24ns內(nèi)就不能讀取下一次采樣,這樣將使數(shù)據(jù)丟失。
一個比較好的解決辦法是使用FIFO作為輸入緩沖,由ADC把采樣轉換的值同步寫進FIFO。每寫入一塊數(shù)據(jù)便向DSP發(fā)出一信號,以提醒DSP從FIFO中讀取數(shù)據(jù)塊。這樣比單次讀的效率要快很多。

?
2 CY7C4265-10AC同步FIFO
CY7C4265是高速低功耗CMOS時鐘FIFO存儲器。它是一款同步FIFO,意思是它的讀寫端口使用同步接口,每一個端口的時鐘都是互相獨立的,這些時鐘可以同步,也可以異步。這使得FIFO的讀寫口能以不同的速度運行。傳統(tǒng)的FIFO在進行數(shù)據(jù)傳輸時通常要求額外的控制邏輯,而新一代CY7C4265則可實現(xiàn)FIFO與DSP之間的無縫連接。3 FIFO與EMIF的連接
C6000系列DSP的EMIF具有很強的接口能力,它可以連接不同類型的存儲器,如異步SRAM?SDRAM、SBSRAM等。
3 EMIF與FIFO的接口
CY7C4265 FIFOs提供有與DSP的無縫連接,這樣的無縫連接要求FIFO作為一個輸出緩沖器。而當FIFO作為輸入緩沖器時,F(xiàn)IFO是EMIF的唯一異步設備。本設計恰好讓FIFO作為輸入緩沖器,且就此一個異步設備,因而避免了復雜的接口邏輯。

?
圖2是EMIF與FIFO接口的具體硬件實現(xiàn),F(xiàn)I-FO的半滿標志HF作為DSP的輸入信號。HF用于告訴DSP此時FIFO中的有效數(shù)據(jù)是可以讀取的(而且容量是FIFO總大小的一半),以便DSP產(chǎn)生一個中斷來讀取FIFO中的數(shù)據(jù)塊。
3.1 DSP讀FIFO時序
在這個高速微弱信號數(shù)據(jù)采集卡的設計中,C6205的時鐘頻率為200MHz,且沒有使用其它外部控制邏輯。圖2中,EMIF異步接口提供的控制信號可以通過不同的組合(并非都需要)實現(xiàn)與不同類型器件的無縫接口。EMIF的CExCTL寄存器負責設置異步讀/寫操作的接口時序,以滿足對不同速度異步器件的存取要求。
C6000異步接口時序具有很強的可編程性,每個讀/寫周期由三個階段構成:建立時間(Setup)、觸發(fā)時間(Strobe)、保持時間(Hold)。其中建立時間是從存儲器訪問周期開始(片選?地址有效)到讀/寫選通有效之前的時間;觸發(fā)時間是讀/寫選通信號從有效到無效之間的時間;保持時間則是從讀/寫無效到訪問周期結束之間時間。
DSP的ARE信號作為FIFO的讀時鐘,F(xiàn)IFO在ARE的上升沿在總線上輸出數(shù)據(jù),DSP和FIFO的獨立時序參數(shù)值。
根據(jù)DSP的異步讀時序,為了完成C6205的建立時間,第一個數(shù)據(jù)的讀取必須滿足下式:
Setup+Strobe ≥td?CK-AOEV?max+tOEmax+tSU?EDV-CK?min
根據(jù)上式,在最差情況下,建立和觸發(fā)時間必須大于15ns(4ns+7ns+4ns)。當DSP的時鐘頻率為200MHz時,一個時鐘周期應該是5ns。此時如果Setup和Strobe的值都取1,則Setup+strobe為10ns,故不能滿足時序要求,因此Setup和Strobe這兩個可編程參數(shù)若一個取1,另外一個必須大于等于2。而實際上,Setup和Strobe可以都取1,其原因是C6205不論是連續(xù)存取還是單次存取操作,在存取第一個數(shù)時,EMIF會自動將最小建立時間設置為2。
而對于以后數(shù)據(jù)的讀取,OE總是有效?,F(xiàn)在主要考慮的是FIFO的訪問時間應滿足下式:
Hold+Setup+Strobe ≥tAmax+tSU?EDV-CK?min
也就是說,一個完整的數(shù)據(jù)訪問時間必須大于12ns(8ns+4ns),即Hold+Setup+Strobe ≥3;要完成C6205的保持時間,必須滿足下面兩個公式:
td?CK-AREV?min+tAmin ≥ th?CK-EDV?min
Hold ≥th?CK-EDV?min-td?CK-AREV?min-tOHZmin
當上邊的式子滿足條件時,-0.2+2>0.8。為了得到最小的Hold時間,此時Hold可以為0ns,也就是說,Hold可以被編程為0。
最后要滿足的條件是時鐘的高低時間。因為FIFO的時鐘信號直接由ARE產(chǎn)生,因此ARE信號保持低電平的時間必須大于FIFO的時鐘周期。即:
Strobe ≥tCLKL min
Hold+Setup ≥tCLKH min
Setup+Strobe+Hold ≥tCLK min

?
由以上七個式子可知,在200MHz的鐘頻率下,CExCTL寄存器中Setup/Strobe/Hold的值可以作如下設置:
Setup=1,Strobe=1,Hold=1;
此時,DSP讀取FIFO中數(shù)據(jù)的速度為66.7MHz。
4 結論
FIFO在ADC高速模數(shù)轉換器與DSP的通訊過程中起到了很好的數(shù)據(jù)緩沖作用,其標志位可被用來控制FIFO中數(shù)據(jù)的讀取。如果選用內(nèi)部時鐘頻率為133MHz的SN74V2×5-7系列FIFO,DSP讀取數(shù)據(jù)的速度可以達到100MHz。
三、PCI總線接口與DSP的HPI接口
1 HPI接口功能及特點
主機接口HPI(Host Pott Interface)是C54x DSP系列定點芯片內(nèi)部具有的一種并行接口部件,主要用于與其他總線或CPU之間進行通信,其接口框圖如圖l所示。主機是HPI口的主控者,HPI口作為一個外設與主機連接,使主機的訪問操作很方便。主機通過以下單元與HPI口通信:專用地址和數(shù)據(jù)寄存器、HPI控制寄存器以及外部數(shù)據(jù)和接口控制信號。HPI有兩種工作方式:共用尋址方式(SAM)和僅主機尋址方式(HOM)。在SAM方式下,豐機和C54x都能尋址HPI存儲器;在HOM方式下,僅能讓主機尋址HPI存儲器,C54x則處于復位狀態(tài),或者處在所有內(nèi)部和外部時鐘都停止工作的IDLE2空閑狀態(tài)(最低功耗狀態(tài))。

?
VC5402是TI公司推出的一款性價比極高的16位定點處理器。它是C54x系列中應用比較廣泛的一種芯片,有著豐富的接口資源,是一種集數(shù)據(jù)處理和通信功能于一體的高速微處理器。VC5402 HPI口是一個增強的8位主機接口,它通過HPI控制寄存器HPIC、地址寄存器HPIA和數(shù)據(jù)鎖存器HPID來實現(xiàn)與主機之間的通信。主機通過外部引腳HCNTLO和HCNTL1選中不同的寄存器,則當前發(fā)送8位數(shù)據(jù)就到該寄存器。控制寄存器HPIC既可以被主機直接訪問,又可以被DSP片上CPU訪問。在使用上,由于主機接口總是傳輸8位字節(jié),而HPIC是一個16位寄存器,所以主機向HPIC寫數(shù)據(jù)時,需要發(fā)送2個相同的8位數(shù)據(jù)。地址寄存器HPIA,只能被主機直接訪問。主機將HPIA寄存器視為一個地址指針,借助于HPIA主機可以訪問VC5402全部的片上存儲器。另外HPIA具有自動增長的功能,在自動增尋址模式下,一次數(shù)據(jù)讀會使HPIA在數(shù)據(jù)讀操作后增加1,而一個數(shù)據(jù)寫操作會使HPIA操作前預先增加l。這樣如果使能了該功能,則只須設定一次HPIA即可實現(xiàn)連續(xù)數(shù)據(jù)塊的寫入和讀出。數(shù)據(jù)寄存器HPLD,只能被主機訪問。如果當前進行的是讀操作,則HPID中存放的是要從HPI存儲器中讀出的數(shù)據(jù);如果當前進行的是寫操作,則存放的是將要寫到HPI存儲器的數(shù)據(jù)。
2 VC5402的HPI口與PCl2040的接口設計
2.1 PCI總線及其實現(xiàn)方法
PCI局部總線是32或64位數(shù)據(jù)總線,32位PCI總線在讀寫傳送中支持132Mb/s的峰值傳送速率,64位PCI傳送支持264Mb/s峰值傳送速率。對于64位66MHz的PCI總線,傳送速率可達528Mb/s。PCI總線協(xié)議規(guī)范復雜而龐大,因此需要借助總線接口來實現(xiàn)。實現(xiàn)PCI總線協(xié)議一般有兩種方法:一是用FPGA設計實現(xiàn),但PCI協(xié)議比較復雜,因此難度較大;二是采用PCI總線控制芯片,如AMCC公司的S5933和PLX公司的PCI9052等通用的PCI接口芯片。TI公司專門推出了針對PCI總線和DSP接口的芯片PCI2040,它不但實現(xiàn)了PCI總線控制的功能,而且提供了和DSP芯片的無縫接口,因而大大降低了系統(tǒng)設計的復雜度,縮短了開發(fā)時間。
2.2 P012040與DSP接口設計
PCI2040足TI公司設計的專門用來實現(xiàn)C5000/C6000系列DSP和PCI總線進行接口的專用芯片,可以通過8位或16位HPI接口與C54x/C6xDSP實現(xiàn)無縫連接。PCI2040通過HPI接口與VC5402連接。PCI2040的HPI口為8/16位數(shù)據(jù)傳輸接口(8位還是16位,依據(jù)所掛接的DSP的類型)。主機作為傳輸?shù)闹髟O備,從機DSP不能發(fā)起傳輸。主設備PCI2040可以讀/寫DSP內(nèi)存,DSP HPl口可以訪問DSP所有的片上資源,PCI2040和VC5402之問的通信主要靠DSP的HPIA、HPIC、HPID三個寄存器完成。VC5402的HPI與PCI2040口的連接如圖2所示。

?
PCI2040的數(shù)據(jù)總線HAD0~HAD7與VC5402 HPI口的數(shù)據(jù)總線HD0~HD7相連,用于主機和DSP傳輸數(shù)據(jù)。PCI2040芯片的HPI口的HCNTLl和HCNTL0引腳分別與DSP的HCNTLl和HCNTL0引腳相連,以實現(xiàn)其對HPI寄存器的訪問。具體HPI寄存器的選擇和訪問模式的確定由DSP的HCNTLl和HCNTL0引腳的狀態(tài)決定,表1給出了VC5402 HPI寄存器訪問控制的情況。PCI2040帶有獨立的讀/寫選通信號HDS和HR/W,可以將PCI2040的HDS、HR/W引腳與VC5402的HDSl、HR/W引腳相連,實現(xiàn)主機對VC5402 HPI接口的讀/寫控制。當主機驅動HR/W為高時,讀HPI;為低時,則寫HPI。DSP HPI口的HPIEA、HDS2、HAS引腳通過10kΩ電阻拉高。

?
需要注意的是,VC5402的HPI接幾是8位的,而DSP內(nèi)部和PCI總線上的數(shù)據(jù)格式都是大于8位的,所以主機與DSP之間數(shù)據(jù)傳輸必須包含2個連續(xù)的字節(jié)。專用的HBIL引腳信號確定傳輸?shù)氖堑谝粋€字節(jié)還是第二個字節(jié);HPI控制寄存器HPIC的BOB位決定第一個或第二個字節(jié)放置在16位字的高8位。
3 電路設計時應注意的問題
①VC5402電源采用3.3V和1.8V電源供電。其中:I/O采用3.3V;核電壓采用1.8V供電;系統(tǒng)從PCI插槽取5V電壓經(jīng)
電壓轉換后,供DSP和其他芯片使用。
?、赩C5402的有些引腳必須接4.7kΩ的上拉電阻,沒有用到的中斷引腳也要接相同的上拉電阻。
?、垭娫摧斎攵丝缃右粋€10~100μF的電解電容器,為每個集成屯路芯片配置一個0.01μF的陶瓷電容器。
結語
實踐證明,利用PCI2040芯片實現(xiàn)C54x/C6x DSP的PCI總線可以大大減少相應的外圍器件,增強系統(tǒng)的可靠性,同時降低系統(tǒng)開發(fā)的難度,縮短開發(fā)周期。
四、TMS320C32的存儲器接口設計
1 TMS320C32的外部存儲器接口的特點
TMS320C32是一個32位微處理器,它可以通過24位地址總線、32位數(shù)據(jù)總線和選通信號對外部存儲器進行訪問。其外部存儲器接口結構如下圖l所示。
?
圖1,TMS320C32的外部存儲器接口圖
在圖1中,引腳(引腳,又叫管腳,英文叫Pin。就是從集成電路(芯片)內(nèi)部電路引出與外圍電路的接線,所有的引腳就構成了這塊芯片的接口)PRGW是用來配置外部程序存儲器的寬度的。當PRGW引腳為低電平時程序存儲器寬度為16位;當PRGW引腳為高電平時程序存儲器寬度為32位。STRBO和STRBl各為一組訪問外部存儲器的選通信號,各有4個信號引腳(STRBx_B3/A_1、STRBx_B2/A_2、STRBx_Bl和STRBx_B0)。從圖l中我們可以看出,選通信號STRB0和STRBl能從8/16/32位存儲器中訪問8/16/32位數(shù)據(jù),或從16/32位存儲器中執(zhí)行32位程序;IOSTRB是外設I/O的選通信號引腳,它只能從32位寬度的存儲器中訪問32位的數(shù)據(jù)和程序。
可以通過對STRBx和IOSTRB的設置,從8/16/32位的存儲器中訪問8/16/32位數(shù)據(jù)或程序。也就是說,可以從任何一個外部存儲器中訪問任何一種類型的數(shù)據(jù)。這就說明可以通過設置IOSTRB、STRB0和STRB1的選通信號來尋址整個外部存儲器空間。例如,一個32位外部存儲器可以被設定為只存放一個32位的雙字,但是也可以被分為具有2個連續(xù)地址的16位字或者4個連續(xù)地址的8位字節(jié)。反之,一個32位雙字可以放在一個32位外部存儲器中,也可以放在2個16位或4個8位寬度的外部存儲器中。
TMS320C32內(nèi)部總共提供了64 MB的存儲器映射空間。其中,STRB0所對應的存儲映像區(qū)間是不連續(xù)的兩段區(qū)問,一段是03FH~7FFFFFH(共31.999 MB),另一段是880000H~8FFFFFH(共2 MB);STRBl所對應的存儲映像區(qū)間是900000H~FFFFFFH(共28 MB);IOSTRB所對應的存儲映像區(qū)間是810000H~82FFFFH(共512KB)。當外部總線訪問這些空間時,相應的選通信號就使能。
負責控制信號的輸入和輸出叫做使能,是一個動詞,英文‘Enable’。使能通俗點說就是一個“允許”信號,進給使能也就是允許進給的信號,也就是說當進給使能信號有效的時候電機才能轉動。一般的數(shù)控系統(tǒng)會將電機的進給使能信號跟急停開關和行程限位開關串聯(lián)起來,當按下急停開關或者電機運轉超出行程后,進給使能信號被斷開,電機不能繼續(xù)轉動,從而保護機床在安全的行程內(nèi)運行。
2 TMS320C32的3種存儲器設計方案
2.1 8位存儲器寬度
設計為8位的存儲器,其硬件接線方案如圖2所示。STRBx_B3/Al_1和STRBx_B2/A_2引腳作為地址引腳,STRBx_B0引腳作為片選引腳,而STRBx_B1則不用。

?
圖2,8位存儲器的硬件接線圖

?
圖3,16位存儲器的硬件接線圖
設計為16位的存儲器,其硬件接線方案如圖3所示。STRBx_B3/A_1引腳作為地址引腳,STRBx_B0和STRBx_B1引腳作為片選引腳,而STRBx_B2/A_2則不用。
2.3 32位存儲器寬度
設計為32位的存儲器,其硬件接線方案如下圖4所示。STRBx所有的引腳都設置成片選引腳。

?
圖4,32位存儲器的硬件接線圖
3 存儲器映射外部總線控制寄存器
綜上所述,TMS320C32可以從8/16/32位存儲器中訪問8/16/32位數(shù)據(jù),或者從16/32位存儲器中執(zhí)行32位的程序。但是如果內(nèi)外部數(shù)據(jù)的位數(shù)不一致時該如何處理呢?C32的外部總線控制寄存器可以根據(jù)相應控制位的值,自動對存儲器接口的寬度進行相應的調(diào)整。下面則對總線控制寄存器作出一個詳細的介紹。
STRBo、STRBl以及IOSTRB控制寄存器在存儲器映射空間的物理地址分別是808064H、808068H和808060H,并且都是32位的,各位的定義如圖5、圖6和圖7所示。

?
圖5,STRBo控制寄存器

?
圖6,STRBl控制寄存器

?
圖7,IOSTRB控制寄存器
從圖5和圖6中我們可以看到,STRBx控制寄存器的第18、19位是用來控制存儲器的寬度的,而第16、17位是用來控制數(shù)據(jù)寬度的,具體定義如表1所列。
4 存儲器接口實例
圖8給出了一個實際TMS320C32存儲囂接口的電路圖。16位存儲器由2片128 K8位的SRAM構成,32位存儲器由4片128 K8位的SRAM構成,STRB0的4組選通信號接16位外部存儲器,STRBl的4組選通信號接32位外部存儲器。為說明數(shù)據(jù)在存儲器及處理器中的存放格式,本文設計了兩種存儲器接口電路:一是在16位存儲器中存放32位數(shù)據(jù);二是在32位存儲器中存放32位數(shù)據(jù)。

?
圖8,TMS320C32存儲囂接口的電路圖
在16位存儲器中存放32位數(shù)據(jù)時,STRB0_B3/A1作為地址引腳與外部存儲器的AO相接,STRB0_B0和STRB0_B1作為片選信號,STRBx_B2/A_2不用。由于數(shù)據(jù)寬度大于存儲器寬度,所以在外部存儲器偶地址中存放32位數(shù)據(jù)的低16位,奇地址中存放32位數(shù)據(jù)的高16位,外部存儲器的地址為OH~lFFFFH,對應的在C32存儲映射中的地址為OH~0FFFFH。當一條指令向邏輯地址OH中裝入一個32位數(shù)據(jù)時,存儲器接口必須向外部16位存儲器執(zhí)行兩個指令周期。這兩個指令周期訪問2個連續(xù)的外部存儲器地址OH和1H,從而完成對32位數(shù)據(jù)的操作。
當在外部32位存儲器中存放32位數(shù)據(jù)時,STRBl的4個引腳都設置為片選引腳。這時數(shù)據(jù)寬度與外部存儲器寬度一致,由于是STRBl使能,所以128 K32位的外部存儲空間與C32存儲器映射的900000H~91FFFFH相對應。
當接口電路設計為16位時,其物理地址等于邏輯地址右移l位,即DSP的地址線A00接在SRAM的A1上;當接口電路設計為32位時,其物理地址等于邏輯地址,即DSP的地址線A00接在SRAM的A0上。
5 小結
由于C32可以非常靈活地調(diào)整其存儲器接口寬度,使得存儲器接口電路的設計更加的靈活,因此非常適用于電機或電力系統(tǒng)等實時系統(tǒng)的數(shù)據(jù)采集與處理。
評論