亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的IEEE488接口協(xié)議實(shí)現(xiàn)及驅(qū)動(dòng)程序開發(fā)

        2022-08-26 05:24:12羅顯志周楊羅
        關(guān)鍵詞:功能設(shè)備設(shè)計(jì)

        劉 陽(yáng),羅顯志,周楊羅,李 政

        (湖北大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,武漢 430062)

        0 引言

        在自動(dòng)測(cè)試系統(tǒng)中,IEEE488總線扮演著重要的角色。它是一種面向儀器設(shè)備的通用總線接口,也被稱為GPIB總線[1-2]。該接口最早由HP公司提出,經(jīng)過幾十年的發(fā)展,已經(jīng)形成了一套行業(yè)標(biāo)準(zhǔn)。且該接口能滿足設(shè)備之間互相通信的功能,實(shí)現(xiàn)信息共享的需求。

        近年來(lái),國(guó)內(nèi)在自動(dòng)化控制、精密儀器研制等領(lǐng)域發(fā)展迅猛,在醫(yī)療、軍工等領(lǐng)域,對(duì)測(cè)試系統(tǒng)的需求越來(lái)也越大。GPIB作為業(yè)界使用最廣泛的測(cè)試總線,不僅成本低,而且傳輸穩(wěn)定,在未來(lái)的一段時(shí)間內(nèi),國(guó)內(nèi)市場(chǎng)仍然有一定的需求量。

        市面上的GPIB轉(zhuǎn)換器基本都采用專用接口芯片來(lái)設(shè)計(jì),此類芯片連接微處理器,通過讀寫寄存器等操作能很

        方便的實(shí)現(xiàn)GPIB接口的所有功能。目前,能自主生產(chǎn)基于IEEE-488協(xié)議的專用GPIB接口芯片的公司僅NI、TI、NEC、Intel幾家[3],但該類芯片都已停產(chǎn),可供購(gòu)買的成品GPIB轉(zhuǎn)換器如NI-GPIB-USB-HS價(jià)格在3 000元以上,對(duì)國(guó)內(nèi)龐大的用戶群體來(lái)說(shuō)成本過高。國(guó)內(nèi)在測(cè)試接口領(lǐng)域的研究較少,僅有電子科大等幾個(gè)團(tuán)隊(duì),且市面上國(guó)產(chǎn)轉(zhuǎn)換器占有率不高。隨著ASIC技術(shù)的飛速發(fā)展,F(xiàn)PGA在嵌入式領(lǐng)域得到了廣泛應(yīng)用,它靈活、穩(wěn)定、可移植性強(qiáng),所以能夠用來(lái)替代一些專用芯片。

        基于以上因素,本文詳細(xì)闡述使用FPGA芯片來(lái)實(shí)現(xiàn)IEEE488總線協(xié)議的方案及實(shí)現(xiàn)流程,為相關(guān)開發(fā)人員提供可行性參考。

        1 總體設(shè)計(jì)

        基于FPGA的IEEE488協(xié)議轉(zhuǎn)換器的設(shè)計(jì)主要包括硬件和軟件兩部分。硬件部分包括硬件電路設(shè)計(jì)與硬件控制程序設(shè)計(jì);軟件部分主要是驅(qū)動(dòng)程序開發(fā),最后通過用戶程序與儀器通信。該方案組建一套完整的測(cè)試系統(tǒng),其總體結(jié)構(gòu)[4]如圖1所示。

        圖1 總體結(jié)構(gòu)框架

        該方案的核心在于硬件控制程序設(shè)計(jì),開發(fā)前需要對(duì)IEEE488總線協(xié)議做深入研究,同時(shí)剖析NI的NAT9914的內(nèi)部結(jié)構(gòu),掌握其協(xié)議的工作原理。硬件控制程序的主要內(nèi)容是模擬GPIB接口的十種功能,然后通過讀寫控制模塊控制數(shù)據(jù)準(zhǔn)確無(wú)誤的傳輸,在PC與儀器之間搭建數(shù)據(jù)傳輸?shù)臉蛄?。軟件?qū)動(dòng)程序連接PC與轉(zhuǎn)換器,實(shí)時(shí)發(fā)送程控指令并接收返回的數(shù)據(jù)。

        2 硬件電路設(shè)計(jì)

        硬件電路設(shè)計(jì)主要包括電源模塊、USB-UART模塊、FPGA主控模塊及外圍電路、GPIB接口模塊。硬件設(shè)計(jì)框架如圖2所示。

        圖2 硬件設(shè)計(jì)框架

        2.1 電源模塊

        電源模塊為整個(gè)系統(tǒng)提供穩(wěn)定電壓。電源芯片使用MC34063,該芯片性能好,市場(chǎng)應(yīng)用廣泛,可實(shí)現(xiàn)升壓和降壓功能,但其實(shí)現(xiàn)電路不同。本系統(tǒng)采用USB接口供電,其電壓大致為5.2 V左右,所以需設(shè)計(jì)降壓電路。FPGA芯片的不同BANK所需電壓不同,因此添加LM1084可調(diào)輸出線性穩(wěn)壓器,提供3.3 V、2.5 V、1.2 V工作電壓。電源電路部分設(shè)計(jì)如圖3所示。

        圖3 電源模塊

        該芯片內(nèi)部有恒定的1.25 V基準(zhǔn)電壓,輸出電壓與R35和R36的阻值有關(guān),其輸出電壓的計(jì)算公式為:

        Vout=1.25*(1+R36/R35)

        (1)

        由公式(1)推出,為輸出5 V電壓,R36和R36的阻值分別為10 K和3K3。

        2.2 USB-UART模塊

        USB-UART模塊建立PC端與主控芯片的數(shù)據(jù)通道。協(xié)議轉(zhuǎn)換芯片采用CH340G-USB轉(zhuǎn)串口芯片,該芯片外圍電路簡(jiǎn)單,性能穩(wěn)定,資料豐富。電路中將Rx與Tx引腳接入FPGA芯片進(jìn)行數(shù)據(jù)交換,D+與D-接入U(xiǎn)SB接口數(shù)據(jù)引腳與PC端進(jìn)行數(shù)據(jù)交換。該芯片工作時(shí)需外接12 M晶振,同時(shí)為保證系統(tǒng)時(shí)鐘的同步,引出時(shí)鐘輸入引腳與FPGA芯片相連。USB-UART模塊如圖4所示。

        圖4 USB-UART模塊

        2.3 FPGA主控模塊及GPIB接口模塊

        FPGA主控芯片的選擇參考市場(chǎng)兩大主流FPGA芯片廠商,再結(jié)合本項(xiàng)目的設(shè)計(jì)要求,最終采用Xilinx的Spartan-6系列的XC6SLX4芯片,該芯片的引腳數(shù)和容量能滿足設(shè)計(jì)需求,且網(wǎng)絡(luò)資源充足,易上手。

        主控芯片的差分引腳主要與GPIB接口的16根信號(hào)線和UART模塊的數(shù)據(jù)線連接,以實(shí)現(xiàn)接口的控制和數(shù)據(jù)傳輸。外圍電路還包括JTAG下載電路、SDRAM外部存儲(chǔ)模塊以及時(shí)鐘和復(fù)位電路。JTAG下載調(diào)試電路使用XCF01SVO20C-FPGA配置芯片,系統(tǒng)外部時(shí)鐘采用50 M晶振。此外,使用K4S511632B-TC75存儲(chǔ)芯片設(shè)計(jì)SDRAM外部存儲(chǔ)模塊,防止因FPGA芯片內(nèi)部緩存不足造成數(shù)據(jù)丟失的現(xiàn)象。主控模塊還外接了LED小燈等外圍電路,用來(lái)作為數(shù)據(jù)讀寫的指示燈。

        傳統(tǒng)的GPIB接口電路模塊一般由專用GPIB接口芯片和總線收發(fā)器組成。本方案使用FPGA芯片模擬GPIB接口功能,因此無(wú)需GPIB接口芯片和總線收發(fā)器。但GPIB接口工作電壓是5 V,而FPGA芯片的最高電壓為3.3 V,故在FPGA芯片與GPIB接口之間添加MOS-N模塊實(shí)現(xiàn)電平轉(zhuǎn)換。

        3 硬件控制程序設(shè)計(jì)

        硬件控制程序是設(shè)計(jì)的核心與難點(diǎn)。在設(shè)計(jì)之前,需要對(duì)IEEE488總線協(xié)議和GPIB接口芯片的內(nèi)部結(jié)構(gòu)做深入研究。

        3.1 IEEE488總線介紹

        IEEE488總線[5-6]自提出以來(lái),一直被廣泛應(yīng)用于測(cè)試、控制等領(lǐng)域。它由數(shù)據(jù)線、三根握手線、五根接口管理線以及地線組成。三根握手線配合工作,通知總線何時(shí)傳輸數(shù)據(jù),何時(shí)接收數(shù)據(jù),確保數(shù)據(jù)傳輸準(zhǔn)確無(wú)誤。接口管理線ATN控制總線上傳輸?shù)氖菙?shù)據(jù)還是指令,EOI提示總線何時(shí)傳輸結(jié)束等,IFC設(shè)置所有的設(shè)備于靜止?fàn)顟B(tài),REN使能設(shè)備進(jìn)行遠(yuǎn)程編程,SRQ提醒控制器是否需要服務(wù)。在工作時(shí),測(cè)試系統(tǒng)存在3種角色,即控者負(fù)責(zé)發(fā)送各種命令,講者發(fā)送數(shù)據(jù),聽者接收數(shù)據(jù)。

        典型的GPIB專用接口芯片NAT9914的內(nèi)部電路主要分為兩部分。一部分面向GPIB總線,主要包括GPIB接口的十種功能以及各種緩沖器和譯碼器。另一部分面向微處理器,通過編寫驅(qū)動(dòng)程序讓微處理器訪問25個(gè)可尋址寄存器,其主要類型有數(shù)據(jù)類寄存器、中斷類寄存器、地址類寄存器。NAT9914的內(nèi)部結(jié)構(gòu)[7-8]如圖5所示。

        圖5 NAT9914內(nèi)部結(jié)構(gòu)

        GPIB接口共定義了10種接口功能,分別是源方和受方掛鉤功能、講者、聽者、控者、器件清除功能、服務(wù)請(qǐng)求功能、并行輪詢功能、遠(yuǎn)控/本控功能、器件觸發(fā)功能。其中前五種是基本接口功能,后5種是輔助接口功能。基本功能是所有帶GPIB接口的設(shè)備必須具備的,保證測(cè)試系統(tǒng)中各儀器之間能相互通信,輔助功能讓測(cè)試系統(tǒng)更便捷、更智能。

        3.2 GPIB接口功能的程序設(shè)計(jì)與仿真

        該方案的硬件程序使用Verilog硬件描述語(yǔ)言進(jìn)行開發(fā),軟件采用Xilinx的ISE。整體設(shè)計(jì)采用自頂向下的設(shè)計(jì)思想,將整個(gè)系統(tǒng)拆分成若干個(gè)子功能模塊,其中包括串口數(shù)據(jù)收發(fā)模塊、數(shù)據(jù)讀寫控制模塊、中斷模塊以及GPIB接口功能模塊,每個(gè)子功能模塊又有不同的狀態(tài),同一時(shí)刻只允許存在同一種狀態(tài),不同的狀態(tài)又通過相互聯(lián)系的小狀態(tài)機(jī)進(jìn)行切換,且狀態(tài)的改變與之前設(shè)備所處的狀態(tài)關(guān)聯(lián),這樣就構(gòu)成了一個(gè)相互排斥又相互聯(lián)系的狀態(tài)機(jī)。通過各模塊的接口功能狀態(tài)機(jī)的聯(lián)系,最總形成一個(gè)頂層GPIB接口功能狀態(tài)機(jī)。

        GPIB接口功能的實(shí)現(xiàn)依賴于各個(gè)功能模塊的實(shí)現(xiàn),由于篇幅有限,該章節(jié)主要對(duì)GPIB接口的講者(T)、聽者(L)功能、FIFO模塊的設(shè)計(jì)進(jìn)行詳細(xì)描述,并利用Modelsim軟件進(jìn)行仿真驗(yàn)證。

        3.2.1 講功能(T)設(shè)計(jì)

        講功能[9-10]的主要作用是將用戶發(fā)送的程控指令或者數(shù)據(jù)通過總線發(fā)送到測(cè)試系統(tǒng)中的儀器中,或者將儀器自身的工作狀態(tài)以及參數(shù)等信息通過數(shù)據(jù)總線傳輸?shù)絇C端。只有當(dāng)系統(tǒng)控者尋址講者或者設(shè)備通過ton指令將自身設(shè)置為講者時(shí),才賦予這種功能。同一時(shí)刻,一個(gè)測(cè)試系統(tǒng)中只存在一位講者。

        講功能的狀態(tài)分為TIDS(講者空閑態(tài))、TADS(講者被尋址態(tài))、TACS(講者活動(dòng)態(tài))、SPAS(串行活動(dòng)態(tài))、SPIS(串行空閑態(tài))、SPMS(串行模式)共6種,按照協(xié)議功能又分為講者數(shù)據(jù)傳輸和串行輪詢兩組事件,分別如圖6(a)和圖6(b)所示。講者狀態(tài)圖如圖5所示。

        圖6 講功能狀態(tài)圖

        事件(a)中,在設(shè)備上電后,講功能同時(shí)進(jìn)入TIDS和SPIS兩種狀態(tài),此時(shí)不具備數(shù)據(jù)傳輸能力。當(dāng)設(shè)備被尋址為講者(即MTA=1)或設(shè)備通過ton指令設(shè)置自身為講者,且ACDS為活動(dòng)態(tài)時(shí),講功能進(jìn)入被尋址態(tài),此時(shí)講者準(zhǔn)備好發(fā)送數(shù)據(jù)。ATN信號(hào)線決定系統(tǒng)傳輸?shù)臄?shù)據(jù)類型,當(dāng)ATN為假時(shí),表示GPIB總線上傳輸?shù)氖菙?shù)據(jù),當(dāng)SPMS是活動(dòng)態(tài)時(shí),設(shè)備進(jìn)入SPAS狀態(tài);當(dāng)SPMS為假時(shí),講者進(jìn)入TACS狀態(tài),此時(shí)配合SH功能將數(shù)據(jù)傳到GPIB數(shù)據(jù)總線。當(dāng)設(shè)備處于SPAS或TACS狀態(tài)時(shí),若ATN為真,說(shuō)明系統(tǒng)控者發(fā)送命令,講功能返回尋址態(tài)。

        事件(b)中,若SPE為真,即允許串行查詢,聽者進(jìn)入串行輪詢模式狀態(tài),并參與串行輪詢。當(dāng)系統(tǒng)活動(dòng)控者發(fā)送SPD命令,即禁用串行輪詢。聽者進(jìn)入串行輪詢空閑狀態(tài)。

        講功能的Verilog設(shè)計(jì)包括了圖5中兩組狀態(tài),每種狀態(tài)的轉(zhuǎn)換都通過分析當(dāng)前的狀態(tài)機(jī)來(lái)轉(zhuǎn)換,結(jié)合各狀態(tài)之間相互排斥又相互聯(lián)系的特征,TIDS和SPIS采用并行語(yǔ)句執(zhí)行。(b)狀態(tài)的具體實(shí)現(xiàn)的核心部分代碼如下所示:

        case (current_state_2)

        T_STATE_2_SPIS :

        if (event2_1)

        current_state_2 <= T_STATE_2_SPMS;

        T_STATE_2_SPMS :

        if (event2_3)

        current_state_2 <= T_STATE_2_SPIS;

        else if (event2_2)

        current_state_2 <= T_STATE_2_SPIS;

        default :

        current_state_2 <= T_STATE_2_SPIS;

        endcase

        assign event2_1 = SPE 1'b1 & ACDS 1'b1;

        assign event2_2 = SPD 1'b1 & ACDS 1'b1;

        assign event2_3 = IFC 1'b1;

        通過編寫Testbench仿真文件,使用Modelsim仿真后波形如圖7所示。根據(jù)分析可以看出,講功能的每個(gè)狀態(tài)嚴(yán)格按照狀態(tài)圖進(jìn)行變換,且同一時(shí)刻只存在一種活動(dòng)態(tài)。

        圖7 講功能仿真波形

        3.2.2 聽功能(L)設(shè)計(jì)

        聽功能[11]的主要作用是接收儀器發(fā)送過來(lái)的狀態(tài)信息或者主控設(shè)備的指令。同一時(shí)刻,一個(gè)測(cè)試系統(tǒng)中可以存在多位聽者。

        聽功能的狀態(tài)分為L(zhǎng)IDS(聽者空閑態(tài))、LADS(聽者被尋址態(tài))、LACS(聽者活動(dòng)態(tài))、LPIS(聽者主空閑態(tài))、LPAS(聽者主被尋址態(tài)),其中后兩種為擴(kuò)展聽者(LE)狀態(tài)。聽者狀態(tài)如圖8所示。

        圖8 聽功能及擴(kuò)展聽功能狀態(tài)圖

        狀態(tài)圖(a)是聽功能的狀態(tài)圖,當(dāng)設(shè)備上電后,聽功能同時(shí)進(jìn)入LIDS和LPIS兩種狀態(tài)。當(dāng)設(shè)備被尋址為聽者(MLA=1)或者設(shè)備通過lon指令設(shè)置自身為聽者,且ACDS為活動(dòng)態(tài)時(shí),聽功能進(jìn)入被尋址態(tài),此時(shí)聽者準(zhǔn)備好接收數(shù)據(jù)。若ATN為假,表示GPIB總線上傳輸數(shù)據(jù),此時(shí)聽者變?yōu)長(zhǎng)ACS狀態(tài),并且配合AH功能從數(shù)據(jù)總線上接收數(shù)據(jù)。若ATN為真,表示GPIB總線傳輸命令,聽者由活動(dòng)態(tài)變?yōu)楸粚ぶ窇B(tài)。當(dāng)控者發(fā)出unl命令,宣布測(cè)試系統(tǒng)內(nèi)所有的設(shè)備取消聽者狀態(tài),且ACDS為真時(shí),聽者進(jìn)入空閑態(tài)。

        狀態(tài)圖(b)是擴(kuò)展聽功能的狀態(tài)圖,在LPIS狀態(tài)下,聽功能可以識(shí)別它的主地址,但無(wú)法響應(yīng)它的副地址。當(dāng)聽功能被尋址且處于接收數(shù)據(jù)狀態(tài)時(shí),聽功能進(jìn)入被尋址主狀態(tài),此時(shí)聽功能可以識(shí)別并響應(yīng)它的副地址。

        聽功能的Modelsim仿真波形如圖9所示。

        圖9 聽功能仿真波形

        3.2.3 FIFO模塊設(shè)計(jì)

        為提高系統(tǒng)傳輸數(shù)據(jù)的穩(wěn)定性,避免因控制端和數(shù)據(jù)端傳輸速率差異造成的數(shù)據(jù)丟失現(xiàn)象,設(shè)計(jì)FIFO模塊作為數(shù)據(jù)緩沖區(qū)。

        FIFO模塊連接讀寫控制端和數(shù)據(jù)總線端。讀寫控制部分由Clk、Reset_Fifo、Read、Write、Buffer_full組成,data_in[7:0]和data_out[7:0]連接數(shù)據(jù)總線。當(dāng)轉(zhuǎn)換器身份為講者時(shí),從FIFO中取數(shù)據(jù)放入總線,若FIFO數(shù)據(jù)為空,則讀寫控制端寫入準(zhǔn)備發(fā)送的數(shù)據(jù)。當(dāng)轉(zhuǎn)換器身份為聽者時(shí),將總線上的數(shù)據(jù)存入FIFO,若FIFO存在數(shù)據(jù),則通知讀寫控制端讀取數(shù)據(jù)。FIFO的RTL視圖如圖10(a)所示。Modelsim仿真波形如圖10(b)所示。

        圖10 FIFO RTL視圖與仿真波形

        3.3 內(nèi)部寄存器設(shè)計(jì)

        NAT9914芯片的工作主要通過配置內(nèi)部寄存器來(lái)完成。設(shè)計(jì)中通過讀寫控制模塊對(duì)各個(gè)寄存器進(jìn)行配置,從而控制接口的數(shù)據(jù)傳輸。

        設(shè)計(jì)的寄存器主要有地址寄存器、GPIB總線寄存器、GPIB狀態(tài)寄存器、接口功能寄存器、GPIB控者寄存器、讀寫控制寄存器,中斷控制寄存器。其中,中斷寄存器ISR0與聽、講功能相關(guān),其結(jié)構(gòu)如表1所示。

        表1 ISR0寄存器

        ISR0可讀寄存器的BI、BO、END位分別代表數(shù)據(jù)接收位、數(shù)據(jù)發(fā)送位、數(shù)據(jù)傳輸結(jié)束位。當(dāng)設(shè)備為系統(tǒng)活動(dòng)控者或者講者時(shí),BO位置1,此時(shí)可以向系統(tǒng)內(nèi)其他設(shè)備發(fā)送命令或數(shù)據(jù);當(dāng)設(shè)備為聽者時(shí),當(dāng)數(shù)據(jù)接收寄存器接收到數(shù)據(jù)時(shí),BI位置1;當(dāng)接收到結(jié)束符0x0A時(shí),END位置1,結(jié)束本次數(shù)據(jù)傳輸。

        3.4 GPIB數(shù)據(jù)傳輸

        數(shù)據(jù)傳輸是硬件控制程序的核心部分,也是該協(xié)議轉(zhuǎn)換器要實(shí)現(xiàn)的最主要功能。

        在各個(gè)子功能模塊完成的基礎(chǔ)上,構(gòu)建從UART模塊到GPIB接口模塊的數(shù)據(jù)通道。數(shù)據(jù)的傳輸主要依靠設(shè)備的聽、講功能以及讀寫控制模塊,還有FIFO存儲(chǔ)模塊。聽講功能控制數(shù)據(jù)傳輸?shù)姆较?,F(xiàn)IFO模塊控制數(shù)據(jù)的存取。讀寫控制模塊直接配置狀態(tài)寄存器,進(jìn)而配置GPIB的接口功能,并配合FIFO模塊完成數(shù)據(jù)的存取。在程序中設(shè)計(jì)了GPIB_Read和GPIB_Write兩個(gè)資源文件,用來(lái)實(shí)現(xiàn)GPIB的讀寫操作。在GPIB_Read模塊中,輸入輸出端口名分為GPIB接口、外部接口、FIFO模塊3部分。GPIB接口部分用來(lái)判斷當(dāng)時(shí)是否處于聽活躍狀態(tài),外部接口模塊負(fù)責(zé)產(chǎn)生數(shù)據(jù)中斷等信號(hào),F(xiàn)IFO模塊則提示是否存在數(shù)據(jù)以及數(shù)據(jù)的存取。GPIB_Write模塊的結(jié)構(gòu)與GPIB_Read模塊基本類似。讀寫的邏輯結(jié)構(gòu)如圖11所示。

        圖11 GPIB讀/寫流程圖

        4 軟件驅(qū)動(dòng)程序設(shè)計(jì)

        4.1 VISA簡(jiǎn)介

        VISA(virtual instrument software architecture),即虛擬儀器軟件結(jié)構(gòu)[12-14]。VISA是一種通用的I/O標(biāo)準(zhǔn),提供了一套完整的、易操作的函數(shù)庫(kù),存在于計(jì)算機(jī)系統(tǒng)內(nèi),通過軟件層與儀器建立連接。

        傳統(tǒng)的儀器,不同的接口需要開發(fā)不同的驅(qū)動(dòng)程序來(lái)供用戶使用,這將耗費(fèi)大量的人力物力來(lái)開發(fā)與維護(hù)。VISA獨(dú)立于接口、語(yǔ)言和操作系統(tǒng),采用統(tǒng)一的操作函數(shù),無(wú)論是串口、GPIB、LAN接口,都使用VISA函數(shù)來(lái)操作,體現(xiàn)了VISA的硬件無(wú)關(guān)性。統(tǒng)一的核心函數(shù)與其它無(wú)法合并的、與儀器類型相關(guān)的功能函數(shù)一起構(gòu)成了自底向上的I/O接口模型,實(shí)現(xiàn)不同類型的儀器的互操作性與兼容性,這也是VISA的最大優(yōu)點(diǎn)之一。

        VISA的結(jié)構(gòu)共分為五層,資源管理層主要主要負(fù)責(zé)資源的尋址、創(chuàng)建與刪除等功能的實(shí)現(xiàn)。I/O資源層提供了底層I/O函數(shù),對(duì)硬件接口進(jìn)行讀寫等操作,該資源與傳統(tǒng)的I/O函數(shù)相似。儀器資源層主要針對(duì)不同儀器的特定功能。用戶資源層是可變層,根據(jù)用戶自己定義資源。應(yīng)用程序?qū)犹峁┯脩襞c儀器交互的窗口。

        4.2 VISA驅(qū)動(dòng)程序開發(fā)

        本設(shè)計(jì)采用NI公司提供的VISA庫(kù),在開發(fā)之前需安裝NI-VISA。驅(qū)動(dòng)程序的一般設(shè)計(jì)流程如圖12所示。

        圖12 驅(qū)動(dòng)開發(fā)流程

        驅(qū)動(dòng)程序具體實(shí)現(xiàn)流程[15-18]如下:

        1)掃描資源:首先調(diào)用viOpenDefaultRM()函數(shù)來(lái)掃描系統(tǒng)中的接口和設(shè)備資源,此后才能調(diào)用其他VISA函數(shù)。當(dāng)用戶需要查找特定的設(shè)備時(shí),可以調(diào)用viFindRsrc()函數(shù)。

        2)打開資源:通過viOpen()函數(shù)建立儀器之間的會(huì)話通道,其參數(shù)根據(jù)接口類型確定。如建立與主地址為2的GPIB接口的會(huì)話,則參數(shù)設(shè)置為GPIB0::2::INSTR。

        3)讀寫操作:公用的VISA底層I/O函數(shù)有viRead()、viWrite()等;GPIB接口特殊I/O函數(shù)有的viReadSTB()、viClear()等,每個(gè)函數(shù)實(shí)現(xiàn)一種接口功能。本設(shè)計(jì)調(diào)用公用I/O函數(shù)與建立會(huì)話通道的接口進(jìn)行通信。

        4)關(guān)閉資源:調(diào)用viClose()函數(shù)關(guān)閉已建立的會(huì)話通道,并清除資源。

        在VC++6.0環(huán)境下測(cè)試VISA驅(qū)動(dòng)程序,將VISA.H和VISATYPE.H文件拷貝到工程中,使用C語(yǔ)言調(diào)用相關(guān)庫(kù)函數(shù)。核心代碼部分如下所示:

        int main(void){

        ViSession defaultRM;

        ....... //定義變量

        status=viOpenDefaultRM (&defaultRM);

        status=viOpen(defaultRM,"ASRL4::INSTR",VI_NULL,VI_NULL,&instr);

        status = viSetAttribute (instr,VI_ATTR_TMO_VALUE,5000);

        ....... //參數(shù)配置

        status=viWrite(instr,"*IDN? ",(ViUInt32)strlen("*IDN? "),&writeCount);

        status = viRead (instr,buffer,100,&retCount);

        if (status!

        printf (" Data read:%*s ",retCount,buffer);

        }

        status = viClose (instr);

        status = viClose (defaultRM);}

        將協(xié)議轉(zhuǎn)換器和Tek1002示波器連接,運(yùn)行該程序生成的.EXE可執(zhí)行文件,運(yùn)行測(cè)試結(jié)果如圖13所示。

        圖13 VC++下VISA測(cè)試結(jié)果

        4.3 驅(qū)動(dòng)應(yīng)用層開發(fā)

        驅(qū)動(dòng)應(yīng)用層開發(fā)平臺(tái)為Visual Studio 2017,采用C#面向?qū)ο蟾呒?jí)程序設(shè)計(jì)語(yǔ)言,它運(yùn)行在.NET Framework框架上。.NET Framework包括3個(gè)應(yīng)用程序模型,設(shè)計(jì)采用Windows Forms模型,它屬于.NET Framework中的GUI類庫(kù),該模型采用控件式編程,開發(fā)難度較低。

        NI-VISA提供了基于.NET的VISA函數(shù)庫(kù),在項(xiàng)目中添加NI的NationalInstruments.Visa和Ivi.Visa函數(shù)庫(kù)可直接調(diào)用VISA函數(shù)。

        應(yīng)用層開發(fā)主要分兩部分,一部分為資源搜索界面,另一部分為基本讀寫操作界面。資源搜索界面通過ResourceManager.Find(“(ASRL|GPIB|TCPIP|USB”?*INSTR))函數(shù)來(lái)搜索系統(tǒng)中所有類型的設(shè)備,并將值返回ListBox列表框中。選中資源,點(diǎn)擊OK按鈕時(shí),執(zhí)行ResourceManager.Open函數(shù)與設(shè)備建立連接。操作界面主要由Button和TextBox兩大控件組成,讀寫等按鈕執(zhí)行基本IO操作,在控件中調(diào)用RawIO.BeginWrite()和RawIO.BeginRead()函數(shù),當(dāng)點(diǎn)擊事件發(fā)生時(shí),則執(zhí)行讀寫函數(shù),并將返回值發(fā)送到TextBox文本框中,此外還添加了Trigger和Read STB等功能型按鈕,通過調(diào)用接口功能函數(shù)對(duì)設(shè)備進(jìn)行操控。

        最終設(shè)計(jì)的用戶操作界面如圖14所示。

        圖14 用戶程序界面

        5 SCPI指令測(cè)試

        5.1 SCPI簡(jiǎn)介

        可編程儀器標(biāo)準(zhǔn)命令,簡(jiǎn)稱SCPI[19-20]。它是一種控制儀器的語(yǔ)言規(guī)范,規(guī)定了一種標(biāo)準(zhǔn)的語(yǔ)言結(jié)構(gòu)來(lái)控制儀器,采用ASCI字符串的形式與設(shè)備之間進(jìn)行數(shù)據(jù)的交互。

        早期的儀器設(shè)備,由于沒有統(tǒng)一的程控命令標(biāo)準(zhǔn),不同的儀器在軟件上很難兼容。SCPI的出現(xiàn),給整個(gè)行業(yè)提供了一套可參考的標(biāo)準(zhǔn),完美解決了不同儀器的兼容性問題。且SCPI采用助劑符的方式,把復(fù)雜的指令縮寫成簡(jiǎn)潔且容易記住的指令,便于用戶使用。

        5.2 SCPI命令測(cè)試

        測(cè)試采用對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)設(shè)備使用Tek1002示波器。通過對(duì)基本指令以及示波器的數(shù)據(jù)采集等指令的測(cè)試,評(píng)估其性能。

        5.2.1 公用指令測(cè)試

        SCPI公用指令共39條,是所有帶GPIB接口的設(shè)備必須具備的。

        公用指令測(cè)試使用自主研發(fā)的GPIB上位機(jī)和轉(zhuǎn)換器與NI控制面板和NI-GPIB-USB作比較,都發(fā)送*IDN?指令,查看其返回結(jié)果是否一致。測(cè)試結(jié)果如圖15所示。其中,圖(a)為自主研發(fā)設(shè)備返回結(jié)果,圖(b)為NI設(shè)備返回結(jié)果。

        圖15 公用命令測(cè)試結(jié)果

        5.2.2 性能測(cè)試

        性能測(cè)試軟件采用NI公司的I/O Trace,該軟件能捕獲各函數(shù)的響應(yīng)時(shí)間,通過在同一軟件下對(duì)比自研GPIB轉(zhuǎn)換器和NI-GPIB-USB轉(zhuǎn)換器來(lái)評(píng)估該設(shè)計(jì)的設(shè)備性能。測(cè)試結(jié)果如圖16所示。圖(a)自主研發(fā)設(shè)備響應(yīng)時(shí)間,圖(b)為NI設(shè)備響應(yīng)時(shí)間。

        圖16 指令響應(yīng)時(shí)間

        從圖16中可以看出,自研設(shè)備在響應(yīng)*IDN?和*TST?兩個(gè)指令的時(shí)間分別為958 ms和1 252 ms,NI的響應(yīng)時(shí)間為982 ms和1 242 ms。經(jīng)對(duì)比,自研GPIB轉(zhuǎn)換器性能優(yōu)異,完全能滿足實(shí)際應(yīng)用需求。

        5.3 示波器數(shù)據(jù)采集測(cè)試

        GPIB接口的重要功能是采集儀器的數(shù)據(jù)。數(shù)據(jù)采集實(shí)驗(yàn)通過STM32F103開發(fā)板的DA模塊輸出波形,使用Tek1002示波器測(cè)量波形,將該設(shè)計(jì)的GPIB卡連接示波器,通過Tek公司的OpenChoiceDesktop上位機(jī)軟件連接示波器,首先發(fā)送:SELECT:CH1選擇示波器通道1,然后發(fā)送CH1:PROBE?等查詢指令查詢示波器的各種參數(shù),最后發(fā)送:CURVE?返回曲線數(shù)據(jù),并反饋到Tek公司的OpenChoiceDesktop上位機(jī)軟件上。測(cè)試結(jié)果如圖17所示。

        圖17 數(shù)據(jù)采集測(cè)試結(jié)果

        6 結(jié)束語(yǔ)

        本文設(shè)計(jì)了一款以FPGA芯片為主控,通過硬件描述語(yǔ)言實(shí)現(xiàn)IEEE488接口的所有功能的協(xié)議轉(zhuǎn)換器。文中介紹了轉(zhuǎn)換器硬件設(shè)計(jì)、控制程序設(shè)計(jì),還詳細(xì)介紹了基于VISA的驅(qū)動(dòng)程序設(shè)計(jì)流程。該設(shè)計(jì)為解決當(dāng)前市場(chǎng)GPIB專用芯片停產(chǎn)、轉(zhuǎn)換器價(jià)格昂貴等問題提供了一套完整的替換方案。經(jīng)測(cè)試實(shí)驗(yàn)表明,該轉(zhuǎn)換器性能穩(wěn)定、體積小,完全滿足日常測(cè)試所需,為從事相關(guān)方面研究的開發(fā)人員提供了可行性的參考案例。

        猜你喜歡
        功能設(shè)備設(shè)計(jì)
        也談詩(shī)的“功能”
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        瞞天過?!律O(shè)計(jì)萌到家
        基于MPU6050簡(jiǎn)單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        原來(lái)他們都是可穿戴設(shè)備
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        任你躁国产自任一区二区三区| 久久亚洲国产高清av一级 | 日本女同视频一区二区三区| 亚洲 欧美 综合 在线 精品| 无码精品日韩中文字幕| 国产一区二区三区小说| 手机在线看片在线日韩av| 免费av网站大全亚洲一区| 日韩人妻无码精品久久久不卡| 免费观看国产精品| 国产真实二区一区在线亚洲| 亚洲一区二区三区偷拍女| 风流老熟女一区二区三区| 欧美日韩另类视频| 国产三级av在线播放| 中出人妻希奇杰卡西av| 99re8这里有精品热视频免费| 人妻无码中文专区久久综合| 91亚洲夫妻视频网站| 亚洲成av人综合在线观看| 野花社区www高清视频| 999久久久免费精品国产牛牛| 亚洲精品一区二区三区在线观| 2019最新中文字幕在线观看| 初尝黑人嗷嗷叫中文字幕| 人妻少妇av中文字幕乱码免费| 手机在线看片国产人妻| 曰本无码人妻丰满熟妇啪啪| 含羞草亚洲AV无码久久精品| 中文字幕久久国产精品| 草色噜噜噜av在线观看香蕉| √天堂中文官网8在线| 国产成人精品蜜芽视频| 日本黑人亚洲一区二区| 久精品国产欧美亚洲色aⅴ大片 | 国产精品老熟女露脸视频| 亚洲中文字幕乱码免费| 日韩av在线不卡一区二区| 亚洲熟妇无码一区二区三区导航| 免费99视频| 国产精品后入内射日本在线观看|