集成在芯片内的高速串行外围接口电路的制作方法

文档序号:6464937阅读:210来源:国知局

专利名称::集成在芯片内的高速串行外围接口电路的制作方法
技术领域
:本发明涉及串行外围接口,尤其是一种集成在芯片内的串行通讯接口电路。
背景技术
:随着芯片日益的系统集成化和复杂化,市场上越来越多的芯片集成了微处理器,而且芯片的外围通讯接口也越来越丰富,其中串行外围接口(SPI)就是常用的一种。如同其名称一样,SPI主要是用作微处理器与外部设备进行通信,比如SD卡,串行FLASH等,可见SPI应用很广。但是SPI需要微处理器与外部设备的频繁通信来完成数据交互,因此微处理器的工作负担很大,SPI只能靠提高系统时钟的频率来增加数据吞吐量,从而在一定的系统频率下局限了SPI的传输速度。人们试图解决SPI装置的这个缺点。在专利申请号200480034506.9中由E'兰布朗克等提出名为"用于改进数据吞吐量的写入缓冲器的串行外围接口SPI装置"的专利中做出了尝试(以下称为200480034506.9专利)。他们提出了一种通过避免写入冲突和主时钟延长来改进数据吞吐量的方法,虽然在一定的系统频率下能提高一点传输速度,但是毕竟还是没有本质上解决问题,即仍需通过CPU的大量干预来完成数据传输,等待CPU时间和CPU计算时间占了SPI的大部分传输时间,故在大规模芯片中这种工作方式会占用其他模块的CPU工作时间,影响其他模块的工作速度,尤其在大量数据通讯的时候,它会大大增加CPU的工作负担,严重影响整体芯片的性能,而且该SPI传输效率很低,本身的数据吞吐量仍非常有限。同时,外部器件的设计本身也处于快速发展之中,如SD卡有高速、低速卡,而且容量种类丰富,200480034506.9专利的SPI可以驱动SD卡,但是所有的数据都是通过CPU来传递,而且软件驱动需要占用CPU来计算复杂的CRC校验位,尤其是驱动大容量的SD卡,该SPI低速的特性更为明显,整个芯片的性能降低更为显著,因此目前的SPI装置无法在保证一定灵活性的前提下同时适应大量复杂的高速数据传输环境。
发明内容为了克服己有的串行外围接口SPI装置需要占用大量CPU资源、不能适应大量复杂高速数据传输、数据吞吐量受限的不足,本发明提供一种大大减少占用CPU资源、能够适应大量复杂高速数据传输,增大数据吞吐量的集成在芯片内的高速串行外围接口电路。本发明解决其技术问题所采用的技术方案是一种集成在芯片内的高速串行外围接口电路,包括常规串行外围接口电路模块,所述常规串行外围接口电路模块包括数据缓冲器,用于缓冲写数据txdfifo和读数据rxdfifo;数据打包/解包单元,用于将写操作下将写数据txdfifo读出的数拆分成一个个数据单元,在读操作下用于将芯片外读取的数据存入读数据rxdfifo;SPI传输控制层,用于控制数据打包/解包单元和SPI物理层之间的时序关系写操作时数据打包/解包单元完成数据单元的还原时使能SPI物理层,读操作时SPI物理层完成串转并时使能数据打包/解包单元;SPI物理层,用于实现并转串、串转并及大小端;AHBslave接口单元,用于基于AHB总线跟CPU交互,实现SPI工作模式的配置和SPI工作状态的读取;所述的高速串行外围接口电路设有普通工作模式;所述高速串行外围接口电路还包括串行外围接口电路加速模块,所述的高速串行外围接口电路还设有加速工作模式,所述串行外围接口电路加速模块还包括AHBmaster接口单元,用于基于AHB总线来读/写DDR;写加速单元,用于采用单块/多块写操作方式发送同步头FF—发送单块FE、多块FC通过AHBmaster接口单元从DDR取数据至写数据txdfifo且常规串行外围接口电路模块的写操作,同时启动CRC计算单元—发送CRC校验位;读加速单元,用于启动常规串行外围接口电路模块的读操作且启动AHBmaster接口单元将读数据rxdfifo里数据发送至DDR,同时启动CRC计算单元—CRC校验—发送同步头FF且拉低片选印/—化/;CRC计算单元,用于采用CRC计算公式进行计算;加速控制单元,用于启动所述写加速单元或读加速单元,并控制读写方向,配置寄存器,反映状态;在加速工作模式下,数据传输过程中CPU告知数据存取地址以长度,由加速控制单元控制读写,在完成加速操作时,通过AHBmaster接口单元发送中断。作为优选的一种方案所述的CRC计算单元采用16位CRC的计算公式G(x)=x16+x12+:x5+l,其中x为8位数据单元。进一步,在所述数据缓冲器由二块32深度、32宽度的FIFO组成,其中一块用于缓存写数据txdfifo,另外一块用于缓冲读数据rxdfifo。普通工作模式下,写操作是CPU配置写入txdfifo,读操作是CPU读取rxdfifo;加速工作模式下,写操作是直接到DDR取数据写入txdfifo,读操作是直接将ncdfifo里的数据发至DDR目标地址且发中断给CPU。再进一步,所述的数据打包/解包单元中,在读操作下将芯片外读取的数据打包成32位存入读数据rxdfifo或直接存入读数据rxdfifo。更进一步,所述的SPI物理层还包含时钟产生器,用于产生2-256任意分频的时钟给片外器件,并设置波特率。所述AHBslave接口单元支持8位、16位、32位的数据单元,支持打包和不打包模式,支持1/21/256bit/clk,每个数据单元支持大端和小端模式,同时支持普通SPI模式、加速SPI模式和串行FLASH模式。本发明的技术构思为该串行外围接口电路主要由常规SPI模块和SPI加速模块组成,其中常规SPI模块由数据缓冲器、数据打包/解包单元、SPI传输控制层、SPI物理层和AHBslave接口单元组成,SPI加速模块由AHBmaster接口单元、写加速单元、读加速单元、CRC计算单元和加速控制单元组成。该电路支持普通工作模式和加速工作模式。常规SPI模块采用普通工作模式,它将CPU要传输的数据经过AHBslave接口单元写入数据缓冲器,再由数据缓冲器取出经数据打包/解包单元分解还原成数据单元,通过SPI传输控制层控制将并行的数据单元送入到SPI物理层,从而可以进一步分解成串行的数据写入到外部器件;将从外部器件读取的串行数据经SPI物理层转化为并行的数据单元,通过SPI传输控制层控制将数据单元送入到数据打包/解包单元进行打包,存入数据缓冲器,CPU通过AHBslave接口单元从数据缓冲器读取该外部器件的数据,故这种模式需要CPU极大的干预来完成与外部器件的数据通讯,虽然传输速度慢,但是适合于发送复杂的命令字。SPI加速模块采用加速工作模式,整个传输过程中只需要CPU告知数据存取地址及长度,无需其它的干预就可以完成数据交互写操作时候,加速控制单元启动写加速单元,写加速单元自动启动常规SPI模块来完成同步头和start—token(单块FE,多块FC)的发送,然后通过AHBmaster接口单元从DDR取数据至数据缓冲器,并且再次自动启动常规SPI模块,完成将数据缓冲器中的数据写入到外部器件中,同时写加速单元启动CRC计算单元来计算写数据的CRC校验位,当完成有效数据的传输时,启动常规SPI模块来发送该CRC校验位;读操作时候,加速控制单元启动读加速单元,读加速单元自动启动常规SPI模块来完成对外围器件的读取,且将读取的数据存入到数据缓冲器,启动CRC计算单元来计算读取数据的CRC校验位,同时启动AHBmaster接口单元将数据缓冲器中的数据发送至DDR,当完成对外围器件的读取时,将读取到的CRC校验位和CRC计算单元的结果进行对比来检验数据传输是否正确,并且将该对比结果写入到AHBslave模块里的对应状态寄存器里,最后启动常规SPI模块来发送同步头,同时拉低外围器件的片选信号,此时从外部器件读取的数据均放在DDR上。当完成SPI加速操作时,均会通过AHBslave接口单元发出中断,便于软件进行下一步操作,与常规技术相比可,本发明SPI电路的加速工作模式不仅可以通过CRC计算单元来实现复杂的CRC计算,而且其所有的交互数据都是通过AHBmaster接口单元和DDR之间的传输来传递,与外部器件通讯期间无需CPU进行干预,大大减少了CPU的负担,在较低的系统频率下极大地提高数据传输的速度,减少功耗。此外,该SPI电路还可以实现串行FLASH芯片跟CPU之间的互相通讯。本发明的有益效果主要表现在1、在需要发送不同命令字且数据量小时候可以启动常规SPI模块,这样在保证接口目标的灵活性前提下,提高了系统性能的稳定性;2、在需要发送命令相对固定、数据量大时候可以启动SPI加速模块,这样在减少CPU工作负担条件下,极大提高了数据传输速度;3、在一定数据吞吐量条件下它较常规SPI需要更低的系统频率,从而降低了功耗;4、SPI加速模块的读/写特有命令可以通过CPU配置来屏蔽,从而在保证速度的前提下增强了对外部器件加速的兼容性,真正实现了保证一定灵活性前提下同时适应大量复杂数据传输环境的目的。图1是本发明的高速SPI电路结构框图。图2是本发明的SPI与外部器件控制时序图,其中(a)所示为cpha=0cpol二0的示意图;(b)戶/示为cpha=0cpol=l时的示意图;(c)所示为cpha二lcpol^时的示意图;(d)所示为cpha=lcPol=l时的示意图。图3是本发明的SPI串行FLASH操作模式时序图,其中(a)所示为读FLASH的示意图,(b)所示为写FLASH的示意图。图4是本发明的数据打包电原理图。图5是本发明的数据解包电原理图。图6是本发明的AHBslave接口时序图,其中(a)所示为读slave的示意图,(b)所示为写slave的示意图。图7是本发明的AHBmaster接口时序图,其中(a)所示为master写操作的示意图,(b)所示为master读操作的示意图。图8是本发明的32位数据单元流水操作时序图。具体实施例方式下面结合附图对本发明作进一步描述。参照图1图8,一种集成在芯片内的高速串行外围接口电路,包括常规串行外围接口电路模块,所述常规串行外围接口电路模块包括:数据缓冲器,用于缓冲写数据txdfifo和读数据rxdfifo;数据打包/解包单元,用于将写操作下将写数据txdfifo读出的数拆分成一个个数据单元,在读操作下用于将芯片外读取的数据存入读数据rxdfifo;SPI传输控制层,用于控制数据打包/解包单元和SPI物理层之间的时序关系写操作时数据打包/解包单元完成数据单元的还原时使能SPI物理层,读操作时SPI物理层完成串转并时使能数据打包/解包单元;SPI物理层,用于实现并转串、串转并及大小端;AHBslave接口单元,用于基于AHB总线跟CPU交互,实现SPI工作模式的配置和SPI工作状态的读取;所述的高速串行外围接口电路设有普通工作模式;所述高速串行外围接口电路还包括串行外围接口电路加速模块,所述的高速串行外围接口电路还设有加速工作模式,所述串行外围接口电路加速模块还包括AHBmaster接口单元,用于基于AHB总线来读/写DDR;写加速单元,用于采用单块/多块写操作方式发送同步头FF—发送单块FE、多块FC—通过AHBmaster接口单元从DDR取数据至写数据txdfifo且常规串行外围接口电路模块的写操作,同时启动CRC计算单元—发送CRC校验位;读加速单元,用于启动常规串行外围接口电路模块的读操作且启动AHBmaster接口单元将读数据rxdfifo里数据发送至DDR,同时启动CRC计算单元—CRC校验—发送同步头FF且拉低片选spi_sel;CRC计算单元,用于采用CRC计算公式进行计算;加速控制单元,用于启动所述写加速单元或读加速单元,并控制读写方向,配置寄存器,反映状态;在加速工作模式下,数据传输过程中CPU告知数据存取地址以长度,由加速控制单元控制读写,在完成加速操作时,通过AHBmaster接口单元发送中断。本发明的高速SPI电路是基于AHB总线的CPU和外部器件串行通讯接口,其结构框图如图1所示,其中spi—sel是给外部器件的片选信号(低电平有效),spi—sck是给外部器件的时钟,spi—mosi是写入外部器件的串行数据,spi-miso是从外部器件读出的串行数据。该电路由常规SPI模块和SPI加速模块组成,其中常规SPI模块由数据缓冲器、数据打包/解包单元、SPI传输控制层、SPI物理层和AHBslave接口单元组成,SPI加速模块由AHBmaster接口单元、写加速单元、读加速单元、CRC计算单元和加速控制单元组成。常规SPI模块遵照SPI协议,将CPU要传输的数据经过AHBslave接口单元写入数据缓冲器,再由数据缓冲器取出经数据打包/解包单元分解还原成数据单元,通过SPI传输控制层控制将并行的数据单元送入到SPI物理层,从而可以进一步分解成串行的数据写入到外部器件;将从外部器件读取的串行数据经SPI物理层转化为并行的数据单元,通过SPI传输控制层控制将数据单元送入到数据打包/解包单元进行打包,存入数据缓冲器,CPU通过AHBslave接口单元从数据缓冲器读取该外部器件的数据。常规SPI模块跟外部器件的控制关系如下表1200810121248.8说明书第9/16页所示,<table>tableseeoriginaldocumentpage13</column></row><table>表l具体的控制时序图如图2所示,其中tsels、tw、tselh、tdis都是参数可配,这样通过CPU的参数配置可以满足不同的外部器件对控制信号的延迟及驱动/采样时钟的相位要求,增强了兼容性。常规SPI模块还可以通过CPU配置实现串行FLASH芯片跟CPU之间的互相通讯读操作时候,首先需要往Flash发送64bit的命令,即命令字52(8bit)+4个"1""+页地址(libit)+页内字节的起始地址(9bit)+32个无关位,发送完这64bit(通常是组合成8个字节)命令后,紧跟着从Flash读数据,每读出一个字节,字节地址自动加l,如遇到该页的末尾,只要有spi—sck时钟,系统再加到该页的起始处读数据,在整个操作过程中spi—sel始终为"0",当sp^sel脚回到"r时,将终止此次操作,spi一miso脚恢复到高阻状态;写操作时候首先需要往Flash发送32bit的命令,紧跟着发送写入的数据,具体的时序如图3所示。由此可见,常规SPI模块虽然需要CPU极大的干预来完成与外部器件的数据通讯,但是它很灵活,可以支持不同类型的外部器件。SPI加速模块工作在一种类似于"DMA"的方式,以往CPU对常规SPI的控制,现在由SPI加速模块完成,整个传输过程中只需要CPU告知数据存取地址及长度,无需其它的干预就可以完成数据交互写操作时候,加速控制单元启动写加速单元,写加速单元自动启动常规SPI模块来完成同步头和start一token(单块FE,多块FC)的发送,然后通过AHBmaster接口单元从DDR取数据至数据缓冲器,并且再次自动启动常规SPI模块,完成将数据缓冲器中的数据写入到外部器件中,同时写加速单元启动CRC计算单元来计算写数据的CRC校验位,当完成有效数据的传输时,启动常规SPI模块来发送该CRC校验位;读操作时候,加速控制单元启动读加速单元,读加速单元自动启动常规SPI模块来完成对外围器件的读取,且将读取的数据存入到数据缓冲器,启动CRC计算单元来计算读取数据的CRC校验位,同时启动AHBmaster接口单元将数据缓冲器中的数据发送至DDR,当完成对外围器件的读取时,将读取到的CRC校验位和CRC计算单元的结果进行对比来检验数据传输是否正确,并且将该对比结果写入到AHBslave模块里的对应状态寄存器里,最后启动常规SPI模块来发送同步头,同时拉低外围器件的片选信号,此时从外部器件读取的数据均放在DDR上。当完成SPI加速操作时,均会通过AHBslave接口单元发出中断,便于软件进行下一步操作,由此可见,SPI加速模块不仅可以通过CRC计算单元来实现复杂的CRC计算,而且其所有的交互数据都是通过AHBmaster接口单元和DDR之间的传输来传递,与外部器件通讯期间无需CPU进行干预,大大减少了CPU工作量,在较低的系统频率下极大地提高数据传输的速度,减少功耗,但是鉴于不同器件其命令字不同,而且同一种器件其初始化阶段的命令字多且复杂,同时考虑到硬件复杂性,故SPI加速模块只能适用于命令字相对固定且数据量大阶段(即数据传输阶段),对于支持读/写特有命令的外部器件,比如SD卡,它的加速性能更为优越,同时该读/写特有命令又可以通过CPU配置来屏蔽,从而可以适用于其它器件的加速。以下结合图1的结构框图详细说明主要部件的功能及结构。数据缓冲器数据缓冲器由二块32深度、32宽度的FIFO组成,其中一块用于缓存写数据(txdfifo),另外一块用于缓冲读数据(rxdfifo)。普通模式下,写操作是CPU配置写入txdfifo,读操作是CPU读取rxdfifo。加速模式下,写操作是SPI利用AHB总线直接到DDR取数据写入txdfifo,读操作是SPI直接将rxdfifo里的数据发至DDR目标地址且发中断给CPU。数据打包/解包单元数据打包/解包单元如图4、5所示,其中打包使能信号由CPU配置,32位寄存器组由32个D触发器构成。(1)写操作且打包模式下,32位寄存器组0和32位寄存器组1相连组成一个右移寄存器组,txdfifo里的数据是几个数据单元打包组成。当读txdfifo时,先将读出的数据存到32位寄存器组0,32位寄存器组1将上次传输好的数据单元右移出D触发器,同时32位寄存器组0右移数据入32位寄存器组1的高位,当右移个数等于数据单元长度时就完成数据解包。(2)写操作且不打包模式下,txdfifo读出的数就是数据单元,可以直接存到32位寄存器组1。(3)读操作且打包模式下,该过程是写操作且打包模式的逆过程,32位寄存器组2和32位寄存器组3相连组成一个右移寄存器组,rxdfifo里的数据是几个数据单元打包组成,SPI物理层将外围的串行数据转为并行数据且存于32位寄存器组2,32位寄存器组2和32位寄存器组3同时右移操作,32位寄存器组2里的数据存入32位寄存器组3空闲区,当32位寄存器组3满32位时候写入到rxdfifo。(4)读操作且不打包模式下,rxdfifo的每一个地址所存的数据就是一个数据单元,故可以直接将32位寄存器组2写入到rxdfifo。SPI传输控制层SPI传输控制层用于控制数据打包/解包单元和SPI物理层之间的时序关系写操作时数据打包/解包单元完成数据单元的还原时使能SPI物理层;读操作时SPI物理层完成串转并时使能数据打包/解包单元。SPI物理层SPI物理层用于实现并转串(写)、串转并(读)及大小端功能。并转串可以通过D触发器首尾相接构成,大端模式下,由数据单元的最高位作为出口左移完成;小端模式下,由数据单元的最低位作为出口右移完成。此外,SPI物理层还包含了时钟产生器,它可以产生2-256任意分频的时钟给片外器件,实现波特率的灵活设置,而这个时钟产生器在偶分频时候用时钟上升沿触发的加法计数器实现,奇分频时候将下降沿触发加法计数器产生信号和上升沿触发加法计数器产生信号经过或门实现。AHBslave接口单元AHBslave接口单元是基于AHB总线来跟CPU交互,实现SPI工作模式的配置和SPI工作状态的读取。该电路支持8位、16位、32位的数据单元,支持打包和不打包模式,支持1/21/256bit/clk,每个数据单元支持大端和小端模式,同时支持普通SPI模式、加速SPI模式和串行FLASH模式,AHBslave接口单元的时序如图6所示。AHBmaster接口单元AHBmaster接口单元是基于AHB总线来读/写DDR,其控制时序如图7所示。在加速控制单元控制下,利用该模块,SPI就类似DMA—样,不需要CPU干预,直接将DDR的数据写入到外部器件或直接将外部器件的数据读入到DDR。而对于常规的SPI操作,通讯的数据都需要CPU跟SPI直接交互来完成,相同的系统频率下常规的SPI数据吞吐量小,CPU工作量大。写加速单元和读加速单元写/读加速单元主要应用于命令相对固定,数据量较大的情况,本发明的写加速单元采用单块/多块写操作方式(1)发送同步头FF—(2)发送start—token(单块FE,多块FC)—(3)通过AHBmaster接口单元从DDR取数据至txdfifo且启动SPI模块写操作,同时启动CRC计算单元—(4)发送CRC校验位。具体实现过程可以通过一个具3个状态的状态机来整体控制状态a代表(1)、(2)过程,同步头和start—token当作一个16位数据单元发送,在状态a时候可以将这个16位数据单元写入到txdfifo,同时启动常规SPI模块的写操作来发送该16数据单元至外部器件;完成状态a后可以跳至状态b,状态b用于实现过程(3),它启动AHBmaster来读DDR数据入txdfifo,同时读取txdfifo里数据入常规SPI模块来执行写操作,每当数据打包/解包单元完成数据单元还原时候就开始计算这个数据单元对应的CRC校验位;完成状态b后可以跳至状态c,状态c用于实现过程(4),这时候已经完成了写操作,CRC计算单元的结果就是要传输数据的最终CRC校验位(16位),这时只要将这个16位CRC校验位置入txdfifo且启动常规SPI模块来发送即可。本实施例的读加速单元采用的读操作方式为(5)启动SPI模块读操作且启动AHBmaster接口单元将rxdfifo里数据发送至DDR,同时启动CRC计算单元—(6)CRC校验—(7)发送同步头FF且拉低片选spi—sel。具体实现过程可以通过一个具3个状态的状态机来整体控制状态d代表过程(5),它启动常规SPI模块去读外部器件,一旦rxdfifo半满就通过AHBmaster模块写DDR,每当SPI物理层完成一个数据单元的串转并时候就启动CRC计算单元;完成状态d后可以跳至状态e,状态e用于实现过程(6),这时候已经完成了有效数据的读取,但是还需要启动常规SPI模块读取有效数据的16位校验位,将该读取的校验位和CRC计算单元的结果对比来检验是否数据传输正确,将该对比结果写入到AHBslave模块里的对应状态寄存器里;完成状态e后可以跳至状态f,状态f用于实现过程(7),此时对外部器件操作完成,发送同步头和拉低片选来结束外部器件操作,故写8位FF入txdfifo,同时启动常规SPI模块来执行写操作,完成后拉低片选,同时可以发送中断给CPU去取外部器件的数据。对于支持写加速单元和读加速单元操作方式的外部器件,比如SD卡,本发明的电路加速性能更为优越。由上可知写加速单元和读加速单元只是控制AHBmaster读/写DDR、常规SPI写/读操作而已,其操作简单,便于硬件实现。为了增强SPI加速模块的兼容性,写操作的特有命令"发送同步头FF、start一token、CRC计算"及读操作的特有命令"CRC计算、校验、发送同步头FF且拉低片选spi—sel"可以通过CPU配置来屏蔽,此时只要跳过这几个状态即可实现,从而使得SPI的加速模块应用加速于其它类型的器件,最大限度地减少了以后升级的工CRC计算单元CRC计算单元采用16位CRC的计算公式G(x)=xl6+xl2+x5+l,其中x为8位数据单元。将该公式进行多项式展开,可以将多项式的系数存于只读存储器rom一crc中,这样CRC计算公式可以简化为crc=(crc8)Arom_crc[(crc8)A数据单元],方便硬件实现。虽然该公式只支持8位数据单元,但是本发明的电路从高位至低位按8划分数据单元来依次计算CRC,这样在CRC公式不变的条件下该SPI可以支持8、16、32位数据,从而在加速模式下可以通过该电路来实现复杂的CRC计算,不需要软件驱动占用CPU来完成,大大减少了CPU的负担,提高了速度,而且多种位宽的数据单元使得操作更加灵活,尤其是32位数据单位可以提高总线效率,减少FIFO的存取次数,减少功耗。为了与其它外部器件兼容,该CRC计算单元可以通过CPU配置来屏蔽,增强了硬件的兼容性。具体实现过程可以通过三级流水来实现第一级流水用于将数据单元按高位至低位顺序按8划分得到send—buffer,如32位数据单元可以划分成4段"31-24"、"23-16"、"15-8"、"7-0"依次计算CRC;第二级流水用于计算rom—crc的地址"(crc原>〉8)Asend—buffer";第三级流水可以根据地址读rom—crc,再(crc原<<8)Arom一crc得至UCRC校验位crc,如32位数据单元的流水操作如图8所示。加速控制单元当CPU通过AHBslave接口单元启动加速模式时,开启加速控制单元。加速控制单元根据CPU配置的读/写寄存器来启动读加速/写加速单元,从而决定了对AHB总线的操作方式。在操作过程中根据写加速/读加速单元的状态机动态配置传输数据单元个数、数据单元长度及SPI的读/写方向写操作时候,状态a配置传输数据单元个数为l、数据单元长度为16、SPI的读/写方向为写,状态b配置传输数据单元个数和数据单元长度为CPU预先设置的参数、SPI的读/写方向为写,状态C配置传输数据单元个数为1、数据单元长度为16、SPI的读/写方向为写;读操作时候,状态d配置传输数据单元个数和数据单元长度为CPU预先设置的参数、SPI的读/写方向为读,状态e配置传输数据单元个数为1、数据单元长度为16、SPI的读/写方向为读,状态f配置传输数据单元个数为1、数据单元长度为8、SPI的读/写方向为写。当操作结束时候,通过AHBslave接口单元将相应的状态写入到状态寄存器里,便于软件查询。综上所述,本发明的高速SPI接口电路有两方面的优点。一方面,外部器件的初始化阶段命令与应答信号比较多,情况比较复杂,但是占CPU不是很紧张,在这段时间的操作可以由常规SPI模块完成,既保证了系统性能稳定性,又保证了接口目标的灵活性。另一方面,外部器件的数据传输阶段命令字相对固定,而且数据量大,在这段时间操作关系到芯片接口性能好坏,这时可以由SPI加速模块完成,从而可以实现足够的数据传输效率前提下不干扰CPU,既保证了数据的传输速度,又保证了芯片的性能。上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。权利要求1、一种集成在芯片内的高速串行外围接口电路,包括常规串行外围接口电路模块,所述常规串行外围接口电路模块包括数据缓冲器,用于缓冲写数据txdfifo和读数据rxdfifo;数据打包/解包单元,用于将写操作下将写数据txdfifo读出的数拆分成一个个数据单元,在读操作下用于将芯片外读取的数据存入读数据rxdfifo;SPI传输控制层,用于控制数据打包/解包模块和SPI物理层之间的时序关系写操作时数据打包/解包模块完成数据单元的还原时使能SPI物理层,读操作时SPI物理层完成串转并时使能数据打包/解包模块;SPI物理层,用于实现并转串、串转并及大小端;AHBslave接口模块,用于基于AHB总线跟CPU交互,实现SPI工作模式的配置和SPI工作状态的读取;所述的高速串行外围接口电路设有普通工作模式;其特征在于所述高速串行外围接口电路还包括串行外围接口电路加速模块,所述的高速串行外围接口电路还设有加速工作模式,所述串行外围接口电路加速模块还包括AHBmaster接口单元,用于基于AHB总线来读/写DDR;写加速单元,用于采用单块/多块写操作方式发送同步头FF→发送单块FE、多块FC→通过AHBmaster接口模块从DDR取数据至写数据txdfifo且常规串行外围接口电路模块的写操作,同时启动CRC计算模块→发送CRC校验位;读加速单元,用于启动常规串行外围接口电路模块的读操作且启动AHBmaster接口单元将读数据rxdfifo里数据发送至DDR,同时启动CRC计算模块→CRC校验→发送同步头FF且拉低片选spi_swl;CRC计算单元,用于采用CRC计算公式进行计算;加速控制单元,用于启动所述写加速单元或读加速单元,并控制读写方向,配置寄存器,反映状态;在加速工作模式下,数据传输过程中CPU告知数据存取地址以长度,由加速控制单元控制读写,在完成加速操作时,通过AHBmaster接口单元发送中断。2、如权利要求1所述的集成在芯片内的高速串行外围接口电路,其特征在于所述的CRC计算模块采用16位CRC的计算公式G(x)=x16+x12+x5+l,其中x为8位数据单元。3、如权利要求1或2所述的集成在芯片内的高速串行外围接口电路,其特征在于在所述数据缓冲器由二块32深度、32宽度的FIFO组成,其中一块用于缓存写数据txdfifo,另外一块用于缓冲读数据rxdfifo。普通工作模式下,写操作是CPU配置写入txdfifo,读操作是CPU读取rxdfifo;加速工作模式下,写操作是直接到DDR取数据写入txdfifo,读操作是直接将rxdfifo里的数据发至DDR目标地址且发中断给CPU。4、如权利要求3所述的集成在芯片内的高速串行外围接口电路,其特征在于所述的数据打包/解包单元中,在读操作下将芯片外读取的数据打包成32位存入读数据rxdfifo或直接存入读数据rxdfifo。5、如权利要求l或2所述的集成在芯片内的高速串行外围接口电路,其特征在于所述的SPI物理层还包含时钟产生器,用于产生2-256任意分频的时钟给片外器件,并设置波特率。6、如权利要求4所述的集成在芯片内的高速串行外围接口电路,其特征在于所述的SPI物理层还包含时钟产生器,用于产生2-256任意分频的时钟给片外器件,并设置波特率。7、如权利要求1或2所述的集成在芯片内的高速串行外围接口电路,其特征在于所述AHBslave接口单元支持8位、16位、32位的数据单元,支持打包和不打包模式,支持1/21/256bit/clk,每个数据单元支持大端和小端模式,同时支持普通SPI模式、加速SPI模式和串行FLASH模式。8、如权利要求6所述的集成在芯片内的高速串行外围接口电路,其特征在于所述AHBslave接口单元支持8位、16位、32位的数据单元,支持打包和不打包模式,支持1/21/256bit/dk,每个数据单元支持大端和小端模式,同时支持普通SPI模式、加速SPI模式和串行FLASH模式。全文摘要一种集成在芯片内的高速串行外围接口电路,包括常规串行外围接口电路模块,其包括数据缓冲器、数据打包/解包单元、SPI传输控制层、SPI物理层、AHBslave接口模块,高速串行外围接口电路设有普通工作模式;还包括串行外围接口电路加速模块,高速串行外围接口电路还设有加速工作模式,串行外围接口电路加速模块包括AHBmaster接口单元、写加速单元、读加速单元、CRC计算单元、加速控制单元、在加速工作模式下,数据传输过程中CPU告知数据存取地址以长度,由加速控制单元控制读写,在完成加速操作时,通过AHBmaster接口单元发送中断。本发明大大减少占用CPU资源、能够适应大量复杂高速数据传输,增大数据吞吐量。文档编号G06F13/40GK101382927SQ200810121248公开日2009年3月11日申请日期2008年9月25日优先权日2008年9月25日发明者姚卫忠,兴秦,郁军军申请人:杭州爱威芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1