用EZ-USB實現TMS320C6X與主機數據傳輸
dsp主要應用于實時和大數據量的信號處理系統,當它與主機進行通信時,數據交換速度和接口的復雜度是系統的一個關鍵性能指標,因此迫切需要一種能滿足高速、簡潔要求的通信方式,通用串行總線usb以其高速和內置電源兩個特性,對提高設備的性能、降低成本和系統小型化具有很大的實際意義,本系統采用高速dsp(tms320c6713),配合嵌入usb2.0協議的芯片cy7c68013,實現小規模主從式系統中主機與dsp間的高速通信。經實際驗證,系統運行可靠,是一種比較好的高速數據傳輸與處理的解決方案。
1 usb控制芯片
cypress公司的ez-usb fx2系列芯片是最早符合usb2.0協議的微控制器之一。它集成了收發器(transceiver)、串行接口引擎(sie),增強型的8051內核以及可編程的外圍接口(gpif),fx2系列芯片獨特的結構使數據傳輸速度最高可達到56mbps,最大程度地滿足了usb2.0的帶寬。
cy7c68013的結構框圖如圖1所示。

fx2的端點緩沖區分為大小兩組:ep0、ep1(in)、ep1(out)是小端點,大小為64字節,只能由cpu來存取,不能由外部邏輯連接;ep2、ep4、ep6、ep8是大的可配置的端點,ep2和ep4默認為out端點,ep6和ep8默認為in端點。fx2為其大端點提供多種緩沖方式,滿足了傳輸中高帶寬的要求,傳輸過程中ez-usb fx2從in緩沖區中讀取上傳到主機的數據,在out緩沖區中寫入供外部處理器讀取的數據。它具備全速(12mbps)和高速(480mbps)兩種傳輸速率,并具有usb協議所規定的4種傳輸模式,即控制傳輸(control mode)、中斷傳輸(interrupt mode)、塊傳輸(bulk mode)和等時傳輸(isochronous mode)。
2 系統硬件構架
2.1 usb與dsp的硬件連接
系統中選用的數字信號處理器是ti公司發布的c6000浮點系列中的tms320c6713,其峰值處理速度能達到1350mflops(百萬次浮點操作/s)。外設資源包括直接存儲器訪問控制器(dma),外部存儲器接口(emif)、串行口、擴展總線或主機口、定時器等。系統中利用其emif口,連接可編程邏輯芯片cpld來擴展usb控制接口。cy7c68013能非常靈活地實現與dsp或mcu的接口。當其作為主設備時,通用可編程接口(gpif)具有可編程的波形描述符和配置寄存器,能夠輕易地兼容絕大多數總線標準,當其作為從設備時,4kb的大容量fifo用于數據緩沖,簡化了接口的外部硬件設計,可采用同步或異步方式與主設備(如asic,dsp等)連接。
在本方案中,使其作為從設備,選用了slave fifos,異步讀/寫,在這種模式下,dsp可以像讀/寫普通fifo一樣對cy7c68013內部的多層緩沖fifo進行讀/寫。主要信號連接如圖2所示。主機(pc)發出命令的同時也由pa3提供中斷觸發信號給dsp的外部中斷引腳6(ext_int6)。其上升沿被檢測到以后,dsp就進入相應中斷服務程序,開始處理usb的傳輸,dsp通過cpld對cy7c68013進行讀寫及使能控制,“或”組合邏輯滿足嚴格的時序要求,flagb和flagc是cy7c68013內部fifo的空、滿狀態標志,pa[0:1]表示pc發送的命令類型。這些信息在cpld內部整合到數據總線ed[0:15],dsp開始傳輸數據包前對其提取判斷,tms320c6713對cy7c68013內部端點(ep)的選擇,是通過地址線tea[2:3]來實現。

2.2 系統總體結構設計
根據上述硬件通信模式搭建基于pc、usb、dsp的主從式系統,當系統上電完成各模塊固件配置和硬件初始化后,可由pc發出控制命令,以外部信號觸發dsp進入相應的中斷處理程序,自動完成數據流usb下載、dsb處理和usb回傳的多次循環過程;pc顯示處理后的結果。系統總體結構框圖如圖3所示。

