




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、紅色颶風II開發板USB2FPGA實驗指導(ver1.0)Red Logic工作室二六年四月三日目錄第一章FX2特性介紹.311介紹.312結構.313特征.4第二章Slave FIFO傳輸.521概述.522硬件連接.523 Slave FIFO的幾種傳輸方式.6231 同步Slave FIFO寫.6232 同步Slave FIFO讀.9233異步Slave FIFO寫.11234異步Slave FIFO讀.12第三章 寄存器設置.1531 IFCONFIG.1532 PINFLAGSAB/CD.1633 FIFORESET.1734 FIFOPINPOLAR.1835 EPxCFG.183
2、6 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測試.3044同步讀寫FIFO測試.31第五章 紅色颶風II開發板USB2FPGA軟件設計.3351 68013
3、固件程序設計.3352 FPGA源代碼設計35第六章 USB2FPGA硬件原理圖.37第七章 改板后注意的問題.37附錄1 版本歷史39一FX2特性介紹11介紹Cypress Semiconductor公司的EZUSB FX2是世界上第一款集成USB2.0的微處理器,它集成了USB2.0收發器、SIE(串行接口引擎)、增強的8051微控制器和可編程的外圍接口。FX2這種獨創性結構可使數據傳輸率達到56Mbytes/s,即USB2.0允許的最大帶寬。在FX2中,智能SIE可以硬件處理許多USB1.1和USB2.0協議,從而減少了開發時間和確保了USB的兼容性。GPIF(General Progr
4、ammable Interface)和主/從端點FIFO(8位或16位數據總線)為ATA、UTOPIA、EPP、PCMCIA和DSP等提供了簡單和無縫連接接口。12結構CY7C68013結構圖如圖1所示。它有三種封裝形式:56SSOP,100TQFP和128TQFP。13特征: 內嵌480MBit/s的收發器,鎖相環PLL,串行接口引擎SIE集成了整個USB 2.0協議的物理層。 為適應USB 2.0的480MBit/s的速率,FIFO端點可配置成2,3,4個緩沖區。 內嵌可工作在48MHz的增強型8051,它具有以下特征:- 具有256Byte的寄存器空間,兩個串口,三個定時器,兩個數據指針
5、。- 四個機器周期(工作在48MHz下時為83.3ns)即組成一個指令周期。- 特殊功能寄存器(包括I/O口控制寄存器)可高速訪問。- 應用USB向量中斷,具有極短的ISR響應時間。- 只用作USB事務管理,控制,不參與數據傳輸,較好地解決了USB高速模式的帶寬問題。 “軟配置”USB固件可由USB總線下載,片上不需集成ROM。 擁有四個FIFO接口,可工作在內部或外部時鐘下。端點和FIFO接口的應用使外部邏輯和USB總線可高速連接。 內嵌通用可編程接口GPIF,它是一個狀態機,可充當主控制器,提供外部邏輯和USB總線的“無膠粘貼”。 一種單片USB 2.0外設解決方案,不需要外部的協議物理層
6、,FX2把所有的功能集成在一個芯片上。二、Slave FIFO傳輸21概述當有一個與FX2芯片相連的外部邏輯只需要利用FX2做為一個USB 2.0接口而實現與主機的高速通訊,而它本身又能夠提供滿足Slave FIFO要求的傳輸時序,可以做為Slave FIFO主控制器時,即可考慮用此傳輸方式。Slave FIFO傳輸的示意圖如下:主機收發器和SIEFIFO端點緩沖區8051固件外部邏 輯SlaveFIFO從控制器在這種方式下,FX2內嵌的8051固件的功能只是配置Slave FIFO相關的寄存器以及控制FX2何時工作在Slave FIFO模式下。一旦8051固件將相關的寄存器配置完畢,且使自身
7、工作在Slave FIFO模式下后,外部邏輯(如FPGA)即可按照Slave FIFO的傳輸時序,高速與主機進行通訊,而在通訊過程中不需要8051固件的參與。22硬件連接(標準)在Slave FIFO方式下,外部邏輯與FX2的連接信號圖如下:IFCLK:FX2輸出的時鐘,可做為通訊的同步時鐘;FLAGA,FLAGB,FLAGC,FLAGD:FX2輸出的FIFO狀態信息,如滿,空等;SLCS:FIFO的片選信號,外部邏輯控制,當SLCS輸出高時,不可進行數據傳輸;SLOE:FIFO輸出使能,外部邏輯控制,當SLOE無效時,數據線不輸出有效數據;SLRD:FIFO讀信號,外部邏輯控制,同步讀時,F
8、IFO指針在SLRD有效時的每個IFCLK的上升沿遞增,異步讀時,FIFO讀指針在SLRD的每個有效無效的跳變沿時遞增;SLWR:FIFO寫信號,外部邏輯控制,同步寫時,在SLWR有效時的每個IFCLK的上升沿時數據被寫入,FIFO指針遞增,異步寫時,在SLWR的每個有效無效的跳變沿時數據被寫入,FIFO寫指針遞增;PKTEND:包結束信號,外部邏輯控制,在正常情況下,外部邏輯向FX2的FIFO中寫數,當寫入FIFO端點的字節數等于FX2固件設定的包大小時,數據將自動被打成一包進行傳輸,但有時外部邏輯可能需要傳輸一個字節數小于FX2固件設定的包大小的包,這時,它只需在寫入一定數目的字節后,聲明
9、此信號,此時FX2硬件不管外部邏輯寫入了多少字節,都自動將之打成一包進行傳輸;FD15:0:數據線;FIFOADR1:0:選擇四個FIFO端點的地址線,外部邏輯控制。23 Slave FIFO的幾種傳輸方式231 同步Slave FIFO寫同步Slave FIFO寫的標準連接圖如下:同步Slave FIFO寫的標準時序如下:IDLE:當寫事件發生時,進狀態1;狀態1:使FIFOADR1:0指向IN FIFO,進狀態2;狀態2:如FIFO滿,在本狀態等待,否則進狀態3;狀態3:驅動數據到數據線上,使SLWR有效,持續一個IFCLK周期,進狀態4;狀態4:如需傳輸更多的數,進狀態2,否則進狀態ID
10、LE。狀態跳轉示意圖如下:幾種情況的時序圖示意如下(FULL,EMPTY,SLWR,PKTEND均假定低有效):圖示FIFO中本來沒有數據,外部邏輯寫入第一個數據時的情況。圖示假定FX2設定包大小為512字節,外部邏輯向FIFO端點中寫入的數據達512字節時的情況。此時FX2硬件自動將已寫入的512字節打成一包準備進行傳輸,這個動作就和在普通傳輸中,FX2固件向FIFO端點中寫入512字節后,把512這個數寫入EPxBC中一樣,只不過這個過程是由硬件自動完成的。在這里可以看出“FX2固件不參與數據傳輸過程”的含義了。外部邏輯只須按上面的時序圖所示的時序向FIFO端點中一個一個字節(或字)地寫數
11、,寫到一定數量,FX2硬件自動將數據打包傳輸,這一切均不需固件的參與,由此實現高速數據傳輸。圖示的是FIFO端點被寫滿時的情況。232 同步Slave FIFO讀:同步Slave FIFO讀的標準連接圖如下:同步Slave FIFO讀的標準時序如下:IDLE:當讀事件發生時,進狀態1;狀態1:使FIFOADR1:0指向OUT FIFO,進狀態2;狀態2:使SLOE有效,如FIFO空,在本狀態等待,否則進狀態3;狀態3:從數據線上讀數,使SLRD有效,持續一個IFCLK周期,以遞增FIFO讀指針,進狀態4;狀態4:如需傳輸更多的數,進狀態2,否則進狀態IDLE。狀態跳轉示意圖如下:幾種情況的時序
12、圖示意如下(FULL,EMPTY,SLRD,SLOE均假定低有效):圖示正常情況時的時序。圖示FIFO被讀空時的情況。233 異步Slave FIFO寫:異步Slave FIFO寫的標準連接圖如下:異步Slave FIFO寫的標準時序如下:IDLE:當寫事件發生時,進狀態1;狀態1:使FIFOADR1:0指向IN FIFO,進狀態2;狀態2:如FIFO滿,在本狀態等待,否則進狀態3;狀態3:驅動數據到數據線上,使SLWR有效,再無效,以使FIFO寫指針遞增,進狀態4;狀態4:如需傳輸更多的數,進狀態2,否則進狀態IDLE。狀態跳轉示意圖如下:幾種情況的時序圖示意如下(FULL,EMPTY,SL
13、WR,PKTEND均假定低有效):圖示FIFO中本來沒有數據,外部邏輯寫入第一個數據時的情況。234 異步Slave FIFO讀:異步Slave FIFO讀的標準連接圖如下:異步Slave FIFO讀的標準時序如下:IDLE:當讀事件發生時,進狀態1;狀態1:使FIFOADR1:0指向OUT FIFO,進狀態2;狀態2:如FIFO空,在本狀態等待,否則進狀態3;狀態3:使SLOE有效,使SLRD有效,從數據線上讀數,再使SLRD無效,以遞增FIFO讀指針,再使SLOE無效,進狀態4;狀態4:如需傳輸更多的數,進狀態2,否則進狀態IDLE。狀態跳轉示意圖如下:幾種情況的時序圖示意如下(FULL,
14、EMPTY,SLRD,SLOE均假定低有效):圖示正常情況時的時序。三、寄存器設置slave fifo模式下常用寄存器 IFCONFIGEPxFIFOPFH/LPINFLAGABPORTACFGPINFLAGCKINPKTENDFIFORESETEPxFLAGIEFIFOPINPOLAREPxFLAGIRQEPxCFGEPxFIFOBCH:LEPxFIFOCFGEPxFLAGSEPxAUTOINLENH:LEPxBUF31 IFCONFIG(E601):接口配置寄存器IFCLKSRC:FIFO時鐘內部/外部時鐘源選擇,0外部時鐘源,1內部時鐘源。3048MHZ:如選擇內部時鐘,30MHz/48
15、MHz頻率選擇,0 IFCLK時鐘30M,1 IFCLK時鐘48M。IFCLKOE:IFCLK時鐘輸出使能,0關閉,1打開。IFCLKPOL:IFCLK輸出反轉使能,0不反轉,1反轉。ASYNC:Slave FIFO同步/異步工作方式選擇,0同步,1異步。GSTATE:選擇是否將GSTATE2:0在PORTE2:0輸出,0關閉,1使能。IFCFG1:0:FX2 I/O端口模式選擇,也既是上面所說的FX2與外部邏輯傳輸方式的選擇。00:I/O方式;01:reserved;10:Slave FIFO方式;11:GPIF方式。32 PINFLAGSAB/CD(E602:E603):FLAGx引腳配置
16、寄存器FLAGA,FLAGB,FLAGC,FLAGD反映FIFO狀態選擇。每個腳有編址/固定兩種模式:如設為編址模式,則它們都反映FIFOADR1:0腳當前所指端點的狀態,其中,FLAGA反映“可編程極限”,FLAGB反映“滿”標志,FLAGC反映“空”標志,FLAGD不存在;如設為固定模式,它們均可任意設置成反映任意端點的任意標志,而不受限于FIFOADR1:0腳當前所指端點的狀態。Slave fifo模式中,用引腳FLAGAFLAGD來定義用端點FIFO的狀態,并可靈活編程來實現FLAGx設置,見表3.2說明:1 PF表示FIFO編程狀態,EF表示FIFO已空,FF表示FIFO已滿2 00
17、00為索引模式,其它為固定模式33 FIFORESET(E604):端點緩沖區復位寄存器將FIFO復位到初始狀態。具體過程是,寫0x80到此寄存器,NAK所有主機請求;寫0x02,0x04,0x06,0x08分別復位各個端點;寫0x00,結束復位過程。一般,在每一次開始進行slave FIFO或GPIF傳輸之前,先復位端點,再清空端點,然后即可進行數據傳輸。NAKALL關閉NAK功能,用NAK響應主控器請求,例如在復位端點FIFO時,為了保證復位正常,防止主控器請求的干擾,先寫入0x80,然后復位端點,最后寫入0x00,使能請求響應。EP3EP0,1復位對應的端點緩沖區,其中EP3EP0分別對
18、應端點EP8,EP6,EP4,EP2。34 FIFOPINPOLAR(E609):控制引腳極性設置寄存器Slave FIFO引腳極性設置:0低有效,1高有效。提示:PF極性沒有提供寄存器設置,為高有效。35 EPxCFG(E610:E615):端點2,4,6,8配置VALID0端點無效,1端點有效DIR端點方向,=OUT方向,1=IN方向,默認端點2,4為IN,端點6,8為OUTTYPE1,TYPE0端點類型,見表3.4SIZE緩沖區大小(僅端點和端點),=512字節,=1024字節BUF1,BUF0端點緩沖區個數(僅端點和端點6),見表.53 6 EPxFIFOCFG(E618:E61B):
19、端點FIFO配置寄存器INFM1:FIFO狀態標志是否提前一個字節有效選擇,IN端點滿減,使能,非使能。OEP1:FIFO狀態標志是否提前一個字節有效選擇,OUT端點空加1,使能,非使能。AUTOOUT:在前面,我們說Slave FIFO方式下的數據傳輸過程不需要FX2固件的參與,實際上是不確切的,應該說,FX2固件可以不參與數據傳輸過程,也可以參與。AUTOOUT即可設置。如果設置AUTOOUT為1,則就如上面所說的,FX2固件只需要完成初始化工作,真正的數據傳輸是不需要FX2固件的參與的,具體的說,當FX2從主機收到一包數據時,外部邏輯即可看到FIFO端點緩沖區狀態的改變,然后從中取數。如
20、果設置AUTOOUT為0,則數據傳輸過程就需要FX2參與了,此時當FX2從主機收到一包數據時,FIFO端點緩沖區狀態的改變并不會立刻在端口顯現,而是固件先看到FIFO端點狀態的改變,此時,FX2固件可以做三件事情:a向OUTPKTEND中的SKIP位寫0,使FIFO端點狀態的改變在端口顯現,從而使外部邏輯可以從FIFO端點中讀取數據;b向OUTPKTEND中的SKIP位寫1,丟掉這包數據,這樣就相當于主機從來就沒有發送這一包數據,外部邏輯當然也不能從FIFO端點中讀到這一包數據了;c從新編輯這一包數據,設置完全重寫整個包的數據,再寫EPxBC寄存器,把數據傳給外部邏輯。在FX2復位之后,如果其
21、OUT端點緩沖區內有一包數據未處理,這包數據并不會自動傳給外部邏輯。所以,為保證OUT端點緩沖區內沒有未處理數據,在reset FX2后,要清空一下OUT端點緩沖區,具體做法就是向SKIP位寫1(OUT端點緩沖區有幾個緩沖區就寫幾次)。AUTOIN:Auto IN和Auto OUT有一點不同,在Auto OUT里,包的大小只能是512或1024,而在Auto IN里,包的大小可以任意設定,甚至可以是0字節,這可以通過EPxAUTOINLENTH/L設置。 和AUTOOUT類似,當設置AUTOIN 0時,FX2固件可以傳輸,丟棄,修改外部邏輯傳過來的數據,這通過向INPTKEND寄存器的SKIP
22、寫不同的值實現。ZEROLENIN:是否允許傳輸0字節,1使能,非使能。WORDWIDE:8 Bit,16 Bit選擇。當選擇8 Bit模式時,Port B將是FD7:0;當選擇16 Bit模式時,Port D將是FD15:8,1則為位,則為位。37 EPxAUTOINLENH/L(E620:E627):端點,4,6,8AUTOIN長度設置(僅IN端點有效)設置AUTOIN時自動傳輸的包大小(注意,不能大于IN端點的緩沖區的大小)。說明:PL10僅端點2和有效38 EPxFIFOPFH/L(E630:E637):FIFO可編程PF狀態長度設置DECIS0小于等于門限值PF有效,大于等于門限值P
23、F有效PKSTAT1. OUT端點FIFO:門限值為PFC12:0設置,當FIFO長度小于等于門限值(DECIS=0),或者FIFO長度大于等于門限值(DECIS=1),則PF有效。2. IN端點FIFO,且PKTSTAT=1:門限值為PFC9:03. IN端點FIFO,且PKTSTAT=0:門限值由兩部分組成:PKTS2:0(數據包)再加上PFC9:0(當前數據長度)。解釋:對于OUT包,極限存儲在PFC12:0中,在整個FIFO緩沖區中的數據數目少于等于(DECIS0)或大于等于(DECIS1)這個極限時,PF將有效。對于IN包,當PKTSTAT1時,極限存儲在兩部分:PKTS2:0存儲極
24、限包數(已經交給SIE但未傳給主機的包數),PFC9:0存儲極限字節數(正在編輯的包里的字節數)。在整個FIFO緩沖區中的數據數目少于等于(DECIS0)或大于等于(DECIS1)這個極限時,PF將有效。39 INPKTEND(E648):結束IN傳輸SKIP當ENH_PKT(REVCTL寄存器bit0)為1時,0表示自動“分配”一個IN緩沖區,1表示將跳過一個IN緩沖區EP3,EP2,EP1,EP0代替PKTEND引腳功能,軟件強行結束IN端點8,6,4,2 IN數據傳輸,傳輸短包。310 OUTPKTEND(E649):強行結束OUT傳輸寄存器SKIP當ENH_PKT(REVCTL寄存器b
25、it0)為1時,0表示自動“分配”一個OUT緩沖區,1表示將跳過一個OUT緩沖區EP3,EP2,EP1,EP0代替EPxBLH.7=1引腳功能,軟件強行結束OUT端點8,6,4,2數據傳輸。311 EPxFIFOIE和EPxFIFOIRQ(E652:E657):端點FIFO中斷(INT4)使能和請求EDGPFPF中斷觸發沿,0上升沿觸發,下降沿觸發PF使能端點FIFO PF中斷,非使能EF使能端點FIFO EF中斷,非使能FF使能端點FIFO FF中斷,非使能PF0無PF中斷,有PF中斷EF0無EF中斷,有EF中斷PF0無FF中斷,有FF中斷312PORTACFG:端口A配置置1使能端口A復用
26、引腳,雖然SLCS出現在PORTACFG.6的位置上,當IFCFG1:0=11時,PORTA.7復用為SLCS,FLAGD也出現在PORTA.7引腳上,當PORTACFG.7置位時,PORTA.7復用為FLAGD輸出,當PORTACFG.6和PORTACFG.7均為1,則PORTA.7復用為FLAGD。所以PORTACFG7:6=01時,PORTA.7復用為SLCS。313 EPxFIFOBCH EPxFIFOBCL(E6AB:E6B2):端點FIFO計數當前端點緩沖區中已有的數據數目。說明:端點2最大緩沖區計數BC12:0,為4096字節。端點6最大緩沖區計數BC11:0,為2048字節。端
27、點4和8最大緩沖區計數BC10:0,為1024字節。314 EP2468FIFOFLAG(SFR AB:SFR AC)和EPxFIFOFLGS(E6A7:E6AA):端點FIFO狀態標志寄存器315其它通用寄存器CPUCS(E600):PORTCSTB:128腳或100腳的RD,WR輸出使能。CLKSPD1,CLKSPD0:CPU頻率選擇,00:12MHz(默認);01:24MHz;10:48MHz;11:Reserved。CLKINV:CLKOUT反轉選擇。CLKOE:CLKOUT輸出使能。REVCTL(E608):正常情況下,簡單地設置DYN_OUT和ENH_PKT位為1即可。四、同步sl
28、ave fifo測試操作指南41安裝軟件包第一次使用時,首先要安裝CYPRESS開發包,安裝完畢后,在目錄“windowssystem32drivers”中有一個文件ezusb.sys,用驅動程序目錄下的ezusb.sys將其代替,兩個驅動程序文件的區別是,后者將緩沖區的大小擴展為6M字節,詳見驅動代碼。圖4.142同步寫FIFO測試插上開發板后,系統默認采用USB接口供電,PC上安裝好下載線,并將下載線與開發板FPGA的AS下載口連接好,下載采用AS方式,將FPGA程序下載到配置芯片中,打開ALTERA的編譯軟件Quartus 5.0,將“相應目錄/SYN同步方式/寫FIFO”下的wr_fi
29、fo.qpf項目文件打開,界面見圖4.2,點擊“change file”,在彈出界面中選擇下載文件,將wr_fifo.pof下載到FPGA中。(也可以選擇JTAG方式下載到FPGA中,當然這時也可以選擇的文件類型有.sof文件格式)圖4.2接著打開CYPRESS EZUSB控制面板,見圖4.3,將“相應目錄/固件源代碼/fw”目錄下的固件程序slavefifo.hex,通過USB接口下載到FX2中,下載成功后,提示slave fifo設備安裝成功。圖4.3下載完FPGA程序與固件程序后,就可以通過應用程序進行USB傳輸測試,同步寫FIFO測試中,FPGA程序內部生成一個16位遞增計數器,寫入F
30、X2 FIFO中,并通過FX2發送給PC,如果FX2內部FIFO滿,則計數器停止計數,非滿則計數并寫入FX2的FIFO中。應用程序位于“相應目錄/SYN同步方式/寫FIFO/Apptest/Release”目錄下.,打開應用程序界面如圖4.4,打開應用程序后,首先在下面文本顯示框中,出現“打開設備成功”的提示,接下來點擊界面上啟動讀線程,在文本框中開始顯示測試結果(包括測試速度,傳輸字節與花費時間),并在上面顯示通過的包數與出現的錯誤情況。點擊“讀測試”可以在當前目錄下保存讀到到的測試數據,并且可以在Ultraedit編輯軟件下打開.bin數據文件,查看16位計數器計數數據是否完整,從而測試數
31、據傳輸中是否有數據丟失,如圖4.5。圖4.4圖4.5根據主機主板不同,測試速度也不一樣,一般數據傳輸可以在40MB/S左右。注意:1、 USB測試在USB2.0主板上進行。2、 如果主機USB口通過PCI卡擴展出來的,將影響測試速度。43同步讀FIFO測試同步讀FIFO測試中,應用程序將數據發送到FX2 FIFO中,FPGA讀取FX2 FIFO數據,并將16位數據發送到FPGA IO口上。將“相應目錄/SYN同步方式/讀FIFO/rd_fifo”目錄下,FPGA文件syn_rd_fifo.pof下載到FPGA中,相應操作與讀FIFO模式基本相同,然后通過CYPRESS EZUSB控制面板,將“
32、相應目錄/SYN同步方式/固件源代碼/fw”目錄下,固件程序slavefifo.hex下載到FX2中。打開光盤“相應目錄/SYN同步方式/讀FIFO/Apptest/Release”目錄下的應用程序,見圖4.6,點擊“寫測試”按鈕,通過示波器可以觀測到開發板的擴展插糟中的信號,開發板上的信號定義詳見原理圖,以上接口將會出現一段時間的矩形波,同時LED燈也會顯示FIFO端點的空滿情況。圖4.644同步讀寫FIFO測試測試基本原理:同步讀寫FIFO測試中,將60K數據寫入RAM(PC->USB2.0->FPGA->RAM),再將數據讀回(PC<-USB2.0<-FPG
33、A<-RAM),進行數據比較,測試數據傳輸可靠性,顯示測試速度。將“相應目錄/SYN同步方式/讀寫FIFO/rd_wr_fifo”目錄下,FPGA文件rd_wr_fifo.pof下載到FPGA中,相應操作與以上讀FIFO模式基本相同,然后通過CYPRESS EZUSB控制面板,將“相應目錄/SYN同步方式/固件源代碼/fw”目錄下,固件程序slavefifo.hex下載到FX2中。打開光盤“相應目錄/SYN同步方式/讀FIFO/Apptest/Release”目錄下的應用程序,見圖4.7,點擊“啟動BLK線程”按鈕,“通過”中顯示讀寫FIFO時正確次數,否則在“錯誤”中顯示錯誤次數,下面
34、文本框中顯示是單次讀寫速度。開發板上的信號定義詳見原理圖。圖4.7五、紅色颶風II開發板USB2FPGA軟件設計51 68013固件程序設計void TD_Init( void )部分代碼注釋 /時鐘設置/CPUCS = 0x02; /12MHZ CLKOUT ENALBE /CPUCS = 0x0a; /24MHZ CLKOUT ENALBE CPUCS = 0x12; /48MHZ CLKOUT ENALBE IFCONFIG =0x43;/使用外部時鐘,IFCLK輸入不反向SYNCDELAY;EP2CFG=0xA0; /需要設定為四緩沖,每個緩沖區大小為512字節SYNCDELAY;EP
35、4CFG=0x00;SYNCDELAY;EP6CFG=0xE0;SYNCDELAY;EP8CFG=0x00;SYNCDELAY;FIFORESET = 0x80; / activate NAK-ALL to avoid race conditionsSYNCDELAY; / see TRM section 15.14FIFORESET = 0x02; / reset, FIFO 2SYNCDELAY; / FIFORESET = 0x06; / reset, FIFO 6SYNCDELAY; / FIFORESET = 0x00; / deactivate NAK-ALLSYNCDELAY;P
36、INFLAGSAB = 0xE6; / FLAGA - fixed EP6PF, FLAGB - fixed EP6FFSYNCDELAY;PINFLAGSCD = 0xf8; / FLAGC - fixed EP2EF, FLAGD - reservedSYNCDELAY;PORTACFG |= 0x00; /0x40; / SLCS, set alt. func. of PA7 pinSYNCDELAY;FIFOPINPOLAR = 0x00; / all signals active low,SYNCDELAY; OEA|=0x0F; /小于64字節有效 /EP6FIFOPFH=0x00
37、; /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, WORDWIDE=1SYNCDELAY;EP2FIFOCFG = 0x11; / AUTOOUT=1, WORDWIDE=1SYNCDELAY;EP6FIFOCFG = 0x09; / AUTOIN=1, ZEROLENIN=0, WO
38、RDWIDE=1SYNCDELAY;52 FPGA源代碼設計同步讀寫FPGA代碼詳見光盤測試程序功能是,配合CY68013的slave fifo接口時序,完成接收從主機下傳的60Kbyte(61440byte)數據,寫入板上SRAM里,然后從板上SRAM中讀出,再上傳至主機。整個傳輸過程通過CY68013的slave fifo來交互。狀態機包括:IDLE=H0,READ_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
39、=H8,WRITE_READY=H9,WRITE=HAWRITE_END=HB,IDLE:整個操作過程(包括讀SLAVE FIFO和寫SLAVE FIFO)的入口。對相關的寄存器進行初始化,然后轉入READ_EVENT狀態,開始讀SLAVE FIFO操作。READ_EVENT:把u_addr1:0置為b00,指向輸出FIFO(對應端點6),然后轉入POINT_TO_OUT_FIFO狀態。 POINT_TO_OUT_FIFO:判斷u_flagc是否為高(u_flagc為高指示輸出FIFO為空,即輸出FIFO中有數據),如果為高,則啟動讀過程,把u_sloe置為低,轉入DATA_READY狀態,第
40、一個16bit數據出現在總線上;否則說明輸出FIFO中無數據,等待。DATA_READY:判斷u_flagc是否為高,如果為高,把u_slrd拉低,繼續讀取下16bit數據。同時為把上一16bit數據寫入SRAM做準備(主要是SRAM的三總線),同時轉入READ狀態,否則轉入POINT_TO_OUT_FIFO,等待下一次讀取過程。READ:把上一16bit數據寫入SRAM,同時把u_slrd拉高,當前16bit數據讀取結束。判斷是否是60Kbyte數據,如果不是,則轉入DATA_READY狀態,繼續讀操作;否則轉入READ_END狀態,讀操作結束。READ_END:把相關寄存器置為初始態,轉入WRITE_EVENT狀態,開始寫操作。POINT_TO_IN_FIFO:為從SRAM中讀取數據作準備,轉入WRIT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 7 Be Wise with Money Period 2 Reading 教學設計 2024-2025學年譯林版英語七年級上冊
- 2025年廣州入小學所需的租房合同辦理指南
- 二手房屋買賣合同修訂版
- 2025版產品代理合同范本
- 2025挖掘機轉讓合同樣本
- 家居裝修工程勞務合同
- 2025年廣東省采購合同樣本
- 《困境與機遇》課件
- 2025授權建設合同
- 2025年的技術許可合同范本
- 專題16.7 二次根式章末八大題型總結(拔尖篇)-八年級數學下冊(人教版)(解析版)
- 醫院物資采購管理暫行規定
- 2024年同等學力申碩-同等學力(政治學)筆試歷年真題薈萃含答案
- 初三勵志、拼搏主題班會課件
- 城市軌道交通的智能調度與運營優化
- 放射性金屬礦的輻射事故案例與防范
- 食品加工與檢驗實訓室建設方案
- 政府采購自查報告與政府采購問題整改措施
- 學校餐廳除蟲滅害記錄表
- 國開《Windows網絡操作系統管理》形考任務6-配置Web服務實訓
- 公主怎樣挖鼻屎(衛生習慣)-完整版課件
評論
0/150
提交評論