1.1 用CPLD實(shí)現(xiàn)GPIB控制芯片的意義
綜觀現(xiàn)今市場(chǎng)上的測(cè)試儀器,不難發(fā)現(xiàn)GPIB總線有重要的作用,,在研制臺(tái)式測(cè)試儀器的時(shí)候,,客戶幾乎均要求具備GPIB接口,。可是在實(shí)際研發(fā)過(guò)程中,,卻發(fā)現(xiàn)GPIB控制芯片很難購(gòu)買(mǎi),,而且價(jià)格昂貴。而且作為測(cè)試儀器具備GPIB的接口,,一般只需要具有聽(tīng),、講、串查功能,,而不需要控,、并查功能,這樣又會(huì)造成資源與功能的浪費(fèi),。所以我們嘗試用CPLD來(lái)實(shí)現(xiàn)GPIB接口的聽(tīng),、講、串查功能,,不僅可擁有自主知識(shí)產(chǎn)權(quán),,節(jié)省了產(chǎn)品的成本,而且具有很大的靈活性,。
1.2 GPIB控制芯片簡(jiǎn)介
GPIB也叫HPIB,,是一個(gè)數(shù)字化的24腳并行總線,由16條信號(hào)線和8條地線組成,。這16條信號(hào)線分為8條數(shù)據(jù)線,、5條控制線和3條握手線。8條數(shù)據(jù)線:從DIO1到DIO8,,用來(lái)傳送命令,、地址和數(shù)據(jù);5條控制線:分別為ATN線,、IFC線,、REN線、SRQ線和EOI線,,用來(lái)管理通過(guò)接口的有序信息流,;3條握手線:DAV線、NRFD線和NDAC線,,用于控制設(shè)備之間消息字節(jié)的傳送,。發(fā)送消息方(源方)和接收消息方(受方)利用這3條握手線進(jìn)行三線掛鉤,以保證數(shù)據(jù)線上的消息(命令或數(shù)據(jù))能準(zhǔn)確無(wú)誤地傳送,。
在GPIB系統(tǒng)中,,把器件與GPIB總線的一種交互作用定義成一種接口功能。GPIB標(biāo)準(zhǔn)接口共定義了10種接口功能,。
1.3 設(shè)計(jì)軟件及設(shè)計(jì)芯片的選擇
開(kāi)發(fā)工具采用ALTERA公司的MAXplusⅡ10.0,。MAXplusⅡ開(kāi)發(fā)工具是美國(guó)Altera公司自行設(shè)計(jì)的一種EDA軟件工具,,它具有原理圖輸入和文本輸入(采用硬件描述語(yǔ)言)兩種輸入手段,配備有編輯,、編譯,、仿真、綜合,、芯片編程等功能,。
Altera公司是世界上從事可編程邏輯芯片生產(chǎn)的幾家主要廠商之一,其MAX3000A系列可編程邏輯芯片速度快,,容量大,,性價(jià)比高。我們選用的EPM3256ATC144-10,,擁有256個(gè)宏單元,,144個(gè)管腳,可自定義使用的管腳達(dá)116 個(gè),,4.5ns的傳輸延時(shí)完全能滿足要求,。
2 GPIB控制器各個(gè)模塊的設(shè)計(jì)
我們可以把整個(gè)系統(tǒng)劃分為幾個(gè)子系統(tǒng)。其中包括和微處理器接口的讀寫(xiě)電路,,與GPIB母線通信的接口功能,,以及內(nèi)部寄存器。對(duì)每個(gè)子系統(tǒng)的設(shè)計(jì)也可以采用向下分解為模塊級(jí)設(shè)計(jì),,這樣在調(diào)試和組件系統(tǒng)時(shí),,不僅具有很強(qiáng)的靈活性,而且方便代碼的調(diào)試以及利于代碼的重利用,。與微處理器接口的讀寫(xiě)電路設(shè)計(jì)可以利用組合邏輯電路設(shè)計(jì)方法實(shí)現(xiàn),,其基本模塊,如:譯碼電路,,讀寫(xiě)電路,,相對(duì)比較成熟,在設(shè)計(jì)的時(shí)候只要對(duì)其基本功能深刻理解的基礎(chǔ)上容易實(shí)現(xiàn),。與GPIB母線通信的子系統(tǒng)設(shè)計(jì)是本課題設(shè)計(jì)的重點(diǎn)也是難點(diǎn),,它不僅需要對(duì)IEEE488協(xié)議有深刻的認(rèn)識(shí),而且在接口功能子集的選擇上也有一定的要求,。
2.1 微處理器(MCU)接口電路
微處理器(MCU)接口包括提供正確的寄存器訪問(wèn)地址的譯碼電路,以及連同WE和DBIN一起構(gòu)成的訪問(wèn)GPIB控制器的讀寫(xiě)電路,,NCS用來(lái)選通地址譯碼,。地址譯碼電路以及數(shù)據(jù)讀寫(xiě)電路在數(shù)字電路設(shè)計(jì)中是最為成熟的電路,在此不作更多深入的闡述,。值得注意的是GPIB控制器的讀寫(xiě)信號(hào)并不是通常意義上的RD和WR信號(hào),,而是由DBIN和WE信號(hào)完成,。而且,對(duì)13個(gè)寄存器的譯碼也用的僅僅是RS[0:2],,這就需要和DBIN信號(hào)的配合來(lái)完成譯碼功能,。
2.2 內(nèi)部寄存器
GPIB控制器(參考NAT9914)的內(nèi)部體系結(jié)構(gòu)有13個(gè)寄存器,其中7個(gè)可寫(xiě)寄存器,,6個(gè)只讀寄存器,。它們都是八位的,其中可讀寄存器有中斷狀態(tài)寄存器0(ISR0),、中斷狀態(tài)寄存器1(ISR1),、地址狀態(tài)寄存器(ASR)、總線狀態(tài)寄存器(BSR),、命令通過(guò)寄存器(CPR),、數(shù)據(jù)輸入寄存器(DIR);可寫(xiě)寄存器有中斷屏蔽寄存器0(IMR0),、中斷屏蔽寄存器1(IMR1),、地址寄存器(ADR)、輔助命令寄存器(AUXCR),、串行查詢寄存器(SPR),、并行查找寄存器(PPR)、數(shù)據(jù)輸出寄存器(CDOR),。在GPIB 控制芯片的設(shè)計(jì)中對(duì)這十三個(gè)寄存器進(jìn)行詳細(xì)的描述,。本模塊的設(shè)計(jì)采用圖形方式,利用參數(shù)化模塊庫(kù)實(shí)現(xiàn)各個(gè)寄存器,。
2.3 接口功能
GPIB標(biāo)準(zhǔn)接口共定義了10種接口功能,。每一個(gè)接口功能由一組或多組相互聯(lián)系而又相互排斥的狀態(tài)來(lái)定義。在一個(gè)時(shí)刻,,一組互聯(lián)又互斥的狀態(tài)中必須有一個(gè)而且也僅又一個(gè)狀態(tài)在起作用,。在IEEE488協(xié)議中對(duì)接口功能的每一個(gè)狀態(tài)還做了兩方面的規(guī)定:
1.當(dāng)某個(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í)現(xiàn)過(guò)程及原理,。受方掛鉤功能賦予器件保證正確地接收遠(yuǎn)地多線消息地能力,。一個(gè)源方掛鉤功能與一個(gè)或多個(gè)受方掛鉤功能(分別含于各個(gè)器件中)的鏈鎖掛鉤序
列保證每個(gè)消息拜特的異步傳遞。受方掛鉤功能可以延遲多線消息傳遞的開(kāi)始或結(jié)束,直到器件準(zhǔn)備好繼續(xù)參與傳遞過(guò)程為止,。狀態(tài)圖如圖1:
圖1 AH功能狀態(tài)圖
其狀態(tài)轉(zhuǎn)換的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;
根據(jù)儀器的具體要求,,由于大多數(shù)測(cè)試系統(tǒng)只要求被遠(yuǎn)控,,并不要求控功能,而并查功能在系統(tǒng)組建中屬于可選項(xiàng),,很少用到,,為了簡(jiǎn)化系統(tǒng),設(shè)計(jì)中徹底去掉此兩項(xiàng)功能,。其他功能模塊包括:講者功能(T),、聽(tīng)者功能(L)、源方掛鉤功能(SH),、受方掛鉤功能(AH),、服務(wù)請(qǐng)求功能(SR)、遠(yuǎn)控本控功能(RL),、設(shè)備觸發(fā)功能(DT)和設(shè)備清除功能(DC),。其設(shè)計(jì)原理與AH相同,在這里就不做詳細(xì)論述,。
2.4 輔助命令譯碼器與多線消息譯碼器
1.輔助命令譯碼器通過(guò)對(duì)輔助命令寄存器F0到F4位的譯碼來(lái)生成輔助命令,。輔助命令共有stactic和pulse兩種,即靜態(tài)和脈沖兩種信號(hào),,靜態(tài)命令用電平的高低來(lái)表示,。而動(dòng)態(tài)命令則通過(guò)一個(gè)周期的方波脈沖信號(hào)來(lái)產(chǎn)生,要求脈沖命令至少在寫(xiě)完輔助命令寄存器后保持一個(gè)周期,。我們通過(guò)VHDL語(yǔ)言來(lái)完成本模塊的設(shè)計(jì),。
2.多線消息是處于相互排斥的編碼集中但又公用一組信號(hào)線來(lái)傳遞的消息。在母線上,,每一時(shí)刻只能傳遞一條多線消息(一個(gè)消息拜特),。多線消息在遠(yuǎn)地消息譯碼單元內(nèi)進(jìn)行譯碼。在這個(gè)譯碼單元,,通過(guò)消息傳遞單元(DIO 線)來(lái)接收母線上的消息,。消息譯碼單元僅在命令工作方式下(ATN=真)期間起作用。這樣的接口消息可能是地址,、通令,、專令或副令之一。在數(shù)據(jù)工作方式(ATN=假)中,,數(shù)據(jù)線上攜帶器件消息,,這時(shí)譯碼單元不起作用,。在本GPIB控制器設(shè)計(jì)中,,此模塊還包含了地址比較器,,這樣可以得到內(nèi)部狀態(tài)機(jī)所需的與地址相關(guān)的信號(hào)。用VHDL語(yǔ)言完成其設(shè)計(jì),,并例化成模塊,。
2.5 三態(tài)I/O通道
需要注意的是芯片數(shù)據(jù)通道中八條數(shù)據(jù)線與控制數(shù)據(jù)流向的八條控制線都是雙向的,所以必須對(duì)I/O通道進(jìn)行設(shè)置,。實(shí)現(xiàn)雙向總線,,就需要使用可編程邏輯器件的雙向口構(gòu)造雙向
三態(tài)總線。三態(tài)總線的實(shí)現(xiàn),,需要使用三態(tài)緩沖器,,實(shí)現(xiàn)高、低電平和高阻三個(gè)狀態(tài),?;贏LTERA公司的CPLD系列器件的特點(diǎn),我們?cè)谠O(shè)計(jì)的時(shí)候,,內(nèi)部避免使用雙向的三態(tài)總線,,將雙向的信號(hào)分別直接引到外部。在外部設(shè)計(jì)雙向三態(tài)總線,。設(shè)計(jì)中采用圖形方式輸入,,利用參數(shù)化模塊庫(kù)(LPM)實(shí)現(xiàn)。這種方法尤為清晰簡(jiǎn)便,。如圖所示:
圖2 三態(tài)總線的實(shí)現(xiàn)
在這里用TE信號(hào)來(lái)作為三態(tài)總線的方向控制信號(hào),。不考慮控功能,當(dāng)本設(shè)備處于并行點(diǎn)名狀態(tài),,或者作為非命令數(shù)據(jù)的源接受方時(shí),,TE信號(hào)為真,即TE=PPAS+~SIDS,。
2.6 GPIB總線中的三線掛鉤技術(shù)的實(shí)現(xiàn)
三線掛鉤技術(shù)是本設(shè)計(jì)的關(guān)鍵,,因?yàn)樵诳偩€傳輸中,所有的命令和數(shù)據(jù)的傳送都要通過(guò)三線掛鉤來(lái)實(shí)現(xiàn),。
GPIB總線中的三線掛鉤技術(shù)(DAV,、NRFD、NDAC)可以自動(dòng)適應(yīng)測(cè)試系統(tǒng)中各種不同器件的傳輸速率,。源方作為講者或者控者的器件,,發(fā)DAV消息。受方作為聽(tīng)者的器件,,發(fā)NRFD,、NDAC消息。三條握手線,DAV線,、NRFD線和NDAC線,,用于控制設(shè)備之間消息字節(jié)的傳送。發(fā)送消息方(源方)和接收消息方(受方)利用這3條握手線進(jìn)行三線掛鉤,,以保證數(shù)據(jù)線上的消息(命令或數(shù)據(jù))能準(zhǔn)確無(wú)誤地傳送,。
圖4 本設(shè)計(jì)三線掛鉤仿真圖
通過(guò)對(duì)系統(tǒng)的仿真,對(duì)比NI公司的GPIB控制器NAT9914數(shù)據(jù)手冊(cè)上的三線掛鉤的時(shí)序圖可以看出,,本設(shè)計(jì)成功地實(shí)現(xiàn)了三線掛鉤的要求,。
2.7 系統(tǒng)調(diào)試
調(diào)試是軟硬件設(shè)計(jì)過(guò)程中必不可少的一環(huán)。最終程序通過(guò)ByteBlaster專用下載電纜下載EPM3256ATC144-10芯片中,,將下載好程序地CPLD取代原來(lái)系統(tǒng)中的NAT9914進(jìn)行在線 調(diào)試,。通過(guò)反復(fù)的試驗(yàn),成功地實(shí)現(xiàn)了CPLD 代 GPIB 控制器的大部分功能,。
3 結(jié) 論
本文的創(chuàng)新點(diǎn):采用低成本的CPLD器件替代了價(jià)格昂貴,,且難以購(gòu)買(mǎi)的GPIB控制芯片,成功的實(shí)現(xiàn)了具有自主知識(shí)產(chǎn)權(quán)的IP CORE,,并且所有核心模塊完全采用VHDL語(yǔ)言實(shí)現(xiàn),,能夠在不同的開(kāi)發(fā)環(huán)境上移植,可以根據(jù)不同的應(yīng)用環(huán)境,,對(duì)其進(jìn)行進(jìn)行剪裁和優(yōu)化,,不僅大大節(jié)省了成本,而且具有很大的靈活性,。