集成电路芯片中串行外设从器件接口结构及数据读写方法转让专利

申请号 : CN200910196260.X

文献号 : CN102023956B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王冬佳

申请人 : 上海摩波彼克半导体有限公司

摘要 :

本发明涉及一种集成电路芯片中串行外设从器件接口结构,其中包括寄存器模块、存储模块、状态机逻辑控制模块,串行外设从器件接口结构通过芯片内部总线与芯片的中央处理器连接,串行外设从器件接口结构还通过数据传输线与外部串行外设主器件连接。本发明还涉及一种利用该接口结构实现集成电路芯片中串行外设接口数据高速读写的方法,包括串行外设主器件读取数据处理和串行外设主器件写入数据处理。采用该种集成电路芯片中串行外设从器件接口结构及数据读写方法,保证了数据传输速率远远高于普通SPI接口,结构简单,操作方式方便快捷,开发成本低廉,工作性能稳定可靠,适用范围较为广泛,拓宽了集成电路高速数据传输接口方案,具有广阔的应用前景。

权利要求 :

1.一种集成电路芯片中串行外设从器件接口结构,其特征在于,所述的接口结构包括:寄存器模块,进行数据传输控制;

存储模块,存储外部串行外设主器件发送来的数据和需要发送给外部串行外设主器件的数据;

状态机逻辑控制模块,分别与所述的寄存器模块、存储模块相连接,控制串行外设从器件的状态机逻辑跳转;

发送逻辑控制模块,与所述的状态机逻辑控制模块相连接,对数据发送时序进行控制,将数据转化成串行格式;

接收逻辑控制模块,与所述的状态机逻辑控制模块相连接,对数据接收时序进行控制,将串行数据依次接收并排列组合后存入所述的存储模块中;

所述的串行外设从器件接口结构通过芯片内部总线与芯片的中央处理器相连接,且该串行外设从器件接口结构还通过数据传输线与外部串行外设主器件相连接。

2.根据权利要求1所述的集成电路芯片中串行外设从器件接口结构,其特征在于,所述的寄存器模块包括:控制寄存器,控制串行外设从器件的传输功能信息;

状态寄存器,显示串行外设从器件的内部状态信息;

起始地址寄存器,控制DMA操作所搬运数据的起始地址;

目的地址寄存器,控制DMA操作所搬运数据的目的地址;

长度寄存器,控制DMA操作所搬运数据的长度;

所述的控制寄存器、状态寄存器、起始地址寄存器、目的地址寄存器和长度寄存器均与所述的状态机逻辑控制模块相连接。

3.根据权利要求1所述的集成电路芯片中串行外设从器件接口结构,其特征在于,所述的存储模块为RAM存储器。

4.根据权利要求1所述的集成电路芯片中串行外设从器件接口结构,其特征在于,所述的发送逻辑控制模块中包括时钟组合逻辑单元和D触发器单元,所述的时钟组合逻辑单元的输出端与所述的D触发器的时钟输入端相连接。

5.根据权利要求1所述的集成电路芯片中串行外设从器件接口结构,其特征在于,所述的接收逻辑控制模块包括依次级联的三个D触发器。

6.一种利用权利要求1所述的接口结构实现集成电路芯片中串行外设接口数据高速读写的方法,其特征在于,所述的寄存器模块包括控制寄存器、状态寄存器、起始地址寄存器、目的地址寄存器和长度寄存器,所述的方法包括串行外设主器件读取数据处理和串行外设主器件写入数据处理,所述的串行外设主器件读取数据处理,包括以下步骤:(11)所述的外部串行外设主器件对起始地址寄存器进行写操作,设置芯片内部读取的源数据地址;

(12)所述的外部串行外设主器件对目的地址寄存器进行写操作,将DMA操作的目的地址设置为所述的串行外设从器件接口结构中的存储模块的起始地址;

(13)所述的外部串行外设主器件对长度寄存器进行写操作,设置DMA操作所搬运的数据长度;

(14)所述的外部串行外设主器件对控制寄存器进行写操作,触发DMA操作,将芯片内部的数据搬运到所述的存储模块中;

(15)所述的外部串行外设主器件对状态寄存器进行读操作,查询DMA操作是否完成;

(16)所述的外部串行外设主器件从所述的串行外设从器件接口结构读取存储于存储模块中的数据;

所述的串行外设主器件写入数据处理,包括以下步骤:

(21)所述的外部串行外设主器件向所述的串行外设从器件接口结构发送数据,所述的串行外设从器件接口结构将接收到的数据存入所述的存储模块中;

(22)所述的外部串行外设主器件对起始地址寄存器进行写操作,将DMA操作的源数据地址设置为存储模块的起始地址;

(23)所述的外部串行外设主器件对目的地址寄存器进行,设置DMA操作将数据搬运到芯片内部的目的地址;

