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