引言
在自動測試領域中,GPIB通用接口是測試儀器常用的接口方式,具有一定的優勢。通過GPIB組建自動測試系統方便且費用低廉。而GPIB控制芯片是自動測試系統中的關鍵芯片,此類芯片只有國外少數公司能生產,不僅價格昂貴,而且購買不便。因此,GPIB 接口的FPGA實現具有很大的實用價值。
本文論述的是采用Verilog語言來設計基于IEEE488.1協議的IP Core,然后將用戶邏輯與此Core集成在一片FPGA中實現GPIB接口功能。
圖1 GPIB接口內部結構
圖2 AH功能狀態圖
圖3 AH功能仿真圖
GPIB 接口體系結構設計
首先把整個待設計系統劃分為若干基本功能模塊,其中包括復雜的同步狀態機以及寄存器讀寫電路。內部結構如圖1所示。
接口功能設計
接口功能的設計是設計的核心。按照IEEE488.1協議與實際設計的要求,設計選取了八種接口功能:源方掛鉤 、受方掛鉤、講者、聽者、服務請求、遠控/本控、器件清除和器件觸發。其中源方掛鉤接口功能保證多項消息的正確傳輸;受方掛鉤接口功能保證正確地接受遠地消息;講者接口功能讓器件在接口上把數據發送到其他一些器件去;聽者接口功能讓器件在接口上接受來自于其他器件的數據;本控就是本地控制(面板或后背板)。在實際設計中,再把各接口功能劃分為若干相關狀態,這樣在用VerilogHDL實現這些相互作用影響的狀態躍遷的時候就可以引入狀態機設計。為了保持狀態機之間相互的狀態掛鉤的協調一致性,設計采用同步狀態機,在時鐘信號的觸發下,完成各個狀態之間的轉移。
接口功能的Verilog HDL實現
由于八種接口功能實現方式較為相似,這里以最具有代表性的受方掛鉤功能(AH)來具體說明其用VerilogHDL的實現方式。對受者接口功能應具有的能力、作用及變遷條件,用一組互相排斥而又互相聯系的狀態圖來給定,如圖2所示。狀態圖中,各狀態之間的變遷分別用狀態之間的箭頭來表示。每一個狀態變遷都用一個邏輯表達式來表示變遷的條件。表達式由本地消息、遠地消息、狀態交連、運算符等組成。其中本地消息用三個小寫的英文字母表示。遠地消息用三個大寫的英文字母來表示。狀態交連是指一個接口功能的狀態變遷受其他接口功能的狀態的制約。
在用VerilogHDL語言對狀態機進行的設計中,采用了一位熱碼狀態編碼。雖然一位熱碼采用的觸發器較多,但可以簡化組合電路。對于寄存器數量多,而組合邏輯門相對缺乏的FPGA器件,一位熱碼可以提高電路的速度和可靠性,也有利于提高器件資源的利用率。AH功能狀態機代碼如下:
module
input clk,reset,swrst,LADS, LACS,rdy,ATN,DAV;
output AIDS,ANRS,ACRS, ACDS,AWNS,NRFD,NDAC;
parameter S1=5'h01,S2=5'h02, S3=5'h04,S4=5'h08,S5=5'h10;
assign NRFD=(ANRS| ACRS|ACDS|AWNS ) ? NRFDt: 1'bz;
assign NDAC = (ANRS| ACRS|ACDS|AWNS) ? NDACt: 1'bz;
always @(negedge clk )
begin if ((~reset)|swrst|((~ATN) &(~(LACS|LADS)))) present=S1;
else present=next; end
always @(present or LADS or LACS or rdy or ATN or DAV)
begin AIDS=0 ;ANRS=0; ACRS=0; ACDS=0; AWNS=0; NRFDt=0; NDACt=0;
case (present)
S1: begin if (ATN) next=S3;
else if((~ATN)& (LADS|LACS)) next=S2;
else next=S1; AIDS=1; NRFDt=0;NDACt=0; end
S2: begin if (ATN|rdy) next=S3;
else next=S2; ANRS=1; NRFDt=1;NDACt=1; end
S3: begin if (~(ATN|rdy)) next=S2;
else if (DAV) next=S4;
else next=S3; ACRS=1; NRFDt=0;NDACt=1; end
S4: begin if( (ATN)|(~ATN)&(~rdy)) next=S5;
else next=S4; ACDS=1; NRFDt=1;NDACt=1; end
S5: begin if (~DAV) next=S2;
else next=S5; AWNS=1; NRFDt=1;NDACt=0; end
default: next=S1;
endmodule
AH功能邏輯設計的功能仿真
對前述AH功能編碼進行編譯和功能仿真,仿真結果如圖3所示。由圖可見,當同步觸發信號reset為0,swrst為1時,系統回到空閑態。LADS(聽者被尋址態)與LACS(聽者作用態)同時為0時,系統進入AIDS(受者空閑態),此時受者NRFD、NDAC為高阻態。LADS與LACS任一為1時,受者進入ANRS(受者未準備好態)。rdy為1與ATN為0時,受者進入ACRS(受者準備好態),NRFD、NDAC為0。可以看出,隨著輸入條件的變化,輸出相應變化,滿足時序邏輯。接下來,生成受者功能模塊符號圖,以便于下一步系統級的設計。
其他接口功能的狀態機實現與AH功能類似。最后將每個接口功能的狀態機實現,生成便于互連的符號模塊,各個模塊連接起來就組成系統的接口主狀態機模塊。其中狀態機子集模塊所需的信號一些來自狀態交連(圖2陰影部分即各接口功能之間的互相影響信號),另外一些則來自其他模塊所產生的信號。
寄存器讀寫電路設計
在設計圖1中的寄存器讀寫電路時,選擇設計了9個8位內部寄存器。其中可讀寄存器有5個:中斷狀態寄存器0(ISR0)、中斷狀態寄存器1(ISR1)、總線狀態寄存器(BSR)、數據輸入寄存器(DIR)和地址狀態寄存器(ADSR);可寫寄存器有4個:中斷屏蔽寄存器0(IMR0)、中斷屏蔽寄存器1(IMR1)、地址寄存器(ADR)和輔助命令寄存器(AUXCR)。其中可讀寄存器用來存儲狀態機的當前狀態、中斷情況、儀器地址、輸入數據和控制信息。計算機把中斷屏蔽位,輔助命令寫入可寫寄存器,從而實現對GPIB總線的控制。在上位機與芯片之間引入D0~D7 作為本地雙向數據總線,通過譯碼模塊實現對內部寄存器的讀寫,產生狀態機子集模塊所需的信號以及GPIB接口信號。寄存器讀寫電路的設計用譯碼器,寄存器等實現,由于篇幅所限,這里不再贅述 。
接口的FPGA實現
在完成基本模塊以后,可以用類似畫電路圖的方法直接對這些模塊符號進行調用。然后通過MAXplusⅡ進行綜合、仿真,做在線調試。再完成整個內部電路的軟件設計以后就可以把該“軟件核”(Core)固化到具體選定的FPGA芯片上,本文選用ALTERA公司的ACEX1K30QC208芯片。
結語
在測試儀器的研制過程中發現,GPIB接口往往不需要IEEE488.1的全部接口功能,很多儀器只需要聽、講功能即可。如果采用Nat9914之類的芯片,控者、并行查詢功能都用不到,這樣既會造成資源與功能的浪費,又延長了開發周期。設計基于FPGA芯片的專用IP Core不僅擁有自主知識產權,而且可以通過與計算機接口(如ISA口)與計算機直接相連,裝入驅動程序即可工作。這對測試儀器開發有一定的借鑒作用,無論是采用PCI、USB,還是單片機控制,只需將用戶邏輯與符合IEEE488.1協議的IP Core集成在一片FPGA中即可實現測試儀器的GPIB接口功能。這將大大縮短開發周期,降低開發成本。
- GPIB(38854)
- GA實現(6726)
相關推薦
基于GPIB總線的虛擬儀器信號自動測試系統設計
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/81/16/o4YBAFwuuC-AamkmAABwsccBGAM868.jpg)
FPGA SERDES接口電路怎么實現?
FPGA實現SPI接口(包括主機和從機程序)
GPIB-USB-HS
GPIB接口儀器控制中數據波形更新速度慢問題
GPIB接口擴展
GPIB接口連接了哪些儀器
GPIB_463_464
GPIB命令的數據結構
LabVIEW以及GPIB接口的系統組成結構分析
【FPGA設計實例】FPGA接口實現文本液晶顯示模塊
【FPGA設計實例】基于FPGA的SPI接口應用
使用HP 82357 u***到GPIB接口的時序問題
基于FPGA實現接口協議的方法
基于FPGA技術的IDE硬盤接口的設計
基于FPGA技術的RS 232接口的時序邏輯設計實現
基于FPGA的萬兆以太網接口的設計與實現
怎么使用FPGA實現SPI總線的通信接口?
怎么使用VEE 5和USB-GPIB接口?
通過FPGA實現溫控電路接口及其與DSP通信接口的設計
采用FPGA實現DVI/HDMI接口具有什么優點?
采用PM3388和FPGA實現網絡接口設計
SPI-4.2接口的FPGA實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于FPGA的PCI總線接口設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于GPIB接口微波內場自動測量系統的設計搭建
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于FPGA 的IDE硬盤接口卡的實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
GPIB接口在電磁兼容自動測量系統中的應用
![](https://skin.elecfans.com/images/2021-soft/load.png)
PC104 模塊與通用并行接口(GPIB)通訊的實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
PL4接口在FPGA中的設計與實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于GPIB接口總線的虛擬儀器
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于GPIB接口的自動測試系統
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于GPIB接口的TD3000儀器控制系統設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于虛擬儀器GPIB接口總線
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于半導體激光器恒溫控制器的GPIB標準接口板的設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
VC++環境下實現的GPIB通訊設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
GPIB命令的數據結構
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于GPIB接口的數字存儲示波器功能擴展
![](https://skin.elecfans.com/images/2021-soft/load.png)
CPLD 實現GPIB控制器的設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于FPGA的IDE硬盤接口卡的實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
GPIB卡說明書
![](https://skin.elecfans.com/images/2021-soft/load.png)
GPIB命令的數據結構
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于FPGA的指紋采集接口設計與實現
![](https://skin.elecfans.com/images/2021-soft/eye.png)
供應全新GPIB卡美國NI
![](https://skin.elecfans.com/images/2021-soft/eye.png)
供應全新PCI GPIB卡GPIB USB卡
![](https://skin.elecfans.com/images/2021-soft/eye.png)
儀器控制總線比較(GPIB、USB、PCI、PCI Expr
![](https://skin.elecfans.com/images/2021-soft/eye.png)
GPIB接口總線簡介及應用
![](https://skin.elecfans.com/images/2021-soft/eye.png)
光纖縱差保護同步接口的FPGA實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
IIS接口的FPGA實現
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A5/EA/wKgZomUMOsWAcSyJAAAPDQyI9ao659.gif)
一種通用SPI接口的FPGA設計與實現
![](https://skin.elecfans.com/images/2021-soft/load.png)
采用低成本FPGA實現高效的低功耗PCIe接口
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于GPIB接口總線的虛擬儀器詳解
![](https://skin.elecfans.com/images/2021-soft/eye.png)
GPIB-RS232C接口轉換設計及應用概述
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/B7/A3/pIYBAF5p8G6AGPd2AACaYrtV9y8134.png)
LabVIEW的GPIB的總線標準接口功能解析
![](https://skin.elecfans.com/images/2021-soft/eye.png)
基于FPGA技術實現VXIbus模塊的接口電路設計
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/C2/BA/o4YBAF8ep06ATX7yAADxPgxNIRA259.png)
采用復雜可編程邏輯器件實現GPIB接口的功能設計
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/C4/9B/o4YBAF8_hdaAPEzsAAB2_L_a5iA476.png)
TEK-USB-488_GPIB轉換器的應用特點分析
![](https://skin.elecfans.com/images/2021-soft/eye.png)
如何在FPGA中實現SPI4.2接口
![](https://skin.elecfans.com/images/2021-soft/load.png)
ARM與FPGA的接口實現的解析
![](https://skin.elecfans.com/images/2021-soft/load.png)
GPIB儀器控制設備使用GPIB接口將儀器集成到系統中
![](https://skin.elecfans.com/images/2021-soft/eye.png)
ADL-GPIB IEEE 488命令集函數參考手冊
![](https://skin.elecfans.com/images/2021-soft/load.png)
評論