范曉光 趙 晶 李小平 梁 影
(上海無(wú)線電設(shè)備研究所,上海 200090)
通用串行總線 (Universal Serial Bus,USB)是一種新興的并逐漸取代其他接口標(biāo)準(zhǔn)的數(shù)據(jù)通信方式,由Intel、Compaq、Digital、IBM、Microsoft、NEC 及Northern Telecom等計(jì)算機(jī)公司和通信公司于1995年聯(lián)合制定,并逐漸形成了行業(yè)標(biāo)準(zhǔn)。USB總線作為一種高速串行總線,其極高的傳輸速度可以滿足高速數(shù)據(jù)傳輸?shù)膽?yīng)用環(huán)境要求,且該總線還兼有供電簡(jiǎn)單(可總線供電)、安裝配置便捷(支持即插即用和熱插拔)、擴(kuò)展端口簡(jiǎn)易(通過(guò)集線器最多可擴(kuò)展127個(gè)外設(shè))、傳輸方式多樣化(4種傳輸模式),以及兼容良好(產(chǎn)品升級(jí)后向下兼容)等優(yōu)點(diǎn)。目前該接口總線已發(fā)展到USB3.0標(biāo)準(zhǔn),并且已經(jīng)在計(jì)算機(jī)中廣泛使用。
LabVIEW是一種基于計(jì)算機(jī)平臺(tái)的圖形編程語(yǔ)言和開發(fā)環(huán)境,在相同硬件條件下,利用LabVIEW編寫不同軟件即可實(shí)現(xiàn)不同的儀器功能,實(shí)現(xiàn)了“軟件即儀器”的設(shè)計(jì)理念。通過(guò)圖像化編程,用戶可以設(shè)計(jì)模擬真實(shí)儀器面板的控制界面,其豐富的圖形控件可以滿足用戶數(shù)值輸入/輸出、圖表/文本顯示等需求,開發(fā)友好交互的人機(jī)界面。
FTDI公司生產(chǎn)的FT232H芯片是一款單通道高速USB轉(zhuǎn)UART/FIFO接口芯片,能夠用于各種串行和并行I/O配置,包含專有動(dòng)態(tài)雙向數(shù)據(jù)總線,可通過(guò)外部存儲(chǔ)器完成其工作模式的配置。它不僅支持異步串行接口(UART),還通過(guò)其內(nèi)建的多重協(xié)議同步串行引擎(MPSSE)支持許多同步I/O接口,如SPI、I2C、JTAG及FPGA接口。其具體功能特性如下:
(1)供電方式:總線供電、直流電源供電;
(2)通過(guò)外部EEPROM進(jìn)行功能配置,該芯片可以實(shí)現(xiàn)多種單通道USB轉(zhuǎn)串行、并行接口;
(3)內(nèi)部集成完整固件程序;
(4)通信速率:全速12Mbit/s、高速480Mbit/s;
(5)異步245FIFO模式下,數(shù)據(jù)傳輸速率為8Mbytes/s ;
(6)提供VCP和D2xx驅(qū)動(dòng),其中VCP用來(lái)驅(qū)動(dòng)USB轉(zhuǎn)串口設(shè)計(jì),D2xx用來(lái)驅(qū)動(dòng)USB通信應(yīng)用。
USB接口硬件電路設(shè)計(jì)如圖1所示,F(xiàn)T232H芯片采用總線供電,將總線電源輸出引腳經(jīng)過(guò)一個(gè)濾波電路接到該芯片的VREGIN引腳,給整個(gè)USB硬件電路供電。USB接口的差分?jǐn)?shù)據(jù)線分別連接到FT232H芯片的DM引腳和DP引腳,用于數(shù)據(jù)傳輸。FT232H芯片外接12MHz晶振,分別接到該芯片的OSCI引腳和OSCO引腳。FT232H芯片的鎖相環(huán)電源由該芯片內(nèi)部提供,經(jīng)過(guò)一個(gè)LC濾波電路連接到VPLL引腳,同時(shí)利用內(nèi)部鎖相環(huán)產(chǎn)生所需的工作時(shí)鐘信號(hào)。
USB接口通信方式采用異步245FIFO模式,數(shù)據(jù)傳輸速率為64Mbit/s。在該模式下,F(xiàn)T232H芯片ADBUS0~ADBUS7分別連接數(shù)據(jù)輸入引腳D0~D7,用于接收待傳輸數(shù)據(jù)。FPGA產(chǎn)生USB接口傳輸控制信號(hào),連接至FT232H芯片ACBUS0~ACBUS4,分別是讀準(zhǔn)備信號(hào)、寫準(zhǔn)備信號(hào)、讀信號(hào)、寫信號(hào)和睡眠喚醒信號(hào)等,用于控制數(shù)據(jù)傳輸過(guò)程。
USB接口通信方式的配置需借助于外部EEPROM來(lái)完成,電路選用93LC56B芯片,是一款128×16bit低電壓、串行EEPROM。該芯片可在+2.5~+5.5V電源下工作,采用符合工作標(biāo)準(zhǔn)的三線式串行I/O口傳輸數(shù)據(jù),可與FT232H芯片直接連接。內(nèi)建有上電和掉電數(shù)據(jù)保護(hù)電路,防止數(shù)據(jù)丟失,可保存時(shí)間大于200年。通過(guò)該EEPROM,在配置通信方式的同時(shí),還可配置USB接口的VID、PID、產(chǎn)品描述字符串等OEM信息,以便于用戶開發(fā)屬于自己的產(chǎn)品。
圖1 硬件電路設(shè)計(jì)
要開發(fā)一個(gè)完整的USB接口,其過(guò)程較為復(fù)雜,除其硬件電路設(shè)計(jì)以外,還包括軟件設(shè)計(jì)過(guò)程,主要包括接口芯片固件編程、設(shè)備驅(qū)動(dòng)開發(fā)和應(yīng)用軟件設(shè)計(jì)等3個(gè)方面。USB接口芯片固件是其各種底層功能函數(shù),用于實(shí)現(xiàn)芯片讀寫等操作。設(shè)備驅(qū)動(dòng)主要用于驅(qū)動(dòng)USB設(shè)備,使連接上位機(jī)之后能被識(shí)別。其中,設(shè)備驅(qū)動(dòng)還需要完成固件下載的工作,這樣用戶才能應(yīng)用設(shè)計(jì)的固件。完成接口芯片固件和設(shè)備驅(qū)動(dòng)的編寫之后,編寫用戶控制軟件,按照用戶需求控制USB接口通信過(guò)程。
FT232H 的芯片內(nèi)部集成了USB接口通信所需的固件,不需要用戶進(jìn)行獨(dú)立編寫,簡(jiǎn)化了軟件開發(fā)工作。可將該USB接口芯片配置為兩種不同通信方式,一種是高速USB轉(zhuǎn)為串口通信,另一種是單通道USB通信。USB轉(zhuǎn)串口通信方式是將FT232H模擬為一個(gè)虛擬串行口,這樣用戶通過(guò)FT232H可以和上位機(jī)的串口相連接并進(jìn)行通信,該種模式使用芯片公司提供的虛擬串口驅(qū)動(dòng)進(jìn)行設(shè)計(jì)。該種傳輸方式傳輸速率較低,常應(yīng)用于對(duì)用戶已有的串口通信電路進(jìn)行升級(jí)擴(kuò)展。本文采用單通道USB通信方式,該種模式傳輸速率較高。要實(shí)現(xiàn)該種模式通信,需在上位機(jī)中安裝D2xx驅(qū)動(dòng),應(yīng)用軟件調(diào)用各種驅(qū)動(dòng)函數(shù)即可控制該芯片。該種模式極大地簡(jiǎn)化了USB開發(fā)流程。其主要驅(qū)動(dòng)函數(shù)介紹如下:
(1)FT_CreateDeviceInfoList:該函數(shù)用于查看某一USB設(shè)備的詳細(xì)信息;
(2)FT_OpenEx:該函數(shù)根據(jù)USB串碼、設(shè)備描述等信息打開某一指定USB設(shè)備,并返回一個(gè)句柄,后續(xù)函數(shù)通過(guò)該句柄識(shí)別該設(shè)備;
(3)FT_Read:該函數(shù)用于從某一句柄指定的USB設(shè)備中讀取數(shù)據(jù);
(4)FT_Write:該函數(shù)用于將數(shù)據(jù)寫到某一句柄指定的USB設(shè)備;
(5)FT_GetStatus:該函數(shù)用以得到某一設(shè)備的狀態(tài)信息;
(6)FT_Purge:該函數(shù)用以清空某一指定USB設(shè)備的發(fā)送和接收緩沖區(qū);
(7)FT_ResetDevice:該函數(shù)用于復(fù)位某一指定的USB設(shè)備。
設(shè)備驅(qū)動(dòng)主要用于驅(qū)動(dòng)USB設(shè)備,使其連接上位機(jī)之后能在上位機(jī)中被識(shí)別。另外,設(shè)備驅(qū)動(dòng)還要完成固件的下載,將固件下載到芯片內(nèi)部才能控制芯片運(yùn)行。使用FTDI公司提供的CDM20814驅(qū)動(dòng)軟件驅(qū)動(dòng)設(shè)備。安裝完USB設(shè)備驅(qū)動(dòng)之后,用戶需要配置外部EEPROM,設(shè)置USB設(shè)備的各種信息,以及USB接口工作模式。配置使用FT_Prog軟件,其設(shè)置界面如圖2所示。
圖2 USB接口外部EEPROM配置軟件主界面
通過(guò)FT_Prog軟件配置USB接口通信方式為異步245FIFO模式。配置USB接口設(shè)備VID為0403、PID為6014、產(chǎn)品描述為DAQSYS_USB,同時(shí)對(duì)其應(yīng)用管腳進(jìn)行配置。
LabVIEW作為一種基于計(jì)算機(jī)平臺(tái)的圖形編程語(yǔ)言和開發(fā)環(huán)境,其便捷、快速、可視化的編程方式,越來(lái)越廣泛地被工業(yè)界、學(xué)術(shù)界和實(shí)驗(yàn)室所接受,其應(yīng)用領(lǐng)域已廣泛覆蓋測(cè)試測(cè)量、嵌入式、運(yùn)動(dòng)控制、圖像處理、FPGA等眾多領(lǐng)域。
采用LabVIEW軟件編寫USB通信應(yīng)用軟件,可通過(guò)調(diào)用動(dòng)態(tài)連接庫(kù)的方法,調(diào)用FTDI公司提供的USB接口設(shè)備的固件驅(qū)動(dòng)程序,快速搭建應(yīng)用程序,實(shí)現(xiàn)USB接口的高速數(shù)據(jù)傳輸。其步驟如下:
(1)安裝動(dòng)態(tài)鏈接庫(kù):安裝FTDI公司提供的固件驅(qū)動(dòng)程序到上位機(jī);
(2) 調(diào)用動(dòng)態(tài)連接庫(kù):通過(guò)LabVIEW軟件中的“互連接口”模塊實(shí)現(xiàn)對(duì)動(dòng)態(tài)連接庫(kù)的調(diào)用:“互連接口”→“庫(kù)和可執(zhí)行程序”→“調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)”模塊;
(3)編寫控制軟件:利用LabVIEW軟件調(diào)用各種驅(qū)動(dòng)函數(shù),實(shí)現(xiàn)USB接口應(yīng)用程序開發(fā),其程序流程設(shè)計(jì)如圖3所示。
圖3 USB接口通信應(yīng)用程序流程圖
USB接口硬件加電后,軟件打開USB設(shè)備,與其建立通信連接。然后對(duì)USB設(shè)備進(jìn)行初始化,對(duì)USB接口設(shè)備進(jìn)行復(fù)位,清空其數(shù)據(jù)緩存區(qū)數(shù)據(jù)。初始化之后,應(yīng)用軟件對(duì)USB設(shè)備狀態(tài)進(jìn)行查詢,判斷數(shù)據(jù)緩存區(qū)是否被寫入數(shù)據(jù),當(dāng)有數(shù)據(jù)寫入時(shí),讀出緩存數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行解析,判斷數(shù)據(jù)是否準(zhǔn)確,之后對(duì)通信數(shù)據(jù)進(jìn)行顯示。如果查詢數(shù)據(jù)緩存沒(méi)有數(shù)據(jù),則繼續(xù)等待。
USB接口通信應(yīng)用程序控制前面板如圖4所示,利用FPGA硬件電路,將其內(nèi)部DDS產(chǎn)生的正弦信號(hào)傳輸至USB接口硬件電路,USB接口電路傳輸數(shù)據(jù)至應(yīng)用程序,應(yīng)用程序?qū)?shù)據(jù)進(jìn)行顯示,驗(yàn)證USB接口高速數(shù)據(jù)傳輸能力。
圖4 USB接口通信應(yīng)用程序控制前面板
首先,設(shè)置要打開的USB設(shè)備為“DAQSYS_USB”,啟動(dòng)前同時(shí)清除發(fā)送和接收緩存區(qū)。配置完成后,啟動(dòng)USB接口進(jìn)行數(shù)據(jù)傳輸,對(duì)USB狀態(tài)進(jìn)行監(jiān)控,界面中狀態(tài)監(jiān)控一欄將對(duì)目前USB設(shè)備的各種控制狀態(tài)進(jìn)行顯示。使用FPGA中DDS以8MHz采樣產(chǎn)生1MHz頻率的正弦信號(hào),通過(guò)USB接口輸出,數(shù)據(jù)通過(guò)USB接口傳輸?shù)缴衔粰C(jī)界面,上位機(jī)界面對(duì)傳輸數(shù)據(jù)進(jìn)行顯示,對(duì)傳輸數(shù)據(jù)長(zhǎng)度進(jìn)行統(tǒng)計(jì)顯示。通過(guò)試驗(yàn),該應(yīng)用程序可以準(zhǔn)確地實(shí)現(xiàn)上位機(jī)與USB設(shè)備間的通信,從而最終達(dá)到了程序設(shè)計(jì)的目的。
本文基于FTDI公司的FT232H芯片,研究了USB總線接口高速數(shù)據(jù)傳輸技術(shù),提出了一種基于USB芯片的高速數(shù)據(jù)傳輸應(yīng)用方法。闡述了硬件設(shè)計(jì)方法和軟件開發(fā)流程,并利用LabVIEW軟件開發(fā)了應(yīng)用程序,且在試驗(yàn)中驗(yàn)證了USB接口的高速數(shù)據(jù)傳輸功能。本文所設(shè)計(jì)的USB接口系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、性能穩(wěn)定、易于開發(fā)、傳輸速率快;借助于LabVIEW軟件開發(fā)工具,大大縮短了應(yīng)用程序的開發(fā)周期,提高了系統(tǒng)的設(shè)計(jì)效率和設(shè)計(jì)質(zhì)量。