基于在系统可编程技术的PC运动控制卡研究
写操作,计数器中的地址就自动加1,计数器输出指向RAM的下一个存储单元。这样,简单地执行I/O指令,就可以传送一批数据。而下位的微处理器(DSP)采用的是存储器访问方式,它将IDT7132的2K空间映射自己的外存储器中,实现对双端口RAM的任意存储单元的访问。
在PC机和DSP对端口RAM访问时,只要不是同时访问同一个存储单元,就允许两个端口对片内任何单元同时进行独立的读/写操作,而且互不干扰。但两个端口访问同一存储单元,会造成同时写或者一侧读一侧写的访问冲突,因此应避免这一访问冲突发生。由于片内逻辑促裁可根据两偶片选或地址信号同时到达的差别(小到5ns),对后到达一侧进行封锁,并同时输出一个BUSY(约25ns)的低电平脉冲信号,利用这一信号,便可解决访问冲突问题。一般来说,标准的ISA总线周期为3个时钟周期,若主板ISA总线时钟为8MHz,则一个时钟周期为125ns;若总线时钟为6MHz,则一个时钟周期为167ns,相应的16位总线周期时间分别为375ns和501ns。所以对于PC机来说,可以将BUSY信号接ISA总线的I/OCHRDY信号线,总线周期中会自动插入一个等待周期(最多可达10个时钟周期),直至BUSY信号拉高;同样,对于DSP,BUSY信号接DSP芯片的READY信号线,系统总线也会自动插入等待周期,从而避免了PC—DSP对双端口RAM的共享冲突。
无论是PC机还是DSP,传送数据后都需要通知对方及时提取数据,以免后面数据对前面数据覆盖,这就需要协调PC—DSP间的数据交换。通过中断控制器可实现数据交换过程中两个CPU之间相互中断。对于PC机写RAM操作完成之后,PC机通过端口1将中断控制器2(DSP中断控制器)置位,DSP响应中断后进入中断服务程序。在子程序中,DSP可以通过端口4将中断控制器2复位。同理,DSP也可向PC机发中断,PC机响应中断后进入断服务程序。
2.3 器件选择和输入方法
选择可编程逻辑器件型号时,应注意到ISP模块电路总共使用I/O管脚数目为52个,大约需要10~20个GLB单元。所以选用ispLSI1032E-100LJ84芯片来实现ISP模块电路,它的集成度达到6000门,具有64个I/O引脚,寄存器超过96个,32个GLB单元,系统速度为100MHz,从资源和速度上能够满足该多轴运动控制卡的需求。同一芯片内的门电路、触发器、三态门等参数特性完全一样,抗干扰性能比原来分立器件构成的电路也有极大的提高,完全可能实现全数字的I/O电路。
使用Lattice公司提供的数字系统设计软件ispEXPERT,逻辑设计可以采用原理图、硬件描述语言(HDL)以及两者混合采用三种方法输入。本设计采用ABEL—HDL语言输入和编写测试向量,并且使用自己开发的编程板完成对器件的编程和下载。
2.4 主时序设计
以PC机为例,访问双端口RAM分以下两步完成:
第一步是向PC机I/O端口中的数据端口送数据D0~D12,D0~D10(访问RAM的起始地址)送至计数器,D11作为可预置计数器的LOAD信号;当D11为1时,计数器装入预置数。D12作为读写控制位,D12为1时,PC机对RAM写操作;为0时,对RAM读操作。
第二步是通过PC机ISA总线的I/O端口读写RMA,每完成一次读/写,计数器输出就指向下一个要访问的RMA地址单元。时序如图3所示。
3 功能仿真
为了保证本系统设计的正确性,在对ISP器件下载以前,首先对系统进行功能仿真。功能仿真的输入信号由ABEL-HDL编写测试矢量给出。仍以PC机访问双端口RAM为例,系统的功能仿真波形图如图4所示。
由图4可以看出,假定访问RAM的0x006地址,在LOAD(D11)信号到来后,当I