USB2.0微控制器CY7C68013的GPIF接口設計

發(fā)布時(shí)間:2010-9-20 12:05    發(fā)布者:eetech
關(guān)鍵詞: CY7C68013 , GPIF , USB , 接口設計 , 微控制器
USB(Universal Serial Bus)是一種通用串行總線(xiàn),主要用于PC與外圍USB設備的互聯(lián)。近年來(lái),USB接口以其快速、即插即用、使用安裝方便等優(yōu)點(diǎn)逐漸成為現代數據傳輸的發(fā)展趨勢。目前,國內外采用USBl.1和USB2.O兩種規范。USBl.1主要用于低速傳輸要求的場(chǎng)合,支持1.5Mb/s和12Mb/s兩種傳輸速率;而USB2.O規范則提供高達480Mb/s的傳輸速率。盡管如此,在某些對數據傳輸速度要求很高的系統中,外圍設備與USB接口之間在速度上仍存在著(zhù)不可忽視的傳輸瓶頸。

Cypress公司生產(chǎn)的USB2.0控制器CY7C68013提供了一種獨特的接口方式,即通用可編程接口(GPIF)方式。它與傳統接口方式的主要區別有兩點(diǎn):①在數據傳輸過(guò)程中不需要CPU干涉,使得傳輸速率明顯提高,從而可以充分利用USB2.0的傳輸帶寬;②由軟件設置讀/寫(xiě)控制,其控制方式類(lèi)似于狀態(tài)機,提高了傳輸穩定性。因此,本文介紹的基于USB2.0控制器CY7C68013的GPIF接口設計,就是充分利用了該芯片這一獨特的數據傳輸接口方式,有效地解決了在傳統接口方式下USB2.0設備數據傳輸速度的局限性,大大提高了數據的傳輸速率。

1 CY7C68013簡(jiǎn)介

CY7C68013是Cypress公司的EZ-USB FX2系列芯片。EZ-USB FX2是一款集成USB2.0收發(fā)器的微控制器,內部結構如圖l所示。該系列芯片集成了USB2.O收發(fā)器、串行接口引擎(SIE)、帶8.5KB片上RAM的增強型高速8051單片機、4KB FIFO存儲器以及通用可編程接口等模塊.提供了全面集成的USB解決方案,無(wú)需外加芯片即可實(shí)現高速USB傳輸。FX2系列芯片最主要的特點(diǎn)是可以通過(guò)USB2.0的通用可編程接口為特定的應用接口編程。另外,CY7C68013的GPIF引擎具有自動(dòng)傳輸數據結構的特性,這種特性使得以主/從端點(diǎn)FIFO(B/16位數據總線(xiàn))為ATA、UTOPIA、EPP、PCMCIA、DSP等的外圍設備,可以與主機通過(guò)CY7C68013無(wú)縫、高速地傳輸數據。另外,CY7C68013內部集成的USB2.O的SIF能完成大部分USB2.O協(xié)議的處理工作,從而減少了用戶(hù)對繁雜的USB協(xié)議的處理。



2 硬件設計及原理

在GPIF接口方式設計中,GPIF作為CY7C68013的端點(diǎn)FIFO的內部控制器,在這種方式下,CPU不會(huì )干涉數據的傳輸。CY7C68013的GPIF接口方式如圖2所示。



CY7C68013專(zhuān)門(mén)為GPIF提供了接口信號(包括16位數據線(xiàn)、輸出控制信號CTL、輸入控制信號RDY以及地址線(xiàn)ADR),這些信號負責完成USB接口芯片與外圍設備或器件(如FPGA、DSP等)的數據讀/寫(xiě)控制和傳輸。以下為GPIF方式下的主要端口功能。
  • FDO~FDl5(輸入/輸出):USB主機通過(guò)CY7C68013與外部設備進(jìn)行數據傳輸的數據線(xiàn),可以用8位或16位數據線(xiàn)。
  • CTLO~CTL5(輸出):CY7C68013對外部設備進(jìn)行控制的信號線(xiàn)。
  • RDY0~RDY5(輸入):CY7C68013對外部設備的狀態(tài)進(jìn)行檢測的信號線(xiàn)。
  • SDA(雙向)、SCL(輸出):E2PROM的數據及時(shí)鐘信號線(xiàn)。
  • ADR0~ADR8(輸出);GPIF為外部設備提供的地址線(xiàn)。

