概述
本文主要介紹一種基于FPGA的FT232H接口通信開發(fā)方案。傳統(tǒng)的USB通信開發(fā)對工程人員的要求比較高,除了上層應用軟件以外,還需要掌握一定的USB傳輸協(xié)議、固件編程以及底層驅(qū)動等等。對于FPGA固件開發(fā)人員來說,我只關(guān)心數(shù)據(jù)如何可以正確的收發(fā),說白了就是給我說清楚接口交互時相關(guān)信號之間的時序關(guān)系即可,其他的內(nèi)容并不是這么關(guān)心。FTDI公司的FT232H應運而生,他把USB的相關(guān)協(xié)議封裝在芯片內(nèi)部,只把數(shù)據(jù)端口部分開發(fā)給工程開發(fā)人員。與市面上另外一款USB芯片(cypress的CY7C68013)相比,F(xiàn)T232H在模式配置上,有官方提供的工具軟件直接進行模式配置,而不需要像前者那樣,還要編寫模式配置的相關(guān)代碼,從而大大提高開發(fā)效率。
接口芯片F(xiàn)T232H
FT232H是一款單通道的高速USB轉(zhuǎn)UART/FIFO芯片,支持USB2.0協(xié)議。通過配套的軟件可以配置成不同的應用模式,如下圖所示:
FT232H的內(nèi)部結(jié)構(gòu)
從圖1中我們可以了解到,F(xiàn)T232H芯片內(nèi)部可以劃分為UTMI_PHY、USB_protocol and FIFO ctrol、Tx/Rx Buffer、MPSSE/Multi_purpose UART/FIFO controler以及EEPROM_interface這幾部分。其中MPSSE/Multi_purpose UART/FIFO controler是面向用戶設(shè)計的IO,通過配置成不同的模式,管腳對應的定義不一樣。
我們通過把FT232H配置成同步FIFO模式,已達到最快的傳輸速率。
FIFO模式下的拓撲結(jié)構(gòu)
軟件設(shè)計
芯片工作模式配置
FT232H在出廠的時候,默認是UART模式,配置長同步FIFO模式,需要通過官方提供的配置軟件FT_PROG進行配置,配置過程十分簡單,如下:
如上圖所示,配置過程大體上可以分為上述3個步驟。需要注意的是在進行第一步之前,PC上需要安裝好相應的驅(qū)動,才能夠識別出芯片;還有一個需要注意的地方是,Property中product_desc里面的值可以自己修改,但是上位機一定要與之對應,否則編寫的上位機軟件有可能打不開設(shè)備。
代碼設(shè)計
同步FIFO模式下的讀寫時序關(guān)系
發(fā)送端(FPGA--->USB--->PC)
通常來說,為了處理好異時鐘域數(shù)據(jù)傳輸問題,都會在FPGA端例化一個FIFO來作為與USB接口交互的緩存。在數(shù)據(jù)發(fā)送有個需要注意的地方,當發(fā)送速率比USB傳輸速率快,F(xiàn)T232H內(nèi)部緩存被填滿的時候(TXE#被拉高),會出現(xiàn)丟數(shù)據(jù)情況。在處理的時候需要特別注意一下。
我們畫一下相關(guān)時序就知道怎么回事了。
FIFO常規(guī)模式下時序圖
從圖中可以看出,F(xiàn)IFO的讀使能持續(xù)了5個clk,由于FIFO的輸出最少都有1個clk的延遲,所以這次數(shù)據(jù)傳輸只傳輸了4個有效數(shù)據(jù),剩下一個數(shù)據(jù)只能由下一次傳輸,當然這種情況,在傳輸流式的數(shù)據(jù)是沒有問題的,碰上我之前的項目,讀寫由上位機發(fā)起,并且讀寫的數(shù)據(jù)長度也由上位機決定的時候,就會出現(xiàn)上位機會少接收一個數(shù)據(jù)的現(xiàn)象。
那么有沒有辦法解決這種現(xiàn)象呢?答案是肯定的,我比較推薦的一種方法如下:
First_word Fall through模式的時序
將例化FIFO的時候,設(shè)置成First_word Fall through模式就可以了,至于這種模式是什么,請自行度娘腦補一下。
方法還有很多,只要時序?qū)Φ纳霞纯伞?/p>
接收端(PC—>USB--->FPGA)
接收端的設(shè)計比較簡單,這里就不展開論述了。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21954瀏覽量
613996 -
芯片
+關(guān)注
關(guān)注
459文章
52151瀏覽量
436017 -
通信
+關(guān)注
關(guān)注
18文章
6171瀏覽量
137362
原文標題:軟件設(shè)計
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【紫光同創(chuàng)國產(chǎn)FPGA教程】【第二十八章】USB雙向測速例程

UM232H-B是FT232H高速到串行/并行接口轉(zhuǎn)換器的開發(fā)模塊
FT232H單通道USB至串行/并行接口分線板開發(fā)模塊UM232H-B-WE
用于FT232H單通道USB至串行/并行接口分線板的開發(fā)模塊UM232H-B-NC
采用FT245BM和FPGA實現(xiàn)USB接口設(shè)計
采用FT245BM和FPGA實現(xiàn)USB接口設(shè)計
一種基于FPGA的光纖陀螺慣導系統(tǒng)溫控電路接口設(shè)計
基于FPGA技術(shù)的RS 232接口的時序邏輯設(shè)計實現(xiàn)
PIC32MX與FTDI FT232H接口如何同步并行
USB2.0高速至MPSSE SPI模塊VA800A-SPI是一個小型電子電路板
基于FT8U232BM的USB-HART通信接口的開發(fā)
一種基于FPGA的UART接口開發(fā)方案

評論