VXI总线选择使用16、24或32位3种地址接口,不同的地址范围是短地址16位,标准地址24位以及扩展地址32位。地址宽度由地址修改码AM0~AM5决定,本接口选用短地址和标准地址。短地址使用地址线A01~A15,地址修改码为29H或2DH;标准地址使用地址线A01~A23,地址修改码为39H、3AH、3DH、3EH。作为寄存器基的接口,数据传输操作过程如下:在IACK*为高时,主模块用地址选通线AS*下降沿通知接口可获取地址信息。当寻址到本接口时,则打开数据通道,并在数据选通线DS1*或DS0*的下降沿,根据读写信号线WRITE*的状态,进行数据的读或写;并且通过数据传输应答线DTACK*为低有效作为应答信号。
作为A16\A24接口,它必须完成A16\A24接口的寻址要求。它包括VXI总线A16寄存器和A24寄存器寻址电路、VXI总线A16寄存器和A24寄存器、VXI总线A16\A24总线操作控制电路。在电路中,当AM16码符合A16器件的地址修改码的要求并且逻辑地址与本器件的八位逻辑地址开关相符时,选中本接口为A16接口。当AM24码符合A24接口的地址修改码的要求并且偏移地址也与本接口的偏移地址相符时,选中本接口为A24接口。
接口中A16选通信号A16*(上标*表示低电平有效)有效的条件是:
A16*=(NOT A15) OR (NOT A14) OR (A13 XOR Q7) OR (A12 XOR Q6) OR
(A11 XOR Q5) OR (A10 XOR Q4) OR (A9 XOR Q3) OR (A8 XOR Q2)
OR (A7 XOR Q1) OR (A6 XOR Q0) OR (NOT AM0) OR AM1 OR (NOT AM3)
OR AM4 OR AM5 OR (NOT IACK*) OR (NOT LWORD*)
其中Q7~Q0表示八位逻辑地址的状态。
接口 中A24选通信号A24*有效的条件是:
A24*=(A23 XOR B15) OR (A22 XOR B14) OR … OR (An XOR Bn-8)
其中B15~Bn-8表示偏移地址的状态。
总线操作控制电路随时监视寄存器选通信号A16*,A24*和数据选通信号DS0*~DS1*,产生数据总线使能信号DBEN*、数据传输方向控制信号DIR和总线数据传输应答信号DTACK*。这些信号的译码方程为:
DS*=DS1 AND DS0
EION*=(A16* OR DS*) AND (A24 OR DS*)
DIR=EION* OR (NOT WRITE*)
DTACK*=EION*
这些逻辑表达式都很容易在CPLD里实现。A16器件寄存器和A24寄存器均采用双端口RAM—IDT7024来实现。双端口RAM的一边接入VXI总线,另一边则挂到本地CPU上,如此本地CPU就可通过这些寄存器与系统中的其他器件进行数据交换。
2.2 双端口RAM电路
双端口RAM—IDT7024有两套独立的地址线、数据线、读写线、忙线和片选线,分别面向VXI总线及本地CPU,RAM则是一套,有4 k×16个存储单元。它允许2套同时读写不同的RAM单元和同时读同一RAM单元;在其他情况下访问同一RAM单元时,将会引起冲突,无效的一方以忙线BUSY*为低,通知本方这次读写无效。对于面向VXI总线部分,采用A16寄存器的地址线A01~A05和A24寄存器的地址线A01~An-1在经过其相应的选通信号A16*和A24*使能的锁存器后,并接到双端口RAM的地址线上。这样可保证同一双端口RAM可既可作为A16寄存器,又可作为A24寄存器;但是最低的64个字节的寄存器地址是相同的,应分配给A16寄存器,高于此64字节的寄存器都可作为A24寄存器 。配置寄存器的内容由本地CPU上电初始化程序一次写入,供VXI总线读取。为了解决RAM的冲突问题,面向本地CPU的忙线为CPU外部最高级中断源,一旦发生冲突,将通过中断服务设置标志,通知本地CPU重新读写。