CN115563049A - Spi发送模式赋值结构的实现方法 - Google Patents

Spi发送模式赋值结构的实现方法 Download PDF

Info

Publication number
CN115563049A
CN115563049A CN202211283823.0A CN202211283823A CN115563049A CN 115563049 A CN115563049 A CN 115563049A CN 202211283823 A CN202211283823 A CN 202211283823A CN 115563049 A CN115563049 A CN 115563049A
Authority
CN
China
Prior art keywords
data
spi
clock
sck
shift register
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.)
Pending
Application number
CN202211283823.0A
Other languages
English (en)
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.)
No47 Institute Of China Electronics Technology Group Corp
Original Assignee
No47 Institute Of China Electronics Technology Group Corp
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 No47 Institute Of China Electronics Technology Group Corp filed Critical No47 Institute Of China Electronics Technology Group Corp
Priority to CN202211283823.0A priority Critical patent/CN115563049A/zh
Publication of CN115563049A publication Critical patent/CN115563049A/zh
Pending legal-status Critical Current

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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明涉及SPI发送模式赋值结构的实现方法。SPI控制器在特定的时钟极性和相位下,主从设备在时钟不连续时待发送数据的加载。SPI控制器的串行时钟SCK支持四种时序,本发明针对其中的两种时序情况:时钟空闲时低电平且上升沿采样和时钟空闲时高电平且下降沿采样。在这两种时序下,当发送端首次发送数据以及时钟不连续时发送数据等两种情况,在检测到总线写控制信号有效且SPI不忙的时候,通过该结构异步加载待发送数据到发送缓冲器中,从而实现数据的持续发送。本发明设计的SPI发送端的赋值结构,支持目前所有的主流SPI传输协议,设计简单,同时满足SPI的连续和不连续的数据发送。

Description

