<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > GPIB接口的FPGA實(shí)現

GPIB接口的FPGA實(shí)現

作者:■ 電子科技大學(xué)自動(dòng)化工程學(xué)院 王術(shù)群 師奕兵 田書(shū)林 時(shí)間:2004-10-16 來(lái)源:電子設計應用2004年第10期 收藏

電子設計應用2004年第10期

本文引用地址:http://dyxdggzs.com/article/3496.htm

摘    要:是測試儀器中常用的接口方式。通過(guò)將接口設計分解為同步設計和寄存器讀寫(xiě)電路設計,采用Verilog語(yǔ)言實(shí)現了滿(mǎn)足IEEE488.1協(xié)議的IP Core設計。將此IP Core固化到芯片中即可實(shí)現GPIB各種接口功能。
關(guān)鍵詞:;;

引言
在自動(dòng)測試領(lǐng)域中,GPIB通用接口是測試儀器常用的接口方式,具有一定的優(yōu)勢。通過(guò)GPIB組建自動(dòng)測試系統方便且費用低廉。而GPIB控制芯片是自動(dòng)測試系統中的關(guān)鍵芯片,此類(lèi)芯片只有國外少數公司能生產(chǎn),不僅價(jià)格昂貴,而且購買(mǎi)不便。因此,GPIB 接口的實(shí)現具有很大的實(shí)用價(jià)值。
本文論述的是采用Verilog語(yǔ)言來(lái)設計基于IEEE488.1協(xié)議的IP Core,然后將用戶(hù)邏輯與此Core集成在一片FPGA中實(shí)現功能。

圖1 GPIB接口內部結構

圖2 AH功能狀態(tài)圖

圖3  AH功能仿真圖

GPIB 接口體系結構設計
首先把整個(gè)待設計系統劃分為若干基本功能模塊,其中包括復雜的同步以及寄存器讀寫(xiě)電路。內部結構如圖1所示。

接口功能設計
接口功能的設計是設計的核心。按照IEEE488.1協(xié)議與實(shí)際設計的要求,設計選取了八種接口功能:源方掛鉤 、受方掛鉤、講者、聽(tīng)者、服務(wù)請求、遠控/本控、器件清除和器件觸發(fā)。其中源方掛鉤接口功能保證多項消息的正確傳輸;受方掛鉤接口功能保證正確地接受遠地消息;講者接口功能讓器件在接口上把數據發(fā)送到其他一些器件去;聽(tīng)者接口功能讓器件在接口上接受來(lái)自于其他器件的數據;本控就是本地控制(面板或后背板)。在實(shí)際設計中,再把各接口功能劃分為若干相關(guān)狀態(tài),這樣在用VerilogHDL實(shí)現這些相互作用影響的狀態(tài)躍遷的時(shí)候就可以引入狀態(tài)機設計。為了保持狀態(tài)機之間相互的狀態(tài)掛鉤的協(xié)調一致性,設計采用同步狀態(tài)機,在時(shí)鐘信號的觸發(fā)下,完成各個(gè)狀態(tài)之間的轉移。
接口功能的Verilog HDL實(shí)現
由于八種接口功能實(shí)現方式較為相似,這里以最具有代表性的受方掛鉤功能(AH)來(lái)具體說(shuō)明其用VerilogHDL的實(shí)現方式。對受者接口功能應具有的能力、作用及變遷條件,用一組互相排斥而又互相聯(lián)系的狀態(tài)圖來(lái)給定,如圖2所示。狀態(tài)圖中,各狀態(tài)之間的變遷分別用狀態(tài)之間的箭頭來(lái)表示。每一個(gè)狀態(tài)變遷都用一個(gè)邏輯表達式來(lái)表示變遷的條件。表達式由本地消息、遠地消息、狀態(tài)交連、運算符等組成。其中本地消息用三個(gè)小寫(xiě)的英文字母表示。遠地消息用三個(gè)大寫(xiě)的英文字母來(lái)表示。狀態(tài)交連是指一個(gè)接口功能的狀態(tài)變遷受其他接口功能的狀態(tài)的制約。
在用VerilogHDL語(yǔ)言對狀態(tài)機進(jìn)行的設計中,采用了一位熱碼狀態(tài)編碼。雖然一位熱碼采用的觸發(fā)器較多,但可以簡(jiǎn)化組合電路。對于寄存器數量多,而組合邏輯門(mén)相對缺乏的FPGA器件,一位熱碼可以提高電路的速度和可靠性,也有利于提高器件資源的利用率。AH功能狀態(tài)機代碼如下:
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功能編碼進(jìn)行編譯和功能仿真,仿真結果如圖3所示。由圖可見(jiàn),當同步觸發(fā)信號reset為0,swrst為1時(shí),系統回到空閑態(tài)。LADS(聽(tīng)者被尋址態(tài))與LACS(聽(tīng)者作用態(tài))同時(shí)為0時(shí),系統進(jìn)入AIDS(受者空閑態(tài)),此時(shí)受者NRFD、NDAC為高阻態(tài)。LADS與LACS任一為1時(shí),受者進(jìn)入ANRS(受者未準備好態(tài))。rdy為1與ATN為0時(shí),受者進(jìn)入ACRS(受者準備好態(tài)),NRFD、NDAC為0??梢钥闯?,隨著(zhù)輸入條件的變化,輸出相應變化,滿(mǎn)足時(shí)序邏輯。接下來(lái),生成受者功能模塊符號圖,以便于下一步系統級的設計。
其他接口功能的狀態(tài)機實(shí)現與AH功能類(lèi)似。最后將每個(gè)接口功能的狀態(tài)機實(shí)現,生成便于互連的符號模塊,各個(gè)模塊連接起來(lái)就組成系統的接口主狀態(tài)機模塊。其中狀態(tài)機子集模塊所需的信號一些來(lái)自狀態(tài)交連(圖2陰影部分即各接口功能之間的互相影響信號),另外一些則來(lái)自其他模塊所產(chǎn)生的信號。

