FT245BM與FPGA的USB接口電路設(shè)計
USB總線因其傳輸速度快、占用資源少以及真正的即插即用等諸多優(yōu)點(diǎn),受到了廣大開發(fā)者的青睞,已經(jīng)成為很多計算機(jī)設(shè)備的一種基本配置。目前被廣泛采用的USB設(shè)備開發(fā)方案主要有以下兩種(1)利用USB設(shè)備端接口芯片加微控制器結(jié)構(gòu)。如國內(nèi)用的比較多的Philips公司的PDIUSBD12/ISP1581等。(2)采用USB單片機(jī)。采用這兩種方案要求開發(fā)者徹底理解USB協(xié)議的細(xì)節(jié),并編寫出固件程序。固件的運(yùn)行要占用微控制器的時間和空間資源,實際通信效率不會很高。也有人用FPGA實現(xiàn)固件的功能,但這種方案開發(fā)和調(diào)試的難度很大。本人在實際工作中用FPGA外部直接連接一片USB協(xié)議芯片F(xiàn)T245BM,實現(xiàn)了FPGA與PC機(jī)的USB通信,該方法不用微控制器,減少了元器件的個數(shù),并且占用FPGA資源很少,F(xiàn)PGA仍然可以實現(xiàn)其他邏輯功能,系統(tǒng)設(shè)計的靈活性很大。
關(guān)于FT245BM的內(nèi)部結(jié)構(gòu)及詳細(xì)地引腳介紹讀者可以參考其他相關(guān)資料,在此僅對與本設(shè)計相關(guān)的內(nèi)容作一個介紹。FT245BM內(nèi)含兩個FIFO數(shù)據(jù)緩沖區(qū),一個是128字節(jié)的接收緩沖區(qū),另一個是384字節(jié)的發(fā)送緩沖區(qū)。它們用作USB 數(shù)據(jù)與并行I/O口數(shù)據(jù)的交換緩沖區(qū)。FIFO實現(xiàn)與外界(微控制器、FPGA或其它器件)的接口,主要通過8根數(shù)據(jù)線D0~D7、讀寫控制線RD#和 WR#以及FIFO發(fā)送緩沖區(qū)空標(biāo)志TXE#和FIFO接收緩沖區(qū)非空標(biāo)志RXF來完成數(shù)據(jù)交互。TXE#為低表示當(dāng)前FIFO發(fā)送緩沖區(qū)為空,為高表示當(dāng)前FIFO發(fā)送緩沖區(qū)滿或者正在存儲前一個字節(jié),禁止向緩沖區(qū)中寫數(shù)據(jù)。RXF#為低表示當(dāng)前FIFO的接收緩沖區(qū)非空。RD#信號由低變高將從 FIFO緩沖區(qū)中讀取數(shù)據(jù)。當(dāng)RD#變低時將數(shù)據(jù)送到數(shù)據(jù)總線。RXF#為高不能從FIFO讀數(shù)據(jù)。讀寫時序見圖1和圖2。
FT245BM與FPGA的接口電路設(shè)計
硬件電路設(shè)計
圖3是FT245BM的USB與FPGA的接口電路,F(xiàn)PGA選用ALTERA EPF1K50TC-144,其中D0~D7是FT245BM與FPGA交換數(shù)據(jù)的數(shù)據(jù)總線,USB_RD#、USB_WR、USB_TXE#、USB_RXF#是相關(guān)的控制總線。