版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Red logic 紅色颶風(fēng)II紅色颶風(fēng)III開發(fā)板USB2FPGA實(shí)驗(yàn)指導(dǎo)Red Logic目錄第一章FX2特性介紹.311介紹.312結(jié)構(gòu).313特征.4第二章Slave FIFO傳輸.521概述.522硬件連接.523 Slave FIFO的幾種傳輸方式.6231 同步Slave FIFO寫.6232 同步Slave FIFO讀.9233異步Slave FIFO寫.11234異步Slave FIFO讀.12第三章 寄存器設(shè)置.1531 IFCONFIG.1532 PINFLAGSAB/CD.1633 FIFORESET.1734 FIFOPINPOLAR.1835 EPxCFG.1836
2、 EPxFIFOCFG.1937 EPxAUTOINLENH/L.2038 EPxFIFOPFH/L.2139 INPKTEND.22310 OUTPKTEND.22311 EPxFIFOIE和EPxFIFOIRQ.22312PORTACFG.23313 EPxFIFOBCH EPxFIFOBCL.23314 EP2468FIFOFLAG24315其它通用寄存器.25第四章 同步slave fifo測試操作指南.2641安裝軟件包.2642同步寫FIFO測試.2643同步讀FIFO測試.30第五章 紅色颶風(fēng)II開發(fā)板USB2FPGA軟件設(shè)計(jì).3351 68013固件程序設(shè)計(jì).3352 FPGA
3、源代碼設(shè)計(jì)35第六章 USB2FPGA硬件原理圖.37第七章 改板后注意的問題.37附錄1 版本歷史39一FX2特性介紹11介紹Cypress Semiconductor公司的EZUSB FX2是世界上第一款集成USB2.0的微處理器,它集成了USB2.0收發(fā)器、SIE(串行接口引擎)、增強(qiáng)的8051微控制器和可編程的外圍接口。FX2這種獨(dú)創(chuàng)性結(jié)構(gòu)可使數(shù)據(jù)傳輸率達(dá)到56Mbytes/s,即USB2.0允許的最大帶寬。在FX2中,智能SIE可以硬件處理許多USB1.1和USB2.0協(xié)議,從而減少了開發(fā)時(shí)間和確保了USB的兼容性。GPIF(General Programmable Interfac
4、e)和主/從端點(diǎn)FIFO(8位或16位數(shù)據(jù)總線)為ATA、UTOPIA、EPP、PCMCIA和DSP等提供了簡單和無縫連接接口。12結(jié)構(gòu)CY7C68013結(jié)構(gòu)圖如圖1所示。它有三種封裝形式:56SSOP,100TQFP和128TQFP。13特征: 內(nèi)嵌480MBit/s的收發(fā)器,鎖相環(huán)PLL,串行接口引擎SIE集成了整個(gè)USB 2.0協(xié)議的物理層。 為適應(yīng)USB 2.0的480MBit/s的速率,F(xiàn)IFO端點(diǎn)可配置成2,3,4個(gè)緩沖區(qū)。 內(nèi)嵌可工作在48MHz的增強(qiáng)型8051,它具有以下特征:- 具有256Byte的寄存器空間,兩個(gè)串口,三個(gè)定時(shí)器,兩個(gè)數(shù)據(jù)指針。- 四個(gè)機(jī)器周期(工作在48M
5、Hz下時(shí)為83.3ns)即組成一個(gè)指令周期。- 特殊功能寄存器(包括I/O口控制寄存器)可高速訪問。- 應(yīng)用USB向量中斷,具有極短的ISR響應(yīng)時(shí)間。- 只用作USB事務(wù)管理,控制,不參與數(shù)據(jù)傳輸,較好地解決了USB高速模式的帶寬問題。 “軟配置”USB固件可由USB總線下載,片上不需集成ROM。 擁有四個(gè)FIFO接口,可工作在內(nèi)部或外部時(shí)鐘下。端點(diǎn)和FIFO接口的應(yīng)用使外部邏輯和USB總線可高速連接。 內(nèi)嵌通用可編程接口GPIF,它是一個(gè)狀態(tài)機(jī),可充當(dāng)主控制器,提供外部邏輯和USB總線的“無膠粘貼”。 一種單片USB 2.0外設(shè)解決方案,不需要外部的協(xié)議物理層,F(xiàn)X2把所有的功能集成在一個(gè)芯
6、片上。二、Slave FIFO傳輸21概述當(dāng)有一個(gè)與FX2芯片相連的外部邏輯只需要利用FX2做為一個(gè)USB 2.0接口而實(shí)現(xiàn)與主機(jī)的高速通訊,而它本身又能夠提供滿足Slave FIFO要求的傳輸時(shí)序,可以做為Slave FIFO主控制器時(shí),即可考慮用此傳輸方式。Slave FIFO傳輸?shù)氖疽鈭D如下:主機(jī)收發(fā)器和SIEFIFO端點(diǎn)緩沖區(qū)8051固件外部邏 輯SlaveFIFO從控制器在這種方式下,F(xiàn)X2內(nèi)嵌的8051固件的功能只是配置Slave FIFO相關(guān)的寄存器以及控制FX2何時(shí)工作在Slave FIFO模式下。一旦8051固件將相關(guān)的寄存器配置完畢,且使自身工作在Slave FIFO模式下
7、后,外部邏輯(如FPGA)即可按照Slave FIFO的傳輸時(shí)序,高速與主機(jī)進(jìn)行通訊,而在通訊過程中不需要8051固件的參與。22硬件連接(標(biāo)準(zhǔn))在Slave FIFO方式下,外部邏輯與FX2的連接信號圖如下:IFCLK:FX2輸出的時(shí)鐘,可做為通訊的同步時(shí)鐘;FLAGA,F(xiàn)LAGB,F(xiàn)LAGC,F(xiàn)LAGD:FX2輸出的FIFO狀態(tài)信息,如滿,空等;SLCS:FIFO的片選信號,外部邏輯控制,當(dāng)SLCS輸出高時(shí),不可進(jìn)行數(shù)據(jù)傳輸;SLOE:FIFO輸出使能,外部邏輯控制,當(dāng)SLOE無效時(shí),數(shù)據(jù)線不輸出有效數(shù)據(jù);SLRD:FIFO讀信號,外部邏輯控制,同步讀時(shí),F(xiàn)IFO指針在SLRD有效時(shí)的每個(gè)
8、IFCLK的上升沿遞增,異步讀時(shí),F(xiàn)IFO讀指針在SLRD的每個(gè)有效無效的跳變沿時(shí)遞增;SLWR:FIFO寫信號,外部邏輯控制,同步寫時(shí),在SLWR有效時(shí)的每個(gè)IFCLK的上升沿時(shí)數(shù)據(jù)被寫入,F(xiàn)IFO指針遞增,異步寫時(shí),在SLWR的每個(gè)有效無效的跳變沿時(shí)數(shù)據(jù)被寫入,F(xiàn)IFO寫指針遞增;PKTEND:包結(jié)束信號,外部邏輯控制,在正常情況下,外部邏輯向FX2的FIFO中寫數(shù),當(dāng)寫入FIFO端點(diǎn)的字節(jié)數(shù)等于FX2固件設(shè)定的包大小時(shí),數(shù)據(jù)將自動被打成一包進(jìn)行傳輸,但有時(shí)外部邏輯可能需要傳輸一個(gè)字節(jié)數(shù)小于FX2固件設(shè)定的包大小的包,這時(shí),它只需在寫入一定數(shù)目的字節(jié)后,聲明此信號,此時(shí)FX2硬件不管外部邏
9、輯寫入了多少字節(jié),都自動將之打成一包進(jìn)行傳輸;FD15:0:數(shù)據(jù)線;FIFOADR1:0:選擇四個(gè)FIFO端點(diǎn)的地址線,外部邏輯控制。23 Slave FIFO的幾種傳輸方式231 同步Slave FIFO寫同步Slave FIFO寫的標(biāo)準(zhǔn)連接圖如下:同步Slave FIFO寫的標(biāo)準(zhǔn)時(shí)序如下:IDLE:當(dāng)寫事件發(fā)生時(shí),進(jìn)狀態(tài)1;狀態(tài)1:使FIFOADR1:0指向IN FIFO,進(jìn)狀態(tài)2;狀態(tài)2:如FIFO滿,在本狀態(tài)等待,否則進(jìn)狀態(tài)3;狀態(tài)3:驅(qū)動數(shù)據(jù)到數(shù)據(jù)線上,使SLWR有效,持續(xù)一個(gè)IFCLK周期,進(jìn)狀態(tài)4;狀態(tài)4:如需傳輸更多的數(shù),進(jìn)狀態(tài)2,否則進(jìn)狀態(tài)IDLE。狀態(tài)跳轉(zhuǎn)示意圖如下:幾種情
10、況的時(shí)序圖示意如下(FULL,EMPTY,SLWR,PKTEND均假定低有效):圖示FIFO中本來沒有數(shù)據(jù),外部邏輯寫入第一個(gè)數(shù)據(jù)時(shí)的情況。圖示假定FX2設(shè)定包大小為512字節(jié),外部邏輯向FIFO端點(diǎn)中寫入的數(shù)據(jù)達(dá)512字節(jié)時(shí)的情況。此時(shí)FX2硬件自動將已寫入的512字節(jié)打成一包準(zhǔn)備進(jìn)行傳輸,這個(gè)動作就和在普通傳輸中,F(xiàn)X2固件向FIFO端點(diǎn)中寫入512字節(jié)后,把512這個(gè)數(shù)寫入EPxBC中一樣,只不過這個(gè)過程是由硬件自動完成的。在這里可以看出“FX2固件不參與數(shù)據(jù)傳輸過程”的含義了。外部邏輯只須按上面的時(shí)序圖所示的時(shí)序向FIFO端點(diǎn)中一個(gè)一個(gè)字節(jié)(或字)地寫數(shù),寫到一定數(shù)量,F(xiàn)X2硬件自動將
11、數(shù)據(jù)打包傳輸,這一切均不需固件的參與,由此實(shí)現(xiàn)高速數(shù)據(jù)傳輸。圖示的是FIFO端點(diǎn)被寫滿時(shí)的情況。232 同步Slave FIFO讀:同步Slave FIFO讀的標(biāo)準(zhǔn)連接圖如下:同步Slave FIFO讀的標(biāo)準(zhǔn)時(shí)序如下:IDLE:當(dāng)讀事件發(fā)生時(shí),進(jìn)狀態(tài)1;狀態(tài)1:使FIFOADR1:0指向OUT FIFO,進(jìn)狀態(tài)2;狀態(tài)2:使SLOE有效,如FIFO空,在本狀態(tài)等待,否則進(jìn)狀態(tài)3;狀態(tài)3:從數(shù)據(jù)線上讀數(shù),使SLRD有效,持續(xù)一個(gè)IFCLK周期,以遞增FIFO讀指針,進(jìn)狀態(tài)4;狀態(tài)4:如需傳輸更多的數(shù),進(jìn)狀態(tài)2,否則進(jìn)狀態(tài)IDLE。狀態(tài)跳轉(zhuǎn)示意圖如下:幾種情況的時(shí)序圖示意如下(FULL,EMPTY
12、,SLRD,SLOE均假定低有效):圖示正常情況時(shí)的時(shí)序。圖示FIFO被讀空時(shí)的情況。233 異步Slave FIFO寫:異步Slave FIFO寫的標(biāo)準(zhǔn)連接圖如下:異步Slave FIFO寫的標(biāo)準(zhǔn)時(shí)序如下:IDLE:當(dāng)寫事件發(fā)生時(shí),進(jìn)狀態(tài)1;狀態(tài)1:使FIFOADR1:0指向IN FIFO,進(jìn)狀態(tài)2;狀態(tài)2:如FIFO滿,在本狀態(tài)等待,否則進(jìn)狀態(tài)3;狀態(tài)3:驅(qū)動數(shù)據(jù)到數(shù)據(jù)線上,使SLWR有效,再無效,以使FIFO寫指針遞增,進(jìn)狀態(tài)4;狀態(tài)4:如需傳輸更多的數(shù),進(jìn)狀態(tài)2,否則進(jìn)狀態(tài)IDLE。狀態(tài)跳轉(zhuǎn)示意圖如下:幾種情況的時(shí)序圖示意如下(FULL,EMPTY,SLWR,PKTEND均假定低有效)
13、:圖示FIFO中本來沒有數(shù)據(jù),外部邏輯寫入第一個(gè)數(shù)據(jù)時(shí)的情況。234 異步Slave FIFO讀:異步Slave FIFO讀的標(biāo)準(zhǔn)連接圖如下:異步Slave FIFO讀的標(biāo)準(zhǔn)時(shí)序如下:IDLE:當(dāng)讀事件發(fā)生時(shí),進(jìn)狀態(tài)1;狀態(tài)1:使FIFOADR1:0指向OUT FIFO,進(jìn)狀態(tài)2;狀態(tài)2:如FIFO空,在本狀態(tài)等待,否則進(jìn)狀態(tài)3;狀態(tài)3:使SLOE有效,使SLRD有效,從數(shù)據(jù)線上讀數(shù),再使SLRD無效,以遞增FIFO讀指針,再使SLOE無效,進(jìn)狀態(tài)4;狀態(tài)4:如需傳輸更多的數(shù),進(jìn)狀態(tài)2,否則進(jìn)狀態(tài)IDLE。狀態(tài)跳轉(zhuǎn)示意圖如下:幾種情況的時(shí)序圖示意如下(FULL,EMPTY,SLRD,SLOE均
14、假定低有效):圖示正常情況時(shí)的時(shí)序。三、寄存器設(shè)置slave fifo模式下常用寄存器 IFCONFIGEPxFIFOPFH/LPINFLAGABPORTACFGPINFLAGCKINPKTENDFIFORESETEPxFLAGIEFIFOPINPOLAREPxFLAGIRQEPxCFGEPxFIFOBCH:LEPxFIFOCFGEPxFLAGSEPxAUTOINLENH:LEPxBUF31 IFCONFIG(E601):接口配置寄存器IFCLKSRC:FIFO時(shí)鐘內(nèi)部/外部時(shí)鐘源選擇,0外部時(shí)鐘源,1內(nèi)部時(shí)鐘源。3048MHZ:如選擇內(nèi)部時(shí)鐘,30MHz/48MHz頻率選擇,0 IFCLK時(shí)
15、鐘30M,1 IFCLK時(shí)鐘48M。IFCLKOE:IFCLK時(shí)鐘輸出使能,0關(guān)閉,1打開。IFCLKPOL:IFCLK輸出反轉(zhuǎn)使能,0不反轉(zhuǎn),1反轉(zhuǎn)。ASYNC:Slave FIFO同步/異步工作方式選擇,0同步,1異步。GSTATE:選擇是否將GSTATE2:0在PORTE2:0輸出,0關(guān)閉,1使能。IFCFG1:0:FX2 I/O端口模式選擇,也既是上面所說的FX2與外部邏輯傳輸方式的選擇。00:I/O方式;01:reserved;10:Slave FIFO方式;11:GPIF方式。32 PINFLAGSAB/CD(E602:E603):FLAGx引腳配置寄存器FLAGA,F(xiàn)LAGB,F(xiàn)
16、LAGC,F(xiàn)LAGD反映FIFO狀態(tài)選擇。每個(gè)腳有編址/固定兩種模式:如設(shè)為編址模式,則它們都反映FIFOADR1:0腳當(dāng)前所指端點(diǎn)的狀態(tài),其中,F(xiàn)LAGA反映“可編程極限”,F(xiàn)LAGB反映“滿”標(biāo)志,F(xiàn)LAGC反映“空”標(biāo)志,F(xiàn)LAGD不存在;如設(shè)為固定模式,它們均可任意設(shè)置成反映任意端點(diǎn)的任意標(biāo)志,而不受限于FIFOADR1:0腳當(dāng)前所指端點(diǎn)的狀態(tài)。Slave fifo模式中,用引腳FLAGAFLAGD來定義用端點(diǎn)FIFO的狀態(tài),并可靈活編程來實(shí)現(xiàn)FLAGx設(shè)置,見表3.2說明:1 PF表示FIFO編程狀態(tài),EF表示FIFO已空,F(xiàn)F表示FIFO已滿2 0000為索引模式,其它為固定模式3
17、3 FIFORESET(E604):端點(diǎn)緩沖區(qū)復(fù)位寄存器將FIFO復(fù)位到初始狀態(tài)。具體過程是,寫0x80到此寄存器,NAK所有主機(jī)請求;寫0x02,0x04,0x06,0x08分別復(fù)位各個(gè)端點(diǎn);寫0x00,結(jié)束復(fù)位過程。一般,在每一次開始進(jìn)行slave FIFO或GPIF傳輸之前,先復(fù)位端點(diǎn),再清空端點(diǎn),然后即可進(jìn)行數(shù)據(jù)傳輸。NAKALL關(guān)閉NAK功能,用NAK響應(yīng)主控器請求,例如在復(fù)位端點(diǎn)FIFO時(shí),為了保證復(fù)位正常,防止主控器請求的干擾,先寫入0x80,然后復(fù)位端點(diǎn),最后寫入0x00,使能請求響應(yīng)。EP3EP0,1復(fù)位對應(yīng)的端點(diǎn)緩沖區(qū),其中EP3EP0分別對應(yīng)端點(diǎn)EP8,EP6,EP4,E
18、P2。34 FIFOPINPOLAR(E609):控制引腳極性設(shè)置寄存器Slave FIFO引腳極性設(shè)置:0低有效,1高有效。提示:PF極性沒有提供寄存器設(shè)置,為高有效。35 EPxCFG(E610:E615):端點(diǎn)2,4,6,8配置VALID0端點(diǎn)無效,1端點(diǎn)有效DIR端點(diǎn)方向,=OUT方向,1=IN方向,默認(rèn)端點(diǎn)2,4為IN,端點(diǎn)6,8為OUTTYPE1,TYPE0端點(diǎn)類型,見表3.4SIZE緩沖區(qū)大?。▋H端點(diǎn)和端點(diǎn)),=512字節(jié),=1024字節(jié)BUF1,BUF0端點(diǎn)緩沖區(qū)個(gè)數(shù)(僅端點(diǎn)和端點(diǎn)6),見表.53 6 EPxFIFOCFG(E618:E61B):端點(diǎn)FIFO配置寄存器INFM1
19、:FIFO狀態(tài)標(biāo)志是否提前一個(gè)字節(jié)有效選擇,IN端點(diǎn)滿減,使能,非使能。OEP1:FIFO狀態(tài)標(biāo)志是否提前一個(gè)字節(jié)有效選擇,OUT端點(diǎn)空加1,使能,非使能。AUTOOUT:在前面,我們說Slave FIFO方式下的數(shù)據(jù)傳輸過程不需要FX2固件的參與,實(shí)際上是不確切的,應(yīng)該說,F(xiàn)X2固件可以不參與數(shù)據(jù)傳輸過程,也可以參與。AUTOOUT即可設(shè)置。如果設(shè)置AUTOOUT為1,則就如上面所說的,F(xiàn)X2固件只需要完成初始化工作,真正的數(shù)據(jù)傳輸是不需要FX2固件的參與的,具體的說,當(dāng)FX2從主機(jī)收到一包數(shù)據(jù)時(shí),外部邏輯即可看到FIFO端點(diǎn)緩沖區(qū)狀態(tài)的改變,然后從中取數(shù)。如果設(shè)置AUTOOUT為0,則數(shù)據(jù)
20、傳輸過程就需要FX2參與了,此時(shí)當(dāng)FX2從主機(jī)收到一包數(shù)據(jù)時(shí),F(xiàn)IFO端點(diǎn)緩沖區(qū)狀態(tài)的改變并不會立刻在端口顯現(xiàn),而是固件先看到FIFO端點(diǎn)狀態(tài)的改變,此時(shí),F(xiàn)X2固件可以做三件事情:a向OUTPKTEND中的SKIP位寫0,使FIFO端點(diǎn)狀態(tài)的改變在端口顯現(xiàn),從而使外部邏輯可以從FIFO端點(diǎn)中讀取數(shù)據(jù);b向OUTPKTEND中的SKIP位寫1,丟掉這包數(shù)據(jù),這樣就相當(dāng)于主機(jī)從來就沒有發(fā)送這一包數(shù)據(jù),外部邏輯當(dāng)然也不能從FIFO端點(diǎn)中讀到這一包數(shù)據(jù)了;c從新編輯這一包數(shù)據(jù),設(shè)置完全重寫整個(gè)包的數(shù)據(jù),再寫EPxBC寄存器,把數(shù)據(jù)傳給外部邏輯。在FX2復(fù)位之后,如果其OUT端點(diǎn)緩沖區(qū)內(nèi)有一包數(shù)據(jù)未處
21、理,這包數(shù)據(jù)并不會自動傳給外部邏輯。所以,為保證OUT端點(diǎn)緩沖區(qū)內(nèi)沒有未處理數(shù)據(jù),在reset FX2后,要清空一下OUT端點(diǎn)緩沖區(qū),具體做法就是向SKIP位寫1(OUT端點(diǎn)緩沖區(qū)有幾個(gè)緩沖區(qū)就寫幾次)。AUTOIN:Auto IN和Auto OUT有一點(diǎn)不同,在Auto OUT里,包的大小只能是512或1024,而在Auto IN里,包的大小可以任意設(shè)定,甚至可以是0字節(jié),這可以通過EPxAUTOINLENTH/L設(shè)置。 和AUTOOUT類似,當(dāng)設(shè)置AUTOIN 0時(shí),F(xiàn)X2固件可以傳輸,丟棄,修改外部邏輯傳過來的數(shù)據(jù),這通過向INPTKEND寄存器的SKIP寫不同的值實(shí)現(xiàn)。ZEROLENI
22、N:是否允許傳輸0字節(jié),1使能,非使能。WORDWIDE:8 Bit,16 Bit選擇。當(dāng)選擇8 Bit模式時(shí),Port B將是FD7:0;當(dāng)選擇16 Bit模式時(shí),Port D將是FD15:8,1則為位,則為位。37 EPxAUTOINLENH/L(E620:E627):端點(diǎn),4,6,8AUTOIN長度設(shè)置(僅IN端點(diǎn)有效)設(shè)置AUTOIN時(shí)自動傳輸?shù)陌笮。ㄗ⒁?,不能大于IN端點(diǎn)的緩沖區(qū)的大小)。說明:PL10僅端點(diǎn)2和有效38 EPxFIFOPFH/L(E630:E637):FIFO可編程PF狀態(tài)長度設(shè)置DECIS0小于等于門限值PF有效,大于等于門限值PF有效PKSTAT1. OUT端
23、點(diǎn)FIFO:門限值為PFC12:0設(shè)置,當(dāng)FIFO長度小于等于門限值(DECIS=0),或者FIFO長度大于等于門限值(DECIS=1),則PF有效。2. IN端點(diǎn)FIFO,且PKTSTAT=1:門限值為PFC9:03. IN端點(diǎn)FIFO,且PKTSTAT=0:門限值由兩部分組成:PKTS2:0(數(shù)據(jù)包)再加上PFC9:0(當(dāng)前數(shù)據(jù)長度)。解釋:對于OUT包,極限存儲在PFC12:0中,在整個(gè)FIFO緩沖區(qū)中的數(shù)據(jù)數(shù)目少于等于(DECIS0)或大于等于(DECIS1)這個(gè)極限時(shí),PF將有效。對于IN包,當(dāng)PKTSTAT1時(shí),極限存儲在兩部分:PKTS2:0存儲極限包數(shù)(已經(jīng)交給SIE但未傳給主
24、機(jī)的包數(shù)),PFC9:0存儲極限字節(jié)數(shù)(正在編輯的包里的字節(jié)數(shù))。在整個(gè)FIFO緩沖區(qū)中的數(shù)據(jù)數(shù)目少于等于(DECIS0)或大于等于(DECIS1)這個(gè)極限時(shí),PF將有效。39 INPKTEND(E648):結(jié)束IN傳輸SKIP當(dāng)ENH_PKT(REVCTL寄存器bit0)為1時(shí),0表示自動“分配”一個(gè)IN緩沖區(qū),1表示將跳過一個(gè)IN緩沖區(qū)EP3,EP2,EP1,EP0代替PKTEND引腳功能,軟件強(qiáng)行結(jié)束IN端點(diǎn)8,6,4,2 IN數(shù)據(jù)傳輸,傳輸短包。310 OUTPKTEND(E649):強(qiáng)行結(jié)束OUT傳輸寄存器SKIP當(dāng)ENH_PKT(REVCTL寄存器bit0)為1時(shí),0表示自動“分配
25、”一個(gè)OUT緩沖區(qū),1表示將跳過一個(gè)OUT緩沖區(qū)EP3,EP2,EP1,EP0代替EPxBLH.7=1引腳功能,軟件強(qiáng)行結(jié)束OUT端點(diǎn)8,6,4,2數(shù)據(jù)傳輸。311 EPxFIFOIE和EPxFIFOIRQ(E652:E657):端點(diǎn)FIFO中斷(INT4)使能和請求EDGPFPF中斷觸發(fā)沿,0上升沿觸發(fā),下降沿觸發(fā)PF使能端點(diǎn)FIFO PF中斷,非使能EF使能端點(diǎn)FIFO EF中斷,非使能FF使能端點(diǎn)FIFO FF中斷,非使能PF0無PF中斷,有PF中斷EF0無EF中斷,有EF中斷PF0無FF中斷,有FF中斷312PORTACFG:端口A配置置1使能端口A復(fù)用引腳,雖然SLCS出現(xiàn)在PORT
26、ACFG.6的位置上,當(dāng)IFCFG1:0=11時(shí),PORTA.7復(fù)用為SLCS,F(xiàn)LAGD也出現(xiàn)在PORTA.7引腳上,當(dāng)PORTACFG.7置位時(shí),PORTA.7復(fù)用為FLAGD輸出,當(dāng)PORTACFG.6和PORTACFG.7均為1,則PORTA.7復(fù)用為FLAGD。所以PORTACFG7:6=01時(shí),PORTA.7復(fù)用為SLCS。313 EPxFIFOBCH EPxFIFOBCL(E6AB:E6B2):端點(diǎn)FIFO計(jì)數(shù)當(dāng)前端點(diǎn)緩沖區(qū)中已有的數(shù)據(jù)數(shù)目。說明:端點(diǎn)2最大緩沖區(qū)計(jì)數(shù)BC12:0,為4096字節(jié)。端點(diǎn)6最大緩沖區(qū)計(jì)數(shù)BC11:0,為2048字節(jié)。端點(diǎn)4和8最大緩沖區(qū)計(jì)數(shù)BC10:
27、0,為1024字節(jié)。314 EP2468FIFOFLAG(SFR AB:SFR AC)和EPxFIFOFLGS(E6A7:E6AA):端點(diǎn)FIFO狀態(tài)標(biāo)志寄存器315其它通用寄存器CPUCS(E600):PORTCSTB:128腳或100腳的RD,WR輸出使能。CLKSPD1,CLKSPD0:CPU頻率選擇,00:12MHz(默認(rèn));01:24MHz;10:48MHz;11:Reserved。CLKINV:CLKOUT反轉(zhuǎn)選擇。CLKOE:CLKOUT輸出使能。REVCTL(E608):正常情況下,簡單地設(shè)置DYN_OUT和ENH_PKT位為1即可。四、同步slave fifo測試操作指南41
28、安裝軟件包第一次使用時(shí),首先要安裝CYPRESS開發(fā)包,安裝完畢后,在目錄“windowssystem32drivers”中有一個(gè)文件ezusb.sys,用驅(qū)動程序目錄下的ezusb.sys將其代替,兩個(gè)驅(qū)動程序文件的區(qū)別是,后者將緩沖區(qū)的大小擴(kuò)展為6M字節(jié),詳見驅(qū)動代碼。圖4.142同步寫FIFO測試插上開發(fā)板后,系統(tǒng)默認(rèn)采用USB接口供電,PC上安裝好下載線,并將下載線與開發(fā)板FPGA的JTAG下載口連接好,將FPGA程序下載到配置芯片中或內(nèi)部flash,打開XILINX的編譯軟件ISE 10.1,“相應(yīng)目錄SPARTAN6_USB_testFIFIO_WRUSB_SLAVE_LX16_W
29、R”下的.ise工程項(xiàng)目文件打開,將相應(yīng)的bit文件或者.mcs文件下載到FPGA中。接著打開CYPRESS EZUSB控制面板,見圖4.3,將“相應(yīng)目錄/固件源代碼/fw”目錄下的固件程序slavefifo.hex,通過USB接口下載到FX2中,下載成功后,提示slave fifo設(shè)備安裝成功。圖4.3下載完FPGA程序與固件程序后,就可以通過應(yīng)用程序進(jìn)行USB傳輸測試,同步寫FIFO測試中,F(xiàn)PGA程序內(nèi)部生成一個(gè)16位遞增計(jì)數(shù)器,寫入FX2 FIFO中,并通過FX2發(fā)送給PC,如果FX2內(nèi)部FIFO滿,則計(jì)數(shù)器停止計(jì)數(shù),非滿則計(jì)數(shù)并寫入FX2的FIFO中。應(yīng)用程序位于相應(yīng)目錄SPARTA
30、N6_USB_testFIFIO_WRApptestRelease目錄下.,打開應(yīng)用程序界面如圖4.4,打開應(yīng)用程序后,首先在下面文本顯示框中,出現(xiàn)“打開設(shè)備成功”的提示,接下來點(diǎn)擊界面上啟動讀線程,在文本框中開始顯示測試結(jié)果(包括測試速度,傳輸字節(jié)與花費(fèi)時(shí)間),并在上面顯示通過的包數(shù)與出現(xiàn)的錯(cuò)誤情況。點(diǎn)擊“讀測試”可以在當(dāng)前目錄下保存讀到到的測試數(shù)據(jù),并且可以在Ultraedit編輯軟件下打開.bin數(shù)據(jù)文件,查看16位計(jì)數(shù)器計(jì)數(shù)數(shù)據(jù)是否完整,從而測試數(shù)據(jù)傳輸中是否有數(shù)據(jù)丟失,如圖4.5。圖4.4圖4.5根據(jù)主機(jī)主板不同,測試速度也不一樣,一般數(shù)據(jù)傳輸可以在40MB/S左右。注意:1、 US
31、B測試在USB2.0主板上進(jìn)行。2、 如果主機(jī)USB口通過PCI卡擴(kuò)展出來的,將影響測試速度。43同步讀FIFO測試同步讀FIFO測試中,應(yīng)用程序?qū)?shù)據(jù)發(fā)送到FX2 FIFO中,F(xiàn)PGA讀取FX2 FIFO數(shù)據(jù),并將16位數(shù)據(jù)發(fā)送到FPGA IO口上。將“相應(yīng)目錄D:SPARTAN6_USB_testFIFO_RDUSB_SLAVE_LX_RD”目錄下,FPGA文件bit或者mcs下載到FPGA中,相應(yīng)操作與讀FIFO模式基本相同,然后通過CYPRESS EZUSB控制面板,將“相應(yīng)目錄/SYN同步方式/固件源代碼/fw”目錄下,固件程序slavefifo.hex下載到FX2中。打開光盤相應(yīng)目
32、錄SPARTAN6_USB_testFIFO_RDApptestRelease”目錄下的應(yīng)用程序,見圖4.6,點(diǎn)擊“寫測試”按鈕,通過示波器可以觀測到開發(fā)板的擴(kuò)展插糟中的信號,開發(fā)板上的信號定義詳見原理圖,以上接口將會出現(xiàn)一段時(shí)間的矩形波,同時(shí)LED燈也會顯示FIFO端點(diǎn)的空滿情況。圖4.6五、紅色颶風(fēng)II開發(fā)板USB2FPGA軟件設(shè)計(jì)51 68013固件程序設(shè)計(jì)void TD_Init( void )部分代碼注釋 /時(shí)鐘設(shè)置/CPUCS = 0x02; /12MHZ CLKOUT ENALBE /CPUCS = 0x0a; /24MHZ CLKOUT ENALBE CPUCS = 0x12;
33、 /48MHZ CLKOUT ENALBE IFCONFIG =0x43;/使用外部時(shí)鐘,IFCLK輸入不反向SYNCDELAY;EP2CFG=0xA0; /需要設(shè)定為四緩沖,每個(gè)緩沖區(qū)大小為512字節(jié)SYNCDELAY;EP4CFG=0x00;SYNCDELAY;EP6CFG=0xE0;SYNCDELAY;EP8CFG=0x00;SYNCDELAY;FIFORESET = 0x80; / activate NAK-ALL to avoid race conditionsSYNCDELAY; / see TRM section 15.14FIFORESET = 0x02; / reset, F
34、IFO 2SYNCDELAY; / FIFORESET = 0x06; / reset, FIFO 6SYNCDELAY; / FIFORESET = 0x00; / deactivate NAK-ALLSYNCDELAY;PINFLAGSAB = 0xE6; / FLAGA - fixed EP6PF, FLAGB - fixed EP6FFSYNCDELAY;PINFLAGSCD = 0xf8; / FLAGC - fixed EP2EF, FLAGD - reservedSYNCDELAY;PORTACFG |= 0x00; /0x40; / SLCS, set alt. func. o
35、f PA7 pinSYNCDELAY;FIFOPINPOLAR = 0x00; / all signals active low,SYNCDELAY; OEA|=0x0F; /小于64字節(jié)有效 /EP6FIFOPFH=0x00; /DEIS PKSTAT PK2 PK1 PK0 0 PFC9 PFC8 /EP6FIFOPFL=0x40; /PFC7 PFC6 PFC5 PFC4 PFC3 PFC2 PFC1 PFC0/ handle the case where we were already in AUTO mode.EP2FIFOCFG = 0x01; / AUTOOUT=0, WORDW
36、IDE=1SYNCDELAY;EP2FIFOCFG = 0x11; / AUTOOUT=1, WORDWIDE=1SYNCDELAY;EP6FIFOCFG = 0x09; / AUTOIN=1, ZEROLENIN=0, WORDWIDE=1SYNCDELAY;52 FPGA源代碼設(shè)計(jì)同步讀寫FPGA代碼詳見光盤測試程序功能是,配合CY68013的slave fifo接口時(shí)序,完成接收從主機(jī)下傳的60Kbyte(61440byte)數(shù)據(jù),寫入板上SRAM里,然后從板上SRAM中讀出,再上傳至主機(jī)。整個(gè)傳輸過程通過CY68013的slave fifo來交互。狀態(tài)機(jī)包括:IDLE=H0,READ_
37、EVENT=H1,POINT_TO _OUT_FIFO=H2,DATA_READY=H3,READ_INTERVAL=H4,READ=H5,READ_END=H6,WRITE_EVENT=H7,POINT_TO_IN_FIFO=H8,WRITE_READY=H9,WRITE=HAWRITE_END=HB,IDLE:整個(gè)操作過程(包括讀SLAVE FIFO和寫SLAVE FIFO)的入口。對相關(guān)的寄存器進(jìn)行初始化,然后轉(zhuǎn)入READ_EVENT狀態(tài),開始讀SLAVE FIFO操作。READ_EVENT:把u_addr1:0置為b00,指向輸出FIFO(對應(yīng)端點(diǎn)6),然后轉(zhuǎn)入POINT_TO_OUT
38、_FIFO狀態(tài)。 POINT_TO_OUT_FIFO:判斷u_flagc是否為高(u_flagc為高指示輸出FIFO為空,即輸出FIFO中有數(shù)據(jù)),如果為高,則啟動讀過程,把u_sloe置為低,轉(zhuǎn)入DATA_READY狀態(tài),第一個(gè)16bit數(shù)據(jù)出現(xiàn)在總線上;否則說明輸出FIFO中無數(shù)據(jù),等待。DATA_READY:判斷u_flagc是否為高,如果為高,把u_slrd拉低,繼續(xù)讀取下16bit數(shù)據(jù)。同時(shí)為把上一16bit數(shù)據(jù)寫入SRAM做準(zhǔn)備(主要是SRAM的三總線),同時(shí)轉(zhuǎn)入READ狀態(tài),否則轉(zhuǎn)入POINT_TO_OUT_FIFO,等待下一次讀取過程。READ:把上一16bit數(shù)據(jù)寫入SRAM,同時(shí)把u_slrd拉高,當(dāng)前16bit數(shù)據(jù)讀取結(jié)束。判斷是否是60Kbyte數(shù)據(jù),如果不是,則轉(zhuǎn)入DATA_READY狀態(tài),繼續(xù)讀操作;否則轉(zhuǎn)入READ_END狀態(tài),讀操作結(jié)束。READ_END:把相關(guān)寄存器置為初始態(tài),轉(zhuǎn)入WRITE_EVENT狀態(tài),開始寫操作。POINT_TO_IN_FIFO:為從SRAM中讀取數(shù)據(jù)作準(zhǔn)備,轉(zhuǎn)入WRITE_READY狀態(tài)。WRITE_READY:判斷u_flagb是否為高(u_flagb為高指示輸入F
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市安全設(shè)施包工不包料施工管理協(xié)議3篇
- 2025年度戰(zhàn)略合作合同合作目標(biāo)與具體合作內(nèi)容3篇
- 二零二五年度城市基礎(chǔ)設(shè)施建設(shè)項(xiàng)目貸款合同6篇
- 課程設(shè)計(jì)區(qū)域標(biāo)志牌
- 綜合布線課程設(shè)計(jì)酒店
- 二零二五年度新型廠房出租安全管理合同2篇
- 2025年演講有創(chuàng)意的自我介紹(2篇)
- 2025年幼兒園中秋節(jié)演講稿例文(2篇)
- 軸承鍛造工藝課程設(shè)計(jì)
- 安全“零隱患”抵押責(zé)任制模版(2篇)
- 品管圈QCC質(zhì)量持續(xù)改進(jìn)案例胃腸外科-落實(shí)胃腸腫瘤患者術(shù)后早期下床活動PDCA
- 人員密集場所安全風(fēng)險(xiǎn)源辨識清單
- GB/T 39335-2020信息安全技術(shù)個(gè)人信息安全影響評估指南
- 比較文學(xué)概論馬工程課件 第6章
- GB/T 19631-2005玻璃纖維增強(qiáng)水泥輕質(zhì)多孔隔墻條板
- GB/T 11352-2009一般工程用鑄造碳鋼件
- 全過程人民民主學(xué)習(xí)心得體會
- 冠心病診斷與治療課件
- 2023年上海期貨交易所招聘筆試題庫及答案解析
- 新疆少數(shù)民族發(fā)展史課件
- 工程監(jiān)理資料移交單
評論
0/150
提交評論