在本設計中,除了重點(diǎn)利用通用可編程接口來(lái)實(shí)現無(wú)縫、高速的傳輸數據外,還采用了EZ-USBFX2提供的一種獨特架構,即“量子FIFO(Quantum FIFO)”處理架構。它能較好地解決帶寬問(wèn)題,圖3為其數據傳輸示意圖。當USB執行OUT時(shí),EP2端點(diǎn)被設置為512字節四重FIFO(在USB端和外部接口端,都不知道有四重FIFO),圖4為其數據傳輸原理圖。在USB端看來(lái),只要有1個(gè)FIFO為“半滿(mǎn)”,那么就可以繼續發(fā)送數據。





當前操作的FIFO寫(xiě)“滿(mǎn)”時(shí),FX2自動(dòng)將其轉換到外部接口端,排除等候讀;并將USB接口隊列中下一個(gè)為“空”的FIFO轉移到USB接口上,供其繼續寫(xiě)數據。同時(shí),在外部接口端看來(lái),只要有1個(gè)FIFO為“半滿(mǎn)”,就可以繼續讀取數據。當前操作的FIFO讀“空”時(shí),FX2自動(dòng)將其轉換到USB接口端,排除等候寫(xiě)入;并將外部接口隊列中下一個(gè)為“滿(mǎn)”的FIFO轉移到外部接口上,供其繼續讀取數據。

3 軟件設計及實(shí)現

本設計的軟件設計包括:固件程序、驅動(dòng)程序和應用程序設計。其中,固件程序是整個(gè)程序設計的核心,它在設備CPU中運行。GPIF就是在固件中實(shí)現的,因此,只有在該程序運行時(shí),外設才能稱(chēng)之為具有給定功能的外部設備。

3.1 固件設計

在GPIF高速數據傳輸中,GPIF波形的描述符決定了整個(gè)數據傳輸過(guò)程的時(shí)序。GPIF波形描述符通常用Cypress公司的GPIF工具(GPIFTOOL)進(jìn)行配置。它是一個(gè)可運行于Windows平臺的應用程序,與FX2的開(kāi)發(fā)包一起發(fā)布的。在GPIF方式下,所有的讀/寫(xiě)及控制邏輯通過(guò)CY7C68013的GPIF以軟件編程的方式實(shí)現,且控制邏輯的變換方便靈活(只需要改變接口的一個(gè)配置寄存器的值)。

FX2由4個(gè)GPIF波形描述符控制各個(gè)狀態(tài),它們分別是GPIF Waveform O(FIFORd)、GPIF Waveform1(FIFOWr)、GPIF Waveform 2(SnglRd)和GPIF Wave-form 3(SnglWr)。這些波形描述符可以動(dòng)態(tài)地配置給任何一個(gè)端點(diǎn)FIFO。FX2的固件程序可以把這些描述符配置給4個(gè)FIFO中的任意一個(gè);配置后,GPIF將依據波形描述符產(chǎn)生相應的控制邏輯和握手信號給外界接口,以滿(mǎn)足向FIFO讀/寫(xiě)數據的需要。每個(gè)波形描述符包含了7個(gè)有效狀態(tài)(S0~S6)和1個(gè)空閑狀態(tài)。在每個(gè)有效狀態(tài)對應的時(shí)間段里,經(jīng)過(guò)預先設置,GPIF可以完成以下幾項工作:驅動(dòng)(使高或低)或浮接CTL輸出,采樣或驅動(dòng)FIFO的數據總線(xiàn),增加GPIF地址總線(xiàn)的值和指向當前FIFO指針的值,以及啟動(dòng)GPIFWF(GPIF波形)中斷。除此之外,在每個(gè)狀態(tài)下,GPIF還可以對幾個(gè)信號(如RDY輸入端、FIFO狀態(tài)標志位、內部RDY標志位和傳輸計數終止標志位)中的任意兩個(gè)進(jìn)行采樣,把其中兩個(gè)信號相“與”、相“或”或者相“異或”,并根據結果跳轉到其他任意一個(gè)狀態(tài)或延遲1~256個(gè)時(shí)鐘周期,當然也可以根據輸入端的信號進(jìn)行跳轉或延遲。

