CN100461134C - 一种外部存储器控制器及基于外部存储器控制器的地址变换的方法 - Google Patents
一种外部存储器控制器及基于外部存储器控制器的地址变换的方法 Download PDFInfo
- Publication number
- CN100461134C CN100461134C CNB2007100895331A CN200710089533A CN100461134C CN 100461134 C CN100461134 C CN 100461134C CN B2007100895331 A CNB2007100895331 A CN B2007100895331A CN 200710089533 A CN200710089533 A CN 200710089533A CN 100461134 C CN100461134 C CN 100461134C
- Authority
- CN
- China
- Prior art keywords
- address
- external memory
- control signal
- displacement control
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明的实施例提供了一种外部存储器控制器及基于外部存储器控制器的地址变换的方法,根据接收到的移位控制信号,对输入地址进行偏移控制,得到与当前存储器地址线高位或者低位对齐的输出地址。避免了可能存在的连线错误,提高了地址变换的灵活性,同时也增加了相应器件连线的灵活性,保证输出地址与存储器的地址线对齐,确保访问数据不出错。
Description
技术领域
本发明涉及芯片领域,尤其涉及一种外部存储器控制器及基于外部存储器控制器的地址变换的方法。
背景技术
存储器控制器作为一种通用的存储接口,其适用于控制各种类似于异步memory(存储器)接口的各种存储器件的读写操作。
在对其读写操作进行控制时,由于各种存储器件的数据位宽不同,使得其对应的地址线的位宽不能确定的,图1为现有技术提供的几种外部存储器控制器与存储器的连接方式示意图,如图1所示,如果数据位宽为8位,对应的地址线的位宽为32位,如果数据位宽为16位,其对应的地址线的位宽应该为31位,如果数据位宽为32位,其对应的地址线的位宽应为30位。
但对于输出地址,如果直接通信的两个器件,由于数据位宽的不同,其对应的地址线的位宽不一致时,如果连接不当,可能导致地址的最低位无效或实际最小分辨数据位宽对应的地址位无效。比如数据位宽为16bits(16位)的器件,地址线位宽为31位,这个时候可能是第0位为31bits对齐的地址,也可能第0位是无效位,而第1位为31bits对齐的地址。
现有技术中,通常采用事先确定空余地址位的方式解决地址线位宽不一致的问题,比如部分现有技术方案中的解决方案是对于所有存储器与存储器控制器的连接,均假设地址线名称为A,宽度为32位,存储器固定容量为4G,统一采用如表1所示的连接方式,表1为部分现有技术方案规定的不同数据位宽的存储器与存储器控制器连接时的地址连接方式,即规定:数据位宽为8位的存储器与存储器控制器相连接时,由于该存储器的地址线位宽为32位,所以没有空余的地址线;数据位宽为16位的存储器与存储器控制器相连接时,由于该存储器的地址线位宽为31位,所以其地址线的第0位空余;数据位宽为32位的存储器与存储器控制器相连接时,由于该存储器的地址线位宽为30位,所以其地址线的第0位和第1位均空余。
表1:不同数据位宽的存储器与存储器控制器连接时的地址连接方式
存储器宽度 | 地址连接方式 | 空余地址线 |
8位 | A[31:0] | 无 |
16位 | A[31:1] | A[0] |
32位 | A[31:2] | A[1:0] |
可见,采用这种方式解决器件地址线位宽不一致的问题时,必须得保证相互连接器件之间,不在布线的时候发生连接错误的问题,一旦在布线的时候出现连接错误,会直接导致输出地址不能对齐,在访问存储器时就会由于访问地址的错误,使得访问数据出现错误。
从上述内容可以看出,现有技术中,对地址线位宽不一致的解决方案是事先确定好的,在连线出现错误时,可能带来硬件错误,致使访问出错。
发明内容
本发明的实施例提供了一种地址变换的外部存储器控制器及方法,提高了地址变换的灵活性,同时也增加了相应器件连线的灵活性。
本发明的实施例是通过以下技术方案实现:
一种外部存储器控制器,包括:
移位控制信号的获取模块,用于获得移位控制信号,并将移位控制信号输出;
地址变换模块,所述地址变换模块与外部存储器连接,用于根据接收到的移位控制信号,对输入的初始地址实行偏移控制,得到用于访问所述外部存储器时所需要的输出地址;所述输出地址为所述外部存储器特定存储空间的物理地址,且所述输出地址与所述外部存储器地址线高位或者低位对齐。
一种基于外部存储器控制器的地址变换的方法,包括:
获得移位控制信号;
根据所述移位控制信号,对输入的初始地址进行偏移控制,得到访问外部存储器时所需要的输出地址,所述输出地址为所述外部存储器特定存储空间的物理地址,且所述输出地址与所述外部存储器地址线高位或者低位对齐。
由上述本发明的实施例提供的技术方案可以看出,本发明的实施例提供了一种外部存储器控制器及基于外部存储器控制器的地址变换的方法,将访问当前存储器时需要的输出地址与当前存储器的地址线高位或地位对齐,避免了由于访问当前存储器时需要的输出地址与当前存储器的地址线不对齐而可能存在的硬件连线错误,提高了地址变换的灵活性,同时也增加了相应器件连线的灵活性,保证输出地址与存储器的地址线对齐,确保访问数据不出错。
附图说明
图1为现有技术提供的几种外部存储器控制器与存储器的连接方式示意图;
图2为本发明实施例提供的实现读操作和写操作的结构示意图;
图3为本发明实施例提供的地址变换模块中实现移位控制的组合逻辑电路示意图;
图4为本发明实施例提供的经地址对齐后的外部存储器控制器与存储器的连接方式示意图。
具体实施方式
本发明的实施例提供了一种外部存储器控制器,包括移位控制信号的获取模块和地址变换模块;
所述移位控制信号的获取模块用于获得移位控制信号,并将所述移位控制信号输出;所述移位控制信号的获取模块可以通过与地址变换模块相连的配置寄存器模块来实现,也可以通过具备获得移位控制信号功能的软件模块来实现;配置寄存器模块根据当前存储器的数据位宽,获得所述移位控制信号,并将所述移动控制信号输出。
所述地址变换模块用于根据接收到的移位控制信号,对输入的初始地址进行偏移控制,得到与连接该外部存储器控制器的存储器的地址线高位或低位对齐的输出地址;
该地址变换模块可以通过不同的组合逻辑实现,比如,该地址变换模块可以通过多个二选一多路器的组合实现其地址变换的功能;
另外,需要注意的是,在得到与连接该外部存储器控制器的存储器的地址线对齐的地址后,可以根据实际需要,对该地址进行一系列的操作,从而得到输出地址,保证能够正常访问存储器。
本发明的实施例还提供了一种基于外部存储器控制器的地址变换的方法,包括:
获得移位控制信号;所述移位控制信号根据外部存储器的数据位宽决定;
根据所述移位控制信号,对输入的初始地址进行偏移控制,得到访问当前存储器时所需要的输出地址,所述输出地址为当前存储器特定存储空间的物理地址,且所述输出地址与当前存储器地址线高位或者低位对齐。
为了便于理解本发明的实施例提供的技术方案,下面将结合具体的实施例说明本发明的实施例提供的技术方案:
以通过AHB总线到一个数据位宽为16位的存储器中读32位数据为例,结合图2对本发明的实施例提供的技术方案进行详细说明,图2为本发明实施例提供的实现读操作和写操作的结构示意图;
在该实施例中,AHB总线与外部存储器控制器相连,存储器连接外部存储器控制器,存储器的存储容量固定的,总线上送过来的与这个32位数据对应的初始地址为0x080,也就是说如果AHB总线的数据位宽为32位,而且按照byte(字节,一个byte有8位)存储格式储存这个32位数据,那么这个32位数据应该对应于存储空间中的0x080/0x81/0x82/0x83的位置,然而由于当前存储该32位数据的存储器的数据位宽为16位,则这个32位数据实际上在当前存储器中的位置是未知的,需要根据该32位数据对应的初始地址,得到该位置,具体操作步骤为:
步骤1,根据该32位数据的数据位宽和当前存储器的数据位宽,确定移位控制信号,一般情况下,该移位控制信号为一位二进制数,即为1或0,也可以为一位以上的二进制数;
在这个步骤中,也可以理解为根据与该32位数据对应的初始地址和当前存储器的地址线位宽,确定移位控制信号;
这是因为数据位宽的数量与其地址线的位宽是一一对应的,也就是说有多大的数据位宽,就有与之对应的地址线位宽,如数据位宽为32位的数据,对应的地址线位宽为30位,数据位宽为16位的数据,对应的地址线位宽为31位,数据位宽为8位的数据,对应的地址线位宽为32位;
因为当前存储器的数据位宽为16位,AHB总线上传输的数据是以按照byte存储格式储存这个32位数据,即其存储空间对应的数据位宽为8位,因此AHB总线上传输的数据对应的地址线位宽为32位;而当前存储器的地址线位宽为31位,与AHB总线上传输的数据对应的地址线位宽不同,所以需要根据二者的地址线位宽的不同,确定移位控制信号;
步骤2,将确定的移位控制信号传输给地址变换模块,该地址变换模块根据移位控制信号,对所述初始地址进行偏移控制,即控制初始地址统一向左移或者统一向右移,得到与当前存储器地址线对齐的地址;
这个步骤中,地址变换模块实现偏移控制的操作是通过组合逻辑电路来实现的,这里所说的组合逻辑电路可以由一个以上的多路器组成,比如,如图3所示的由四个二选一多路器组成的组合逻辑电路,就可以对初始地址实现偏移控制的功能,图3中,二选一多路器的选通信号均为移位控制信号,初始地址由A0A1A2组成,当移位控制信号为1时,由上到下的四个二选一多路器的输出分别为:a0=A0,a1=A1,a2=A2,a3=0,即初始地址向“左”偏移一位,当移位控制信号为0时,由上到下的四个二选一多路器的输出分别为:a0=0,a1=A0,a2=A1,a3=A2,即初始地址向“右”偏移一位;
在这个实施例中,初始地址为0 x 080,其对应的地址线位宽为32位,而当前存储器的地址线位宽为31位,如果采用低位对齐的原则,则需要将0 x 080右移一位即得到0 x 40,此时该地址已变换成31位的地址,与当前存储器(数据位宽为16位)的地址线完全对齐,这样在地址输出的时候,就不会产生地址不对齐的问题,也就不会产生访问出错的问题;
如图1所示的几种外部存储器控制器和存储器的连接关系,经地址对齐后,即可得到如图4所示的连接关系,可以看出,如果发生连接错位(如将A[31:1]误连为A[30:0]),通过软件设置相应的寄存器,使地址发生偏移,即可规避错误。
由于这个地址偏移的过程是可以人为控制的,并且可以根据当前存储器地址线的连接情况随时调节,因此,对存储器地址线布线相对于现有技术的要求较低,增加了布局布线的灵活性;
步骤3,在得到与当前存储器地址线对齐的地址后,可以根据当前存储器的数据位宽,决定是否需要对所述地址进行累加操作,得到访问当前存储器时所需的输出地址;
这是因为AHB总线的数据位宽一般为32位,即要读的数据为32位,而当前存储器的数据位宽与总线的数据位宽不一定一致。如果当前存储器的数据位宽比总线的数据位宽小,那么要读的数据在当前存储器中对应的存储空间不只一个,这就需要在得到与当前存储器地址线对齐的地址后,根据所述地址,对其进行指定的操作(如可以通过自动递增的方式得到执行下一次读操作时所需要的地址),从而得到访问当前存储器所需要的输出地址;
如图2所示,在比较器中,tag(标志)与传输参数进行比较,得到tag与传输参数的比较结果;所述与当前存储器地址线对齐的地址根据该比较结果做变换,可以得到执行读32位数据这个操作时所需要的输出地址;具体操作步骤如下:
首先,由于存储器的数据位宽是16bits,经过步骤2得到的与当前存储器地址线对齐的地址是0x40,0x40即为要读的32位数据中第1个16位数据在存储器中的物理地址,根据该物理地址访问存储器,即可得到要读的32位数据中第1个16位数据;
第二,由于tag的初始值是0000,而这种情况下(指的是当前存储器的数据位宽是16位,而AHB总线传输的数据是按照byte存储格式存储,对于一个32bits数据的传输,对应于4个byte,传输参数中的每一位对应一个byte,所以此时传输参数应该为1111)的传输参数是1111(传输参数在该数据的传输过程中保持不变),在比较器中,tag与传输参数作比较,得到第1个16bits数据被读入到read buffer(读缓存)以后,tag的初始值0000需要向左移动2bits(这是因为读了一个16bits的数据,也就是2个byte的数据,所以tag要移动2bits),右位填11,变成0011;
第三,tag值变成0011后,在比较器中,tag与传输参数再次作比较,得到继续读操作的指示信号,即得到还需要再读一个16bits的数据的指示信号,将此指示信号输出至地址变换模块,对地址0 x 40递增得到下一个16bits数据在存储器中的物理地址应为0 x 41,根据0 x 41访问存储器,这样就可以读下一个16bits的数据,完成通过AHB总线到一个数据位宽为16位的存储器中读一个32位数据的操作;
同时,tag再次向左移2bits,右位填11,变成1111。
在上述读数据的过程中,读到的数据的排序已发生了变化,因此需要顺序重排;比如当需要AHB总线需要从初始地址为0x80的存储空间读到一个32bits的数55AA,但是当前存储器的数据位宽为16bits,所以需要通过执行2次读16bits的操作,即将这两次读到的数拼在一起的。如第一次根据地址0 x 40读到AA,第2次根据地址0 x 41读到55,读到的数为AA55,与需要读到的数的排序不同,这样需要read buffer是右移输出数据,即首先将低位数据55输出后,再将高位数据AA输出,实现顺序重排。
对于通过AHB总线写数据的操作,上述步骤仍然适用,在此就不再赘述;不过由于在写数据的操作中,数据排序不会出现类似于读数据操作中的问题,所以无需顺序重排。
综合上述,本发明的实施例提供了一种外部存储器控制器及基于外部存储器控制器的地址变换的方法,将访问当前存储器时需要的输出地址与当前存储器的地址线高位或地位对齐,避免了由于访问当前存储器时需要的输出地址与当前存储器的地址线不对齐而可能存在的硬件连线错误,提高了地址变换的灵活性,同时也增加了相应器件连线的灵活性,保证输出地址与存储器的地址线对齐,确保访问数据不出错。
至此,本发明仅以读、写操作为例说明了本发明实施例提供的技术方案,但本发明不只限于读写操作,一切基于根据接收到的移位控制信号,对输入地址进行偏移控制,得到与存储器地址线完全对齐的输出地址的技术方案,不管采用何种形式,均在本发明的保护范围之内。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变换或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (5)
1.一种外部存储器控制器,其特征在于,包括:
移位控制信号的获取模块,用于获得移位控制信号,并将移位控制信号输出;
地址变换模块,所述地址变换模块与外部存储器连接,用于根据接收到的移位控制信号,对输入的初始地址实行偏移控制,得到用于访问所述外部存储器时所需要的输出地址;所述输出地址为所述外部存储器特定存储空间的物理地址,且所述输出地址与所述外部存储器地址线高位或者低位对齐。
2.根据权利要求1所述的外部存储器控制器,其特征在于,所述移位控制信号的获取模块为与地址变换模块连接的配置寄存器模块,所述配置寄存器模块用于根据所述外部存储器的数据位宽,获得移位控制信号,并将所述移位控制信号输出。
3.根据权利要求1所述的外部存储器控制器,其特征在于,所述地址变换模块由至少一个多路选择器组成。
4.一种基于外部存储器控制器的地址变换的方法,其特征在于,包括:
获得移位控制信号;
根据所述移位控制信号,对输入的初始地址进行偏移控制,得到访问外部存储器时所需要的输出地址,所述输出地址为所述外部存储器特定存储空间的物理地址,且所述输出地址与所述外部存储器地址线高位或者低位对齐。
5.根据权利要求4所述的方法,其特征在于,所述移位控制信号根据所述外部存储器的数据位宽决定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100895331A CN100461134C (zh) | 2007-03-27 | 2007-03-27 | 一种外部存储器控制器及基于外部存储器控制器的地址变换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100895331A CN100461134C (zh) | 2007-03-27 | 2007-03-27 | 一种外部存储器控制器及基于外部存储器控制器的地址变换的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101034373A CN101034373A (zh) | 2007-09-12 |
CN100461134C true CN100461134C (zh) | 2009-02-11 |
Family
ID=38730939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100895331A Active CN100461134C (zh) | 2007-03-27 | 2007-03-27 | 一种外部存储器控制器及基于外部存储器控制器的地址变换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100461134C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944385B (zh) * | 2010-06-24 | 2013-02-06 | 新邮通信设备有限公司 | 一种存储器 |
CN104112102B (zh) * | 2014-06-30 | 2017-08-04 | 中国人民解放军国防科学技术大学 | 支持地址交叉方案配置的多ddr访问控制方法及装置 |
CN106201905B (zh) * | 2016-07-11 | 2019-09-24 | 浪潮(北京)电子信息产业有限公司 | 一种内存编址方法 |
CN111338997B (zh) * | 2020-03-05 | 2021-07-20 | 苏州浪潮智能科技有限公司 | 一种arm服务器bios支持tcm通信的方法、装置、设备和介质 |
CN113434545B (zh) * | 2021-06-02 | 2022-11-18 | 中科驭数(北京)科技有限公司 | 数据缓存装置及数据提供方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5113369A (en) * | 1985-07-26 | 1992-05-12 | Kabushiki Kaisha Toshiba | 32-bit personal computer using a bus width converter and a latch for interfacing with 8-bit and 16-bit microprocessors |
CN1078364C (zh) * | 1993-03-08 | 2002-01-23 | M-系统有限公司 | 存储器管理方法 |
US6647522B1 (en) * | 1999-08-25 | 2003-11-11 | Fujitsu Limited | Semiconductor devices having multiple memories |
WO2006024999A1 (en) * | 2004-09-03 | 2006-03-09 | Koninklijke Philips Electronics N.V. | Memory interface, memory arrangement and method of controlling memory access |
-
2007
- 2007-03-27 CN CNB2007100895331A patent/CN100461134C/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5113369A (en) * | 1985-07-26 | 1992-05-12 | Kabushiki Kaisha Toshiba | 32-bit personal computer using a bus width converter and a latch for interfacing with 8-bit and 16-bit microprocessors |
CN1078364C (zh) * | 1993-03-08 | 2002-01-23 | M-系统有限公司 | 存储器管理方法 |
US6647522B1 (en) * | 1999-08-25 | 2003-11-11 | Fujitsu Limited | Semiconductor devices having multiple memories |
WO2006024999A1 (en) * | 2004-09-03 | 2006-03-09 | Koninklijke Philips Electronics N.V. | Memory interface, memory arrangement and method of controlling memory access |
Also Published As
Publication number | Publication date |
---|---|
CN101034373A (zh) | 2007-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101477504B (zh) | 数据传输系统及数据传输方法 | |
US7649795B2 (en) | Memory with flexible serial interfaces and method for accessing memory thereof | |
CN100461134C (zh) | 一种外部存储器控制器及基于外部存储器控制器的地址变换的方法 | |
CN101706552B (zh) | 支持芯片不同引脚封装的可配置式片上测试模块 | |
CN105474319A (zh) | 用于配置混合存储器模块的存储器的i/o的设备及方法 | |
CN101770437B (zh) | 实现同步双端口存储器ip的并行读写的装置及方法 | |
CN103500148B (zh) | 一种主控卡读取业务线卡类型的装置和方法 | |
CN101853207A (zh) | 存储装置 | |
US10698851B1 (en) | Data bit width converter and system on chip thereof | |
CN102193888B (zh) | 数据传输系统与可编程串行外围设备接口控制器 | |
CN116450552B (zh) | 基于i2c总线异步批量读写寄存器的方法及系统 | |
CN1819554B (zh) | 数据处理系统及其数据接口连接方法 | |
CN101295283A (zh) | 总线装置及其数据传输方法 | |
JP7238171B2 (ja) | 不良カラム修復を提供するメモリデバイスおよびその動作方法 | |
US8321649B2 (en) | Memory controller address and data pin multiplexing | |
CN111309665A (zh) | 并行写操作、读操作控制系统及方法 | |
CN102081586A (zh) | 多i2c插槽电路系统及传送i2c信号的方法 | |
CN103488600A (zh) | 通用从机同步串行接口电路 | |
CN110781130A (zh) | 一种片上系统 | |
CN104657297A (zh) | 计算设备扩展系统及扩展方法 | |
CN116050344B (zh) | 一种车规芯片 | |
US7492650B2 (en) | Semiconductor storage device having a user region and a redundancy region | |
CN108459876A (zh) | 用于缩减面积的控制寄存器电路的方法与装置 | |
CN101069165B (zh) | 计算机系统 | |
CN100583072C (zh) | 控制器、地址控制方法及使用其的总线数据传输系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |