周晨曦,曾國強(qiáng)
(成都理工大學(xué) 核技術(shù)與自動化工程學(xué)院,成都 610051)
隨著高速數(shù)據(jù)采集技術(shù)的不斷發(fā)展,對采集數(shù)據(jù)的傳輸速度的要求也越來越高。高速數(shù)據(jù)傳輸方式紛繁復(fù)雜,其所能達(dá)到的最大傳輸速率也不盡相同。目前使用較多的高速數(shù)據(jù)傳輸方式主要有PXIE,光纖,PCIE,PCI等,但這些方式幾乎都有布線復(fù)雜、程序編寫復(fù)雜以及功耗較高,體積龐大等缺點(diǎn),使得在開發(fā)時,由于其布線復(fù)雜,程序編寫復(fù)雜,在對于電路設(shè)計(jì)要求較高的同時也不利于后期調(diào)試,從而延遲開發(fā)周期;在使用時,由于功耗較大,導(dǎo)致能源利用率不高,器件還會發(fā)熱,導(dǎo)致接口壽命降低,同時由于體積龐大,在某些狹窄環(huán)境下使用不便。而 USB 3.0作為新晉的高速數(shù)據(jù)傳輸方式,以其布線經(jīng)濟(jì)、安裝簡單、高達(dá)5 Gbit/s的帶寬、可支持熱插拔、與更多計(jì)算平臺之間存在兼容性等優(yōu)點(diǎn),在與計(jì)算機(jī)交換數(shù)據(jù)的過程中獲得廣泛應(yīng)用[1]。但因?yàn)楦鞣NUSB 3.0接口設(shè)計(jì)所使用的的USB 3.0芯片的不同,使得數(shù)據(jù)傳輸速率參差不齊,其穩(wěn)定性也不盡人意,所以在USB 3.0接口設(shè)計(jì)中,其芯片選型至關(guān)重要。
通過調(diào)研發(fā)現(xiàn)無論是市面上已經(jīng)開發(fā)成功的產(chǎn)品還是各種文獻(xiàn)中提出的設(shè)計(jì)方法幾乎都采用了CYPRESS公司生產(chǎn)的USB 3.0芯片進(jìn)行開發(fā)。其中使用較多的是CYBUS3014芯片,該芯片采用BAG封裝,在芯片內(nèi)部集成了ARM9內(nèi)核,使得功能較為全面。但在硬件設(shè)計(jì)上,特別是在PCB(Printed Circuit Board.印刷電路板)布線階段由于過孔較多,造成整體結(jié)構(gòu)復(fù)雜,從而使得布線較難,大大增加了前期設(shè)計(jì)與后期調(diào)試的工作量與難度。而在信號的傳輸方面,因?yàn)槠鋸?fù)雜的結(jié)構(gòu),在信號傳遞過程中會降低信號質(zhì)量,影響數(shù)據(jù)的傳輸速度[2-4]。
FTDI公司生產(chǎn)的FT601芯片是一片USB 3.0和FIFO的橋接芯片。在電路設(shè)計(jì)方面,F(xiàn)T601使用QFN封裝,可以減少其布板時的過孔量,對于PCB布線,硬件調(diào)試以及后期的開發(fā)的難度都有顯著的降低[3],同時其內(nèi)部集成了100 MHz的時鐘芯片,在無需提供外部時鐘的同時,還能為主控芯片提供時鐘,保證了主控芯片與FT601的時鐘一致性,從而保證了信號傳輸?shù)馁|(zhì)量。在FPGA內(nèi)部程序編寫上,由于其只有6根主要控制線,大大簡化了有限狀態(tài)機(jī)的設(shè)計(jì),降低程序編寫難度。在性能上,能在保證數(shù)據(jù)傳輸?shù)馁|(zhì)量與速度,對于絕大多數(shù)場合來說,其性能能完全滿足需求。
本設(shè)計(jì)采用FT601芯片作為與PC機(jī)通信的芯片,以Intel公司生產(chǎn)的cyclone IV系列的 FPGA芯片作為主控芯片,實(shí)現(xiàn)USB 3.0接口設(shè)計(jì)。
本設(shè)計(jì)的硬件電路主要由FT601外圍電路、電源電路以及FPGA控制電路構(gòu)成,其整體結(jié)構(gòu)如圖1所示。
圖1 USB 3.0接口結(jié)構(gòu)圖
其中FPGA作為控制芯片,其主要由USB 3.0控制器模塊和FIFO模塊構(gòu)成,實(shí)現(xiàn)對FT601芯片的控制,使其向上位機(jī)傳輸數(shù)據(jù)。配置電路主要為FPGA服務(wù),固化程序,方便后期調(diào)試和實(shí)現(xiàn)脫機(jī)工作。電源使用PC機(jī)上的USB接口進(jìn)行供電,電壓為5 V,電源電路主要實(shí)現(xiàn)降壓,為PCB板上的各個芯片提供工作電壓。其具體設(shè)計(jì)方法將在后文進(jìn)行介紹。
USB 3.0也被稱為Super-Speed USB,作為新一代“即插即用”通用串行總線規(guī)范,USB 3.0繼承于USB 2.0,在原有的4線結(jié)構(gòu)(電源,地線,2條數(shù)據(jù)線)上,再增加了4條線路,用于接受和傳輸信號,同時采用全雙工模式,簡化了等待引起的時間消耗,提升傳輸速率。同時繼承了USB 2.0可熱插拔性,通用性等的優(yōu)點(diǎn)的同時其還擁有高達(dá)5 Gbps的帶寬和900 mA的供電能力[5]。與大多數(shù)數(shù)據(jù)傳輸方式相比,我們可以在不提供外接電源的情況下對大多數(shù)外接設(shè)備進(jìn)行操作使用。在簡化了電路結(jié)構(gòu)的同時還允許設(shè)備從不同的待機(jī)模式轉(zhuǎn)入掛起模式的電源管理方式,從而大大節(jié)省了能源。
本設(shè)計(jì)采用了FTDI公司生產(chǎn)的FT601芯片作為USB 3.0接口芯片,該芯片能有效的連接FIFO和USB 3.0, 實(shí)現(xiàn)向PC機(jī)傳輸數(shù)據(jù),同時該芯片能兼容USB 3.0和USB 2.0,在低速數(shù)據(jù)傳輸或者不支持USB 3.0總線規(guī)范的PC機(jī)中也能使用,大大增強(qiáng)了其兼容性。FT601芯片內(nèi)置有16 Kb FIFO數(shù)據(jù)緩存RAM,與單口RAM、雙口RAM和SRAM等數(shù)據(jù)緩存RAM相比,其在數(shù)據(jù)傳輸過程中,數(shù)據(jù)處理速度更快,傳輸速度更快,并且功耗更低。其內(nèi)部集成的時鐘芯片在為自身提供100 MHz工作時鐘的同時還能為外部芯片提供100 MHz的高頻時鐘信號,這對于高速數(shù)據(jù)傳輸十分重要。FT601還具有最高4 Gbps的帶寬,擁有滿足絕大部分的應(yīng)用需求的能力。FT601芯片結(jié)構(gòu)示意圖如圖2所示[6]。
圖2 FT601芯片結(jié)構(gòu)示意圖
FPGA芯片以其高集成度,超快處理速度,編程靈活等優(yōu)點(diǎn)已經(jīng)成為電子學(xué)中的??停诟咚匐娐贩矫娴母瞧渌悇e的控制芯片不能比擬的。
本設(shè)計(jì)采用了Intel公司生產(chǎn)的cyclone IV系列的EP4CE6E22C8N芯片作為主控芯片,該芯片采用EQFP封裝,提供了92個用戶編程I/O,共8個bank,完全滿足設(shè)計(jì)需求[7-9]。通過對FPGA進(jìn)行編程,從而實(shí)現(xiàn)對芯片的控制以及數(shù)據(jù)的緩存。利用FPGA芯片強(qiáng)大的功能,使得整個電路只需FT601外圍電路,F(xiàn)PGA外圍電路,配置電路以及電源構(gòu)成,大大簡化了電路。其中FPGA控制電路部分主要包括FPGA配置電路和電源電路。
1.2.1 配置電路
FPGA的配置電路最主要的是時鐘電路的設(shè)計(jì),且在高速數(shù)據(jù)傳輸過程中,時鐘的一致性直接影響了數(shù)據(jù)傳輸?shù)馁|(zhì)量。本設(shè)計(jì)的時鐘電路有2個時鐘,其一為配置時鐘,為配置FPGA時提供時鐘;其二為數(shù)據(jù)傳輸時鐘。
針對FPGA芯片在斷電后,其在斷電之前的所有的數(shù)據(jù)與程序都無法保存的缺點(diǎn),而采用的M25P16非易失性存儲器(non-volatile memory,縮寫為NVM)存儲PFGA程序,使在系統(tǒng)上電時,M25P16芯片能快速向FPGA導(dǎo)入配置程序。而M25P16芯片的工作時鐘最高為50 MHz[10],所以并不能直接使用FT601芯片所提供的時鐘。由于使用降頻方式對FT601芯片所提供的時鐘進(jìn)行降頻處理將導(dǎo)致電路的復(fù)雜化以及在降頻后可能帶來的時鐘抖動等原因。在FPGA配置時采用低抖動的50 MHz晶振為M25P16與FPGA提供時鐘。而為了保證數(shù)據(jù)傳輸過程中時鐘的一致性,數(shù)據(jù)傳輸時鐘由FT601芯片中內(nèi)部集成的時鐘芯片提供,從而保證數(shù)據(jù)傳輸?shù)馁|(zhì)量。這使得整個系統(tǒng)在保證數(shù)據(jù)傳輸?shù)馁|(zhì)量的同時,還能進(jìn)行脫機(jī)工作。
本設(shè)計(jì)采用PC機(jī)作為供電設(shè)備,通過USB 3.0數(shù)據(jù)線與PC機(jī)連接,在對數(shù)據(jù)傳輸?shù)耐瑫r對接口電路中的芯片進(jìn)行供電。極大的利用了USB 3.0的資源,減少了外部設(shè)備的連接。但由于各個芯片的工作電壓不完全相同,且PC機(jī)所提供的電源電壓為5 V,所以需要使用降壓芯片對其進(jìn)行降壓處理。
本設(shè)計(jì)采用AMS1117系列芯片對電源進(jìn)行降壓處理。AMS1117系列芯片作為一款高效線性穩(wěn)壓器,擁有三端可調(diào)和固定穩(wěn)壓的能力,其輸入電壓在3~12 V,最低電壓可以穩(wěn)壓到1.0 V,線性好,降壓后電壓穩(wěn)定,且電路設(shè)計(jì)簡單,有利于簡化電路,在對不同的芯片供電的情況,更加實(shí)用。
本設(shè)計(jì)采用AMS1117-1.2 V芯片提供FPGA芯片所需的內(nèi)核電壓VCCINT,AMS1117-2.5 V芯片提供輔助電壓VCCA[7,9]。FT601芯片內(nèi)部集成了LDO1.0 V穩(wěn)壓器,無需外部降壓芯片,其I/0模塊的供電電壓也支持+1.8 V,+2.5 V,+3.3 V三種電平之多[6]。而FPGA芯片所需要的I/0驅(qū)動電壓以及M25P16芯片工作電壓均支持+3.3 V,為了簡化電路的設(shè)計(jì),使用AMS1117-3.3 V芯片為上述芯片提供工作電壓電壓。
軟件設(shè)計(jì)主要是在quartus II環(huán)境下使用Verilog語言對FPGA芯片進(jìn)行編程設(shè)計(jì),實(shí)現(xiàn)FPGA對FT601的控制,達(dá)到數(shù)據(jù)傳輸?shù)哪康摹6刂艶T601芯片首先要確定其工作模式,F(xiàn)T601芯片有兩種工作模式: “245” 單通道模式和多通道模式。其中多通道模式可以支持同時4通道數(shù)據(jù)傳輸,但傳輸速率較慢,而 “245” 單通道模式有更高的傳輸速率。
圖3 數(shù)據(jù)傳輸過程示意圖
本設(shè)計(jì)中FT601芯片采用數(shù)據(jù)傳輸模式為 “245單通道”模式,該接口傳輸數(shù)據(jù)過程如圖3所示,當(dāng)PC通過USB 3.0接口向FPGA中傳輸數(shù)據(jù)時,先將數(shù)據(jù)緩存在FT601內(nèi)置的FIFO中,即FIFO RD緩存區(qū),同時FT601向FPGA發(fā)送可讀REF_N命令,當(dāng)FPGA發(fā)送 RD_N 命令時,讀出FIFO RD中的數(shù)據(jù),其中REF_N表示FIFO RD中至少有1字節(jié)的數(shù)據(jù)可讀,RD_N與REF_N信號均為低電平有效;當(dāng)FPGA通過USB 3.0接口向PC傳輸數(shù)據(jù)時,F(xiàn)T601先向FPGA發(fā)送TXE_N信號,該信號表示FIFO WR中至少可以寫入1字節(jié)的數(shù)據(jù),然后FPGA向FT601發(fā)送WR_N,先把需要傳輸?shù)絇C端的數(shù)據(jù)緩存在FIFO WR緩存區(qū)中,PC端通過發(fā)送數(shù)據(jù)請求信號,從緩存區(qū)中讀出數(shù)據(jù), TXE_N和WR_N信號均為低電平有效,F(xiàn)IFO WR和FIFO RD緩存區(qū)的大小均為8KB×2。時鐘信號CLK是FT601輸出到FPGA控制器的并行FIFO時鐘輸出信號,時鐘頻率可以通過FTDI公司提供配置軟件配置為66 MHz和100 MHz;BE[3:0]是并行FIFO總線字節(jié)使能信號,高電平有效,信號OE_N引腳是數(shù)據(jù)輸出使能信號,低電平有效[6]。
FPGA內(nèi)部程序設(shè)計(jì)主要由I/0控制模塊、FIFO控制模塊、有限狀態(tài)機(jī)模塊和信號模塊組成。
I/0控制模塊主要實(shí)現(xiàn)外部端口與內(nèi)部模塊之間信號的連接,即控制FPGA的I/O接收外部芯片向FPGA所傳輸?shù)臄?shù)據(jù)和信號和向外部芯片發(fā)送數(shù)據(jù)和信號,即 I/O的雙向控制,其功能較為簡單,不再贅述。有限狀態(tài)機(jī)模塊作為FPGA軟件設(shè)計(jì)的最重要的一環(huán),其主要功能是控制FPGA內(nèi)部FIFO(主FIFO)的所有操作,實(shí)現(xiàn)其與FT601芯片內(nèi)部FIFO(從FIFO)的數(shù)據(jù)傳輸過程;FIFO 控制模塊控制內(nèi)部FIFO的讀寫操作。信號模塊的設(shè)計(jì)主要是為了接收外部設(shè)備的所傳輸?shù)男盘?,同時還設(shè)計(jì)了一個信號發(fā)生器,方便測試。
有限狀態(tài)機(jī)模塊主要實(shí)現(xiàn)主FIFO讀寫狀態(tài)的轉(zhuǎn)換,其狀態(tài)轉(zhuǎn)換過程如圖4所示。
圖4 有限狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換示意圖
在狀態(tài)轉(zhuǎn)換過程中,F(xiàn)T601芯片的RD FIFO和WR FIFO的狀態(tài)由其輸入信號RXF_N和TXE_N表示。其中,RXF_N信號是FPGA中RD FIFO滿輸出信號,該信號表示FIFO至少有1字節(jié)能夠被讀出,當(dāng)RXF_N為低電平時,只能對RD FIFO進(jìn)行讀操作; TXE_N信號是發(fā)送FIFO空輸出信號,該信號表示從FIFO至少還有1字節(jié)的空間能夠被寫入,當(dāng)TXE_N為低電平時,只能對WR FIFO進(jìn)行寫操作。FPGA內(nèi)部FIFO(主FIFO)的狀態(tài)由FIFO_FULL和FIFO_EMP兩個指示信號表示。其中,F(xiàn)IFO_FULL信號為1表示主FIFO滿,F(xiàn)IFO_EMP為1表示主FIFO空。
系統(tǒng)復(fù)位后,狀態(tài)機(jī)處于IDLE狀態(tài),當(dāng)RXF_N信號為0時,且FIFO_FULL信號也為0時,狀態(tài)機(jī)轉(zhuǎn)入M_RD狀態(tài),此時FPGA將對FT601內(nèi)置FIFO(從FIFO)進(jìn)行讀操作,否則將判斷判斷TXE_N和FIFO_EMP信號。在M_RD狀態(tài)下,若RXF_N和FIFO_FULL信號有一個為1,則判斷TXE_N和FIFO_EMP信號,否則狀態(tài)機(jī)將繼續(xù)留著M_RD狀態(tài),F(xiàn)PGA也將繼續(xù)對從FIFO進(jìn)行讀操作。當(dāng)進(jìn)入TXE_N和FIFO_EMP信號的判斷,若TXE_N和FIFO_EMP信號均為0,狀態(tài)機(jī)轉(zhuǎn)入M_WR狀態(tài),F(xiàn)PGA開始對從FIFO進(jìn)行寫操作,否則進(jìn)入IDLE狀態(tài)。在M_WR狀態(tài)下,若TXE_N和FIFO_EMP信號仍然為0,則狀態(tài)機(jī)繼續(xù)處于WR狀態(tài),F(xiàn)PGA將繼續(xù)對從FIFO進(jìn)行寫操作,否則狀態(tài)機(jī)轉(zhuǎn)入IDLE狀態(tài)。
有限狀態(tài)機(jī)的設(shè)計(jì),使得整個程序更具有邏輯性,在后續(xù)的程序調(diào)試中也更容易找出程序中有問題的地方。
整個電路的FIFO分為FPGA內(nèi)部由IP核生成的主FIFO和內(nèi)置于FT601芯片的從FIFO 兩個部分。FIFO控制模塊主要分為控制主FIFO模塊和從FIFO模塊的數(shù)據(jù)接收、緩存和發(fā)送。主FIFO通過調(diào)用quartus II中的IP核生成,其大小為16k,深度為8 192,讀寫的數(shù)據(jù)寬度為32位[11-12]。主FIFO的所有操作主要由有限狀態(tài)機(jī)模塊進(jìn)行控制,實(shí)現(xiàn)其與從FIFO的數(shù)據(jù)傳輸,從FIFO大小為16k,讀寫數(shù)據(jù)寬度為32位,從FIFO控制模塊主要控制從FIFO的讀寫操作。
信號模塊分為外部信號接收器和內(nèi)部信號發(fā)生器,其中外部設(shè)備信號接收器主要是為了對外部設(shè)備所傳輸?shù)男盘栠M(jìn)行接收,在后續(xù)的使用與以后的開發(fā)也較為方便。內(nèi)部信號發(fā)生器,主要是為了在調(diào)試階段,能實(shí)時的通過分析上位機(jī)所接收到的2進(jìn)制數(shù)據(jù),從而找到硬件電路設(shè)計(jì)與軟件程序設(shè)計(jì)中的問題,同時對計(jì)算誤碼率也更為方便。
本設(shè)計(jì)利用用inlet公司所提供的Quartus II集成開發(fā)環(huán)境,對編寫的FPGA代碼進(jìn)行綜合、實(shí)現(xiàn)之后,使用JTAG配置模式對FPGA芯片進(jìn)行在線配置,方便對程序進(jìn)行調(diào)試修改,完成后,生成JIC文件,利用主動串行配置模式將JIC文件下載到M25P16中,在完成對FPGA的編程工作的同時達(dá)到脫機(jī)工作的目的。
對于FT601芯片的配置,主要有兩種方法,一種是通過對芯片引腳電平高低的選擇,來實(shí)現(xiàn)對芯片的FIFO時鐘、通道數(shù)量以及工作模式進(jìn)行配置,另一種就是利用FTDI公司所提供的FT60X Chip Configuration Programmer軟件進(jìn)行配置[6]。本設(shè)計(jì)采用的配置方式為后一種方式。首先使用USB 3.0連接線將PC與電路連接,利用FT60X Chip Configuration Programmer 軟件對FT601芯片的工作模式以及工作時鐘進(jìn)行配置。圖5是對FT601芯片進(jìn)行配置的圖片。本系統(tǒng)中設(shè)置FIFO時鐘為100 MHz,工作模式為“245”單通道模式[13]。
圖5 FT601芯片配置圖
在完成對FT601芯片的配置之后,通過FTDI公司提供的上位機(jī)程序示例,對所設(shè)計(jì)的電路以及編寫的FPGA代碼進(jìn)行測試[14]。測試結(jié)果如圖6和圖7所示,其中圖6為寫速度即上位機(jī)向FPGA傳輸數(shù)據(jù)的速度,圖7為FPGA向上位機(jī)傳輸數(shù)據(jù)的速度,從圖中可以看出本設(shè)計(jì)可以有效的傳輸數(shù)據(jù),且無論是FPGA向PC機(jī)傳輸數(shù)據(jù)時還是PC機(jī)想FPGA傳輸數(shù)據(jù)時,其數(shù)據(jù)傳輸平均速度均能達(dá)到350 MB/s。
圖6 接口寫速度測試圖
圖7 接口讀速度測試圖
從電路測試的結(jié)果來看,該接口能達(dá)到350 MB/s的數(shù)據(jù)傳輸速率,達(dá)到了預(yù)先設(shè)定的目標(biāo),通過計(jì)算,該接口能滿足數(shù)據(jù)采樣率為3 GSPS以下的高速數(shù)據(jù)采集系統(tǒng)的實(shí)時數(shù)據(jù)傳輸?shù)男枨螅瑢τ趲в蠸DDR的數(shù)據(jù)采集系統(tǒng)則能滿足更高采樣率的數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)傳輸需求。但在進(jìn)行了多次的FPGA的程序修改以及測試下,仍未達(dá)到FT601芯片的數(shù)據(jù)手冊中所說的最大傳輸速率400 M/s。在通過對結(jié)果分析以及對文獻(xiàn)的大量查閱,總結(jié)了以下幾點(diǎn)可能原因:
1)硬件電路設(shè)計(jì)上,對于數(shù)據(jù)傳輸線的走線未能完全滿足每條數(shù)據(jù)傳輸線長度相等。
2)元器件對于信號傳輸有延時。FPGA芯片內(nèi)部邏輯翻轉(zhuǎn)有延時。
3)測試所使用的PC機(jī)性能不夠,接收速率達(dá)不到。
但無論是哪種原因,本設(shè)計(jì)還需不斷的改進(jìn),以追求更高的數(shù)據(jù)傳輸速率。同時在以后的高速電路設(shè)計(jì)中也應(yīng)該注意數(shù)據(jù)傳輸線的長度問題。
本文主要對現(xiàn)有的數(shù)據(jù)傳輸方式進(jìn)行介紹,并詳細(xì)介紹了USB 3.0數(shù)據(jù)傳輸方式,設(shè)計(jì)了基于USB 3.0的高速數(shù)據(jù)傳輸接口,詳細(xì)介紹了硬件電路的設(shè)計(jì),數(shù)據(jù)緩存與傳輸?shù)牧鞒桃约坝邢逘顟B(tài)機(jī)的工作方式,并對設(shè)計(jì)的接口進(jìn)行了實(shí)驗(yàn)測試與結(jié)果分析。測試結(jié)果表明,基于FPGA的USB 3.0高速數(shù)據(jù)傳輸接口設(shè)計(jì),在按照要求進(jìn)行相應(yīng)配置情況下,能以350 MB/s左右的速度對數(shù)據(jù)進(jìn)行傳輸,能滿足大多數(shù)的數(shù)據(jù)傳輸任務(wù)。
雖然基于USB 3.0的高速數(shù)據(jù)傳輸接口設(shè)計(jì)具有良好的數(shù)據(jù)傳輸速度與穩(wěn)定性,但在硬件設(shè)計(jì)方面還需要進(jìn)一步的研究以達(dá)到更快的傳輸速度。USB 3.0接口與大多數(shù)計(jì)算機(jī)兼容,無論在日常生活上還是在軍事上都具有較強(qiáng)的通用性,對于數(shù)據(jù)傳輸?shù)膽?yīng)用上也將是今后研究的熱點(diǎn)。而FPGA以其高靈活性、定制性、較強(qiáng)的通用性和擴(kuò)展性等優(yōu)點(diǎn),早已成為電子研究領(lǐng)域中的重要手段,二者結(jié)合使得數(shù)據(jù)傳輸接口體積向小型化微型化發(fā)展,同時也更加便于今后進(jìn)行相應(yīng)功能擴(kuò)展和二次開發(fā),使得本設(shè)計(jì)在高速數(shù)據(jù)輸出方面擁有更為廣闊的應(yīng)用前景。