SPI发送模式赋值结构的实现方法
技术领域
本发明属于集成电路设计技术领域,具体地说是一种SPI发送模式赋值结构的实现方法。
背景技术
串行外设接口SPI,由摩托罗拉公司于1979年开发,是一种常用的短程同步串行通讯方式。SPI接口支持半双工和全双工两种工作方式,具有高速传输的优点,传输速度高达几十兆赫兹,通常用于单片机系统与E2PROM、ADC等外设的高速连接。
现有的数据发送方式,在串行时钟SCK不连续时,由于无法快速预加载待发送数据会导致数据传输速率降低。
发明内容
本发明在串行外设接口SPI的通信中,针对时钟空闲为高电平时下降沿采样数据,上升沿发送数据,以及时钟空闲为低电平时上升沿采样数据,下降沿发送数据这两种时序,在发送首个数据或时钟不连续的情况下,提出了异步加载待发送数据的一种方法,即一种SPI发送模式赋值结构的实现方法。
SPI的串行时钟SCK由时钟极性CPOL和时钟相位CPHA共同控制,有四种可能的时序关系。CPOL置“1”表示空闲状态SCK为高电平,置“0”表示空闲状态SCK为低电平。CPHA置“1”表示SCK的第二个沿采样数据并锁存,CPHA置“0”表示SCK的第一个沿采样数据并锁存。当第一个沿采样并锁存数据时,在时钟不连续的情况下或者发送首个数据时,需要通过异步置位方式将发送缓冲器中的数据提前加载到移位寄存器中,从而实现数据的连续发送。
本发明采用如下技术方案:SPI发送模式的赋值结构,采用寄存器,用于根据异步置位信号实现数据的加载与发送,其中:
复位Rstn,用于清零移位寄存器,低电平有效;
发送缓冲器SPI_DR,用于寄存下一个待发送数据;
移位寄存器Shift_Reg,用于在SCK的输出沿控制下,移位输出待发送的数据;
其他控制逻辑OtherControlLogic,用于逻辑控制,包含CRC、DMA和数据位宽的控制逻辑。
所述移位寄存器Shift_Reg为移位寄存器Shift_Reg_MTx或者移位寄存器Shift_Reg_STx;
所述移位寄存器Shift_Reg_MTx,用于主设备在SCK的输出沿控制下,移位输出待发送的数据;
所述移位寄存器Shift_Reg_STx,用于从设备在SCK的输出沿控制下,移位输出待发送的数据;
所述其他控制逻辑OtherControlLogic包括:
DFF数据位宽,用于8或16位数据选择;
LSBFIRST帧格式选择,用于控制数据先发送MSB或LSB;
TXE发送缓冲器空标志,用于数据以及CRC的加载控制;
CRCNEXT_DMA,DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制;
CRCNEXT,非DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制。
所述异步置位信号包括:
时钟信号的相位和极性MO,用于时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
时钟信号的相位和极性M3,用于时钟空闲为高电平时下降沿采样数据,上升沿发送数据;
cnt_sck_neg_s,用于从设备SCK下降沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
cnt_sck_psg_s,用于从设备SCK上升沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
SPI总线写信号SPI_DR_Wr;
SPI忙信号BSY,高电平表示数据传输中;
MSTR,高电平时为主设备,反之为从设备,用于设备主从的选择。
SPI发送模式赋值结构的实现方法,用于主设备,包括以下步骤:
主设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
在发送第一个数据或时钟不连续的情况下,当检测到总线写信号有效且SPI不忙时,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_MTx,之后在SCK的控制下移位输出。
SPI发送模式赋值结构的实现方法,用于从设备,包括以下步骤:
从设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
在发送第一个数据或时钟不连续的时候,当检测到总线写信号有效且从设备SCK上升沿计数器cnt_sck_psg_s和SCK下降沿计数器cnt_sck_neg_s数值均为0的情况下,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_STx,之后在SCK的控制下移位输出。
本发明具有以下有益效果及优点:
1.对于SPI发送设备,由于是采用异步置位,在发送第一个数据或者时钟不连续的情况下,可以提前将发送缓冲器中的待发送数据加载到移位寄存器,并在随后的SCK发送沿(上升沿采样时下降沿发送数据,下降沿采样时上升沿发送数据)将数据移位发送出去。
2.本发明设计的SPI发送端的赋值结构,支持目前所有的主流SPI传输协议,设计简单,同时满足SPI的连续和不连续的数据发送。
附图说明
图1本发明的主设备发送数据MO和M3模式时的逻辑示意图;
图2为从设备发送数据MO和M3模式时的逻辑示意图。
具体实施方式
以下依据附图对此发明进行具体阐释。
本发明涉及SPI控制器在特定的时钟极性和相位下,主从设备在时钟不连续时待发送数据的加载。SPI控制器的串行时钟SCK支持四种时序,本发明针对其中的两种时序情况:时钟空闲时低电平且上升沿采样和时钟空闲时高电平且下降沿采样。在这两种时序下,当发送端首次发送数据以及时钟不连续时发送数据等两种情况,在检测到总线写控制信号有效且SPI不忙的时候,通过该结构异步加载待发送数据到发送缓冲器中,从而实现数据的持续发送。
本发明的SPI发送模式的赋值结构,为异步置位结构,包括:
复位Rstn,低电平有效,用于清零移位寄存器。
发送缓冲器SPI_DR,用于寄存下一个待发送数据;
移位寄存器Shift_Reg_MTx,用于主设备在SCK的输出沿控制下,移位输出待发送的数据;
移位寄存器Shift_Reg_STx,用于从设备在SCK的输出沿控制下,移位输出待发送的数据;
MSTR主或从控制;
时钟信号的相位和极性MO,时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
时钟信号的相位和极性M3,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;
cnt_sck_neg_s,从设备SCK下降沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
cnt_sck_psg_s,从设备SCK上升沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
SPI总线写信号SPI_DR_Wr;
SPI忙信号BSY,高电平表示数据传输中;
其他控制逻辑OtherControlLogic,包含数据位宽DFF,用于8或16位数据选择;LSBFIRST帧格式选择,用于控制数据先发送MSB或LSB;TXE发送缓冲器空标志,用于数据以及CRC的加载控制;CRCNEXT_DMA,DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制;CRCNEXT,非DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制。
本发明的实现步骤如下:
主设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;在发送第一个数据或时钟不连续的时候,由于没有对应的数据发送沿,本设计采用了图1和图2所示的数据加载方式,当检测到总线写信号有效且SPI不忙时,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_MTx,之后在SCK的控制下移位输出。
从设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;在发送第一个数据或时钟不连续的时候,由于没有对应的数据发送沿,本设计采用了图1和图2所示的数据加载方式,当检测到总线写信号有效且从设备SCK上升沿计数器cnt_sck_psg_s和SCK下降沿计数器cnt_sck_neg_s数值均为0的情况下,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_STx,之后在SCK的控制下移位输出。
本发明的主或从设备数据发送端的异步置位待发送数据的设计思想如图1和图2所示的主从设备数据发送端异步置位结构图,SPI工作在第一个时钟沿采样数据的两种工作模式时(即CPOL=1或CPOL=0,CHPA=0):
在发送首个数据或串行时钟SCK不连续的时候,SPI设备在串行时钟SCK的采样沿到来之前,提前通过异步置位的方式将发送缓冲器中的待发送数据加载到移位寄存器中,主设备一侧判断条件为MSTR&&(M0||M3)&&SPI_DR_Wr&&!BSY:既主设备,MO(或M3)模式下,SPI不忙的时候(第一个数据写入时或SCK时钟不连续)将发送缓冲器中的待发送数据加载到移位寄存器中,从而发出第一位数据(MSB或LSB),在随后的下降沿(或上升沿)移位输出剩余的7或15位数数据(一般SPI的数据格式为8位或16位);从设备一侧判断条件为!MSTR&&SPI_DR_Wr(M0||M3)&&(cnt_sck_neg_s==5'd0)&&(cnt_sck_psg_s==5'd0):既从设备,MO(或M3)模式下,SPI不忙的时候(第一个数据写入时或SCK时钟不连续,既SCK的上升沿计数器和下降沿计数器数值同时为0时)将发送缓冲器中的待发送数据加载到移位寄存器中,从而发出第一位数据(MSB或LSB),在随后的下降沿(或上升沿)移位输出剩余的7或15位数数据。如果使用CRC,当CRCNEXT_DMA或CRCNEXT高电平有效时,当最后一个数据传输完成后,传输CRC数据。

