<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 利用FPGA實(shí)現外設通信接口之:利用FPGA實(shí)現USB 2.0通信接口

利用FPGA實(shí)現外設通信接口之:利用FPGA實(shí)現USB 2.0通信接口

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201706/348807.htm

10.3利用實(shí)現通信接口

10.3.1接口的實(shí)現方式

利用來(lái)實(shí)現接口的方式一般有兩種,一是借助外圍的USB接口芯片,二是內部實(shí)現USB協(xié)議控制器,外部通過(guò)USB的PHY芯片來(lái)實(shí)現接口。

對于第一種方式,FPGA不需要實(shí)現USB通信協(xié)議,開(kāi)發(fā)的風(fēng)險小,而且性能穩定,因此被大部分設計者所采用。而第二種方式需要購買(mǎi)USB的IP核,門(mén)檻較高。如果自己開(kāi)發(fā)基于FPGA的USB協(xié)議棧,風(fēng)險高,而且兼容性和穩定性很難保證。

目前市場(chǎng)上的USB2.0接口芯片廠(chǎng)家和型號比較多,其中CypressSemiconductor公司的EZ-USBFX2()是世界上第一款集成USB2.0的微處理器,它集成了USB2.0收發(fā)器、SIE(串行接口引擎)、增強的8051微控制器和可編程的外圍接口。

FX2這種獨創(chuàng )性結構可使數據傳輸率達到56MByte/s,即USB2.0允許的最大帶寬。在FX2中,智能SIE可以硬件處理許多USB1.1和USB2.0協(xié)議,從而減少了開(kāi)發(fā)時(shí)間、確保了USB的兼容性。

GPIF(GeneralProgrammableInterface)和主/從端點(diǎn)FIFO(8位或16位數據總線(xiàn))為ATA、UTOPIA、EPP、PCMCIA和DSP等提供了簡(jiǎn)單和無(wú)縫連接接口。

結構圖如圖10.4所示。FPGA與的電路連接關(guān)系可以參考本書(shū)2.2.11小節的內容。

圖10.4CY7C68013FX2結構示意圖

10.3.2FX2接口芯片的SlaveFIFO傳輸模式

