关于PXI总线开发的讨论

2016-07-23 08:27张丕状吕永志
山西电子技术 2016年2期
关键词:状态机

孙 吉,张丕状,吕永志

(中北大学 信息探测与处理技术研究所,山西 太原 030051)



关于PXI总线开发的讨论

孙吉,张丕状,吕永志

(中北大学 信息探测与处理技术研究所,山西 太原 030051)

摘要:论述了PXI总线开发的背景以及PXI总线转化为本地总线的具体开发过程,包括驱动的开发,硬件电路的搭建和本地总线的工作流程。

关键词:PXI总线;CPLD;状态机;PCI9052

PXI(PCIeXtensions for Instrumentation)总线以其稳定可靠的传输速率和坚固的硬件连接已经被广泛应用到工业数据采集中,它保持了跟个人计算机软件的兼容性,不仅使用方便而且价格低廉,直接应用了PCI规范定义的电气特性,不仅有着PCI的电气规范特性,而且有Compact PCI的坚固耐用的物理特性。PXI总线源于Compact PCI。

PXI可以利用现成的大量工业标准软件数据的存储及处理的微机系统的开发。

PXI支持两种Eurocard尺寸的模块:3U,160*100mm;6U,233.35*160mm。3U可以有J1,J2两个接口连接器,J1包括32位本地总线信号,J2包括64位PCI数据所需信号和用于实现PCI电气特性的信号。

1PXI总线的发展过程

PXI总线技术的产生和发展可以分为三个主要阶段:

1) PCI局部总线技术

PCI是Peripheral Component Interconnect的英文缩写,由美国Intel公司首先推出。1991年Intel公司联合世界上多家公司成立了PCISIG,致力于促进PCI局部总线工业标准的发展。1992年,PCISIG发布了PCI局部总线规范1.0。经过修改后,1993年发布了PCI总线局部规范2.0,1995年又发布了修改版2.1,PCI局部总线是微机上的处理器/存储器与外围控制部件、外围附加模块之间的互联结构,它规定了互联结构的协议、电气机械以及配置空间规范。

2) CompactPCI总线技术

CompactPCI是 Compact Peripheral Component Interconnect的缩写,是PCI总线的电气和软件标准加欧式卡的组装标准。自1993年以来,由于PCI总线在开放性、高性能、低成本、通用操作系统等方面的优势,使其得到迅速的普及和发展。这一冲击波大大激发了工业领域和通信市场的制造商及用户开始考虑如何利用PCI的成果和改造PCI总线,制造出更坚实、模块化、更易用、生命周期更长的嵌入式计算机产品,满足工业控制通信领域的需要。

1994年,美国的一些工业计算机制造商建立了PCI工业计算机制造协会,简称PICSIG。1995年PICSIG出版了CompactPCI规范1.0,1997年又出版了CompactPCI规范2.0。

CompactPCI迅速利用PCI的优点,提供了满足工业需求的高性能核心系统。

3) PXI总线技术

PXI总线是1997年美国国家仪器公司(NI)发布的一种高性能低价位的开放性,模块化仪器总线,是一种专为工业数据采集与仪器仪表测量应用领域而设计的模块化仪器自动测试平台。他能够提供高性能的测量,而价格不十分昂贵。PXI总线将CompactPCI规范定义的CompactPCI总线技术发展成适合于试验,测量与数据场合应用的机械,电气和软件规范,从而形成了新的虚拟仪器体系结构。PXI这种新型模块化仪器系统是在PXI总线内核技术上增加了成熟的技术规范和要求形成的。

它通过增加用于多板同步的触发总线和参考时钟,用于进行精确定时的星形触发总线,以及用于相邻模块间高速通讯的局部总线来满足试验和测量用户的要求。PXI规范在CompactPCI机械规范中增加了测试环境和主动冷却要求以保证多厂商产品的互操作性和系统的易集成性。PXI将Microsoft Windows定义为其标准软件框架,保证系统的易于集成与使用,从而进一步降低最终用户的开发费用。

2PXI总线开发的具体实践

本论文利用北京航天测控技术有限公司生产的基于Windows 8系统的PXI智能平板(产品代号为AMC58222)作为开发平台,对PXI总线进行开发。

本设计主要是把PXI总线通过桥接芯片PCI9052来转化为本地总线以此来实现PXI总线对本地信号的控制。

本地总线的实现是由CPLD完成的。

本论文讨论的是把PXI总线转换为本地总线后通过CPLD来控制板卡上的模拟开关。PXI总线传输数据需要用到驱动程序的开发,这里用到的开发工具为WinDriver,该板卡的供电电压为5 V,通过PXI总线来实现。开发的过程中使用的WinDriver的版本是10.21。该板卡是标准的3U模块,总线用到了J1接口,可以提供32位的总线传输位数,该板卡的实现方案如图1所示。

