1 USB2.0概述 USB(通用串行總線)安裝過程簡單,不必考慮資源分配,不必關掉計算機電源,易擴展(可擴充至127個外部設備)。隨著USB升級到2.0標準,USB2.0總線的傳輸速度理論上可高達480 Mbit/s,不僅使USB總線完全能滿足需要大批量數據交換的外設的要求,而且使USB總線可應用于實時信號處理系統。 USB總線有以下4種數據傳輸方式: a)控制傳輸:主要用于主機把命令傳給沒備及設備把狀態返回給主機。任何一個USB設備都必須支持一個與控制傳輸類型相對應的端點0。 b)中斷傳輸:用來支持那些偶然需要少量數據通信、但服務時間受限制的設備。 c)批量傳輸:用來傳輸大量數據而沒有周期和傳輸速率嚴格要求的設備上。 d)同步傳輸:要求恒定速率,發送方和接收方都必須保證傳輸速率的匹配,不然會造成數據的丟失。 本系統中需要傳輸的數據量較大,且傳輸時機受設備控制。因此采用中斷傳輸+批量傳輸的設計方法,即PC主機起始使用中斷傳輸端點,采用中斷傳輸方式輪詢設備,如果發現設備有數據需要傳輸,立即轉到批量傳輸端點,在真正的數據傳輸過程中,采用批量傳輸方式傳輸數據。 2 ISP1581簡介 ISP1581是Philips公司推出的一種價格低、功能強大的USB設備接口芯片,完全符合USB2.0規范。ISP1581需外接微控制器或微處理器對它進行控制,它支持與大多數MCU和DSP的連接。ISP1581的外部接口有通用處理器模式和斷開總線模式(由引腳BUS_CONF控制)。在斷開總線模式下,處理器接口使用多路復用的8位地址/數據總線AD[7..0]和單獨的DMA(直接存儲器存取)總線DATA[15..0]。本系統采用斷開總線模式、16位數據總線的MDMA(主機DMA)方式。 3 硬件設計 其中USB接口芯片選用ISP1581,EPLD選用EPM7128S,MCU選用的是Cygnal的c8051f120單片機。 系統設計思路如下:ISP1581和MCU的連接采用斷開總線模式,數據傳輸使用MDMA模式,ISP1581的16位DMA總線與FIFO的輸出端相連,A/D模塊的16位數據輸出總線與FIFO的輸入端相連。FIFO的寫信號由定時芯片8254根據A/D采樣頻率產生,FIFO的讀信號直接由ISP1581的DIOR給出(MDMA模式下),MDMA開始傳輸信號也由8254產生,連接到MCU的一個中斷引腳,用于啟動MDMA。ISP1581和8254的片選信號以及8254的地址、數據、控制等信號均在EPLD內產生。通過8254和EPLD的設置,可以保證FIFO讀和MDMA寫時序的配合。在本系統中,c8051f02x需要大量訪問ISP1581的內部寄存器,因為c8051f系列采用數據空間和I/O空間統一尋址方式,必須采用full memory模式,即將ISP1581作為一個普通外設映射到c8051f02x外部存儲空間的I/O空間。 4 固件程序設計 本系統的固件程序包括單片機固件編程和EPLD方程設計兩部分。單片機固件編程用于完成對ISP1581控制,處理主機發送來的一切請求,啟動MD-MA開始傳輸命令等;EPLD方程設計用于產生各種外設的片選等,控制MDMA傳輸及FIFO、8254等外圍芯片的時序配合。 4.1 單片機固件編程 單片機程序處理一切由主機發送來的USB請求(包括標準請求和自定義的廠商請求),并進行相應的數據接收和發送。本系統使用cygnal的e8051f系列單片機,所以相應使用該單片機配套的silieon Labora-tories IDE集成開發環境,采用C51語言編程,使用該系列單片機配套的U-EC3仿真器,可以設斷點、在線編程、即時仿真、在線查看單片機內部寄存器的值。因為c8051f系列采用數據空間和I/O空間統一尋址方式,對ISP1581所有寄存器的訪問均與單片機對普遍外設的訪問方式相同。需要指出的是,C8051f12x系列單片機速度很快(最快可以達到100 MHz),且指令較傳統ISP8051系列有很大優化,大多數指令為單指令周期,這對提高DMA傳輸速度很有幫助,因為每次DMA傳輸有很多地方需要單片機的參與,具體參見下面"處理DMA請求"部分。下面重點論述使用MDMA部分的固件程序設計。 1)MDMA傳輸初始化 功能包括: a)設置DMA配置寄存器,指定DMA傳輸的數據總線位數(本系統用16位數據總線)。 b)設置DMA硬件寄存器,指定DMA傳輸方式(MDMA還是GDMA)以及設置DACK、DIOW、DIOR、DREQ信號的極性。本系統使用MDMA方式,設置這些信號為低有效。 c)設置DMA中斷使能寄存器,激活指定中斷源。我們設置可以產生DMA中斷的源有內部EOT信號和DMA傳輸結束(即DMA傳輸計數器值變為0)。需要注意的是,此處DMA中斷使能寄存器不同于ISP1581的中斷寄存器,兩者的設置方法不同。 d)設置選通時間寄存器,指定MDAMA方式下DIOW或DIOR的周期。應在滿足ISF1581最小讀寫周期的前提下,使該周期盡可能小,這可以顯著提高DMA傳輸速度。經測試,應設置該寄存器的值為0x01。這部分代碼可以放在程序的起始部分,需要注意的是,在初始化ISP1581的各寄存器時,應首先設置DMA命令寄存器為Ox11,使其處于上電復位狀態。 2)處理DMA請求 主機發送指定傳輸大小的DMA讀的廠商請求后(傳輸大小應等于每個中斷間隔內A/D采樣數據大小,以保證所有采樣數據不會丟失),單片機響應該請求,進入相應函數處理DMA請求。具體編程如下: a)設置DMA端點寄存器,指定DMA傳輸使用的端點。需要注意,為防止DMA端點寄存器與當前使用的端點索引寄存器相同,應首先指定端點索引寄存器為一個與DMA端點寄存器不同的端點值。 b)設置DMA傳輸計數器寄存器,指定本次DMA傳輸的字節數。當然,這個數越大,DMA傳輸的速度越快,但筆者經過測試發現,該數不要大于65535,否則可能MDMA傳輸會失敗。而且該數最好是512的整數倍,這可以保證沒有短包傳輸。 c)設置DMA命令寄存器為0x06(表示MDMA讀),開始MDMA傳輸。 d)程序應循環查詢DMA中斷寄存器的值,判斷本次傳輸是否完成,如果完成,則清DMA中斷寄存器,退出循環,完成本次DMA傳輸。 3)中斷程序設計 本系統中需要用到2個外部中斷,分別對應2個中斷程序。第1個中斷函數用于讀出并保存當前所有ISP1581發出的中斷的拷貝。注意,我們不僅要保存中斷寄存器的值,還要保存DMA中斷寄存器的值。需要強調的是,因為ISP1581是全中斷驅動的,所有的信息交互都通過中斷完成,PC機對ISP1581的任何操作都會引起ISP1581相應的中斷,進而單片機通過查詢1581中斷寄存器判斷并處理中斷。第2個中斷函數是8254發給單片機的,當完成指定周期的A/D數據采樣后,8254通過本中斷程序通知單片機啟動MD-MA開始傳輸標識,即轉到上述"處理DMA請求"部分,讀FIFO中的數據。本系統設計8254每隔5 ms左右產生一次中斷,進行DMA傳輸。 系統采用中斷傳輸+批量傳輸的方法設計中斷程序,即如果數據采集模塊有數據需要傳給主機,首先采用中斷傳輸方式傳輸數據通知主機,方法是在本段函數的起始部分通過固定的中斷傳輸端點發送8字節數據以與驅動程序部分吻合,然后使用批量傳輸端點實際傳輸數據;而主機端應用程序則不斷輪詢該中斷傳輸端點,若接收到8個字節固定格式的數據,馬上采用批量傳輸方式接收數據。該方法不但利用了中斷傳輸方式的實時性(1 ms以內),而且充分利用了批量傳輸的高速率。若FIFO的讀寫和8254的時序設計得當,利用該方法,可以實現10 MB/s以上的數據錄入。在實驗中,我們已經做到了8 MB/s的錄入速度。 USB驅動程序將另文詳述。筆者認為,第1個中斷程序的優先級應不低于第2個程序,這樣可以保證ISP1581發出的所有中斷可以立即得到執行。 4.2 EPLD方程設計 EPLD的功能主要包括提供ISP1581的cs及DREQ信號,提供8254的片選、地址、數據、控制、時鐘輸入等信號,以及提供FIFO的FIFO_RESET、FIFO-WR、FIFO-RD等信號和A/D轉換模塊的CLK、START等信號。重點是如何使用MDMA傳輸的幾個最重要信號DREQ、DACK、DIOW、DIOR、EOT信號。查詢芯片手冊,在MDMA模式下,DREQ為輸入信號,DACK、D1OW、DIOR、EOT為輸出信號。也就是說,當設置DMA命令寄存器為0x06(主機DMA讀)時,ISP1581開始不停地查詢DMA請求信號DREQ是否為低,若DREQ為低,則傳輸開始;否則一直查詢。因此,可在EPLD中設置DREQ接地,這樣可以保證當設置DMA命令寄存器為0x06時,1581立即進行傳輸。D1OR為輸出信號,由1581提供,可直接作為FIFO的讀信號;FIFO的寫信號由8254的一個輸出引腳提供,8254應根據A/D采樣頻率初始化該定時器,輸出該引腳。 5 結束語 本文提出了一種使用USB2.0芯片。ISP1581實現數據采集系統的設計方案。MDMA的DIOR周期為120 ns左右,因此ISP1581在主機DMA模式下,理論上最高傳輸速度應為約16.6 MB/s(1000/120×16=132.8 Mbit/s=16.6 MB/s)。在實驗中,我們使用的主機端配置為Windows2000+PⅣ3.0 GHz+512 MBDDR RAM,在批量模式下傳輸速度現已達到13 MB/s~15 MB/s(主機配置不同,傳輸速度也會相應有所改變),中斷模式下傳輸速度達到1 MB/s~1.5 MB/s(約每隔0.5 ms進行一次中斷傳輸,每次傳輸512字節),基本達到ISP1581 MDMA方式下速度上限,且傳輸模式、每次采樣時間間隔、每次采樣數據大小均可通過軟件調節。該系統現已實際投產,應用于某雷達。 |