您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 基于FIFO缓存的高速无等待双端口SRAM研究12
1基于FIFO缓存的高效双口SRAM数据传输研究摘要:针对MIMO系统中数据传输的海量性、实时性、及交互性的特点,本文利用FIFO作双口SRAM的外部缓存,实现多系统实时数据操作,完成多机之间的数据交换。本方案解决了竞争状态下的数据冲突及写覆盖问题,并且减少了数据传输的延时等待。利用双口SRAMCY7C019对本方案进行测试,以地址映射的方式实现了存储器与CPU的有效寻址。通过与改进前的系统进行性能比较,证明了本方案的有效性及可行性。关键字:双端口SRAM、FIFO缓存、数据冲突、地址映射1.引言:大数据量的高速采集及交换传输是通信系统中很重要的环节。但是无线频谱资源非常有限,因此多输入多输出(MIMO)以其高速率低成本的高频谱效率的技术特性成为新通信时代的关键技术之一[1]。由于MIMO系统的数据量非常大,因此多端口存储器用于简化其接收和发送模块结构复杂性,提高其数据交换速率是必要的。多个处理器可同时进行数据操作实现多系统之间的实时数据交换,在一定程度上改善MIMO系统的数据传输速率,然而鉴于多端口存储器自身的一些缺陷,当多端同时进行数据操作时会发生数据冲突,导致传输的延时及写覆盖问题,因此要对多端口存储器的应用加以改进以完善其在MIMO系统中的应用。2.异步双端口SRAM双端口SRAM(StaticRandomAccessMemory)是一种具有静止存储功能的存储器,不需刷新电路即能保存它内部存储的数据,因此具有较高的性能。双机间进行互操作时,该存储器可作为两机数据交换的公用共享存储器,为其复杂的数据交换提供场所,但并不是数据操作的工作区。双口SRAM允许从两个端口同时对存储单元进行访问,不需要双端口存储器中不可缺少的仲裁逻辑,然而如果精确到同时对某一存储单元进行读写操作时,会产生需要仲裁的竞争,延迟数据存取操作,严重影响系统的数据交换进程。如果在一个端口进行写操作的同时另一个端口进行读操作,读周期将读出的可能是旧数据,也可能是新数据,不会是两个数据的合并。但是写周期总是用新的数据更新存储单元,所以当两个端口同时对一个存储单元进行写操作时,肯定会引起亚稳态的存储单元竞争问题[2]。双口SRAM两端数据传输因竞争而易产生数据冲突,进而影响数据的传输速度容易造成数据处理中的“瓶颈问题”,并会产生数据的等待问题,从而满足不了实时快速的设计要求,而且会造成数据的写覆盖问题,所以如何改善各处理器之间的数据交换,即如何提高数据应用系统中双口SRAM的数据交换速率,是一个关键问题。3.基于FIFO缓存的双端口SRAM硬件结构图通过对8TSRAM、10T单端SRAM和10T差分SRAM几种双端口SRAM进行读功率和操作频率方面的仿真比较[3],可以看出:随着外围电路复杂度的增加,各存储器消耗的读功率会增大或操作周期时间变长,证明了传统系统应用中SRAM性能存在着一些不足。已有文献[4]提出一种改善的策略,设计一种改进型的存储器SRAM,在设计过程中提到采用FIFO作缓存的概念,但只是作为SRAM结构设计的一个内部单元,该方案的优越性得到了证实,使用该SRAM作为共享存储器将会使原速度的ATM速度得到大幅提高。然而,该方法对于MIMO系统中数据的大量频繁交换而言,增设缓存容量要求较高,内部设计较为复杂,双方竞争冲突时实现不了无需等待的要求。因此本文根据上述文献中利用FIFO作SRAM内部缓存的思想,探讨基于FIFO缓存的高速无等待双端口SRAM研究,采用FIFO作双口SRAM的外部缓存以提高多系统的数据交换能力。在双机系统中,只允许一端的CPU向FIFO中写数据,而另一端CPU读FIFO中数据,空指示不写,满指示不读,这样才不会导致写入数据丢失和读出数据无效[5]。FIFO先进先出,及没有外部读写地址线的特点,使得FIFO使用起来非常简单,这些特点显示了FIFO适于做缓存。本文采用FIFO作缓存改进双口SRAM数据交换速率的系统简单框图如下图1所示:由下图可见,该方案的主要组成器件有:双口SRAMCY7C019(128k*9位)、FIFO存储器CY7C429(2k*9位)六片、单向总线驱动器74ls244八片、双向总线驱动器74ls245四片、地址锁存器74ls373一片和两片CPUAT89C51。其中CPUA、2CPUB是传输数据的主机,控制实现整个数据传输的过程。双口SRAM作整个系统的共享存储器,实现两CPU之间的数据互操作,图2是双口SRAMCY7C019的仲裁操作图,该时序图可描述为:给地图1双口SRAM数据传输图址A0-A16,地址保持最短时间为trc;从两端对同一地址进行访问,先给LEFT端CE片选,响应来自LEFT端口的访问;同时RIGHT端口对LEFT端口访问的同一地址进行访问,则/BUSY有效;LEFT端口的访问结束RIGHT端口的/BUSY无效;随着/BUSY的无效,RIGHT端口开始访问;由于RIGHT端口的访问已经开始,所以LEFT端的/BUSY有效,依次进行下一轮的数据操作。FIFO存储器作为双口SRAM的缓存器,用于存放要传输的数据,防止竞争状态下数据的丢失或传输的延迟,并可在忙状态下记忆要操作RAM为空;置/W为低电平,开始写入数据,FIFO不为空,一次写入时间为6ns;FIFO的数据已写满,/W由低电平变为高电平,写操作结束,/FF为‘0’;给/R低电平,开始下一轮读操作。器件74ls244起到总线驱动的作用。74ls245不仅多数据总线的传输起到驱动作用,最主要的是它实现了数据双向操作的有效分离,当两主机的/PSEN和/RD同时为‘0’,DIR信号状态就是/PSEN和/RD的与结果‘0’,即数据由RAM传输到FIFO到AT89C51方向,当两主机的/PSEN和/RD同时为‘1’,DIR信号状态就是/PSEN和/RD地址数据,以备数据缓存FIFO对RAM的数据输出,CY7C429的数据操作时序如下图3所示,该操作时序描述为:/EF为‘1’时,FIFO不为空,给/R低电平,Q0-Q8开始读数据操作,一次读取时间为10ns,/EF由高电平变为低电平,读操作结束,FIFO图2CY7C109的仲裁操作图3CY7C429的存取及标示操作的与结果‘1’,即数据由AT89C51传输到FIFO到RAM方向,避免了数据的倒流。4.系统工作流程及工作原理该系统工作流程图如图4所示:3开始两端同时读两端同时访问?两端同时写A直接写RAM操作B写入FIFO缓存A操作完成FIFO写入RAM结束读操作优先写操作入FIFO暂存读操作完成FIFO数据写入RAM直接对RAM操作YNYNYNY单读单写同时N图4工作逻辑流程图结合流程图分析系统的工作原理,描述如下:(1)CPUA、CPUB对双口SRAM单读单写分时操作时,CPU的P1.7引脚输出低电平信号“0”,与之相连的/CEL0(CPUA数据操作时)或/CER0(CPUB数据操作时)低电平有效,双口SRAM被选中,进而进行CPU与双口SRAM的单方单向读/写操作。当一方进行读写操作时,另一端口的/BUSY信号线置‘1’为空闲状态,相应端的FIFO缓存器/R引脚有效,但FIFO内部存储单元为空标志信号/EF为‘0’,因此无法进行FIFO的读操作,FIFO缓存器处于不工作状态。(2)CPUA、CPUB同时读双口SRAM存储单元时,双方CPU置信号输出线P2.7为低电平,/CEL0(CPUA数据操作时)或/CER0(CPUB数据操作时)低电平有效,寻找双口SRAM内部存储区的相应数据存储单元,依据数据指针递减的方式各自读存储单元内的数据,两端口的/BUSY信号线均置为‘0’,各相应端的FIFO缓存器/R引脚有效,但FIFO内部存储单元为空标志信号/EF为‘0’,此时FIFO缓存器仍处于不工作状态。(3)CPUA、CPUB同时写双口RAM存储单元时,首先CPUA、CPUB会同时对双口RAM发出写请求信号,双口SRAM经过分析判断后只响应一方CPUA(或CPUB),并置R//W为1有效,写入数据到RAM内部存储单元,同时RAM另一端口/BUSY置“0”显示为忙状态,且/CS置‘1’片选无效,则与双口RAM的/BUSY信号线相连的FIFO缓存器的/W引脚为“0”有效,把另一方CPUB(或CPUA)要传输的数据写入FIFO缓存器内部数据存储单元,并把要对双口RAM操作的地址数据写入相对应的FIFO缓存中,并置/EF为“1”表明FIFO缓存器内不为空,完成FIFO缓存器数据的写操作;CPUA(或CPUB)的数据操作完成后,另一端的/BUSY置“1”为空闲状态,相应的FIFO引脚/W为高电平无效,/R为低电平有效,双口SRAM该端口的/CS信号线置‘0’选中该RAM并对其操作,根据地址FIFO暂存的地址数据将数据FIFO中暂存的数据传送到双口SRAM存储器相应的地址单元中,完成数据的读操作。(4)CPUA读双口SRAM,CPUB同时写双口SRAM或CPUA写双口SRAM,CPUB同时读双口SRAM时,可令读优先,进行双口SRAM的读数据操作,同时另一端口的CPU接收到对方的忙状态,该端口RAM的片选信号‘/CS’置为‘1’无效表示此端口CPU没选中双口RAM对此不工作,同时把要写入的数据暂存到FIFO缓存中,数据写入缓存中的操作步骤同于(3)的缓存读写操作。如何实现对共享存储器的分配与管理,信箱结构[6]由于其分信箱分格的方式导致所需的存储单元太多;通信池结构[7]对共享存储区使用权的分配及管理却比较复杂,通信速度比较慢,因此本文采用集中控制方式(分配与管理权集中于一个单元)对以双端口存储器为主及以FIFO为辅的存储区进行分配与管理。通过软硬结合,把主存储区与辅存储区统一成一个整体。程序设计员可以按照存储空间来编写程序,关键是让这些存储区如何同CPU有效地寻址,因此存在一个存储器的地址分配问题。外部单元对共享存储区的读写数据操作要按照一种地址对应的规则进行,否则会产生数据读写数据单元的错误。地址映射的方法是一种合理分配两端口存取操作地址的有效方法,就是把程序中使用的虚拟地址按照某种规则转换到另一个物理地址去,体现了“一一对应”的原则。双端口的存储器全部访问空间是128K*9位,FIFO缓存器的存储空间是2K*9位,双口SRAM和FIFO存储器可与两端CPU的数据线、地址线直接相连,片选/CE0连接页选通信号线/PAGEO,即存储器映射起始地址为00000H,映射空间分别为00000H—1FFFFH、20000H—208FFH。5.性能仿真与比较分析传统应用系统双口SRAM的竞争时序图及改进后的双口SRAM时序图:4图5双口SRAM竞争时序图图6改进后的双口SRAM时序图两图对比可知:改进后的双口SRAM数据操作少了忙仲裁判断,减少了时间等待。假设两端同时有2K的数据量要写入SRAM,比较改进前和改进后方案传输时间:改进前,传输过程分解为A方和B方分时数据读操作,即t前=tRAMA+tRAMB,改进后,A方读操作被响应同时B方数据写入FIFO,A方结束FIFO写入RAM,由于FIFO的读取时间快于RAM的读取时间因此tRAMA覆盖tFIFOB,整个传输时间即t后=tRAMA+tRAMFIFO,采用AT89C51的12MHZ振荡频率,数据外写指令周期为24个振荡周期,因此CPU一次数据读出时间t次1=24×MHZ121=2×103ns,tRAMA=tRAMB=2KB×t次1=32768000ns,t前=tRAMA+tRAMB=65536000ns,本文选用的FIFO一次读操作时间t次1=10ns,tRAMFIFO=2KB×t次1=20480ns,t后=tRAMA+tRAMFIFO=32788480ns,改进前后节省的时间比率η=前后前ttt≈50%。由计算过程可看出,改进后的优越性体现在:FIFO写入RAM的数据速率是CPU写入RAM的数据速率的上百倍,使得改进后双口SRAM数据传输速率提高了50%左右,减少了延时等待,满足了MIMO系统实时无需等待的工作特点。6.
本文标题:基于FIFO缓存的高速无等待双端口SRAM研究12
链接地址:https://www.777doc.com/doc-2569823 .html