CPLD實(shí)現GPIB控制器的設計
作者:魏金成 牟濤
本文引用地址:http://dyxdggzs.com/article/201610/308495.htm1. 引言:
1.1用 CPLD 實(shí)現 GPIB 控制芯片的意義
綜觀(guān)現今市場(chǎng)上的測試儀器,不難發(fā)現 GPIB總線(xiàn)有重要的作用,在研制臺式測試儀器的時(shí)候,客戶(hù)幾乎均要求具備 GPIB接口??墒窃趯?shí)際研發(fā)過(guò)程中,卻發(fā)現 GPIB控制芯片很難購買(mǎi),而且價(jià)格昂貴。而且作為測試儀器具備 GPIB的接口,一般只需要具有聽(tīng)、講、串查功能,而不需要控、并查功能,這樣又會(huì )造成資源與功能的浪費。所以我們嘗試用 CPLD來(lái)實(shí)現 GPIB接口的聽(tīng)、講、串查功能,不僅可擁有自主知識產(chǎn)權,節省了產(chǎn)品的成本,而且具有很大的靈活性。
1.2 GPIB控制芯片簡(jiǎn)介:
GPIB 也叫 HPIB,是一個(gè)數字化的 24腳并行總線(xiàn),由 16條信號線(xiàn)和 8條地線(xiàn)組成。這 16條信號線(xiàn)分為 8條數據線(xiàn)、5條控制線(xiàn)和 3條握手線(xiàn)。8條數據線(xiàn):從 DIO1到 DIO8,用來(lái)傳送命令、地址和數據;5條控制線(xiàn):分別為 ATN線(xiàn)、IFC線(xiàn)、REN線(xiàn)、SRQ線(xiàn)和 EOI線(xiàn),用來(lái)管理通過(guò)接口的有序信息流; 3條握手線(xiàn):DAV線(xiàn)、NRFD線(xiàn)和 NDAC線(xiàn),用于控制設備之間消息字節的傳送。發(fā)送消息方(源方)和接收消息方(受方)利用這 3條握手線(xiàn)進(jìn)行三線(xiàn)掛鉤,以保證數據線(xiàn)上的消息(命令或數據)能準確無(wú)誤地傳送。
在 GPIB系統中,把器件與 GPIB總線(xiàn)的一種交互作用定義成一種接口功能。GPIB標準接口共定義了 10種接口功能。
1.3設計軟件及設計芯片的選擇
開(kāi)發(fā)工具采用 ALTERA公司的 MAXplusⅡ10.0。MAXplusⅡ開(kāi)發(fā)工具是美國 Altera公司自行設計的一種 EDA軟件工具,它具有原理圖輸入和文本輸入(采用硬件描述語(yǔ)言)兩種輸入手段,配備有編輯、編譯、仿真、綜合、芯片編程等功能。
Altera 公司是世界上從事可編程邏輯芯片生產(chǎn)的幾家主要廠(chǎng)商之一,其 MAX3000A系列可編程邏輯芯片速度快,容量大,性?xún)r(jià)比高。我們選用的 EPM3256ATC144-10,擁有 256個(gè)宏單元,144個(gè)管腳,可自定義使用的管腳達 116個(gè),4.5ns的傳輸延時(shí)完全能滿(mǎn)足要求。
2. GPIB控制器各個(gè)模塊的設計
我們可以把整個(gè)系統劃分為幾個(gè)子系統。其中包括和微處理器接口的讀寫(xiě)電路,與 GPIB母線(xiàn)通信的接口功能,以及內部寄存器。對每個(gè)子系統的設計也可以采用向下分解為模塊級設計,這樣在調試和組件系統時(shí),不僅具有很強的靈活性,而且方便代碼的調試以及利于代碼的重利用。與微處理器接口的讀寫(xiě)電路設計可以利用組合邏輯電路設計方法實(shí)現,其基本模塊,如:譯碼電路,讀寫(xiě)電路,相對比較成熟,在設計的時(shí)候只要對其基本功能深刻理解的基礎上容易實(shí)現。與 GPIB母線(xiàn)通信的子系統設計是本課題設計的重點(diǎn)也是難點(diǎn),它不僅需要對 IEEE488協(xié)議有深刻的認識,而且在接口功能子集的選擇上也有一定的要求。
2.1微處理器( MCU)接口電路
微處理器(MCU)接口包括提供正確的寄存器訪(fǎng)問(wèn)地址的譯碼電路,以及連同 WE和 DBIN一起構成的訪(fǎng)問(wèn) GPIB控制器的讀寫(xiě)電路, NCS用來(lái)選通地址譯碼。地址譯碼電路以及數據讀寫(xiě)電路在數字電路設計中是昀為成熟的電路,在此不作更多深入的闡述。值得注意的是 GPIB控制器的讀寫(xiě)信號并不是通常意義上的 RD和 WR信號,而是由 DBIN和 WE信號完成。而且,對 13個(gè)寄存器的譯碼也用的僅僅是 RS[0:2],這就需要和 DBIN信號的配合來(lái)完成譯碼功能。
2.2 內部寄存器
GPIB控制器(參考 NAT9914)的內部體系結構有 13個(gè)寄存器,其中 7個(gè)可寫(xiě)寄存器, 6個(gè)只讀寄存器。它們都是八位的,其中可讀寄存器有中斷狀態(tài)寄存器 0(ISR0)、中斷狀態(tài)寄存器 1(ISR1)、地址狀態(tài)寄存器(ASR)、總線(xiàn)狀態(tài)寄存器(BSR)、命令通過(guò)寄存器(CPR)、數據輸入寄存器(DIR);可寫(xiě)寄存器有中斷屏蔽寄存器 0(IMR0)、中斷屏蔽寄存器 1(IMR1)、地址寄存器( ADR)、輔助命令寄存器( AUXCR)、串行查詢(xún)寄存器( SPR)、并行查找寄存器(PPR)、數據輸出寄存器( CDOR)。在 GPIB控制芯片的設計中對這十三個(gè)寄存器進(jìn)行詳細的描述。本模塊的設計采用圖形方式,利用參數化模塊庫實(shí)現各個(gè)寄存器。
2.3 接口功能
GPIB標準接口共定義了 10種接口功能。每一個(gè)接口功能由一組或多組相互聯(lián)系而又相互排斥的狀態(tài)來(lái)定義。在一個(gè)時(shí)刻,一組互聯(lián)又互斥的狀態(tài)中必須有一個(gè)而且也僅又一個(gè)狀態(tài)在起作用。在 IEEE488協(xié)議中對接口功能的每一個(gè)狀態(tài)還做了兩方面的規定:
1 當某個(gè)狀態(tài)在起作用時(shí),在接口上可以或必須發(fā)送的消息;
2 在什么條件下接口功能必須脫離某一狀態(tài)而進(jìn)入同一組狀態(tài)的另一個(gè)狀態(tài);
這些因素決定了狀態(tài)的處理能力。接口功能狀態(tài)圖給出了全部狀態(tài)以及從一個(gè)狀態(tài)變遷到另一個(gè)狀態(tài)一切可能的途徑。由于篇幅的限制,下面以受方掛鉤接口功能 AH功能為例,來(lái)介紹功能模塊的實(shí)現過(guò)程及原理。受方掛鉤功能賦予器件保證正確地接收遠地多線(xiàn)消息地能力。一個(gè)源方掛鉤功能與一個(gè)或多個(gè)受方掛鉤功能(分別含于各個(gè)器件中)的鏈鎖掛鉤序列保證每個(gè)消息拜特的異步傳遞。受方掛鉤功能可以延遲多線(xiàn)消息傳遞的開(kāi)始或結束,直到器件準備好繼續參與傳遞過(guò)程為止。狀態(tài)圖如圖 1:

