孫 吉,張丕狀,呂永志
(中北大學(xué) 信息探測(cè)與處理技術(shù)研究所,山西 太原 030051)
?
關(guān)于PXI總線開(kāi)發(fā)的討論
孫吉,張丕狀,呂永志
(中北大學(xué) 信息探測(cè)與處理技術(shù)研究所,山西 太原 030051)
摘要:論述了PXI總線開(kāi)發(fā)的背景以及PXI總線轉(zhuǎn)化為本地總線的具體開(kāi)發(fā)過(guò)程,包括驅(qū)動(dòng)的開(kāi)發(fā),硬件電路的搭建和本地總線的工作流程。
關(guān)鍵詞:PXI總線;CPLD;狀態(tài)機(jī);PCI9052
PXI(PCIeXtensions for Instrumentation)總線以其穩(wěn)定可靠的傳輸速率和堅(jiān)固的硬件連接已經(jīng)被廣泛應(yīng)用到工業(yè)數(shù)據(jù)采集中,它保持了跟個(gè)人計(jì)算機(jī)軟件的兼容性,不僅使用方便而且價(jià)格低廉,直接應(yīng)用了PCI規(guī)范定義的電氣特性,不僅有著PCI的電氣規(guī)范特性,而且有Compact PCI的堅(jiān)固耐用的物理特性。PXI總線源于Compact PCI。
PXI可以利用現(xiàn)成的大量工業(yè)標(biāo)準(zhǔn)軟件數(shù)據(jù)的存儲(chǔ)及處理的微機(jī)系統(tǒng)的開(kāi)發(fā)。
PXI支持兩種Eurocard尺寸的模塊:3U,160*100mm;6U,233.35*160mm。3U可以有J1,J2兩個(gè)接口連接器,J1包括32位本地總線信號(hào),J2包括64位PCI數(shù)據(jù)所需信號(hào)和用于實(shí)現(xiàn)PCI電氣特性的信號(hào)。
1PXI總線的發(fā)展過(guò)程
PXI總線技術(shù)的產(chǎn)生和發(fā)展可以分為三個(gè)主要階段:
1) PCI局部總線技術(shù)
PCI是Peripheral Component Interconnect的英文縮寫,由美國(guó)Intel公司首先推出。1991年Intel公司聯(lián)合世界上多家公司成立了PCISIG,致力于促進(jìn)PCI局部總線工業(yè)標(biāo)準(zhǔn)的發(fā)展。1992年,PCISIG發(fā)布了PCI局部總線規(guī)范1.0。經(jīng)過(guò)修改后,1993年發(fā)布了PCI總線局部規(guī)范2.0,1995年又發(fā)布了修改版2.1,PCI局部總線是微機(jī)上的處理器/存儲(chǔ)器與外圍控制部件、外圍附加模塊之間的互聯(lián)結(jié)構(gòu),它規(guī)定了互聯(lián)結(jié)構(gòu)的協(xié)議、電氣機(jī)械以及配置空間規(guī)范。
2) CompactPCI總線技術(shù)
CompactPCI是 Compact Peripheral Component Interconnect的縮寫,是PCI總線的電氣和軟件標(biāo)準(zhǔn)加歐式卡的組裝標(biāo)準(zhǔn)。自1993年以來(lái),由于PCI總線在開(kāi)放性、高性能、低成本、通用操作系統(tǒng)等方面的優(yōu)勢(shì),使其得到迅速的普及和發(fā)展。這一沖擊波大大激發(fā)了工業(yè)領(lǐng)域和通信市場(chǎng)的制造商及用戶開(kāi)始考慮如何利用PCI的成果和改造PCI總線,制造出更堅(jiān)實(shí)、模塊化、更易用、生命周期更長(zhǎng)的嵌入式計(jì)算機(jī)產(chǎn)品,滿足工業(yè)控制通信領(lǐng)域的需要。
1994年,美國(guó)的一些工業(yè)計(jì)算機(jī)制造商建立了PCI工業(yè)計(jì)算機(jī)制造協(xié)會(huì),簡(jiǎn)稱PICSIG。1995年P(guān)ICSIG出版了CompactPCI規(guī)范1.0,1997年又出版了CompactPCI規(guī)范2.0。
CompactPCI迅速利用PCI的優(yōu)點(diǎn),提供了滿足工業(yè)需求的高性能核心系統(tǒng)。
3) PXI總線技術(shù)
PXI總線是1997年美國(guó)國(guó)家儀器公司(NI)發(fā)布的一種高性能低價(jià)位的開(kāi)放性,模塊化儀器總線,是一種專為工業(yè)數(shù)據(jù)采集與儀器儀表測(cè)量應(yīng)用領(lǐng)域而設(shè)計(jì)的模塊化儀器自動(dòng)測(cè)試平臺(tái)。他能夠提供高性能的測(cè)量,而價(jià)格不十分昂貴。PXI總線將CompactPCI規(guī)范定義的CompactPCI總線技術(shù)發(fā)展成適合于試驗(yàn),測(cè)量與數(shù)據(jù)場(chǎng)合應(yīng)用的機(jī)械,電氣和軟件規(guī)范,從而形成了新的虛擬儀器體系結(jié)構(gòu)。PXI這種新型模塊化儀器系統(tǒng)是在PXI總線內(nèi)核技術(shù)上增加了成熟的技術(shù)規(guī)范和要求形成的。
它通過(guò)增加用于多板同步的觸發(fā)總線和參考時(shí)鐘,用于進(jìn)行精確定時(shí)的星形觸發(fā)總線,以及用于相鄰模塊間高速通訊的局部總線來(lái)滿足試驗(yàn)和測(cè)量用戶的要求。PXI規(guī)范在CompactPCI機(jī)械規(guī)范中增加了測(cè)試環(huán)境和主動(dòng)冷卻要求以保證多廠商產(chǎn)品的互操作性和系統(tǒng)的易集成性。PXI將Microsoft Windows定義為其標(biāo)準(zhǔn)軟件框架,保證系統(tǒng)的易于集成與使用,從而進(jìn)一步降低最終用戶的開(kāi)發(fā)費(fèi)用。
2PXI總線開(kāi)發(fā)的具體實(shí)踐
本論文利用北京航天測(cè)控技術(shù)有限公司生產(chǎn)的基于Windows 8系統(tǒng)的PXI智能平板(產(chǎn)品代號(hào)為AMC58222)作為開(kāi)發(fā)平臺(tái),對(duì)PXI總線進(jìn)行開(kāi)發(fā)。
本設(shè)計(jì)主要是把PXI總線通過(guò)橋接芯片PCI9052來(lái)轉(zhuǎn)化為本地總線以此來(lái)實(shí)現(xiàn)PXI總線對(duì)本地信號(hào)的控制。
本地總線的實(shí)現(xiàn)是由CPLD完成的。
本論文討論的是把PXI總線轉(zhuǎn)換為本地總線后通過(guò)CPLD來(lái)控制板卡上的模擬開(kāi)關(guān)。PXI總線傳輸數(shù)據(jù)需要用到驅(qū)動(dòng)程序的開(kāi)發(fā),這里用到的開(kāi)發(fā)工具為WinDriver,該板卡的供電電壓為5 V,通過(guò)PXI總線來(lái)實(shí)現(xiàn)。開(kāi)發(fā)的過(guò)程中使用的WinDriver的版本是10.21。該板卡是標(biāo)準(zhǔn)的3U模塊,總線用到了J1接口,可以提供32位的總線傳輸位數(shù),該板卡的實(shí)現(xiàn)方案如圖1所示。
圖1PXI開(kāi)發(fā)總線的設(shè)計(jì)方案
本文所涉及的電路板的實(shí)物圖如圖2。
圖2 實(shí)際設(shè)計(jì)的電路板卡
在應(yīng)用PXI總線的過(guò)程中我們應(yīng)用到了50 Ω的排阻來(lái)實(shí)現(xiàn)PXI總線和PCI9052芯片的連接,其作用是為了增強(qiáng)總線的傳輸能力。
PCI9052所要實(shí)現(xiàn)的是將PXI總線轉(zhuǎn)化為本地總線,在使用PCI9052信號(hào)連接的過(guò)程中,需要注意一些問(wèn)題,其中的引腳TEST和LHOLD需要接一個(gè)10 k的下拉電阻。CPLD的時(shí)鐘是由PCI9052提供的,其頻率為32 MHz,本論文用到的是PCI9052的C模式,該模式下數(shù)據(jù)總線和地址總線是分開(kāi)的,下面表1是通過(guò)模擬開(kāi)關(guān)控制的信號(hào)電平。
表1 控制模擬開(kāi)關(guān)所需要的電平
在開(kāi)發(fā)過(guò)程中,需要對(duì)驅(qū)動(dòng)程序進(jìn)行編寫,本論文采用的是WinDriver,該軟件的特點(diǎn)是支持ISA,EISA,PCI,Plug & Play和DMA。不需要牽扯到很低層的東西即可在短時(shí)間里編出驅(qū)動(dòng)程序。使用WinDriver的優(yōu)點(diǎn)是:開(kāi)發(fā)者并不需要熟悉任何內(nèi)部操作系統(tǒng)或kernel programming或DDK及任何驅(qū)動(dòng)程式。WinDriver同時(shí)允許開(kāi)發(fā)者在自己所熟悉的開(kāi)發(fā)環(huán)境下,利用使用者模式(User Mode)如使用MSDEV Visual C/C++,Borland C++Builder,Delphi或者任何Win32編譯器。使用WinDriver所開(kāi)發(fā)的驅(qū)動(dòng)程序均可用于Windows 9x,NT/2000,NT Embedded,CE Linuxand Solaris等平臺(tái)。
該軟件可以縮短開(kāi)發(fā)驅(qū)動(dòng)程序的周期,它本身已經(jīng)建立了一個(gè)關(guān)于PCI9052驅(qū)動(dòng)開(kāi)發(fā)的基本框架,可以在此基礎(chǔ)上進(jìn)行適合自己功能的驅(qū)動(dòng)的開(kāi)發(fā)。
首先要進(jìn)行軟件的安裝,由于PLX9050的庫(kù)文件和PLX9052完全兼容,因此,可以使用plx/9050來(lái)對(duì)PCI9052芯片進(jìn)行開(kāi)發(fā)。安裝好軟件后依次打開(kāi)軟件WinDriver目錄下的PXI,9050(該文件夾里包含Projects,Win32,X86文件夾各一個(gè),file.txt文件,p9050.inf文件,和p9050_diag.c文件),安裝該文件下的p9050.inf文件,該文件夾里是一個(gè)PCI9050芯片的診斷程序,為總線的調(diào)試提供了簡(jiǎn)單的驅(qū)動(dòng)程序,我們可以在此基礎(chǔ)上對(duì)其進(jìn)行修改,來(lái)滿足實(shí)際的需要。
打開(kāi)該文件夾里的p9050_diag.exe,就可對(duì)我們開(kāi)發(fā)的板卡進(jìn)行測(cè)試,該測(cè)試程序包括以下幾個(gè)功能:
1) 掃描PCI總線
2) 找到和打開(kāi)一個(gè)PLX芯片。
3) 讀/寫芯片上的存取器和IO口地址
4) 讀/寫芯片上的配置空間
5) 讀/寫run-time寄存器
6) 使能/禁止芯片的中斷
7) 使能/禁止即插即用和電源管理事件
8) 訪問(wèn)板卡上的串行EEPROM
9) 退出
通過(guò)實(shí)際的測(cè)試后驗(yàn)證發(fā)現(xiàn)板卡可以被電腦找到,并且可以正常讀取,我們?cè)谠O(shè)計(jì)時(shí)用了四個(gè)LED燈來(lái)判斷是哪個(gè)開(kāi)關(guān)在工作。
在設(shè)計(jì)本地總線的時(shí)候要用到CPLD,通過(guò)閱讀PCI9052的數(shù)據(jù)手冊(cè),進(jìn)行數(shù)據(jù)傳輸時(shí)需要對(duì)CPLD編寫狀態(tài)機(jī)來(lái)實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換。該狀態(tài)轉(zhuǎn)換如圖3所示。
圖3 狀態(tài)轉(zhuǎn)換圖
3結(jié)論
以下是開(kāi)發(fā)過(guò)程中編寫的部分CHDL程序:
begin
en_y<=en_n(1 downto 0);
lclk<= clk;
clk_out<= clk;
data_out_a<=reg1;
ads_n_o<=ads_n;
lwr_n_o<=lwr_n;
wr_n_o<=wr_n;
blast_n_o<=blast_n;
yima: process(addr_in)
begin
caseaddr_in is
when "00000000"=>en_n<="1110";
when "00000100"=>en_n<="1101";
when "00001000"=>en_n<="1011";
when "00001100"=>en_n<="0111";
when others=>en_n<="1111";
end case;
end process yima;
process(rst_n,clk,next_state)
begin
if rst_n='0' then
current_state<=idle;
else if clk'event and clk='1' then
current_state<=next_state;
end if;
end if;
end process;
process(current_state,ads_n,blast_n,wr_n,lwr_n)
begin
casecurrent_state is
when idle =>
if ads_n='0' then
next_state<=w_state;
else
next_state<=idle;
end if;
lrdyi_n<='1'; s_lwr_n<='1';
when w_state=>
if blast_n='1' then
next_state<=w_state;
else
next_state<=idle;
end if;
ifwr_n='0' and lwr_n='1' then
lrdyi_n<='0'; s_lwr_n<='0';
else
lrdyi_n<='1'; s_lwr_n<='1';
end if;
--when others null;
end case;
end process;
process(clk,s_lwr_n,en_n)
begin
if clk'event and clk='1' then
if s_lwr_n='0' then
case en_n is
when "1110" => reg1<=data_in;
-- when "1101" => reg2<=data_in;
--when "1011" => reg3<=data_in;
--when "0111" => reg4<=data_in;
when others=> reg1<="00000000";
--reg2<="00000000";
--reg3<="00000000";
--reg4<="00000000";
end case;
end if;
end if;
end process;
end Behavioral;
參考文獻(xiàn)
[1]任勇峰,彭巧君,劉占峰.基于FPGA的CPCI高速讀數(shù)接口設(shè)計(jì)[J].電子器件,2015(1):148-151.
[2]張艷.PXI總線技術(shù)綜述[J].電子世界,2013,24:15-16.
[3]趙明陽(yáng),朱巖,張建東,等.基于PCI局部總線的1553B總線接口卡設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012(10):47-49+52.
[4]陳琦.PCI9052芯片在話音處理單元中的應(yīng)用[J].現(xiàn)代導(dǎo)航,2015(1):58-64.
[5]王亞曉,李平,王建華.基于PCI9052的CNC齒輪測(cè)量中心CAMAC機(jī)箱控制器的研制[J].工具技術(shù),2010(4):87-90.
[6]楊新友,鄒嵐,鐘建軍.基于WinDriver的USB驅(qū)動(dòng)程序開(kāi)發(fā)[J].電腦知識(shí)與技術(shù),2015(11):231-232.
收稿日期:2015-12-17
作者簡(jiǎn)介:孫吉(1988- ),男,山西太原人,碩士研究生,主要從事通信與信息系統(tǒng)的研究。
文章編號(hào):1674- 4578(2016)02- 0086- 03
中圖分類號(hào):TP273
文獻(xiàn)標(biāo)識(shí)碼:A
The Discussion on the Development of PXI Bus
Sun Ji1, Zhang Pizhuang2, Lv Yongzhi
(TheInstituteofSignalCapturing&ProcessingTechnology,NorthUniversityofChina,TaiyuanShanxi030051,China)
Abstract:The article discusses the background of PXI bus development and the specific development process from PXI bus into the local bus, including the driver development, the construction of hardware circuit and the working process of local bus.
Key words:PXI bus; CPLD; state machine; PCI9052