CN114036096B - 一种基于总线接口的读控制器 - Google Patents
一种基于总线接口的读控制器 Download PDFInfo
- Publication number
- CN114036096B CN114036096B CN202111298659.6A CN202111298659A CN114036096B CN 114036096 B CN114036096 B CN 114036096B CN 202111298659 A CN202111298659 A CN 202111298659A CN 114036096 B CN114036096 B CN 114036096B
- Authority
- CN
- China
- Prior art keywords
- data
- read
- address
- preset
- read operation
- 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
- 238000012545 processing Methods 0.000 claims abstract description 96
- 238000000034 method Methods 0.000 claims description 42
- 230000005540 biological transmission Effects 0.000 claims description 32
- 238000013500 data storage Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 26
- 230000001960 triggered effect Effects 0.000 claims description 16
- 238000012546 transfer Methods 0.000 claims description 8
- 230000009471 action Effects 0.000 claims description 7
- 230000002093 peripheral effect Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 235000015429 Mirabilis expansa Nutrition 0.000 description 1
- 244000294411 Mirabilis expansa Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 235000013536 miso Nutrition 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种基于总线接口的读控制器,该读控制器包括系统总线接口模块、访问处理模块、数据缓冲模块、SPI接口模块和启动模块;其中,读控制器还连接有配置模块。启动模块用于接收所述配置模块内置的配置命令和/或所述系统总线传输过来的配置命令,再对SPI接口模块的工作模式进行初始化;系统总线接口模块用于在所述启动模块确定读控制器启动完成后,每当接收到所述系统总线传输过来的一个读操作命令,则从该读操作命令中解析出有效地址并输出至所述访问处理模块;所述访问处理模块用于根据所述系统总线接口模块先后接收到的两个读操作命令对应的有效地址的连续性,触发所述数据存储器内的数据传输至所述数据缓冲模块。
Description
技术领域
本发明涉及SPI接口的数据传输的技术领域,尤其涉及一种基于总线接口的读控制器,具体涉及到基于SPI接口的flash控制器。
背景技术
在微控制器单元(Micro Control Unit,MCU)中,大多数情况下都需要一个非易失存储器来存储软件代码及数据。Embeded flash(嵌入式闪存)/external nor flash(外设的nor闪存)/nand flash(nand闪存)为较常见的非易失存储器形式,nor flash的地址线和数据线是分开的,nand flash的地址线和数据线一般是共用的,考虑到传输效率,norflash可能用来作为中央处理器(Central Processing Unit,CPU)的代码运行空间,这样不必再把代码读到系统RAM中。其中,大部分MCU中,中央处理器都是通过SPI接口连接flash。
通常情况下,标准SPI传输模式配置下的数据传输速率比较慢,具体在微控制器单元(Micro Control Unit,MCU)中的中央处理器(Central Processing Unit,CPU),对非易失性存储器(比如flash,作为SPI接口的外挂存储器)访问的过程中,每访问一个地址都需要CPU进行干预且需要进行跨地址段访问数据,这样一来,当SPI接口接收到的数据读写指令增加后,会花费大部分时间在与CPU的交互上;同时,非易失性存储器,比如flash,受限于封装成本,不可能将其IO引脚设计得特别多,所以大多数flash在现有引脚资源的基础上无法利用多线传输模式来达到flash的最大传输速度。
因此,随着芯片生产工艺的不断提高,芯片的内核时钟的运行频率不断增加,非易失性存储器的访问速率难以满足系统高频时钟实时读取的需求,也导致系统启动变慢,响应慢等问题。
发明内容
针对以上问题,本发明的目的在于提供一种基于总线接口的读控制器,利用专门供系统启动的模块和专门初始化SPI接口的模块,在SPI接口模块相应的工作模式下,支持启动所述读控制器从外设的数据存储器连续读取数据,提高从所述数据存储器内读取数据的速度。具体的技术方案如下:
一种基于总线接口的读控制器,读控制器通过系统总线与CPU耦接,读控制器通过SPI总线与数据存储器耦接;读控制器包括系统总线接口模块、访问处理模块、数据缓冲模块、SPI接口模块和启动模块;其中,读控制器的内部还包括配置模块,或读控制器的外部连接有配置模块;启动模块,用于接收所述配置模块内置的配置命令和/或所述系统总线传输过来的配置命令,再利用所接收的配置命令对SPI接口模块的工作模式进行初始化,以产生预设组合工作模式所需的参数,并触发所述系统总线发送读操作命令;系统总线接口模块,连接在所述系统总线和所述访问处理模块之间,用于在所述启动模块确定读控制器启动完成后,每当接收到所述系统总线传输过来的一个读操作命令,则从该读操作命令中解析出有效地址,再将解析出的有效地址输出至所述访问处理模块;所述访问处理模块,用于根据预设的两个读操作命令对应的有效地址的连续性,触发所述数据存储器内的数据传输至所述数据缓冲模块;其中,预设的两个读操作命令是所述系统总线接口模块先后接收到的两个读操作命令;触发的动作是在预设组合工作模式下进行。
进一步地,所述根据预设的两个读操作命令对应的有效地址的连续性,触发所述数据存储器内的数据传输至所述数据缓冲模块的方法包括当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至所述数据缓冲模块,同时触发所述数据缓冲模块内缓存的数据传输至所述系统总线;当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址不是连续时,中止所述数据存储器向所述数据缓冲模块传输数据,并清空所述数据缓冲模块内缓存的数据,同时,将下一个读操作命令更新为所述当前一个读操作命令,直至所述预设的两个读操作命令对应的有效地址是连续时,控制所述数据存储器内的数据传输至所述数据缓冲模块;其中,所述预设的两个读操作命令包括当前一个读操作命令和下一个读操作命令,当前一个读操作命令是所述系统总线接口模块当前一次接收到的一个读操作命令,下一个读操作命令是所述系统总线接口模块下一次接收到的一个读操作命令。
进一步地,若所述当前一个读操作命令在所述系统总线接口模块内对应解析出的尾地址与所述下一个读操作命令在所述系统总线接口模块内对应解析出的首地址在内存空间中的存储顺序是相邻的,则确定所述预设的两个读操作命令对应的有效地址是连续。
进一步地,所述系统总线接口模块用于将接收到的第一个读操作命令对应解析出的有效地址配置为访问起始地址;所述访问处理模块,还用于以所述访问起始地址为起始写缓存有效地址,每当利用地址偏移的方式为所述数据缓冲模块配置一个写缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内对应地址处的数据传输至所述数据缓冲模块中的最新配置的写缓存有效地址处。
进一步地,所述根据所述预设的两个读操作命令对应的有效地址的连续性,触发所述数据存储器内的数据传输至所述数据缓冲模块的方法还包括在所述预设的两个读操作命令对应的有效地址是连续的情况下,若检测到所述数据缓冲模块内的数据存储空间处于写满状态,则触发所述数据存储器暂停向所述数据缓冲模块传输数据,并将当前配置出的写缓存有效地址记为中止传输地址,直到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块内缓存的数据传输至所述系统总线以使得所述数据缓冲模块腾出空的存储空间,同时以所述中止传输地址为所述起始写缓存有效地址,利用地址偏移的方式为所述数据缓冲模块配置新的写缓存有效地址,并触发所述数据存储器内存储的数据传输至所述数据缓冲模块中。
进一步地,所述以所述访问起始地址为起始写缓存有效地址,每当利用地址偏移的方式为所述数据缓冲模块配置一个写缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内对应地址处的数据传输至所述数据缓冲模块中的最新配置的写缓存有效地址处的方式包括将所述访问起始地址设置为所述数据缓冲模块内的起始写缓存有效地址,并将所述访问起始地址对应的所述第一个读操作命令设置为所述当前一个读操作命令,再在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至所述起始写缓存有效地址;同时对所述起始写缓存有效地址进行加一处理,为所述数据缓冲模块配置当前一个写缓存有效地址,再在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至当前一个写缓存有效地址;每当对所述当前一个写缓存有效地址进行加一处理,则为所述数据缓冲模块配置下一个写缓存有效地址,再将下一个写缓存有效地址更新为所述当前一个写缓存有效地址,如此重复,直至所述数据缓冲模块内的数据存储空间处于写满状态;其中,前述加一处理所产生的地址值变化量是属于所述数据缓冲模块内允许的地址偏移量;在硬件实现前述加一处理时,使用计数寄存器进行计数以维持所述写缓存有效地址的加一处理对应的命令自动执行,该计数寄存器是设计在所述数据缓冲模块内或所述访问处理模块内。
进一步地,当所述预设的两个读操作命令对应的有效地址不是连续时,在所述预设的两个读操作命令对应的有效地址中,所述访问处理模块将最新获得的一个有效地址更新为所述起始写缓存有效地址;其中,所述预设的两个读操作命令对应的有效地址不是连续时,表示所述预设的两个读操作命令是属于不同的代码分支,且都来源于所述系统总线。
进一步地,所述启动模块,用于利用所述配置模块内置的配置命令传输过来的配置命令和/或所述系统总线传输过来的配置命令,将所述SPI接口模块的工作模式配置为预设组合工作模式,以实现对SPI接口模块的工作模式进行初始化,在完成前述的初始化后,确定所述读控制器启动完成,并反馈给所述系统总线;所述访问处理模块,用于以所述访问起始地址为起始读缓存有效地址,每当利用地址偏移的方式为所述数据存储器配置一个读缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器读取数据;其中,读缓存有效地址与所述写缓存有效地址在所述预设组合工作模式下产生的地址偏移量是相等。
进一步地,所述访问处理模块,还用于根据所述预设的两个读操作命令对应的有效地址的连续性,为所述数据存储器更新所述起始读缓存有效地址;所述访问处理模块,还用于根据所述预设的两个读操作命令对应的有效地址的连续性,触发所述数据缓冲模块按照所述预设组合工作模式从数据存储器内读取数据。
进一步地,所述根据所述预设的两个读操作命令对应的有效地址的连续性,为所述数据存储器更新所述起始读缓存有效地址的方法包括当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址不是连续时,在所述预设的两个读操作命令对应的有效地址中,将最新获得的一个有效地址更新为所述起始读缓存有效地址;当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,继续以所述访问起始地址为起始读缓存有效地址,利用地址偏移的方式为所述数据存储器配置所述读缓存有效地址,不对所述起始读缓存有效地址进行更新;其中,所述读缓存有效地址与所述写缓存有效地址保持相等。
进一步地,所述根据所述预设的两个读操作命令对应的有效地址的连续性,触发所述数据缓冲模块按照所述预设组合工作模式从数据存储器内读取数据的方法包括当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式读取出所述数据存储器内的最新配置的读缓存有效地址处的数据;当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址不是连续时,控制所述数据缓冲模块停止从所述数据存储器读取数据,直至检测到所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,再触发所述数据缓冲模块按照所述预设组合工作模式读取出所述数据存储器内的最新配置的读缓存有效地址处的数据。
进一步地,所述以所述访问起始地址为起始读缓存有效地址,每当利用地址偏移的方式为所述数据存储器配置一个读缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器读取数据的方式包括将所述访问起始地址设置为所述数据存储器内的起始读缓存有效地址,当所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器的起始读缓存有效地址处读取数据,同时对所述起始读缓存有效地址进行加一处理,为所述数据存储器配置当前一个读缓存有效地址,再在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器的所述当前一个读缓存有效地址处读取数据;每当对所述当前一个读缓存有效地址进行加一处理,则为所述数据存储器配置下一个读缓存有效地址,再将下一个读缓存有效地址更新为当前一个读缓存有效地址,如此重复,直至所述数据缓冲模块内的数据存储空间处于写满状态;在硬件实现前述加一处理的过程中,使用计数寄存器进行计数以维持所述读缓存有效地址的加一处理对应的命令自动执行,该计数寄存器是设计在所述数据存储器内或所述访问处理模块内。
进一步地,所述数据存储器是flash存储器;所述预设组合工作模式的工作方式包括首先将所述flash存储器配置为多线模式;在所述系统总线接口模块获得读操作命令并对应解析出有效地址时,所述SPI接口模块先向所述flash存储器发送预设命令码以配置所述flash存储器的时序触发模式,再开始触发所述访问处理模块向所述flash存储器发送所述起始读缓存有效地址,然后向所述flash存储器发送连续读命令序列,以配置出所述数据缓冲模块连续访问所述flash存储器的工作模式;在所述SPI接口模块向所述flash存储器发送完所述连续读命令序列后,再经过一个预设延时周期,才允许所述flash存储器内的数据开始传输至所述数据缓冲模块;其中,所述启动模块为所述SPI接口模块提供预设命令码、连续读命令序列以及预设延时周期的参数,实现利用所接收的配置命令对所述SPI接口模块的工作模式进行初始化。
进一步地,所述配置模块是一次性可编程存储器或ROM,其中,所述配置命令是由待烧录入所述flash存储器的程序代码段组成,使得所述flash存储器成为程序运行区;所述flash存储器为Nor flash存储器,所述读控制器通过控制信号线、数据信号线和地址信号线与Nor flash存储器连接;其中,所述读操作命令的长度小于或等于32位,所述flash存储器与所述读控制器之间传输的数据的长度也是小于或等于32比特位。
进一步地,在所述flash存储器往所述数据缓冲模块传输数据时,所述flash存储器以字节为单位进行数据分批传输,其中,每一批数据的存储容量是第一预设数量个字节,所述数据缓冲模块内部的数据存储空间是RAM;所述数据缓冲模块往所述系统总线传输数据时,所述数据缓冲模块是以字为单位进行数据分批传输,其中,每一批数据的存储容量是第二预设数量个字,每个字的长度在所述读控制器内被配置为32比特位,使得所述数据缓冲模块每往所述系统总线传输一批数据,则控制所述flash存储器往所述数据缓冲模块传输数据的次数是第二预设数量与第一预设数量的比值的四倍;当所述数据缓冲模块每往所述系统总线传输第三预设数量批数据后,确定所述读控制器结束执行所述系统总线传输过来的一个读操作命令,其中,该读操作命令被解析出的有效地址等效于存储容量为第三预设数量与第二预设数量的乘积个字的数据的存储地址,使得读取的数据的长度等于32比特位时,被解析出的有效地址的数量等于第三预设数量与第二预设数量的乘积。
进一步地,所述SPI接口模块还用于接收来自所述系统总线的写操作命令,再按照SPI工作模式下的预定义时序,将写操作命令转换成所述flash存储器支持的命令格式,实现对所述SPI接口模块外设的存储器的写操作,并向所述系统总线反馈当前对所述flash存储器写操作的执行状态,以使得SPI工作模式下的预定义时序成为对所述flash存储器的有效写时序;其中,所述flash存储器支持的命令格式包括写时序对应的地址、数据和控制信号。
与现有技术相比,本发明的有益技术效果在于,本发明公开的访问处理模块在所述启动模块的启动作用下,将系统总线接口模块解析出的起始地址分别配置为对应数据存储空间内的起始偏移地址,再利用解析得到的有效地址在SPI接口模块初始化的工作模式下形成连续传输的特征,使得读缓存有效地址和写缓存有效地址都能跟随所述数据缓冲模块与所述数据存储器之间的数据交互需求而自动执行偏移,支持启动高速读取SPI接口的外设存储器,不需要CPU的频繁干预,让MCU摆脱了一定在其内部嵌入flash存储器的局限,提高所述读控制器访问所述数据存储器的速率。
附图说明
图1为本发明公开一种基于总线接口的读控制器的模块结构示意图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明。以下实施方式中所涉及到的各单元模块均为逻辑电路,一个逻辑电路可以是一个物理单元、也可以是由多个逻辑器件按照一定的读写时序和信号逻辑变化组合而成的状态机,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本发明实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本发明实施方式中不存在其它的单元。
在现有技术中,MCU中的CPU通常无法直接访问MCU所处的片上系统中的flash存储器,而是通过flash控制器来访问flash存储器。flash控制器将CPU在系统总线上发送的操作指令转换成flash存储器特定的接口时序,来实现对flash存储器的操作。
参考图1,本发明实施例公开一种基于总线接口的读控制器,读控制器通过系统总线与CPU耦接,读控制器通过SPI总线与数据存储器耦接,表明读控制器与CPU之间存在用于信号交互的数据通道,控制器与数据存储器之间存在用于信号交互的数据通道,无论是系统总线还是SPI总线,都可以划分为数据总线、地址总线和控制总线,分别在相应的功能部件之间进行传输数据、数据地址和控制信号。其中,CPU通过地址总线、数据总线和控制总线与读控制器双向连接,读控制器至少通过控制信号线和数据信号线与flash存储器连接。
如图1所示,所述读控制器包括系统总线接口模块、访问处理模块、数据缓冲模块、SPI接口模块和启动模块,作为所述读控制器访问所述数据存储器的必要组成部件,以保证必要的读取速度;在本实施例中,数据存储器是一种非易失存储器,该数据存储器包括但不限于Nor flash和Nand flash。基于设计成本考虑,可选地,所述读控制器的内部还包括配置模块,或所述读控制器的外部连接有配置模块,以配置所述读控制器的相关读操作模式。在本实施例中,启动模块,用于接收所述配置模块内置的配置命令和/或所述系统总线传输过来的配置命令,则所述启动模块可以自主决定所述读控制器是从所述配置模块内配置的相关配置命令启动还是从CPU传输的配置命令启动,这一启动的过程可以理解为利用所接收的配置命令对SPI接口模块的工作模式进行初始化,以触发所述系统总线发送读操作命令,即在对SPI接口模块的工作模式初始化之后,可以向CPU请求发送读操作命令,则触发所述系统总线发送读操作命令。所述配置模块是ROM/EFUSE时,通过改变ROM/EFUSE内置的配置命令可以实现不同类型的外设存储的自启动,本实施例中主要是用于对SPI接口的外设存储器的读取操作的自动启动,丰富所述读控制器的电路的使用场景。
在一些实施例中,利用所接收的配置命令对SPI接口模块的工作模式进行初始化后,以产生预设组合工作模式所需的参数,包括但不限于延时参数、命令序列的参数、SPI接口的传输模式种类及数量等,可以确定所述数据存储器在作为程序运行空间时所需配置的行为模式(即对应执行的代码分支);在一些实施例中,对SPI接口模块的工作模式进行初始化后,可以确定所述读控制器的SPI接口模块的接口时序,包括设置好读操作的源地址、读操作的目的地址和读操作的搬运方向。其中,触发所述系统总线发送读操作命令也是形成预设组合工作模式的必要条件,以加速所述读控制器的读取速度。
系统总线接口模块,连接在所述系统总线和所述访问处理模块之间,用于在所述启动模块确定读控制器启动完成后,每当接收到所述系统总线传输过来的一个读操作命令,则对该读操作命令进行解析,并将解析得到的读控制指令及其对应的有效地址输出至所述访问处理模块,该有效地址与该读操作命令相对应,使得该有效地址处返回所述系统总线的数据与读操作命令是相对应。具体地,所述系统总线接口模块还用于将第一个读操作命令对应解析出的有效地址配置为访问起始地址,以便于在该访问起始地址的基础上,通过在所述读控制器内设计计数器,来从该访问起始地址开始去遍历所述数据存储器、所述数据缓冲模块或其他具备数据存储功能的存储空间的连续地址单元,计数器是按照初始化出的SPI接口模块的接口时序加一计数,相应地在硬件中是自动访问下一个地址,则相对于所述访问起始地址发生地址偏移操作,因而在本实施例中属于自动加一计数并自动访问相邻的一个地址单元的过程,但不依靠CPU的软件干预;在一些实施过程中,前述的访问起始地址可以被自动更新,具体的更新时间是根据获取的读操作命令及其解析的有效地址信息相关。
所述访问处理模块,用于根据预设的两个读操作命令对应的有效地址的连续性,触发所述数据存储器内的数据传输至所述数据缓冲模块,即通过判断预设的两个读操作命令在所述系统总线接口模块内解析出的有效地址的连续性(在存储空间中是否为相邻的位置关系),来控制所述数据存储器向所述数据缓冲模块传输数据的动作,也可以将预设的两个读操作命令对应的有效地址的连续性理解为所述系统总线接口模块先后接收到的两个读操作命令的连续性;其中,预设的两个读操作命令是所述系统总线接口模块先后接收到的两个读操作命令;每个读操作命令对应的有效地址是该读操作命令在系统总线接口模块中解析出来的地址,包括数据缓冲模块内的地址和数据存储器内的地址。需要说明的是,所述数据存储器向所述数据缓冲模块传输数据的过程,需要先将相关功能寄存器的片选信号或片选信号置为低电平而起到触发作用;其中,所述系统总线接口模块解析输出的有效地址是代表所述系统总线传输过来相应的读操作命令实际定位的内存地址;需要说明的是,所述读操作命令都是由连续的字节序列组成,对应解析出的有效地址是由一个或一个以上地址段组成,组成所述有效地址的地址段在存储空间内的顺序是连续的,以使得所述读操作命令中解析出的地址段与所述数据存储器传输至所述数据缓冲模块内的数据是一一对应,也意味着所述有效地址中存在相邻的两个地址段;在一些实施例中,同一个读操作命令对应解析出的多个有效地址连续时,表示该读操作命令实际定位的地址单元在内存空间中的存储顺序是连续的,以便于所述数据缓冲模块从所述数据存储器内连续读取数据,所述读控制器连续访问所述数据存储器;在此基础上,所述预设的两个读操作命令对应的有效地址是连续时,才触发所述数据存储器内的数据传输至所述数据缓冲模块,便于在所述系统总线接口模块先后接收到的两个读操作命令对应的有效地址是连续时,确定出相邻的两个读操作命令,从而让外部连续访问对应解析出的有效地址,并在所述数据存储器或所述数据缓冲模块内命中的对应的数据,实现所述读控制器连续访问所述数据存储器,从而所述系统总线接口模块实际解析出的有效地址的连续与否能够影响所述数据存储器的读取地址的连续性,直接影响数据读取的连续性和中断机率。
综上,本发明公开的访问处理模块在所述启动模块的启动作用下,将系统总线接口模块解析出的起始地址分别配置为对应数据存储空间内的起始偏移地址,再利用解析得到的有效地址在SPI接口模块初始化的工作模式下形成连续传输的特征,使得读缓存有效地址和写缓存有效地址都能跟随所述数据缓冲模块与所述数据存储器之间的数据交互需求而自动执行偏移,支持启动高速读取SPI接口的外设存储器,不需要CPU的频繁干预,让MCU摆脱了一定在其内部嵌入flash存储器的局限,提高所述读控制器访问所述数据存储器的速率,同时可以满足SPI接口的多种传输模式的读取需求,从而加快所述读控制器的启动速度,提高相关读操作的响应速度。
作为一种实施例,所述根据预设的两个读操作命令对应的有效地址的连续性,触发所述数据存储器内的数据传输至所述数据缓冲模块的方法包括:当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,确定当前一个读操作命令适用于连续访问所述数据缓冲模块内的数据,并触发所述数据存储器内的数据传输至所述数据缓冲模块,使得当前一个读操作命令对应的有效地址定位到所述数据缓冲模块的相应存储地址;同时触发所述数据缓冲模块内缓存的数据传输至所述系统总线。
具体地,所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,表示依据所述系统总线先后传输过来的两个读操作命令是可以组成连续的命令序列,而且,基于存储顺序,这两个读操作命令在所述系统总线接口模块内解析出的有效地址在同一存储空间内是存储顺序连续的两个地址,也表示该读操作命令所需读取的数据在所述数据缓冲模块内存在目标寻址地址,则所述访问处理模块触发所述数据存储器内对应寻址地址处存储的数据传输至所述数据缓冲模块中,具体的触发方式包括拉低所述访问处理模块的片选信号、拉低所述数据缓冲模块的读使能信号、和/或拉低所述数据存储器的写使能信号,以维持所述数据存储器内存储的数据序列传输至所述数据缓冲模块;同时,所述数据缓冲模块内存储的数据也会传输到所述系统总线上。
需要说明的是,所述预设的两个读操作命令包括当前一个读操作命令和下一个读操作命令,当前一个读操作命令是所述系统总线接口模块当前一次接收到的一个读操作命令,上一个读操作命令是所述系统总线接口模块上一次接收到的一个读操作命令,下一个读操作命令是所述系统总线接口模块下一次接收到的一个读操作命令。
当所述访问处理模块判断到所述预设的两个读操作命令对应的有效地址不是连续时,确定当前一个读操作命令不适用于连续访问所述数据缓冲模块内的数据,并表示依据所述系统总线当前传输过来的读操作命令解析并经过自动偏移而得到的有效地址没有命中所述数据缓冲模块内部的目标寻址地址,该目标寻址地址能够与下一个读操作命令对应的有效地址存在一段地址段的间隔,则所述访问处理模块中止所述数据存储器向所述数据缓冲模块传输数据,只是暂时中断所述数据存储器向所述数据缓冲模块写入数据,具体的中止方式包括拉高所述访问处理模块的片选信号、拉高所述数据缓冲模块的读使能信号、和/或拉高所述数据存储器的写使能信号,使得相关的片选信号由低电平翻转为高电平,禁止所述数据存储器内存储的数据序列传输至所述数据缓冲模块;此时,所述系统总线接口模块仍保持接收新的读操作命令并解析出新的读控制指令及其对应的有效地址,而所述数据缓冲模块内存储的数据被视为无效数据,则清空所述数据缓冲模块内当前缓存的数据。
在一种实施例中,所述系统总线接口模块接收到下一个读操作命令并解析出对应的有效地址时,判断当前一个读操作命令对应的有效地址与下一个读操作命令对应的有效地址是否为连续,是则触发所述数据存储器内对应地址处存储的数据传输至所述数据缓冲模块中,否则清空所述数据缓冲模块内当前缓存的数据,并继续等待后续一次(即下下一次,相对于下一次而言,在时间上相对延迟的一次)接收到的读操作命令在所述系统总线接口模块内解析出的有效地址与所述下一个读操作命令对应的有效地址是连续的,需要说明的是,在这一等待过程中,每次进行有效地址连续性判断之前,先将下一个读操作命令更新为当前一个读操作命令,并将下一个读操作命令对应的有效地址更新为当前一个读操作命令对应的有效地址;另外,所述系统总线接口模块后续接收到的一个读操作命令是支持更新为当前一个读操作命令,当前一个读操作命令是支持更新为上一个读操作命令;从而形成所述预设的两个读操作命令,进而才判断所述预设的两个读操作命令对应的有效地址是不是连续。
在上述实施例中,若所述当前一个读操作命令在所述系统总线接口模块内对应解析出的尾地址与所述下一个读操作命令在所述系统总线接口模块内对应解析出的首地址在内存空间中的存储顺序是相邻的,则确定所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续;其中,所述当前一个读操作命令在所述系统总线接口模块内对应解析出的尾地址可以是对应解析出的唯一一个有效地址,也可以是对应解析出的多个有效地址中的最后一个有效地址,即所述当前一个读操作命令对应解析出来一个地址段,该地址段是由多个有效地址组成,本实施例将最后传输过来的一个有效地址设计为前述的尾地址,即前述的最后一个有效地址。同理地,所述下一个读操作命令在所述系统总线接口模块内对应解析出的首地址,可以是对应解析出的唯一一个有效地址,也可以是对应解析出的多个有效地址中的第一个有效地址,即下一个读操作命令对应解析出来一个地址段,该地址段是由多个有效地址组成,本实施例将最先传输过来的一个有效地址设计为前述的首地址,即前述的第一个有效地址。其中,每一个读操作命令都是字节连续的命令序列,支持当前一个读操作命令对应解析出的尾地址与下一个读操作命令对应解析出的首地址之间的存储顺序的判断。从而限定形成当前一个读操作命令和下一个读操作命令在时间上的传输顺序,以及它们对应解析出的有效地址在存储空间上的排列顺序,以便于对至少两个读操作命令的连续性进行有效的判断,获得在存储空间内连续排列的命令序列,并在此基础上再触发所述数据存储器内的数据传输至所述数据缓冲模块。
综上,本实施例根据当前传输过来的一个读操作命令对应的连续性,确定其是否适用于访问所述数据缓冲模块内的数据,从而选择从所述数据存储器读取数据和禁止从所述数据存储器内读取数据,确保所述读控制器依据所述读操作命令从所述数据存储器内连续读取出的数据,是能够连续被所述数据缓冲模块有效接收的,使得所述数据存储器能够自动向所述数据缓冲模块连续地传输数据,减少CPU的交互操作和跨地址段读取的频率。
作为一种实施例,所述访问处理模块,还用于以所述访问起始地址为起始写缓存有效地址,每当利用地址偏移的方式为所述数据缓冲模块配置一个写缓存有效地址,则在所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内对应地址处的数据传输至所述数据缓冲模块中的最新配置的写缓存有效地址处。在所述访问处理模块中,以所述访问起始地址为起始写缓存有效地址,可以作为写地址指针,并将所述访问起始地址对应的所述第一个读操作命令设置为所述当前一个读操作命令,在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至所述起始写缓存有效地址,以使得所述读操作命令对应的有效地址所包括的子地址与所述数据存储器内需要传输至所述数据缓冲模块内的数据是一一对应的,并确定所述读操作命令对应解析出的有效地址是能够命中所述数据存储器内的相应数据。具体地,所述SPI接口模块规定的接口时序的控制下,确定好所述起始写缓存有效地址,可以使用计数器计数的方式,驱动所述起始写缓存有效地址开始进行地址偏移,每自动计数一次,即计数器自动累加一次,则所述访问处理模块控制所述数据缓冲模块或所述数据存储器按顺序发生一次地址偏移操作,形成前述的地址偏移的方式,从而为所述数据缓冲模块配置一个写缓存有效地址;等效地,写地址指针从所述数据缓冲模块内部的数据存储空间的第一个地址单元开始,通过自动加一的方式,顺序地指向每一个目标地址单元,其中,每一个目标地址单元对应配置为所述写缓存有效地址,用于存储传输至所述数据缓冲模块的对应的数据,即一个目标地址单元命中所述数据存储器内的数据。因此,每发生一次地址偏移,只要判断出所述预设的两个读操作命令对应的有效地址是连续时,则触发所述数据存储器内的数据传输至所述数据缓冲模块内最新配置出的写缓存有效地址处,可以是实现按照规定的接口时序分批次传输并命中的,同时记录当前传输的数据对应的写缓存有效地址。同时,所述读控制器为了响应所述读操作命令的请求,需控制所述数据缓冲模块内存储的数据传输到所述系统总线上,具体是按照所述系统总线接口模块规定的接口时序进行分批次地传输。同时,所述系统总线接口模块仍保持接收所述系统总线传输过来的新的读命令操作。从而在所述数据缓冲模块内为先后来源于所述数据存储器的数据,提供位置彼此相邻的写缓存有效地址,以实现配置出自动适应每个数据的传输要求的写缓存有效地址,保证数据的连续传输,提高所述数据缓冲模块读取数据的速率。
优选地,所述访问处理模块,用于在检测到所述预设的两个读操作命令对应的有效地址是连续的情况下,表示依据所述系统总线当前传输过来的一个读操作命令适用于访问所述数据缓冲模块内部对应的存储地址,也表示该读操作命令所需读取的数据命中所述数据缓冲模块内对应的存储地址,然而,若检测到所述数据缓冲模块内的数据存储空间处于写满状态,即所述数据缓冲模块已经被所述数据存储器写满;此时配置出的写缓存有效地址可能是所述数据缓冲模块内的数据存储空间内的一个地址,但由于所述数据缓冲模块内的数据存储空间已经被写满,所以无法继续往该数据存储空间写入新的地址,否则会出现溢出现象,导致本该传输回所述系统总线的数据出现丢失,因此,本实施例中的所述访问处理模块控制所述数据存储器暂停向所述数据缓冲模块传输数据,同时记录下当前配置出的写缓存有效地址,并记为中止传输地址,以便于所述读控制器后续从所述中止传输地址开始继续在所述数据缓冲模块内配置新的写缓存有效地址。其中,控制所述数据存储器暂停向所述数据缓冲模块传输数据的具体方式包括拉高所述访问处理模块的片选信号、拉高所述数据缓冲模块的读使能信号、和/或拉高所述数据存储器的写使能信号,使得相关的片选信号由低电平翻转为高电平,禁止所述数据存储器内存储的数据序列传输至所述数据缓冲模块,此时所述数据缓冲模块内存储的数据仍属于有效数据,不能清空所述数据缓冲模块内当前缓存的数据。然后,所述访问处理模块判断所述下一个读操作命令对应的有效地址与所述当前一个读操作命令对应的有效地址是否为连续,是则触发所述数据缓冲模块内缓存的数据传输至所述系统总线,以使得所述数据缓冲模块腾出空的存储空间,即让所述数据缓冲模块变为非满状态,同时以所述中止传输地址为所述起始写缓存有效地址,利用地址偏移的方式为所述数据缓冲模块配置新的写缓存有效地址,则包括所述起始写缓存有效地址在内的新配置的写缓存有效地址都有可能被更新为所述最新配置的写缓存有效地址;同时触发所述数据存储器内对应地址处存储的数据传输至所述数据缓冲模块中的最新配置的写缓存有效地址处,此时,所述最新配置出的写缓存有效地址是所述数据缓冲模块处于写满状态下记录的写缓存有效地址,没有随着所述下一个读操作命令的到来而被更新,即所述下一个读操作命令对应的有效地址没有更新为写缓存有效地址,因此从该最新配置出的写缓存有效地址开始,每当利用地址偏移的方式为所述数据缓冲模块配置一个新的写缓存有效地址,则在所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内对应地址处的数据传输至所述数据缓冲模块中的最新配置的写缓存有效地址处,以保证所述数据存储器内的数据写入所述数据缓冲模块的连续性,至少保证先后传输的数据在所述数据缓冲模块内对应存储的目标地址的连续性。
另一方面,若判断到所述下一个读操作命令对应的有效地址与所述当前一个读操作命令对应的有效地址不是连续,则清空所述数据缓冲模块内当前缓存的数据,并继续等待后续一次(即下一次,相对于当前一次而言,在时间上相对延迟的一次)接收到的读操作命令在所述系统总线接口模块内解析出的有效地址与当前一个读操作命令对应的有效地址是变为连续,需要说明的是,在这一等待过程中,每次进行有效地址连续性判断之前,先将下一个读操作命令更新为当前一个读操作命令,并将下一个读操作命令对应的有效地址更新为当前一个读操作命令对应的有效地址,从而形成所述预设的两个读操作命令,进而才判断所述预设的两个读操作命令对应的有效地址是不是连续。
作为一种实施例,所述以所述访问起始地址为起始写缓存有效地址,每当利用地址偏移的方式为所述数据缓冲模块配置一个写缓存有效地址,则在所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内对应地址处的数据传输至所述数据缓冲模块中的最新配置的写缓存有效地址处的方式包括:
首先将所述访问起始地址设置为所述数据缓冲模块内的起始写缓存有效地址,并将所述访问起始地址对应的所述第一个读操作命令设置为所述当前一个读操作命令,则在所述系统总线接口模块在接收到所述下一个读操作命令时,所述下一个读操作命令相对于所述当前一个读操作命令而言是在后接收到的一个读操作命令,则可以使用所述预设的两个读操作命令去判断其对应解析出的有效地址是否为连续;当判断到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至所述起始写缓存有效地址;同时,对所述起始写缓存有效地址进行加一处理,为所述数据缓冲模块配置当前一个写缓存有效地址,若将所述起始写缓存有效地址等效配置为指向所述数据缓冲模块内的存储地址的一个地址指针,则在此基础上等效于对所述起始写缓存有效地址对应的地址指针加一,使得所述新的当前一个写缓存有效地址自动指向所述数据缓冲模块内与所述起始写缓存有效地址相邻的一个地址位置,即让所述起始写缓存有效地址偏移一个地址值而得到一个新的写缓存有效地址,则在所述数据缓冲模块内自动配置得到供所述数据存储器写入数据的新的一个写缓存有效地址,相对于所述起始写缓存有效地址而言,成为下一个写缓存有效地址,支持更新为所述当前一个写缓存有效地址。需要补充的是,前述的写缓存有效地址可以以地址指针的形式存在于所述读控制器内的控制指令中。
在此基础上,每当对所述当前一个写缓存有效地址进行加一处理,则为所述数据缓冲模块配置出下一个写缓存有效地址,即通过地址值自动加一的方式或按照固定的接口时序触发加一的方式,将原来获得的所述当前一个写缓存有效地址偏移为下一个写缓存有效地址,判断到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至所述当前一个写缓存有效地址;其中,同一时间获得的当前一个写缓存有效地址和下一个写缓存有效地址分别指向所述数据缓冲模块内的不同存储地址。然后将下一个写缓存有效地址更新为所述当前一个写缓存有效地址,再重复执行前述的写缓存有效地址的地址偏移方式及传输数据至所述写缓存有效地址的方式,如此重复,直至所述数据缓冲模块内的数据存储空间处于写满状态。其中,前述加一处理所产生的地址值变化量是属于所述数据缓冲模块内允许的地址偏移量,是针对所述访问起始地址的地址偏移量;在硬件实现前述加一处理时,使用计数寄存器进行计数以维持所述写缓存有效地址的加一处理对应的命令自动执行,不允许越出所述数据缓冲模块内的数据存储空间。可选地,该计数寄存器是设计在所述数据缓冲模块内或所述访问处理模块内,便于触发所述数据缓冲模块通过所述SPI接口模块对所述数据存储器自动读取。其中,前述的计数寄存器可以在相关触发信号的作用下自行加一计数,改变前述的写缓存有效地址的地址值以指引数据传输至所述数据缓冲模块的连续地址段上。
值得注意的是,以所述地址指针顺序地指向所述数据缓冲模块时,可以从其内部的数据存储空间的第一个地址单元开始遍历,顺序遍历到指向其最后一个地址单元,然后又回到指向第一个地址单元,可以理解为适应写满状态的遍历动作,并且所述数据缓冲模块向所述访问处理模块反馈一个写满标志信号。
需要说明的是,若在当前的时序状态下所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至所述下一个写缓存有效地址,其中,所述预设的两个读操作命令只要是所述系统总线接口模块先后接收到的两个读操作命令即可,这两个读操作命令可以是不变的,也可以是按照系统总线接口的时序传输过来的新的读操作命令。
综上,本实施例一方面通过地址自动偏移的的方式来配置出最新的写缓存有效地址,另一方面利用所述预设的两个读操作命令对应的有效地址的连续性的判断结果来触发数据由所述数据存储器传输至所述写缓存有效地址,保证所述数据缓冲模块实时地连续地访问所述数据存储器,最大程度降低对CPU的软件程序的协助。
在上述实施例的基础上,当所述预设的两个读操作命令对应的有效地址是连续时,以所述访问起始地址为起始写缓存有效地址,继续利用前述地址偏移的方式为所述数据存储器配置所述写缓存有效地址,不对所述起始写缓存有效地址进行更新,以保证访问数据的连续性。当所述预设的两个读操作命令对应的有效地址不是连续时,表示所述系统总线接口模块接收到的读操作命令出现分支,所述系统总线传输过来的指令出现跳转,即由一个指令的一个分支进入该指令的另一个分支,则在所述预设的两个读操作命令对应的有效地址中,所述访问处理模块将最新获得的一个有效地址更新为所述起始写缓存有效地址,即更新所述预设的两个读操作命令中在先获得的一个读操作命令下配置的起始写缓存地址(即前述的访问起始地址),此时不继续按照前述的利用地址偏移的方式去配置新的写缓存有效地址,以适应所述预设的两个读操作命令中的新的一个读操作命令的读取要求,从而在读操作命令出现分支的情况,自适应地连续访问所述数据存储器内的数据,提高所述读控制器在外设存储器存储代码的场景下的访问代码的速率。需要说明的是,所述预设的两个读操作命令是所述系统总线接口模块先后接收到两个读操作命令,被划分为在先接收到的当前一个读操作命令和在后接收到的下一个读操作命令,或划分为在先接收到的上一个读操作命令和在后接收到的当前一个读操作命令。其中,所述预设的两个读操作命令对应的有效地址不是连续时,表示所述预设的两个读操作命令是属于不同的代码分支,且都来源于所述系统总线。
在具体实施中,在所述数据存储器中,可以存储一些出现频次较多的跳转分支对应的指令数据。例如,针对循环操作或者反复调用相同功能函数的场景;在所述数据存储器中预先存储上述场景对应的指令,当CPU执行前述相应的循环操作或者调用功能函数时,即通过本发明公开的所述读控制器可从所述数据存储器内调用相应的指令并缓存到所述数据缓冲模块内以分批次地返回CPU,而不需要让CPU直接从所述数据存储器中调用相应的指令,提高所述数据存储器的访问效率。
作为另一种实施例,所述启动模块,用于利用所述配置模块内置的配置命令传输过来的配置命令和/或所述系统总线传输过来的配置命令,将所述SPI接口模块的工作模式配置为预设组合工作模式,以实现对SPI接口模块的工作模式进行初始化,包括初始化相关的接口时序,以使得经过所述SPI接口模块传输的数据遵循相关的接口协议,加快读取所述SPI接口模块的外设存储器的速度。在完成前述的初始化后,确定所述读控制器启动完成,并反馈给所述系统总线,则所述系统总线向所述读控制器传输CPU下发的读操作命令。
所述访问处理模块,用于以所述访问起始地址为起始读缓存有效地址,每当利用地址偏移的方式为所述数据存储器配置一个读缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器读取数据;其中,读缓存有效地址与所述写缓存有效地址在所述预设组合工作模式下产生的地址偏移量是相等,以使得在所述数据缓冲模块与所述数据存储器之间进行数据搬运的过程中,读缓存有效地址保持等于所述写缓存有效地址,且这两种类型的缓存地址在所述预设组合工作模式下同步偏移。
具体地,所述访问处理模块,用于以所述访问起始地址为起始读缓存有效地址,每当利用地址偏移的方式为所述数据缓冲模块配置一个读缓存有效地址,此时CPU可能产生一个数据需要由所述数据存储器传输至所述数据缓冲模块的请求,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器读取数据,其中,地址偏移的方式在具体的实施中是从起始读缓存有效地址开始自动进行地址偏移操作,可以以地址指针加一的方式来对每个地址进行遍历,包括按照固定的接口时序加一以偏移地址指针,则地址指针当前指示的地址是当前一次地址偏移操作所获得的地址,作为所述读缓存有效地址,具体地,将所述访问起始地址对应第一个读操作命令,也可以以地址指针的形式存在于所述读控制器内的控制指令中,利用地址偏移的方式为所述数据存储器配置地址是应所述SPI接口模块或所述系统总线发出的读请求的基础上,自动发出的地址偏移操作,然后在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块从所述数据存储器读取数据、或控制所述数据存储器将其内部的数据传输至所述数据缓冲模块,以使得所述读操作命令解析出的地址序列与所述数据存储器内对应的数据是一一匹配的关系。
需要说明的是,在前述实施例中,设置所述写缓存有效地址与所述读缓存有效地址是保持相等的,其中,所述写缓存有效地址对应配置一个写地址指针,用于指示所述数据缓冲模块中的读缓存有效地址;所述读缓存有效地址对应配置一个读地址指针,用于指示所述数据存储器中的写缓存有效地址,所述数据缓冲模块的内部被写入的地址单元和所述数据存储器内被读取的地址单元是同时被配置出来,以支持所述数据缓冲模块、所述SPI接口模块和所述数据存储器之间的流水线操作,其中,数据由所述数据存储器的读缓存有效地址传输至所述数据缓冲模块的写缓存有效地址,建立起所述数据存储器和所述数据缓冲模块之间的数据传输地址对应关系。
作为一种实施例,所述访问处理模块,还用于根据所述预设的两个读操作命令对应的有效地址的连续性,为所述数据存储器更新所述起始读缓存有效地址;具体地,当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,继续以所述访问起始地址为起始读缓存有效地址,利用前述地址偏移的方式为所述数据存储器配置所述读缓存有效地址,不对所述起始读缓存有效地址进行更新,以保证访问数据的连续性。当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址不是连续时,表示所述系统总线接口模块接收到的读操作命令出现分支,所述系统总线传输过来的指令出现跳转分支,则在所述预设的两个读操作命令对应的有效地址中,所述访问处理模块将最新获得的一个有效地址更新为所述起始读缓存有效地址;此时不继续按照前述的利用地址偏移的方式去配置新的写缓存有效地址,以适应所述预设的两个读操作命令中的新的一个读操作命令的读取要求,从而在读操作命令出现分支的情况,自适应地连续访问所述数据存储器内的数据,提高所述读控制器在外设存储器存储代码的场景下的访问代码的速率。需要说明的是,所述预设的两个读操作命令是所述系统总线接口模块先后接收到两个读操作命令,被划分为在先接收到的当前一个读操作命令和在后接收到的下一个读操作命令,或划分为在先接收到的上一个读操作命令和在后接收到的当前一个读操作命令。其中,所述预设的两个读操作命令对应的有效地址不是连续时,表示所述预设的两个读操作命令是属于不同的代码分支,且都来源于所述系统总线。
在此基础上,所述访问处理模块,还用于根据所述预设的两个读操作命令对应的有效地址的连续性,触发所述数据缓冲模块按照所述预设组合工作模式从数据存储器内读取数据。具体地,当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,确定当前一个读操作命令适用于连续访问所述数据存储器内的数据,使得当前一个读操作命令对应的有效地址定位到所述数据存储器的相应存储地址处,进而实现当前一个读操作命令对应的有效地址能够命中所述数据存储器内对应的数据;并触发所述数据缓冲模块按照所述预设组合工作模式读取出所述数据存储器内的最新配置的读缓存有效地址处的数据。具体地,所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,表示依据所述系统总线先后传输过来的两个读操作命令是可以组成连续的命令序列,而且,基于存储顺序,这两个读操作命令在所述系统总线接口模块内解析出的有效地址在同一存储空间内是存储顺序连续的两个地址,进而确定当前一个读操作命令对应的有效地址是视为命中所述数据存储器内的数据,也表示该读操作命令所需读取的数据在所述数据存储器内存在目标寻址地址,则所述访问处理模块触发所述数据缓冲模块从所述数据存储器内对应的读缓存有效地址处读取数据,具体的触发方式包括拉低所述访问处理模块的片选信号、拉低所述数据缓冲模块的读使能信号、和/或拉低所述数据存储器的写使能信号,以维持所述数据存储器内存储的数据序列传输至所述数据缓冲模块。
当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址不是连续时,确定当前一个读操作命令不适用于连续访问所述数据存储器内的数据,并表示依据所述系统总线当前传输过来的读操作命令解析并经过自动偏移而得到的有效地址没有命中所述数据存储器内部的目标寻址地址,该目标寻址地址能够与下一个读操作命令对应的有效地址存在一段地址段的间隔,则所述访问处理模块中止所述数据缓冲模块从所述数据存储器向内读取数据,只是暂时中断所述数据缓冲模块从所述数据存储器读取数据,具体的中止方式包括拉高所述访问处理模块的片选信号、拉高所述数据缓冲模块的读使能信号、和/或拉高所述数据存储器的写使能信号,使得相关的片选信号由低电平翻转为高电平,禁止所述数据存储器内存储的数据序列传输至所述数据缓冲模块;此时,所述系统总线接口模块仍保持接收新的读操作命令并解析出新的读控制指令及其对应的有效地址。直到检测到所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,再触发所述数据缓冲模块按照所述预设组合工作模式读取出所述数据存储器内的最新配置的读缓存有效地址处的数据。因此,在一种实施例中,所述系统总线接口模块接收到下一个读操作命令并解析出对应的有效地址时,判断当前一个读操作命令对应的有效地址与下一个读操作命令对应的有效地址是否为连续,是则触发所述数据缓冲模块从所述数据存储器内对应的读缓存有效地址处读取数据,否则控制所述数据缓冲模块停止读取数据,并继续等待后续一次(即下下一次,相对于下一次而言,在时间上相对延迟的一次)接收到的读操作命令在所述系统总线接口模块内解析出的有效地址与所述下一个读操作命令对应的有效地址是连续的,需要说明的是,在这一等待过程中,每次进行有效地址连续性判断之前,先将下一个读操作命令更新为当前一个读操作命令,并将下一个读操作命令对应的有效地址更新为当前一个读操作命令对应的有效地址;另外,所述系统总线接口模块后续接收到的一个读操作命令是支持更新为当前一个读操作命令,当前一个读操作命令是支持更新为上一个读操作命令;从而形成所述预设的两个读操作命令,进而才判断所述预设的两个读操作命令对应的有效地址是不是连续。
作为一种实施例,所述以所述访问起始地址为起始读缓存有效地址,每当利用地址偏移的方式为所述数据存储器配置一个读缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器读取数据的方式包括:
首先将所述访问起始地址设置为所述数据缓冲模块内的起始读缓存有效地址,并将所述访问起始地址对应的所述第一个读操作命令设置为所述当前一个读操作命令,则在所述系统总线接口模块在接收到所述下一个读操作命令时,所述下一个读操作命令相对于所述当前一个读操作命令而言是在后接收到的一个读操作命令,则可以使用所述预设的两个读操作命令去判断其对应解析出的有效地址是否为连续;当判断到所述预设的两个读操作命令对应的有效地址是连续时,在所述访问处理模块的控制下,触发所述数据缓冲模块从所述数据存储器内的所述起始读缓存有效地址处读取数据,即将所述起始读缓存有效地址处的数据读取到所述数据缓冲模块内;同时,对所述起始读缓存有效地址进行加一处理,为所述数据存储器配置当前一个读缓存有效地址,若将所述起始读缓存有效地址等效配置为指向所述数据存储器内的起始寻址地址的一个地址指针,则在此基础上等效于对所述起始读缓存有效地址对应的寻址地址指针加一,使得所述新的当前一个读缓存有效地址自动指向所述数据存储器内与所述起始读缓存有效地址相邻的一个地址位置,即让所述起始读缓存有效地址偏移一个地址值而得到一个新的读缓存有效地址,支持更新为所述当前一个写缓存有效地址。需要补充的是,前述的读缓存有效地址可以以地址指针的形式存在于所述读控制器内的控制指令中。
在上述实施例的基础上,每当对所述当前一个读缓存有效地址进行加一处理,则为所述数据存储器配置出下一个读缓存有效地址,即通过地址值自动加一的方式或按照固定的接口时序触发加一的方式,将原来获得的所述当前一个读缓存有效地址偏移为下一个读缓存有效地址,判断到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块从所述数据存储器内的所述当前一个写缓存有效地址处读取数据;其中,同一时间获得的当前一个读缓存有效地址和下一个读缓存有效地址分别指向所述数据存储器内的不同存储地址。然后将下一个读缓存有效地址更新为所述当前一个读缓存有效地址,再重复执行前述的读缓存有效地址的地址偏移方式及从所述读缓存有效地址处读取数据的方式,如此重复,直至所述数据缓冲模块内的数据存储空间处于写满状态。其中,前述加一处理所产生的地址值变化量是属于所述数据存储器内允许的地址偏移量,是针对所述数据存储器内的所述起始读缓存有效地址的地址偏移量;在硬件实现前述加一处理时,使用计数寄存器进行计数以维持所述读缓存有效地址的加一处理对应的命令自动执行,但会受到所述数据缓冲模块内的数据存储空间的约束,也不会越出所述数据存储器内的存储地址范围。
基于前述实施例,所述SPI接口模块的工作模式可以是遵循SPI接口的固定工作时序,这一固定工作时序是所述启动模块确定下来的;所述SPI接口模块是串行外设接口;所述数据存储器是flash存储器,作为SPI接口的外设存储器。
所述预设组合工作模式的工作方式包括:首先将所述flash存储器配置为多线模式,以支持SPI接口的多个引脚并行传输数据至所述flash存储器的对应引脚或串口。比如,所述SPI接口模块配置flash存储器进入四线模式,以适应所述SPI接口模块中的SPI接口存在的串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI),其中,四线模式下的flash存储器支持四个相关引脚并行传输地址和数据;再让所述SPI接口模块以四线读模式从所述flash存储器内读取前述的读缓存有效地址处的数据,具体地,使用flash存储器的功能寄存器(FeatureRegister)0xb0的第0位作为四线的开启位,开启flash存储器的4线模式后,将flash存储器的写保护引脚WP和保持引脚HOLD配置为4线传输中的IO2(根据指令的模式选择可用做数据线或写保护)和IO3(根据指令的模式选择可作为数据线、保持或复位),并遵循标准SPI模式下的SPI接口的固定工作时序。其中,四线模式包括四线读模式和四线写模式。
在所述SPI接口模块获得读操作命令及其对应解析出的有效地址时,所述启动模块已经利用所接收的配置命令对SPI接口模块的工作模式进行初始化,包括为SPI接口模块提供相应工作模式下所需的命令序列或参数值,则所述SPI接口模块先向所述flash存储器发送预设命令码以配置所述flash存储器的时序触发模式,具体是将命令码0xED配置到所述flash存储器中,以将所述flash存储器配置为双沿快读模式DTR fast Read Quad;,此时确定SPI接口模块所使用的读数据的时序的边沿模式,以确定所述数据存储器的触发模式(触发所述数据存储器被外部读取)。
然后开始触发所述访问处理模块向所述flash存储器发送所述起始读缓存有效地址或产生所述起始写缓存有效地址,此时所述系统总线接口模块已经将接收到的第一个读操作命令对应解析为所述访问起始地址,并经过所述访问处理模块作用于所述SPI接口模块或所述数据缓冲模块,以确定地址偏移的基础,配置好所述数据缓冲模块和所述数据存储器之间的数据传输的起始地址。
然后向所述flash存储器发送连续读命令序列,以配置出所述数据缓冲模块连续访问所述flash存储器的工作模式,其中,所述flash存储器接收到的所述连续读命令序列是8比特位的命令序列M,其中存在参数值M[5:4]=2'b10,此时,所述flash存储器进入或保持Continuous Read模式,Continuous Read模式也称为读命今省略模式Read CommandBypass Mode,以使得该模式下,所述数据缓冲模块能够通过所述SPI接口模块连续访问所述flash存储器。在向所述flash存储器发送完所述连续读命令序列后,拉低片选信号,再经过一个预设延时周期,才允许所述flash存储器内的数据开始传输至所述数据缓冲模块。综上,本实施例中的flash存储器作为所述SPI接口模块的外设存储器,组合配置前述的多线模式、双沿快读模式DTR fast Read Quad和读命今省略模式Read Command Bypass Mode,提高所述flash存储器的启动连续访问速度,进而最大程度的加速所述读控制器连续读取所述flash存储器的速度。
在本实施例中,所述SPI接口模块用于与所述SPI总线和所述数据缓冲模块进行交互;所述启动模块为所述SPI接口模块提供预设命令码、连续读命令序列以及预设延时周期的参数,具体地,在给所述flash存储器配置所述预设组合工作模式之前,所述启动模块为所述SPI接口模块提供预设命令码的相关指令参数、连续读命令序列的相关参数以及预设延时周期的时间参数,以实现利用所接收的配置命令对所述SPI接口模块的工作模式进行初始化,并配置出前述的所述预设组合工作模式,确定所述SPI接口模块在所述读控制器内执行其相关的指令和为所述数据存储器配置的工作方式。
需要说明的是,DTR是Dual Transfer Rate的缩写,即在时钟信号SCK的双边沿均触发数据传输;Continuous read顾名思义就是连续读。所述flash存储器接收到的所述连续读命令序列为一串字节序列,1字节的连续读序列包括:操作指令码→地址→模式字节→延时激活字节→额外字节;对于连续访问,每读一个字节都会在序列最后插入一个额外字节,写入外部flash存储器,以确保字节之间的连续性(该字节虽无实际意义,但用来保证写信号的激活状态)。同理地,前述任一实施例中所提及的读操作命令也可以以前述的1字节的连续读序列的形式传输给所述系统总线接口模块,使其可以解析出有效地址及对应的读控制指令。
作为一种实施例,所述SPI接口模块还用于接收来自所述系统总线的写操作命令,再按照SPI工作模式下的预定义时序,即按照前述实施例的预设组合工作模式对应产生的接口时序,将写操作命令转换成所述flash存储器支持的命令格式,包括转换为标准SPI模式指令、Dual SPI模式指令(支持双线读写)或Quad SPI模式指令(支持四线读写),以使得SPI工作模式下的预定义时序成为对所述flash存储器的有效写时序,实现对所述SPI接口模块外设的存储器的写操作,并向所述系统总线反馈当前对所述flash存储器写操作的执行状态;其中,所述flash存储器支持的命令格式包括写时序对应的地址、数据和控制信号。
作为一种实施例,所述配置模块是一次性可编程存储器或ROM,使其可以运用于存储待烧录的程序代码,同时,本实施例公开的flash存储器可以用于存储已烧录的程序代码以作为程序运行区,具体地,所述配置命令是由待烧录入所述flash存储器的程序代码段组成,使得所述flash存储器成为程序运行区;所述数据缓冲模块分段接收所述启动模块或所述系统总线接口模块传输过来的待烧录数据之后,在所述启动模块或所述访问处理模块内置的自烧写指令的控制下,通过所述SPI接口模块将当前待烧写数据烧写至所述flash存储器中,直至完成所述待烧写数据的烧写。
优选地,所述flash存储器为Nor flash存储器,所述读控制器通过控制信号线、数据信号线和地址信号线与Nor flash存储器连接;需要说明的是,Nor flash存储器是一种随机访问设备,具有专用的地址和数据线,以字节的方式进行读写,允许外部控制器对存储器当中的任何位置进行访问,这使得Nor flash存储器是传统的只读存储器(ROM)的一种很好的替代方案,比如计算机的BIOS芯片。而NAND闪存则没有专用的地址线,不能直接寻址,是通过一个间接的、类似I/O的接口来发送命令和地址来进行控制的,这就意味着NAND闪存只能够以页的方式进行访问。
优选地,所述读操作命令的长度小于或等于32位,所述flash存储器与所述读控制器之间传输的数据的长度也是小于或等于32比特位,一般是以一个字节或一个字读为单位进行数据传输,其中,在不同的系统中,一个字WORD占据的空间不同,比如在32位嵌入式系统或32位的MCU系统中,一个字WORD占32比特位,即4个字节,1个字节Byte占8比特位。
需要说明的是,前述读操作命令对应的有效地址、前述写缓存有效地址和前述读缓存有效地址都用二进制地址表示。
作为一种实施例,在所述flash存储器往所述数据缓冲模块传输数据时,特别是按照前述的预设组合工作模式传输数据时,所述flash存储器以字节为单位进行数据分批传输,其中,每一批数据的存储容量是第一预设数量个字节,优选地,所述数据缓冲模块内部的数据存储空间是RAM;所述数据缓冲模块往所述系统总线传输数据时,所述数据缓冲模块是以字为单位进行数据分批传输,其中,每一批数据的存储容量是第二预设数量个字,每个字的长度在所述读控制器内被配置为32比特位,使得所述数据缓冲模块每往所述系统总线传输一批数据,则控制所述flash存储器往所述数据缓冲模块传输数据的次数是第二预设数量与第一预设数量的比值的四倍;当所述数据缓冲模块每往所述系统总线传输第三预设数量批数据后,确定所述读控制器结束执行所述系统总线传输过来的当前一个读操作命令,其中,该读操作命令被解析出的有效地址等效于存储容量为第三预设数量与第二预设数量的乘积个字的数据的存储地址,使得读取的数据的长度等于32比特位时,被解析出的有效地址的数量等于第三预设数量与第二预设数量的乘积。然后所述读控制器开始执行下一个读操作命令,同时,所述系统总线接口模块保持接收所述系统总线传输过来的新的一个读操作命令,同时所述系统总线接口模块保持接收所述数据缓冲模块传输过来的数据。
需要说明的是,前述涉及的系统总线接口模块、访问处理模块、SPI接口模块、启动模块和计数寄存器都可以是但不限于由设计者使用硬件描述语言Verilog HDL进行编译形成的数字电路模块,或者是由设计者在具备电路绘制或编译功能的软件上进行电路绘制或编译形成的数字电路模块。此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。
在本申请所提供的实施例中,应该理解到,所揭露的系统、芯片,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目。
Claims (16)
1.一种基于总线接口的读控制器,读控制器通过系统总线与CPU耦接,读控制器通过SPI总线与数据存储器耦接;其特征在于,读控制器包括系统总线接口模块、访问处理模块、数据缓冲模块、SPI接口模块和启动模块;其中,读控制器的内部还包括配置模块,或读控制器的外部连接有配置模块;
启动模块,用于接收所述配置模块内置的配置命令和/或所述系统总线传输过来的配置命令,再利用所接收的配置命令对SPI接口模块的工作模式进行初始化,以产生预设组合工作模式所需的参数,并触发所述系统总线发送读操作命令;
系统总线接口模块,连接在所述系统总线和所述访问处理模块之间,用于在所述启动模块确定读控制器启动完成后,每当接收到所述系统总线传输过来的一个读操作命令,则从该读操作命令中解析出有效地址,再将解析出的有效地址输出至所述访问处理模块;
所述访问处理模块,用于根据预设的两个读操作命令对应的有效地址的连续性,触发或中止所述数据存储器内的数据传输至所述数据缓冲模块;其中,预设的两个读操作命令是所述系统总线接口模块先后接收到的两个读操作命令;触发的动作是在预设组合工作模式下进行。
2.根据权利要求1所述读控制器,其特征在于,所述根据预设的两个读操作命令对应的有效地址的连续性,触发或中止所述数据存储器内的数据传输至所述数据缓冲模块的方法包括:
当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至所述数据缓冲模块,同时触发所述数据缓冲模块内缓存的数据传输至所述系统总线;
当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址不是连续时,中止所述数据存储器向所述数据缓冲模块传输数据,并清空所述数据缓冲模块内缓存的数据,同时,将下一个读操作命令更新为当前一个读操作命令,直至所述预设的两个读操作命令对应的有效地址是连续时,控制所述数据存储器内的数据传输至所述数据缓冲模块;
其中,所述预设的两个读操作命令包括当前一个读操作命令和下一个读操作命令,当前一个读操作命令是所述系统总线接口模块当前一次接收到的一个读操作命令,下一个读操作命令是所述系统总线接口模块下一次接收到的一个读操作命令。
3.根据权利要求2所述读控制器,其特征在于,若所述当前一个读操作命令在所述系统总线接口模块内对应解析出的尾地址与所述下一个读操作命令在所述系统总线接口模块内对应解析出的首地址在内存空间中的存储顺序是相邻的,则确定所述预设的两个读操作命令对应的有效地址是连续。
4.根据权利要求3所述读控制器,其特征在于,所述系统总线接口模块用于将接收到的第一个读操作命令对应解析出的有效地址配置为访问起始地址;
所述访问处理模块,还用于以所述访问起始地址为起始写缓存有效地址,每当利用地址偏移的方式为所述数据缓冲模块配置一个写缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内对应地址处的数据传输至所述数据缓冲模块中的最新配置的写缓存有效地址处。
5.根据权利要求4所述读控制器,其特征在于,所述根据预设的两个读操作命令对应的有效地址的连续性,触发或中止所述数据存储器内的数据传输至所述数据缓冲模块的方法还包括:
在所述预设的两个读操作命令对应的有效地址是连续的情况下,若检测到所述数据缓冲模块内的数据存储空间处于写满状态,则触发所述数据存储器暂停向所述数据缓冲模块传输数据,并将当前配置出的写缓存有效地址记为中止传输地址,直到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块内缓存的数据传输至所述系统总线以使得所述数据缓冲模块腾出空的存储空间,同时以所述中止传输地址为所述起始写缓存有效地址,利用地址偏移的方式为所述数据缓冲模块配置新的写缓存有效地址,并触发所述数据存储器内存储的数据传输至所述数据缓冲模块中。
6.根据权利要求4至5任一项所述读控制器,其特征在于,所述以所述访问起始地址为起始写缓存有效地址,每当利用地址偏移的方式为所述数据缓冲模块配置一个写缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内对应地址处的数据传输至所述数据缓冲模块中的最新配置的写缓存有效地址处的方式包括:
将所述访问起始地址设置为所述数据缓冲模块内的起始写缓存有效地址,并将所述访问起始地址对应的所述第一个读操作命令设置为所述当前一个读操作命令,再在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至所述起始写缓存有效地址;同时对所述起始写缓存有效地址进行加一处理,为所述数据缓冲模块配置当前一个写缓存有效地址,再在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据存储器内的数据传输至当前一个写缓存有效地址;
每当对所述当前一个写缓存有效地址进行加一处理,则为所述数据缓冲模块配置下一个写缓存有效地址,再将下一个写缓存有效地址更新为所述当前一个写缓存有效地址,如此重复,直至所述数据缓冲模块内的数据存储空间处于写满状态;
其中,前述加一处理所产生的地址值变化量是属于所述数据缓冲模块内允许的地址偏移量;在硬件实现前述加一处理时,使用计数寄存器进行计数以维持所述写缓存有效地址的加一处理对应的命令自动执行,该计数寄存器是设计在所述数据缓冲模块内或所述访问处理模块内。
7.根据权利要求6所述读控制器,其特征在于,当所述预设的两个读操作命令对应的有效地址不是连续时,在所述预设的两个读操作命令对应的有效地址中,所述访问处理模块将最新获得的一个有效地址更新为所述起始写缓存有效地址;
其中,所述预设的两个读操作命令对应的有效地址不是连续时,表示所述预设的两个读操作命令是属于不同的代码分支,且都来源于所述系统总线。
8.根据权利要求4所述读控制器,其特征在于,所述启动模块,用于利用所述配置模块内置的配置命令传输过来的配置命令和/或所述系统总线传输过来的配置命令,将所述SPI接口模块的工作模式配置为预设组合工作模式,以实现对SPI接口模块的工作模式进行初始化,在完成前述的初始化后,确定所述读控制器启动完成,并反馈给所述系统总线;
所述访问处理模块,用于以所述访问起始地址为起始读缓存有效地址,每当利用地址偏移的方式为所述数据存储器配置一个读缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器读取数据;
其中,读缓存有效地址与所述写缓存有效地址在所述预设组合工作模式下产生的地址偏移量是相等。
9.根据权利要求8所述读控制器,其特征在于,所述访问处理模块,还用于根据所述预设的两个读操作命令对应的有效地址的连续性,为所述数据存储器更新所述起始读缓存有效地址;
所述访问处理模块,还用于根据所述预设的两个读操作命令对应的有效地址的连续性,触发所述数据缓冲模块按照所述预设组合工作模式从数据存储器内读取数据。
10.根据权利要求9所述读控制器,其特征在于,所述根据所述预设的两个读操作命令对应的有效地址的连续性,为所述数据存储器更新所述起始读缓存有效地址的方法包括:
当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址不是连续时,在所述预设的两个读操作命令对应的有效地址中,将最新获得的一个有效地址更新为所述起始读缓存有效地址;
当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,继续以所述访问起始地址为起始读缓存有效地址,利用地址偏移的方式为所述数据存储器配置所述读缓存有效地址,不对所述起始读缓存有效地址进行更新;
其中,所述读缓存有效地址与所述写缓存有效地址保持相等。
11.根据权利要求10所述读控制器,其特征在于,所述根据所述预设的两个读操作命令对应的有效地址的连续性,触发所述数据缓冲模块按照所述预设组合工作模式从数据存储器内读取数据的方法包括:
当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式读取出所述数据存储器内的最新配置的读缓存有效地址处的数据;
当所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址不是连续时,控制所述数据缓冲模块停止从所述数据存储器读取数据,直至检测到所述访问处理模块检测到所述预设的两个读操作命令对应的有效地址是连续时,再触发所述数据缓冲模块按照所述预设组合工作模式读取出所述数据存储器内的最新配置的读缓存有效地址处的数据。
12.根据权利要求8至11任一项所述读控制器,其特征在于,所述以所述访问起始地址为起始读缓存有效地址,每当利用地址偏移的方式为所述数据存储器配置一个读缓存有效地址,则在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器读取数据的方式包括:
将所述访问起始地址设置为所述数据存储器内的起始读缓存有效地址,当所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器的起始读缓存有效地址处读取数据,同时对所述起始读缓存有效地址进行加一处理,为所述数据存储器配置当前一个读缓存有效地址,再在所述预设的两个读操作命令对应的有效地址是连续时,触发所述数据缓冲模块按照所述预设组合工作模式从所述数据存储器的所述当前一个读缓存有效地址处读取数据;
每当对所述当前一个读缓存有效地址进行加一处理,则为所述数据存储器配置下一个读缓存有效地址,再将下一个读缓存有效地址更新为当前一个读缓存有效地址,如此重复,直至所述数据缓冲模块内的数据存储空间处于写满状态;
在硬件实现前述加一处理的过程中,使用计数寄存器进行计数以维持所述读缓存有效地址的加一处理对应的命令自动执行,该计数寄存器是设计在所述数据存储器内或所述访问处理模块内。
13.根据权利要求8所述读控制器,其特征在于,所述数据存储器是flash存储器;
所述预设组合工作模式的工作方式包括:
首先将所述flash存储器配置为多线模式;
在所述系统总线接口模块获得读操作命令并对应解析出有效地址时,所述SPI接口模块先向所述flash存储器发送预设命令码以配置所述flash存储器的时序触发模式,再开始触发所述访问处理模块向所述flash存储器发送所述起始读缓存有效地址,然后向所述flash存储器发送连续读命令序列,以配置出所述数据缓冲模块连续访问所述flash存储器的工作模式;
在所述SPI接口模块向所述flash存储器发送完所述连续读命令序列后,再经过一个预设延时周期,才允许所述flash存储器内的数据开始传输至所述数据缓冲模块;
其中,所述启动模块为所述SPI接口模块提供预设命令码、连续读命令序列以及预设延时周期的参数,实现利用所接收的配置命令对所述SPI接口模块的工作模式进行初始化。
14.根据权利要求13所述读控制器,其特征在于,所述配置模块是一次性可编程存储器或ROM,其中,所述配置命令是由待烧录入所述flash存储器的程序代码段组成,使得所述flash存储器成为程序运行区;
所述flash存储器为Nor flash存储器,所述读控制器通过控制信号线、数据信号线和地址信号线与Nor flash存储器连接;
其中,所述读操作命令的长度小于或等于32位,所述flash存储器与所述读控制器之间传输的数据的长度也是小于或等于32比特位。
15.根据权利要求14所述读控制器,其特征在于,在所述flash存储器往所述数据缓冲模块传输数据时,所述flash存储器以字节为单位进行数据分批传输,其中,每一批数据的存储容量是第一预设数量个字节,所述数据缓冲模块内部的数据存储空间是RAM;
所述数据缓冲模块往所述系统总线传输数据时,所述数据缓冲模块是以字为单位进行数据分批传输,其中,每一批数据的存储容量是第二预设数量个字,每个字的长度在所述读控制器内被配置为32比特位,使得所述数据缓冲模块每往所述系统总线传输一批数据,则控制所述flash存储器往所述数据缓冲模块传输数据的次数是第二预设数量与第一预设数量的比值的四倍;
当所述数据缓冲模块每往所述系统总线传输第三预设数量批数据后,确定所述读控制器结束执行所述系统总线传输过来的一个读操作命令,其中,该读操作命令被解析出的有效地址等效于存储容量为第三预设数量与第二预设数量的乘积个字的数据的存储地址,使得读取的数据的长度等于32比特位时,被解析出的有效地址的数量等于第三预设数量与第二预设数量的乘积。
16.根据权利要求13所述读控制器,其特征在于,所述SPI接口模块还用于接收来自所述系统总线的写操作命令,再按照SPI工作模式下的预定义时序,将写操作命令转换成所述flash存储器支持的命令格式,实现对所述SPI接口模块外设的存储器的写操作,并向所述系统总线反馈当前对所述flash存储器写操作的执行状态,以使得SPI工作模式下的预定义时序成为对所述flash存储器的有效写时序;
其中,所述flash存储器支持的命令格式包括写时序对应的地址、数据和控制信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111298659.6A CN114036096B (zh) | 2021-11-04 | 2021-11-04 | 一种基于总线接口的读控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111298659.6A CN114036096B (zh) | 2021-11-04 | 2021-11-04 | 一种基于总线接口的读控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114036096A CN114036096A (zh) | 2022-02-11 |
CN114036096B true CN114036096B (zh) | 2024-05-03 |
Family
ID=80136408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111298659.6A Active CN114036096B (zh) | 2021-11-04 | 2021-11-04 | 一种基于总线接口的读控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114036096B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114637709B (zh) * | 2022-02-23 | 2024-08-02 | 杭州中科微电子有限公司 | 一种通过spi控制接口直接执行串行flash程序的方法及模块 |
CN114925010B (zh) * | 2022-05-23 | 2024-05-10 | 中国电子科技集团公司第五十八研究所 | 一种Quad SPI转AXI接口的方法 |
US12112165B2 (en) | 2022-09-29 | 2024-10-08 | Macronix International Co., Ltd. | Managing status information of logic units |
Citations (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BE786222A (fr) * | 1971-07-16 | 1972-11-03 | Western Electric Co | Systeme de commande repondant a des trains d'impulsions numeriques |
EP0037875A1 (en) * | 1980-04-10 | 1981-10-21 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Modular data processing system |
EP0079140A1 (en) * | 1981-10-15 | 1983-05-18 | Convergent Technologies Inc. | Multiple computing systems and communication bus structure therefor |
CN1031287A (zh) * | 1987-06-29 | 1989-02-22 | 数字设备公司 | 数字数据处理系统用的总线适配器装置 |
US4864496A (en) * | 1987-09-04 | 1989-09-05 | Digital Equipment Corporation | Bus adapter module for interconnecting busses in a multibus computer system |
WO1990000284A1 (en) * | 1988-06-30 | 1990-01-11 | Wang Laboratories, Inc. | Memory control unit |
EP0533429A2 (en) * | 1991-09-16 | 1993-03-24 | NCR International, Inc. | Computer bus control system |
JPH06139135A (ja) * | 1992-10-27 | 1994-05-20 | Fujitsu Ltd | 共有メモリの非同期アクセス方式 |
CA1336459C (en) * | 1988-06-30 | 1995-07-25 | Richard W. Coyle | I/o bus to system bus interface |
JPH08123749A (ja) * | 1994-10-27 | 1996-05-17 | Fuji Electric Co Ltd | バスコントローラ |
JPH1021012A (ja) * | 1996-06-28 | 1998-01-23 | Toshiba Corp | 磁気ディスク装置及び同装置のコマンド処理方法 |
JPH11232214A (ja) * | 1998-02-17 | 1999-08-27 | Hitachi Ltd | 情報処理装置用プロセッサおよびその制御方法 |
US6011740A (en) * | 1998-03-04 | 2000-01-04 | Xilinx, Inc. | Structure and method for providing additional configuration memories on an FPGA |
US6237108B1 (en) * | 1992-10-09 | 2001-05-22 | Fujitsu Limited | Multiprocessor system having redundant shared memory configuration |
US6247102B1 (en) * | 1998-03-25 | 2001-06-12 | Compaq Computer Corporation | Computer system employing memory controller and bridge interface permitting concurrent operation |
JP2002189695A (ja) * | 2000-12-19 | 2002-07-05 | Nec Eng Ltd | Cpuインターフェース回路 |
CN1366250A (zh) * | 2001-01-18 | 2002-08-28 | 深圳市中兴集成电路设计有限责任公司 | 一种同步串口控制器 |
JP2002278923A (ja) * | 2002-01-25 | 2002-09-27 | Hitachi Ltd | バスシステム,バス制御方式及びそのバス変換装置 |
US6760333B1 (en) * | 1999-11-22 | 2004-07-06 | Texas Instruments Incorporated | Hybrid digital subscriber loop and voice-band universal serial bus modem |
CN1558332A (zh) * | 2004-01-18 | 2004-12-29 | 中兴通讯股份有限公司 | 一种实现自动读写内部集成电路设备的装置和方法 |
CN1669011A (zh) * | 2002-05-14 | 2005-09-14 | 微米技术有限公司 | 无序的动态随机存取存储器序列器 |
CN1921596A (zh) * | 2005-08-23 | 2007-02-28 | 乐金电子(昆山)电脑有限公司 | 存储器接口装置和方法 |
CN101256541A (zh) * | 2008-03-24 | 2008-09-03 | 北京中星微电子有限公司 | 一种直接存储访问控制器数据传输系统与方法 |
CN101382927A (zh) * | 2008-09-25 | 2009-03-11 | 杭州爱威芯科技有限公司 | 集成在芯片内的高速串行外围接口电路 |
CN101588171A (zh) * | 2009-06-23 | 2009-11-25 | 广州润芯信息技术有限公司 | 可以同时兼容三线与四线spi工作形式的数字控制接口装置 |
CN101950276A (zh) * | 2010-09-01 | 2011-01-19 | 杭州国芯科技股份有限公司 | 一种存储器访问装置及其程序执行方法 |
CN201812284U (zh) * | 2010-09-01 | 2011-04-27 | 杭州国芯科技股份有限公司 | 一种存储器接口 |
CN102207916A (zh) * | 2011-05-30 | 2011-10-05 | 西安电子科技大学 | 一种基于指令预取的多核共享存储器控制设备 |
CN102231143A (zh) * | 2011-07-04 | 2011-11-02 | 浙江大学 | 一种安全可复用spi外围接口电路 |
CN102360329A (zh) * | 2011-09-29 | 2012-02-22 | 西北工业大学 | 总线监控与调试控制装置及进行总线监控与总线调试的方法 |
CN102419576A (zh) * | 2010-08-23 | 2012-04-18 | 比尔克特韦尔克有限公司 | 用于流体系统的控制设备 |
CN102467472A (zh) * | 2010-11-08 | 2012-05-23 | 中兴通讯股份有限公司 | SoC芯片的BOOT启动装置和SoC芯片 |
CN102622318A (zh) * | 2012-02-27 | 2012-08-01 | 中国科学院声学研究所 | 一种存储器控制电路及其控制的向量数据寻址方法 |
CN102662782A (zh) * | 2012-04-17 | 2012-09-12 | 华为技术有限公司 | 一种监控系统总线的方法及装置 |
CN202472634U (zh) * | 2012-02-14 | 2012-10-03 | 福州瑞芯微电子有限公司 | 一种快速响应写数据的sdram控制器 |
CN103064805A (zh) * | 2012-12-25 | 2013-04-24 | 深圳先进技术研究院 | Spi控制器及通信方法 |
CN103116551A (zh) * | 2013-01-31 | 2013-05-22 | 苏州国芯科技有限公司 | 应用于CLB总线的NorFLASH存储接口模块 |
CN103995785A (zh) * | 2014-05-07 | 2014-08-20 | 四川九成信息技术有限公司 | 信息处理方法和系统 |
CN104461401A (zh) * | 2014-12-25 | 2015-03-25 | 珠海煌荣集成电路科技有限公司 | Spi闪速存储器的数据读写管理方法及数据读写管理装置 |
CN104657288A (zh) * | 2015-03-03 | 2015-05-27 | 山东华芯半导体有限公司 | 一种spi flash加密接口及加密数据的读写方法 |
CN104951412A (zh) * | 2015-06-06 | 2015-09-30 | 华为技术有限公司 | 一种通过内存总线访问的存储装置 |
WO2015158264A1 (zh) * | 2014-04-17 | 2015-10-22 | 华为技术有限公司 | 控制内存芯片的方法、芯片控制器和内存控制器 |
CN105335322A (zh) * | 2015-10-28 | 2016-02-17 | 上海斐讯数据通信技术有限公司 | 一种spi接口转换i2c总线接口的方法及转换器 |
CN105677576A (zh) * | 2015-12-31 | 2016-06-15 | 上海交通大学 | 一种面向相变存储器的Bank控制器读写控制装置及方法 |
US9501407B1 (en) * | 2011-09-16 | 2016-11-22 | Altera Corporation | First-in-first-out memory with dual memory banks |
WO2016202114A1 (zh) * | 2015-06-16 | 2016-12-22 | 深圳市中兴微电子技术有限公司 | 一种数据传输方法、装置及存储介质 |
CN106557442A (zh) * | 2015-09-28 | 2017-04-05 | 北京兆易创新科技股份有限公司 | 一种芯片系统 |
CN106874224A (zh) * | 2017-02-17 | 2017-06-20 | 杭州朔天科技有限公司 | 自动搬运且适应器件的多线SPI‑Flash控制器 |
CN107403639A (zh) * | 2016-05-19 | 2017-11-28 | 三星电子株式会社 | 存储器控制器的操作方法 |
CN107423160A (zh) * | 2017-07-24 | 2017-12-01 | 山东华芯半导体有限公司 | 一种提高NAND flash读速度的方法及装置 |
CN107943726A (zh) * | 2017-11-16 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种基于PCIe接口的数据传输系统及方法 |
CN108121672A (zh) * | 2017-08-08 | 2018-06-05 | 鸿秦(北京)科技有限公司 | 一种基于NandFlash存储器多通道的存储阵列控制方法与装置 |
WO2018113364A1 (zh) * | 2016-12-21 | 2018-06-28 | 华为技术有限公司 | 闪存接口控制器及操作命令处理方法 |
CN108268414A (zh) * | 2018-03-26 | 2018-07-10 | 福州大学 | 基于spi模式的sd卡驱动器及其控制方法 |
CN109117386A (zh) * | 2018-07-12 | 2019-01-01 | 中国科学院计算技术研究所 | 一种网络远程读写二级存储的系统及方法 |
CN110910921A (zh) * | 2019-11-29 | 2020-03-24 | 深圳市国微电子有限公司 | 一种命令读写方法、装置及计算机存储介质 |
CN111143259A (zh) * | 2019-12-31 | 2020-05-12 | 大唐半导体科技有限公司 | 一种多线SPI flash控制器 |
CN111338984A (zh) * | 2020-02-25 | 2020-06-26 | 大唐半导体科技有限公司 | 一种Cache RAM与Retention RAM数据高速交换架构及其方法 |
CN111459857A (zh) * | 2020-03-31 | 2020-07-28 | 西安微电子技术研究所 | 一种tcm控制器及数据缓存读取方法 |
CN211376201U (zh) * | 2019-11-29 | 2020-08-28 | 深圳市国微电子有限公司 | 一种命令读写装置、存储器 |
CN112395218A (zh) * | 2020-10-29 | 2021-02-23 | 南京扬贺扬微电子科技有限公司 | 具有DDR高传输介面的新型SPI-NAND Flash存储芯片及操作方法 |
CN112416823A (zh) * | 2020-11-15 | 2021-02-26 | 珠海市一微半导体有限公司 | 一种突发模式下的传感器数据读写控制方法、系统及芯片 |
CN112540952A (zh) * | 2020-12-18 | 2021-03-23 | 广东高云半导体科技股份有限公司 | 具有片内并行接口的片上系统 |
CN113176850A (zh) * | 2021-03-12 | 2021-07-27 | 湖南艾科诺维科技有限公司 | 基于srio接口的共享存储盘及其存取方法 |
CN113254387A (zh) * | 2021-05-24 | 2021-08-13 | 珠海市一微半导体有限公司 | 数据缓存器、芯片、机器人、数据缓存方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI310499B (en) * | 2005-04-26 | 2009-06-01 | Sunplus Technology Co Ltd | Slave and master of serial peripheral interface, system thereof, and method thereof |
TWI292096B (en) * | 2005-10-06 | 2008-01-01 | Via Tech Inc | A data buffer system and an access method of a data buffer device |
US8102710B2 (en) * | 2007-10-17 | 2012-01-24 | Micron Technology, Inc. | System and method for setting access and modification for synchronous serial interface NAND |
TWI351606B (en) * | 2007-10-26 | 2011-11-01 | Sunplus Technology Co Ltd | Memory module and control method of serial periphe |
US20090138673A1 (en) * | 2007-11-28 | 2009-05-28 | Apple Inc. | Internal memory mapped external memory interface |
US10613763B2 (en) * | 2016-04-21 | 2020-04-07 | Adesto Technologies Corporation | Memory device having multiple read buffers for read latency reduction |
US20180293196A1 (en) * | 2017-04-10 | 2018-10-11 | Intel Corporation | System, Apparatus And Method For Link Training For A Multi-Drop Interconnect |
-
2021
- 2021-11-04 CN CN202111298659.6A patent/CN114036096B/zh active Active
Patent Citations (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BE786222A (fr) * | 1971-07-16 | 1972-11-03 | Western Electric Co | Systeme de commande repondant a des trains d'impulsions numeriques |
EP0037875A1 (en) * | 1980-04-10 | 1981-10-21 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Modular data processing system |
EP0079140A1 (en) * | 1981-10-15 | 1983-05-18 | Convergent Technologies Inc. | Multiple computing systems and communication bus structure therefor |
CN1031287A (zh) * | 1987-06-29 | 1989-02-22 | 数字设备公司 | 数字数据处理系统用的总线适配器装置 |
US4864496A (en) * | 1987-09-04 | 1989-09-05 | Digital Equipment Corporation | Bus adapter module for interconnecting busses in a multibus computer system |
WO1990000284A1 (en) * | 1988-06-30 | 1990-01-11 | Wang Laboratories, Inc. | Memory control unit |
CA1336459C (en) * | 1988-06-30 | 1995-07-25 | Richard W. Coyle | I/o bus to system bus interface |
EP0533429A2 (en) * | 1991-09-16 | 1993-03-24 | NCR International, Inc. | Computer bus control system |
US6237108B1 (en) * | 1992-10-09 | 2001-05-22 | Fujitsu Limited | Multiprocessor system having redundant shared memory configuration |
JPH06139135A (ja) * | 1992-10-27 | 1994-05-20 | Fujitsu Ltd | 共有メモリの非同期アクセス方式 |
JPH08123749A (ja) * | 1994-10-27 | 1996-05-17 | Fuji Electric Co Ltd | バスコントローラ |
JPH1021012A (ja) * | 1996-06-28 | 1998-01-23 | Toshiba Corp | 磁気ディスク装置及び同装置のコマンド処理方法 |
JPH11232214A (ja) * | 1998-02-17 | 1999-08-27 | Hitachi Ltd | 情報処理装置用プロセッサおよびその制御方法 |
US6011740A (en) * | 1998-03-04 | 2000-01-04 | Xilinx, Inc. | Structure and method for providing additional configuration memories on an FPGA |
US6247102B1 (en) * | 1998-03-25 | 2001-06-12 | Compaq Computer Corporation | Computer system employing memory controller and bridge interface permitting concurrent operation |
US6760333B1 (en) * | 1999-11-22 | 2004-07-06 | Texas Instruments Incorporated | Hybrid digital subscriber loop and voice-band universal serial bus modem |
JP2002189695A (ja) * | 2000-12-19 | 2002-07-05 | Nec Eng Ltd | Cpuインターフェース回路 |
CN1366250A (zh) * | 2001-01-18 | 2002-08-28 | 深圳市中兴集成电路设计有限责任公司 | 一种同步串口控制器 |
JP2002278923A (ja) * | 2002-01-25 | 2002-09-27 | Hitachi Ltd | バスシステム,バス制御方式及びそのバス変換装置 |
CN1669011A (zh) * | 2002-05-14 | 2005-09-14 | 微米技术有限公司 | 无序的动态随机存取存储器序列器 |
CN1558332A (zh) * | 2004-01-18 | 2004-12-29 | 中兴通讯股份有限公司 | 一种实现自动读写内部集成电路设备的装置和方法 |
CN1921596A (zh) * | 2005-08-23 | 2007-02-28 | 乐金电子(昆山)电脑有限公司 | 存储器接口装置和方法 |
CN101256541A (zh) * | 2008-03-24 | 2008-09-03 | 北京中星微电子有限公司 | 一种直接存储访问控制器数据传输系统与方法 |
CN101382927A (zh) * | 2008-09-25 | 2009-03-11 | 杭州爱威芯科技有限公司 | 集成在芯片内的高速串行外围接口电路 |
CN101588171A (zh) * | 2009-06-23 | 2009-11-25 | 广州润芯信息技术有限公司 | 可以同时兼容三线与四线spi工作形式的数字控制接口装置 |
CN102419576A (zh) * | 2010-08-23 | 2012-04-18 | 比尔克特韦尔克有限公司 | 用于流体系统的控制设备 |
CN101950276A (zh) * | 2010-09-01 | 2011-01-19 | 杭州国芯科技股份有限公司 | 一种存储器访问装置及其程序执行方法 |
CN201812284U (zh) * | 2010-09-01 | 2011-04-27 | 杭州国芯科技股份有限公司 | 一种存储器接口 |
CN102467472A (zh) * | 2010-11-08 | 2012-05-23 | 中兴通讯股份有限公司 | SoC芯片的BOOT启动装置和SoC芯片 |
CN102207916A (zh) * | 2011-05-30 | 2011-10-05 | 西安电子科技大学 | 一种基于指令预取的多核共享存储器控制设备 |
CN102231143A (zh) * | 2011-07-04 | 2011-11-02 | 浙江大学 | 一种安全可复用spi外围接口电路 |
US9501407B1 (en) * | 2011-09-16 | 2016-11-22 | Altera Corporation | First-in-first-out memory with dual memory banks |
CN102360329A (zh) * | 2011-09-29 | 2012-02-22 | 西北工业大学 | 总线监控与调试控制装置及进行总线监控与总线调试的方法 |
CN202472634U (zh) * | 2012-02-14 | 2012-10-03 | 福州瑞芯微电子有限公司 | 一种快速响应写数据的sdram控制器 |
CN102622318A (zh) * | 2012-02-27 | 2012-08-01 | 中国科学院声学研究所 | 一种存储器控制电路及其控制的向量数据寻址方法 |
CN102662782A (zh) * | 2012-04-17 | 2012-09-12 | 华为技术有限公司 | 一种监控系统总线的方法及装置 |
CN103064805A (zh) * | 2012-12-25 | 2013-04-24 | 深圳先进技术研究院 | Spi控制器及通信方法 |
CN103116551A (zh) * | 2013-01-31 | 2013-05-22 | 苏州国芯科技有限公司 | 应用于CLB总线的NorFLASH存储接口模块 |
WO2015158264A1 (zh) * | 2014-04-17 | 2015-10-22 | 华为技术有限公司 | 控制内存芯片的方法、芯片控制器和内存控制器 |
CN103995785A (zh) * | 2014-05-07 | 2014-08-20 | 四川九成信息技术有限公司 | 信息处理方法和系统 |
CN104461401A (zh) * | 2014-12-25 | 2015-03-25 | 珠海煌荣集成电路科技有限公司 | Spi闪速存储器的数据读写管理方法及数据读写管理装置 |
CN104657288A (zh) * | 2015-03-03 | 2015-05-27 | 山东华芯半导体有限公司 | 一种spi flash加密接口及加密数据的读写方法 |
CN104951412A (zh) * | 2015-06-06 | 2015-09-30 | 华为技术有限公司 | 一种通过内存总线访问的存储装置 |
WO2016197600A1 (zh) * | 2015-06-06 | 2016-12-15 | 华为技术有限公司 | 一种通过内存总线访问的存储装置 |
CN106257434A (zh) * | 2015-06-16 | 2016-12-28 | 深圳市中兴微电子技术有限公司 | 一种基于增强型外设互连协议总线的数据传输方法及装置 |
WO2016202114A1 (zh) * | 2015-06-16 | 2016-12-22 | 深圳市中兴微电子技术有限公司 | 一种数据传输方法、装置及存储介质 |
CN106557442A (zh) * | 2015-09-28 | 2017-04-05 | 北京兆易创新科技股份有限公司 | 一种芯片系统 |
CN105335322A (zh) * | 2015-10-28 | 2016-02-17 | 上海斐讯数据通信技术有限公司 | 一种spi接口转换i2c总线接口的方法及转换器 |
CN105677576A (zh) * | 2015-12-31 | 2016-06-15 | 上海交通大学 | 一种面向相变存储器的Bank控制器读写控制装置及方法 |
CN107403639A (zh) * | 2016-05-19 | 2017-11-28 | 三星电子株式会社 | 存储器控制器的操作方法 |
WO2018113364A1 (zh) * | 2016-12-21 | 2018-06-28 | 华为技术有限公司 | 闪存接口控制器及操作命令处理方法 |
CN106874224A (zh) * | 2017-02-17 | 2017-06-20 | 杭州朔天科技有限公司 | 自动搬运且适应器件的多线SPI‑Flash控制器 |
CN107423160A (zh) * | 2017-07-24 | 2017-12-01 | 山东华芯半导体有限公司 | 一种提高NAND flash读速度的方法及装置 |
CN108121672A (zh) * | 2017-08-08 | 2018-06-05 | 鸿秦(北京)科技有限公司 | 一种基于NandFlash存储器多通道的存储阵列控制方法与装置 |
CN107943726A (zh) * | 2017-11-16 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种基于PCIe接口的数据传输系统及方法 |
CN108268414A (zh) * | 2018-03-26 | 2018-07-10 | 福州大学 | 基于spi模式的sd卡驱动器及其控制方法 |
CN109117386A (zh) * | 2018-07-12 | 2019-01-01 | 中国科学院计算技术研究所 | 一种网络远程读写二级存储的系统及方法 |
CN211376201U (zh) * | 2019-11-29 | 2020-08-28 | 深圳市国微电子有限公司 | 一种命令读写装置、存储器 |
CN110910921A (zh) * | 2019-11-29 | 2020-03-24 | 深圳市国微电子有限公司 | 一种命令读写方法、装置及计算机存储介质 |
CN111143259A (zh) * | 2019-12-31 | 2020-05-12 | 大唐半导体科技有限公司 | 一种多线SPI flash控制器 |
CN111338984A (zh) * | 2020-02-25 | 2020-06-26 | 大唐半导体科技有限公司 | 一种Cache RAM与Retention RAM数据高速交换架构及其方法 |
CN111459857A (zh) * | 2020-03-31 | 2020-07-28 | 西安微电子技术研究所 | 一种tcm控制器及数据缓存读取方法 |
CN112395218A (zh) * | 2020-10-29 | 2021-02-23 | 南京扬贺扬微电子科技有限公司 | 具有DDR高传输介面的新型SPI-NAND Flash存储芯片及操作方法 |
CN112416823A (zh) * | 2020-11-15 | 2021-02-26 | 珠海市一微半导体有限公司 | 一种突发模式下的传感器数据读写控制方法、系统及芯片 |
CN112540952A (zh) * | 2020-12-18 | 2021-03-23 | 广东高云半导体科技股份有限公司 | 具有片内并行接口的片上系统 |
CN113176850A (zh) * | 2021-03-12 | 2021-07-27 | 湖南艾科诺维科技有限公司 | 基于srio接口的共享存储盘及其存取方法 |
CN113254387A (zh) * | 2021-05-24 | 2021-08-13 | 珠海市一微半导体有限公司 | 数据缓存器、芯片、机器人、数据缓存方法 |
Non-Patent Citations (2)
Title |
---|
一种基于AHB总线的存储控制器设计;刘少龙;;电子科技(第03期);全文 * |
基于ARINC 429总线的机载计算机通信模块设计;马超;郭勇;;信息通信(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114036096A (zh) | 2022-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114036096B (zh) | 一种基于总线接口的读控制器 | |
US6516366B1 (en) | Serial bus for connecting two integrated circuits with storage for input/output signals | |
KR100225744B1 (ko) | 동적연쇄화조작동안레이스상태를막는방법및장치 | |
US8310880B2 (en) | Virtual channel support in a nonvolatile memory controller | |
EP0405882A2 (en) | Move 16 block move and coprocessor interface instruction | |
GB2213294A (en) | Data processor | |
US4583163A (en) | Data prefetch apparatus | |
US20070073826A1 (en) | System and method for maintaining the integrity of data transfers in shared memory configurations | |
JPH06324981A (ja) | データ処理システム及びチャネル・アダプタ | |
JPH06236341A (ja) | 入出力記憶装置への直接メモリアクセスを行う装置及び方法 | |
EP1163598A1 (en) | Microprocessing device having programmable wait states | |
CN108958647B (zh) | 存储器装置的边读边写访问方法 | |
CN106716383A (zh) | 支持在存储器装置中提高吞吐量 | |
US6718539B1 (en) | Interrupt handling mechanism in translator from one instruction set to another | |
CN104238957B (zh) | 串行外围接口控制器、串行外围接口快闪存储器及其存取方法和存取控制方法 | |
US4231088A (en) | Allocating and resolving next virtual pages for input/output | |
CN115248791A (zh) | 基于地址监测实现内存管理的硬件设备和方法 | |
EP1988460A1 (en) | Apparatus for and method of distributing instructions | |
JPH01120660A (ja) | マイクロコンピュータ装置 | |
EP0099462B1 (en) | Apparatus and method for buffering data in a data processing system | |
JP3954992B2 (ja) | メモリインタフェース回路 | |
JPH07262162A (ja) | マイクロプロセッサ | |
JP3687112B2 (ja) | データ転送制御装置及び情報処理装置 | |
US20230305816A1 (en) | Device and method for handling programming language function | |
CN118747057A (zh) | 数据写入方法和存储器控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |