一种提高spi接口电路工作频率的方法

文档序号:6341295阅读:606来源:国知局
专利名称:一种提高spi接口电路工作频率的方法
技术领域
本发明涉及SPI slave接ロ的实现方法,即通过使SPI接ロ电路和内部总线电路进行异步处理,从而提高SPI接ロ电路工作频率的方法。
背景技术
SPI接ロ协议目前没有统ー标准,但有行业标准,主要有Motorola,TI, nationalsemiconductor三家厂商的标准。这些标准思路基本相同,给出了 spi host和spi slave之间的基本总线时序。而总线时序之上的通信协议则有使用者自己定义。SPI协议中主要涉及了 4个信号,SCK,MIS0,M0SI,CSn。其中SCK为主机端发送给本装置的时钟信号,在本装置中为输入管脚,MISO为本装置向主机端发送数据的管脚,在本装置中为输出管脚,MOSI为主机端向本装置发送数据的管脚,在本装置中为输入管脚,CSn 为为主机端向本装置发送片选信号的管脚,在本装置中为输入管脚,在一般的SPI slave设计中,SCK信号是作为同步数据使用的,即采用slave内部总线时钟对SCK进行采用,判断 SCK的上升沿和下降沿来同歩数据线MISO和M0SI。这样就限制了 SPI slave四个信号的エ 作频率最高不能超过内部总线频率的1/6。而在很多应用处理器中,SPI host输出的spi信号能够达到很高的频率,但受限于spi slave的工作频率上限,并不能很好的发挥spi host 高速的特点。本发明针对这ー缺点,进行了改进,降低spi slave接ロ的工作频率对内部总线时钟频率的依赖。从而大大提高了 spi slave的工作频率。

发明内容
本发明提供了ー种高速SPI slave接ロ的实现方法与装置,该方法通过异步处理的方式,大大降低了 SPI接ロ信号对内部总线时钟频率的依赖,从而提高了 SPI slave接ロ 信号的工作频率。本发明的具体方案分为两个部分一个为数据通路和控制电路的异步处理方式, 另ー个为基于SPI总线协议,定义的通信协议。ー种高速SPI slave接ロ的实现方法与装置的特征是把spi slave的信号SCK当作时钟使用,锁存spi host送来的数据M0SI,或者通过SCK时钟把slave内部的数据通过信号MISO发射出去。在内部,SCK时钟域内部总线时钟域之间进行异步处理,主要采用了异步fifo和信号握手的方式。为了提高效率,在总线时序协议之上,定义了通信协议分为命令字段,和数据字段两部分。其中命令字段长度为8bit,数据字段分为两种,16bit长,或者32bit长度的整数倍。


图1是SPI slve的数据通路,分为内部总线时域电路和spi接ロ时域电路。
图2是spi lave的spi接ロ SCK时域时钟结构图。图3是spi lave的命令字段和数据字段格式。图4是spi接ロ读spi寄存器。图5是spi接ロ写spi寄存器。图6是spi接ロ读内部总线数据。图7是spi接ロ向内部总线写数据。
具体实施例方式以下结合附图,具体说明本发明。如图1所示,spi接ロ时域分为spi_slve_tx和spi_slve_rx两个模块,这两个模块负责生成符合协议规范的信号以及解析协议规范的相关信号。这些信号包括四个SCK, MISO, MOSI, CSn0作为slave设备,SCK, CSn, MOSI信号为输入信号,MISO为输出信号。Spi_SlVe_rx模块负责把spi host下发的串行数据移入rx_shift_l寄存器中,把其转化成并行数据,如果是命令字段,则在cmcLdecode中对命令译码,如果是数据,则进入 rx_shift_2寄存器中,然后写入内部总线时域。Spi_SlVe_tx模块负责把并行数据通过tx_shift_l转化成串行数据,通过MISO 送给主机。该模块发送的数据主要来自Spi_tx_fifo,即内部总线时域的数据,或者spi_ regfile,即spi接ロ可以访问的寄存器。如图1 所示,内部总线时域分为 spi_tx_fifo、spi_rx_fifo、spi_regfile、ahb_ regfile、spi_tx_sync> spi_rx_sync バ个牛旲块。spi_tx_sync和Spi_rX_SynC模块负责处理异步信号处理,即这两个模块负责同步从spi接ロ时域送来的控制信号,如图1所示tx_rd和rx_wr。内部总线时域根据tx_ rd_sync信号读取spi_tx_fifo中的数据或者spi_regfile中的寄存器,根据rx_wr_sync 信号向spi_rx_fifo或者spi_regfile的寄存器中写入数据。spi_regfile和ahb_regfile模块主要是电路配置寄存器,其中spi_regfile模块中包含spi接ロ可以访问的寄存器,而ahb_regfile模块中包含内部总线可以访问的寄存
οspi_tx_fifo和spi_rx_fif0模块主要是内部总线和spi接ロ进行数据交互的缓冲器。spi_tx_fifo模块用来缓存从内部总线送给spi host的数据,Spi_rx_fif0缓存spi host下发给内部总线的数据。如图2所示,为spi接ロ时域时钟结构图。当(CP0L = 0,CPHA = 1)或者(CP0L =LCPHA = 0),发射电路时钟clk_spi_tx = SCK,接收电路时钟为clk_spi_rx = SCK, 当(CP0L = 0,CPHA = 0)或者(CP0L = 1,CPHA = 1)时,发射电路时钟 clk_spi_tx = SCK,接收电路时钟clk_spi_rx = SCK。发射电路和接收电路的时钟正好是同源,但反相。如图3所示,为spi接ロ定义的数据通信协议格式。该格式分为CMD字段,和DATA 字段。其中CMD字段为Sbit长,最高比特为读写控制为,0 读,1 写;其余7bit为地址段。 DATA字段分为两种16bit长或者32bit长度的整数倍,16bit主要用于spi接ロ访问spi_ regfile,而32bit整数倍的数据长度主要是spi接口和内部总线进行数据传输时使用。如图4,图5所示,为spi接ロ对内部寄存器的访问过程,采用(CPOL = 0,CPHA =0)模式,其中CMD和DATA之间不需要时间等待,或者插入空闲SCK。如图6,图7所示,为spi接ロ访问内部总线数据。采用(CPOL = 0,CPHA = 0)模式,其中CMD和DATA之间不需要时间等待,或者插入空闲SCK。具体工作流程如下spi host 写 spi 寄存器时序如图4所示,Spi_SlVe_rx模块接收到命令后,解码,给出要被访问的寄存器的片选信号reg_CS = 1,同步到内部总线时域为reg_cs_sync = 1,给出写命令rd_wr = 1,,同步到内部总线时域为rd_wr_Syn = l,然后内部总线时域电路把rx_shift_2中的数据 spi_rx_dat写入spi_regfile寄存器堆的相应寄存器中。spi host 读 spi 寄存器时序如图5所示,Spi_SlVe_rx模块接收到命令后,解码,给出要被访问的寄存器的片选信号reg_CS = 1,同步到内部总线时域为reg_cs_sync = 1,给出读命令rd_wr = 0,, 同步到内部总线时域为rd_wr_sync = 0,同时打开发送通道tx_ch_on = 1,spi_regfile寄存器堆中被选中的寄存器通过spi_tX_dat把数据送给Spi_SlVe_tx模块,该模块把收到的并行数据串行移出。spi host向内部总线写入数据时序如图6所示,spi_slve_rx模块接收到命令后,解码,给出要被访问的数据端 ロ片选信号dat_CS = 1,同步到内部总线时域为dat_CS_SynC = 1,给出写命令rd_wr = 1,,同步到内部总线时域为rd_wr_SynC = 1,然后内部总线时域电路把rx_shift_2中的数据spi_rX_dat写入spi_rx_fif0中,然后内部总线DMA再把数据从spi_rx_fif0搬移到目的地。spi host从内部总线读取数据时序如图7所示,内部总线系统先把数据搬移到spi_tx_fif0中,然后通知spi host有数据需要发送,然后,host发起读数据操作,spi_slVe_rX模块接收到命令后,解码, 给出要被访问的寄存器的片选信号dat_cs = 1,同步到内部总线时域为dat_CS_SynC = 1, 给出读命令rd_wr = 0,同步到内部总线时域为rd_wr_SynC = 0,同时打开发送通道tx_ch_ on = 1,则数据从spi_tx_fif0中取到,通过spi_tX_dat送给spi_slve_tx模块,该模块把收到的并行数据串行移出。本发明提供了ー种高速SPI slave接ロ的实现方法与装置。该方法使得spi接ロ 信号的工作频率和内部总线时钟频率的依赖性大大降低,从而使得spi接ロ工作频率可以远远大于内部总线时钟频率,从而提高呑吐率。具体提高倍数和spi_slVe_rX模块、spi_ Slve_rx模块中的移位寄存器位宽关系相当大,移位寄存器位宽越大,spi接ロ信号工作频率相对于内部总线频率可以越高。以上公开的仅为本发明的几个具体实施例,但本发明的保护范围并不局限于此, 任何本领域的技术人员能思之的变化都应落在本发明的保护范围内。
权利要求
1.ー种高速SPI slave接ロ的实现方法,其特征在干,SPI接ロ部分时钟和内部总线时钟采用异步时钟处理方式,SPI接ロ部分电路采用主机端发送的时钟信号为时钟,通过该时钟锁存spi host送来的数据或者把数据发送给spi host,使SPI接ロ信号工作频率高于内部总线时钟频率。
2.如权利要求1所述的ー种高速SPIslave接ロ的实现方法,其特征在于SPI接ロ电路部分从spi host接收到的数据通过异步处理,送给内部fifo,或者SPI接ロ电路通过异步处理,从内部fifo获取数据发送给spi host。
3.如权利要求1所述的ー种高速SPIslave接ロ的实现方法,其特征在于spi接ロ控制信号采用8bit宽,访问寄存器数据时,数据宽度为16bit,访问数据端ロ吋,数据宽度为 32bit的整数倍。
4.如权利要求1所述的ー种高速SPIslave接ロ的实现方法,其特征在于spi在下发命令后,到数据的返回之间不需要时间等待或者插入空闲的主机端发送的时钟信号。
5.如权利要求1所述的ー种高速SPIslave接ロ的实现方法,其特征在于以主机端发送的时钟信号为时钟驱动的输出电路,只把内部总线时域的并行数据转换成串行数据发射出去,以主机端发送的时钟信号为时钟驱动的输入电路实现了串行数据转换成并行数据, 以及命令译码的功能,SPI接口和内部总线传输的数据以及SPI接ロ可访问的寄存器都存储在内部总线时域。
全文摘要
本发明是一种提高SPI接口电路工作频率的方法,提供一种SPI slave接口的高速实现方法。通过把SPI接口的SCK信号当作时钟处理,使SPI接口信号和内部总线信号实现异步通信,从而解除SCK时钟过分依赖内部总线时钟的缺陷,使SCK最高工作频率可以达到内部总线时钟的6倍左右。
文档编号G06F13/42GK102567272SQ201010622319
公开日2012年7月11日 申请日期2010年12月27日 优先权日2010年12月27日
发明者刘鹏, 周卓, 赵彦光 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1