发明内容
针对上述现有技术存在的问题,本发明的目的在于提出一种支持多总线多类型存储器的内存仲裁实现系统和方法。
为达到上述目的,本发明支持多总线多类型存储器的内存仲裁实现系统,包括:n个总线主模块,m个存储器,还包括:与m个存储器一一对应连接的m个存储器仲裁模块,以及一与所述n个总线主模块连接的读数据处理模块;
其中,所述n个总线主模块中的每一个总线主模块与所述m个存储器仲裁模块中的每一个存储器仲裁模块连接;
所述每一个存储器仲裁模块用于接收n个总线主模块发送的存储器访问请求,并对接收到的存储器访问请求进行仲裁,输出仲裁结果,并根据该仲裁结果对对应的存储器进行写操作;
所述读数据处理模块与所述m个存储器仲裁模块连接,并与所述m个存储器连接;用于接收所述m个存储器仲裁模块输出的仲裁结果,并根据仲裁结果将该仲裁结果所指定的存储器输出的读数据,输出至该仲裁结果所指定的总线主模块;
其中,m和n均为大于1的自然数。
上述m个存储器仲裁模块中的每一个存储器仲裁模块均包括:
一存储器访问仲裁模块,与所述n个总线主模块分别连接,用于从n个总线主模块中接收存储器访问请求,并对接收到的存储器访问请求进行仲裁,输出仲裁结果;
一存储器控制信号选择模块,与所述存储器访问仲裁模块对应连接,并与所述n个总线主模块均连接,用于从存储器访问仲裁模块中接收仲裁结果,并根据仲裁结果从n个总线主模块输出的n路内部控制信号中,选择接收该仲裁结果所指定的一路内部控制信号,并将该选择的内部控制信号输出至对应的存储器。
上述读数据处理模块包括:
一数据通道选择模块,与所述m个存储器访问仲裁模块连接,用于从m个存储器访问仲裁模块接收仲裁结果,根据仲裁结果和各种类型存储器的读数据要求,获得每一时刻n个总线主模块对应的总线通路的读允许情况,并且输出n条总线通路的读允许与否信号;
n个读数据选择模块,与所述数据通道选择模块连接,用于一一对应地接收来自数据通道选择模块输出的n条总线通路的读允许与否信号;每个读数据选择模块均与所有存储器连接,且一一对应地与所述总线主模块连接,用于接收m个存储器输出的读数据以及读数据有效信号,并根据接收到的读允许与否信号,从m个存储器中选择一个存储器输出的读数据以及读数据有效信号,输出至对应的总线主模块。
本发明的系统还包括:与所述n个总线主模块一一对应连接的n个总线接口;
相应地,所述m个存储器仲裁模块中的任一存储器仲裁模块可接收,来自n个总线主模块通过与其一一对应的总线接口发送的存储器访问请求;
所述读数据处理模块将存储器输出的读数据,通过n个总线接口输出至所述n个总线主模块。
本发明的系统还包括:m个存储器控制逻辑模块,与所述m个存储器一一对应连接,且与所述m个存储器仲裁模块一一对应连接;
所述每一个存储器控制逻辑模块用于从与其对应的存储器仲裁模块中接收的内部控制信号,并根据接收的内部控制信号对与其对应的存储器进行读/写操作,且接收来自与其对应的存储器的读数据以及读数据有效信号,并输出。
本发明中的m个存储器为:m个不同类型的存储器,或者m个相同类型的存储器,或者m个部分类型相同的存储器。
本发明的系统,通过读数据处理模块,以及与m个存储器分别对应的存储器仲裁模块,允许n个总线主模块可以访问m个存储器中的任意一个,又允许同一时刻多个不同的总线主模块各自访问不同的存储器;即实现总线主模块1访问存储器1的同时,总线主模块2可以访问存储器2,或者总线主模块1访问存储器2的同时,总线主模块2可以访问存储器1,…,总线主模块n可以访问存储器m;使各个总线主模块对应的总线通路在每一时刻都能得到很好的利用,带宽大,且带宽利用率高。在增加新的通道,新的存储器支持接口(如存储器访问仲裁模块、存储器控制逻辑模块等)时,可以很容易的进行修改,具有较强的设计可重用性。
为达到上述目的,本发明支持多总线多类型存储器的内存仲裁实现方法,包括如下步骤:
(1)n个总线主模块中的任一总线主模块通过与其对应的总线接口,向m个存储器一一对应的存储器仲裁模块中的任一存储器仲裁模块,发送存储器访问请求和内部控制信号;
(2)每一个存储器仲裁模块根据存储其内的仲裁算法对接收到的存储器访问请求进行仲裁,输出仲裁结果,并从总线接口中选择接收与该仲裁结果对应的内部控制信号,并根据该内部控制信号对与其对应的存储器进行读/写操作。
上述步骤(2)中,每一个存储器仲裁模块采用的仲裁算法包括:
A)每个时钟周期进行一次仲裁的算法;
或者B)每条总线主模块的写/读开始到该次写/读结束作为一个最小时钟周期,中间不能插入其他总线主模块的访问;
或者C)按照固定优先级进行读写仲裁的算法;
或者D)先到先处理算法;
或者E)动态优先级算法;
或者F)根据各个总线通路允许的最大等待周期来排列各个总线主模块的访问顺序;
或者上述A)与C),D),E),F)的任意组合,或者B)与C),D),E),F)的任意组合。
上述步骤(2)中:存储器仲裁模块在从总线接口中接收到与仲裁结果对应的内部控制信号之后的1个或者1个以上时钟周期时,对与其对应的存储器进行读/写操作。
上述内部控制信号包括:对存储器的读/写控制,字节选择,读数据长度,读写地址以及写数据信号。
本发明的方法通过修改存储器访问仲裁模块中的仲裁算法,可以获得不同的特性,并且无需修改其他模块的结构,具有很好的设计灵活性与重用性。另外,对ROM(只读存储器),RAM(随机存储器)的类型的存储器在采用每个时钟周期进行一次仲裁时,可以达到100%的带宽利用率;对SDRAM(同步动态随机存储器)在一定的访问机制下,也可以达到相当高的带宽利用率。
具体实施方式
下面结合附图对本发明的技术方案进行说明。
如图3所示,本发明的支持多总线多类型存储器的内存仲裁实现系统主要包括:n个总线主模块,m个存储器,与m个存储器一一对应连接m个存储器仲裁模块,以及一与n个总线主模块、m个存储器仲裁模块和m个存储器均连接的读数据处理模块;其中,m和n均为大于1的自然数。
n个总线主模块中的每一个总线主模块与m个存储器仲裁模块中的每一个存储器仲裁模块连接;每一个存储器仲裁模块接收n个总线主模块发送的存储器访问请求,并对接收到的存储器访问请求进行仲裁,输出仲裁结果。所述仲裁结果反映出当前时刻,哪个总线主模块发出的存储器访问请求有效,因此其中指定了哪一个总线主模块对哪一个存储器进行怎样的访问操作。
所述存储器仲裁模块根据该仲裁结果允许指定的总线主模块对相应的存储器进行写操作,从而构建了一个独立的总线写操作的数据传输通道。
读数据处理模块与所述m个存储器仲裁模块连接,并与所述m个存储器连接;用于接收m个存储器仲裁模块输出的仲裁结果,并根据仲裁结果将该仲裁结果所指定的存储器输出的读数据,输出至该仲裁结果所指定的总线主模块,从而提供了一个独立的总线读操作的数据传输通道。
本发明的系统,通过设计与m个存储器分别对应的存储器仲裁模块,以及读数据处理模块,可以允许n个总线主模块可以访问m个存储器中的任意一个,又允许同一时刻不同的总线主模块各自访问不同的存储器;即实现总线主模块1访问存储器1的同时,总线主模块2可以访问存储器2,或者总线主模块1访问存储器2的同时,总线主模块2可以访问存储器1,…,总线主模块n可以访问存储器m;使各个总线主模块对应的总线通路在每一时刻都能得到很好的利用,带宽高,且带宽利用率高。且有独立的写数据通路和读数据通路,使得读写信号可以通过PIPELINE(流水线)方式持续写入存储器。
实施例1:
下面结合图4所提供的实施例,对本发明的支持多总线多类型存储器的内存仲裁实现系统做进一步的说明:
如图4所示,本实施例的系统中的m个存储器仲裁模块中的每一个存储器仲裁模块的结构均相同,其中每一个存储器仲裁模块可以包括:一个存储器访问仲裁模块,以及与该存储器访问仲裁模块对应连接的一存储器控制信号选择模块,该存储器控制信号选择模块还与n个总线主模块均连接。
其中,每一个存储器访问仲裁模块从n个总线主模块中接收的存储器访问请求,并对接收到的存储器访问请求进行仲裁,输出仲裁结果;即存储器访问仲裁模块根据一定的仲裁算法从访问该存储器访问仲裁模块的各个总线主模块中,选中其中一个总线主模块所对应的总线,作为对该存储器进行读/写操作时传输数据的硬件通路。
每一个存储器控制信号选择模块从与其对应的存储器访问仲裁模块接收仲裁结果,并根据接收到的仲裁结果从n个总线主模块中,选择接收该仲裁结果所指定的一路内部控制信号(比如,如果仲裁结果为选中总线主模块1,则存储器控制信号选择模块选择接收总线主模块1发送的内部控制信号),并将该选中的内部控制信号输出。
其中,上述内部控制信号可以包括:对存储器的读/写控制,字节选择,读数据长度,读/写地址,写数据信号等。
如图4所示,本实施例的系统中的读数据处理模块包括:一与m个存储器访问仲裁模块连接数据通道选择模块,以及与n个总线主模块一一对应连接n个读数据选择模块;
其中,数据通道选择模块从m个存储器访问仲裁模块接收仲裁结果,并根据仲裁结果和各种类型存储器的读数据要求,获得每一时刻n个总线主模块对应的n条总线通路的读允许情况,并且输出每一时刻的n个总线主模块对应的n条总线通路的读允许与否信号;所述n条总线通路的读允许与否信号用于通知所有读数据选择模块,当前应当选通哪个总线主模块与哪个存储器之间的用于进行读操作数据传输的总线通道。
n个读数据选择模块中的每一个读数据选择模块均与数据通道选择模块连接,且与m个存储器中的每一个存储器相连接;n个读数据选择模块中的每一个读数据选择模块分别接收来自数据通道选择模块的n条总线通路的每一时刻的读允许与否信号,还接收m个存储器输出的读数据以及读数据有效信号;并根据接收到的n条总线通路的每一时刻的读允许与否信号,从m个存储器中选择被允许读数据的总线通路所对应的存储器输出的读数据以及读数据有效信号,输出至被允许读数据的总线通路所对应的总线主模块。
实施例2:
如图5所示,本实施例的系统相对于图4,还包括:与n个总线主模块一一对应连接的n个总线接口,每个总线接口提供一条总线通路;
相应地,任一存储器访问仲裁模块可接收来自n个总线主模块通过与其一一对应的总线接口发送的存储器访问请求信号;读数据处理模块中n个读数据选择模块将存储器输出的读数据,通过与其一一对应的n个总线接口输出至所述n个总线主模块。
上述总线接口主要用于处理各种类型的总线协议,将接收到的存储器访问请求转换为经统一的输出接口输出的信号(比如,总线接口提供3位的访问请求线,16位的读写地址线,16位的字节选择线,相当于为后续的模块提供了统一的输出接口,后续的模块可以根据需要连接这些硬件输出接口中的信号线)。
如图5所示,本实施例的系统还包括与m个存储器一一对应连接的m个存储器控制逻辑模块;m个存储器控制逻辑模块还与m个存储器仲裁模块中的存储器控制信号选择模块一一对应连接,且和读数据处理模块中任一读数据选择模块连接;
存储器控制逻辑模块接收来自存储器控制信号选择模块输出的内部控制信号,并根据接收到的内部控制信号对与其对应连接的存储器进行读/写操作,或者将与其对应连接的存储器的读数据以及读数据有效信号输出至所有的读数据选择模块,再由读数据选择模块将存储器的读数据以及读数据有效信号,输出至与该读数据选择模块对应的总线接口。
存储器控制逻辑模块为存储器的附属接口电路,可根据不同类型的存储器进行可扩展性设计,主要用于对存储器的读/写操作控制。
再参考图5,对本实施例系统的各个模块之间的连接关系以及信号的传递关系进行具体说明,该系统包括:
n个总线主模块;
与n个总线主模块一一对应连接的n个总线接口;
m个存储器,其中,各个存储器的类型可相同,也可不同,也可部分相同;
与m个存储器一一对应的m个存储器访问仲裁模块,该m个存储器访问仲裁模块中的每一个存储器访问仲裁模块分别与n个总线接口中的每一个总线接口连接;
与m个存储器一一对应的m个存储器控制信号选择模块,该m个存储器控制信号选择模块与上述m个存储器访问仲裁模块一一对应连接;
与m个存储器一一对应连接的m个存储器控制逻辑模块,该m个存储器控制逻辑模块与上述m个存储器控制信号选择模块一一对应连接;
与n个总线接口一一对应连接的n个读数据选择模块,且每一个读数据选择模块与m个存储器控制逻辑模块中的每一个存储器控制逻辑模块相连接;
以及与所有读数据选择模块连接的一个数据通道选择模块,且该数据通道选择模块与所有的存储器访问仲裁模块连接。
其中,n个总线主模块中的任一总线主模块通过与其对应的总线接口,可以向m个存储器访问仲裁模块中的任一存储器访问仲裁模块发起存储器访问请求(即对存储器的数据读/写请求);同时可以向m个存储器控制信号选择模块中的相应的任一存储器控制信号选择模块发送读/写控制信号,字节选择,读数据长度,读/写地址,写数据内容等内部控制信号;
m个存储器访问仲裁模块中的每一个存储器访问仲裁模块分别根据存储其内的仲裁算法,对接收到的存储器访问请求进行仲裁,给出仲裁结果,并将仲裁结果一路发送给存储器控制信号选择模块,另一路发送给数据通道选择模块,即向存储器控制信号选择模块和数据通道选择模块发出选中的访问请求;
m个存储器控制信号选择模块中的每一个存储器控制信号选择模块分别根据其接收到的仲裁结果,从多个总线接口中选择其接收到的仲裁结果所指定的总线接口发送的内部控制信号,并将该选中的内部控制信号发送给与其对应的存储器控制逻辑模块;
m个存储器控制逻辑模块中的每一个存储器控制逻辑模块分别根据其接收到的内部控制信号,分别对与其对应的存储器进行读/写操作,并将该存储器的读数据和读数据有效信号输出至所有的读数据选择模块;
数据通道选择模块根据接收到的仲裁结果,获得每一时刻n个总线接口对应的n条总线通路的读允许情况,并根据仲裁结果和各种类型存储器的读数据要求,将每一时刻的读允许与否信号分别输出至n个读数据选择模块;
n个读数据选择模块中的每一个读数据选择模块分别根据接收到的n个总线通路的每一时刻的读允许与否信号,进行读数据选择,即根据在每一时刻n条总线通路的读允许与否信号,从m个来自存储器控制逻辑模块输出的读数据及读数据有效信号中,选择被允许读数据的总线通路所对应的存储器控制逻辑模块输出的读数据以及读数据有效信号,输出至被允许读数据的总线通路所对应的总线接口,再由该总线接口将读数据以及读数据有效信号返回至对应的总线主模块。
上述存储器控制逻辑模块对一般存储器的读操作,其读数据会在接收到内部控制信号之后1个或者1个以上时钟周期后才进行,因此最好根据具体存储器特性,由存储器控制逻辑模块在一定周期延时后(1个或者1个以上的周期后),再根据仲裁结果对存储器进行读/写操作。
本发明系统中的m个存储器可以为m个不同类型的存储器,或者m个相同类型的存储器,或者m个部分类型相同的存储器。如图3、图4以及图5中所示的存储器1可以为ROM(只读存储器),存储器2可以为SRAM(静态随机存储器),…,存储器m可以为SDRAM(同步动态随机存储器)或者NOR FLASH(NOR型闪存)或者APB(APB存储器)等;不同类型的存储器的访问接口时序是不一样的,通常情况下,同一类型的存储器的访问接口时序基本一样,比如,对多个SRAM(静态随机存储器)的读写控制基本一样,除了各个控制信号,数据和地址的具体时序参数有些差别,但这个差别并不影响时序逻辑的设计方法。
本发明的支持多总线多类型存储器内存仲裁实现系统,本发明的系统,通过设计与m个存储器分别对应的存储器仲裁模块以及读数据处理模块,可以允许n个总线主模块可以访问m个存储器中的任意一个,同一时刻,一个存储器只能被一路总线主模块访问,又允许同一时刻不同的总线主模块各自访问不同的存储器;即实现总线主模块1访问存储器1的同时,总线主模块2可以访问存储器2,或者总线主模块1访问存储器2的同时,总线主模块2可以访问存储器1,…,总线主模块n可以访问存储器m;使各个总线主模块对应的总线通路在每一时刻都能得到很好的利用,带宽高,且带宽利用率高。且在增加新的通道,新的存储器支持接口(如存储器访问仲裁模块、存储器控制逻辑模块等)时,可以很容易的进行修改,具有极强的设计可重用性。
下面再结合图5,对本发明的支持多总线多类型存储器的内存仲裁实现方法进行说明,本发明支持多总线多类型存储器的内存仲裁实现方法包括如下步骤:
(1)n个总线主模块中的任一总线主模块通过与其对应的总线接口,向m个存储器一一对应的存储器仲裁模块中的任一存储器仲裁模块发送存储器访问请求和内部控制信号;
(2)每一个存储器仲裁模块根据存储其内的仲裁算法对接收到的存储器访问请求进行仲裁,输出仲裁结果,并从总线接口中选择接收与该仲裁结果对应的内部控制信号,并根据该内部控制信号对与其对应的存储器进行数据的读/写操作。
上述存储器访问仲裁模块可以针对不同的存储器特性采用以下不同的仲裁算法,可采用的仲裁算法主要有:
1)每个时钟周期进行一次仲裁的算法;
2)每条总线主模块的读/写开始到该次读/写结束作为一个最小时钟周期,中间不能插入其他总线主模块的访问。
这两种类型的算法均可与如下算法组合对存储器访问请求信号进行优先级排序:
a)按照固定优先级进行读写仲裁;
b)采用先到先处理算法,即对最先请求的总线主模块进行仲裁;
c)采用动态优先级算法,根据一定算法每隔一定时间调整一下各个总线的优先级顺序;
d)根据各个总线通路允许的最大等待周期来排列各个总线接口的访问顺序;
例如,对于ROM、RAM,SRAM等存储器可以采用每个时钟周期按照固定的优先级仲裁算法,即上述1)和a)的组合;
也可以单独采用先到先处理方法;还可以单独采用根据各个总线通路允许的最大等待周期来排列。
而对于SDRAM、NOR FLASH等存储器可以采用上述第2)种类型的算法;
也可以根据各个总线通路允许的最大等待周期来排列各个总线接口的访问顺序;
还可以采用先到先处理算法。
对于APB,APB一般是用来访问内部寄存器,它需要采用以2个时钟周期作为一次访问的最小单位,2个时钟周期之间不能插入其他通道的仲裁结果的算法,因此仲裁同样发生在上一次访问结束的那个时刻;也可以采用先到先处理算法;还可以根据各个总线硬件通路允许的最大等待周期来排列各个总线接口的访问顺序。
其他的存储器的仲裁算法机制可以根据实际情况进行选择,此为本技术领域的普通技术人员所公知的技术,在此不再一一列举。
下面假设存储器1为SRAM,存储器m为SDRAM,则SRAM对应的存储器1访问仲裁模块中存储的是SRAM存储器仲裁算法,以采用每个时钟周期按照固定优先级的仲裁算法,选择优先级高的总线接口进行存储器访问的算法为例;而SDRAM对应的存储器m访问仲裁模块中存储的是SDRAM存储器仲裁算法,以采用先到先处理算法为例。
则上述步骤(1)具体为:
(11)与总线主模块1对应的总线接口1向SRAM对应的存储器仲裁模块中的存储器1访问仲裁模块发起存储器访问请求,同时向存储器仲裁模块中的存储器1控制信号选择模块发送内部控制信号;
总线主模块2对应的总线接口2也向SRAM对应的存储器1访问仲裁模块发起访问请求,同时也向存储器1控制信号选择模块发送该总线接口2的内部控制信号;
总线主模块n对应的总线接口n也向SRAM对应的存储器1访问仲裁模块发起存储器访问请求,同时也向存储器1控制信号选择模块发送该总线接口n的内部控制信号。
同样道理,总线主模块1~n也可能同向SDRAM发起存储器访问请求。
上述步骤(2)具体为:
(21)存储器1访问仲裁模块根据存储其内的仲裁算法,在访问该存储器1访问仲裁模块的总线接口1,总线接口2,总线接口n中,采用每个时钟周期按照固定优先级进行仲裁,假设总线接口1的优先级较高,则此时存储器1访问仲裁模块的仲裁结果为选中总线接口1。
同样道理,SDRAM对应的存储器m访问仲裁模块采用先到先处理的仲裁算法对总线接口1~n的存储器访问请求进行仲裁,如果总线接口n的存储器访问请求最先到达,则仲裁结果为选中总线接口n。
(22)存储器1访问仲裁模块将其仲裁结果发送给与SRAM对应的存储器1控制信号选择模块(即向SRAM对应的存储器1控制信号选择模块发出选中的访问请求),该存储器1控制信号选择模块根据其接收到的仲裁结果,选择接收总线接口1输出的内部控制信号(包括;总线的读/写控制请求,字节选择,长度,读写地址,以及写数据等),并将该选择接收到的内部控制信号输入SRAM对应的存储器1控制逻辑模块,该存储器1控制逻辑模块根据其接收到的仲裁结果和内部控制信号对该SRAM进行读/写操作;
该存储器1访问仲裁模块同时也将其仲裁结果发送给数据通道选择模块,即向数据通道选择模块发起选中的访问请求;
同样道理,SDRAM对应的存储器m访问仲裁模块将其仲裁结果发送至与SDRAM对应的存储器m控制信号选择模块(即向SDRAM对应的存储器m控制信号选择模块发起选中的访问请求),该存储器m控制信号选择模块根据其接收到的仲裁结果,选择接收总线接口n输出的内部控制信号,并将该选择接收的内部控制信号输入SDRAM对应的存储器m控制逻辑模块,该存储器m控制逻辑模块根据其接收到的仲裁结果和内部控制信号对SDRAM进行读/写操作。
(23)数据通道选择模块根据接收到的仲裁结果,获得每一时刻n个总线接口对应的总线通路的读允许情况,并根据仲裁结果和各种类型存储器的读数据要求,将每一时刻的n条总线通路的读允许与否信号分别发送至n个读数据选择模块。
(24)读数据选择模块1根据接收到的每一时刻的总线通路的读允许与否信号,选择相应的总线通路上的读数据操作。比如,读数据选择模块1根据该读允许与否信号,获知总线主模块1对存储器1读数据的请求被允许,则选择接通存储器1与总线主模块1之间的读数据总线通路,即选择来自存储器1控制逻辑模块输出的SRAM存储器的读数据以及读数据有效信号,并将该读数据以及读数据有效信号发送给总线接口1;再由该总线接口1将读数据以及读数据有效信号返回给总线主模块1;
同样道理,读数据选择模块n根据接收到的每一时刻的总线通路的读允许与否信号,获知总线主模块n对存储器m的读数据的请求被允许,则选择来自存储器m控制逻辑模块输出的SDRAM存储器的读数据以及读数据有效信号,并将该读数据以及读数据有效信号发送给与其对应的总线接口n;再由该总线接口n将读数据以及读数据有效信号返回给与其对应的总线主模块n。
上述步骤(22)中,存储器1控制逻辑模块在接收到内部控制信号之后,根据SRAM本身的特性,可能不会立即返回存储器的读数据,而是在接收到内部控制信号之后的1个或者1个以上时钟周期后才对存储器进行读/写操作,返回存储器的读数据。因此,需要根据存储器访问仲裁模块的仲裁结果和该存储器访问仲裁模块对应的存储器本身的特性进行操作。
下面结合图6,对本发明支持多总线多类型存储器的内存仲裁实现方法的具体实施步骤做进一步详细说明:
假设总线主模块有4个,分别为总线主模块1,总线主模块2,总线主模块3,总线主模块4,每一个总线主模块都分别对应一个总线接口;存储器有2个,分别为SRAM和SDRAM。
假设总线主模块1欲从SRAM中读取4个数,读取的4个数据分别为:0x10000000,0x10000001,0x10000002,0x10000003,这4个数据的起始地址分别为:0x20000000,0x20000004,0x20000008,0x2000000c。
总线主模块2欲向SRAM写入4个数,写入的4个数据分别为:0x20020000,0x20020001,0x20020002,0x20020003,这4个数据的起始地址分别为:0x20000100,0x20000104,0x20000108,0x2000010c。
总线主模块3欲向SDRAM写入4个数,写入的4个数据分别为:0x30003000,0x30003001,0x30003002,0x30003003,这4个数据的起始地址分别为:0x40000100,0x40000104,0x40000108,0x4000010c。
总线主模块4欲从SDRAM中读取4个数,读取的4个数据分别为:0x40000400,0x40000401,0x40000402,0x40000403,这4个数据的起始地址分别为:0x40001000,0x40001004,0x40001008,0x4000100c。
且总线主模块2对应的总线的优先级大于总线主模块1对应的总线的优先级;
总线主模块4对应的总线的优先级大于总线主模块3对应的总线的优先级。
实施步骤具体包括:
(A)总线主模块1对SRAM对应的存储器访问仲裁模块发起4个数据的读操作访问请求;
总线主模块3对SDRAM对应的存储器访问仲裁模块发起4个数据的写操作的访问请求;一个时钟周期之后,总线主模块2向SRAM对应的存储器访问仲裁发起4个数据的写操作访问请求;
总线主模块4向SDRAM对应的存储器访问仲裁模块发起4个数据的读操作访问请求。
(B)SRAM对应的存储器访问仲裁模块根据存储其内的仲裁算法(该仲裁算法采用每一个时钟周期进行一个优先级仲裁),在第一时钟周期选中总线主模块1,从第2个时钟周期开始选中总线主模块2,直到总线主模块2的4个数据的写操作完成之后,再选中总线主模块1;
SDRAM对应的存储器访问仲裁模块根据存储其内的仲裁算法(该仲裁算法每路总线主模块的读/写开始到该次读/写结束作为一个最小时钟周期,中间不能插入其他总线主模块的访问,或者先到先处理算法),选中总线主模块3,在总线主模块3的4个数据的写操作完成之后,再选中总线主模块4(尽管总线主模块4对应的总线的优先级高于总线主模块3对应的总线的优先级,但由于采用先到先处理,所以总线主模块4只能等到总线主模块3的4个写数据操作完成之后,再开始读数据)。
(C)SRAM对应的存储器控制信号选择模块在第一时钟周期,接收总线主模块1对应的总线接口1发送的内部控制信号(即数据0x10000000的起始地址0x20000000);从第二时钟周期开始,接收总线主模块2对应的总线接口发送的内部控制信号(即0x20020000起始地址0x20000100,数据0x20020001的起始地址0x20000104,数据0x20020002的起始地址0x20000108,数据0x20020003的起始地址0x2000010c);直到总线主模块2的4个写数据操作完成之后,再开始接收总线主模块1通过与其对应的总线接口发送的内部控制信号(即数据0x10000001的起始地址0x20000004;数据0x10000002的起始地址0x20000008;数据0x10000003的起始地址0x2000000c);
SDRAM对应的存储器控制信号选择模块首先接收总线主模块3对应的总线接口发送内部控制信号(即数据0x30003000的起始地址0x40000100,数据0x30003001的起始地址0x40000104,数据0x30003002的起始地址0x40000108,数据0x30003003的起始地址0x4000010c);在总线主模块3的4个数据的写操作完成之后,再接收总线主模块4对应的总线接口发送的内部控制信号(即数据0x40000400的起始地址0x40001000,数据0x40000401的起始地址0x40001004,数据0x40000402的起始地址0x40001008,数据0x40000403的起始地址0x4000100c)。
(D)数据通道选择模块在接收SRAM对应的存储器访问仲裁模块的仲裁结果时,在第一时钟周期将总线主模块1对应的总线通路设定为读允许(即总线主模块1对应的总线通路是畅通的);
数据通道选择模块在接收到SDRAM对应的存储器访问仲裁模块的仲裁结果时,将总线主模块4对应的总线通路设定为读允许(即总线主模块4对应的总线通路是畅通的)。
(E)SRAM对应的存储器控制逻辑模块在第一时钟周期进行对SRAM的读数据操作,从第二时钟周期开始进行对SRAM的写数据操作,直到总线主模块2的4个数据写操作完成之后,继续进行对SRAM的读数据操作;
SDRAM对应的存储器控制逻辑模块首先进行对SDRAM的写数据操作,直到总线主模块3的4个数据写操作完成之后,再进行对SDRAM的读数据操作。
(F)与总线主模块1对应的读数据选择模块,将第一时钟周期从SRAM对应的存储器控制逻辑模块中得到的读数据以及读数据有效信号,通过总线主模块1对应的总线接口输出至总线主模块1,等到总线主模块2对SRAM的4个数据的写操作完成之后,再继续将从存储器控制逻辑模块中得到的读数据以及读数据有效信号,通过总线主模块1对应的总线接口输出至总线主模块1;
与总线主模块4对应的读数据选择模块,在等到总线主模块3对SDRAM的4个数据的写操作完成之后,将从SDRAM对应的存储器控制逻辑模块中得到的读数据以及读数据有效信号,通过总线主模块4对应的总线接口输出至总线主模块4。
本发明通过多个总线主模块分别通过与其对应的总线接口连接到多个存储器访问仲裁模块,可以访问多个存储器,这样使得在一路总线主模块访问存储器1的时候,另一路总线主模块可以访问存储器2;有独立的写数据通路和读数据通路,使得读写信号可以通过PIPELINE(流水线)方式持续写入存储器;并且,存储器1访问仲裁模块只对访问该模块的多个总线接口进行仲裁,而对存储器2访问仲裁模块的仲裁处理并不相互影响,存储器可以实现在第一时刻处理从总线主模块1过来的数据,下一个时刻可处理从总线主模块2来的读信号,即存储器在不同总线主模块切换中的零等待时间以及读写切换的零等待时间;存储器访问仲裁模块可以每一个时刻给出一个仲裁结果,使得各个不同总线主模块的读/写信号可以连续不断的传输到存储器控制信号选择模块中去。因此,本发明具有较高的带宽利用率高,对ROM,RAM的类型的存储器可以达到100%的带宽利用率;对SDRAM在一定的访问机制下,通过排队算法以及并发访问机制也可以达到相当高的带宽利用率。
上述实施例所揭示的技术方案仅仅是对本发明的系统和方法的具体说明,且文中虽然通过特定的术语(如存储器仲裁模块,读数据处理模块等)进行说明,但不能以此限定本发明专利的保护范围;本发明的思想不仅限于多总线对多存储器的访问技术,还可应用于如路由器的多通道选择或者交换机等领域;本技术领域的普通技术人员应当可在了解本发明的精神与原则后,对其进行等效的目的的变更与修改,均应涵盖于本发明专利保护范围所界定的范围之内。