基于FPGA的双口RAM与PCI9O52接口设计
扫描二维码
随时随地手机看文章
引言
IDT70V28L(双口RAM)的存取时间大于20ns,PCI9052工作于25MHz,其存取时间要大于双口RAM的存取时间。PCI9052是发起交易的主动者,相当于一个慢速器件访问快速器件,通过可编程器件,可以把PCI9052读写控制信号直接传递给IDT70V28L,完成时序的匹配。
为将PCI9052的局部逻辑转换为双口RAM的读写控制信号和地址信号,本设计采用了可编程器件来实现它们之间的接口逻辑电路。在可编程器件设计中,状态机的设计方法是应用最广泛的设计方法之一。有限状态机是一种简单、结构清晰、设计灵活的方法,它易于建立、理解和维护,特别应用在具有大量状态转移和复杂时序控制的系统中,更显其优势。鉴于其优势,本设计采用了Verilog HDL描述的状态机来实现该接口的时序逻辑,并通过仿真工具验证了该设计的正确性。
1 PCI9052和双DRAM
1.1 PCI9052简介
PCI9052是PLX公司继PCI9050之后开发的低价位总线目标接口芯片,低功耗,符合PCI2.1规范,它的局部总线(LOCAL BUS)可以通过可编程设置为8/16/32位的(非)复用总线,数据传输率可达到132Mb/s。它的主要功能和特性如下:
(1)异步操作。PCI9052的Local Bus与PCI总线的时钟相互独立运行,两总线的异步运行方便了高、低速设备的兼容。Local Bus的运行时钟频率范围为0~40MHz,TTL电平;PCI的运行时钟频率范围0~33MHz。
(2)可编程的局部总线配置。PCI9052支持8位、16位或32位Local Bus,它们可以是复用或非复用。PCI9052有4个字节允许(LBE[3:0]#)信号,26条地址线(LA[27:2]),乖和32位、16位、8位数据线(LAD[3l:0])。
(3)直接从(目标)数据传送模式。PCI9052支持从PCI总线到Local Bus的猝发存储器映射空间的传送和I/O访问。读和写FIFO允许在PCI和局部总线之间的高性能猝发。PCI总线被允许猝发,这样Local Bus能被设置成猝发或持续单周期。
(4)4个局部片选。PCI9052提供4个片选,每个片选的基地址和范围被编程成独立的由SEEPROM或主机。
(5)5个局部地址空间。每个局部地址空间的基地址和范围被由SEEPROM或主机编程成唯一的。
1.2 双口RAM
IDT70V28是高速64k×16的双端口静态RAM。它能被设计为1024kb的双端口RAM或者是32位字主从双端口RAM。该双口RAM提供两个独立的具有控制、地址和I/O引脚的端口。它的主要特性如下:a.可同时访问双端口同一存储器空间;b.高速存储访问,访问速度可达到20ns;c.低功耗运行;d.同过将多个设备级联,可以方便地将数据线宽扩展到32位或更高;e.具有‘busy’和‘interrupt’旗语。避免访问冲突:f.可以独立访问端口。
2 PCI和双口RAM之间的接口设计
为了解决PCI9052和双口RAM之间读写时序不匹配的问题,采用可编程逻辑器件CYCLONE-II来实现它们之间的接口电路,其信号连接关系如图1所示。
PCI9052对双口RAM发出读写指令需在FPGA配置完之后,这可以通过查询CONF_DONE(和USERl相连)和INIT_DONE(和USER3相连)来确定FPGA是否配置完成。如采样INIT_DONE信号,当其为高,表明FPGA配置完成;如采样CONF_DONE,当其为高,则PCI9052还需要等待tCD2UM(min=18 μs,max=40 μs)时间后,才能对双口RAM进行读写操作双口RAM使用的是IDT70V28L,它的存取时间大于20ns。PCI9052采用非复用、单周期读/写模式,工作于25MHz时钟,PCI访问存储器是以32位位宽,每读写操作一次在Local Bus上都对应2次16位位宽的操作,为了防止相邻二次交易的冲突,每次状态机都是以检测ADS信号有效开始一次读写访问,且插入一个NXDA等待周期。具体读写操作实现过程如下。
2.1 PCI9052写过程
写过程是用状态机加以描述,该状态机有6个状态,分别是写空闲、写开始、写等待数据、写过程、写过程等待和写结束。具体的状态转移图如图2所示。
当系统复位后,BTERM、M S被拉高,LHOLD、MODE拉低,写控制信号无效,状态机处于写空闲状态。
当状态机处于写空闲状态时,在每次上升沿采样到ADS有效和LW R为高电平,且访问双口RAM空间(CS0或CSl有效),状态机就进入写开始状态。在写开始状态,状态机等待未进行一定的操作。接着是写等待数据状态,此时根据片选信号CS0和CSl的值译出SEML、CEOL、CElL,并输出有效的地址和控制信号R WL、UBL、LBL到双口RAM。接着是写过程状态,为了得到有效的数据,该过程未对输入输出操作。然后是写过程等待状态,此时,置LRDY信号有效且输出有效的数据到双口RAM。最后是写结束状态,将片选信号CEOI。、CElL、SEMI。置位无效,在该过程的下一个周期将其余的写控制信号置为无效,状态机恢复为写空闲状态。
2.2 PCI9052读过程
读过程也是用状态机加以描述,该状态机有6个状态,分别是读空闲、读开始、读等待数据、读过程、读过程等待和读结束。其状态转移如图3所示。
当系统复位后,BTERM、M S被拉高,LHOLD、MODE拉低,读控制信号无效,状态机处于写空闲状态。
当状态机处于读空闲状态时,在每次上升沿采样到ADS有效和LW R为低电平,且访问双口RAM空间(CS0或CSl有效),状态机转到读开始状态。接着是读等待数据状态,此时根据片选信号CS0和CSl的值译出SEML、CE0L、CElL,并输出有效的地址和控制信号R WL、UBL、LBL、OEL到双口RAM。接着是读过程状态,为了得到有效的数据,该过程未对输入输出操作。然后是读过程等待状态,此时,置LRDY信号有效且输出有效的数据到PCI9052。最后是写结束状态,在该过程的下一个周期将读控制信号置为无效,状态机恢复为读空闲状态。
3 FPGA仿真实现
在Modelsim开发平台下,实现了PCI9052读写双口RAM的仿真过程,该仿真波形如图4所示。从仿真波形可以看出该代码可以实现将PCI90-52的读写控制信号转换成双口RAM的读写控制信号,完成时序的匹配。
4 结语
本设计采用了可编程逻辑芯片来实现PCI访问双口RAM的接口电路,该接口电路具有可改性与适用性。随着微电子技术的发展,可编程器件的容量已经达到千万门级,越来越多过去必须由专用芯片或器件才能完成的工作现在都可以通过设计软件由FPGA来实现了。硬件的软件化已经成为电子行业中不可阻挡的趋势。