VHDL語(yǔ)言描述如下:
process(c_state,n_state)
begin
AIDS=0;ANRS=0;AWNS=0;ACDS=0;ACRS=0;
case c_state is
when s1=>AIDS=1;NRFD=1;NDAC=1;
IF (ATN OR LACS OR LADS)=1 then n_state=s2;
else n_state=s1; end if;
when s2=>ANRS=1;NRFD=0;NDAC=0;
IF ((ATN OR rdy) and not tcs)= 1 then n_state=s3;
elsif DAV=1 then n_state=s5;
else n_state=s2; end if;
when s3=>ACRS=1;NRFD=1;NDAC=0;
IF DAV=1 then n_state=s4;
ELSIF (NOT ATN AND NOT rdy)=1 THEN n_state=s2;
else n_state=s3; end if;
when s4=>ACDS=1;NRFD=0;NDAC=0;
IF ((ATN AND T3) OR (NOT ATN AND NOT rdy))=1 THEN n_state=s5;
else n_state=s4; end if;
when s5=>AWNS=1;NRFD=0;NDAC=1;
IF DAV=0 then n_state=s2;
else n_state=s5; end if;
end case;
end process;
根據儀器的具體要求,由于大多數測試系統只要求被遠控,并不要求控功能,而并查功能在系統組建中屬于可選項,很少用到,為了簡(jiǎn)化系統,設計中徹底去掉此兩項功能。其他功能模塊包括:講者功能( T)、聽(tīng)者功能( L)、源方掛鉤功能( SH)、受方掛鉤功能( AH)、服務(wù)請求功能(SR)、、遠控本控功能( RL)、設備觸發(fā)功能(DT)和設備清除功能(DC)。其設計原理與 AH相同,在這里就不做詳細論述。
2.4 輔助命令譯碼器與多線(xiàn)消息譯碼器
1.輔助命令譯碼器通過(guò)對輔助命令寄存器 F0到 F4位的譯碼來(lái)生成輔助命令。
輔助命令共有 stactic和 pulse兩種,即靜態(tài)和脈沖兩種信號,靜態(tài)命令用電平的高低來(lái)表示。而動(dòng)態(tài)命令則通過(guò)一個(gè)周期的方波脈沖信號來(lái)產(chǎn)生,要求脈沖命令至少在寫(xiě)完輔助命令寄存器后保持一個(gè)周期。我們通過(guò) VHDL語(yǔ)言來(lái)完成本模塊的設計。
2.多線(xiàn)消息是處于相互排斥的編碼集中但又公用一組信號線(xiàn)來(lái)傳遞的消息。在母線(xiàn)上,每一時(shí)刻只能傳遞一條多線(xiàn)消息(一個(gè)消息拜特)。多線(xiàn)消息在遠地消息譯碼單元內進(jìn)行譯碼。在這個(gè)譯碼單元,通過(guò)消息傳遞單元(DIO線(xiàn))來(lái)接收母線(xiàn)上的消息。消息譯碼單元僅在命令工作方式下( ATN=真)期間起作用。這樣的接口消息可能是地址、通令、專(zhuān)令或副令之一。在數據工作方式( ATN=假)中,數據線(xiàn)上攜帶器件消息,這時(shí)譯碼單元不起作用。在本 GPIB控制器設計中,此模塊還包含了地址比較器,這樣可以得到內部狀態(tài)機所需的與地址相關(guān)的信號。用 VHDL語(yǔ)言完成其設計,并例化成模塊。
2.5 三態(tài) I/O通道
需要注意的是芯片數據通道中八條數據線(xiàn)與控制數據流向的八條控制線(xiàn)都是雙向的,所以必須對 I/O通道進(jìn)行設置。實(shí)現雙向總線(xiàn),就需要使用可編程邏輯器件的雙向口構造雙向三態(tài)總線(xiàn)。三態(tài)總線(xiàn)的實(shí)現,需要使用三態(tài)緩沖器,實(shí)現高、低電平和高阻三個(gè)狀態(tài)?;贏(yíng)LTERA公司的 CPLD系列器件的特點(diǎn),我們在設計的時(shí)候,內部避免使用雙向的三態(tài)總線(xiàn),將雙向的信號分別直接引到外部。在外部設計雙向三態(tài)總線(xiàn)。設計中采用圖形方式輸入,利用參數化模塊庫(LPM)實(shí)現。這種方法尤為清晰簡(jiǎn)便。如圖所示:

