背景技术
SPI总线规定了四种逻辑信号,分别为:
1、SCK:串行时钟(Serial Clock),由主设备输出;
2、MOSI/SIMO:表示主设备输出、从设备输入(Master Output,Slave Input);
3、MISO/SOMI:表示主设备输入、从设备输出(Master Input,Slave Output);
4、SS_:从设备选择信号(Slave Select),低电平有效,由主设备输出。
图1是现有技术一种SPI架构图。支持标准SPI协议。并可根据控制逻辑103产生的当前设备工作模式选择信号(Mode)选择将当前设备101作为主设备(master)与其他设备102(此时其他设备为从设备slave)连接;或者选择将当前设备101作为从设备(slave)与其他设备(此时其他设备为主设备master)102连接。
(1)当前设备作为主设备工作原理为:控制逻辑103选择mode==master,输出寄存器104选择MOSI通路输出数据,输入寄存器105选择MISO通路输入数据,SS_及SCK作为输出,由控制逻辑103输出。其中,输入寄存器105、输出寄存器104的时钟SCK由控制逻辑103产生。
当前设备与其他设备之间的数据传输方向:MOSI,SS_,SCK由当前设备作为主设备输出到其他设备(此时其他设备为从设备),MISO由其他设备输出到当前设备作为主设备输入。
(2)当前设备作为从设备工作原理:控制逻辑选择mode==slave,输出寄存器104选择MISO通路输出数据,输入寄存器105选择MOSI通路输入数据,SS_和SCK作为输入,SS_和SCK经过控制逻辑103,把SCK作为输入寄存器105和输出寄存器104的时钟信号SCK。
当前设备与其他设备之间的数据传输方向:MISO由当前设备作为从设备输出到其他设备(此时其他设备为主设备),MOSI,SS_,SCK由其他主设备输出到当前设备作为从设备输入。
图1中当前设备101的MOSI、MISO、SS_、SCK端口均为双向输入输出端口,单独抽出如图2所示,双向输入输出端口由数据连接节点P和一个三态缓冲器组成,其中OE(Output Enable)为三态缓冲器的输出使能信号。如果OE使能,则数据连接节点P和输入线I(Input)线上数据都为输出线O(Output)的输出数据,如果OE不使能,则输出线O的数据不会传送到数据连接节点P或输入线I。
图1中的其他设备102的4根信号线都通过图2所示的双向输入输出端口的结构与当前设备的内部结构连接。
现有技术支持SPI全双工模式(输入数据与输出数据同时进行),在全双工模式下充分利用了MISO,MOSI数据接口。
然而,在多数情况下设备之间数据交换,仅要求设备工作在半双工(输入数据与输出数据在某一时刻仅有一个进行),即在某一时刻,主设备master仅需从从设备slave读取数据,或者主设备master仅需向从设备slave写入数据。半双工时,主设备Master完成一次读或完成一次写都需要8个SCK周期,时序如图3所示。这样,现有技术在设备工作在半双工时就仅有一个SPI数据信号线(MISO或MOSI)在工作,工作效率低下。
发明内容
本发明实施例提供一种当设备工作在半双工时,有效提高数据传输效率的接口装置。
本发明实施例提供的一种应用于串行外围接口协议SPI的接口装置,包括:控制逻辑功能单元、输入寄存器、输出寄存器、传送主设备输出从设备输入数据的MOSI端口、传送主设备输入从设备输出数据的MISO端口、传送从设备选择信号的SS_端口和传送由主设备输出的串行时钟的SCK端口,所述MOSI端口、MISO端口、SS_端口、SCK端口均为双向输入输出端口,该接口装置还包括:输入选择器、输出选择器;其中
所述控制逻辑功能单元,用于产生模式控制信号输出给所述输入选择器、输入寄存器、输出选择器和输出寄存器;
所述输入选择器,在所述控制逻辑功能单元输出的双端口半双工模式控制信号的控制下,同时从所述MOSI端口和所述MISO端口接收数据,并通过与所述输入寄存器相连接的两根数据线,将接收的数据传送至所述输入寄存器;
所述输出选择器,在所述控制逻辑功能单元输出的双端口半双工模式控制信号的控制下,从与所述输出寄存器相连接的两根数据线接收数据,并通过所述MOSI端口和所述MISO端口同时输出数据。
本发明实施例提供的接口装置还包括:输入组合器;其中
所述输入选择器的输出端还通过两根数据线连接到所述输入组合器;
所述输入寄存器的输出端通过一组6比特数据总线连接到所述输入组合器;
所述输入组合器的输出端通过一组8比特数据总线输出数据。
本发明实施例提供的接口装置还可以包括:输出组合器;其中
所述输出组合器通过一组8比特数据总线接收输出数据;
所述输出组合器的输出端通过一组6比特数据总线连接到所述输出寄存器的输入端,并通过两根数据线连接到所述输出选择器的输入端。
采用本发明,当设备工作于双端口半双工时,通过MOSI端口和MISO端口同时进行数据传送,有效提高了设备之间数据传送的效率。
在SPI协议下,在当前设备作为从设备时,当前设备(从设备)需要从其它设备(主设备)输入时钟信号,从设备自身没有时钟信号。主设备和从设备之间每次进行数据传输时,主设备只给从设备发送8个SCK时钟信号,传输8bit数据。因此,在从设备输入数据时,在8个SCK时钟信号内,从设备只能能把8bit数据传送到输入寄存器,从设备需要主设备输入额外的时钟信号才能把输入寄存器中存储的8bit数据传送到存储单元,以对数据进行下一步的操作。在从设备输出数据时,也需要主设备输入额外的时钟信号先把存储单元中的8bit数据传送到输出寄存器,然后在8个SCK时钟信号的控制下,把8bit数据传送到主设备。所述存储单元可以是寄存器、RAM或者其它实现存储功能的设备。
本发明的另一实施例,通过增加输入组合器和输出组合器及相应的输入输出控制逻辑,可以在只有主设备输入的8个SCK时钟信号、不需要主设备输入额外的时钟信号的情况下,实现从设备和主设备之间的数据传输(包括数据输入和数据输出)。
具体实施方式
下面结合附图,对本发明提供的接口装置结构及功能进行详细描述。
参见图4,为本发明实施例提供的接口装置结构示意图,包括:
图4中MOSI端口401、MISO端口402、SS_端口403、SCK端口404,均为双向输入输出端口,其内部结构如图2所示。MOSI端口(MOSI_I)、MISO端口(MISO_I)同时连接到输入选择器405,输入选择器405连接2根数据线到输入寄存器406;输出寄存器407连接2根数据线到输出选择器408,输出选择器408连接MOSI_O、MISO_O数据线连到MOSI端口401、MISO端口402。
在图4所示接口装置中,控制逻辑功能单元409除了具备现有技术中SPI的控制逻辑外,还用于产生输出给输入选择器405、输入寄存器406、输出选择器408和输出寄存器407的双端口半双工模式控制信号;
MOSI端口401,在标准SPI协议下,用于传送主设备输出从设备输入的MOSI数据,在控制逻辑功能单元409输出双端口半双工模式控制信号时,传送主设备输入从设备输出的MISO数据;
MISO端口402,在标准SPI协议下,用于传送主设备输出从设备输入的MISO数据,在控制逻辑功能单元409输出双端口半双工模式控制信号时,传送主设备输入从设备输出的MOSI数据;
输入选择器405,用于当控制逻辑功能单元409输出双端口半双工模式控制信号时,从MOSI端口401和MISO端口402接收输入数据,并通过与输入寄存器406相连接的两根数据线,传送至输入寄存器406;
所述输出选择器408,用于当所述控制逻辑功能单元409输出所述双端口半双工模式控制信号时,从与所述输出寄存器407相连接的两根数据线接收输出数据,由所述输出选择器408通过所述MOSI端口401和所述MISO端口402输出。
图5为采用本发明接口装置,当设备工作于双端口半双工时,主设备完成一次读写操作的对应时序图。由图5可见,由于本发明装置工作于双端口半双工时,同时通过MOSI端口和MISO端口传送数据,因此,传送一个字节(8bit数据),只需要4个SCK周期,而现有技术完成一个字节的读或写操作,都需要8个SCK周期(见图3)。
图6为输入选择器及输入寄存器连接的具体实施例。图6中:
输入选择器包括一个第一2选1选择器603和一个第二2选1选择器604;其中,第一2选1选择器603的第一输入端与第二2选1选择器604的第二输入端分别连接到MOSI端口的输入端;第一2选1选择器603的第二输入端与第二2选1选择器604的第一输入端分别连接到MISO端口的输入端;第一2选1选择器和第二2选1选择器的输出控制信号,为控制逻辑功能单元输出的主/从设备工作模式选定信号(图6中以采用主设备工作模式选定信号为例)。
输入寄存器包括一个第一4比特寄存器601和一个第二4比特寄存器602;其中,第一4比特寄存器601的输入端与第一2选1选择器603的输出端相连接;第二4比特寄存器602的输入端与第二2选1选择器604的输出端相连接。
为了兼容标准SPI的单端口输入,图7中,输入寄存器还包括:一个第三2选1选择器705;具体连接为:
第一4比特寄存器701的输出端连接到第三2选1选择器705的第一输入端,第三2选1选择器705的输出端连接到第二4比特寄存器702的输入端;
第二2选1选择器704的输出端连接到第三2选1选择器705的第二输入端;
第三2选1选择器705的选择控制信号,为控制逻辑功能单元输出的双端口半双工模式控制信号。
具体工作原理描述如下:
(1)当前设备作为主设备(控制信号mater==1):
采用双端口半双工输入时(对应附图6),mater==1,第一2选1选择器603选择MISO_I作为8bit输入寄存器中的4bit(reg[3:0])的输入;第二2选1选择器604选择MOSI_I作为8bit输入寄存器中的另4bit(reg[7:4])的输入,MISO和MOSI端口同时用作输入,每个端口输入4bit数据,4个SCK周期完成8bit输入。
采用单端口半双工输入时(对应附图7),mater==1,第一2选1选择器703选择MISO_I作为8bit输入寄存器中的4bit(reg[3:0])的输入;同时,dualport==0,semiduplex&dualport==0,第三2选1选择器705选择第一4比特寄存器701(reg[3:0])移位输出作为第二4比特寄存器702(reg[7:4])输入,数据只从MISO_I端口输入,8个SCK周期完成8bit输入,兼容标准SPI时序。
(2)当前设备作为从设备(控制信号master==0):
采用双端口半双工输入时(对应附图6),mater==0,第一2选1选择器603选择MOSI_I作为8bit输入寄存器中的4bit(reg[3:0])的输入;第二2选1选择器604选择MISO_I作为8bit输入寄存器中的另4bit(reg[7:4])的输入,MOSI和MISO端口同时用作输入,每个端口输入4bit数据,4个SCK周期完成8bit输入。
采用单端口半双工输入时(对应附图7),mater==0,第一2选1选择器703选择MOSI_I作为8bit输入寄存器中的4bit(reg[3:0])的输入;同时,dualport==0,semiduplex&dualport==0,第三2选1选择器705选择第一4比特寄存器701(reg[3:0])移位输出作为第二4比特寄存器702(reg[7:4])输入,数据只从MOSI_I端口输入,8个SCK完成8bit输入,兼容标准时序。
其中,reg[3:0]和reg[7:4]为两个4bit寄存器,其中第一和第二仅是为了描述方便,并不表示两个4bit寄存器存在功能与结构上的实质差异。
图8、图9为输出选择器及输出寄存器连接的具体实施例。图8中:
输出选择器包括一个第四2选1选择器801、一个第五2选1选择器802、MOSI端口输出使能信号产生单元805以及MISO端口输出使能信号产生单元806;输出寄存器包括一个第三4比特寄存器803和一个第四4比特寄存器804;其中
第四2选1选择器801的第一输入端与第五2选1选择器802的第二输入端分别连接到第三4比特寄存器803;
第四2选1选择器801的第二输入端与第五2选1选择器802的第一输入端分别连接到所述第四4比特寄存器804;以及
第四2选1选择器801与第五2选1选择器802的控制端信号均为模式控制信号(master或slave);
MOSI端口输出使能信号产生单元805,用于根据控制逻辑功能单元输出的主设备工作模式选定信号或双端口半双工模式控制信号产生MOSI端口输出使能信号;
MISO端口输出使能信号产生单元806,用于根据控制逻辑功能单元输出的从设备工作模式选定信号或双端口半双工模式控制信号产生MISO端口输出使能信号。
具体工作原理描述如下:
(1)当前设备作为主设备(master==1;slave==0):
采用双端口半双工输入时(对应附图8),slave==0,第四2选1选择器801选择MISO_I作为8bit输入寄存器中的4bit(reg[7:4])的输出;第五2选1选择器802选择MOSI_I作为8bit输入寄存器中的另4bit(reg[3:0])的输出,master==1,MOSI_OE使能;dualport==1,semiduplex&dualport&write==1,MISO_OE使能,MISO和MOSI端口同时用作输出,每个端口输出4bit数据,4个SCK周期完成8bit输出。
采用单端口半双工输入时(对应附图9),slave==0,第四2选1选择器901选择MISO_I作为8bit输入寄存器中的4bit(reg[7:4])的输出;第五2选1选择器902选择MOSI_I作为8bit输入寄存器中的另4bit(reg[3:0])的输出,master==1,MOSI_OE使能;dualport==0,semiduplex&dualport&write==0,MISO_OE不使能,只有MOSI端口用作输出,8个SCK周期完成8bit输出,兼容普通SPI协议。
(2)当前设备作为从设备(master==0;slave=1):
采用双端口半双工输入时(对应附图8),slave==1,第四2选1选择器801选择MISO_I作为8bit输入寄存器中的4bit(reg[3:0])的输出;第五2选1选择器802选择MOSI_I作为8bit输入寄存器中的另4bit(reg[7:4])的输出,dualport==1,semiduplex&dualport&write==1,MOSI_OE使能,slave==1,MISO_OE使能,MISO和MOSI端口同时用作输出,每个端口输出4bit数据,4个SCK周期完成8bit输出。
采用单端口半双工输入时(对应附图9),slave==1,第四2选1选择器901选择MISO_I作为8bit输入寄存器中的4bit(reg[3:0])的输出;第五2选1选择器902选择MOSI_I作为8bit输入寄存器中的另4bit(reg[7:4])的输出。第三4比特寄存器903(reg[7:4])的输出串行输入到第四4比特寄存器904(reg[3:0])。master==0,dualport==0,semiduplex&dualport&write==0,MOSI_OE不使能;dualport==0,semiduplex&dualport&write==0,slave==1,MISO_OE使能,只有MISO端口用作输出,8个SCK周期完成8bit输出,兼容普通SPI协议。
上述输入寄存器和输出寄存器分为两个4bit寄存器的顺序可以任意的,不限于上述以高4bit和低4bit的划分方式。如附图10所示。
在SPI协议下,在当前设备作为从设备时,当前设备(从设备)需要从其它设备(主设备)输入时钟信号,从设备自身没有时钟信号。主设备和从设备之间每次进行数据传输时,主设备只给从设备发送8个SCK时钟信号,传输8bit数据。因此,在从设备输入数据时,在8个SCK时钟信号内,从设备只能能把8bit数据传送到输入寄存器,从设备需要主设备输入额外的时钟信号才能把输入寄存器中存储的8bit数据传送到存储单元,以对数据进行下一步的操作。在从设备输出数据时,也需要主设备输入额外的时钟信号先把存储单元中的8bit数据传送到输出寄存器,然后在8个SCK时钟信号的控制下,把8bit数据传送到主设备。所述存储单元可以是寄存器、RAM或者其它实现存储功能的设备。
本发明的另一实施例,通过增加输入组合器和输出组合器及相应的输入输出控制逻辑,可以在只有主设备输入的8个SCK时钟信号、不需要主设备输入额外的时钟信号的情况下,实现从设备和主设备的数据传输(包括数据输入和数据输出)。本发明的另一实施例结构示意图如图11、图12所示,其具体连接关系描述如下:
图11中,输入选择器1105的2根输出信号线连接到输入寄存器1106,并且也连接到输入组合器1111;输入寄存器1106的一组6bit数据总线连接到输入组合器1111;输入组合器1111输出8bit总线到存储单元1112。存储单元1113输出8bit总线连接输出组合器1110;输出组合器1110的2根输出信号线连接到输出选择器1108;输出组合器1110的一组6bit数据总线连接到输出寄存器1107。控制逻辑功能单元送出读/写控制信号到存储单元1112和存储单元1113。
图12中,输入寄存器1206的通过两组输出信号线(其中一组为7bit数据总线,另一组为6bit数据总线)连接到输入组合器1211,其余连接结构与图11相同。输出组合器1210通过两组输出信号线(其中一组为7bit数据总线,另一组为6bit数据总线)连接到输出寄存器1207;其余连接结构与图11相同。控制逻辑功能单元送出读/写控制信号到存储单元1212和存储单元1213。
输入组合器工作原理:
图11中,当采用双端口输入时,在第1、2、3时钟周期,输入选择器1105将输入数据MOSI_I和MISO_I存入输入寄存器1106;控制逻辑功能单元1109在第4个时钟周期送出写控制信号给存储单元1112,并由输入寄存器1106中的第一4比特寄存器和第二4比特寄存器输出当前存储的各3比特数据通过6比特数据总线传送至输入组合器1111;在第4个时钟周期,输入组合器1111同时接收6比特数据和输入选择器1105通过连接的数据线传送的2比特数据(分别为MISO_I,MOSI_I),3路数据组合成8bit数据,通过8比特数据总线传送至送到存储单元1112。
当采用双端口输入,外设仅传输1byte数据时,SCK时钟信号只有4个周期,在外设输入的SCK时钟信号在传输4个时钟周期后不再有时钟的情况下,该实施例能在最后一个周期通知存储单元1112去读取这笔数据。
图12中,采用单端口输入时,在第1~7时钟周期,输入选择器1205将输入数据MISO_I存入输入寄存器1206;控制逻辑功能单元1209在第8个时钟周期送出写控制信号,并由输入寄存器1206中的第一4比特寄存器和第二4比特寄存器组成的8位移位寄存器输出当前存储的7比特数据,通过7比特数据总线传送至输入组合器1211;输入组合器1211接收7比特数据和输入选择器1205在第8个SCK时钟通过连接的数据线传送的1比特数据(MISO_I)组合成8bit数据,通过8比特数据总线传送至存储单元1212。
当采用单端口输入,如果只传1笔(8bit)数据或连续传输的最后一笔数据,在外设输入的SCK时钟信号在传输8个时钟周期后不再有时钟信号的情况下,该实施例能在最后一个周期通知存储单元1112去读取这笔数据。
输出组合器工作原理:
图11中,当采用双端口输出时,在时钟信号(SCK)的第1个时钟周期,输出选择器1108将通过与输出组合器1110连接的两根数据线传送的各1比特数据选择从MOSI_O及MISO_O同时输出。存储单元1113输出的8bit数据的剩余6bit通过6比特数据总线暂存到输出寄存器1107,在第2、3、4个时钟周期,输出选择器1108将存储在输出寄存器1107中的6bit数据通过连接的两根数据线在MOSI端口和MISO端口输出。
技术实现上只需对输出选择器做一下小改动即可,如图13中,在输出选择器的输入端加上多路选择器(图13中,增加了两个2选1选择器,分别为第六2选1选择器1301和第七2选1选择器1302),使其MISO_O和MOSI_O根据时钟信号是否为第一个周期,选择数据从存储单元1313输出还是从输出寄存器1307输出。具体为:
第六2选1选择器1303的第一输入端连接到输出寄存器中的第三4比特寄存器,第二输入端连接到输出组合器1310,输出端分别连接到第四2选1选择器1301的第一输入端和第五2选1选择器1302的第二输入端;
第七2选1选择器1304的第一输入端连接到输出寄存器中的第四4比特寄存器,第二输入端连接到连接到输出组合器1310,输出端连接到第五2选1选择器1302的第一输入端;
第六2选1选择器1303和第七2选1选择器1304的选择控制信号,为时钟信号(SCK)的第一周期信号。
图12中,采用单端口输出时,在输出数据字节的第1个SCK时钟,输出选择器1208将通过与输出组合器1210连接的数据线传送的数据字节的第一个比特数据选择从MISO_O输出,即MISO_O在SCK第1个周期直接由存储单元1213输出的8bit数据中的第1bit直接输出。存储单元1213输出的8bit数据的剩余7bit暂存到输出寄存器1207,由输出寄存器中的第三4比特寄存器和第四4比特寄存器组成的8位移位寄存器存储其余7比特数据,并在第2至第8个SCK时钟信号的控制下,通过输出选择器选择的MOSI端口或MISO端口输出。
这样就能满足当前设备作为从设备,接受外设控制,SCK由外设输入,当外设SCK时钟信号第1个周期到来的时候,可以直接输出数据,而不需要多余的SCK时钟周期把数据装载进输出寄存器1207。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。