張劍,王茜竹
(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)
?
移動(dòng)終端的USB3.0高速數(shù)據(jù)通路設(shè)計(jì)
張劍,王茜竹
(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)
現(xiàn)在USB接口已經(jīng)成為移動(dòng)終端最普及的接口,隨著存儲(chǔ)在移動(dòng)終端媒體文件的容量越來(lái)越大,要求USB3.0接口支持的傳輸速度越快越好。為了匹配USB超速傳輸模式,本文在內(nèi)存中專門(mén)規(guī)劃一片區(qū)域用于USB數(shù)據(jù)緩沖,設(shè)計(jì)驅(qū)動(dòng),搭建測(cè)試環(huán)境,測(cè)試USB數(shù)據(jù)傳輸速度。經(jīng)測(cè)試,USB數(shù)據(jù)傳輸速度有著明顯的提高。
USB3.0;Mass Storage;C8410;移動(dòng)終端;驅(qū)動(dòng)程序
據(jù)不完全統(tǒng)計(jì),全球支持USB功能的移動(dòng)終端已達(dá)到60多億部。支持USB功能的終端在移動(dòng)終端中的占有率幾乎可以達(dá)到100%。隨著存儲(chǔ)在移動(dòng)終端的多媒體文件越來(lái)越大,這必將對(duì)PC機(jī)與移動(dòng)終端之間的傳輸速度的要求變得越來(lái)越高[1]。為了在實(shí)際應(yīng)用中進(jìn)一步加快USB3.0接口的數(shù)據(jù)傳輸速率,對(duì)基于移動(dòng)終端的USB接口設(shè)計(jì)進(jìn)行改進(jìn)顯得尤為重要。
本文在USB3.0及其補(bǔ)充協(xié)議Mass Storage規(guī)范下,實(shí)現(xiàn)手機(jī)端與PC機(jī)之間大容量數(shù)據(jù)的高速傳輸,并有效提升數(shù)據(jù)傳輸速度。設(shè)計(jì)思想是在DDR中分配500 MB的內(nèi)存塊用于DDR與NAND Flash之間的數(shù)據(jù)緩存。實(shí)驗(yàn)結(jié)果證明,該設(shè)計(jì)能很好地確保數(shù)據(jù)傳輸有效性及高速性。同時(shí),本文采用模塊化的設(shè)計(jì)步驟,便于拓展該設(shè)計(jì)的應(yīng)用范圍,給嵌入式設(shè)備帶來(lái)良好的發(fā)展前景。
本課題的研究工作基于的硬件平臺(tái)是以重郵信科通信技術(shù)有限公司的C8410芯片為核心,集成了眾多外圍電路模塊的智能手機(jī)系統(tǒng)。C8410是一款基于65 nm工藝的芯片,其設(shè)計(jì)的目的是提供一種4模(GSM/GPRS/EDGE、TD-SCDMA、LTE、LTE-A)單芯片的解決方案,為此,在C8410 芯片中集成了一顆ARM1176核、兩顆ARM Cortex-A7核、兩顆ZSP981核、兩顆ZSP800核、一顆CEVA的DSP核以及GSM&TD 專用的加速器,用于實(shí)現(xiàn)基帶功能。同時(shí),集成LCD控制器、CAMERA控制器、2D加速器和Codec音頻編解碼器,用于實(shí)現(xiàn)多媒體功能。其結(jié)構(gòu)圖如圖1所示。
圖1 C8410芯片結(jié)構(gòu)
2.1Buffer 設(shè)計(jì)
2.1.1傳統(tǒng)軟Buffer設(shè)計(jì)
如圖2所示,傳統(tǒng)的Bufrer緩存方案是當(dāng)需要內(nèi)存空間進(jìn)行數(shù)據(jù)緩存時(shí),軟件上調(diào)用內(nèi)存分配函數(shù)動(dòng)態(tài)分配一塊連續(xù)的內(nèi)存空間,數(shù)據(jù)傳輸后再釋放該內(nèi)存空間。
圖2 軟件Buffer模型
2.1.2硬件Buffer設(shè)計(jì)
USB理論傳輸速度為500 Gbps,而本文采用的外部存儲(chǔ)器EMMC支持最大的讀寫(xiě)速度為104 MB/s,因此FIFO設(shè)置不同的讀寫(xiě)時(shí)鐘,分別設(shè)置為讀FIFO為20 MHz,寫(xiě)FIFO為100 MHz,即USB向FIFO寫(xiě)入的數(shù)據(jù)時(shí)鐘為100 MHz,EMMC從FIFO中讀出的數(shù)據(jù)時(shí)鐘為20 MHz。FIFO數(shù)據(jù)單元的位寬設(shè)置為32位,最大數(shù)據(jù)量為512字節(jié)。片上FIFO的Modelsim仿真結(jié)果如圖3所示。
clk_20m:讀FIFO時(shí)鐘;clk_100m:寫(xiě)FIFO時(shí)鐘;sdram_wr_ack:FIFO讀請(qǐng)求信號(hào),高電平有效;write_fifo_req:FIFO寫(xiě)請(qǐng)求信號(hào),高電平有效;write_fifo_data_in:寫(xiě)入FIFO的數(shù)據(jù);sys_data_in:FIFO讀出的數(shù)據(jù);wrf_use:當(dāng)前FIFO隊(duì)列里存在的數(shù)據(jù)個(gè)數(shù)。
圖3 FIFO初始化完成
2.2驅(qū)動(dòng)設(shè)計(jì)
驅(qū)動(dòng)的開(kāi)始是通過(guò)模塊加載函數(shù)usb_stor_init,把代表USB Mass Storage驅(qū)動(dòng)的結(jié)構(gòu)體usb_driver加載到內(nèi)核,該結(jié)構(gòu)體及其初始化如下:
static struct usb_driver usb_storage_driver = {
.name = "usb-storage",
.probe = storage_probe,
.disconnect = usb_stor_disconnect,
.suspend = usb_stor_suspend,
.resume = usb_stor_resume,
.reset_resume = usb_stor_reset_resume,
.pre_reset = usb_stor_pre_reset,
.post_reset = usb_stor_post_reset,
.id_table = usb_storage_usb_ids,
.supports_autosuspend = 1,
.soft_unbind = 1,
};
其中最重要的是設(shè)備的初始化函數(shù)storage_probe,該初始化函數(shù)分為2步——usb_stor_probe1和usb_stor_probe2,設(shè)備的初始化具體實(shí)現(xiàn)流程如圖4所示。
圖4 USB Mass Storage設(shè)備初始化
3.1調(diào)試環(huán)境
本文采用Source Insight 3.5軟件進(jìn)行代碼編輯,使用RVDS4.0編譯生成調(diào)試使用的.axf文件和燒入使用的.bin文件,最后使用Trace32調(diào)試軟件加載.axf文件,調(diào)試代碼。
調(diào)試環(huán)境如圖5所示。其中①為ARM調(diào)試器,一端通過(guò)JTAG接口連接到FPGA仿真平臺(tái),另一端連接到PC端。圖中的連接器②為USB-RS232轉(zhuǎn)換器件,一端連接在目標(biāo)板的UART口,另一端連接在PC端。在調(diào)試代碼的時(shí)候需要一些額外的打印信息,此器件接收從芯片UART接口輸出的消息,轉(zhuǎn)換為USB數(shù)據(jù)包后,最終顯示在PC機(jī)的超級(jí)終端上,大大提升了調(diào)試的效率。圖中很大的一塊電路板③是在FPGA仿真平臺(tái)④(圖中鐵架中的整個(gè)部分)的作用下仿真C8410芯片。電路板⑤為插在FPGA平臺(tái)上的USB3.0模塊,仿真C8410芯片的USB3.0功能。
圖5 調(diào)試環(huán)境
3.2枚舉測(cè)試
圖6是設(shè)備枚舉過(guò)程的數(shù)據(jù)包。
圖6 USB協(xié)議分析儀抓取的枚舉數(shù)據(jù)
3.3Mass Storage協(xié)議測(cè)試
圖7是主機(jī)與設(shè)備間Mass Storage協(xié)議下的通信過(guò)程抓取的數(shù)據(jù)包。
圖7 USB協(xié)議分析儀抓取的Mass Storage數(shù)據(jù)
3.4U盤(pán)功能測(cè)試
通過(guò)以上的測(cè)試說(shuō)明,在以FPGA為工具的仿真重郵信科手機(jī)C8410手機(jī)基帶芯片在平臺(tái)上成功實(shí)現(xiàn)了手機(jī)U盤(pán)功能。現(xiàn)使用USB數(shù)據(jù)線,連接重郵信科C8410手機(jī)與PC端,打開(kāi)PC端的“我的電腦”,可成功看見(jiàn)手機(jī)的U盤(pán)的盤(pán)符如圖8所示。說(shuō)明手機(jī)的U盤(pán)功能枚舉成功。
圖8 設(shè)備端枚舉成U盤(pán)圖
3.5速度測(cè)試
使用HD Turn硬盤(pán)性能診斷軟件來(lái)測(cè)試手機(jī)U盤(pán)功能的讀寫(xiě)速度。將手機(jī)通過(guò)USB線纜連接到PC,速度測(cè)試如圖9所示,設(shè)計(jì)方案的讀寫(xiě)速度達(dá)到4.3 MB/s。
圖9 C8410速度測(cè)試
3.6速度測(cè)試分析
在FPGA平臺(tái)提供20 MHz的時(shí)鐘頻率下,C8410的速度為4.3 MB/s。由式(1)可知,在ARM Cortex-A7提供的800 MHz時(shí)鐘頻率下,等同于172 MB/s的數(shù)據(jù)傳輸速度。由USB3.0協(xié)議可知,USB3.0最高速率可達(dá)5 Gbps,經(jīng)過(guò)8b/10b編解碼,且1 Byte=8 bit,故USB3.0最大速率理論上是500 MB/s。本文選取一些商用USB3.0接口的U盤(pán),最大速率在170 MB/s左右。表1是一些廠家的USB3.0U盤(pán)與本文U盤(pán)的速度對(duì)比。
B=F×D÷8
式中,B為數(shù)據(jù)帶寬;F為總線頻率;D為總線位數(shù)。
表1 USB3.0速度對(duì)比測(cè)試表
相比其他廠家的USB設(shè)備,本論文設(shè)計(jì)方案有效地提升了USB設(shè)備的數(shù)據(jù)傳輸速度。
本文的目的是在以FPGA為工具仿真的重郵信科C8410基帶芯片平臺(tái)上,設(shè)計(jì)出能有效提升USB3.0數(shù)據(jù)傳輸速度的USB3.0移動(dòng)終端設(shè)備。為了實(shí)現(xiàn)此目的,首先分析了目前USB3.0移動(dòng)終端設(shè)備數(shù)據(jù)傳輸速度不理想的原因——軟Buffer的數(shù)據(jù)緩存方案緩存空間過(guò)小。其次,為了解決此問(wèn)題,提出了使用硬件數(shù)據(jù)緩存。再次,通過(guò)仿真驗(yàn)證硬件數(shù)據(jù)緩存方案的可行性,設(shè)計(jì)傳輸流程及方案驅(qū)動(dòng)代碼。最后,在大容量數(shù)據(jù)傳輸時(shí)用USB協(xié)議分析儀抓取USB3.0數(shù)據(jù)包,分析其完成設(shè)備枚舉的過(guò)程,完成USB 補(bǔ)充協(xié)議Mass Storage協(xié)議的過(guò)程,用HD Turn軟件對(duì)USB接口的數(shù)據(jù)傳輸?shù)乃俣冗M(jìn)行測(cè)試,并對(duì)測(cè)試結(jié)果分析,提出設(shè)計(jì)的不足。
由于本人水平有限,可供研究的資源不足,故本文的研究還存在一些不足,需要下一步進(jìn)行深入研究:
① 本文的設(shè)計(jì)是基于設(shè)備側(cè)的,下一步需要研究基于主機(jī)側(cè)PC端的設(shè)計(jì),這樣才是真正意義上整個(gè)USB體系的研究。
② 減少USB代碼設(shè)計(jì)上的冗余,提高執(zhí)行效率。
[1] 劉妍秀. USB3.0體系結(jié)構(gòu)及發(fā)展前景[J]. 長(zhǎng)春大學(xué)學(xué)報(bào):自然科學(xué)版, 2010, 25(1): 138-142.
[2] Compaq, Hewlett-Packard, Intel, et al. Universal Serial Bus 3.0 Specification Revision 1.0,2008.
[3] LU Rongjian, YAN Fang, ZHANG Qi. USB interface provided with host/device function and its control method[J]. Informatization Research,2010(5).
[4] CYIT. C8410 詳細(xì)設(shè)計(jì)說(shuō)明書(shū),2009.
[5] Synopsys. Design Ware Cores SuperSpeed USB 3.0 Controller Datebook Version 2.50a,2012.
[6] Tomoaki Kouyamat. The Design of a USB Device Controller IYOYOYO[C]//Design Automation Conference 2003, Asia and South Pacific,Proceedings of the ASP-DAC: 2003.
[7] JONATHAN CORBET, ALESSANDRO RUBINI.魏永明,耿岳,等譯. LINUX設(shè)備驅(qū)動(dòng)程序[M].北京:中國(guó)電力出版社,2009:324-356.
[8] USB Mass Storage Class Working Group. Universal Serial Bus Mass Storage Class Specification Overview Revision 1.4, 2010.
[9] USB Mass Storage Class Working Group.Universal Serial Bus Mass Storage Class Control/Bulk/Interrupt(CBI) Transport Revision 1.1,2003.
[10] USB Mass Storage Class Working Group.Universal Serial Bus Mass Storage Class Bulk-Only Transport Revision 1.0,1999.
[11] USB Mass Storage Class Working Group.Universal Serial Bus Mass Storage Class UFI Command Specification Revision 1.0, 1998.
[12] USB Mass Storage Class Working Group. Universal Serial Bus Small Compute Systerm Command Specification Revision 1.0,2009.
[13] SKhyni.MCP Specification Revision1.0, 2013.
張劍(碩士研究生),主要研究方向?yàn)榍度胧较到y(tǒng)、無(wú)線通信;王茜竹(副教授),主要研究方向?yàn)闊o(wú)線通信、信息系統(tǒng)與信息安全。
(責(zé)任編輯:楊迪娜收修改稿日期:2016-03-28)
USB3.0 High-speed Data Transmission System for Mobile Communication Terminal
Zhang Jian,Wang Qianzhu
(School of Communication and Information Engineering,Chongqing University of Posts and Telecommunication,Chongqing 400065,China)
Now the USB has become the most popular interface in the mobile terminal.As the media files stored in the mobile terminal are increasing, the speed of USB3.0is required as fast as possible.In order to match the high-speed transfer mode of USB,a special area of memory for USB data buffer is planned.The driver is designed,the test environment is set up and the USB data transmission speed is tested.The test results turn out that the USB transfer speed has been significantly improved.
USB3.0;mass storage;C8410;communication terminal;driver
TN929.5
A