并行FLASH访问系统和方法
技术领域
本申请涉及数据通信领域,尤其涉及一种并行闪存(FLASH)访问系统和方法。
背景技术
在数据通信领域,特别是使用嵌入式通信处理器的设备中,运行在系统中的软件一般包括启动(BOOT)程序和操作系统及应用程序。其中,BOOT程序一般通过编程器烧写到FLASH芯片中,供处理器启动时使用。操作系统及应用程序则在处理器启动后,通过网口下载并写入FLASH芯片中,供设备下次启动时,处理器直接读取FLASH中的程序并运行。
嵌入式通信设备常用并行FLASH作为BOOT程序和操作系统及应用程序存储的主要器件。为节约成本,BOOT程序和操作系统及应用程序一般存储在同一片并行FLASH中。
BOOT程序一般容量较小,比如2兆字节以下,可选择8位或16位宽度总线来访问。其基本可接受8位宽度的访问时间,能够在较短时间内通过编程器完成烧写,也能较快地完成BOOT程序访问加载。因此,BOOT程序可以统一采用8位宽度总线来访问。操作系统及应用程序根据实现的功能不同,最终的程序文件有大有小。一般来说,低端产品的功能相对简单,文件小些;中高端产品的功能相对复杂,文件大些,一般为BOOT程序的数十倍大。因此,中高端产品的操作系统及应用程序适宜采用16位宽度总线来访问。由于BOOT程序和操作系统及应用程序支持的宽度总线不同,使得对并行FLASH访问不统一,会增加管理复杂程度并降低访问速度。
发明内容
本申请的实施例提供一种并行FLASH访问系统和方法,用于实现对并行FLASH采用不同位宽总线来访问和数据存储。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种并行闪存FLASH访问系统,包括:处理器单元、可编程逻辑单元和并行FLASH存储单元;其中,在所述处理器单元与所述可编程逻辑单元之间通过本地总线相连,在所述可编程逻辑单元与所述并行FLASH存储单元之间通过受控访问总线相连,所述受控访问总线包括字节配置总线;
在总线访问的地址周期,所述处理器单元通过所述本地总线向所述可编程逻辑单元发送读/写访问地址;
所述并行FLASH存储单元划分两个或以上的存储空间,启动BOOT程序空间按照第一位宽进行存储和访问;操作系统及应用程序空间按照第二位宽进行存储和访问;当所述读/写访问地址位于启动BOOT程序的存储空间时,所述可编程逻辑单元根据所述读/写访问地址通过所述字节配置总线将所述并行FLASH存储单元的总线模式配置为第一位宽,对BOOT程序空间以所述第一位宽进行访问;当所述读/写访问地址位于操作系统及应用程序的存储空间时,所述可编程逻辑单元根据所述读/写访问地址通过所述字节配置总线将所述并行FLASH存储单元的总线模式配置为第二位宽,对操作系统及应用程序空间以所述第二位宽进行访问;
所述可编程逻辑单元将所述并行FLASH存储单元的读/写地址锁存为所述读/写访问地址;
在总线访问的数据周期,所述处理器单元根据所述读/写访问地址按照所述总线模式对所述并行FLASH存储单元进行读/写操作。
第二方面,提供了一种并行闪存FLASH访问方法,包括:
在总线访问的地址周期,处理器单元通过本地总线向可编程逻辑单元发送读/写访问地址;
并行FLASH存储单元划分两个或以上的存储空间,启动BOOT程序空间按照第一位宽进行存储和访问;操作系统及应用程序空间按照第二位宽进行存储和访问;当所述读/写访问地址位于启动BOOT程序的存储空间时,所述可编程逻辑单元根据所述读/写访问地址通过字节配置总线将所述并行FLASH存储单元的总线模式配置为第一位宽,对BOOT程序空间以第一位宽进行访问;当所述读/写访问地址位于操作系统及应用程序的存储空间时,所述可编程逻辑单元根据所述读/写访问地址通过所述字节配置总线将所述并行FLASH存储单元的总线模式配置为第二位宽,对操作系统及应用程序空间以第二位宽进行访问;
所述可编程逻辑单元将所述并行FLASH存储单元的读/写地址锁存为所述读/写访问地址;
在总线访问的数据周期,所述处理器单元根据所述读/写访问地址按照所述总线模式对所述并行FLASH存储单元进行读/写操作。
本申请的实施例提供的并行FLASH访问系统和方法,由于BOOT程序和操作系统及应用程序分别存储在不同地址的存储空间中,通过可编程逻辑单元根据处理器单元发送的访问地址区分是针对BOOT程序的读/写操作,还是针对操作系统及应用程序的读/写操作;据此,可编程逻辑单元将并行FLASH存储单元配置为不同位宽的工作模式,并按照对应位宽来访问并行FLASH存储单元中的对应地址,实现了对并行FLASH采用不同位宽总线来访问。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请的实施例提供的一种并行FLASH访问系统的结构示意图;
图2为本申请的实施例提供的另一种并行FLASH访问系统的结构示意图;
图3为本申请的实施例提供的又一种并行FLASH访问系统的结构示意图;
图4为本申请的实施例提供的一种并行FLASH访问方法的流程示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
本申请实施例所述的各种总线包括但不限于1位总线,例如可以包括8、16、32位总线等等。第二位宽为第一位宽的两倍,例如所述的第一位宽可以是8位,以适应BOOT程序的读/写操作,第二位宽可以是16位,以适应操作系统及应用程序的读/写操作;随着技术发展,第一位宽可以是16位,第二位宽可以是32位等等。地址数据复用总线是指在总线访问的地址周期可以传输地址,在总线访问的数据周期可以传输数据。
实施例1、
本申请实施例公开了一种并行FLASH访问系统。参照图1中所示,该系统包括:处理器单元11、可编程逻辑单元12和并行FLASH存储单元13。处理器单元11与可编程逻辑单元12通过本地总线14相连,可编程逻辑单元12与并行FLASH存储单元13通过受控访问总线15相连。参照图2中所示,受控访问总线15包括字节配置(BYTE_CFG)总线153。
本申请所述的处理器单元11可以是处理器,这里所述的处理器可以是一个中央处理器(Central Processing Unit,CPU),或者是特定集成电路(Application SpecificIntegrated Circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。可编程逻辑单元12可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)或现场可编程门阵列(Field-Programmable Gate Array,FPGA)等可编程处理器。FLASH存储单元可以是FLASH芯片。
在总线访问的地址周期,处理器单元11通过本地总线14向可编程逻辑单元12发送读/写访问地址。
并行FLASH存储单元13划分两个或以上的存储空间,启动BOOT程序空间按照第一位宽进行存储和访问;操作系统及应用程序空间按照第二位宽进行存储和访问。当读/写访问地址位于启动BOOT程序的存储空间时,可编程逻辑单元12根据读/写访问地址通过字节配置总线153将并行FLASH存储单元13的总线模式配置为第一位宽,对BOOT程序空间以所述第一位宽进行访问;当读/写访问地址位于操作系统及应用程序的存储空间时,可编程逻辑单元12根据读/写访问地址通过字节配置总线153将并行FLASH存储单元13的总线模式配置为第二位宽,对操作系统及应用程序空间以所述第二位宽进行访问。
可编程逻辑单元12将并行FLASH存储单元13的读/写地址锁存为读/写访问地址。
在总线访问的数据周期,处理器单元11根据读/写访问地址按照总线模式对并行FLASH存储单元13进行读/写操作。
本申请实施例提供的并行FLASH访问系统,由于BOOT程序和操作系统及应用程序分别存储在不同地址的存储空间中,通过可编程逻辑单元根据处理器单元发送的访问地址区分是针对BOOT程序的读/写操作,还是针对操作系统及应用程序的读/写操作;据此,可编程逻辑单元将并行FLASH存储单元配置为不同位宽的工作模式,并按照对应位宽来访问并行FLASH存储单元中的对应地址,实现了对并行FLASH采用不同位宽总线来访问。
具体的,参照图2中所示:
本地总线14包括第一地址数据复用总线141、第二地址数据复用总线142、第三地址数据复用总线143、第一控制总线(BUS_CTRL)144。受控访问总线15还包括第一受控数据总线151、第二受控数据总线152、第一受控地址总线154、第二受控地址总线155、第二控制总线(BUS_CTRL)156。处理器单元11与并行FLASH存储单元13之间还通过第四地址数据复用总线16相连。
第一地址数据复用总线141与第二地址数据复用总线142的位宽相同且为第一位宽;第一受控数据总线151与第二受控数据总线152的位宽相同且为第一位宽。在总线访问的地址周期,第一受控地址总线151和第三地址数据复用总线143用于传输最低位地址,第四地址数据复用总线16用于传输中间位地址,第二受控地址总线155、第一地址数据复用总线141和第二地址数据复用总线142用于传输高位地址。
在总线访问的地址周期,可编程逻辑单元12将第一地址数据复用总线141和第二地址数据复用总线142中的地址数据锁存至第二受控地址总线155,以便将读/写访问地址的高位地址锁存。
可编程逻辑单元12通过设置字节配置总线153为第一电平,将并行FLASH存储单元13的总线模式配置为第一位宽;可编程逻辑单元12通过设置字节配置总线153为第二电平,将并行FLASH存储单元13的总线模式配置为第二位宽。示例性的,第一电平为低电平,第二电平为高电平。
在总线访问的数据周期,当总线模式为第一位宽时,处理器单元11根据读/写访问地址,通过第二地址数据复用总线142和第一受控数据总线151,按照第一位宽对并行FLASH存储单元13进行数据的读/写操作。当总线模式为第二位宽时,处理器单元11根据读/写访问地址,在总线访问的数据周期,通过第一地址数据复用总线141和第一受控数据总线151,按照第一位宽对并行FLASH存储单元13中的低位字节进行读/写操作;通过第二地址数据复用总线142和第二受控数据总线152,按照第一位宽对并行FLASH存储单元12中的高位字节进行读/写操作,低位字节和高位字节合并为第二位宽。
第二控制总线156最终连接至并行FLASH存储单元13的片选和读/写管脚,可编程逻辑单元12将第一控制总线144中的BUS_CTRL信号传输给第二控制总线156,用于处理器单元11通过第一控制总线144和第二控制总线156中传输的BUS_CTRL信号来控制对并行FLASH存储单元13实现片选和读/写控制。
示例性的,参照图3中所示,可编程逻辑单元12包括数据控制模块121、地址识别模块122、模式控制模块123、地址锁存模块124。假设第一位宽为8位,第二位宽为16位。BOOT程序占用2兆字节的存储空间,操作系统及应用程序占用32兆字节的存储空间。第一地址数据复用总线141为AD[23..16]共8位,第二地址数据复用总线142为AD[31..24]共8位,第三地址数据复用总线143为AD[0],第四地址数据复用总线16为AD[15..1];第一受控数据总线151为DQ[7..0]共8位,第二受控数据总线152为DQ[15..8]共8位,第一受控地址总线154为AD[0],第二受控地址总线155为AD[25..16],即可寻址32兆字节的空间。
设备上电后,在总线访问的地址周期,处理器单元11首先向可编程逻辑单元12发送BOOT程序的访问地址,地址锁存模块124将第二受控地址总线155的高位地址锁存输出。同时,地址识别模块122根据检测到的访问地址位于BOOT程序的存储空间,判断是对BOOT程序进行访问,地址识别模块122输出控制信号给模式控制模块123和数据控制模块121。模式控制模块123通过字节配置(BYTE_CFG)总线153输出低电平信号,将并行FLASH存储单元12配置为8位工作模式,并将第三地址数据复用总线143的AD0输出到第一受控地址总线154的AD0,作为地址的最低位,AD0每加1,指向数据后面的一个字节。
在总线访问的数据周期,如果第一控制总线(BUS_CTRL)144和第二控制总线(BUS_CTRL)156指示为读操作,数据控制模块121将第一受控数据总线151DQ[7..0]上的数据输出到第二地址数据复用总线142AD[31..24];如果为写操作,则将第二地址数据复用总线142AD[31..24]上的数据输出到第一受控数据总线151DQ[7..0]。
在BOOT程序启动后,在总线访问的数据周期,处理器单元11开始读取操作系统及应用程序。可编程逻辑单元12的地址识别模块122根据检测到的访问地址位于操作系统及应用程序的存储空间,判断是对操作系统及应用程序进行访问,地址识别模块122输出控制信号给模式控制单元123和数据控制模块121。模式控制模块通过字节配置(BYTE_CFG)总线153高电平信号,将并行FLASH存储单元12配置为16位工作模式,第三地址数据复用总线143和第一受控地址总线154的AD0无效,第四地址数据复用总线16中的AD[1]为地址的最低位,AD[1]每加1,指向数据后面两个字节。
在总线访问的数据周期,如果第一控制总线(BUS_CTRL)144和第二控制总线(BUS_CTRL)156指示为读操作,数据控制模块121将第一受控数据总线151DQ[7..0]上的数据输出到第一地址数据复用总线141AD[23..16],将第二受控数据总线152DQ[15..8]上的数据输出到第二地址数据复用总线142AD[31..24];如果为写操作,则将第二地址数据复用总线142AD[31..24]上的数据输出到第二受控数据总线152DQ[15..8],第一地址数据复用总线141AD[23..16]上的数据输出到第一受控数据总线151DQ[7..0]。
实施例2、
本申请实施例公开了一种并行FLASH访问方法,应用于上述系统,参照图4中所示,该方法包括:
S101、在总线访问的地址周期,处理器单元通过本地总线向可编程逻辑单元发送读/写访问地址。
S102、并行FLASH存储单元划分两个或以上的存储空间,启动BOOT程序空间按照第一位宽进行存储和访问;操作系统及应用程序空间按照第二位宽进行存储和访问;当读/写访问地址位于启动BOOT程序的存储空间时,可编程逻辑单元根据读/写访问地址通过字节配置总线将并行FLASH存储单元的总线模式配置为第一位宽,对BOOT程序空间以第一位宽进行访问;当读/写访问地址位于操作系统及应用程序的存储空间时,可编程逻辑单元根据读/写访问地址通过字节配置总线将并行FLASH存储单元的总线模式配置为第二位宽,对操作系统及应用程序空间以第二位宽进行访问。
S103、可编程逻辑单元将并行FLASH存储单元的读/写地址锁存为读/写访问地址。
S104、在总线访问的数据周期,处理器单元根据读/写访问地址按照总线模式对并行FLASH存储单元进行读/写操作。
可选的,在一种可能的设计中,通过字节配置总线将并行FLASH存储单元的总线模式配置为第一位宽,包括:可编程逻辑单元通过设置字节配置总线为第一电平,将并行FLASH存储单元的总线模式配置为第一位宽。
可选的,在一种可能的设计中,通过字节配置总线将并行FLASH存储单元的总线模式配置为第二位宽,包括:可编程逻辑单元通过设置字节配置总线为第二电平,将并行FLASH存储单元的总线模式配置为第二位宽。
可选的,在一种可能的设计中,在总线访问的数据周期,处理器单元根据读/写访问地址按照总线模式对并行FLASH存储单元进行读/写操作,包括:当总线模式为第一位宽时,处理器单元根据读/写访问地址,在总线访问的数据周期,通过第二地址数据复用总线和第一受控数据总线,按照第一位宽对并行FLASH存储单元进行读/写操作。
当总线模式为第二位宽时,处理器单元根据读/写访问地址,在总线访问的数据周期,通过第一地址数据复用总线和第一受控数据总线,按照第一位宽对并行FLASH存储单元中的低位字节进行读/写操作;处理器单元根据读/写访问地址,通过第二地址数据复用总线和第二受控数据总线,按照第一位宽对并行FLASH存储单元中的高位字节进行读/写操作。
可选的,在一种可能的设计中,可编程逻辑单元将并行FLASH存储单元的读/写地址锁存为读/写访问地址,包括:在总线访问的地址周期,可编程逻辑单元将第一地址数据复用总线和第二地址数据复用总线中的地址数据锁存至第二受控地址总线,以便将读/写访问地址的高位地址锁存。
可选的,在一种可能的设计中,该方法还包括:处理器单元通过第一控制总线和第二控制总线控制对并行FLASH存储单元的实现片选和读/写控制。
可选的,在一种可能的设计中,第一位宽为8位,第二位宽为16位。
由于本申请实施例中的并行闪存FLASH访问方法可以应用于上述系统,因此,其所能获得的技术效果也可参考上述系统实施例,本申请实施例在此不再赘述。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。