王海濱,劉寶華,解傳軍,孔 挺
(海軍航空兵學院 遼寧 葫蘆島 125001)
在現代科研、實驗、教學、訓練中,模擬器起著重要作用,它是一種由計算機實時控制、多系統協調工作、能模擬作戰環境的模擬設備[1]。利用模擬器進行訓練不僅不受天氣等自然條件的制約,而且沒有各類保障以及訓練安全等因素的限制,相較于利用實裝訓練而言具有很多優勢,國內外許多單位為了保證訓練任務的圓滿完成,均針對不同訓練需求研制了各種不同種類和規模的訓練模擬器,并取得良好的訓練效益。
在模擬器的設計中,有些情況下需要大量的信息能夠快速有效地在模擬器的各個模塊之間進行高速傳遞,也就是說需要一定的通信接口協議來實現大量數據的高速交互[2]。在模擬器設計中,很多情況下需要使用USB總線作為連接PC機與模擬器中功能模塊的數據通道。USB(通用串行總線)總線是英特爾、微軟、BM、康柏等公司在1994年聯合制定的一種通用串行總線規范,它是一種廣泛應用于各類計算機的標準接口,具有可擴展性強、支持熱插拔、傳輸速率高等優點,特別適用于有大量數據實時傳輸要求的場合[3]。USB2.0支持三種速率,低速 1.5Mbit/s,全速 12Mbit/s,高速 480Mbit/s。本文旨在研究一種用于模擬器的高速USB傳輸模塊,并且要使系統具有傳輸速率高、可擴展性強的特點。本文研究的內容主要是結合USB2.0的Slave FIFO方式,給出了一種適合模擬器通信的設計方案,主要分為硬件系統設計和軟件系統設計兩大部分內容,系統硬件設計研究了基于Cypress公司的CY7C68013A與ALTERA公司EP1C6Q240的硬件設計方法,系統軟件設計主要介紹了同步Slave FIFO模式的FPGA編程實現方法以及CY7C68013A的固件程序設計。
在系統硬件設計中,選用ALTERA公司EP1C6Q240 FPGA作為核心處理器。選用Cypress公司的CY7C68013A作為上位機和FPGA中間的接口芯片。Cypress公司的EZ-USB FX2LP是世界上第一款集成USB2.0高速協議的芯片,它集成了1個USB數據收發器、1個SIE(串行接口引擎)、1個增強型的8051微控制器、8.5kB RAM、4kB FIFO和可編程的外圍接口[4]。選用FPGA作為處理器,能夠在速度和體積上有更好的適應性,可以增強模擬器通信接口設計的靈活性和可擴展性。FPGA選用ALTERA公司的EP1C6Q240,EP1C6Q240是ALTERA公司的一款高性價比的屬于CYCLONE系列的FPGA,采用0.13 μm工藝技術,工作電壓為 3.3 V,內核電壓為 1.5 V,有 5 980 個 LEs,MK4 RAM 塊(128×36bits)的數量為20個,總的RAM空間共計92 160Bit,最大用戶I/O為185個,內嵌2個鎖相環電路,可實時處理USB高速傳輸的數據,完全可以滿足系統需求。
系統硬件設計采用“CY7C68013A+EP1C6Q240”的架構,當有一個與FX2芯片相連的外部邏輯只需要利用FX2做為一個USB 2.0接口而實現與主機的高速通訊,而它本身又能夠提供滿足Slave FIFO要求的傳輸時序,可以做為Slave FIFO主控制器時,即可考慮用Slave FIFO傳輸方式。Slave FIFO傳輸示意圖如圖1所示。

圖1 Slave FIFO傳輸示意圖Fig.1 Transport schematic diagram for Slave FIFO
在Slave FIFO模式下,CY7C68013A固件的功能是配置Slave FIFO相關的寄存器以及控制FX2何時工作在此種模式下。當8051固件將相關的寄存器配置完畢,同時使其工作在Slave FIFO模式之后,FPGA即可按照Slave FIFO的傳輸時序,高速與主機進行數據通訊,8051固件可不參與數據的傳輸。
系統設計中CY7C68013A是USB2.0的紐帶,在CY7C68013A的前端放置LC6-2SC6芯片,然后LC6-2SC6芯片再與上位機USB接口相連接。FPGA程序加載方式通常可以采用JTAG方式和AS方式,系統硬件設計中,對于FPGA的配置方式采用PS模式進行加載,要完成FPGA的配置就需要將CY7C68013A的GPIO與EP1C6Q240的PS加載線進行連接,具體接口連接如圖2所示。

