CN106874224B - 自动搬运且适应器件的多线SPI-Flash控制器 - Google Patents

自动搬运且适应器件的多线SPI-Flash控制器 Download PDF

Info

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
Application number
CN201710086193.0A
Other languages
English (en)
Other versions
CN106874224A (zh
Inventor
刘晶
张晓旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Shuotian Technology Co ltd
Original Assignee
Hangzhou Shuotian Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Shuotian Technology Co ltd filed Critical Hangzhou Shuotian Technology Co ltd
Priority to CN201710086193.0A priority Critical patent/CN106874224B/zh
Publication of CN106874224A publication Critical patent/CN106874224A/zh
Application granted granted Critical
Publication of CN106874224B publication Critical patent/CN106874224B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling 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控制器
技术领域.
本发明涉及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进行相应处理。
CN201710086193.0A 2017-02-17 2017-02-17 自动搬运且适应器件的多线SPI-Flash控制器 Active CN106874224B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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控制器及其通信方法

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