當FPGA與FX2芯片相連時(shí),只需要利用FX2作為一個(gè)USB2.0數據通道來(lái)實(shí)現與主機的高速通信。FPGA能夠提供滿(mǎn)足SlaveFIFO要求的傳輸時(shí)序,可以作為SlaveFIFO主控制器。`

SlaveFIFO傳輸的示意圖如圖10.5所示。

圖10.5SlaveFIFO傳輸的示意圖

在這種方式下,FX2內嵌的8051固件的功能只是配置SlaveFIFO相關(guān)的寄存器以及控制FX2何時(shí)工作在SlaveFIFO模式下。一旦8051固件將相關(guān)的寄存器配置完畢,且使自身工作在SlaveFIFO模式下后,FPGA就可按照SlaveFIFO的傳輸時(shí)序,高速與主機進(jìn)行通信,而在通信過(guò)程中不需要8051固件的參與。

在SlaveFIFO方式下,FPGA與FX2的連接信號圖如圖10.6所示。

下面是信號線(xiàn)的說(shuō)明。

IFCLK:FX2輸出的時(shí)鐘,可作為通信的同步時(shí)鐘。

FLAGA、FLAGB、FLAGC、FLAGD:FX2輸出的FIFO狀態(tài)信息,如滿(mǎn)、空等。

SLCS:FIFO的片選信號,外部邏輯控制,當SLCS輸出高時(shí),不可進(jìn)行數據傳輸。

SLOE:FIFO輸出使能,外部邏輯控制,當SLOE無(wú)效時(shí),數據線(xiàn)不輸出有效數據。

SLRD:FIFO讀信號,外部邏輯控制,同步讀時(shí),FIFO指針在SLRD有效時(shí)的每個(gè)IFCLK的上升沿遞增,異步讀時(shí),FIFO讀指針在SLRD的每個(gè)有效至無(wú)效的跳變沿時(shí)遞增。

SLWR:FIFO寫(xiě)信號,外部邏輯控制,同步寫(xiě)時(shí),在SLWR有效時(shí)的每個(gè)IFCLK的上升沿時(shí)數據被寫(xiě)入,FIFO指針遞增,異步寫(xiě)時(shí),在SLWR的每個(gè)有效至無(wú)效的跳變沿時(shí)數據被寫(xiě)入,FIFO寫(xiě)指針遞增。

PKTEND:包結束信號,外部邏輯控制,在正常情況下,外部邏輯向FX2的FIFO中寫(xiě)數,當寫(xiě)入FIFO端點(diǎn)的字節數等于FX2固件設定的包大小時(shí),數據將自動(dòng)被打成一包進(jìn)行傳輸,但有時(shí)外部邏輯可能需要傳輸一個(gè)字節數小于FX2固件設定的包大小的包,這時(shí),它只需在寫(xiě)入一定數目的字節后,聲明此信號,此時(shí)FX2硬件不管外部邏輯寫(xiě)入了多少字節,都自動(dòng)將之打成一包進(jìn)行傳輸。

FD[15:0]:數據線(xiàn)。

FIFOADR[1:0]:選擇4個(gè)FIFO端點(diǎn)的地址線(xiàn),外部邏輯控制。

10.3.3SlaveFIFO模式的典型操作時(shí)序

1.同步SlaveFIFO寫(xiě)操作

同步SlaveFIFO寫(xiě)的標準連接圖如圖10.7所示。

同步SlaveFIFO寫(xiě)的標準時(shí)序如下。

·IDLE:當寫(xiě)事件發(fā)生時(shí),進(jìn)狀態(tài)1。

·狀態(tài)1:使FIFOADR[1:0]指向INFIFO,進(jìn)狀態(tài)2。

·狀態(tài)2:如FIFO滿(mǎn),在當前狀態(tài)等待,否則進(jìn)狀態(tài)3。

·狀態(tài)3:驅動(dòng)數據到數據線(xiàn)上,使SLWR有效,持續一個(gè)IFCLK周期,進(jìn)狀態(tài)4。

·狀態(tài)4:如需傳輸更多的數,進(jìn)狀態(tài)2,否則進(jìn)狀態(tài)IDLE。

狀態(tài)跳轉示意圖如圖10.8所示。

圖10.7同步SlaveFIFO寫(xiě)的標準連接圖 圖10.8同步SlaveFIFO寫(xiě)的標準時(shí)序

假定FX2設定包大小為512字節,當FPGA向FIFO端點(diǎn)中寫(xiě)入的數據達512字節時(shí),FX2硬件自動(dòng)將已寫(xiě)入的512字節打成一包準備進(jìn)行傳輸。這個(gè)動(dòng)作就和在普通傳輸中,FX2固件向FIFO端點(diǎn)中寫(xiě)入512字節后,把512這個(gè)數寫(xiě)入EPxBC中一樣,只不過(guò)這個(gè)過(guò)程是由硬件自動(dòng)完成的。在這里可以看出“FX2固件不參與數據傳輸過(guò)程”的含義了。外部邏輯只需按上面的時(shí)序圖所示的時(shí)序向FIFO端點(diǎn)中一個(gè)一個(gè)字節(或字)地寫(xiě)數,寫(xiě)到一定數量,FX2硬件自動(dòng)將數據打包傳輸,這一切均不需固件的參與,由此實(shí)現高速數據傳輸。

2.同步SlaveFIFO讀操作

同步SlaveFIFO讀的標準連接圖如圖10.9所示。

同步SlaveFIFO讀的標準時(shí)序如下。

·IDLE:當讀事件發(fā)生時(shí),進(jìn)狀態(tài)1。

·狀態(tài)1:使FIFOADR[1:0]指向OUTFIFO,進(jìn)狀態(tài)2。

·狀態(tài)2:使SLOE有效,如FIFO空,在當前狀態(tài)等待,否則進(jìn)狀態(tài)3,

·狀態(tài)3:從數據線(xiàn)上讀數,使SLRD有效,持續一個(gè)IFCLK周期,以遞增FIFO讀指針,進(jìn)狀態(tài)4。

·狀態(tài)4:如需傳輸更多的數,進(jìn)狀態(tài)2,否則進(jìn)狀態(tài)IDLE。

狀態(tài)跳轉示意圖如圖10.10所示。

3.異步SlaveFIFO寫(xiě)操作

異步SlaveFIFO寫(xiě)的標準連接圖如圖10.11所示。

圖10.10同步SlaveFIFO讀狀態(tài)跳轉示意圖 圖10.11異步SlaveFIFO寫(xiě)的標準連接圖

異步SlaveFIFO寫(xiě)的標準時(shí)序如下。

·IDLE:當寫(xiě)事件發(fā)生時(shí),進(jìn)狀態(tài)1。

·狀態(tài)1:使FIFOADR[1:0]指向INFIFO,進(jìn)狀態(tài)2。

·狀態(tài)2:如FIFO滿(mǎn),在當前狀態(tài)等待,否則進(jìn)狀態(tài)3。

·狀態(tài)3:驅動(dòng)數據到數據線(xiàn)上,使SLWR有效,再無(wú)效,以使FIFO寫(xiě)指針遞增,進(jìn)狀態(tài)4。

·狀態(tài)4:如需傳輸更多的數,進(jìn)狀態(tài)2,否則進(jìn)狀態(tài)IDLE。

狀態(tài)跳轉示意圖如圖10.12所示。

4.異步SlaveFIFO讀操作

異步SlaveFIFO讀的標準連接如圖10.13所示。

圖10.12異步SlaveFIFO寫(xiě)狀態(tài)跳轉示意圖圖10.13異步SlaveFIFO讀的標準連接圖

異步SlaveFIFO讀的標準時(shí)序如下。

·IDLE:當讀事件發(fā)生時(shí),進(jìn)狀態(tài)1。

·狀態(tài)1:使FIFOADR[1:0]指向OUTFIFO,進(jìn)狀態(tài)2。

·狀態(tài)2:如FIFO空,在當前狀態(tài)等待,否則進(jìn)狀態(tài)3。

·狀態(tài)3:使SLOE有效,使SLRD有效,從數據線(xiàn)上讀數,再使SLRD無(wú)效,以遞增FIFO讀指針,再使SLOE無(wú)效,進(jìn)狀態(tài)4。

·狀態(tài)4:如需傳輸更多的數,進(jìn)狀態(tài)2,否則進(jìn)狀態(tài)IDLE。

狀態(tài)跳轉示意圖如圖10.14所示。

10.3.4FX2的固件程序設計

在FX2芯片的固件程序設計中,最關(guān)鍵的就是系統初始化函數TD_Init(void),下面講解這個(gè)函數的部分代碼。

//時(shí)鐘設置

CPUCS=0x12;//48MHzCLKOUT輸出使能

IFCONFIG=0x43;//使用外部時(shí)鐘,IFCLK輸入不反向

SYNCDELAY;//同步延遲

EP2CFG=0xA0;//需要設定為4緩沖,每個(gè)緩沖區大小為512字節

SYNCDELAY;

EP4CFG=0x00;

SYNCDELAY;

EP6CFG=0xE0;

SYNCDELAY;

EP8CFG=0x00;

SYNCDELAY;

FIFORESET=0x80;//激活NAK-ALL避免競爭

SYNCDELAY;

FIFORESET=0x02;//復位FIFO2

SYNCDELAY;

FIFORESET=0x06;//復位FIFO6

SYNCDELAY;

FIFORESET=0x00;//取消激活NAK-ALL

SYNCDELAY;

PINFLAGSAB=0xE6;//FLAGA設定為EP6PF,FLAGB設定為EP6FF

SYNCDELAY;

PINFLAGSCD=0xf8;//FLAGC設定為EP2EF,FLAGD保留

SYNCDELAY;

PORTACFG|=0x00;//SLCS有效

SYNCDELAY;

FIFOPINPOLAR=0x00;//所有信號低電平有效

SYNCDELAY;

10.3.5USB2.0接口的典型應用

由于USB2.0接口的數據傳輸速度快,而且使用方便,因此被廣泛應用于各種便攜設備中。例如,基于USB2.0接口的數據采集終端,可以將各種類(lèi)型的數據采集到電腦主機中進(jìn)行處理和結果顯示,其典型的結構如圖10.15所示。

圖10.15基于USB2.0接口的數據采集終端結構框圖



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>