在這里用 TE信號來(lái)作為三態(tài)總線(xiàn)的方向控制信號。不考慮控功能,當本設備處于并行點(diǎn)名狀態(tài),或者作為非命令數據的源接受方時(shí),TE信號為真,即 TE=PPAS+~SIDS。
2.6 GPIB總線(xiàn)中的三線(xiàn)掛鉤技術(shù)的實(shí)現三線(xiàn)掛鉤技術(shù)是本設計的關(guān)鍵,因為在總線(xiàn)傳輸中,所有的命令和數據的傳送都要通過(guò)三線(xiàn)掛鉤來(lái)實(shí)現。
GPIB 總線(xiàn)中的三線(xiàn)掛鉤技術(shù)( DAV、NRFD、NDAC)可以自動(dòng)適應測試系統中各種不同器件的傳輸速率。源方作為講者或者控者的器件,發(fā) DAV消息。受方作為聽(tīng)者的器件,發(fā) NRFD、NDAC消息。三條握手線(xiàn), DAV線(xiàn)、NRFD線(xiàn)和 NDAC線(xiàn),用于控制設備之間消息字節的傳送。發(fā)送消息方(源方)和接收消息方(受方)利用這 3條握手線(xiàn)進(jìn)行三線(xiàn)掛鉤,以保證數據線(xiàn)上的消息(命令或數據)能準確無(wú)誤地傳送。