(24)所述的外部串行外设主器件对长度寄存器进行写操作,设置DMA操作所搬运的数据长度;

(25)所述的外部串行外设主器件对控制寄存器进行写操作,触发DMA操作,将所述的存储模块中的数据搬运到芯片内部;

(26)所述的外部串行外设主器件对状态寄存器进行读操作,查询DMA操作是否完成。

7.根据权利要求6所述的实现集成电路芯片中串行外设接口数据高速读写的方法,其特征在于,所述的外部串行外设主器件对起始地址寄存器进行写操作、对目的地址寄存器进行写操作、对长度寄存器进行写操作、对控制寄存器进行写操作均为外部串行外设主器件对寄存器进行写操作,包括以下步骤:(31)所述的外部串行外设主器件将串行外设接口的片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;

(32)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送读寄存器操作指令;

(33)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向所述的串行外设从器件接口结构中的相应寄存器发送数据信息;

(34)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。

8.根据权利要求6所述的实现集成电路芯片中串行外设接口数据高速读写的方法,其特征在于,所述的对状态寄存器进行读操作,包括以下步骤:(41)所述的外部串行外设主器件将串行外设接口的片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;

(42)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送读状态寄存器操作指令;

(43)所述的串行外设从器件接口结构接收到该读状态寄存器操作指令,并通过主器件数据输入从器件数据输出线向所述的外部串行外设主器件发送该状态寄存器的数据信息;

(44)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。

9.根据权利要求6所述的实现集成电路芯片中串行外设接口数据高速读写的方法,其特征在于,所述的外部串行外设主器件从串行外设从器件接口结构读取存储于存储模块中的数据,包括以下步骤:(51)所述的外部串行外设主器件将片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;

(52)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送数据读取指令;

(53)所述的串行外设从器件接口结构接收到该数据读取指令,并通过主器件数据输入从器件数据输出线向所述的外部串行外设主器件发送存储与存储模块中的数据信息;

(54)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。

10.根据权利要求6所述的实现集成电路芯片中串行外设接口数据高速读写的方法,其特征在于,所述的外部串行外设主器件向串行外设从器件接口结构发送数据,包括以下步骤:(61)所述的外部串行外设主器件将片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;

(62)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送数据写入指令;

(63)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向所述的串行外设从器件接口结构发送数据信息;

(64)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。

说明书 :

集成电路芯片中串行外设从器件接口结构及数据读写方法

技术领域

[0001] 本发明涉及集成电路领域,特别涉及数字逻辑集成电路芯片中的串行数据传输技术领域,具体是指一种集成电路芯片中串行外设从器件接口结构及数据读写方法。

背景技术

[0002] 在数字集成电路领域,串行数据传输是一种应用及其广泛的数据传输方式,其工作原理是将一条信息的各位按顺序逐个传输。
[0003] 常用的串行数据接口有UART、I2C、USB、SPI等等。下面对各种串口进行简单介绍:
[0004] UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种技术成熟的异步数据收发接口,其主要信号有发送信号UART_TX和接收信号UART_RX。最快传输速率一般在115Kbps~230Kbps之间。
[0005] I2C(Inter-Integrated Circuit,内部集成电路)是飞利浦公司在1980年提出的一种两线式串行总线,用于连接微控制器及外围设备。I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU和被控制IC之间、IC与IC之间进行双向传送,最高传输速率为3.4Mbps。
[0006] USB(Universal Serial Bus,通用串行总线)最初是英特尔与微软公司提出的一个连接外部装置的串行传输总线,主要用途是连接各种外围设备及进行大数据量传输。目前USB支持3种传输速率:低速1.5Mps,全速12Mbps,高速480Mbps。而USB与其他串行接口不同之处在于USB接口的四根管脚除电源和接地外,另外两根D+、D-信号是两个同源LVDS(Low-voltage differential signaling,)低电压差分信号。由于低电压差分信号可以有效抑制噪声信号干扰,同时信号管脚较少只有四根,所以USB是目前业界应用最广泛、传输速率最快的串行传输接口。
[0007] SPI(Serial Peripheral Interface,串行外设接口)是Motorola公司首先在其MC68HCXX系列处理器上定义的。SPI接口可在CPU和外围低速器件之间进行同步串行数据传输。数据传输速度比其他串行接口,例如UART或者I2C总线来说要快,可以达到10Mbps左右。
[0008] SPI接口包括以下四种信号:
[0009] ●SCLK--时钟信号,由主器件产生;
[0010] ●MOSI--主器件数据输出从器件数据输入信号;
[0011] ●MISO--主器件数据输入从器件数据输出信号;
[0012] ●SS--从器件选择信号,低电平有效,由主器件控制。
[0013] SPI接口以主从方式工作。这种工作模式通常有一个主器件和一个或多个从器件,只需相应增加SS从器件选择信号即可。具体请参阅图1所示。
[0014] 随着科学技术的发展,对串行数据接口速率的要高也越来越高。每秒几兆比特的数据传输速率已经远远满足不了实际需求。例如3G无线通信领域,现有WCDMA网络的下行速率最高在14.4Mps,这就意味着串行数据接口的传输速率至少要达到甚至远远超过14.4Mps。
[0015] 很显然,UART和I2C由于接口结构和传输协议的局限性,性能达不到上述需求。而USB虽然应付上述速率的数据传输绰绰有余,但USB接口相比其他串行接口存在着明显的劣势:USB协议较为复杂,导致USB接口芯片和PC侧同步的驱动软件开发周期较长,实现难度远比其他串口大的多。同时USB接口采用的LVDS信号需要额外的模拟电路模块,所以采用USB方案势必会增加芯片的成本。
[0016] 而SPI接口,结构清晰,协议简单,应用广泛,传输速率也不慢。比起UART和I2C在传输速率方面有优势,与USB相比硬件实现和软件操作都较为简单。唯一不足的一点:业界现有的SPI接口,尤其是SPI Slave,实际最快数据传输速率在10Mbps左右,虽然比起UART和I2C等串口已经快了许多,但还是满足不了某些高速数据传输的需求(譬如3G无线通信领域)。