Claims (6)

1.SPI发送模式的赋值结构,其特征在于,采用寄存器,用于根据异步置位信号实现数据的加载与发送,其中:
复位Rstn,用于清零移位寄存器,低电平有效;
发送缓冲器SPI_DR,用于寄存下一个待发送数据;
移位寄存器Shift_Reg,用于在SCK的输出沿控制下,移位输出待发送的数据;
其他控制逻辑OtherControlLogic,用于逻辑控制,包含CRC、DMA和数据位宽的控制逻辑。
2.根据权利要求1所述的SPI发送模式的赋值结构,其特征在于,所述移位寄存器Shift_Reg为移位寄存器Shift_Reg_MTx或者移位寄存器Shift_Reg_STx;
所述移位寄存器Shift_Reg_MTx,用于主设备在SCK的输出沿控制下,移位输出待发送的数据;
所述移位寄存器Shift_Reg_STx,用于从设备在SCK的输出沿控制下,移位输出待发送的数据。
3.根据权利要求1所述的SPI发送模式的赋值结构,其特征在于,所述其他控制逻辑OtherControlLogic包括:
DFF数据位宽,用于8或16位数据选择;
LSBFIRST帧格式选择,用于控制数据先发送MSB或LSB;
TXE发送缓冲器空标志,用于数据以及CRC的加载控制;
CRCNEXT_DMA,DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制;
CRCNEXT,非DMA模式下用于指示下一个待发送数据是CRC,用于CRC的加载控制。
4.根据权利要求1所述的SPI发送模式的赋值结构,其特征在于,所述异步置位信号包括:
时钟信号的相位和极性MO,用于时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
时钟信号的相位和极性M3,用于时钟空闲为高电平时下降沿采样数据,上升沿发送数据;
cnt_sck_neg_s,用于从设备SCK下降沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
cnt_sck_psg_s,用于从设备SCK上升沿控制的计数器,根据数据8或16位的位宽,计数到7或15时清零;
SPI总线写信号SPI_DR_Wr;
SPI忙信号BSY,高电平表示数据传输中;
MSTR,高电平时为主设备,反之为从设备,用于设备主从的选择。
5.SPI发送模式赋值结构的实现方法,其特征在于,用于主设备,包括以下步骤:
主设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
在发送第一个数据或时钟不连续的情况下,当检测到总线写信号有效且SPI不忙时,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_MTx,之后在SCK的控制下移位输出。
6.SPI发送模式赋值结构的实现方法,其特征在于,用于从设备,包括以下步骤:
从设备发送数据,时钟空闲为高电平时下降沿采样数据,上升沿发送数据;时钟空闲为低电平时上升沿采样数据,下降沿发送数据;
在发送第一个数据或时钟不连续的时候,当检测到总线写信号有效且从设备SCK上升沿计数器cnt_sck_psg_s和SCK下降沿计数器cnt_sck_neg_s数值均为0的情况下,将发送缓冲器SPI_DR中的数据异步加载到移位寄存器Shift_Reg_STx,之后在SCK的控制下移位输出。
CN202211283823.0A 2022-10-20 2022-10-20 Spi发送模式赋值结构的实现方法 Pending CN115563049A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211283823.0A CN115563049A (zh) 2022-10-20 2022-10-20 Spi发送模式赋值结构的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211283823.0A CN115563049A (zh) 2022-10-20 2022-10-20 Spi发送模式赋值结构的实现方法

