《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于SoPC的嵌入式多功能儀器接口協議轉換器設計
基于SoPC的嵌入式多功能儀器接口協議轉換器設計
來源:電子技術應用2010年第11期
郭曉冉1,, 崔少輝1,, 王寶龍1,2, 方 丹1
1.石家莊軍械工程學院,, 河北 石家莊 050003,;2.北京航天指揮控制中心, 北京100094
摘要: 基于SoPC技術和嵌入式系統,利用Nios II軟核處理器的優(yōu)異性能和軟硬件協同設計的方法完成了GPIB,、UART和USB接口協議轉換器的設計,,實現了程控儀器接口GPIB與主控計算機RS-232、USB接口之間的轉換,。
中圖分類號: TP336
文獻標識碼: B
文章編號: 0258-7998(2010)11-0086-05
Design of on embedded multi-purpose instrumment interface protocol transformer based on SoPC
GUO Xiao Ran1, CUI Shao Hui1, WANG Bao Long1,2, FANG Dan1
1.Ordnance Engineering College, Shijiazhuang 050003,China,;2.Beijing Aerospace Control Center, Beijing 100094, China
Abstract: In order to slove the connection switch between instrument′s GPIB interface and computer′s USB or RS-232 interface, this paper achieves the design of GPIB, USB and RS-232 interfaces protocol tranformer,and the connection switch between instrument′s GPIB and computer′s USB or RS-232 is realized based on SoPC and embedded system, by using the excellent capability of Nios II soft core processor and software cooperate with hardware design method.
Key words : SoPC; Nios II; protocol transformer

 目前國內外在解決儀器GPIB接口與RS-232或USB接口的轉接問題時能常遵循“微處理器+專用接口控制芯片”和“微處理器+FPGA”的設計思路,,其中微處理器主要為單片機、ARM,、PowerPC 和 MIPS等硬核處理器,;FPGA的作用主要是用來實現專用接口芯片的功能,方法是在FPGA內部編寫專用接口芯片的IP核,?!拔⑻幚砥?專用接口控制芯片”的設計方案雖然成本較低,技術門檻也不高,,但是不利于系統的功能擴展與性能升級,;而“微處理器+FPGA”的設計方案中,IP核的編寫難度較大,,開發(fā)周期太長,;如果購買IP核,價格又過于昂貴,。綜合分析以上方法的優(yōu)缺點,,本文提出一種基于Nios II軟核處理器的SoPC解決方案,利用Nios II軟核處理器的優(yōu)異性能以及uC/OS-II嵌入式實時操作系統在執(zhí)行效率,、占用內存,、實時性能以及可擴展性等方面的優(yōu)勢,設計了GPIB,、RS-232和USB接口協議轉換器,,實現了GPIB-USB、GPIB-UART及UART-USB協議之間的轉換[1,2],。該方案具有設計靈活,、可重構、集成度高,、實現風險低,、開發(fā)周期短的優(yōu)點。1 總體設計方案
 設計選用Altera公司的低成本SoPC平臺——Cyclone II系列FPGA,。Cyclone II提供百萬級門陣列資源,,包含4 608~68 416個邏輯單元;提供1個全局時鐘網絡與4個鎖相環(huán),;支持的存儲器類型包括雙端口及單口RAM,、ROM和FIFO緩沖器,存儲器的數據總線最大可達36 bit,,頻率可達250 MHz,。Cyclone II系列提供最高622個用戶自定義I/O引腳,為接口協議轉換器的設計提供了充裕的接口資源,。圖1給出了基于Cyclone II平臺的儀器接口協議轉換器的總體設計方案,。

   圖1中的Nios II微處理器,、存儲器接口、片上存儲器,、定時器以及各類接口控制器都是由FPGA內部的邏輯單元和RAM資源提供的,。方案中RS-232接口協議的實現相對比較簡單,可以根據Altera公司提供的UART軟核配置獲得,而USB和GPIB協議部分均選用專用接口芯片來完成,。Nios處理器通過Avalon Switch Fabric總線將Nios II處理器、存儲器和接口控制器等系統組件橋接在一起,,形成一個接口統一的高性能SoPC系統[3],。其中,Nios II處理器主要完成協議之間的轉換,并將?滋C/OS-II操作系統內核移植到Nios II處理器上,。開發(fā)中使用的工具包括Quartus II(含有集成的SoPC Builder工具包),、Nios II IDE以及仿真軟件ModelSim,利用Verilog語言進行硬件設計,,利用C語言進行軟件開發(fā),。