FIFO讀波形配置(FIFORd)如圖5所示。在狀態(tài)0時(shí),數據總線(xiàn)上的數據為有效(activate),GPIF把數據讀到FIFO中。在狀態(tài)1時(shí),GPIF產(chǎn)生一個(gè)正脈沖信號RDCLK(CTL0)給外圍設備,表示已經(jīng)讀取了一個(gè)數據,同時(shí)判斷數據是否傳輸結束。如果還沒(méi)有,則不斷循環(huán)狀態(tài)O和狀態(tài)l,直到讀完所有數據為止;讀完所有數據后,不再經(jīng)過(guò)中間其他任何狀態(tài),就直接跳到狀態(tài)7(Idle),表示完成本次數據傳輸。從圖5中町以看出,在兩個(gè)時(shí)鐘周期內完成了一個(gè)數據(8位或16位)的讀取,如果數據為雙字節寬,那么傳輸速率可達48 Mb/s,從而充分利用了USB2.0的傳輸帶寬,大大提高了數據傳輸的速率。



3.2 驅動(dòng)程序設計

USB系統驅動(dòng)程序由3部分組成:USB設備驅動(dòng)程序、USB總線(xiàn)驅動(dòng)程序和USB主控制器驅動(dòng)程序。其中,Windows操作系統已經(jīng)提供了處于驅動(dòng)程序棧底的USB總線(xiàn)驅動(dòng)程序和USB主控制器驅動(dòng)程序;而USB設備驅動(dòng)程序由設備開(kāi)發(fā)者編寫(xiě),通過(guò)向USB總線(xiàn)驅動(dòng)程序發(fā)送包含URB(USB Request Block)的IRP(I/O RequestPaeket),以實(shí)現USB外設之間的信息交換。

開(kāi)發(fā)USB設備驅動(dòng)程序,可采用Numega公司的開(kāi)發(fā)包Driver Works和Mierosoft公司的2000DDK,并以VC++6.O作為輔助開(kāi)發(fā)環(huán)境來(lái)完成。在Cypress公司的EZ-USBFX2開(kāi)發(fā)包中,提供了完整的CY7C68013驅動(dòng)程序源代碼、控制面板程序及固件的框架,可以大大加快用戶(hù)開(kāi)發(fā)的進(jìn)度。用戶(hù)只需對所帶驅動(dòng)程序稍加修改甚至無(wú)需任何修改,再經(jīng)DDK編譯后使用,軟件開(kāi)發(fā)者大量的時(shí)間主要集中在應用程序和固件的開(kāi)發(fā)上。本設計所用的USB設備驅動(dòng)程序就是對FX2開(kāi)發(fā)包所帶的驅動(dòng)程序做了一些修改,主要是修改了DeviceIoControl例程,增加了控制數據傳輸函數、啟動(dòng)和停止AD、復位FIFO等。

3.3 應用程序設計

用戶(hù)程序是USB系統與用戶(hù)的接口,其關(guān)鍵是實(shí)現從USB外設讀取或發(fā)送USB設備請求、命令和特定量的數據等,并對數據進(jìn)行一系列處理(如存儲、顯示等)。在編寫(xiě)用戶(hù)程序時(shí),首先要建立與外設的連接,然后才能實(shí)施數據的傳輸。

本設計使用的是C++Builder6編譯環(huán)境,在C++Builder6環(huán)境下通過(guò)API函數去調用USB驅動(dòng);静襟E為:首先打開(kāi)設備的句柄;然后進(jìn)行讀/寫(xiě)和控制操作;最后關(guān)閉設備句柄。程序中主要用到的兩個(gè)API函數CreatFile()和DeviceloControl()就是通過(guò)該句柄實(shí)現數據傳輸的。

結語(yǔ)

本文詳細介紹了基于USB2.O控制器CY7C68013的GFIF接口軟硬件設計方案。該設計充分利用了CY7C68013芯片的通用可編程接口特性,很大程度上解決了USB2.0設備存在的傳輸瓶頸問(wèn)題,大大提高了數據傳輸速率。同時(shí),由于利用了芯片的呵編程特性,因此在具備了普通USB接口方式的諸多優(yōu)點(diǎn)之外,還簡(jiǎn)化了外部硬件設計,提高了系統穩定性,有利于PCB板的制作和調試。

經(jīng)驗證,在USB2.O的高速數據采集與處理系統中,基于USB2.0微控制器CY7C68013的GPIF接口設計是一種比較好的解決傳輸速度問(wèn)題的方案。
本文地址:http://selenalain.com/thread-28140-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页