发明内容

[0017] 本发明的目的是克服了上述现有技术中的缺点,提供一种能够实现数据高速传输、结构简单实用、使用快捷方便、工作性能稳定可靠、适用范围较为广泛的集成电路芯片中串行外设从器件接口结构及数据读写方法。
[0018] 为了实现上述的目的,本发明的集成电路芯片中串行外设从器件接口结构及数据读写方法如下:
[0019] 该集成电路芯片中串行外设从器件接口结构,其主要特点是,所述的接口结构包括:
[0020] 寄存器模块,进行数据传输控制;
[0021] 存储模块,存储外部串行外设主器件发送来的数据和需要发送给外部串行外设主器件的数据;
[0022] 状态机逻辑控制模块,分别与所述的寄存器模块、存储模块相连接,控制串行外设从器件的状态机逻辑跳转;
[0023] 所述的串行外设从器件接口结构通过芯片内部总线与芯片的中央处理器相连接,且该串行外设从器件接口结构还通过数据传输线与外部串行外设主器件相连接。
[0024] 该集成电路芯片中串行外设从器件接口结构中的寄存器模块包括:
[0025] 控制寄存器,控制串行外设从器件的传输功能信息;
[0026] 状态寄存器,显示串行外设从器件的内部状态信息;
[0027] 起始地址寄存器,控制DMA(Direct Memory Access,直接内存访问)操作所搬运数据的起始地址;
[0028] 目的地址寄存器,控制DMA操作所搬运数据的目的地址;
[0029] 长度寄存器,控制DMA操作所搬运数据的长度;
[0030] 所述的控制寄存器、状态寄存器、起始地址寄存器、目的地址寄存器和长度寄存器均与所述的状态机逻辑控制模块相连接。
[0031] 该集成电路芯片中串行外设从器件接口结构中的存储模块为RAM存储器。
[0032] 该集成电路芯片中串行外设从器件接口结构中的接口结构还包括发送逻辑控制模块,该发送逻辑控制模块与所述的状态机逻辑控制模块相连接,对数据发送时序进行控制,将数据转化成串行格式。
[0033] 该集成电路芯片中串行外设从器件接口结构中的发送逻辑控制模块中包括时钟组合逻辑单元和D触发器单元,所述的时钟组合逻辑单元的输出端与所述的D触发器的时钟输入端相连接。
[0034] 该集成电路芯片中串行外设从器件接口结构中的接口结构还包括接收逻辑控制模块,该接收逻辑控制模块与所述的状态机逻辑控制模块相连接,对数据接收时序进行控制,将串行数据依次接收并排列组合后存入所述的存储模块中。
[0035] 该集成电路芯片中串行外设从器件接口结构中的接收逻辑控制模块包括依次级联的三个D触发器。
[0036] 该利用上述的接口结构实现集成电路芯片中串行外设接口数据高速读写的方法,其主要特点是,所述的方法包括串行外设主器件读取数据处理和串行外设主器件写入数据处理,所述的串行外设主器件读取数据处理,包括以下步骤:
[0037] (11)所述的外部串行外设主器件对起始地址寄存器进行写操作,设置芯片内部读取的源数据地址;
[0038] (12)所述的外部串行外设主器件对目的地址寄存器进行写操作,将DMA操作的目的地址设置为所述的串行外设从器件接口结构中的存储模块的起始地址;
[0039] (13)所述的外部串行外设主器件对长度寄存器进行写操作,设置DMA操作所搬运的数据长度;
[0040] (14)所述的外部串行外设主器件对控制寄存器进行写操作,触发DMA操作,将芯片内部的数据搬运到所述的存储模块中;
[0041] (15)所述的外部串行外设主器件对状态寄存器进行读操作,查询DMA操作是否完成;
[0042] (16)所述的外部串行外设主器件从所述的串行外设从器件接口结构读取存储于存储模块中的数据;
[0043] 所述的串行外设主器件写入数据处理,包括以下步骤:
[0044] (21)所述的外部串行外设主器件向所述的串行外设从器件接口结构发送数据,所述的串行外设从器件接口结构将接收到的数据存入所述的存储模块中;
[0045] (22)所述的外部串行外设主器件对起始地址寄存器进行写操作,将DMA操作的源数据地址设置为存储模块的起始地址;
[0046] (23)所述的外部串行外设主器件对目的地址寄存器进行,设置DMA操作将数据搬运到芯片内部的目的地址;
[0047] (24)所述的外部串行外设主器件对长度寄存器进行写操作,设置DMA操作所搬运的数据长度;
[0048] (25)所述的外部串行外设主器件对控制寄存器进行写操作,触发DMA操作,将所述的存储模块中的数据搬运到芯片内部;
[0049] (26)所述的外部串行外设主器件对状态寄存器进行读操作,查询DMA操作是否完成。
[0050] 该实现集成电路芯片中串行外设接口数据高速读写的方法中的外部串行外设主器件对起始地址寄存器进行写操作、对目的地址寄存器进行写操作、对长度寄存器进行写操作、对控制寄存器进行写操作均为外部串行外设主器件对寄存器进行写操作,包括以下步骤:
[0051] (31)所述的外部串行外设主器件将串行外设接口的片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;
[0052] (32)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送读寄存器操作指令;
[0053] (33)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向所述的串行外设从器件接口结构中的相应寄存器发送数据信息;
[0054] (34)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。
[0055] 该实现集成电路芯片中串行外设接口数据高速读写的方法中的对状态寄存器进行读操作,包括以下步骤:
[0056] (41)所述的外部串行外设主器件将串行外设接口的片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;
[0057] (42)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送读状态寄存器操作指令;
[0058] (43)所述的串行外设从器件接口结构接收到该读状态寄存器操作指令,并通过主器件数据输入从器件数据输出线向所述的外部串行外设主器件发送该状态寄存器的数据信息;
[0059] (44)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。
[0060] 该实现集成电路芯片中串行外设接口数据高速读写的方法中的外部串行外设主器件从串行外设从器件接口结构读取存储于存储模块中的数据,包括以下步骤:
[0061] (51)所述的外部串行外设主器件将片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;
[0062] (52)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送数据读取指令;
[0063] (53)所述的串行外设从器件接口结构接收到该数据读取指令,并通过主器件数据输入从器件数据输出线向所述的外部串行外设主器件发送存储与存储模块中的数据信息;
[0064] (54)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。
[0065] 该实现集成电路芯片中串行外设接口数据高速读写的方法中的外部串行外设主器件向串行外设从器件接口结构发送数据,包括以下步骤:
[0066] (61)所述的外部串行外设主器件将片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;
[0067] (62)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送数据写入指令;
[0068] (63)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向所述的串行外设从器件接口结构发送数据信息;
[0069] (64)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。
[0070] 采用了该发明的集成电路芯片中串行外设从器件接口结构及数据读写方法,由于其中采用了四种数据交互方式:串行外设主器件读寄存器、串行外设主器件写寄存器、串行外设主器件读数据、串行外设主器件写数据,从而基于上述交互方式,外部串行外设主器件可以方便快捷地与具有串行外设从器件(SPI Slave)接口结构的芯片进行大数据量通信,同时SPISlave接口结构还对发送和接收逻辑部分对时序进行了特殊处理,从而保证了SPI Slave接口的数据传输速率远远高于普通SPI接口,根据实际测试经验,本发明的SPI Slave接口传输速率可以稳定达到20Mbps,而且该SPI Slave接口结构简单,操作方式方便快捷,开发成本低廉,工作性能稳定可靠,适用范围较为广泛,拓宽了现有集成电路领域高速串行数据传输接口的选择方案,在串行高速数据传输应用领域有着广阔的应用前景。

