一种位宽自适应的存储器访问方法及系统的制作方法

文档序号:6462081阅读:107来源:国知局
专利名称:一种位宽自适应的存储器访问方法及系统的制作方法
技术领域
本发明涉及存储器访问技术,特别涉及一种位宽自适应的存储器访问方 法及系统。
背景技术
片上系统(SoC, System on Chip )是一种系统级芯片,在该芯片中集成 了其所在的整个应用系统的解决方案,应用系统中除SoC之外还包括存储 器和相关外设等。SoC—般包括中央处理器(CPU, Central Process Unit)、 总线、只读存储器(ROM, Read Only Memory)、各种存储器引导控制器 和应用模块,其中存储器引导控制器负责以一定的位宽模式访问SoC外部 的存储器。应用系统开机后,SoC中的硬件CPU需要运行软件系统,其中获取软 件系统代码并运行的过程就称为代码引导。 一般情况下,上述软件系统代码 可以存储在SoC内部的ROM中,也可以存储在SoC外部的存储器中。应用系统中SoC外部的存储器包括安全数字(SD, Secure Digital)卡、 与非型快闪存储器(Nandflash)、或非型快闪存储器(Norflash)等,根据 应用需要可以选择不同类型的存储器。这些不同类型的存储器可能存在不同 的位宽,因此为实现从存储器进行的代码引导,即实现获取存储器中的软件 系统代码并且运行,在SoC设计中必须考虑不同位宽的总线访问机制,以 满足SoC对外部不同位宽的存储器的访问。以Norflash为例,其作为一种程序存储器在SoC设计中获得了广泛的 应用,位宽包括8比特和16比特两种。目前为满足对不同位宽Norflash的 访问需求,普遍的做法有以下两种第一、使用SoC上的一个引脚用于检测所连接的电平值,并设置不同 电平值和Norflash位宽的关系,这样在该引脚上连接不同的电平时,SoC就 可以通过对电平值的检测,实现对存储器位宽的;f企测,进而使用不同的位宽 模式访问Norflash。例如,如果在该引脚连接的电平为3.3伏,SoC检测到 后确定存储器的位宽为16比特,进而以16比特位宽模式访问Norflash,如 果在该引脚连接的电平为0伏,SoC检测到后确定存储器的位宽为8比特, 进而以8比特位宽才莫式访问Norflash。上述对Norflash的访问由SoC内部的 Norflash引导控制器完成。但是考虑到SoC的引脚有限,这种存储器位宽检测和存储器访问的方 式浪费了引脚,从而限制了 SoC功能上的圹展,使得SoC竟争力下降,同 时在灵活性上也有所欠缺。第二、在应用系统额外增加一个存储器,如电可擦写可编程只读存储器 (EEPROM, Electrically Erasable Programmable Read Only Memory ), 在该 增加的存储器中写入Norflash引导控制器位宽模式切换程序,通过对该程序 的运行实现对Norflash引导控制器位宽模式的切换。由于设计人员会预先知 晓所使用的Norflash位宽,因此可以将Norflash引导控制器位宽模式切换程 序写入增加的存储器中,这样当SoC上电后运行增加的存储器中的程序, 即可以将Norflash引导控制器的位宽模式切换成与所使用的Norflash相同。该方法在设计人员已知使用的Norflash位宽的情况下,通过增加存储 Norflash控制器位宽模式切换程序的存储器,实现SoC上电后对Norflash引 导控制器位宽模式的切换,但同时增加了整个SoC设计的成本,也会使得 SoC的竟争力下降。另外,该方法也无法实现对Norflash位宽的纟企测。可见,目前针对SoC的应用,还未出现既能节约成本又能进行位宽自 适应的存储器访问方法。发明内容本发明提供一种位宽自适应的存储器访问方法,使用该方法可以基于低成本实现SoC对存储器进行位宽自适应的访问。本发明提供一种位宽自适应的存储器访问系统,使用该系统可以基于低成本实现SoC对存储器进行位宽自适应的访问。 本发明的技术方案是这样实现的 —种位宽自适应的存储器访问方法,该方法包括使用当前位宽模式读取存储器中设置的位宽检测信息,所述设置的位宽检 测信息的比特位数大于等于所述存储器的位宽;判断位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果 不是则调整位宽模式、使用调整后的位宽模式访问存储器,否则使用当前位宽 模式访问存储器。较佳地,所述访问存储器之后进一步包括进行代码引导;所述进行代码引导为将程序运行进程跳转至存储器中,运行存储器中的 软件系统代码,或者读取存储器中的软件系统代码至其他存储器运行,其中将 程序运行进程跳转至存储器时,避开所述设置的位宽检测信息占用的存储地址。较佳地,如果存储器的实际位宽大于当前位宽模式,位宽检测信息的读取 结果与设置的位宽检测信息不一致包括位宽检测信息读取完成之前的每次读 取结果中, 一部分读取结果中仅包括设置的位宽检测信息中的数据,另一部分 读取结果中仅包括未知数;如果存储器的实际位宽小于当前位宽模式,位宽检测信息的读取结果与设 置的位宽检测信息不一致包括位宽检测信息读取完成之前,每次读取结果中 既包括所述设置的位宽检测信息中的数据,又包括随机数。较佳地,所述当前位宽模式为默认位宽模式;所述调整位宽模式为当所述一部分读取结果中仅包括设置的位宽冲企测信息中的数据,另 一部分 读取结果中仅包括未知数时,将默认位宽模式的位宽比特位数加上一次读取结 果中包括的未知数的比特位数,作为调整后的位宽模式;当所述每次读取结果中既包括所述设置的位宽检测信息中的数据,又包括 随机数时,将默认位宽模式的位宽比特位数减去一次读取结果中包括的随机数的比特位数,作为调整后的位宽模式。较佳地,所述调整位宽模式为当所述一部分读取结果中仅包括设置的位宽检测信息中的数据,另一部分 读取结果中仅包括未知数时,增大当前位宽模式的位宽比特位数,作为调整后 的位宽模式;当每次读取结果中既包括所述设置的位宽检测信息中的数据,又包括随机 数时,减小当前位宽模式的位宽比特位数,作为调整后的位宽模式。 较佳地,所述使用调整后的位宽模式访问存储器之前进一步包括 返回执行使用当前位宽模式读取存储器中设置的位宽检测信息的步骤,判 断位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果是继续 执行调整位宽模式的步骤,否则继续执行使用调整后的位宽模式访问存储器的 步骤。较佳地,所述存储器为或非型快闪存储器Norflash,或者与非型快闪存储 器Nandflash。一种位宽自适应的存储器访问系统,该系统包^^舌存储器引导控制模块,用于使用当前位宽模式读取存储器中设置的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;根据确定的位宽模式调整方式,调整位宽模式、使用调整后的位宽模式访问存储器,或者使用当前位宽模式访问存储器;位宽选择模块,用于判断所述位宽检测信息的读取结果是否与所述设置的 位宽检测信息是否一致,如果不是确定存储器引导控制模块位宽模式的调整方 式,否则确定存储器引导控制模块使用当前位宽模式。较佳地,所述当前位宽模式为默认位宽模式;所述位宽选择模块包括第一位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的 位宽检测信息是否一致;第一位宽模式调整单元,用于在第一位宽检测单元判断所述位宽检测信息 的读取结果与所述设置的位宽检测信息不一致时,如果所述存储器引导控制模块在位宽检测信息读取完成之前的每次读取结果中, 一部分读取结果中仅包括 设置的位宽检测信息中的数据、另一部分读取结果中仅包括未知数,确定存储 器引导控制模块位宽模式的调整方式为,将默认位宽模式的位宽比特位数加上 一次读取结果中包括的未知数的比特位数,如果所述存储器引导控制模块的每 次读取结果中既包括所述设置的位宽检测信息、又包括随机数,确定存储器引 导控制模块位宽模式的调整方式为,将默认位宽模式的位宽比特位数减去一次读取结果中包括的随机数的比特位数;在第一位宽检测单元判断所述位宽检测 信息的读取结果与所述设置的位宽检测信息一致时,确定存储器引导控制模块 使用当前位宽模式。较佳地,所述位宽选择模块包括第二位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的 位宽检测信息是否一致;第二位宽模式调整单元,用于在所述第二位宽检测单元判断所述位宽检测 信息的读取结果与所述设置的位宽检测信息不一致时,如果所述存储器引导控 制模块在所述位宽检测信息读取完成之前的每次读取结果中, 一部分读取结果 中仅包括设置的位宽检测信息中的数据,另 一部分读取结果中仅包括未知数, 确定存储器?)导控制模块位宽模式的调整方式为,增大当前位宽模式的位宽比 特位数,如果所述存储器引导控制模块每次读取结果中既包括所述设置的位宽 检测信息中的数据、又包括随机数时,确定存储器引导控制模块位宽模式的调 整方式为,减小当前位宽模式的位宽比特位数;在所述第二位宽检测单元判断 所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,确定存储器 引导控制模块使用当前位宽模式。较佳地,该系统中还包括代码引导方式确定单元,用于确定代码引导方 式为将程序运行进程跳转至存储器,运行存储器中的软件系统代码;或者确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行;所述代码? 1 导方式用于存储器引导控制模块进行代码引导;所迷存储器引导控制模块包括位宽检测信息读取单元,用于使用当前位宽模式读取存储器中的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;位宽模式调整执行单元,用于根据所述位宽选择模块确定的位宽调整方式, 调整位宽模式;代码《I导执行单元,用于当所述代码引导方式确定单元确定的代码引导方 式为将程序运行进程跳转至存储器、运行存储器中的软件系统代码时,使用调 整后的位宽模式或当前位宽模式访问存储器,将程序运行进程跳转至存储器, 运行存储器中的软件系统代码;当所述代码引导方式确定单元确定代码引导方 式为读取存储器中的软件系统代码至其他存储器运行时,使用调整后的位宽模 式访问存储器,读取存储器中的软件系统代码至其他存储器运行。较佳地,所述存储器为Norflash或Nandflash。可见,本发明位宽自适应的存储器访问方法和系统,使用当前位宽模式 读取存储器中设置的位宽检测信息,判断位宽检测信息的读取结果与设置的 位宽检测信息是否一致时,如果不是则调整位宽模式,并使用调整后的位宽 模式访问存储器,否则使用当前位宽模式访问存储器。从而在不浪费引脚或 不增加额外的存储器的情况下,基于对位宽检测信息的读取结果的判断,实 现了对存储器的位宽自适应的访问,即基于低成本实现了 SoC对存储器进 4亍位宽自适应的访问。