2 接口硬件電路設計
2.1 GPIB接口電路設計

   GPIB接口芯片選用NI公司的標準GPIB控制芯片NAT9914,它能夠完成IEEE488.2標準協議中所有接口功能,,并且在軟件上與TI公司的TMS9914A及NEC公司的?滋PD7120兼容,,具有可編程時鐘和波特率,直接存儲器存取等功能,。NAT9914配套使用數據轉換器75160以及握手線和控制線轉換器75162完成GPIB接口的設計,。GPIB接口電路設計如圖2所示。

2.2 USB接口電路設計
 ISP1362是飛利浦公司推出的OTG(On-The-Go)產品,,在單芯片上集成了一個OTG控制器,、一個高級主控制器(PSHC)和一個基于飛利浦公司ISP1181的外設控制器。ISP1362的OTG控制器完全兼容USB2.0及OTG Suppliment 1.0協議,,主機和設備控制器兼容USB 2.0協議,,支持12 Mb/s的高速傳輸和1.5 Mb/s的低速傳輸。本設計中USB接口目前主要用來完成設備的功能,,但考慮到以后繼續(xù)開發(fā)中功能升級的需要,,所以選用ISP1362芯片來完成USB接口的設計,它可以實現繼續(xù)開發(fā)中USB的主機和OTG功能,。
2.3 RS-232接口電路設計
 SoPC Builder的標準組件庫中提供了UART組件,,使用這個組件可以方便地實現UART接口功能。為了保證UART的電氣相容性,,使用了一片MAX232來實現UART的電平轉換,。
   圖3為RS-232接口系統框圖,具有Avalon接口的通用UART核在FPGA上的Nios II處理器和外設之間實現了一種串行字符流通信方式,然后通過MAX232芯片實現電平轉換,,從而實現了RS-232接口功能,??梢愿鶕枰獙ζ溆布M行配置,改變其波特率,、奇偶校驗位,、停止位、傳輸的數據位以及其他可選的RTS-CTS流控制信號等,。

3  SoPC Builde中總體架構設計
 設計中的Nios II微處理器內核,、onchip_mem IP核、timer IP核,、 JTAG調試模塊jtag_uart,、Flash控制器cfi_flash、SDRAM控制器sdram,、UART組件uart以及用于液晶屏顯示的組件lcd等均使用SoPC Builder工具在標準組件庫中定制,而用于實現Avalon總線與片外NAT9914芯片和ISP1362芯片連接的接口控制器組件是通過自己編寫Verilog代碼來自定制的,。在SoPC Builder中通過Avalon Switch Fabric總線將各組件互連起來。
   Nios II嵌入式處理器是基于哈佛結構的RISC通用嵌入式處理器軟核,,能與用戶邏輯相結合,,編程至Altera的FPGA中。處理器具有32位指令集,,32位數據通道和可配置的指令以及數據緩沖,。它針對可編程邏輯進行了優(yōu)化設計,也為可編程單芯片系統設計了一套綜合解決方案[2],。Nios II處理器系列包括三種內核:高性能的內核Nios II/f,、低成本內核Nios II/e及性能/成本折中的標準內核Nios II/s。本系統采用高性能的內核Nios II/f以獲得最強的處理器性能,。