附图说明

[0071] 图1为现有技术中的SPI接口信号及连接示意图。
[0072] 图2为本发明的集成电路芯片中串行外设从器件接口结构整体示意图。
[0073] 图3为本发明的集成电路芯片中串行外设从器件接口结构中的发送逻辑控制模块结构示意图。
[0074] 图4为本发明的集成电路芯片中串行外设从器件接口结构中的接收逻辑控制模块结构示意图。
[0075] 图5为本发明的实现集成电路芯片中串行外设接口数据高速读写的方法中外部串行外设主器件读寄存器时序示意图。
[0076] 图6为本发明的实现集成电路芯片中串行外设接口数据高速读写的方法中外部串行外设主器件写寄存器时序示意图。
[0077] 图7为本发明的实现集成电路芯片中串行外设接口数据高速读写的方法中外部串行外设主器件读数据时序示意图。
[0078] 图8为本发明的实现集成电路芯片中串行外设接口数据高速读写的方法中外部串行外设主器件写数据时序示意图。
[0079] 图9为本发明的实现集成电路芯片中串行外设接口数据高速读写的方法中外部串行外设主器件读芯片内部数据的整体流程图。
[0080] 图10为本发明的实现集成电路芯片中串行外设接口数据高速读写的方法中外部串行外设主器件往芯片内部写数据的整体流程图。