图1为本发明位宽自适应的存储器访问方法的流程图;图2为本发明位宽自适应的存卩诸器访问方法的实施例的流程图;图3为本发明位宽自适应的存储器访问系统的一种结构示意图。
具体实施方式
为使本发明的目的和优点更加清楚,下面结合附图和实施例对本发明作 进一步的详细说明,这些说明是非限制性的。首先,介绍本发明位宽自适应的存储器访问方法。图1为本发明位宽自适应的存储器访问方法的流程图,该流程包括 步骤101:使用当前位宽模式读取存储器中设置的位宽检测信息。 本步骤中,存储器中可以设置存储位宽检测信息的预定义存储空间,该空间可以位于存储器中的任意存储位置。所设置的位宽检须'j信息的比特位数,应该大于等于存储器的位宽。步骤102:判断位宽检测信息的读取结果与设置的位宽检测信息是否一致,如果不是则调整位宽模式并执行步骤103,否则使用当前位宽模式访问存储器。本步骤中,设置的位宽检测信息除了存储在待访问的SoC外部的存储 器中之外,也存储在SoC内部的存储器,例如ROM中。使用该预设存储的 相同位宽检测信息,可以针对不同位宽模式和不同存储器的实际位宽组合进 行判断,以检测存储器的实际位宽。对于设置的位宽检测信息,位宽检测信 息的读取结果,根据当前位宽模式的不同可以有不同的情况。例如,假设设置的位宽检测信息为4个字节32比特,如果当前位宽模 式为16比特,则需读取两次才能完成位宽检测信息的读取。当使用当前位 宽模式读取16比特位宽的存储器中设置的位宽检测信息时,第一次读取时, 以位宽检测信息的首地址为起始,连续读取两个存储地址中的数据,由于存 储器的位宽也是16比特,第一次读取时存储器实际输出的也是16比特数据, 第二次读取时,以第一次读取完成后的地址(即第17比特)为起始,第二 次读取时存储器实际输出的也是16比特,读取完成后可以得到与设置的位 宽检测信息一致的32比特数值。使用当前位宽模式读取8比特位宽的存储 器中设置的位宽检测信息时,第一次读取时仍以位宽检测信息的首地址为起 始,但由于存储器的位宽是8比特,第一次读取时存储器实际只输出8比特 数据,第一次读取结果中除包括8比特数据外还包括8比特随机数,这里的 随机数不是存储在存储器中的数据,而是在读取过程中随机产生的,第二次 读取时同样以第一次读取完成后的地址(即第17比特)为起始,第二次读取时存储器实际输出的也是8比特,第二次读取结果中除包括8比特数据外 还包括8比特随机数,读取完成后,每次读取结果中都既包括位宽^r测信息 中的数据又包括随机数。又例如,还是使用相同的32比特位宽检测信息,如果当前位宽模式为 8比特,共需读取4次完成位宽检测信息的读取。当使用当前位宽模式读取 8比特位宽的存储器中设置的位宽检测信息时,依据相同原理,读取完成后 可以得到与设置的位宽检测信息一致的32比特数值。当使用当前位宽模式 读取16比特位宽的存储器中的位宽检测信息时,第一次读取同样以位宽检 测信息的首地址为起始,由于存储器的位宽为16比特,则存储器实际会输 出16比特数据,这样在第一次读取时会丟失低位存储字节中8比特的数据, 第二次读取时,虽然第一次只读取了 8比特,但是存储器基于实际位宽,在 第二次读取中实际从第17比特开始输出数据,因此在第二次读取时会丢失 高位存储字节中8比特的数据,后续的第三次读取和第四次读取中,存储器 输出的实际已不是位宽检测信息,而是存储在存储器中其他位置的未知数, 这样在读取完成后, 一部分读取结果中仅包括设置的位宽检测信息中的数 据,而另一部分读取结果中仅包括未知数。关于上述读取结果与设置的位宽检测信息不一致的情况,上述描述仅是 概述性说明,后文将在具体实施例中进一步详细说明。因此,如果当前位宽模式与存储器的实际位宽不相同,位宽检测信息的读 取结果必然与设置的位宽检测信息不一致,根据这一点可以对位宽模式进行自 适应调整。根据对位宽检测信息的读取结果的判断,可以以不同的方式进行位宽模式 的调整。例如如果存储器的实际位宽大于当前位宽模式,并且位宽检测信息的 读取结果中, 一部分读取结果中仅包括设置的位宽检测信息中的数据、另一部 分读取结果中仅包括未知数时,将当前位宽模式的位宽比特位数加上一次读取 结果中包括的未知数的比特数;当存储器的实际位宽小于所述当前位宽模式, 并且每次读取结果中既包括所述设置的位宽检测信息的数据又包括随机数时,将当前位宽模式的位宽比特位数减去一次读取结果中包括的随机数的比特数。 基于这种位宽模式的调整方式中,判断位宽检测信息的读取结果只需进行一次, 当前位宽模式其实就是默认位宽模式。又例如,如果存储器的实际位宽大于当前位宽模式,位宽检测信息的读取 结果中, 一部分读取结果中仅包括设置的位宽检测信息中的数据、另一部分读 取结果中仅包括未知数,则增大当前位宽模式的位宽比特位数,如将8比特调整为16比特,如果存储器的实际位宽小于所述默认位宽模式,每次读取结果中 既包括所述设置的位宽检测信息中的数据又包括随机数,则将减小当前位宽模 式的位宽比特位数,如将16比特调整为8比特。在这种位宽模式的调整方式中, 每次判断位宽检测信息的读取结果之后,由于增大或减小当前位宽模式的位宽 比特位数之后并不一定与存储器的实际位宽相同,所以还需返回执行步骤101, 直到位宽检测信息读取结果与设置的位宽检测信息一致时,才继续执行步骤 103。在第一次判断中,当前位宽模式指的是默认位宽模式,而在第一次之后的 判断中,当前位宽模式指的是上一次判断中对默认位宽模式调整后的位宽模式。 步骤103:使用调整后的位宽模式访问存储器。本发明位宽自适应的存储器访问方法,使用当前位宽模式读取存储器中 的位宽检测信息,判断位宽检测信息的读取结果与设置的位宽检测信息是否 一致,如果不是则调整位宽模式,并使用调整后的位宽模式访问存储器,否 则使用当前位宽模式访问存储器。从而在不浪费引脚或不增加额外的存储器 的情况下,基于对位宽检测信息的读取结果的判断,实现了对存储器的位宽 自适应的访问,即基于低成本实现了 SoC对存储器进行位宽自适应的访问。下面以存储器为Norflash为例,举出本发明存储器访问方法的一个具体 实施例,在该实施例中以访问存储器进行代码引导为例。在本实施例中,SoC内部ROM中固化有Norflash引导控制器的位宽选 择程序,SoC上电后自动运行该程序。本发明方法中所介绍过的,根据位宽 检测信息读取结果判断存储器的实际位宽、对Norflash引导控制器位宽模式 的自适应调整、以及进行代码引导,都可以由上述Norflash引导控制器的位宽选择程序中不同部分的运行结果来触发操作,具体来说,上述Norflash引 导控制器的位宽选择程序可以包括以下三个部分1 )检测Norflash是否存在以及具体位宽的程序;2 )根据位宽检测结果自适应调整Norflash引导控制器位宽模式的程序; 3)在位宽自适应调整之后,从Norflash中读取软件系统代码运行或者跳转至Norflash运行软件系统代码的程序;这里所举出的是从Norflash进行 代码引导的两种具体实现方式,其中读取软件系统代码运行为,从Norflash 中读取软件系统代码至其他存储器,然后在其他存储器中运行读取的软件系 统代码,而跳转至Norflash运行软件系统代码为,将SoC的代码运行进程 直接跳转至Norflash,在Norflash中运行软件系统代码。在本实施例中,Norflash作为程序存储器使用,包括8比特位宽或16 比特位宽两种情况,位宽^r测信息设置为大于16比特。Norflash中建立有 预定义存储空间,这一部分空间可以灵活设置,如包括一个字节、两个字节、 四个字节或八个字节,在预定义存储空间中存储位宽检测信息。本实施例中 采用Norflash地址编号为0x00 0x03的四个字节存储32比特位宽检测信息 0x55aa0106,其中0x55aa表示Norflash存在,0x0106表示Norflash位宽为 16比特,读取方式为从低比特位到高比特位。默认位宽模式可以设置为16 比特或8比特中的任意一种。假设Norflash引导控制器的默认位宽模式为16比特,从Norflash引导 控制器的角度来说,需要进行两次读取才能完成32比特位宽检测信息的读 取。基于这种假设有以下两种可能的情况①如果Norflash的位宽为8比特,当第一次读取时,Norflash引导控 制器发出选通信号、读信号和位宽检测信息首地址信号至Norflash,由于 Norflash的位宽为8比特,实际返回数据0x06,而由于默认位宽模式为16 比特,Norflash引导控制器得到第一次读取结果为0xXX06,其中X代表随 机数,接着Norflash引导控制器进行第二次读取,同样的过程后Norflash实 际返回数据0xaa,还是由于默认位宽模式为16比特,其Norflash引导控制器得到第二次读取结果为0xXXaa,其中X代表随机数,因此读取结束后得 到读取结果为0xXXaaXX06,即每次读取的结果中既包括位宽检测信息中的 数据、又包括随机数;②如果Norflash的位宽为16比特,则按照与上述①中读取数据相同的 方式,在读取完成后可以得到读取结果为0x55aa0106,即读取结果与设置的 位宽检测信息完全一致。假设Norflash引导控制器的默认位宽模式为8比特,从Norflash引导控 制器的角度来说,需要进行四次读取才能完成32比特位宽检测信息的读取。 基于这种假设有以下两种可能的情况① 如果Norflash的位宽为16比特,当第一次读取时,Norflash引导控 制器发出选通信号、读信号和第O个地址信号至Norflash,由于Norflash的 位宽为16比特,实际返回数据为0x0106,但由于Norflash引导控制器是8 比特位宽,所以只会读取到数据0x06, 0x01将^l丢掉。接着Norflash引导 控制器会按照同样方式进行第二次读取,此时Norflash实际返回数据为 Ox55aa,同样的,Norflash引导控制器只会读取到0xaa,而0x55将被丢掉。 Norflash引导控制器接下来会进行第三次和第四次读取,由于Norflash中位 宽检测信息的内容实际已经读取完毕,所以Norflash引导控制器进行第三次 和第四次读取时,将读取Norflash中存储未知内容的空间,控制器会得到 OxYYYY这样的数据,其中Y代表未知数。因此在读取完成后,Norflash 引导控制器获得的读取结果为0xYYYYaa06,即一部分读取结果中仅包括设 置的位宽检测信息中的数据,而另 一 部分读取结果中仅包括未知数。② 如果Norflash的位宽为8比特,按照与上述①中读取数据相同的方式, 在读取完成后可以得到读取结果为0x55aa0106,即读取结果与设置的位宽检 测信息完全一致。通过上述两种假设的应用场景可以看出,只有读取结果与设置的位宽检 测信息一致时才能判断位宽模式与Norflash的位宽相同。基于上述为本实施例假设的应用场景,图2为本发明位宽自适应的存储器访问方法的实施例流程图,该流程以访问Norflash进行代码引导为例。图 2所示流程包括步骤201:对SoC所在的应用系统进行初始化。这一步骤采用通用方法 即可实现,不再赘迷。步骤202:配置SoC内部的Norflash控制器的当前位宽模式为16比特。步骤203:使用当前位宽模式读取Norflash中的位宽检测信息。步骤204:判断16比特的Norflash是否存在,如果是,直接执行步骤 208,否则,继续执行步骤205。在本步骤中,通过运行Norflash控制器的位宽选择程序的第1 )部分进 行判断,步骤203中读取的位宽检测信息是第1)部分程序的执行条件,当 位宽检测信息的读取结果为0x55aa0106时,第1)部分程序的运行结果为 16比特的Norflash存在。步骤205:判断8比特的Norflash是否存在,如果是,直接执行步骤207, 否则,继续执行步骤206。在本步骤中,通过运行Norflash控制器的位宽选择程序的第1 )部分进 行判断,步骤203中读取的位宽检测信息为第1)部分程序的执行条件,当 位宽检测信息的读取结果为0xXXaaXX08时,第1 )部分程序的运行结果为 8比特的Norflash存在。上述步骤204和步骤205的执行并无严格顺序关系,也可以先判断8比 特的Norflash是否存在,再判断16比特的Norflash是否存在。步骤206:继续SoC内部ROM中其他程序的执行流程,然后结束本流程。步骤207:将Norflash控制器的位宽模式自适应调整为8比特。 本步骤中,通过运行Norflash控制器的位宽选择程序的第2)部分触发 自适应调整,第1)部分程序得出的Norflash的实际位宽与默认位宽模式不 相同,是该第2)部分程序的执行条件。第2)部分程序的运行结果,触发 Norflash控制器将位宽模式自适应调整为与Norflash实际位宽相同的8比特。步骤208:按照自适应调整后的位宽模式,将SoC中的程序运行进程跳 转至Norflash中,继续运行软件系统代码,或者Norflash控制器读取Norflash 中的软件系统代码至其他存储器再运行。在本步骤中,通过运行Norflash控制器位宽选择程序的第3)部分触发 代码引导,第1)部分程序得出Norflash的实际位宽与默认位宽模式相同, 或者第2)部分程序得出自适应调整Norflash控制器的位宽模式,是第3) 部分程序的执行条件。如果第3)部分程序为跳转程序,则SoC中的CPU 将代码地址修改为Norflash的地址,之后CPU代码执行将通过Norflash引 导控制器直接在Norflash中继续运行软件系统代码,跳转时需避开预定义存 储空间,按照本实施例的应用场景假设,预定义存储空间包括0x00 0x03字 节,则上述跳转时必须跳转至0x04字节进行软件系统代码的运行;如果该 部分程序为读取执行程序,贝']SoC中的CPU触发Norflash引导控制器将 Norflash中的软件系统代码读取至其他存储器,再在该其他存储器中继续运 行软件系统代码。上述两种代码引导的具体方式可以根据实际需要选择其在本实施例中所举出的Norflash的位宽只是一种具体的举例,在实际应 用中还有可能出现如32比特、64比特的位宽,但无论Norflash的位宽具体 为多少比特,只要按照本发明所介绍的方法,均能实现位宽自适应的代码引 导。另外,除Norflash之外,其他存储器,例如Nandflash也同样可以按照 该方法实现位宽自适应的代码引导。其次,介绍本发明位宽自适应的存储器访问系统。图3为本发明位宽自适应的存储器访问系统的一种结构示意图,该系统 包括存储器引导控制模块,用于使用当前位宽模式读取存储器中的位宽检测信 息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;根据确 定的位宽模式调整方式,调整位宽模式,使用调整后的位宽模式访问存储器, 或者使用当前位宽模式访问存储器。位宽选择模块,用于在判断所述位宽检测信息的读取结果与设置的位宽 检测信息是否一致,如果不是确定存储器引导控制模块位宽模式的调整方 式,否则确定存储器引导控制模块使用当前位宽模式。本发明位宽自适应的存储器访问系统,由位宽选择模块判断位宽检测信 息的读取结果与设置的位宽检测信息是否一致,如果不是确定存储器引导控制模块的位宽模式,否则确定存储器引导控制模块使用当前位宽模式;由存 储器引导控制模块读取存储器中的位宽检测信息,并使用调整后的位宽模式 访问存储器,或者使用当前位宽模式访问存储器。在不浪费引脚或额外的存 储器的情况下,基于对位宽检测信息的读取结果的判断,实现了对存储器的 位宽自适应的访问,即基于低成本实现了 SoC对存储器进行位宽自适应的 访问。在本发明位宽自适应的存储器访问系统中,位宽选择模块的内部结构可 以包括两种情况。第 一种位宽选择模块中可以包括第一位宽检测单元,用于判断所述位宽检测信息的读取结果是否与设置的 位宽检测信息一致。第一位宽模式调整单元,用于在第一位宽检测单元的判断所述位宽检测信 息的读取结果与所述设置的位宽检测信息不一致时,如果所述存储器引导控制 模块在位宽检测信息读取完成之前的每次读取结果中, 一部分读取结果中仅包 括设置的位宽检测信息中的数据、另一部分读取结果中仅包括未知数,确定存 储器引导控制模块位宽模式的调整方式为,将当前位宽模式的位宽比特位数加 上一次读取结果中包括的未知数的比特位数,如果所述存储器引导控制模块的 每次读取结果中既包括所述设置的位宽检测信息中的数据、又包括随机数时, 确定存储器引导控制模块位宽模式的调整方式为,将当前位宽模式的位宽比特 位数减去一次读取结果中包括的随机数的比特位数;在第一位宽检测单元判断 所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,确定存储器 引导控制模块使用当前位宽模式。第二种位宽选择^^莫块中可以包括第二位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的 位宽检测信息是否一致。第二位宽模式调整单元,用于在所述第二位宽检测单元判断所述位宽检测 信息的读取结果与所述设置的位宽检测信息不一致时,如果所述存储器引导控 制模块在所述位宽检测信息读取完成之前的每次读取结果中, 一部分读取结果 中仅包括设置的位宽检测信息中的数据,另一部分读取结果中仅包括未知数, 确定存储器引导控制模块位宽模式的调整方式为,增大当前位宽模式的位宽比特位数;如果所述存储器31导控制模块每次读取结果中既包括所述设置的位宽 检测信息中的数据、又包括随机数时,确定存储器引导控制模块位宽模式的调 整方式为,减小当前位宽模式的位宽比特位数。在本发明位宽自适应的存储器访问系统中,还可以包括代码引导方式确定 单元,用于确定代码引导方式为将程序运行进程跳转至存储器,运行存储器中 的软件系统代码;或者确定代码引导方式为读取存储器中的软件系统代码至其 他存储器运行。上述代码引导方式用于存储器引导控制模块进行代码引导。在上述系统中还包括代码引导确定单元的基础上,存储器引导控制模块 可以包括位宽检测信息读取单元,用于使用当前位宽模式读取存储器中的位宽检测 信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽。位宽模式调整执行单元,用于根据所述位宽选择模块确定的位宽调整方式, 调整位宽模式。方式为将程序运行进程跳转至存储器、运行存储器中的软件系统代码时,使 用调整后的位宽模式或当前位宽模式访问存储器,将程序运行进程跳转至存 储器,运行存储器中的软件系统代码;当所述代码引导方式确定单元确定代 码引导方式为读取存储器中的软件系统代码至其他存储器运行时,使用调整 后的位宽模式或当前位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运行。通过对本发明系统中各模块内部结构的介绍可以看出,从存储器进行代 码引导可以有两种具体的实施方式,第一为跳转至存储器中,运行存储器中 的软件系统代码,第二为读取存储器中的软件系统代码至其他存储器运行, 根据实际情况选择一种具体实施方式
即可。本发明系统可以按照前述介绍的本发明方法工作,如果具体到方法中所 举出的具体实施例,位宽选择模块就相当于方法实施例中固化有存储器控制器位宽选择程序的ROM,其工作流程与方法中介绍的相同,这里不再赘述。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的 保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改 进等,均应包含在本发明的保护范围之内。
权利要求
1. 一种位宽自适应的存储器访问方法,其特征在于,该方法包括使用当前位宽模式读取存储器中设置的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;判断位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果不是,则调整位宽模式、使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器。
2、 如权利要求l所述的方法,其特征在于,所述访问存储器之后进一步包 括进行代码引导;所述进行代码引导为将程序运行进程跳转至存储器中,运行存储器中的 软件系统代码,或者读取存储器中的软件系统代码至其他存储器运行,其中将 程序运行进程跳转至存储器时,避开所述设置的位宽检测信息占用的存储地址。
3、 如权利要求l所述的方法,其特征在于,如果存储器的实际位宽大于当 前位宽模式,位宽检测信息的读取结果与设置的位宽检测信息不一致包括位 宽检测信息读取完成之前的每次读取结果中, 一部分读取结果中仅包括设置的 位宽检测信息中的数据,另一部分读取结果中仅包括未知数;如果存储器的实际位宽小于当前位宽模式,位宽检测信息的读取结果与设 置的位宽检测信息不一致包括位宽检测信息读取完成之前,每次读取结果中 既包括所述设置的位宽检测信息中的数据,又包括随机数。
4、 如权利要求3所述的方法,其特征在于,所述当前位宽模式为默认位宽模式;所述调整位宽模式为当所述一部分读取结果中仅包括设置的位宽检测信息中的数据,另一部分 读取结果中仅包括未知数时,将默认位宽模式的位宽比特位数加上一次读取结 果中包括的未知数的比特位数,作为调整后的位宽模式;当所述每次读取结果中既包括所述设置的位宽检测信息中的数据,又包括 随机数时,将默认位宽模式的位宽比特位数减去一次读取结果中包括的随机数的比特位数,作为调整后的位宽模式。
5、如权利要求3所述的方法,其特征在于,所述调整位宽模式为 当所述一部分读取结果中仅包括设置的位宽检测信息中的数据,另 一部分 读取结果中仅包括未知数时,增大当前位宽模式的位宽比特位数,作为调整后 的位宽模式;当每次读取结果中既包括所述设置的位宽检测信息中的数据,又包括随机 数时,减小当前位宽模式的位宽比特位数,作为调整后的位宽模式。
6、 如权利要求5所述的方法,其特征在于,所述使用调整后的位宽模式访 问存储器之前进一步包括返回执行使用当前位宽模式读取存储器中设置的位宽检测信息的步骤,判 断位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果是继续 执行调整位宽模式的步骤,否则继续执行使用调整后的位宽模式访问存储器的 步骤。
7、 如权利要求1至6任意一项所述的方法,其特征在于,所述存储器为或
8、 一种位宽自适应的存储器访问系统,其特征,该系统包括 存储器引导控制模块,用于使用当前位宽模式读取存储器中设置的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;根 据确定的位宽模式调整方式,调整位宽模式、使用调整后的位宽模式访问存储 器,或者使用当前位宽模式访问存储器;位宽选择模块,用于判断所述位宽检测信息的读取结果与所述设置的位宽 检测信息是否一致,如果不是确定存储器引导控制模块位宽模式的调整方式, 否则确定存储器引导控制模块使用当前位宽模式。
9、 如权利要求8所述的系统,其特征在于,所述当前位宽模式为默认位宽 模式;所述位宽选择模块包括第一位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的 位宽检测信息是否一致;第一位宽模式调整单元,用于在第一位宽检测单元判断所述位宽检测信息 的读取结果与所述设置的位宽检测信息不一致时,如果所述存储器引导控制模 块在位宽检测信息读取完成之前的每次读取结果中, 一部分读取结果中仅包括 设置的位宽检测信息中的数据、另一部分读取结果中仅包括未知数,确定存储 器引导控制模块位宽模式的调整方式为,将默认位宽模式的位宽比特位数加上 一次读取结果中包括的未知数的比特位数,如果所述存储器引导控制模块的每 次读取结果中既包括所述设置的位宽检测信息、又包括随机数,确定存储器引 导控制模块位宽模式的调整方式为,将默认位宽模式的位宽比特位数减去一次读取结果中包括的随机数的比特位数;在第一位宽检测单元判断所述位宽检测 信息的读取结果与所述设置的位宽检测信息一致时,确定存储器引导控制模块 使用当前位宽模式。
10、 如权利要求8所述的系统,其特征在于,所述位宽选择模块包括第二位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的 位宽检测信息是否一致;第二位宽模式调整单元,用于在所述第二位宽检测单元判断所述位宽检测 信息的读取结果与所述设置的位宽检测信息不一致时,如果所述存储器引导控 制模块在所述位宽检测信息读取完成之前的每次读取结果中, 一部分读取结果 中仅包括设置的位宽检测信息中的数据,另 一部分读取结果中仅包括未知数, 确定存储器引导控制模块位宽模式的调整方式为,增大当前位宽模式的位宽比 特位数,如果所述存储器引导控制模块每次读取结果中既包括所述设置的位宽 检测信息中的数据、又包括随机数时,确定存储器引导控制模块位宽模式的调 整方式为,减小当前位宽模式的位宽比特位数;在所述第二位宽检测单元判断 所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,确定存储器 引导控制模块使用当前位宽模式。
11、 如权利要求8所述的系统,其特征在于,该系统中还包括代码引导 方式确定单元,用于确定代码引导方式为将程序运行进程跳转至存储器,运行 存储器中的软件系统代码;或者确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行;所述代码引导方式用于存储器引导控制模块进行代码引导;所述存^f渚器《1导控制4莫块包括位宽检测信息读取单元,用于使用当前位宽模式读取存储器中的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;位宽模式调整执行单元,用于根据所述位宽选择模块确定的位宽调整方式, 调整位宽模式;式为将程序运行进程跳转至存储器、运行存储器中的软件系统代码时,使用调 整后的位宽模式或当前位宽模式访问存储器,将程序运行进程跳转至存储器, 运行存储器中的软件系统代码;当所述代码引导方式确定单元确定代码引导方 式为读取存储器中的软件系统代码至其他存储器运行时,使用调整后的位宽模 式或当前位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运 行。
12、如权利要求8至ll任意一项所述的系统,其特征在于,所述存储器为 Norflash或Nandflash。
全文摘要
本发明公开了一种位宽自适应的存储器访问方法,该方法包括使用当前位宽模式读取存储器中设置的位宽检测信息,位宽检测信息的比特位数大于等于所述存储器支持的最大位宽;判断位宽检测信息的读取结果与设置的位宽检测信息是否一致,如果不是则调整位宽模式,使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器。本发明还公开了一种位宽自适应的存储器访问系统。应用本发明,可以基于低成本实现SoC对存储器进行位宽自适应的访问。
文档编号G06F12/02GK101251828SQ20081008993
公开日2008年8月27日 申请日期2008年4月9日 优先权日2008年4月9日
发明者黄少彬 申请人:炬力集成电路设计有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1