4 接口協議轉換器軟件開發(fā)
4.1 軟件總體框架

   軟件部分需要完成的任務主要包括:GPIB接口功能的開發(fā),、RS-232接口功能的開發(fā)和USB接口功能的開發(fā);μC/OS-II嵌入式操作系統在Nios II處理器上的移植,;在Nios II處理器上實現接口協議的轉換,,完成各個接口之間的相互通信。Nios II系統下的軟件分層架構如圖4所示,。

 Nios II 處理器硬件系統是軟件開發(fā)的基礎,,同時也是整個分層架構的核心。
 設備驅動軟件是實現處理器與設備通信的特殊程序,,它相當于硬件的接口,,操作系統只有通過這個接口才能控制硬件設備的工作,如果設備沒有對應的驅動軟件便不能正常工作,。
 硬件抽象層應用程序接口HAL API(Application Program Interface),,是由HAL系統庫提供的,它常與NewLib C標準庫集成在一起,為用戶訪問外設提供了標準的接口,,開發(fā)人員可以非常方便地使用這些接口來與底層硬件通信,。
 μC/OS-II內核在Nios II的HAL系統庫之上進行操作,它可以訪問所有的HAL服務,,并且能夠調用HAL的API函數,。μC/OS-II提供信號量、消息郵箱,、消息隊列,、事件標志、消息傳遞,、存儲管理,、時間管理等函數。本設計中主要用它來完成接口協議轉換時的多任務調度,。
 GPIB組件、USB組件和RS-232組件分別實現了Nios II微處理器和GPIB,、USB,、RS-232外設之間的通信。
 系統初始化部分用于初始化μC/OS-II,、GPIB組件,、USB組件和RS-232組件,實現所有應用程序的任務,、信號量,、隊列和事件標志的實時操作系統任務之間通信資源的創(chuàng)建。
 最外一層包含發(fā)送GPIB命令和數據任務,、接收GPIB數據和命令任務,、發(fā)送USB命令和數據任務、接收USB命令和數據任務,、發(fā)送RS-232命令和數據任務,、接收RS-232命令和數據任務等。同時,,該層通過信號量,、隊列和事件標志實現任務之間的通信。
4.2 GPIB接口的軟件開發(fā)
 GPIB數據通信部分的代碼編程方式主要有查詢方式和中斷方式兩種,。盡管查詢方式也能較好地實現數據通信的基本要求,,但其功能單一、系統資源利用率低,,不適合系統功能的維護和擴展,。因此,本設計中主要采用了中斷方式完成GPIB數據通信部分的代碼編程。引起NAT9914向處理器發(fā)出中斷信號的事件主要有發(fā)送數據事件(BO),、接收數據事件(BI),、接收數據結束事件(END)、接收GET命令事件和接收DCAS命令事件,。一旦這些事件發(fā)生,,NAT9914就會觸發(fā)Nios II處理器的外部中斷,Nios II終止正常工作,,將現場數據壓入堆棧保護,,并調用外部中斷處理函數,響應NAT9914芯片的中斷申請[3-4],。中斷處理服務流程圖如圖5所示,。

4.3 UART接口的軟件開發(fā)
 在 Nios II 下,由于HAL的存在,,UART編程已經變成標準的文件操作了,。Nios II 把對UART的流操作當成了一種文件操作。操作一個UART時,,只需要對它相應的設備驅動讀寫數據,。Altera提供的UART驅動程序是一個集成到HAL系統中的HAL字符模式設備驅動程序,可以采用標準輸入/輸出流的方式使用UART,。使文件指針指向打開的UART設備,,即可通過標準C庫函數fwrite、fread,、fprintf,、fget等來進行串口的讀/寫操作了。
 在寫設備程序時需要通過寄存器直接訪問UART,。altera_avalon_uart_reg.h定義了UART核的寄存器映像,,提供訪問底層硬件的符號常量,該文件的符號僅被設備驅動程序使用,。altera_avalon_uart.h,、altera_avalon_uart.c為HAL庫提供了UART核設備的驅動程序。
4.4 USB接口的軟件開發(fā)[5]
 ISP1362在設計中作為USB設備使用,。USB設備與Nios II系統通信的原理框圖如圖6所示,。系統上電后,Nios II首先自身進行初始化,,初始化完成后,,通過發(fā)送相關指令,完成對ISP1362芯片的初始化,。ISP1362芯片初始化完成后,,主機就會給設備分配地址,,并根據設備提供的描述符完成對設備的配置,從而實現USB設備的一般功能,。

   USB接口控制器的軟件結構如圖7所示,。軟件包括信息處理和中斷服務例程兩部分。硬件抽象層用于將數據從硬件傳輸到將要被主循環(huán)處理的存儲器空間中,。HAL4SYS.C,、HAL4D13.C、ISR.C,、CHAP_9.C,、D13BUS.C和MAINLOOP.C是實現USB設備控制器功能的六個主要的程序文件。其中,,HAL4SYS.C和HAL4D13.C程序文件作為硬件抽象層,ISR.C程序文件作為中斷服務例程,,CHAP_9.C和D13BUS.C作為協議層,MAINLOOP.C用于主循環(huán)控制,。


 ISP1362在Nios II系統中采用中斷的方法進行任務處理,。當ISP1362收到包含設備地址的輸出或設置事務時,通過軟件控制將接收到的數據存儲在適當的端點位置,,然后觸發(fā)一個中斷,。設備的中斷服務例程處理接收到的數據。當設備收到包含設備地址的輸入事務時,,如果ISP1362有準備傳給主機的數據,它從指定的端點送出數據,,然后觸發(fā)一個中斷,,設備的中斷服務例程做適當的處理,然后準備下一個輸入事務,。
