CN106874224B - 自动搬运且适应器件的多线SPI-Flash控制器 - Google Patents
自动搬运且适应器件的多线SPI-Flash控制器 Download PDFInfo
- Publication number
- CN106874224B CN106874224B CN201710086193.0A CN201710086193A CN106874224B CN 106874224 B CN106874224 B CN 106874224B CN 201710086193 A CN201710086193 A CN 201710086193A CN 106874224 B CN106874224 B CN 106874224B
- Authority
- CN
- China
- Prior art keywords
- data
- fifo
- dma
- module
- transmission
- 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
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/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
-
- 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/1684—Details of memory controller using multiple buses
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Abstract
本发明公开了一种自动搬运且适应器件的多线SPI Flash控制器,包括总线从机接口模块、寄存器模块、中断产生模块、时钟信号产生模块、状态机模块、先进先出队列、移位控制模块、dma接口模块。本发明的SPI flash控制器除支持标准的单线SPI flash外,同样也支持此类多线SPI flash,在时钟频率较低时,相比标准的SPI flash控制器,该多线SPI flash控制器能够大大提高数据传输效率。本发明的SPI flash控制器还包含DMA请求/响应及数据通道,利用系统中的通用DMA来搬运数据,这不仅可以大大减少CPU的负担、提高数据的传输效率,还充分利用了系统资源。
Description
技术领域.
本发明涉及SPI Flash控制器领域,具体是一种自动搬运且适应器件的多线SPIFlash控制器。
背景技术
标准的串行外围设备接口闪存控制器(简称SPI flash controller)均只支持单线对flash进行读写擦除等操作。如图1所示,在一个实际系统中,SPI Flash芯片一般用于存放程序或者数据等内容,且其容量往往比较大。在系统启动的时候,需要将SPI flash中的内容读取到片内存储器(memory)供使用。在此大批量数据传输的情况下,SPI flash控制器内的发送和接收缓存器(简称RX FIFO和TX FIFO)深度有限,需要处理器(CPU)在每一次FIFO满了之后进行读取和重新配置,大大加重了CPU的负担。
SPI flash广泛应用于电子设备中用来进行数据的存储。传统的SPI flash一般主要包括时钟引脚(SCLK)、片选引脚(CS)、发送数据引脚(SI)、接收数据引脚(SO)、写保护引脚(WP)和保持引脚(HOLD)。如图2、图3所示是标准的SPI flash读操作、写操作时序,在读操作中,SPI flash控制器先从高位到低位发送一个8比特的指令和若干比特的地址,然后数据就按高位到低位从flash器件中输出,当CS拉高后,读操作结束;在写操作中,SPI flash控制器先从高位到低位发送一个8比特的指令和若干比特的地址,然后数据从高位到低位传送到flash器件中,当CS拉高后,写操作结束。这类SPI flash的特点是引脚数目少,且都是单向的,控制简单,但是其传输效率较低,特别是在时钟频率较低时尤为明显。
由于标准SPI flash器件的上述缺点,Macronix等半导体供应商推出了另外一种SPI flash器件,与标准的单线SPI flash相比,其特点是大部分引脚是双向的,如发送数据引脚同时又是串行数据输入输出引脚0(即SI/SIO0),接收数据引脚同时又是串行数据输入输出引脚1(即SO/SIO1),写保护引脚同时又是串行数据输入输出引脚2(即WP/SIO2),保持引脚同时又是串行数据输入输出引脚3(即HOLD/SIO3),因此这类SPI flash器件均支持1/2/4线的读写擦除等操作。
但是现有技术中缺少一种对标准SPI flash和多线SPI flash的读写擦除等操作的兼容控制的控制器。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提供了一种自动搬运且适应器件的多线SPI Flash控制器,包括总线从机接口模块、寄存器模块、中断产生模块、时钟信号产生模块、状态机模块、先进先出队列、移位控制模块、dma接口模块,
所述总线从机接口模块,作为处理器以及通用DMA等总线主机访问SPI flash控制器的通道,用于控制器与外部总线和内部FIFO和寄存器模块进行对接;并控制寄存器模块的读写;
寄存器模块,用于接收总线从机接口发过来的配置信息,并存储;通过控制信号线C1~C5对各个模块进行配置和控制;
状态机模块,用于所述SPI flash控制器的调度,其接收寄存器模块的控制信息以及FIFO的状态信息,利用这些控制信息产生相应的动作和信号;
中断产生模块,用于从状态机模块收集异常信息、开始和结束等关键信息,利用这些信息并结合寄存器模块的控制信息(C5),产生对应的中断信号,并将此中断信号伸出提供给片上系统(SoC)使用;
时钟信号产生模块,用来产生SPI flash接口的时钟SCLK,还接收状态机模块的控制信息;
先进先出队列(TX/TX FIFO):作为发送FIFO(TX FIFO)和接收FIFO(RX FIFO),发送FIFO和接收FIFO的分时切换;
移位控制模块:移位控制模块用于发送和接收数据的串行、并行之间相互转换;
dma接口模块:接收寄存器模块的控制信息(C4)和先进先出队列的状态信号,通过判断FIFO的状态和控制信息,决定是否向通用DMA发起请求:若FIFO中的数据低于或者高于阈值,则发起dma请求,等待DMA返回dma响应,DMA给回响应之后,其通过总线从机接口对SPIFlash控制器进行操作,将存储器(memory)中的数据读出并发送到FIFO,或者从FIFO读取数据存到存储器。
进一步的,所述寄存器模块存储的信息可以被主线从机接口读取,以供总线主机查询。
进一步的,其控制方法如下:
通过对SPI flash器件不同的操作的分析,可分为以下几个步骤:发送命令阶(即Command transfer),发送地址阶段(即Address transfer),发送无效字节阶段(即Dummytransfer)和发送或接收数据阶段(即Data transfer)。
进一步的,当需要接收或发送大量数据时,选择使用通用DMA来搬运数据以提高传输效率;当接收或发送少量数据时,不使能通用DMA,直接通过CPU将发送数据写入发送FIFO或从接收FIFO中将数据读出来。
本发明还提供了一种利用所述的自动搬运且适应器件的多线SPI Flash控制器通过通用DMA搬运数据的方法,包括如下步骤:
①将要发送的flash操作指令、地址、无效字节配置到寄存器模块;将传输数据连续的放入到存储器(memory)中;
②CPU通过总线配置通用DMA;
③CPU通过总线从机接口配置SPI flash控制器;
④CPU配置SPI flash控制器使能和从机使能,在发送数据过程中,每当发送FIFO低于设定阈值时,会向通用DMA发送dma请求信号,然后DMA将待发送数据从存储器中搬运到发送FIFO;在接收数据过程中,每当接收FIFO高于设定阈值时,也会向DMA发送dma请求信号,然后DMA将接收FIFO中数据读出去;
⑤当所有数据发送或接收完后,状态机模块自动将flash片选信号CS拉高,结束对flash的传输操作;
进一步的,步骤②中的配置的信息包括DMA的搬运方式、DMA数据源地址、DMA数据目的地址。
进一步的,步骤③中配置的信息包括:根据发送的flash操作指令选择是否使能发送命令极端、发送地址阶段、发送无效字节阶段和数据传输阶段,选择以1/2/4线发送命令、1/2/4线发送地址、1/2/4线发送无效字节和1/2/4线进行数据传输,读或写的时钟SCLK速率,发送和接收FIFO阈值,读取的数据量大小,是否使能发送和接收DMA,DMA发送和接收数据FIFO阈值。
进一步的,步骤④中,若对flash进行读操作,首先DMA将数据搬到发送FIFO,然后SPI flash控制器按照选择的模式,在状态机模块和移位控制模块的控制下,将flash操作指令、地址和无效字节,以1/2/4比特的形式发送到flash器件中,flash器件接收到相关信息后,同样以1/2/4比特模式输出数据到SPI flash控制器,SPI flash控制器在内部移位模块的控制下,以1/2/4比特形式将接收好的一帧数据存放到接收FIFO,当接收到预定长度的数据,硬件自动拉高片选信号CS;
当接收FIFO数据帧数等于或大于设定阈值时,则SPI flash控制器向DMA发出请求信号,DMA接收到请求信号后会将FIFO中的数据搬出,以继续接收数据。
进一步的,步骤④中,若对flash进行写操作,首先DMA将数据搬到发送FIFO,然后SPI flash控制器按照选择的模式,在状态机模块和移位控制模块的控制下,将flash操作指令、地址和无效字节,以1/2/4比特的形式发送到flash器件中,紧接着SPI flash控制器继续将要发送的数据以1/2/4比特的形式发送到flash器件,当发送FIFO内所有的发送数据发完后,硬件自动拉高片选信号CS;
当发送FIFO数据帧数等于或小于设定阈值时,则SPI flash控制器向DMA发出请求信号,DMA接收到请求信号后会继续将数据写入发送FIFO,以继续发送数据;
在对flash进行读操作过程中,当接收FIFO填满,还继续向接收FIFO写数据时,则产生接收FIFO溢出中断,已告知CPU进行相应处理;
进一步的,步骤⑤中在对flash进行写操作过程中,当发送FIFO所有数据读完,并继续读发送FIFO内数据,则产生发送FIFO空读中断,已告知CPU进行相应处理。
本发明的SPI flash控制器除支持标准的单线SPI flash外,同样也支持此类多线SPI flash,在时钟频率较低时,相比标准的SPI flash控制器,该多线SPI flash控制器能够大大提高数据传输效率。本发明的SPI flash控制器还包含DMA请求/响应及数据通道,利用系统中的通用DMA来搬运数据,这不仅可以大大减少CPU的负担、提高数据的传输效率,还充分利用了系统资源。
附图说明
图1是SPI flash控制器装置在系统中的使用情况;
图2是标准单线SPI flash读操作时序;
图3是标准单线SPI flash写操作时序;
图4是SPI flash控制器架构图;
图5是SPI flash控制器用于2线读flash的操作实例;
图6是SPI flash控制器用于4线写flash的操作实例。
具体实施方式
下面结合附图对本发明作进一步说明。
本发明的SPI flash控制器,如图4所示,其装置包含如下部分:
总线从机接口模块:是处理器以及通用DMA等总线主机访问SPI flash控制器的通道,用于本发明的控制器与外部总线和内部FIFO和寄存器模块进行对接。总线从机接口模块接收总线主机发起的写操作,通过写数据通道WR接收需要写入flash芯片的数据,并将此数据通过读/写数据线、控制线1发送给先进先出队列(TX FIFO)。总线从机接口模块还接收总线主机发起的读操作,接收到读操作之后,将从flash芯片读出的数据先通过读/写数据线、控制线1从先进先出队列(RX FIFO)读出,并通过读数据通道RD发出给总线主机。其中读/写控制线1包含发送(TX)FIFO的写使能以及接收(RX)FIFO的读使能。
另一方面,总线从机接口模块还负责寄存器模块的读写。其作用机制和从机接口与FIFO模块的交互机制一样。
寄存器模块:寄存器模块用于接收总线从机接口发过来的配置信息,并将这些信息存储下来。寄存器模块利用这些信息,通过控制信号线C1~C5对各个模块进行配置和控制。寄存器模块存储的信息还能被主线从机接口读取,以供总线主机查询。
中断产生模块:中断产生模块从状态机模块收集异常信息、开始和结束等关键信息,利用这些信息并结合寄存器模块的控制信息C5,产生对应的中断信号,并将此中断信号伸出提供给片上系统(SoC)使用。
时钟信号产生模块:时钟信号产生模块用来产生SPI flash接口的时钟SCLK,它接收一个比SCLK 2倍以上频率的高频时钟,对其进行分频产生对应的SCLK时钟,且该分频值由寄存器模块控制线C1控制。时钟信号产生模块还接收状态机的控制信息,状态机控制时钟的产生和关闭。
状态机模块:状态机模块负责整个SPI flash控制器的调度,其接收寄存器模块的控制信息以及FIFO的状态信息,利用这些控制信息产生相应的动作和信号,产生的动作和信号包括数据收发的开始于停止信号、异常信号、时钟开关信号、FIFO的读写使能信号(读/写控制线2)、移位使能信号、SPI flash的片选信号等。
先进先出队列(TX/TX FIFO):FIFO既可以当做发送FIFO(TX FIFO)也可以当做接收FIFO(RX FIFO),发送FIFO和接收FIFO的角色分时切换。在作为发送FIFO时,FIFO接收总线从机接口的发送数据,存到FIFO的队尾。同时,在发送FIFO队头的数据,在被状态机允许的情况下,发送给移位控制模块。在作为接收FIFO时,在被状态机允许的情况下,从移位控制模块接收数据,存到FIFO的队尾。同时,在发送FIFO队头的数据,从读/写数据线发送给总线从机接口。
移位控制模块:移位控制模块用于发送和接收数据的串行、并行之间相互转换。在发送时,移位控制模块从发送FIFO接收并行数据(如8bit, 16bit数据);分析当前控制信息C2得到SPI数据位宽(如1bit,2bit,4bit),并将并行数据转化成SPI数据位宽的数据,然后在芯片引脚上,驱动对应SPI数据位宽的数据线。在接收时,移位控制模块从在芯片引脚上获取SPI数据位宽的数据线,并将该数据转换成接收FIFO的并行数据(如8bit, 16bit数据)。通过移位控制模块的串行、并行之间的转换,使得本发明的SPI flash控制器能够适应各种SPI flash器件。
dma接口模块:dma接口模块接收寄存器模块的控制信息C4和FIFO模块的状态信号。通过判断FIFO的状态和控制信息,决定是否向通用DMA发起请求。若FIFO中的数据低于或者高于阈值,则发起dma请求,等待DMA返回dma响应。DMA给回响应之后,其通过总线从机接口对本发明的控制器进行操作,将存储器(memory)中的数据读出并发送到FIFO,或者从FIFO读取数据存到存储器。整个过程中不需要处理器(CPU)的干预,实现了数据的自动搬运。
本发明的SPI flash控制器,其控制方法如下:
通过对SPI flash器件不同的操作(包括读、写、擦除等)的分析,SPI flash的所有操作都可以分为以下几个步骤:发送命令阶(即Command transfer),发送地址阶段(即Address transfer),发送无效字节阶段(即Dummy transfer)和发送或接收数据阶段(即Data transfer)。
针对不同的操作,本发明的SPI flash控制器可以灵活的选择不同的控制方法。例如,当需要接收或发送大量数据时,可以选择使用通用DMA来搬运数据以提高传输效率;当接收或发送少量数据时,可以不使能通用DMA,直接通过CPU将发送数据写入发送FIFO或从接收FIFO中将数据读出来。
本发明的SPI flash控制器,其通过通用DMA进行数据搬运的操作包括如下步骤:
⑥将要发送的flash操作指令、地址、无效字节配置到寄存器模块;将传输数据连续的放入到存储器(memory)中;
⑦CPU通过总线配置通用DMA;
⑧CPU通过总线从机接口配置SPI flash控制器;
⑨CPU配置SPI flash控制器使能和从机使能,在发送数据过程中,每当发送FIFO低于设定阈值时,会向通用DMA发送dma请求信号,然后DMA将待发送数据从存储器中搬运到发送FIFO;在接收数据过程中,每当接收FIFO高于设定阈值时,也会向DMA发送dma请求信号,然后DMA将接收FIFO中数据读出去;
⑩当所有数据发送或接收完后,状态机模块自动将flash片选信号CS拉高,结束对flash的传输操作;
其中,步骤①中的传输数据仅在发送数据时存在,在接收数据的时候,该部分传输数据是从flash期间中读取回来的数据,无需预先在memory中准备好。
其中,步骤②中的配置信息包括DMA的搬运方式、DMA数据源地址、DMA数据目的地址等。
其中,步骤③中配置的信息包括:根据发送的flash操作指令选择是否使能发送命令极端、发送地址阶段、发送无效字节阶段和数据传输阶段,选择以1/2/4线发送命令、1/2/4线发送地址、1/2/4线发送无效字节和1/2/4线进行数据传输,读或写的时钟SCLK速率,发送和接收FIFO阈值,读取的数据量大小,是否使能发送和接收DMA,DMA发送和接收数据FIFO阈值等。
其中,步骤④若是对flash进行读操作,首先DMA将数据搬到发送FIFO,然后SPIflash控制器按照选择的模式(使能哪几个阶段和每个阶段以1/2/4线形式传输),在内部状态机和移位等模块的控制下,将flash操作指令、地址和无效字节,以1/2/4比特的形式发送到flash器件中,flash器件接收到相关信息后,同样以1/2/4比特模式输出数据到SPIflash控制器。SPI flash控制器在内部移位模块的控制下,以1/2/4比特形式将接收好的一帧数据存放到接收FIFO,当接收到预定长度的数据,硬件自动拉高片选信号CS。
进一步的,当接收FIFO数据帧数等于或大于设定阈值时,则SPI flash控制器向DMA发出请求信号,DMA接收到请求信号后会将FIFO中的数据搬出,以继续接收数据。
进一步的,若是对flash进行写操作,首先DMA将数据搬到发送FIFO,然后SPIflash控制器按照选择的模式(使能哪几个阶段和每个阶段以1/2/4线形式传输),在内部状态机和移位等模块的控制下,将flash操作指令、地址和无效字节,以1/2/4比特的形式发送到flash器件中,紧接着SPI flash控制器继续将要发送的数据以1/2/4比特的形式发送到flash器件,当发送FIFO内所有的发送数据发完后,硬件自动拉高片选信号CS。
进一步的,当发送FIFO数据帧数等于或小于设定阈值时,则SPI flash控制器向DMA发出请求信号,DMA接收到请求信号后会继续将数据写入发送FIFO,以继续发送数据。
进一步的,在对flash进行读操作过程中,当接收FIFO填满,还继续向接收FIFO写数据时,则产生接收FIFO溢出中断,已告知CPU进行相应处理;
其中,步骤⑤在对flash进行写操作过程中,当发送FIFO所有数据读完,并继续读发送FIFO内数据,则产生发送FIFO空读中断,已告知CPU进行相应处理。
如图5所示,本发明的SPI flash控制器用于2线SPI flash读操作的一实际例子,具体包括如下步骤:
①CPU将读取flash的操作指令Command、地址Address、无效字节Dummy信息通过总线从机接口配置到寄存器模块;传输数据无需配置。
②CPU通过总线配置通用DMA,设置DMA的搬运方式为从外设(本发明的SPI flash控制器)搬运到存储器(memory),设置DMA数据源地址为SPI flash控制器FIFO地址,设置DMA数据目的地址为存储器可用地址;
③CPU通过总线从机接口配置SPI flash控制器。配置的信息包括:flash操作指令为1 bit模式、地址为1 bit模式、Dummy为1 bit模式、数据为2 bit模式,读的时钟SCLK速率、接收FIFO阈值、读取的数据量大小;
④CPU通过总线从机接口配置SPI flash控制器使能和从机使能,在接收数据过程中,每当接收FIFO高于设定阈值时,FIFO模块的状态告知DMA接口模块,使得其向DMA发送dma请求信号,然后DMA将接收FIFO中数据读出去;
⑤当给定长度的数据接收完后,状态机模块自动将flash片选信号CS拉高,结束对flash的操作;
如图6所示,本发明的SPI flash控制器用于4线SPI flash写操作的一实际例子,具体包括如下步骤:
①CPU将要发送的flash操作指令Command、地址Address信息通过总线从机接口配置到寄存器模块;无效字节Dummy无需配置;将发送数据连续的放入到存储器(memory)中,起始地址为START_ADDR。
②CPU通过总线配置通用DMA,设置DMA的搬运方式为从存储器(memory)搬运到外设(本发明的SPI flash控制器),设置DMA数据源地址为存储器中数据地址START_ADDR,设置DMA数据目的地址为SPI flash控制器的FIFO地址;
③CPU通过总线从机接口配置SPI flash控制器。配置的信息包括:flash操作指令为1 bit模式、地址为4 bit模式、数据为4 bit模式,读的时钟SCLK速率、发送FIFO阈值、发送的数据量大小;
④CPU通过总线从机接口配置SPI flash控制器使能和从机使能,在发送数据过程中,每当发送FIFO低于设定阈值时,会向DMA发送dma请求信号,然后DMA将待发送数据从存储器中搬运到发送FIFO,最后经过移位控制模块将数据发送给flash器件;
⑤当所有数据发送完后,状态机模块自动将flash片选信号CS拉高,结束对flash的操作。
Claims (8)
1.自动搬运且适应器件的多线SPI Flash控制器,包括总线从机接口模块、寄存器模块、中断产生模块、时钟信号产生模块、状态机模块、先进先出队列、移位控制模块、dma接口模块,其特征在于:
所述总线从机接口模块,作为处理器以及通用DMA这些总线主机访问SPI flash控制器的通道,用于控制器与外部总线和内部FIFO和寄存器模块进行对接;并控制寄存器模块的读写;
寄存器模块,用于接收总线从机接口发过来的配置信息,并存储;通过控制信号线C1~C5对各个模块进行配置和控制;
状态机模块,用于所述SPI flash控制器的调度,其接收寄存器模块的控制信息以及FIFO的状态信息,利用这些控制信息产生相应的动作和信号;
中断产生模块,用于从状态机模块收集异常信息、开始和结束这些关键信息,利用这些信息并结合寄存器模块的控制信息(C5),产生对应的中断信号,并将此中断信号伸出提供给片上系统(SoC)使用;
时钟信号产生模块,用来产生SPI flash接口的时钟SCLK,还接收状态机模块的控制信息;
先进先出队列(TX/TX FIFO):作为发送FIFO(TX FIFO)和接收FIFO(RX FIFO),发送FIFO和接收FIFO的分时切换;
移位控制模块:移位控制模块用于发送和接收数据的串行、并行之间相互转换;
dma接口模块:接收寄存器模块的控制信息(C4)和先进先出队列的状态信号,通过判断FIFO的状态和控制信息,决定是否向通用DMA发起请求:若FIFO中的数据低于阈值,则发起dma请求,等待DMA返回dma响应,DMA给回响应之后,其通过总线从机接口对SPI Flash控制器进行操作,将存储器(memory)中的数据读出并发送到FIFO;若FIFO中的数据高于阈值,则发起dma请求,等待DMA返回dma响应,DMA给回响应之后,其通过总线从机接口对SPI Flash控制器进行操作,从FIFO读取数据存到存储器;
其控制方法如下:
通过对SPI flash器件不同的操作的分析,可分为以下几个步骤:发送命令阶(即Command transfer),发送地址阶段(即Address transfer),发送无效字节阶段(即Dummytransfer)和发送或接收数据阶段(即Data transfer);
所述寄存器模块存储的信息可以被主线从机接口读取,以供总线主机查询。
2.如权利要求1所述的自动搬运且适应器件的多线SPI Flash控制器,其特征在于:当需要接收或发送大量数据时,选择使用通用DMA来搬运数据以提高传输效率;当接收或发送少量数据时,不使能通用DMA,直接通过CPU将发送数据写入发送FIFO或从接收FIFO中将数据读出来。
3.一种利用权利要求1-2之一所述的自动搬运且适应器件的多线SPI Flash控制器通过通用DMA搬运数据的方法,其特征在于:包括如下步骤:
将要发送的flash操作指令、地址、无效字节配置到寄存器模块;将传输数据连续的放入到存储器(memory)中;
CPU通过总线配置通用DMA;
CPU通过总线从机接口配置SPI flash控制器;
CPU配置SPI flash控制器使能和从机使能,在发送数据过程中,每当发送FIFO低于设定阈值时,会向通用DMA发送dma请求信号,然后DMA将待发送数据从存储器中搬运到发送FIFO;在接收数据过程中,每当接收FIFO高于设定阈值时,也会向DMA发送dma请求信号,然后DMA将接收FIFO中数据读出去;
当所有数据发送或接收完后,状态机模块自动将flash片选信号CS拉高,结束对flash的传输操作。
4.如权利要求3的所述的搬运数据的方法,其特征在于:步骤②中的配置的信息包括DMA的搬运方式、DMA数据源地址、DMA数据目的地址。
5.如权利要求3的所述的搬运数据的方法,其特征在于:步骤③中配置的信息包括:根据发送的flash操作指令选择是否使能发送命令极端、发送地址阶段、发送无效字节阶段和数据传输阶段,选择以1/2/4线发送命令、1/2/4线发送地址、1/2/4线发送无效字节和1/2/4线进行数据传输,读或写的时钟SCLK速率,发送和接收FIFO阈值,读取的数据量大小,是否使能发送和接收DMA,DMA发送和接收数据FIFO阈值。
6.如权利要求3的所述的搬运数据的方法,其特征在于:步骤④中,若对flash进行读操作,首先DMA将数据搬到发送FIFO,然后SPI flash控制器按照选择的模式,在状态机模块和移位控制模块的控制下,将flash操作指令、地址和无效字节,以1/2/4比特的形式发送到flash器件中,flash器件接收到相关信息后,同样以1/2/4比特模式输出数据到SPI flash控制器,SPI flash控制器在内部移位模块的控制下,以1/2/4比特形式将接收好的一帧数据存放到接收FIFO,当接收到预定长度的数据,硬件自动拉高片选信号CS;
当接收FIFO数据帧数等于或大于设定阈值时,则SPI flash控制器向DMA发出请求信号,DMA接收到请求信号后会将FIFO中的数据搬出,以继续接收数据。
7.如权利要求3的所述的搬运数据的方法,其特征在于:步骤④中,若对flash进行写操作,首先DMA将数据搬到发送FIFO,然后SPI flash控制器按照选择的模式,在状态机模块和移位控制模块的控制下,将flash操作指令、地址和无效字节,以1/2/4比特的形式发送到flash器件中,紧接着SPI flash控制器继续将要发送的数据以1/2/4比特的形式发送到flash器件,当发送FIFO内所有的发送数据发完后,硬件自动拉高片选信号CS;
当发送FIFO数据帧数等于或小于设定阈值时,则SPI flash控制器向DMA发出请求信号,DMA接收到请求信号后会继续将数据写入发送FIFO,以继续发送数据;
在对flash进行读操作过程中,当接收FIFO填满,还继续向接收FIFO写数据时,则产生接收FIFO溢出中断,已告知CPU进行相应处理。
8.如权利要求3的所述的搬运数据的方法,其特征在于:步骤⑤中在对flash进行写操作过程中,当发送FIFO所有数据读完,并继续读发送FIFO内数据,则产生发送FIFO空读中断,已告知CPU进行相应处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710086193.0A CN106874224B (zh) | 2017-02-17 | 2017-02-17 | 自动搬运且适应器件的多线SPI-Flash控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710086193.0A CN106874224B (zh) | 2017-02-17 | 2017-02-17 | 自动搬运且适应器件的多线SPI-Flash控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874224A CN106874224A (zh) | 2017-06-20 |
CN106874224B true CN106874224B (zh) | 2020-08-18 |
Family
ID=59166925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710086193.0A Active CN106874224B (zh) | 2017-02-17 | 2017-02-17 | 自动搬运且适应器件的多线SPI-Flash控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874224B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959136B (zh) * | 2018-06-26 | 2020-12-25 | 豪威科技(上海)有限公司 | 基于spi的数据传输加速装置、系统及数据传输方法 |
CN109656626B (zh) * | 2018-12-11 | 2022-05-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于ahb总线sd卡数据自搬运方法及装置 |
CN109933553B (zh) * | 2019-02-28 | 2020-09-29 | 厦门码灵半导体技术有限公司 | 一种控制系统及其设计方法、一组控制系统、电子装置 |
CN109933293B (zh) * | 2019-03-25 | 2022-06-07 | 深圳忆联信息系统有限公司 | 基于SpiFlash的数据写入方法、装置和计算机设备 |
CN111008171B (zh) * | 2019-11-25 | 2020-12-22 | 中国兵器工业集团第二一四研究所苏州研发中心 | 一种带串行flash接口控制的通信ip电路 |
CN111143259B (zh) * | 2019-12-31 | 2021-09-17 | 大唐半导体科技有限公司 | 一种多线SPI flash控制器 |
CN111506531B (zh) * | 2020-03-27 | 2023-06-02 | 上海赛昉科技有限公司 | 一种easy-master微码模块及其配置方法 |
CN112052213B (zh) * | 2020-10-10 | 2022-12-02 | 乐鑫信息科技(上海)股份有限公司 | 增强型spi控制器以及操作spi控制器的方法 |
CN112685344A (zh) * | 2020-12-30 | 2021-04-20 | 合肥市芯海电子科技有限公司 | Dma编程电路及基于dma编程电路的编程方法 |
CN112711550B (zh) * | 2021-01-07 | 2023-12-29 | 无锡沐创集成电路设计有限公司 | Dma自动配置模块和片上系统soc |
CN113419985A (zh) * | 2021-06-15 | 2021-09-21 | 珠海市一微半导体有限公司 | Spi系统自动读取数据的控制方法及spi系统 |
CN113590520A (zh) * | 2021-06-15 | 2021-11-02 | 珠海一微半导体股份有限公司 | Spi系统自动写入数据的控制方法及spi系统 |
CN113326215B (zh) * | 2021-07-04 | 2024-01-19 | 芯河半导体科技(无锡)有限公司 | 一种spi nor及nand闪存传输模式识别方法 |
CN113886297B (zh) * | 2021-09-27 | 2023-12-01 | 北京中电华大电子设计有限责任公司 | 一种基于dma的spi并发通讯se装置及方法 |
CN114036096A (zh) * | 2021-11-04 | 2022-02-11 | 珠海一微半导体股份有限公司 | 一种基于总线接口的读控制器 |
CN114006787A (zh) * | 2021-12-31 | 2022-02-01 | 山东产研鲲云人工智能研究院有限公司 | 数据传输方法、设备以及计算机可读存储介质 |
CN114490460B (zh) * | 2022-03-31 | 2022-06-28 | 成都启英泰伦科技有限公司 | 一种用于asic的flash控制器及其控制方法 |
CN115391247B (zh) * | 2022-08-12 | 2023-11-03 | 青岛汉泰智能科技有限公司 | 一种phy数据传输系统 |
CN115328846A (zh) * | 2022-10-12 | 2022-11-11 | 中科声龙科技发展(北京)有限公司 | 一种实现数据操作的方法及装置 |
CN115858431B (zh) * | 2023-02-21 | 2023-05-30 | 北京国科环宇科技股份有限公司 | 数据传输控制方法、控制器及电子设备 |
CN116303163B (zh) * | 2023-05-24 | 2023-08-01 | 深圳市乐升半导体有限公司 | 图形控制器的SPI Flash访问方法以及系统 |
CN117407346B (zh) * | 2023-12-13 | 2024-04-05 | 芯能量集成电路(上海)有限公司 | 一种车规级芯片外部flash的采样点调整系统及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101127598B1 (ko) * | 2008-12-10 | 2012-03-23 | 한국전자통신연구원 | 센서네트워크에서 다중 안테나 정합과 dma 기반 데이터 전달 방법 및 이를 위한 싱크노드 |
CN102023956B (zh) * | 2009-09-23 | 2012-07-25 | 上海摩波彼克半导体有限公司 | 集成电路芯片中串行外设从器件接口结构及数据读写方法 |
CN102231143A (zh) * | 2011-07-04 | 2011-11-02 | 浙江大学 | 一种安全可复用spi外围接口电路 |
CN104809094B (zh) * | 2015-05-25 | 2017-11-24 | 中国电子科技集团公司第四十七研究所 | Spi控制器及其通信方法 |
-
2017
- 2017-02-17 CN CN201710086193.0A patent/CN106874224B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106874224A (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874224B (zh) | 自动搬运且适应器件的多线SPI-Flash控制器 | |
US10198382B2 (en) | 12C bus controller slave address register and command FIFO buffer | |
CN105183680B (zh) | 实现PCIe接口转CF卡接口的FPGA芯片及方法 | |
WO2022121199A1 (zh) | Qspi控制器,图像处理器及闪存访问方法 | |
GB2430512A (en) | Controller for NAND flash memory | |
CN115858431B (zh) | 数据传输控制方法、控制器及电子设备 | |
KR100919159B1 (ko) | 멀티미디어 카드 인터페이스 방법, 컴퓨터 프로그램 생성물및 장치 | |
US9734102B2 (en) | Data transfer | |
EP4002137A1 (en) | Secure digital (sd) direct command for improving throughput with a reduced memory footprint | |
KR101630599B1 (ko) | 시스템 성능 향상을 위한 제어 로직을 구비한 직렬 주변기기 인터페이스 및 그 구동 방법 | |
CN111506249A (zh) | 一种基于zynq平台的数据交互系统及方法 | |
CN112328523B (zh) | 传输双倍速率信号的方法、装置及系统 | |
KR20020073784A (ko) | 전송될 데이터 길이 값에 따라 전송 모드가 유동적으로변환되는 직접 메모리 억세스 컨트롤러 | |
US20090138673A1 (en) | Internal memory mapped external memory interface | |
CN111026691B (zh) | 基于apb总线的owi通讯设备 | |
JP2008015876A (ja) | データアクセスシステム、データアクセス装置、データアクセス集積回路及びデータアクセス方法 | |
CN116049054B (zh) | 一种spi从设备在跨时钟域中的数据读写方法及系统 | |
CN116756065A (zh) | 一种基于串行外设接口的芯片内执行预读取电路 | |
EP0473059B1 (en) | Communication control system | |
US20220214980A1 (en) | Optical transceiver and optical transceiver control method | |
JP6398309B2 (ja) | 情報処理装置、および情報処理方法 | |
US9128924B2 (en) | Method and apparatus for wireless broadband systems direct data transfer | |
US5588120A (en) | Communication control system for transmitting, from one data processing device to another, data of different formats along with an identification of the format and its corresponding DMA controller | |
JP2010198138A (ja) | データ転送装置、データ転送制御方法、データ転送制御プログラム及び記録媒体 | |
EP3029579A2 (en) | Controller with indirect accessible memory |
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 |