一种异步数据读写控制方法、装置及系统的制作方法

文档序号:6355360阅读:317来源:国知局
专利名称:一种异步数据读写控制方法、装置及系统的制作方法
技术领域
本发明属于芯片设计领域,尤其涉及一种异步数据读写控制方法、装置及系统。
背景技术
在芯片设计中,通常涉及到 芯片接ロ模块的跨时钟域数据读写过程,当以总线形式进行数据的双向传输时,常常面临到数据输入输出的读、写冲突,从而导致数据接收错误,因此,需要对异步传输数据进行读写控制。现有的异步数据读写控制方法通常采用异步先入先出(First InputFirstOutput,FIFO)方式实现,在将双ロ随机存取存储器(Random Access Memory,RAM)的地址进行格雷码转换后,通过判决地址的距离来判断FIFO的空满状态,并将其作为跨时钟域的握手信号。上述方法适用于大批量固定方向数据传输的情况,很好地隔离了不同的时钟域,但其控制逻辑复杂,且当面临到少量数据的传输需求时,上述方法需要的传输延迟时间较长,导致数据读写效率低下。另ー种针对少量异步数据进行读写控制的方法是直接采用总线握手的方式,其控制逻辑简单,但在无法确定两个时钟频率快慢关系时或者在两个时钟域内发生双向数据传输时,为保证信号的稳定传输,双端的同步控制逻辑的传播延时非常大,否则就容易发生判决不清或者时钟域隔离不干净等情况,导致信号传输的不稳定。以图I所示的异步数据读写控制时序为例,其命令发起端为ー个频率为100MHz的中央处理器(Central Processing Unit, CPU),命令接收端为一个频率为30MHz的命令转接ロ,其操作对象为ー个频率为30MHz的多媒体存储卡(Multi Media Card, MMC)控制器,CPU通过命令转接ロ向MMC控制器进行寄存器读写。容易看到,若直接采用总线握手的方式,当CPU发起读命令,需要从地址为addrB的MMC控制器寄存器地址中读取数据时,由于命令转接ロ的时钟域(slave_clk)与CPU的时钟域(main_clk)不同,在CPU发起读命令时,命令转接ロ不处于其时钟触发状态,因此无法触发对该读命令的采集动作,由此错过了此次的数据读取过程。

发明内容
本发明实施例的目的在于提供一种异步数据读写控制方法,g在解决现有技术无法在保证对跨时钟域进行有效隔离的同时,简单、快速地完成异步数据读写过程的问题。本发明实施例是这样实现的,一种异步数据读写控制方法,所述方法包括下述步骤采集来自命令发起端的读写命令,生成命令数据包,所述命令数据包包括所述读写命令的使能信号、地址信号和数据信号;通过命令发起端的时钟触发,对所述命令数据包进行缓存,同时令缓存状态信号为有效;通过命令接收端的时钟触发,在所述命令数据包被命令接收端获取的同时令所述缓存状态信号为无效。本发明实施例的另一目的在于提供一种异步数据读写控制装置,所述装置包括命令数据包生成单元,用于采集来自命令发起端的读写命令,生成命令数据包;时钟同步单元,用于同步命令发起端或者命令接收端的时钟;缓存单元,用于对所述命令数据包进行缓存;缓存状态信号控制单元,用于控制缓存状态信号为有效或者无效。
本发明实施例的另一目的在于提供一种异步数据读写控制系统,包括命令发起端和命令接收端,所述系统还包括如上所述的异步数据读写控制装置。本发明实施例通过在将命令发起端发起的读写命令封装后进行缓存的同时,在命令发起端的时钟触发下设置缓存状态信号为有效,并在命令接收端将该命令取走的同时在命令接收端的时钟触发下设置缓存状态信号为无效,实现了缓存状态的及时反馈,且很好地对不同时钟域进行了有效隔离。


