摘要:文章以VXI总线开关矩阵模块为例,介绍了基于可编程逻辑器件的VXIbus寄存器基接口的开发过程。给出了选用ALTERA公司的可编程逻辑器件FLEX 10K10在MAXPLUSII环境下,结合VXIbus时序对接口逻辑电路进行波形仿真和时序分析的方法。
关键词:VXI总线 接口 CPLD FLEX 10K
1 引言
VXI总线测试系统是一种世界范围内完全开放的、适用于多个生产厂家的模块化仪器总线系统。随着仪器功能逐渐向复杂化发展,以数字电路为主的接口电路的设计也在追求更高的集成度,这时如果采用可编程逻辑器件(PLD)技术代替传统的中、小规模集成电路来实现电路设计,不仅可以节省大量的板上空间,而且电路的可靠性和可修改性也会大大提高。设计使用时可以根据接口和功能电路的需要选用合适的器件。在VXI总线开关模块的设计中,由于功能电路需要VXI接口提供较多的译码电路(即组合逻辑单元),因此,选用ALTERA公司的复杂可编程逻辑器件(CPLD)FLEX 10K10可在MAXPLUSII开发环境下,采用原理图与VHDL语言混合设计以及ByteBlaster在线编程技术来实现VXIbus寄存器基的接口。此接口可在不改变外围电路的情况下升级为更高级的消息基接口。
2 VXIbus寄存器基接口设计
VXIbus寄存器基接口电路由初始化电路、模块和寄存器译码、寄存器读写及数据传输应答、中断申请及响应等四部分组成。这些部分均可在一片FLEX10K10中实现,既可以采用原理图设计,也可以采用硬件描述语言设计,还可以两者混合来进行设计。
根据VXI总线时序,在电源接通后,背板总线上的SYSRST信号应由低变高,以使SOFTRST信号由高变低并启动一次模块复位自检过程。根据VXI总线协议,模块复位自检应包括寄存器(基于配置寄存器和用户定义操作寄存器)的初始化和功能电路的初始化。由于识别(ID)寄存器、器件类型(DTYPE)寄存器以及状态(STATUS)寄存器是只读寄存器,因此可采用静态配置(SC)的方法,即在FLEX10K10内部预先将协议规定的内容锁存在16位D触发器中。控制寄存器和用户定义操作寄存器对于VXI主模块来说是只写寄存器,初始化时只需根据需要写入相应的内容即可。按照开关矩阵功能电路的要求,初始化阶段须依次输出16组脉冲,每次由译码输出控制选通一列继电路的行、列信号,从而完成对256个继电路关断操作。
2.2 模块和寄存器译码
VXIbus寄存器基模块与消息基模块的主要区别在于其与主模块的通信方式不同,寄存器基模块通常作为从模块通过读写寄存器与主模块通信。参与译码和读写模式控制的信号线有A01~A15,AM0~AM5,LWORD,DS0,DS1,WRITE等。
模块和寄存器译码方式有两种,一种是递进式译码,即将译码分为模块译码和寄存器译码两个层次,当地地址A06~A13上的逻辑值与VXIbus模块唯一的逻辑地址相符时,说明该模块被选中,进而根据地址线A01~A15以及WRITE线等逻辑值进行下一级的寄存器译码,以确定VXIbus访问的具体寄存器;另一种是直接译码,即根据地址线A01~A15上的逻辑值一次性确定是否访问本模块以及访问哪个寄存器,从而选通相应的寄存器。这两种方式各有利弊,若采用原理图设计,受译码器输入位数的限制,采用前一种递进式译码较为恰当;若采用VHDL等硬件描述语言设计,则宜选用后一种译码方式,因为直接译码在综合时较递进方式使用了较少位数的计数器,而且省掉了多路选择器和锁存器,因而更能节约片内资源,提高工作速度。
DS0,DS1,A01,LWORD,AM0-AM5控制寄存器的读写模式,本模块采用A16、D16非特权访问模式,且总是读写字节(0~1),因而上述位的有效状态为:DS0=低,DS1=低,A01=低,LWORD=高,AM=29H或2DH。用VHDL描述的译码电路如下:
--译码信号定义
dben< =ds0 or ds1;- -VXI背板数据总线选通
adh2< =ad(14)& ad (13);- -VXI地址线A15、A14
adl8<=ad(12)&ad&ad (10)& ad (9)
& ad (8) & ad (7)& ad (6) & ad (5);- -八位逻辑地址
adl5<=ad(4)& ad(3) &ad(2)& ad (1) & ad(0);- -五位寄存器地址
- -模块和寄存器译码
process(sysclk)
begin
if (sclk'event and sclk='1') then
if(as='0')then
if(adl8=addrset)then - -表明选中本模块
if(adh2 & adl5 & AM & iack & lword & ds0 & dsl & wr
& srst="111000010101110001")then - -地址'10000'
operator-sel<='0';且WR*为'0',操作寄存器选通
elsif(adh2&adl5&AM&iack&lword&ds0&ds1&wr
& srst="110001010101110001")then - -地址'0010',
control-sel<='0';- -WR*为'0',控制寄存器选通
elsif(adh2 adl5&AM&iack & lword&ds0&ds1 &wr &srst=''110001010101110010")then
……
elsif (addrhigh2&addrlow 5 & AM& iack & lword
&ds0&ds&wr&srst="110000010101110011")then
sel0<='0';- -地址'00000',WR*为'0',识别寄存器选通
else
operator_select<='1';- -未选中任何有效寄存器
sel2<='1';
sell<='1';
sel0<='1';
……
2.3 寄存器读写及数据传输应答
基寄存器器件中,数据传输主要通过数据传输总线对特定寄存器的读写来完成。,数据传输总线可以分为如下三类:寻址线、数据线和控制线。其中寻址线包括A01~A15和WRITE,主要用于产生寄存器地址选通信号,并完成对识别寄存器、器件类型寄存器、状态寄存器、控制寄存器和操作寄存器的访问。数据线包括D00~D15,用于主模块与从模块的数据传输。控制线包括AS、DS0、DS1、BERR、DTACK和WRITE等。所有DTB周期均异步进行的,并通过控制线进行控制。这些控制线保护了VXI总线系统能够正常工作并按协议规定的时序读写数据。数据传输应答DTACK信号线可由图1所示的延时电路来实现。
2.4 中断信号线的处理
大部分寄存器基VXI模块不具有申请中断和响应中断的能力,但为了使VXI机箱中其它模块能够正常申请中断和响应中断,应对IACK、IACKIN、IACKOUT等中断响应信号线进行必要的处理,可以将IACKIN和IACKOUT在模块内短接,即本模块从不响应中断,但能够保证中断响应信号畅通地在中断响应菊花链中传递。电路如图2所示。
3 仿真和时序分析
以上电路均在ALTERA公司的MAXPLUSII环境下设计实现,设计完成后,可用两种方法对电路进行仿真:一种是直接在波形仿真器(Waveform
Editor)中绘制输入波形,另一种是编写向量文件(Vector
file),向量文件可以独立仿真,也可以在波形仿真器中调用,从而自动生成输入波形。参照VXI总线时序给出相关信号的输入时序,观察仿真输出波形,与期望的输出相比较并反复修改。图3是只读寄存器初始化程序的仿真波形,可以看出,当SYSRST由低变高时,各只读寄存器初始化为协议要求的数值。
4 管脚分配及程序下载
FLEX 10K10有EPF10K10LC84(PLCC封装)、EPF10K10TL144(TQFP封装)、EPF10K10Q208(PQFP封装)三种类型,首先,应根据电路设计的需要选择合适的器件类型及封装,然后在Floorpan Editor中进行管理分配。CPLD或FPGA器件中均有一些引脚只能作输入脚,不能作输出脚,分配时需特别注意。
FLEX系列的CPLD支持在线编程,电路调试时可通过下载电缆将程序下载到器件中,调试完毕后可将程序烧写到EPC1441中,以在上电时由它来完成对器件的程序加载。
5 结束语
用可编程逻辑器件设计VXIbus模块接口可以节省宝贵的板上空间,以实现更复杂的仪器功能,同时可以利用EDA工具的波形仿真和时序分析等功能来提高设计的可靠性和精度,另外还能够在不改变硬件设计的情况下修改电路逻辑,缩短仪器的开发周期并提高效率。
上一篇:基于SY100E445的4位串行/并行转换器设计
下一篇:PCI总线主控I/O加速器PCI9054
- 热门资源推荐
- 热门放大器推荐