通用串行總線(USB)支持熱插撥,真正的即插即用。USB1.1在全速傳輸時可以達到12Mbps的傳輸速率;低速傳輸時傳輸速率可達1.5Mbps。USB電纜線只有4根,兩根是電源線,傳送5V電源,可用來向設備供電;另外兩根是信號線,用來傳輸串行數據。與傳統的RS-232串口比較,USB具有傳輸速度更快、集成化程度更高、編程化更好以及能夠支持多個設備等優點。因此在我們的設計中用它來和主機接口實現高速的數據通信。
在數據采集系統中,通常采用單片機或DSP(數字信號處理器)作為CPU,控制ADC(模/數轉換器)、存儲器和其他外圍電路的工作。但是單片機的時鐘頻率較低,難以適應高速數據采集系統的要求,而DSP雖然可以實現較高速的數據采集,但其速度提高的同時也提高了系統的成本。FPGA(現場可編程門陣列)有單片機和DSP無法比擬的優勢:時鐘頻率高,內部時延小;全部控制邏輯由硬件完成,速度快,效率高;組成形式靈活,可以集成外圍控制、譯碼和接口電路。因此,在本系統中我們用FPGA來控制A/D和USB芯片的運行。系統結構圖如圖1所示。
USB接口的數據采集系統的設計與實現" height="203" src="http://files.chinaaet.com/images/20111217/848e3c07-0a10-4b4a-9d2a-c8f712f65591.jpg" title="基于USB接口的數據采集系統的設計與實現" />
圖中FPGA采用ALTERA公司生產的APEX
2 A/D轉換環節
在該系統中我們采用TI公司的ADS7800。它是12位并行模數轉換器[2],接口簡單,很容易控制,最大采樣率可達333kHz,輸入的電壓范圍為-10V~+10V或-5V~+5V。ADS7800芯片的數字接口比較簡單,可以很方便地與其它數字系統相連接。對此芯片地控制有完全控制模式(full
在本系統中,對ADS7800芯片的控制是通過在FPGA芯片中編寫控制邏輯來實現的。我們采用了孤立控制模式,在此控制模式下,輸出數字信號是12位并行的。
利用FPGA芯片的可編程性可以使用芯片中的12個IO腳作為數據總線,另使用一些IO腳作為ADS7800的控制信號輸入,控制模/數變換器以32kHz的速率對模擬輸入信號進行采樣,采樣的數據存入FPGA的RAM中。本系統中所使用的FPGA芯片型號為EP1K30QC208-3,它具有著良好的特性,芯片內部共有3萬個邏輯門,容量相當大;6個嵌入式陣列塊,可是現最大為3k字節的RAM存儲器。
3 系統的設計與實現
USB接口芯片介紹
在設計中,我們選取Cyprees公司的EZ-USB系列芯片來實現USB接口設備方的控制。它是一款帶有多個外設、高度集成的芯片,其功能框圖如圖2所示。一個集成的USB收發器(transceiver)連接USB總線的D+和D-。串行接口引擎(SIE)對總線上的數據進行編/解碼、錯誤檢測、位填充以及USB規范規定的其它信號級操作的實現,并且最終把數據收或發到USB接口部分。
圖2
內部的微處理器是8051單片機的增強型,提高了執行速度并增加了一些新的特性。它使用內部RAM作為程序和數據存儲器;帶有16位地址線和8位數據線用來訪問外部存儲器,特有的快速傳輸模式可以在外部邏輯和內部USB FIFO間快速地傳遞數據。
3.2
在實現數據通信解決方案時,為完成數據流地正常傳輸,所建立的硬件平臺必須能夠提供兩個接口。首先必須要有一個實現數據傳輸的數據總線接口;除此之外,為了保證數據交互過程的正常實現,必須提供一個用于傳輸通信雙方控制和狀態信息的GPIO接口。
AN2135SC芯片提供了EZ-USB系列芯片的所有接口和功能。在本系統中,我們將利用這款芯片和FPGA芯片配合工作,建立一個基于USB總線接口的數據通信解決方案,以實現將采樣信號輸出到上位機中的功能。
在此解決方案中,我們選擇AN2135SC芯片工作在快速數據傳輸模式下的8位并行數據總線D[7…0]作為數據傳輸的總線接口;選擇AN2135SC芯片中的通用I2C總線主控制器接口作為數據通信過程中進行控制和狀態信息傳輸的GPIO接口。這樣,芯片中的一般GPIO引腳就可以用來實現其它功能,方便了系統的進一步擴充。圖3所示為AN2135SC芯片與FPGA芯片的接口示意圖。
為了使AN2135SC芯片中快速數據傳輸模式下的數據總線D[7…0]和通用I2C主控制器分別完成流數據傳輸和控制狀態信息傳輸的功能,需要在芯片的8051核中編寫程序,對AN2135SC芯片內部相關的專用寄存器進行配置[3]。
3.3
FPGA芯片是一種基于SRAM工藝制作的可編程器件,其編程數據存儲于器件的SRAM存儲器內。這是一種易失性的存儲器,在系統掉電時,FPGA芯片中的邏輯將會丟失,芯片功能隨即消失,上電后需要重新對其進行配置。利用此功能可以靈活地改變FPGA芯片中的邏輯結構。這是一種動態配置過程,這種方式稱為ICR方式(in circuit reconfigurable)。
本系統中對FPGA的配置采用PS(passive serial,即被動串行)方式。通常采用的是以下兩種配置方法:配置數據來自于ALTERA公司生產的串行配制器件或系統控制器,如 等,系統上電時可對ACEX1K系列芯片進行配置;配置邏輯也可以通過ALTERA公司生產的Master
本系統中采用一種比較獨特的PS方式對FPGA進行配置:將FPGA的5個配置管腳DCLK、CONF DONE、nCONFIG、nSTATUS、DATAO分別與USB控制器的5個I/O管腳USB
、
、
、
經過三態緩沖后相連;然后在軟件(驅動程序)編程中通過設置AN2135SC芯片內與這5個I/O管腳相關聯的I/O口寄存器PORTACFG、OEA、PORTCCFG、OEC來實現FPGA上電時通過PS方式的自動配置的(配置文件采用二進制格式,如rbf格式等),如圖4所示。
AN2135SC的I/O端口的定義以及配置命令見參考文獻,FPGA的PS配置方式及相應的時序見參考文獻。以下是實現FPGA上電后自動配置功能的部分代碼,實踐證明,這種自動配置方式具有節約成本、省時、高效的特點。
……
PORTACFG=O ;∥ Congigure
DONE in
OEA= ;
;∥
;∥ PC4 as Nstatus
……
OUTC&=0 ;∥
∣=
08;
……
3.4 數據傳輸通道的實現
本系統中EN USB芯片工作于快速數據傳輸模式。在這種模式下,芯片提供的一個8位并行的數據總線可以與外部的FIFO結構相連接。當USB總線開始一次數據傳輸時,芯片將發出一個讀或寫通信號。與此信號同步,芯片與外部FIFO每次可以完成一個字節的數據交互。把它和USB總線上的塊傳輸模式相結合,芯片并行總線上就可以實現大數據量的傳輸。
由于本解決方案是將EPGA輸出的數字信號發送到上位機去,因此在數據傳輸通道中只涉及到了USB總線讀的操作。在這種條件下,EP1K30中實現數據傳輸通道的程序流程圖如圖5所示。
在圖5中,EP1K30在采集到A/D轉換器的12位輸出數據之后,為把它發送到AN2135SC芯片中,必須首先轉換為8位數據,我們將12位數據分層高4位和低8位兩部分,分高、低字節兩次發送出去。其中高字節的高4位傳送12位數據的高4位,低4位填充0。A/D轉換器的12位數據分成兩個字節后,先傳送低字節,后傳送高字節,后傳送高字節。我們利用EP1K30芯片中的嵌入式陣列塊(EAB),借助ALTERA公司提供的雙端口RAM宏函數,生成一個2K大小的雙端口緩沖器來緩沖數據。
每次數據總線讀操作的啟動均由AN2135SC芯片發送一個讀選通信號來實現。AN2135SC芯片發送到EP1K30芯片的讀選通信號可以作為上述緩沖器數據輸出的同步信號,EP1K30芯片也利用這個選通信號來控制緩沖器的輸出地址指針。實現這部分功能的AHDL源代碼如下:
;
;
00000000000”then
上面的程序給出了這一次讀過程中讀地址指針的變化情況。隨著讀地址指針的變化,緩沖器中的數據順次輸出到數據總線D[7…0]上去。程序中 …0]為緩沖器的讀地址指針,
…0]是緩沖器的輸出端口,
…
是
芯片的數據總線
…
。
3.5 功能的實現
在 芯片與
芯片進行數據傳輸的同時,雙方需要一些握手信號來協調傳輸過程。為此,我們選擇了
芯片中的I2C總線主控制器作為
端口,用來傳輸一些必要的控制和狀態信息。
為了與 芯片中的I2C總線主控制器配合工作,我們在
芯片中編寫了一個I2C總線從模塊,使得I2C總線上的數據傳輸能夠順利進行。根據I2C總線傳輸規范,我們設定了一個狀態機
,它共有如下7個狀態:
。圖6給出了此狀態機的狀態圖。
由圖6可以看出,在開始條件( 產生后,
由空閑(
狀態進入地址狀態(
。我們在
中指定了兩個寄存器用于存儲從I2C總線上發送來的控制信號和將要發送到I2C總線上的狀態信號,它們分別是控制寄存器
‥0
和狀態寄存器
‥0
,這兩個寄存器地址的高4位均為“1110“。同樣,我們可以把1
芯片中所有由I2C總線尋址的寄存器的高4位地址都設定為“1110”。如圖6所示,I2C總線在地址期內發送的高位地址只有為“1110”時,1
才會產生響應。這樣做的好處是便于擴充其它I2C總線設備。
I2C總線在地址期內發送的最低地址用于指定隨后的數據傳輸是主要設備讀還是主設備寫,高電平表示主設備讀,低電平表示主設備寫。讀寫狀態轉換如圖6所示。因此,8位地址中可以用作尋址 端口的地址位為
‥
。
4
本文介紹了數據通信解決方案中數據傳輸通道和GPID功能的實現。實驗證明,兩個模塊配合工作即可實現數據的正常傳輸,從而順利地將A/D轉換器的輸出信號經USB總線傳送到上位機去。這個解決方案基于USB總線設計并且結合FPGA來進行控制,充分利用了USB總線數據傳輸速率高、USB設備可熱插撥等功能和FPGA速度快、效率高、配置靈活的特點。經實踐證明,它是一個功能完備、高效穩定的解決方案.