图1PXI开发总线的设计方案

本文所涉及的电路板的实物图如图2。

图2 实际设计的电路板卡

在应用PXI总线的过程中我们应用到了50 Ω的排阻来实现PXI总线和PCI9052芯片的连接,其作用是为了增强总线的传输能力。

PCI9052所要实现的是将PXI总线转化为本地总线,在使用PCI9052信号连接的过程中,需要注意一些问题,其中的引脚TEST和LHOLD需要接一个10 k的下拉电阻。CPLD的时钟是由PCI9052提供的,其频率为32 MHz,本论文用到的是PCI9052的C模式,该模式下数据总线和地址总线是分开的,下面表1是通过模拟开关控制的信号电平。

表1 控制模拟开关所需要的电平

在开发过程中,需要对驱动程序进行编写,本论文采用的是WinDriver,该软件的特点是支持ISA,EISA,PCI,Plug & Play和DMA。不需要牵扯到很低层的东西即可在短时间里编出驱动程序。使用WinDriver的优点是:开发者并不需要熟悉任何内部操作系统或kernel programming或DDK及任何驱动程式。WinDriver同时允许开发者在自己所熟悉的开发环境下,利用使用者模式(User Mode)如使用MSDEV Visual C/C++,Borland C++Builder,Delphi或者任何Win32编译器。使用WinDriver所开发的驱动程序均可用于Windows 9x,NT/2000,NT Embedded,CE Linuxand Solaris等平台。

该软件可以缩短开发驱动程序的周期,它本身已经建立了一个关于PCI9052驱动开发的基本框架,可以在此基础上进行适合自己功能的驱动的开发。

首先要进行软件的安装,由于PLX9050的库文件和PLX9052完全兼容,因此,可以使用plx/9050来对PCI9052芯片进行开发。安装好软件后依次打开软件WinDriver目录下的PXI,9050(该文件夹里包含Projects,Win32,X86文件夹各一个,file.txt文件,p9050.inf文件,和p9050_diag.c文件),安装该文件下的p9050.inf文件,该文件夹里是一个PCI9050芯片的诊断程序,为总线的调试提供了简单的驱动程序,我们可以在此基础上对其进行修改,来满足实际的需要。

打开该文件夹里的p9050_diag.exe,就可对我们开发的板卡进行测试,该测试程序包括以下几个功能:

1) 扫描PCI总线

2) 找到和打开一个PLX芯片。

3) 读/写芯片上的存取器和IO口地址

4) 读/写芯片上的配置空间

5) 读/写run-time寄存器

6) 使能/禁止芯片的中断

7) 使能/禁止即插即用和电源管理事件

8) 访问板卡上的串行EEPROM

9) 退出

通过实际的测试后验证发现板卡可以被电脑找到,并且可以正常读取,我们在设计时用了四个LED灯来判断是哪个开关在工作。

在设计本地总线的时候要用到CPLD,通过阅读PCI9052的数据手册,进行数据传输时需要对CPLD编写状态机来实现数据的转换。该状态转换如图3所示。

图3 状态转换图

3结论

以下是开发过程中编写的部分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;

参考文献

[1]任勇峰,彭巧君,刘占峰.基于FPGA的CPCI高速读数接口设计[J].电子器件,2015(1):148-151.

[2]张艳.PXI总线技术综述[J].电子世界,2013,24:15-16.

[3]赵明阳,朱岩,张建东,等.基于PCI局部总线的1553B总线接口卡设计[J].现代电子技术,2012(10):47-49+52.

[4]陈琦.PCI9052芯片在话音处理单元中的应用[J].现代导航,2015(1):58-64.

[5]王亚晓,李平,王建华.基于PCI9052的CNC齿轮测量中心CAMAC机箱控制器的研制[J].工具技术,2010(4):87-90.

[6]杨新友,邹岚,钟建军.基于WinDriver的USB驱动程序开发[J].电脑知识与技术,2015(11):231-232.

收稿日期:2015-12-17

作者简介:孙吉(1988- ),男,山西太原人,硕士研究生,主要从事通信与信息系统的研究。

文章编号:1674- 4578(2016)02- 0086- 03

中图分类号:TP273

文献标识码: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

猜你喜欢
状态机
FPGA状态机综合可靠性探究 ①
基于有限状态机的交会对接飞行任务规划方法
在硬件课程设计中引入Quartus Ⅱ状态机编辑器的探索与实践
基于Spring StateMachine的有限状态机应用研究
三段式状态机在单片机中的实现
基于单片机运行的多线程任务状态机
基于量子平台状态机的桥式起重机控制系统软件设计
双口RAM读写正确性自动测试的有限状态机控制器设计方法
基于有限状态机的雷达状态模型建立
基于反熔丝FPGA的有限状态机加固设计