圖2 Slave FIFO總線與PS配置接口連接圖Fig.2 The interface diagram of Slave FIFO BUS and PS configuration
在系統軟件設計中主要研究基于同步Slave FIFO模式的高速USB通道數據傳輸。CY7C68013A有3種工作模式,本系統中通過固件初始化使其工作在同步Slave FIFO模式下。當CY7C68013A工作在同步Slave FIFO方式下時,則需要由外部控制器控制[5]。Slave FIFO是從機方式,即FX的CPU不直接參與USB數據處理,而是簡單地把FX作為USB和外部數據處理邏輯之間的通道。FX2在數據傳輸中主要利用了4kB的FIFO,其中端點2、4是輸出端點,端點6、8是輸入端點。數據在其內部傳輸控制是通過full(滿)和empty(空)兩個控制信號來完成的,當full為真時不能再寫,當empty為真時,則不能再對FIFO進行讀。在模擬器的USB數傳系統設計中,采用FPGA作為主控制器,由FPGA提供CY7C68013A的SLOE、SLRD和SLWR等信號,可以方便產生Slave FIFO時序所需邏輯,因此選擇Slave FIFO方式構建高速數據傳輸通道。Slave FIFO包括同步Slave FIFO和異步Slave FIFO兩者模式,相比較而言,同步模式傳輸速率更高,在模擬器中需要實時傳輸高速數據的情況下選擇了同步Slave FIFO模式進行設計。
為了實現同步Slave FIFO模式數據傳輸,需要對CY7C68013A進行固件程序設計。USB固件是運行在CY7C68013A中的代碼。可以采用兩種方法將USB固件下載到FX2的RAM中,一種是通過將固件存儲于片外EEPROM中,上電固件自行加載;另一種就是編寫能自動完成固件下載以及設備重枚舉功能的設備驅動程序。考慮到模擬器通信數據接口的可擴展性,設計中采用了第二種方法。Cypress公司提供的固件編程框架為簡化固件編程提供了有利條件,可在其基礎上進行完善修改。固件程序采用Keil C51 uVision2編寫,主要包括 fifo.c、FW.C、DSCR.A51、Ezusb.lib、USBJmpTb.OBJ等文件[6],其中fifo.c為外圍設備控制文件,主要進行USB功能設備的初始化以及用戶函數掛鉤的相關定義,在此文件中的void TD_Init(void)函數主要功能是完成FX2的初始化,主要是初始化各個端口以及各端口的先入先出緩沖區。對于選擇Slave FIFO的工作方式、工作頻率、時鐘源及同步方式都可以通過設置IFCONFIG寄存器的值來實現[7]。
為了實現同步Slave FIFO模式數據傳輸,還需要編寫FPGA程序實現對同步Slave FIFO的讀寫邏輯。通過構造有限狀態機來實現FPGA對于同步Slave FIFO的讀寫邏輯。根據模擬器通信數據傳輸的實際情況,本文設計了一種狀態機來實現同步Slave FIFO的批量讀寫任務,圖3為狀態機設計圖,Idle、State1、State 2、State 3 構成同步 Slave FIFO 寫邏輯,Idle、State 4、State 5、State 6 則構成同步 Slave FIFO 讀邏輯。