dsp芯片通過片中的emif(包括4個存儲空間ce[0:3])為sdram,flash等器件提供接口。sdram為同步存儲器件,emif有專門的控制線和時鐘與它進行無縫連接(ce0空間)。這里sdram用做數據存儲器。
對于c6000系列dsp,調試好的應用程序需要固化,以便系統上電時能自動加載運行。方案中采用flash啟動引導模式,位于emif異步接口ce1空間。
復位電路提供系統上電和工作電壓異常時的自動復位及人工控制復位。時鐘電路為dsp處理模塊提供時鐘信號。
usb的接口電路提供pc與dsp的高速數據傳輸通道,接口芯片通過cpld與外部處理器dsp相連,置于emif的ce2空間(通信模式如前所述)。
3 通信模塊軟件設計
cypress公司為了簡化和加速用戶使用ez-usb fx2芯片進行usb外設的開發過程,特別設計了cy7c68013的開發板,并帶有一個開發包,內含一個usb外設所必需的驅動程序、應用程序以及一個完整的固件程序的框架,這個框架可以執行ez-usb芯片的初始化,usb標準設備請求的處理和usb掛起電源管理服務;用戶只需要提供一個usb描述符表,添加其他端點接受和發送數據的通信代碼,以及控制外圍電路的程序代碼即可。
3.1 cy7c68013的固件程序規劃
固件程序框架通過幾個不同的功能模塊,實現了一個簡單的互操作任務執行器,首先,通過調用用戶的初始化函數td_init(),初始化所有內部狀態變量,之后,程序框架將usb口初始化為未配置狀態,并且使能中斷,以1s為時間間隔開始重新列舉(renumerate)設備,直到端點0收到設置包為止,一旦檢測端點0受多一個設置包,固件框架程序就啟動執行一個互操作的任務分配器,按照給定的順序重復執行下面的任務:調用函數td_poll(),判斷是否有標準設備請求等待處理,確定usb核是否報告了usb掛起事件。
主要固件配置如下:
1)配置異步從fifo(asynchronous slave fifo)模式,接口驅動采用內部的48m赫茲的時鐘源。
2)endpoint4和endpoint8作為雙向傳輸的管道,分別對應緩沖fifo4和fifo8存放usb需要接收與下傳的數據,它們均采用批量(bulk)傳輸方式,相對于其他usb2.0定義的傳輸方式具有數據可靠、傳輸速率高等特點,是最常用的傳輸方式。
3)設置fifo4、fifo8為自動方式,即在數據傳輸過程中無需cy7c68013的8051內核參與,以保證持續、高速、有效的數據傳輸。
ez-usb fx2芯片定義了幾個特殊寄存器,以輔助固件程序相應設備請求,并向主機傳送數據,當設備收到設置包時,usb核會自動將設置數據放入8字節的setupbuf緩沖區中,用戶只須從中讀取設置數據,進行分析來判斷請求的類型即可。
方案中部分設備請求代碼如下:

讀取緩沖區中第2字節由pa[0:1]發送至dsp,作為命令類型標志(00為下傳,01為上傳,10為處理);同時pa3口提供外部中斷觸發信號的上升沿。
固件就緒后通過cypress公司提供的工具control panel加載至eeprom中,當需要修改固件時,就可以在不改動硬件的情況下將主機上修改好的固件重新下載一次。
3.2 上位機流程
主機應用程序與操作系統相互作用,利用pc豐富的資源,實現顯示驗證,提高系統的可操作性,當操作系統認為有新設備接入時,就會自動調用相應的設備驅動。另外,該軟件需要一個圖形用戶界面來控制所用的函數,這里采用vc++6.0來編制應用程序,首先調用createfile()打開usb接口設備,獲得設備的句柄hdevice,然后計算機通過調用deviceiocontrol()函數向外設發出。部分程序如下:

myrequest的8個成員變量對應固件配置setupbuf緩沖區中8字節的(setupdat)數據,其中value的值表示了主機向dsp發送的命令類型(00/01/10),使dsp配合完成接收,處理及上傳的系統過程。

每次調用deviceiocontrol函數傳輸的數據量僅為1kb。為了滿足大數據量或者整幀圖像數據傳輸的要求,需要循環調用deviceiocontrol()函數,以下載數據流的過程為例,循環體中的代碼如下:

buffer是主機發出數據塊的頭指針;pby為每次下傳數據塊的首地址,是隨著循環變量i遞增的值。同樣,上傳數據的過程中也有類似的存儲操作。
4 系統測試
利用圖像序列對此主從式聯機系統進行測試。
觸發pc機上的界面控件(pa(0:1)=00),下載10幅經不同程序噪聲污染的同一內容的圖像,dsp檢測到通用外部中斷口ext_int6的信號(對應usb芯片的pa3)讀入數據讀取命令類型,將10幀圖像數據存入sdram空間,之后,上位機繼續發出處理命令,dsp檢測到pa[0:1]=10對存儲的多幀圖像數據進行累加平均,從而提高圖像的信噪比,在收到上傳命令(pa[0:1]=01)時,dsp將處理完成的圖像回送至pc機顯示。
結語
本文詳細介紹了通過tms32c6713的emif擴展usb接口的硬件連接、usb2.0固件程序和應用程序的開發以及基于這種通信模式的小型聯機系統的構成。經實際驗證,系統運行可靠,是一種比較好的高速數據傳輸與處理的解決方案。
評論