用CPLD实现DSP与PLX9054之间的连接
扫描二维码
随时随地手机看文章
设计需求
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向主机提中断。
HAS#:区别地址/数据复用总线的数据与地址。
HDS1#,HDS2#,HCS#:数据选通输入,共同作用产生一个HPI内部选通信号HSTROBE#:
HSTROBE# = [NOT(HDS1# XOR HDS2#)] OR HCS#。
对于一个写HPI的操作,首先使能HCS#,变化HDS1#或HDS2#,使得HSTROBE#信号产生一个下降沿。HPI这个下降沿采样控制信号HCNTL[1:0]、HHWIL和HR/W#,使能HCS#的同时,扇出HRDY#。主机进入等待状态,直到HRDY#产生下降沿,表明HPID已清空,可以接收新的数据。这时HSTROBE#产生一个上升沿,采样HD[15:0]上的数据送入HPID,完成第一个半字的写入。对于第二个半字的写入,由于32bit的HPID已经清空,可以直接写入数据,不会出现未准备好的情况,所以HRDY#一直保持为低。与第一个字节的写入相同,在HSTROBE#的下降沿采样控制信号,HSTROBE#的上升沿采样数据总线HD[15:0]的数据送入HPID,完成一个32bit的写入操作。
对于读HPI的操作,当HCS#变成有效,在主机不采用地址自增方式从HPID执行读操作时(case1),HPI会向内部地址产生硬件送一个读请求。HCS#的下降沿使得HRDY#变为高电平,直到内部地址产生硬件将请求的数据装载进HPID,HRDY#变为有效状态。数据线上的数据为读出的数据,该数据保持有效,直到HSTROBE#上升沿采样数据后的10ns左右。在第二次读操作开始时,数据已经出现在HPID上了,因此,第二个半字的读操作将不会遇到未准备好的情况。在HPID以地址自增的方式进行读操作时,HCS#在整个多个字节的传输过程中始终保持有效,一旦完成现在的读操作,下一地址的数据马上被取出。因此,完成现在读操作的第二个半字的传输之后(在HSTROBE#的第二个上升沿),由HSTROBE#的下降沿(通过变化HDS1#或者HDS2#来产生)扇出HRDY#信号,用于指示HPI正忙于数据的预读取。
设计实现
CPLD的功能是要完成局部总线端和HPI端口之间控制信号和数据总线的连接,并保证数据传输的可靠性。通过以上对局部总线和HPI的读写时序的分析得知,一些关键信号,例如HCS#、READY#和HRDY#的时序设计很重要,整个CPLD设计的主要任务也是围绕这几个信号的设计展开的。
由HCS#、HDS1#和HDS2#共同作用产生的HPI口内部信号HSTROBE#的上升沿和下降沿直接控制着送入HPI端口的数据信号和控制信号,并且HSTROBE#变化的速率决定了数据传输的速率,因此它是一个非常关键的信号。这里,HCS#信号作为字节传输标志信号,在一次数据传输的过程中始终保持有效。数据传输结束之后,将HCS#拉高,从而控制HRDY#信号恢复到初始状态,为下一次读写操作做好准备。HDS1#或者HDS2#中的一个固定接高电平,变化另外一个来控制HSTROBE#产生上升沿和下降沿。这里将HDS1#固定接高电平,由ADS#和HRDY#信号产生逻辑来控制HDS2#信号。当HRDY#处于无效状态,即HPI端口未准备就绪时,HDS2#信号不变,不采样任何信号;当HRDY#有效时,HCS2#信号同ADS#信号保持一致,在ADS#的下降沿采样控制信号,上升沿采样数据信号。另外,在一次传输开始之前和结束之后,HDS2#都要保持为高电平。