圖3 FPGA同步Slave FIFO讀寫狀態機Fig.3 Reading and writing FPGA state machine for synchronous Slave FIFO
2.2.1 同步Slave FIFO寫
Idle:當有寫事件發生時,從Idle轉到State1。
State1:指向 IN FIFO,設置 FIFOADR[1:0],進入 State2。
State2:判斷如 FIFO滿標志“真”,則在State2等待,否則轉到State3。
State3:將驅動數據發送到數據線上,激活SLWR使之有效,持續一個IFCLK,如數據未發完,則進入State2,否則進入Idle。
2.2.2 同步Slave FIFO讀
Idle:當有讀事件發生時,從Idle轉到State4。
State4:指向 OUT FIFO,設置 FIFOADR[1:0],進入 State5。
State 5:激活SLOE使之有效,判斷如FIFO空標志“真”,則在State5等待,否則轉到State6。
State 6:從數據線上讀取數據,激活SLRD使之有效,持續一個IFCLK,如接收數據未到預定數量,則進入State 5,否則進入Idle。
ALTERA公司FPGA芯片有3種配置下載方式,分別是AS方式(主動配置)、PS方式(被動配置)和JTAG配置方式。不同下載方式,其硬件連接方式不用。AS下載方式,程序燒寫到FPGA的配置芯片內,在上電后,FPGA芯片直接從配置芯片讀寫程序配置到FPGA,然后運行。JTAG下載方式,程序燒寫到FPGA芯片內RAM中,JTAG下載完成后直接運行,但是FPGA芯片內的程序掉電后無法保存,一般用于調試程序時使用。JTAG接口是一種業界標準,主要是用于芯片測試等功能。PS方式則是由外部計算機或控制器控制配置過程。而在本系統設計中,考慮到模擬器的可重構性、功能擴展和升級,首先建立USB控制端點通信管道,然后在此基礎上在線傳輸FPGA固件,對于FPGA加載采用PS模式。
在Quartus II環境中對FPGA進行開發,但QuartusⅡ編譯生成的SOF格式的配置文件不能直接用于PS模式下配置FPGA,需要進行數據轉換才能得到可用的配置數據。在QuartusⅡ中的開發工具可以生成多種配置文件,有數據轉換選項,可以將.SOF格式文件轉換為.rbf格式文件。Quartus II提供了轉換工具,轉換方法為點擊Quartus II軟件File菜單,選擇Convert Programming Files子菜單,其中Programming file type中選擇rbf文件格式,Mode選項選擇1-bit passive serial,即PS模式,在input files to convert列表中添加需要轉換的SOF文件,最后點擊generate,則在指定位置生成rbf文件。FPGA芯片型號決定了rbf格式配置文件的大小,必須注意配置文件長度的差異。EP1C6系列FPGA[8-9]生成的rbf文件為145 902字節,而EP1C12系列FPGA生成的rbf文件為290 405字節。
文中重點研究了一種應用于模擬器中的基于同步Slave FIFO模式的高速USB數據傳輸設計方法,相較于其他設計方法,采用FPGA作為系統的主控制器,可降低成本,能夠在速度和體積上有更好的適應性,可以增強模擬器通信接口設計的靈活性和可擴展性。在系統軟件設計中研究了CY7C68013A固件程序設計、FPGA對同步Slave FIFO的讀寫邏輯設計以及EP1C6Q240固件文件生成方法。采用PS加載模式的優點是無需用戶額外操作即可實現固件的自動升級和加載運行,大大提高了系統功能的可擴展性。經實際測試,本文設計的同步Slave FIFO數據傳輸系統,在上位機數據傳輸程序充分優化的情況下,采用48 MHz時鐘、16 Bit位寬Slave FIFO總線,高速USB通道數據傳輸速率可達40 MB/s,并且可以有效穩定傳輸,已經接近USB2.0極限速率。
[1]黃安祥.現代軍機先進仿真技術與工程設計[M].北京:國防工業出版社,2006.
[2]徐強,顧宏斌,高振興.飛行模擬器座艙儀表通信技術研究[J].信息技術,2012(1):1-4.XU Qiang,GU Hong-bin,GAO Zhen-xing.Researchon communication technology of the cockpit instrument in flight simulator[J].Information Technology,2012(1):1-4.
[3]薛圓圓.USB應用開發技術大全[M].北京:人民郵電出版社,2006.
[4]張俊濤,王豫瑩.基于FPGA和USB2.0的高速數據采集系統[J].儀表技術與傳感器,2011(10):46-48.ZHANG Jun-tao,WANG Yu-ying.High-speed data acquisition system based on FPGA and USB2.0[J].Instrument Technique and Sensor,2011(10):46-48.
[5]趙樂森,王旭柱.基于FPGA與USB2.0的實時數據采集與處理系統[J].微型機與應用,2011,30(17):25-27.ZHAO Le-sen,WANG Xu-zhu.Real-time data acquisition and processing system based on FPGA and USB2.0[J].Microcomputer&Its Applications,2011,30(17):25-27.
[6]Cypress CY7C68013A Datasheet[EB/OL].[2013-03].http://www.cypress.com.
[7]Cypress EZ-USB Manual Technical Reference[EB/OL].[2013-03].http://www.cypress.com.
[8]崔智軍,劉昭元,張瑜.基于FPGA的簡易觸摸電子琴設計[J].現代電子技術,2014(22):114-116.CUI Zhi-jun,LIU Zhao-yuan,ZHANG Yu.Design of simple touch electronic piano based on FPGA[J].Modern Electronics Technique,2014(22):114-116.
[9]張冬陽,薄振桐.基于FPGA與USB 2.0接口的紅外圖像采集系統設計[J].電子科技,2014(11):48-51.ZHANG Dong-yang,BO Zhen-tong.Infrared image acquisition system based on FPGA and USB 2.0 interface[J].Electronic Science and Technology,2014(11):48-51.