CPLD为设计任务从最简单的PAL综合设计到先进的实时硬件现场升级提供了全套的解决方法。本文讨论如何使用Xilinx公司的CPLD器件XC9500LV实现PLX9054的局部总线 (local bus)和DSP的HPI口之间的实时通信。采用这种设计可以以单字或DMA方式完成主机与DSP之间的高速数据传输,传输速率达到16Mb/s。可以应用于实时的图形、图像及动画处理场合。
设计需求
local bus接口要求
PLX9054是PCI接口专用主从器件,包括通信、网络、磁盘控制、多媒体等高性能接口功能。PLX9054可以以多种方式实现从pci总线端到局部总线端的数据转移,如直接传输,DMA控制传输等。pci总线和局部总线之间以6个可编程FIFO连接,可实现突发并行传输。通过串行EEPROM或
PCI主控设备对PLX9054内部的配置寄存器进行设置。通过配置EEPROM,设置PLX9054作为PCI总线的从设备,工作在C模式下(数据、地址总线非复用),局部总线数据宽度为16bit,并使能外部设备就绪信号READY,禁止无限爆发操作(屏蔽BTERM bit)。
局部总线端的读、写时序基本相同。以写周期为例说明。首先,PLX9054通过置LHOLD信号有效来申请局部总线的主控权,在收到局部总线仲裁的响应信号LHOLDA之后,PLX9054成为局部总线的主控。随后置ADS#信号为低,使得地址总线信号LA[31:2]、字节使能信号LBE[3:0]和读写选择信号LW/R#进入有效状态。一个LCLK周期之后,PLX9054停止驱动ADS#。这时,地址总线LA[31:2]上的地址信号将保持有效,直至数据线上的数据有效,并保持一个LCLK周期。数据线LD[15:0]上的数据信号由READY#驱动,在读、写操作周期,READY#分别表示局部总线设备已经准备好发送或者接收数据。BLAST#信号由PLX9054提供,BLAST#信号为低,表示一次传输的最后一个字节,BLAST#的上升沿标志一次数据传输完成。一个LCLK周期之后,PLX9054拉低LHOLD,放弃对局部总线的主控权。局部总线仲裁响应PLX9054的LHOLD信号,拉低LHOLDA,收回局部总线主控权,这时的局部总线置于闲置状态。这里,PLX9054作为局部总线主控权的唯一申请者,只要提出总线申请,局部总线仲裁就立即响应该申请。
HPI设计要求
HPI是一种数据宽度为16bit的并行端口,通过HPI,主机可以直接对CPU的存储器空间进行操作。HPI内部加入了两个8级深度的读写缓冲,可以执行地址自增的读写操作,提高了读写操作的吞吐量。HPI为内部CPU提供了标准32bit的数据接口,而它为外部主机提供了一个经济的16bit接口,所以对外部主机而言,每次读写必须执行成对的16bit操作。
HPI内部有3个寄存器,分别是控制寄存器(HPIC),地址寄存器(HPIA)和数据寄存器(HPID)。这3个寄存器可以直接被主机访问,主机每执行一次对CPU内部存储空间的访问,都必须先对控制寄存器和地址寄存器写入相应的值,然后才能对数据寄存器进行读写操作。HPI的外部接口由数据总线HD[15:0]以及一部分用于描述和控制HPI的控制信号组成,这些控制信号包括:
HCNTL[1:0]:控制HPI的操作类型。
HHWIL:半字确认输入,“0”,“1”分别表示一次字传输的第一个半字和第二个半字。
HR/W#:读/写选择。
HRDY#:就绪状态标志。
HINT#:中断标志,DSP向主机提中断。