图I是现有技术提供的异步数据读写控制时序图;图2是本发明第一实施例提供的异步数据读写控制系统的结构图;图3是本发明第二实施例提供的异步数据读写控制方法的实现流程图;图4是本发明第三实施例提供的异步数据写入控制方法的时序图;图5是本发明第四实施例提供的异步数据读取控制方法的时序图;图6是本发明第四实施例提供的异步数据读取控制方法的实现流程图;图7是本发明第五实施例提供的异步数据读写控制装置的结构图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例基于双端口的静态随机存取存储器(Static RandomAccessMemory, SRAM)实现,在将命令发起端发起的读写命令封装后进行缓存的同时,在命令发起端的时钟触发下设置缓存状态信号为有效,告知命令接收端有数据需要接收,并在命令接收端将该命令取走的同时在命令接收端的时钟触发下设置缓存状态信号为无效,以便进行下一次的读写命令传输,由此实现了不同时钟域的有效隔离和缓存状态的及时反馈。图2示出了本发明第一实施例提供的异步数据读写控制系统的结构,为了便于说明,仅不出了与本实施例相关的部分。参照图2,该异步数据读写控制系统主要由命令发起端21、异步数据读写控制装置22和命令接收端23组成,命令发起端21和命令接收端23分别位于不同的时钟域,由命令发起端21发起的读写命令通过异步数据读写控制装置22传输给命令接收端23。其中命令发起端21为该异步数据读写控制系统的命令发起端,其通过相应的地址信号、数据信号以及读/写使能 信号向命令接收端发起读命令或者写命令,并将上述信号发送至异步数据读写控制装置22进行相应的缓存处理。在本发明实施例中,命令发起端21可以有以下两种工作模式I、在发送完命令后,不需要等待内容反馈(如读取数据反馈)便进入下一命令发送周期,等待新命令的产生。此时命令发起端21在向异步数据读写控制装置22中发送完命令后便认为当前任务完成,重新返回到等待状态,等待新命令的产生;2、在发送完命令后,需要收到内容反馈后才进入下一命令发送周期,等待新命令的产生。此时命令发起端21在向异步数据读写控制装置22中发送完命令数据后便进入等待反馈状态,不断检测来自命令接收端23的反馈是否到达。在获取到来自命令接收端23的反馈后,命令发起端21重新返回到等待状态,等待新命令的产生。异步数据读写控制装置22基于双端口的SRAM实现。该双端口的SRAM拥有两套独立的SRAM端口,每套SRAM端口对应独立的时钟线、SRAM地址线、数据线以及独立的数据输入端口和数据输出端口,其通过相应的控制逻辑,使得独立的两套SRAM端口能够共享一个存储体,只要两套端口不同时往同一个地址里面写数据,那么存储体内的数据就能按照预期读写,即从端口 A往地址X写入的数据不仅能够从端口 A的地址X读出,也能够从端口B的地址X读出。在本发明实施例中,SRAM的两个独立时钟线分别与命令发起端21和命令接收端23的时钟处于同一时钟域,由此进行跨时钟域的异步数据读取控制。命令接收端23通过检测异步数据读写控制装置22的缓存状态,当发现有新命令数据到达时,立即获取该命令数据,并根据该命令数据的解析结果,对其操作对象执行相应的读写操作。同时,当命令发起端21发起读命令时,命令端接收端23需要通过异步数据读写控制装置22向命令发起端21返回读取的数据。在本发明实施例中,异步数据读写控制装置22的存储体容量根据命令发起端21的不同工作模式来决定,存在以下几种情况I、当命令发起端21的数据输出为单线程,且可能需要在收到命令接收端23反馈的读取内容后才发起新命令时,异步数据读写控制装置22只需要一个存储单元即可。此时,异步数据读写控制装置22在命令发起端21放入命令数据、命令接收端23取走命令数据、命令接收端23放入反馈数据、命令发起端21取走反馈数据这四个工作状态中循环跳转。2、当命令发起端21只发起命令,不需要等待命令接收端23反馈读取内容时,由于命令发起端21可以不停地发起命令,将命令数据放入不同的存储体地址里,直到异步数据读写控制装置22的存储体被塞满,因此,在这种情况下,异步数据读写控制装置22的存储体容量根据该异步数据传输系统的实际需求来决定。3、当命令发起端21发起命令且需要等待命令接收端23的反馈时,命令发起端21处于发起命令与获取反馈的双工模式,则异步数据读写控制装置22的存储体容量也同情况2 —样,根据该异步数据传输系统的实际需求来决定。图3示出了本发明第二实施例提供的异步数据读写控制方法的实现流程,详述如下在步骤S301中,采集来自命令发起端的读写命令,生成命令数据包,所述命令数据包包括所述读写命令的读写使能信号、地址信号和数据信号。在本发明实施例中,在命令发起端的时钟域内,对来自命令发起端发起的读写命令进行采集,包括来自命令发起端的读/写使能信号、读/写地址信号、写数据信号。在步骤S302中,在命令发起端的时钟触发下,对所述命令数据包进行缓存,同时令缓存状态信号为有效。在本发明实施例中,在将生成的命令数据包进行缓存的同时,通过命令发起端的时钟触发,将缓存状态信号置为有效,以告知命令接收端当前有来自于命令发起端的读写命令需要接收。命令接收端通过对该缓存状态信号进行检测,得知当前是否有来自于命令发起端的读写命令需要接收。在步骤S303中,通过命令接收端的时钟触发,在所述命令数据包被获取的同时令所述缓存状态信号为无效。在本发明实施例中,当检测到命令接收端获取到命令数据包的同时,通过命令接收端的时钟触发,将缓存状态信号置为无效,用于告知命令接收端当前没有来自命令发起 端的新读写命令需要接收。在本发明实施例中,当同时有多个来自命令发起端的命令数据包在进行缓存时,需要对当前缓存中的命令数据包数量进行检测,只要还有命令数据包没有被命令接收端取走,则一直令缓存状态信号为有效,直到命令接收端取完当前缓存中的最后一个命令数据包,确认当前缓存中不存在命令数据包时,才通过命令接收端的时钟触发,将该缓存状态信号置为无效,以告知命令接收端当前已无新的命令数据包需要接收。当命令接收端获取到来自命令发起端的命令数据包后,即将封装好的该命令数据包进行解析,解析出其相应的读/写使能信号、读/写地址信号以及写数据信号,并根据上述信号对操作对象执行相应的读写操作。在上述方法步骤中,跨时钟域的数据读写只有在异步数据读写控制装置中才存在两个时钟域的相互传递过程,而其他信号都是能够在同步的时钟域情况下完成的,无论两个时钟域的时钟频率和相位如何,都能够准备地表示当前的缓存状态,避免了亚稳态的不确定性,同时,通过及时地在有命令数据包需要接收时令缓存信号有效,并在无命令数据包需要接收时令缓存信号无效,在第一时间将缓存中的情况告知命令接收端,加快了数据读写的速度。为了更好地对本实施例进行描述,下面分别对异步数据写入控制方法和读取控制方法进行详细的描述图4示出了本发明第三实施例提供的异步数据写入控制方法的时序。参照图4,当命令发起端发起的命令为写命令时,则该写命令包括I、写使能信号(reg_Write):用于标明当前命令发起端需要从寄存器进行写操作;2、写地址信号(reg_addr):为当前命令发起端需要写入数据的寄存器地址;3、写数据信号(reg_Wdata):为当前命令发起端需要向寄存器写入的数据。首先,在命令发起端的时钟域(main_clk)下,异步数据读写控制装置通过同步处理,对上述信号进行采集,获取命令发起端所发起的写命令,并将上述信号进行数据封装处理,将其封装成命令数据包(CMDA),并在命令发起端的时钟触发下,对所述命令数据包进行缓存,同时令缓存状态信号(Email_status)为高电平有效。与此同时,在命令接收端的时钟域(slave_clk)下,命令接收端根据缓存状态信号(Email_status)得知当前有命令数据需要接收,于是在其时钟上升沿采样到该命令数据包,并通过该时钟上升沿的触发,同步地将缓存状态信号(Email_status)置为无效,完成一次写命令的跨时钟域传递过程。图5示出了本发明第四实施例提供的异步数据读取控制方法的时序。参照图5,当命令发起端发起的命令为读命令时,则该读命令包括I、读使能信号(reg_read):用于标明当前命令发起端需要从寄存器进行读操作;2、读地址信号(reg_addr):为当前命令发起端需要读取数据的寄存器地址。
在本发明实施例中,从命令发起端发出读命令到命令接收端获取到该读命令的流程与图3所描述的步骤相同,且命令接收端在获取到命令数据包后,从该命令数据包中解析出读使能信号和读地址(addrB),向操作对象发出,并在下个命令接收端时钟周期内得到操作对象反馈回的读数据(rdataB)。此时,由于是需要从寄存器中读取数据,还需要有数据从寄存器中取出并返回到命令发起端的流程。图6示出了上述过程的实现流程,对照图5的时序图,对该流程详述如下在步骤S601中,采集命令接收端返回的读数据(rdataB),生成反馈数据包,该反馈数据包包括了操作对象反馈回来的读数据。在步骤S602中,通过命令接收端的时钟触发,在对所述反馈数据包进行缓存的同时令所述缓存状态信号(Email_status)为有效。在步骤S603中,通过命令发起端的时钟触发,在所述反馈数据包被获取的同时令所述缓存状态信号为无效。图7示出了本发明第五实施例提供的异步数据读写控制装置的结构,为了便于说明,仅不出了与本实施例相关的部分。参照图7,该异步数据读写控制装置基于双口 RAM实现,包括命令数据包生成单元71,其采集来自命令发起端的读写命令,生成命令数据包,生成的命令数据包包括了读写命令的读写使能信号、地址信号和数据信号。时钟同步单元72,同步命令发起端或者命令接收端的时钟,以实现在命令发起端或者命令接收端的时钟触发下执行相应操作。缓存单元73,对所述命令数据包进行缓存。缓存状态信号控制单元74,其在时钟同步单元72的作用下,通过命令发起端或者命令接收端的时钟触发,控制缓存状态信号为相应的有效或者无效状态,用于及时告知命令发起端或者命令接收端是否需要对相应的数据包进行接收。还包括反馈数据包生成单元75,通过采集命令接收端返回的读数据,生成反馈数据包。此时,缓存单元73需要对反馈数据包生成单元75生成的反馈数据包进行缓存。检测单元76,用于检测缓存中命令数据包或者反馈数据包的数量,以告知缓存状态信号控制单元74是否需要对当前的缓存状态信号进行控制调整。本发明实施例通过在将命令发起端发起的读写命令封装后进行缓存的同时,在命令发起端的时钟触发下设置缓存状态信号为有效,并在命令接收端将该命令取走的同时在命令接收端的时钟触发下设置缓存状态信号为无效,实现了缓存状态的及时反馈,且很好地对不同时钟域进行了有效隔离以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种异步数据读写控制方法,其特征在于,所述方法包括下述步骤 采集来自命令发起端的读写命令,生成命令数据包,所述命令数据包包括所述读写命令的使能信号、地址信号和数据信号; 通过命令发起端 的时钟触发,对所述命令数据包进行缓存,同时令缓存状态信号为有效; 通过命令接收端的时钟触发,在所述命令数据包被命令接收端获取的同时令所述缓存状态信号为无效。
2.如权利要求I所述的方法,其特征在干,当所述读写命令为读命令时,所述命令数据包包括读使能信号和读地址信号; 当所述读写命令为写命令时,所述命令数据包包括写使能信号、写地址信号和数据信号。
3.如权利要求I所述的方法,其特征在干,当所述读写命令为读命令时,所述方法还包括下述步骤 采集命令接收端返回的读数据,生成反馈数据包; 通过命令接收端的时钟触发,在对所述反馈数据包进行缓存的同时令所述缓存状态信号为有效; 通过命令发起端的时钟触发,在所述反馈数据包被命令发起端获取的同时令所述缓存状态信号为无效。
4.如权利要求I所述的方法,其特征在干,当进行缓存的命令数据包有多个时,所述在命令数据包被命令接收端获取的同时令所述缓存状态信号为无效的步骤具体为 在所述命令数据包被命令接收端获取的同时检测当前缓存中命令数据包的数量; 若当前缓存中不存在命令数据包时,令所述缓存状态信号为无效。
5.如权利要求4所述的方法,其特征在于,所述方法还包括下述步骤 若当前缓存中还存在命令数据包时,令所述缓存状态信号为有效。
6.一种异步数据读写控制装置,其特征在于,所述装置包括 命令数据包生成単元,用于采集来自命令发起端的读写命令,生成命令数据包; 时钟同步单元,用于同步命令发起端或者命令接收端的时钟; 缓存单元,用于对所述命令数据包进行缓存; 缓存状态信号控制单元,用于控制缓存状态信号为有效或者无效。
7.如权利要求6所述的装置,其特征在于,所述装置还包括 反馈数据包生成単元,用于采集命令接收端返回的读数据,生成反馈数据包。
8.如权利要求7所述的装置,其特征在干,所述缓存单元还用于对所述反馈数据包进行缓存。
9.如权利要求6所述的装置,其特征在于,所述装置还包括 检测单元,用于检测缓存中命令数据包的数量。
10.一种异步数据读写控制系统,包括命令发起端和命令接收端,其特征在干,所述系统还包括如权利要求6至9任一项所述的异步数据读写控制装置。
全文摘要
本发明适用于芯片设计领域,提供了一种异步数据读写控制方法、装置及系,所述方法包括下述步骤采集来自命令发起端的读写命令,生成命令数据包,所述命令数据包包括所述读写命令的使能信号、地址信号和数据信号;通过命令发起端的时钟触发,对所述命令数据包进行缓存,同时令缓存状态信号为有效;通过命令接收端的时钟触发,在所述命令数据包被命令接收端获取的同时令所述缓存状态信号为无效。本发明通过在将命令发起端的读写命令封装后进行缓存的同时,在命令发起端的时钟触发下设置缓存状态信号为有效,并在命令接收端将该命令取走的同时在命令接收端的时钟触发下设置缓存状态信号为无效,实现了缓存状态的及时反馈和不同时钟域的有效隔离。
文档编号G06F13/20GK102654852SQ20111005105
公开日2012年9月5日 申请日期2011年3月3日 优先权日2011年3月3日
发明者胡胜发, 蔡宁宁 申请人:安凯(广州)微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1