SPI双主机共享仲裁系统及方法与流程
未命名
08-13
阅读:220
评论:0

spi双主机共享仲裁系统及方法
技术领域
1.本发明涉及通信领域,特别涉及一种spi双主机共享仲裁系统及方法。
背景技术:
2.spi是常用低速通信总线之一,传统的spi总线是1个主机和多个从机组成一个系统,在使用过程中,如果有多个主机要共享一个从机数据,spi协议本身是无法支持的。
3.实际应用中,有多个主机共享一个从机的需求。例如,支持spi接口的flash容量比较大,两个主机分别使用一块flash成本比较高,而共享同一个flash则可以解决这个问题。
4.传统的共享方法是一个主机通过spi连接到从机,另一个主机通过该主机访问从机。这样的处理方式要求两个主机之间必须定义一个上层软件协议,在有些场景是不现实的,例如开机阶段,还没有任何协议建立。
技术实现要素:
5.针对现有技术中存在的问题,提供了一种spi双主机共享仲裁系统及方法,扩展了spi协议,增加了双主机仲裁机制,使其能支持两主机单从机,而无需实现上层软件协议。
6.本发明采用的技术方案如下:spi双主机共享仲裁系统,包括:主机a、主机b以及从机,主机a和主b通过同一spi总线与从机连接;主机a与主机b中均设有仲裁模块,在主机a或主机b要发送spi帧到从机时,在发送数据前,引入仲裁编码通过仲裁模块完成仲裁,根据仲裁结果判断是否发送spi帧。
7.作为一种优选方案,主机a与主机b之间通过4bit dq线完成仲裁编码,主机a与主机b的dq0-dq3一一对应连接,仲裁时,各主机将仲裁编码驱动到dq总线的dq0-dq3上,dq为开漏输出,在某一位仲裁编码为低时,dq总线上对应位体现为低。
8.作为一种优选方案,仲裁模块的工作过程为:若主机a要发送spi帧时,且cs为高,拉低cs,同时将仲裁编码信息驱动到dq总线上;计时到仲裁时间,采集dq总线上仲裁数据,判断仲裁结果,若失败,则释放总线,若成功,则继续发送dq总线上的数据;若主机a在传输时主机b未进行传输,则仲裁结果默认为成功,否则进行优先级仲裁,确定仲裁结果。
9.作为一种优选方案,优先级仲裁具体方法为:获取的dq总线上仲裁数据为全0时,判断本主机发送的仲裁编码是否为全0,若是则本主机优先级高,仲裁结果为成功,否则失败;获取的dq总线上仲裁数据并非为全0时,若本主机的仲裁编码第一位0所在位置在dq总线上仲裁数据第一位0所在位置之后,则表示本主机优先级低,仲裁结果为失败,否则表示成功。
10.作为一种优选方案,在仲裁过程中,需要对两个主机进行同步,同步的具体方法为:在某主机的cs拉低时,开始计数,计数超时后认为对端主机已经送出仲裁信息,此时获取dq总线上仲裁数据。
11.作为一种优选方案,仲裁结果分为单次和独占,单次时表示仅在一次仲裁中生效;独占时只有在独占主机提出单次请求或提出空请求时才能释放总线。
12.作为一种优选方案,若独占主机复位,在复位期间,失去仲裁的主机能够在软件触发下提单空请求,主动获得总线状态,由于独占主机复位,只能发出空仲裁信息,则失去仲裁的主机获得该信息后,可主动发起非空仲裁申请。
13.本发明还提供了一种基于spi双主机共享仲裁方法,主机a和主机b通过spi总线与从机连接;在主机a要发送spi帧时,主机a拉低cs信号,同时将仲裁编码驱动到dq总线,若主机b需要发送spi帧,主机b在2n时间后拉低cs并给出仲裁编码到dq总线,在主机b输出稳定,满足主机a的采样建立时候后即可采样dq总线上仲裁数据;主机a如果仲裁失败则释放cs、sck以及dq,由主机b发送spi帧,如果仲裁成功则发送spi帧;其中,主机a与主机b的rclk时钟周期比例为1:n。
14.作为一种优选方案,仲裁的具体方法为:获取的dq总线上仲裁数据为全0时,判断本主机发送的仲裁编码是否为全0,若是则本主机优先级高,仲裁结果为成功,否则失败;获取的dq总线上仲裁数据并非为全0时,若本主机的仲裁编码第一位0所在位置在dq总线上仲裁数据第一位0所在位置之后,则表示本主机优先级低,仲裁结果为失败,否则表示成功。
15.作为一种优选方案,仲裁结果分为单次和独占,单次时表示仅在一次仲裁中生效;独占时只有在独占主机提出单次请求或提出空请求时才能释放总线。
16.作为一种优选方案,若独占主机复位,在复位期间,失去仲裁的主机能够在软件触发下提单空请求,主动获得总线状态,由于独占主机复位,只能发出空仲裁信息,则失去仲裁的主机获得该信息后,可主动发起非空仲裁申请。
17.与现有技术相比,采用上述技术方案的有益效果为:本发明通过为spi增加仲裁机制,使其能够支持双主机单从机,无需实现上层软件协议。
附图说明
18.图1为本发明提出的spi双主机共享仲裁系统示意图。
19.图2为本发明一实施例中仲裁原理图。
20.图3为本发明一实施例中工作时钟仲裁示例图。
具体实施方式
21.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能理解为对本技术的限制。相反,本技术的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
22.如图1所示,spi双主机共享仲裁系统,包括:主机a、主机b以及从机,主机a和主b通过同一spi总线与从机连接;主机a与主机b中均设有仲裁模块,在主机a或主机b要发送spi帧到从机时,在发送数据前,引入仲裁编码通过仲裁模块完成仲裁,根据仲裁结果判断是否发送spi帧。
23.图1中,软件或者固件,能够配置arb模块寄存器,对arb进行控。命令状态机,用于生成对从机操作的指令序列。缓存用于缓存cmdfsm和spifsm之间的命令和数据。spi时序控制状态机,用来生成spi单帧序列,能控制cs和dq,sck。仲裁模块,用于实现spi总线仲裁功
能。
24.在本实施例中,主机a和主机b和从机都通过各自的spi接口连接到spi总线上。通常情况,在1对1的连接中,主机只需要spifsm逻辑控制spi总线即可,但是在有双主机的情况下,由于同时访问从机的冲突存在,原方式不可行,由此,本实施例的主机中均增加仲裁模块,来处理总线仲裁。对于从机而言,不需要做任何处理,其看到的还是原始spi协议,只是会有一段无效时间,即仲裁花费的时间。
25.本实施例中,主机a与主机b之间通过4bit dq线完成仲裁编码,主机a与主机b的dq0-dq3一一对应连接(即主机a和主机b的dq0是连接到一起的,dq1是连接到一起的,以此类推),仲裁时,各主机将仲裁编码驱动到dq0-dq3上,dq为开漏输出,在某一位仲裁编码为低时,dq总线上对应位体现为低。在spi接口使用时,对于主机而言,cs、sck为推挽输出信号,dqx(x取值为0-3)为推挽双向信号;对于从机而言,cs、sck为输入信号,dqx(x取值为0-3)为推挽双向信号。在有多主机连接到一起情况下,主机不需要发送数据时,cs为开漏,内部拉高,sck拉低。
26.例如,主机a的仲裁编码为0101,主机b的总裁编码为0011,则dq总线上数据体现为0001。由于用一根线无法判断,例如两个主机都输出低或者都输出高,所以本实施例采用4根线进行判断。
27.在实际使用中,可能会关闭时钟或电源,因此,需要在仲裁时进行同步处理,本实施例采用的同步方式为超时,即在一个主机要开始启动发送时,首先将cs拉低,开始计数,计数超时后认为对端主机已经送出仲裁信息,此时采样dqzo总线上仲裁数据。
28.本实施例中,仲裁同步基本信号选择为cs,这是由于仲裁需要在一帧开始之前,仲裁模块可以根据cmdfsm和spifsm的状态得知cs起点。
29.仲裁的基本过程为:若主机a要发送spi帧时,且cs为高,拉低cs,同时将仲裁编码信息驱动到dq总线上;计时到仲裁时间,采集dq总线上仲裁数据,判断仲裁结果,若失败,则释放总线,若成功,则继续发送dq总线上的数据;若主机a在传输时主机b未进行传输,则仲裁结果默认为成功,否则进行优先级仲裁,确定仲裁结果。
30.需要说明的是,尽管在主机a在传输时主机b未进行传输时,仲裁结果默认为成功,即如果只有一方启动了传输,那么另一方会放idle(闲置)到总线上,只有启动传输的一方会获胜。但此时,主机b依然会知道主机a正在传输,实际过程为,在主机a启动传输,b没有传输需求时,主机b在主机a将cs拉低仲裁期间,将cs,dqx驱动为od1(open drain high,弱上拉),在仲裁窗口,b发现a有高优先级仲裁,在传输窗口释放总线cs和dq为hiz,传输完成又恢复至od1。
31.优先级仲裁具体方法为:获取的dq总线上仲裁数据为全0时,判断本主机发送的仲裁编码是否为全0,若是则本主机优先级高,仲裁结果为成功,否则失败;获取的dq总线上仲裁数据并非为全0时,若本主机的仲裁编码第一位0所在位置在dq总线上仲裁数据第一位0所在位置之后,则表示本主机优先级低,仲裁结果为失败,否则表示成功。
32.例如,a为0000,b为0111,总线体现为0000,则a获胜,若a为1011,b为0111,总线体现为0011,a发现0位置前的总线体现数据上存在0,则表示a失败。如图2所示为本实施例仲裁过程中各个事件触发事件示例图,包括发送仲裁信息,判断仲裁信息,仲裁失败释放总线,驱动总线发送spi帧,仲裁成功释放总线。
33.在该示例中,主机a和主机b的rclk时钟周期比例为1:n,n可以为小数;csa1和csa2均为主机a控制的cs,csb1和csb2均为主机b控制的cs,1和2代表可能主机a先驱动或者主机b先驱动,只是为了区分先后的顺序,分析不同的情况,trela/trelb:主机a/b开始释放cs时间。tscka/trelb:主机a/b开始驱动sck的时间。
34.t1时刻,csa1先拉低后,将仲裁编码请求到dq。
35.t2时刻,csb1最晚在2n后的t2拉低并给出仲裁编码请求到dq,因为在3n时主机b发现cs已经变低,就不会在拉低cs。
36.在t2后,主机a等到主机b输出稳定,满足采样建立时候后即可采样dq总线仲裁数据。
37.对于csb,csa也可能在csb拉低后再拉低,采用同样的计算方法,csb的采样点在t4。
38.t5时刻,主机a如果仲裁失败可以释放cs,sck,dq,因为此时主机b已经仲裁完毕。
39.t6时刻,主机b如果仲裁失败可以释放cs,sck,dq,因为此时主机a已经仲裁完毕。
40.t6时刻,主机a仲裁成功可以发送spi帧,因为主机b仲裁失败已经释放了总线。
41.t7时刻,主机b如果仲裁成功可以发送spi帧,因为主机a如果仲裁失败,已经释放总线。
42.如图3所示为本实施例提出的工作时钟为1:1的场景,图中推挽输出1为pp1,输出0为pp0,不输出为pphiz,开漏输出1为od1,输出0为od0。
43.sck和dq在各个阶段的状态如表1所示:
44.表1
[0045] idle仲裁释放传输sckpp0pp0pphizpp01dqod1od01pphizpp01
[0046]
主机a和主机b的仲裁采样时间为3,仲裁失败释放时间为6,开始驱动总线时间为8(单位为工作时钟周期数)。
[0047]
在本实施例中,采用4bit dqx线来做仲裁编码,由于使用当中,cmdfsm可能产生spi操作序列,即一次请求需要发送n个spi序列,因此,仲裁结果分为单次和独占两种情况。
[0048]
结果为单次时表示仅在一次仲裁中生效;结果为独占时只有在独占主机提出单次请求或提出空请求时才能释放总线。
[0049]
需要说明的是,若独占主机复位,在复位期间,失去仲裁的主机能够在软件触发下提单空请求,主动获得总线状态,由于独占主机复位,只能发出空仲裁信息,则失去仲裁的主机获得该信息后,可主动发起非空仲裁申请。
[0050]
本实施例提出的仲裁编码具体表2所示:
[0051]
表2
[0052][0053]
通过上述编码,即当a或者b将这6种格式种的某种驱动到总线上,则总线会按照提出的优先级仲裁方法得到最终结果。能够实现lck独占优先级高于slg单次优先级,同时能实现主机a和主机b之间的相同优先级请求调度。
[0054]
需要说明的是,调度算法可以根据需要选择,优选采用例如sp严格优先级、rr轮询调度或者wfq按比例调度。
[0055]
实施例2
[0056]
本发明还提供了一种基于spi双主机共享仲裁方法,主机a和主机b通过spi总线与从机连接;在主机a要发送spi帧时,主机a拉低cs信号,同时将仲裁编码驱动到dq总线,若主机b需要发送spi帧,主机b在2n时间后拉低cs并给出仲裁编码到dq总线,在主机b输出稳定,满足主机a的采样建立时候后即可采样dq总线上仲裁数据;主机a如果仲裁失败则释放cs、sck以及dq,由主机b发送spi帧,如果仲裁成功则发送spi帧;其中,主机a与主机b的rclk时钟周期比例为1:n。
[0057]
在本实施例中,仲裁的具体方法为:获取的dq总线上仲裁数据为全0时,判断本主机发送的仲裁编码是否为全0,若是则本主机优先级高,仲裁结果为成功,否则失败;获取的dq总线上仲裁数据并非为全0时,若本主机的仲裁编码第一位0所在位置在dq总线上仲裁数据第一位0所在位置之后,则表示本主机优先级低,仲裁结果为失败,否则表示成功。
[0058]
作为一种优选实施例方式,仲裁结果分为单次和独占,单次时表示仅在一次仲裁中生效;独占时只有在独占主机提出单次请求或提出空请求时才能释放总线。
[0059]
作为一种优选实施例方式,若独占主机复位,在复位期间,失去仲裁的主机能够在软件触发下提单空请求,主动获得总线状态,由于独占主机复位,只能发出空仲裁信息,则失去仲裁的主机获得该信息后,可主动发起非空仲裁申请。
[0060]
需要说明的是,在本发明实施例的描述中,除非另有明确的规定和限定,术语“设
置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接连接,也可以通过中间媒介间接连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义;实施例中的附图用以对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
[0061]
尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
技术特征:
1.spi双主机共享仲裁系统,其特征在于,包括:主机a、主机b以及从机,主机a和主b通过同一spi总线与从机连接;主机a与主机b中均设有仲裁模块,在主机a或主机b要发送spi帧到从机时,在发送数据前,引入仲裁编码通过仲裁模块完成仲裁,根据仲裁结果判断是否发送spi帧。2.根据权利要求1所述的spi双主机共享仲裁系统,其特征在于,主机a与主机b之间通过4bit dq线完成仲裁编码,主机a与主机b的dq0-dq3一一对应连接,仲裁时,各主机将仲裁编码驱动到dq0-dq3上,dq为开漏输出,在某一位仲裁编码为低时,dq总线上对应位体现为低。3.根据权利要求2所述的spi双主机共享仲裁系统,其特征在于,仲裁模块的工作过程为:若主机a要发送spi帧时,且cs为高,拉低cs,同时将仲裁编码信息驱动到dq总线上;计时到仲裁时间,采集dq总线上仲裁数据,判断仲裁结果,若失败,则释放总线,若成功,则继续发送dq总线上的数据;若主机a在传输时主机b未进行传输,则仲裁结果默认为成功,否则进行优先级仲裁,确定仲裁结果。4.根据权利要求3所述的spi双主机共享仲裁系统,其特征在于,优先级仲裁具体方法为:获取的dq总线上仲裁数据为全0时,判断本主机发送的仲裁编码是否为全0,若是则本主机优先级高,仲裁结果为成功,否则失败;获取的dq总线上仲裁数据并非为全0时,若本主机的仲裁编码第一位0所在位置在dq总线上仲裁数据第一位0所在位置之后,则表示本主机优先级低,仲裁结果为失败,否则表示成功。5.根据权利要求1所述的spi双主机共享仲裁系统,其特征在于,在仲裁过程中,需要对两个主机进行同步,同步的具体方法为:在某主机的cs拉低时,开始计数,计数超时后认为对端主机已经送出仲裁信息,此时获取dq总线上仲裁数据。6.根据权利要求1所述的spi双主机共享仲裁系统,其特征在于,仲裁结果分为单次和独占,单次时表示仅在一次仲裁中生效;独占时只有在独占主机提出单次请求或提出空请求时才能释放总线;若独占主机复位,在复位期间,失去仲裁的主机能够在软件触发下提单空请求,主动获得总线状态,由于独占主机复位,只能发出空仲裁信息,则失去仲裁的主机获得该信息后,可主动发起非空仲裁申请。7.spi双主机共享仲裁方法,其特征在于,主机a和主机b通过spi总线与从机连接;在主机a要发送spi帧时,主机a拉低cs信号,同时将仲裁编码驱动到dq总线,若主机b需要发送spi帧,主机b在2n时间后拉低cs并给出仲裁编码到dq总线,在主机b输出稳定,满足主机a的采样建立时候后即可采样dq总线上仲裁数据;主机a如果仲裁失败则释放cs、sck以及dq,由主机b发送spi帧,如果仲裁成功则发送spi帧;其中,主机a与主机b的rclk时钟周期比例为1:n。8.根据权利要求7所述的spi双主机共享仲裁方法,其特征在于,仲裁的具体方法为:获取的dq总线上仲裁数据为全0时,判断本主机发送的仲裁编码是否为全0,若是则本主机优先级高,仲裁结果为成功,否则失败;获取的dq总线上仲裁数据并非为全0时,若本主机的仲裁编码第一位0所在位置在dq总线上仲裁数据第一位0所在位置之后,则表示本主机优先级低,仲裁结果为失败,否则表示成功。9.根据权利要求7或8所述的spi双主机共享仲裁方法,其特征在于,仲裁结果分为单次和独占,单次时表示仅在一次仲裁中生效;独占时只有在独占主机提出单次请求或提出空
请求时才能释放总线。10.根据权利要求9所述的spi双主机共享仲裁方法,其特征在于,若独占主机复位,在复位期间,失去仲裁的主机能够在软件触发下提单空请求,主动获得总线状态,由于独占主机复位,只能发出空仲裁信息,则失去仲裁的主机获得该信息后,可主动发起非空仲裁申请。
技术总结
本发明提供了SPI双主机共享仲裁系统,包括:主机A、主机B以及从机,主机A和主B通过同一SPI总线与从机连接;主机A与主机B中均设有仲裁模块,在主机A或主机B要发送SPI帧到从机时,在发送数据前,引入仲裁编码通过仲裁模块完成仲裁,根据仲裁结果判断是否发送SPI帧。本发明通过为SPI增加仲裁机制,使其能够支持双主机单从机,无需实现上层软件协议。无需实现上层软件协议。无需实现上层软件协议。
技术研发人员:徐聪
受保护的技术使用者:成都电科星拓科技有限公司
技术研发日:2023.03.28
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/