通過(guò)對系統的仿真,對比 NI公司的 GPIB控制器 NAT9914數據手冊上的三線(xiàn)掛鉤的時(shí)序圖可以看出,本設計成功地實(shí)現了三線(xiàn)掛鉤的要求。
2.7 系統調試
調試是軟硬件設計過(guò)程中必不可少的一環(huán)。昀終程序通過(guò) ByteBlaster專(zhuān)用下載電纜下載 EPM3256ATC144-10芯片中,將下載好程序地 CPLD取代原來(lái)系統中的 NAT9914進(jìn)行在線(xiàn)調試。通過(guò)反復的試驗,成功地實(shí)現了 CPLD替代 GPIB控制器的大部分功能。
3. 結論本文的創(chuàng )新點(diǎn):采用低成本的 CPLD器件替代了價(jià)格昂貴,且難以購買(mǎi)的 GPIB控制芯片,成功的實(shí)現了具有自主知識產(chǎn)權的 IP CORE,并且所有核心模塊完全采用 VHDL語(yǔ)言實(shí)現,能夠在不同的開(kāi)發(fā)環(huán)境上移植,可以根據不同的應用環(huán)境,對其進(jìn)行進(jìn)行剪裁和優(yōu)化,不僅大大節省了成本,而且具有很大的靈活性。
參考文獻:
譚會(huì )生,張昌凡.EDA技術(shù)及應用.西安電子科技大學(xué)出版社,2001
楊安祿,陳長(cháng)齡.電子儀器接口技術(shù),第 1版.電子科技大學(xué)出版社, 1994
王術(shù)群,田書(shū)林.“高速數據發(fā)生器的 GPIB接口與驅動(dòng)軟件設計”,電子科技大學(xué)碩士論文
李訓銘,趙雪.基于 GPIB接口的虛擬儀器在接收機測試臺的應用[ J].微計算機信息, 2006, 6-1:184-186
評論