Publications (1)

Publication Number Publication Date
CN115563049A true CN115563049A (zh) 2023-01-03

Family

ID=84767391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211283823.0A Pending CN115563049A (zh) 2022-10-20 2022-10-20 Spi发送模式赋值结构的实现方法

Country Status (1)

Country Link
CN (1) CN115563049A (zh)

Similar Documents

Publication Publication Date Title
US10198382B2 (en) 12C bus controller slave address register and command FIFO buffer
US6925512B2 (en) Communication between two embedded processors
EP2097828B1 (en) Dmac to handle transfers of unknown lengths
JP3636157B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
US20040073697A1 (en) Data transfer control device, electronic equipment, and data transfer control method
CN102023956A (zh) 集成电路芯片中串行外设从器件接口结构及数据读写方法
CN102841869B (zh) 一种基于fpga的多通道i2c控制器
EP3323051B1 (en) Spi interface with less-than-8-bit bytes and variable packet size
US7337382B2 (en) Data transfer control device, electronic instrument, and data transfer control method
US11630796B2 (en) Serial peripheral interface (SPI) automatic register address incrementation across data frames
CN110188059A (zh) 数据有效位统一配置的流控式fifo缓存结构及方法
US7469304B2 (en) Data transfer control device, electronic equipment, and method for a data transfer through a bus, the data transfer control device including a register and a packet buffer that are commonly used during a host operation and a peripheral operation
CN112328523A (zh) 传输双倍速率信号的方法、装置及系统
CN115563049A (zh) Spi发送模式赋值结构的实现方法
CN116192624A (zh) 通信接口的配置方法和通信接口
CN111026691A (zh) 基于apb总线的owi通讯设备
CN110659236B (zh) 可自主回复写应答的axi总线传输装置
CN112835834B (zh) 数据传输系统
US5701546A (en) Parallel interface circuit having a n-byte buffer and tansmitting the n byte data on a byte-by-byte basis in response to interrupt request signal
Warrier et al. FPGA implementation of SPI To I2C bridge
CN110389919B (zh) 基于risc-v处理器的异步收发传输器外设及系统
CN112667533B (zh) 包括子系统接口的半导体设备及其通信方法
CN116149453A (zh) 控制器、电子设备和数据传输系统
KR960007836B1 (ko) 트랜스퓨터 링크용 링크 어댑터 제어장치
CN115729863A (zh) 数据传输方法、装置、电子设备及介质

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