具体实施方式

[0081] 为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
[0082] 请参阅图2至图4所示,该集成电路芯片中串行外设从器件接口结构,其中所述的接口结构包括:
[0083] (1)寄存器模块,进行数据传输控制,该寄存器模块包括:
[0084] ●控制寄存器,控制串行外设从器件的传输功能信息;
[0085] ●状态寄存器,显示串行外设从器件的内部状态信息;
[0086] ●起始地址寄存器,控制DMA操作所搬运数据的起始地址;
[0087] ●目的地址寄存器,控制DMA操作所搬运数据的目的地址;
[0088] ●长度寄存器,控制DMA操作所搬运数据的长度;
[0089] (2)存储模块,存储外部串行外设主器件发送来的数据和需要发送给外部串行外设主器件的数据;该存储模块可以为RAM存储器,也可以为其它能够适应数据高速存取的存储功能模块;
[0090] (3)状态机逻辑控制模块,分别与所述的寄存器模块、存储模块相连接,控制串行外设从器件的状态机逻辑跳转;
[0091] (4)发送逻辑控制模块,该发送逻辑控制模块与所述的状态机逻辑控制模块相连接,对数据发送时序进行控制,将数据转化成串行格式;该发送逻辑控制模块中包括时钟组合逻辑单元和D触发器单元,所述的时钟组合逻辑单元的输出端与所述的D触发器的时钟输入端相连接;
[0092] (5)接收逻辑控制模块,该接收逻辑控制模块与所述的状态机逻辑控制模块相连接,对数据接收时序进行控制,将串行数据依次接收并排列组合后存入所述的存储模块中;该接收逻辑控制模块包括依次级联的三个D触发器。
[0093] 同时,所述的串行外设从器件接口结构通过芯片内部总线与芯片的中央处理器相连接,且该串行外设从器件接口结构还通过数据传输线与外部串行外设主器件相连接;所述的控制寄存器、状态寄存器、起始地址寄存器、目的地址寄存器和长度寄存器均与所述的状态机逻辑控制模块相连接。
[0094] 在实际使用当中,该串行外设从器件(SPI Slave)接口完全符合SPI Slave接口时序规范,支持CPOL(时钟极性)和CPHA(时钟相位)选择。支持8位、16位、32位数据位宽操作,可以适应各种数据位宽主机。
[0095] 该SPI Slave接口支持数据burst操作,即外部主器件可其进行连续的数据读写操作。
[0096] 该SPI Slave接口包含四根传输信号:SCLK、SS、MOSI、MISO。该SPI Slave接口同时支持SPI四线模式(SCLK、SS、MOSI、MISO)和三线模式(SCLK、SS、MISO)。其中该SPI Slave接口的SCLK、SS、MOSI为输入信号,MISO在四线模式时为输出,三线模式时是双向输入输出。
[0097] 该SPI Slave接口内部包含两个中断信号:TRIG_ARM和TRIG_DMA。SPI Slave通过这两根中断信号,产生中断脉冲,触发处理器(ARM(Advanced RISC Machine,高级精简指令集处理器)或DMA)进行中断操作。
[0098] 该SPI Slave接口通过芯片内部总线与处理器相连。本方案中与SPI Slave相关联的处理器是ARM与DMA。ARM可以对SPI Slave的寄存器进行读写,控制SPI Slave的主要功能,同时也可以访问SPI Slave的RAM空间,对该空间进行数据读写。DMA可以访问相应寄存器,同时对SPI Slave的RAM空间进行快速读写。
[0099] 该SPI Slave接口内部有4个控制寄存器,1个状态寄存器:
[0100] ●SPI Slave控制寄存器--SPI SLAVE CFG
[0101] ●SPI Slave状态寄存器--SPI SLAVE STATUS
[0102] ●DMA起始地址寄存器--DMA SRC
[0103] ●DMA目的地址寄存器--DMA DST
[0104] ●DMA长度寄存器--DMA LENGTH
[0105] 该SPI Slave接口内部包含一块RAM空间,用于存放发送或接收到的数据;外部主器件可对该RAM空间进行读写,同时芯片内部处理器(ARM或DMA)也可对该RAM空间进行读写。
[0106] 该SPI Slave接口可以作为系统芯片与外部SPI Master进行数据交互的接口桥梁,从而外部串行外设主器件(SPI Master)可通过SPI Slave读写系统芯片内部的任意数据。
[0107] 请参阅图2所示,本发明的SPI Slave接口结构中包含:
[0108] (1)寄存器模块:
[0109] ●SPI_SLAVE_CFG寄存器控制SPI Slave各项传输功能,譬如传输波特率等。
[0110] ●SPI_SLAVE_STATUS寄存器显示SPI Slave的内部状态,譬如状态机等信息。
[0111] ●DMA_SRC寄存器控制DMA将要搬运数据的起始地址。
[0112] ●DMA_DST寄存器控制DMA要把数据搬运到的目的地址。
[0113] ●DMA_LENGTH寄存器控制DMA将要搬运的数据长度。
[0114] (2)RAM空间:用于存放从主器件接收到的数据,或者存放将要发送给主器件的数据。
[0115] (3)TX逻辑:对发送时序进行控制,将数据转化成串行格式,并通过MISO管脚依次发送。
[0116] (4)RX逻辑;对接收时序进行控制,从MOSI管脚将串行数据依次接收,排列组合后,存入RAM空间。
[0117] (5)FSM Controller状态机控制逻辑:控制SPI Slave的状态机跳转。
[0118] 该SPI Slave接口外部包括四组信号线:
[0119] ●SYS_CLK和SYS_RESET:系统时钟信号及系统复位信号;
[0120] ●TRIG_ARM和TRIG_DMA:ARM中断信号及DMA中断信号;
[0121] ●SPI接口信号:SCLK,MOSI,MISO,SS。与外部的主器件相连;
[0122] ●芯片内部总线:与芯片处理器进行交互。与本发明的SPI Slave接口相关联的处理器是ARM和DMA。
[0123] 再请参阅图5至图10所示,该利用上述的接口结构实现集成电路芯片中串行外设接口数据高速读写的方法,其中,所述的方法包括串行外设主器件读取数据处理和串行外设主器件写入数据处理,所述的串行外设主器件读取数据处理,包括以下步骤:
[0124] (11)所述的外部串行外设主器件对起始地址寄存器进行写操作,设置芯片内部读取的源数据地址;
[0125] (12)所述的外部串行外设主器件对目的地址寄存器进行写操作,将DMA操作的目的地址设置为所述的串行外设从器件接口结构中的存储模块的起始地址;
[0126] (13)所述的外部串行外设主器件对长度寄存器进行写操作,设置DMA操作所搬运的数据长度;
[0127] (14)所述的外部串行外设主器件对控制寄存器进行写操作,触发DMA操作,将芯片内部的数据搬运到所述的存储模块中;
[0128] (15)所述的外部串行外设主器件对状态寄存器进行读操作,查询DMA操作是否完成;该对状态寄存器进行读操作,包括以下步骤:
[0129] (a)所述的外部串行外设主器件将串行外设接口的片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;
[0130] (b)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送读状态寄存器操作指令;
[0131] (c)所述的串行外设从器件接口结构接收到该读状态寄存器操作指令,并通过主器件数据输入从器件数据输出线向所述的外部串行外设主器件发送该状态寄存器的数据信息;
[0132] (d)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止;
[0133] (16)所述的外部串行外设主器件从所述的串行外设从器件接口结构读取存储于存储模块中的数据,包括以下步骤:
[0134] (a)所述的外部串行外设主器件将片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;
[0135] (b)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送数据读取指令;
[0136] (c)所述的串行外设从器件接口结构接收到该数据读取指令,并通过主器件数据输入从器件数据输出线向所述的外部串行外设主器件发送存储与存储模块中的数据信息;
[0137] (d)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止;
[0138] 所述的串行外设主器件写入数据处理,包括以下步骤:
[0139] (21)所述的外部串行外设主器件向所述的串行外设从器件接口结构发送数据,所述的串行外设从器件接口结构将接收到的数据存入所述的存储模块中;该外部串行外设主器件向串行外设从器件接口结构发送数据,包括以下步骤:
[0140] (a)所述的外部串行外设主器件将片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;
[0141] (b)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送数据写入指令;
[0142] (c)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向所述的串行外设从器件接口结构发送数据信息;
[0143] (d)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止;
[0144] (22)所述的外部串行外设主器件对起始地址寄存器进行写操作,将DMA操作的源数据地址设置为存储模块的起始地址;
[0145] (23)所述的外部串行外设主器件对目的地址寄存器进行,设置DMA操作将数据搬运到芯片内部的目的地址;
[0146] (24)所述的外部串行外设主器件对长度寄存器进行写操作,设置DMA操作所搬运的数据长度;
[0147] (25)所述的外部串行外设主器件对控制寄存器进行写操作,触发DMA操作,将所述的存储模块中的数据搬运到芯片内部;
[0148] (26)所述的外部串行外设主器件对状态寄存器进行读操作,查询DMA操作是否完成,该对状态寄存器进行读操作的具体实现步骤与前述相同。
[0149] 在以上各步骤中,所述的外部串行外设主器件对起始地址寄存器进行写操作、对目的地址寄存器进行写操作、对长度寄存器进行写操作、对控制寄存器进行写操作均为外部串行外设主器件对寄存器进行写操作,包括以下步骤:
[0150] (a)所述的外部串行外设主器件将串行外设接口的片选信号线的信号电平设置为低,并在时钟线上产生时钟信号;
[0151] (b)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向串行外设从器件接口结构发送读寄存器操作指令;
[0152] (c)所述的外部串行外设主器件通过主器件数据输出从器件数据输入线向所述的串行外设从器件接口结构中的相应寄存器发送数据信息;
[0153] (d)数据信息发送完毕后,所述的外部串行外设主器件将片选信号线的信号电平设置为高,并使得时钟线上的时钟信号停止。
[0154] 在实际使用当中,与现有技术中的SPI Slave接口只有简单的接收和发送时序不同,本发明的方法中自定义了四种数据交互方式:主器件读寄存器、主器件写寄存器、主器件读数据、主器件写数据。下面对这四种数据交互方式进行详细说明:
[0155] (1)主器件读寄存器
[0156] 具体时序请参阅图5所示。主器件将片选信号SS拉低,同时在SCLK上产生时钟信号,读寄存器操作开始。首先主器件通过MOSI向SPI Slave发送32bit command。bit31~28为指令类型;bit27~bit24为SPI Slave内部的寄存器ID;bit23~bit0为无用数据。
当bit31~28=1010时,说明是读寄存器操作。SPI Slave接收完command后,通过MISO向主器件发送相应寄存器的32bit数据。SPI Slave发送完毕后,主器件将SS拉高,SCLK时钟停止,读寄存器操作结束。
[0157] (2)主器件写寄存器
[0158] 具体时序请参阅图6所示。主器件将片选信号SS拉低,同时在SCLK上产生时钟信号,写寄存器操作开始。首先主器件通过MOSI向SPI Slave发送32bit command。bit31~28为指令类型;bit27~bit24为SPI Slave内部的寄存器ID。bit23~bit0为无用数据。当bit31~28=1011时,说明是写寄存器操作。主器件发送完写寄存器command后,继续发送32bit寄存器数据,发送完毕后,主器件将SS拉高,SCLK时钟停止,读寄存器操作结束。
[0159] (3)主器件读数据
[0160] 具体时序如图7所示。主器件将片选信号SS拉低,同时在SCLK上产生时钟信号,读数据操作开始。首先主器件通过MOSI向SPI Slave发送32bit command。bit31~28为指令类型;bit27~bit0为无用数据。当bit31~28=1100时,说明是读数据操作。SPI Slave接收完command后,通过MISO持续将RAM空间内的数据返回给主器件,直到SS拉高,SCLK时钟信停止,一次读数据操作停止。
[0161] (4)主器件写数据
[0162] 具体时序如图8所示。主器件将片选信号SS拉低,同时在SCLK上产生时钟信号,写数据操作开始。首先主器件通过MOSI向SPI Slave发送32bit command。bit31~28为指令类型;bit27~bit0为无用数据。当bit31~28=1101时,说明是写数据操作。主器件发送完写数据command后继续发送数据,SPI Slave持续接收数据,直到主器件将SS拉高,SCLK时钟停止,一次写数据操作结束。
[0163] 以上四种数据交互方式实现了数据的连续读写。每次读写操作时,指令只消耗一个word周期,其余都是有效数据。交互方式简单明确,不容易出错,每次有效操作都在SS拉低时进行,只要SS拉高,相应操作马上结束。
[0164] 基于上述交互方式,串行外设主器件可以方便快捷地与具有本发明的SPI Slave接口的芯片进行大数据量通信,具体通信方式如下:
[0165] (1)主器件读芯片内部数据
[0166] 请参阅图9所示,具体操作步骤如下:
[0167] 第一步——主器件写DMA_SRC寄存器,确定芯片内部源数据地址。
[0168] 第一步——主器件写DMA_DST寄存器,将DMA目的地址写为SPI Slave的RAM起始地址,这样DMA就会将芯片内部数据搬运到该RAM空间内。
[0169] 第三步——主器件写DMA_LENGTH寄存器,以确定DMA要搬运的数据长度。
[0170] 第四步——主器件写SPI_SLAVE_CFG触发DMA搬运数据,此时中断信号TRIG_DMA会产生中断脉冲来触发DMA执行操作。DMA收到脉冲信号后,将芯片内部的数据,搬运到SPI Slave的RAM空间内,搬运数据长度为DMA_LENGTH定义的长度。
[0171] 第五步——主器件读SPI_SLAVE_STATUS,查询DMA是否搬运结束。
[0172] 第六步——主器件发出读数据请求,SPI Slave将其RAM空间内DMA刚搬运过来的数据发送给主器件。
[0173] (2)主器件往芯片内部写数据
[0174] 请参阅图10所示,具体操作步骤如下:
[0175] 第一步——主器件发出写数据请求,不断往SPI Slave发送数据,SPI Slave将接收到的数据存入RAM空间内。
[0176] 第二步——主器件写DMA_SRC寄存器,将DMA要搬运的源数据地址写为RAM空间起始地址,这样DMA就会将SPI Slave收到的数据从RAM空间搬走。
[0177] 第三步——主器件写DMA_DST寄存器,确定DMA要将数据搬运到芯片内部的具体目的地址。
[0178] 第四步——主器件写DMA_LENGTH寄存器,确定DMA要搬运的数据长度。
[0179] 第五步——主器件写SPI_SLAVE_CFG触发DMA搬运数据,此时中断信号TRIG_DMA会产生中断脉冲来触发DMA执行操作。DMA收到脉冲信号后,将SPI Slave刚收到的RAM空间内数据,搬运到DMA_DST定义的芯片内部目的地址,搬运数据长度为DMA_LENGTH定义的长度。
[0180] 第六步——主器件读SPI_SLAVE_STATUS,查询DMA是否搬运结束。
[0181] 本发明的SPI Slave接口还对发送和接收逻辑部分对时序进行了特殊处理。下面详细说明:
[0182] (1)当SPI Slave接收时,主器件在SS、SCLK、MOSI上产生有效信号。由于SS、SCLK、MOSI相对SPI Slave的芯片内部系统时钟是异步信号,不能直接输入SPI Slave作为同步信号使用,所以必须将其转化为同步信号。因此在接收逻辑控制模块对接收时序进行了以下特殊处理:
[0183] 将该三根异步信号输入D触发器,延时3个系统时钟后再使用。
[0184] 请参阅图3所示,其中SPI Slave使用的是将MOSI延时3个系统时钟后的信号MOSI_D。这种做法解决了将异步时序转化为同步时序的问题,避免由于触发器直接采样异步信号而可能产生的亚稳态现象,增强了系统的稳定性。
[0185] (2)当SPI Slave发送时,主器件发送SS和SCLK信号,Slave根据主器件产生的SS和SCLK信号,通过MISO将数据发送给主器件。根据SPI时序规范,MISO上的数据信号应严格与SCLK时钟信号对齐。当传输速率比较快时,如果采用和接收时相同的时序处理方法,采用延时2个系统时钟后的SCLK信号,MISO上的数据信号就不能与SCLK信号同步对齐。因此在发送逻辑控制模块对发送时序进行了以下特殊处理:
[0186] 请参阅图8所示,将SCLK和SS信号经过一些组合逻辑处理,生成一个新的时钟信号TX_CLK,该时钟信号与SCLK完全同步对齐,然后使用TX_CLK作为发送时钟,将数据发送给主器件。
[0187] 这一处理使得SPI Slave的数据信号与SPI Master的时钟信号完全同步,解决了SPI接口高速传输时的难题。
[0188] 采用了上述的集成电路芯片中串行外设从器件接口结构及数据读写方法,由于其中采用了四种数据交互方式:串行外设主器件读寄存器、串行外设主器件写寄存器、串行外设主器件读数据、串行外设主器件写数据,从而基于上述交互方式,外部串行外设主器件可以方便快捷地与具有串行外设从器件(SPI Slave)接口结构的芯片进行大数据量通信,同时SPI Slave接口结构还对发送和接收逻辑部分对时序进行了特殊处理,从而保证了SPI Slave接口的数据传输速率远远高于普通SPI接口,根据实际测试经验,本发明的SPI Slave接口传输速率可以稳定达到20Mbps,而且该SPI Slave接口结构简单,操作方式方便快捷,开发成本低廉,工作性能稳定可靠,适用范围较为广泛,拓宽了现有集成电路领域高速串行数据传输接口的选择方案,在串行高速数据传输应用领域有着广阔的应用前景。
[0189] 在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。