USB2.0控制器CY7C68013特點(diǎn)與應(yīng)用
關(guān)鍵詞:USB2.0 高速模式 端點(diǎn)
本刊2002年到2、3期已對(duì)EZ-USB單片機(jī)的介紹。本文在此只重點(diǎn)介紹USB2.0的特殊之處以及芯片CY7C68013的主要特點(diǎn)。*
1 USB2.0的主要特點(diǎn)
USB協(xié)議的2.0版本于2000年4月推出。支持以下3種速度模式:
低速模式(low speed) 1.5Mb/s;
全速模式(full speed) 12Mb/s
高速模式(high speed) 480Mb/s
USB2.0協(xié)議支持現(xiàn)存的所有USB設(shè)備,既可以把USB1.1設(shè)備插入U(xiǎn)SB1.1的PC機(jī)接口,并且在電氣上兼容USB1.1的連接線。
1.1 數(shù)據(jù)包
USB傳輸?shù)臄?shù)據(jù)包的類型用稱之為Packet Ids(PIDs)的特定代碼來定義。USB包中共有4種PID類型,如表1所列。
表1 USB2.0的數(shù)據(jù)包類型
PID類型 | PID名稱 |
令牌 | IN,OUT,SOF,SETUP |
數(shù)據(jù) | DATA0,DATA1,DATA2,MDATA |
握手 | ACK,NAK,STALL,NYET |
特殊類型 | PRE,ERR,SPLIT,PIN |
注:黑體字表示USB2.0增加的PID類型。
在全速模式時(shí),每個(gè)OUT傳輸發(fā)送OUT數(shù)據(jù)包,不考慮外設(shè)是否處于“忙”狀態(tài)而不能接收數(shù)據(jù)。針對(duì)這種浪費(fèi)帶寬的情況,在高速模式時(shí)推薦使用新的PID類型“PING”。主機(jī)先對(duì)OUT端點(diǎn)發(fā)出個(gè)較短的“PING”令牌,訪問當(dāng)前外設(shè)是否有數(shù)據(jù)文憑間來存放OUT的數(shù)據(jù)包。僅僅當(dāng)外部設(shè)備回答“ACK”時(shí),主機(jī)才發(fā)送較長(zhǎng)OUT數(shù)據(jù)包。
SETUP鄰牌只用于控制傳輸。它數(shù)據(jù)包中的前8個(gè)字節(jié)。通過這8個(gè)字節(jié),外設(shè)對(duì)主機(jī)的設(shè)備請(qǐng)求進(jìn)行譯碼。
SOF令牌代表一個(gè)USB幀的開始。
ACK(Acknowlegde)表示成功,數(shù)據(jù)接收無誤。
NAK(Negavite Acknowlegde)表示忙,得發(fā)。這并不是出錯(cuò),USB外設(shè)沒有應(yīng)答表示出錯(cuò)。
STALL表示未知錯(cuò)誤,外設(shè)未能理解主機(jī)發(fā)出的設(shè)備請(qǐng)求,可能是外設(shè)端出錯(cuò),或是主機(jī)訪問并存在的資源。USB協(xié)議提供了從stall狀態(tài)恢復(fù)的方法。
其它PID詳見參考文獻(xiàn)[1]。
1.2 幀結(jié)構(gòu)
USB主機(jī)每毫秒向所有的USB設(shè)備發(fā)送1上SOF包(Start of Frame),以此來提供時(shí)間基準(zhǔn)。SOF包括1個(gè)自增的11位幀序號(hào)。FX2隨時(shí)可以從寄存器中讀出這個(gè)范圍在[0~2047]的幀序號(hào)。
地高速模式下(480Mb/s),每個(gè)1ms長(zhǎng)的幀被分成了8個(gè)125μs長(zhǎng)的微幀。每個(gè)微幀也都由一個(gè)SOF包開始。幀序號(hào)還是每個(gè)毫秒自增1次,所以這8個(gè)微幀都含有相同的幀序號(hào)。為了區(qū)別每個(gè)微幀F(xiàn)X2提供1個(gè)只讀的微幀計(jì)數(shù)器,并且FX2能在收到SOF包時(shí)產(chǎn)生1個(gè)中斷請(qǐng)求,即在全速模式下1ms/次,高速模式下125μs/次。
1.3 傳輸類型
為了適用480 Mb/s的高速數(shù)據(jù)傳輸,USB.0協(xié)議擴(kuò)大了各種傳輸類型數(shù)據(jù)包長(zhǎng)度,與USB1.1的對(duì)照如表2所列。
表2 USB2.0與USB1.1數(shù)據(jù)包長(zhǎng)度的對(duì)照
傳輸類型 | 數(shù)據(jù)包度/B | |
USB1.1 | USB2.0 | |
控制傳輸 | 8,16,32,64 | 64 |
塊傳輸 | 8,16,32,64 | 512 |
中斷傳輸 | 1~64 | 1024 |
同步傳輸 | 1023 | 1024 |
1.4 高速模式和全速模式的檢測(cè)
USB2.0規(guī)范要求高速設(shè)備必須能在全速模式下枚舉。每個(gè)高速設(shè)備都在全速模式下開始枚舉過程。當(dāng)與主機(jī)達(dá)成“Chirp”協(xié)議后設(shè)備再切換到高速工作模式下。詳細(xì)內(nèi)容見參考文獻(xiàn)[1]第7章。FX2能自動(dòng)檢測(cè)高速主機(jī),并切換到高速模式下。
1.5 傳輸性能分析
以USB硬盤為例分析USB2.0的高速傳輸性能。圖1為USB2.0與硬盤接口的帶寬分析。
每分轉(zhuǎn)速7200帶有2MB緩存的ATA100硬盤,接口數(shù)據(jù)傳輸速率可達(dá)100MB/s,可持續(xù)的有效傳輸速率只有39MB/s。
USB2.0在每個(gè)上微幀中最大可傳輸13個(gè)塊傳輸包,而每個(gè)微幀長(zhǎng)固定為125μs,所以其最大傳輸速率為:5121381000=53MB/s。
2 EX-USB FX2的主要特點(diǎn)
2.1 芯片結(jié)構(gòu)
EZ-USB FX2芯片包括1個(gè)8051處理器、1個(gè)串行接口引擎(SIE)、1個(gè)USB收發(fā)器、8.5KB片上RAM、4KB FIFO存儲(chǔ)器以及1個(gè)通用可編程接口(GPIF),如圖2所示。FX2是一個(gè)全面集成的解決方案,它占用更少的電路板空間,并縮短開發(fā)時(shí)間。
EZ-USB FX2擁有1個(gè)獨(dú)特的架構(gòu),其中包括1個(gè)智能串行接口引擎(SIE)。它執(zhí)行所有基本的USB功能,將嵌入式MCU解放出來以用于實(shí)現(xiàn)專用的功能,并保證其持續(xù)的高性能的傳輸速率。FX2還包括2個(gè)通用可編程接口(GPIF),允許它“無膠粘接”,即可與任何ASIC或DSP進(jìn)行連接,并且它還支持所有通用總線標(biāo)準(zhǔn),包括ATA、UTOPIA、EPP和PCMCIA。EZ-USB FX2完全適用于USB2.0,并向下兼容USB1.1。
FX2有3種封裝形式:56腳 SOPP、100腳的TQFF(薄形四方扁平封裝)、128腳的TQFP。引腳數(shù)的區(qū)別在于輸入、輸出引腳數(shù)的不同,以針對(duì)不同的應(yīng)用要求。
2.2 結(jié)構(gòu)特點(diǎn)
當(dāng)大部分USB1.1器件都需要微控制器參與數(shù)據(jù)從端點(diǎn)FIFOs到應(yīng)用環(huán)境轉(zhuǎn)移,如圖3所示。顯然,微控制器本身的工作頻率在相當(dāng)程度上限制了帶寬的進(jìn)一步提高。雖然在12Mb/s的全速模式下,這種限制并不明顯,但當(dāng)速度提升至480 Mb/s時(shí),在成本嚴(yán)格控制下微控制器就必然成為整個(gè)系統(tǒng)的帶寬并頸。
EZ-USB FX2提供了一種獨(dú)持架構(gòu),使USB接口和應(yīng)用環(huán)境直接共享FIFO,而微控制器可不參與數(shù)據(jù)傳輸?shù)试S以FIFO或RAM的方式訪問這些共享FIFO,如圖4所示。這種被稱之為“量子FIFO”(Quantum FIFO)的處理架構(gòu),較好地解決了USB高速模式的帶寬問題。
具體來說,如圖5所示,USB執(zhí)行OUT傳輸,將EP2端點(diǎn)設(shè)成512字節(jié)重FIFO(如2.3小節(jié)所述)。在USB端和外部接口端都并不知道有四重FIFO??磥恚琔SB端只要有1個(gè)FIFO為“半滿”,就可以繼續(xù)發(fā)送數(shù)據(jù)。當(dāng)膠操作的FIFO寫“滿”時(shí),F(xiàn)X2自動(dòng)將其轉(zhuǎn)換到外部接口端,排除等候讀??;并將USB接口隊(duì)列中下一個(gè)為“空”的FIFO轉(zhuǎn)移到USB接口上,供其繼續(xù)寫數(shù)據(jù)。外部接口端與此類似,只要1有個(gè)FIFO為“半滿”,就可以繼續(xù)讀取數(shù)據(jù)。當(dāng)前操作的FIFO讀“空”時(shí),F(xiàn)X2自動(dòng)將其轉(zhuǎn)換到USB接口端,排除等候?qū)懭?;并將外部接口?duì)列中下一個(gè)為“滿”的FIFO轉(zhuǎn)移到外部接口上,供其繼續(xù)讀取數(shù)據(jù)。
2.3 端點(diǎn)緩存
USB協(xié)議定義了端點(diǎn)作為數(shù)據(jù)的接收器和發(fā)送器。主機(jī)發(fā)送4個(gè)bit的地址和1個(gè)bit的方向來選擇端點(diǎn),因此USB最多可有32個(gè)端點(diǎn)定義:IN0~I(xiàn)N15和OUT0~OUT15。
FX2定義了7個(gè)端點(diǎn),在高速模式下的端點(diǎn)緩存結(jié)構(gòu)如圖6所示。EP0INOUT、EP1IN、EP1OUT是64byte的端點(diǎn)緩存。EP0是默認(rèn)的控制傳輸端點(diǎn),既是IN端點(diǎn)也是OUT端點(diǎn)。EP1IN、EP1OUT支持塊、中斷和同步傳輸。EP0、EP1IN和EP1OUT只能由FX2的固件訪問;而EP2、4、6和8無需固件干涉即可同片外互傳高速數(shù)據(jù)。
FX2端點(diǎn)配置方式非常靈活。EP2、4、6和8是大容量高帶寬的數(shù)據(jù)傳輸端點(diǎn),可設(shè)為IN或OUT端點(diǎn)的一種,能配置成多種形式以適應(yīng)帶寬需要。在圖6中,每一列代表1種配置方式。帶陰影的方框可包括2、3、4個(gè)512或1024字節(jié)的緩存,分別表示端點(diǎn)可配置成雙重、三重和四重緩存。雙緩存是指USB可以讀或?qū)?個(gè)數(shù)據(jù)包,而另一個(gè)數(shù)據(jù)包(同一個(gè)端點(diǎn)內(nèi)另一個(gè)緩沖存儲(chǔ)器中的)可供外部接口操作;三重緩存加了第3個(gè)數(shù)據(jù)包存儲(chǔ)器可供USB和外部接口需要的一方使用;四重緩存增加了第4個(gè)數(shù)據(jù)包存儲(chǔ)器。多緩存的結(jié)構(gòu)以在讀寫雙方速度相似時(shí)有效地改善帶寬,平滑帶寬抖動(dòng),減少雙方的互相等待時(shí)間。
3 EZ-USB FX2的接口方式
FX有2種接口方式:Slave FIFOs和可編程接口GPIF。
Slave FIFOs方式是從機(jī)方式,外部控制器可像普通FIFO一樣對(duì)FX2的多層緩沖FIFO進(jìn)行讀寫。FX2的Slave FIFOs工作方式可設(shè)為同步或異步;工作時(shí)鐘可選為內(nèi)部產(chǎn)生或外部輸入;其它控制信號(hào)也可靈活地設(shè)置為高有效或低有效。
可編程接口GPIF是主機(jī)方式,可以軟件編程讀寫控制波形,幾乎可以對(duì)任何8/16 bit接口的控制器、存儲(chǔ)器和總線進(jìn)行數(shù)據(jù)的主動(dòng)讀寫,非常靈活。
4 EZ-USB FX2的開發(fā)工具
如同EZ-USB系列的其它控制器一樣,Cypress公司對(duì)FX2也提供了較為完備的開發(fā)套件CY3681。它包括帶128腳CY7C68013的硬件開發(fā)板和相應(yīng)的控制面板(Control panel)、GPIF代碼自動(dòng)生成軟件(GPIFTool)以及固件方面豐富的例子和大量的幫助文檔??梢员M量節(jié)省學(xué)習(xí)時(shí)間,加快開發(fā)速度。
pid控制器相關(guān)文章:pid控制器原理
評(píng)論