寄存器讀寫(xiě)電路設計
在設計圖1中的寄存器讀寫(xiě)電路時(shí),選擇設計了9個(gè)8位內部寄存器。其中可讀寄存器有5個(gè):中斷狀態(tài)寄存器0(ISR0)、中斷狀態(tài)寄存器1(ISR1)、總線(xiàn)狀態(tài)寄存器(BSR)、數據輸入寄存器(DIR)和地址狀態(tài)寄存器(ADSR);可寫(xiě)寄存器有4個(gè):中斷屏蔽寄存器0(IMR0)、中斷屏蔽寄存器1(IMR1)、地址寄存器(ADR)和輔助命令寄存器(AUXCR)。其中可讀寄存器用來(lái)存儲狀態(tài)機的當前狀態(tài)、中斷情況、儀器地址、輸入數據和控制信息。計算機把中斷屏蔽位,輔助命令寫(xiě)入可寫(xiě)寄存器,從而實(shí)現對GPIB總線(xiàn)的控制。在上位機與芯片之間引入D0~D7 作為本地雙向數據總線(xiàn),通過(guò)譯碼模塊實(shí)現對內部寄存器的讀寫(xiě),產(chǎn)生狀態(tài)機子集模塊所需的信號以及GPIB接口信號。寄存器讀寫(xiě)電路的設計用譯碼器,寄存器等實(shí)現,由于篇幅所限,這里不再贅述 。

接口的FPGA實(shí)現
在完成基本模塊以后,可以用類(lèi)似畫(huà)電路圖的方法直接對這些模塊符號進(jìn)行調用。然后通過(guò)MAXplusⅡ進(jìn)行綜合、仿真,做在線(xiàn)調試。再完成整個(gè)內部電路的軟件設計以后就可以把該“軟件核”(Core)固化到具體選定的FPGA芯片上,本文選用ALTERA公司的ACEX1K30QC208芯片。
結語(yǔ)
在測試儀器的研制過(guò)程中發(fā)現,GPIB接口往往不需要IEEE488.1的全部接口功能,很多儀器只需要聽(tīng)、講功能即可。如果采用Nat9914之類(lèi)的芯片,控者、并行查詢(xún)功能都用不到,這樣既會(huì )造成資源與功能的浪費,又延長(cháng)了開(kāi)發(fā)周期。設計基于FPGA芯片的專(zhuān)用IP Core不僅擁有自主知識產(chǎn)權,而且可以通過(guò)與計算機接口(如ISA口)與計算機直接相連,裝入驅動(dòng)程序即可工作。這對測試儀器開(kāi)發(fā)有一定的借鑒作用,無(wú)論是采用PCI、USB,還是單片機控制,只需將用戶(hù)邏輯與符合IEEE488.1協(xié)議的IP Core集成在一片FPGA中即可實(shí)現測試儀器的GPIB接口功能。這將大大縮短開(kāi)發(fā)周期,降低開(kāi)發(fā)成本?!?/p>

參考文獻
1、Nat9914 Reference Manual. National Instruments Corporation,1995



關(guān)鍵詞: FPGA GPIB接口 狀態(tài)機

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>