4.5 μC/OS-II實時操作系統
 根據多功能儀器接口協議轉換器的特點,,設計需滿足實時性和并發(fā)性的要求,以便更好地支持多種接口協議運行時的多任務環(huán)境的調度,,所以應用軟件應該基于嵌入式實時操作系統,。考慮到?滋C/OS-II的規(guī)模較小,、實時性和可靠性較高,以及Nios II IDE開發(fā)環(huán)境對?滋C/OS-II的良好支持,,故操作系統選擇?滋C/OS-II。它通過為每個任務分配單獨的任務堆棧來保存任務工作環(huán)境,,提供任務管理與調度,,任務間的同步、互斥與通信,,時間和中斷管理,、內存的動態(tài)分配等多種系統服務。設計中?滋C/OS-II主要完成任務的管理與調度,通過創(chuàng)建消息郵箱,、信號量實現任務與任務之間,、任務與中斷服務程序之間的同步與互斥,以保證它們協調運行[6],。
5 系統功能驗證
5.1 RS-232與GPIB接口通信功能測試

 通過UART數據線將計算機的UART接口與接口轉換器的UART接口連接,,將接口轉換器的GPIB接口與Aglient 33250A連接。
 運行串口調試助手,,并在串口調試助手中進行如下設置:串口設置為COM1,,波特率設置為57 600,校驗位為NONE,,數據位為8,,停止位為1。設置完成后,,在串口調試助手中手動發(fā)送GPIB接口的SCPI命令,。
 以發(fā)送*IDN?命令為例,串口調試助手下方輸入*IDN?,,之后點擊發(fā)送,,觀察串口調試助手接收窗口的顯示變化,這時會顯示Received String: Agilent Technologies,33250A,0,2.04-1.01-2.00-03-2,其中Agilent Technologies,33250A,0,2.04-1.01-2.00-03-2是33250A接收到來自計算機串口的識別查詢命令后,,要將自己的標識發(fā)往的計算機串口號,。
5.2 RS-232與USB接口通信功能測試
 分別通過USB接口線和RS-232接口線將計算機主機USB接口與接口轉換器USB接口相連,同時通過UART數據線將計算機的UART接口與接口轉換器的UART接口連接,。
    運行USB調試助手和串口調試助手,,同時觀察USB接口發(fā)送數據到串口的情況。主機通過USB調試助手向協議轉換器發(fā)送8 B數據“6e 69 68 61 6f 6d 61 00”,,這8 B數據ASCII碼對應的字符串為“nihaoma”,,觀察USB調試助手接收區(qū)和串口調試助手的接收區(qū),這時USB調試助手接收區(qū)顯示“6e 69 68 61 6f 6d 61 00”,,串口調試助手的接收區(qū)顯示“usb received 8 bytes data is:nihaoma”,。

    系統基于SoPC平臺,采用軟硬件協同設計的方法完成了GPIB,、UART和USB接口協議轉換器的設計,。實現了RS-232接口的收發(fā)功能、USB設備控制器功能,、GPIB接口的控者,、聽者、講者,、源方掛鉤,、受方掛鉤五大功能,以及通過RS-232接口控制GPIB接口功能和通過USB接口控制RS-232接口功能,。
參考文獻
[1] 吳杲,顧亞平,,陳光礻禹  . USB-GPIB控制器設計[J].測控技術,,2004,23(3):59-61.
[2] 李蘭英. Nios II 嵌入式軟核SoPC設計原理及應用[M]. 北京:航空航天大學出版社,2006.
[3] 黃君凱,,吳延軍. RS232-GPIB控制器的設計[J]. 電子技術應用,,2006,32(3):90-92.

[4] National Instruments Corp. Nat9914 Reference Manual[Z]. 1995.
[5] Philips Semiconductors. ISP1362 Embedded Programming  Guide Rev: 0.9[Z]. 2002.
[6] [美] Jean J. Labrosse. 嵌入式實時操作系統?滋C/OS-II [M]. 邵貝貝,等譯. 第2版. 北京:北京航空航天大學出版社,,2003.

此內容為AET網站原創(chuàng),,未經授權禁止轉載。