本原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處(http://www.alinx.com)。
適用于板卡型號(hào):
PGL22G
1. 簡(jiǎn)介
本教程介紹如何使用FTDI公司的FT232H驅(qū)動(dòng)芯片進(jìn)行USB數(shù)據(jù)傳輸,文中從底層FPGA、驅(qū)動(dòng)層固件(FT232H固件)及上位機(jī)測(cè)試軟件設(shè)計(jì)方面闡述了USB開(kāi)發(fā)的整個(gè)流程。
2. 實(shí)驗(yàn)原理
2.1 FT232H原理介紹
FT232H是由FTDI公司生產(chǎn)的單路USB2.0驅(qū)動(dòng)芯片,USB速度高達(dá)480Mb/s,支持轉(zhuǎn)UART或FIFO模式,并可配置成多種工業(yè)串行或并行接口:
(1)可配置成UART接口;
(2)FT245同步FIFO接口;
(3)FT245風(fēng)格異步FIFO接口;
(4)同步或異步Bit-Bang接口;
(5)MPSSE接口;
(6)Fast串口;
(7)CPU風(fēng)格FIFO接口;
(8)FT1248接口。
在本實(shí)驗(yàn)中配置成FT245同步FIFO接口。下面是FT232H的內(nèi)部結(jié)構(gòu)圖。
2.2 硬件原理圖
如下為AX7035/AX7050開(kāi)發(fā)板的USB部分原理圖,USB驅(qū)動(dòng)芯片采用FT232HL,配置為FT245 FIFO模式,通過(guò)與93LC56存儲(chǔ)芯片相連,將FT232HL配置為FT245 FIFO模式的信息存儲(chǔ)于芯片中。
AX7050 USB部分原理圖AX7035 USB部分原理圖
2.3 FT245 FIFO接口引腳
如下表所示為FT245 FIFO接口,ADBUS為并行接口,供FPGA使用,RXF#,TXE#為FT232H輸出信號(hào),用于通知FPGA是否可讀可寫(xiě),RD#,WR#為讀寫(xiě)輸入信號(hào),由FPGA控制,CLKOUT為輸出時(shí)鐘60MHz,OE#為輸出全能,需要在RD#有效之前至少提前一個(gè)時(shí)鐘周期。
2.4 FT245 FIFO時(shí)序
下圖為FT245 FIFO模式時(shí)序圖,讀時(shí)序中,首先FT232H將RXF#拉低,此時(shí)可以讀取FIFO里的數(shù)據(jù),F(xiàn)PGA可將OE#先拉低,過(guò)至少一個(gè)時(shí)鐘周期,再將RD#拉低,在CLKOUT上升沿采集數(shù)據(jù);寫(xiě)時(shí)序中,F(xiàn)T232H將TXE#拉低,表示現(xiàn)在可寫(xiě),F(xiàn)PGA可將WR#拉低,在CLKOUT上升沿寫(xiě)入數(shù)據(jù)。
3. 程序設(shè)計(jì)
程序設(shè)計(jì)比較簡(jiǎn)單,功能實(shí)現(xiàn)為將從FT232H的讀FIFO中讀取的數(shù)據(jù)存儲(chǔ)到雙口RAM中,再將數(shù)據(jù)從RAM讀取出來(lái)發(fā)送到FT232H的寫(xiě)FIFO中,實(shí)現(xiàn)數(shù)據(jù)的環(huán)通。代碼實(shí)現(xiàn)根據(jù)前面所講的時(shí)序圖,實(shí)現(xiàn)其功能即可。
代碼中采用了簡(jiǎn)單的狀態(tài)機(jī),首先在IDLE狀態(tài)下判斷ft_rxf_n信號(hào)是否是0,如果是0,進(jìn)入READ狀態(tài),開(kāi)始讀取FT232H的數(shù)據(jù),并存入RAM中,如果ft_rxf_n拉高,進(jìn)入IDLE狀態(tài);否則判斷ft_txe_n是否為0并且RAM空間不為空,進(jìn)入WRITE狀態(tài),將RAM數(shù)據(jù)寫(xiě)入FT232H,如果ft_txe_n拉高或者RAM空了,進(jìn)入IDLE狀態(tài)。
引腳名稱 | 功能描述 |
ft_clk | FT232H時(shí)鐘,CLKOUT頻率60MHz |
rst | 復(fù)位信號(hào),高電平有效 |
ft_rxf_n | RXF# FT232H FIFO可以讀,低電平有效 |
ft_txe_n | TXE# FT232H FIFO可以寫(xiě),低電平有效 |
ft_oe_n | OE# 輸出使能,低電平有效 |
ft_rd_n | RD# 讀信號(hào),低電平有效 |
ft_wr_n | WR#寫(xiě)信號(hào),低電平有效 |
ft_data | FT232H數(shù)據(jù)端口,8位位寬,雙向IO |
4. 實(shí)驗(yàn)流程
4.1 安裝FTDI D2xx driver
在05_芯片手冊(cè)\ft232h文件夾中可以找到CDM v2.12.28 WHQL Certified_x64.zip,將其解壓。
取出開(kāi)發(fā)板,連接上開(kāi)發(fā)板的USB接口,打開(kāi)電源
打開(kāi)設(shè)備管理器,出現(xiàn)新設(shè)備,右鍵點(diǎn)擊更新驅(qū)動(dòng)程序軟件
點(diǎn)擊瀏覽計(jì)算機(jī)以查找驅(qū)動(dòng)程序軟件
點(diǎn)擊瀏覽找到解壓的文件夾,點(diǎn)擊確定,并點(diǎn)擊下一步。
成功安裝驅(qū)動(dòng)后如下圖:
可以看到出現(xiàn) USB Serial Converter設(shè)備
4.2 實(shí)驗(yàn)現(xiàn)象
將程序下載到FPGA中,找到上位機(jī)測(cè)速軟件,打開(kāi)軟件
選擇USB設(shè)備,點(diǎn)擊開(kāi)始按鈕
可以看到讀寫(xiě)速度在40MB/s附近變動(dòng),點(diǎn)擊暫停按鈕可停止測(cè)速。
有些同學(xué)想要看看USB傳輸?shù)臄?shù)據(jù),在這里我們提供 了“USB測(cè)試工具“,工具在下圖中位置:
操作如下:
1)首先確保程序(與測(cè)速軟件一致)已下載到FPGA中,連接好USB線,找到上位機(jī)測(cè)速軟件并打開(kāi),在選擇設(shè)備下拉框里找到USB 設(shè)備, 如果沒(méi)有顯示 USB 設(shè)備, 點(diǎn)擊“刷新” 按鈕 之后選擇好設(shè)備, 點(diǎn)擊“打開(kāi)” 按鈕。如下圖:
2)在數(shù)據(jù)輸入框輸入十六進(jìn)制數(shù)據(jù), 再點(diǎn)擊發(fā)送, 可以在顯示窗口看到發(fā)送和接收的數(shù)據(jù), 進(jìn)行數(shù)據(jù)對(duì)比, 驗(yàn)證正確性。
在這里需要注意下:發(fā)送數(shù)據(jù)需要為偶數(shù)個(gè),否則上位機(jī)會(huì)截取偶數(shù)個(gè)數(shù)據(jù)發(fā)送, 如下圖, 最后一個(gè)數(shù)據(jù) f 并沒(méi)有發(fā)送出去。
3)“刷新” 按鈕類似于關(guān)閉端口, 點(diǎn)擊“刷新” 按鈕后, 發(fā)送數(shù)據(jù), 不會(huì)有反應(yīng), 需要點(diǎn)擊
“打開(kāi)” 按鈕打開(kāi) USB 設(shè)備。
5. 總結(jié)
本實(shí)驗(yàn)介紹了FT232H芯片F(xiàn)T245 FIFO模式的讀寫(xiě)測(cè)速,大家可以結(jié)合各自的應(yīng)用編寫(xiě)上位機(jī)程序?qū)崿F(xiàn)所需功能。
-
FPGA
+關(guān)注
關(guān)注
1625文章
21620瀏覽量
601232 -
usb
+關(guān)注
關(guān)注
60文章
7876瀏覽量
263696 -
程序
+關(guān)注
關(guān)注
116文章
3756瀏覽量
80751 -
uart
+關(guān)注
關(guān)注
22文章
1219瀏覽量
101118 -
紫光同創(chuàng)
+關(guān)注
關(guān)注
5文章
79瀏覽量
27475
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論