技术领域
[0001] 本申请涉及数据传输技术领域,具体而言,涉及一种片上外部接口的通信方法。
相关背景技术
[0002] 目前芯片不支持主从机的切换,即只支持单一的主设备或者是从设备模式,不支持主从模式。其中,外部存储设备为SRAM,芯片对外部设备进行读写访问的时序图参见说明书附图2。例如,在一个简单的存储系统中,微处理器作为主设备可以向SRAM(从设备)发送读写命令。主设备负责产生地址信号(ADDR)、控制信号(如读信号RD_n和写信号WR_n),并在写操作时提供数据信号(DATA),当主设备要进行读操作时,它首先通过使能相关的芯片选择信号(MSx_n)来选择要读取的SRAM芯片。然后,主设备将读信号(RD_n)拉低,同时将指定的地址(ADDR)发送到SRAM。SRAM在接收到这些信号后,会根据地址将相应存储单元中的数据放置到数据线上(DATA),主设备再从数据线上获取数据。在写操作时,主设备先使能芯片选择信号,将写信号(WR‑n)拉低,把要写入的数据放在数据线上,同时发送目标存储单元的地址。SRAM会将数据线上的数据写入到由地址指定的存储单元中。
[0003] 但是,如果芯片不支持主从切换,其在总线架构中的角色就固定了,使得它不能灵活地融入一些复杂的多主设备的系统中。例如,在日益发展的智能家居系统中,可能有多个控制器(如手机、智能网关等)都想获取某个传感器芯片的数据,若传感器芯片不能切换为从设备,就无法满足这种多主设备的通信需求。
具体实施方式
[0037] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
[0038] 另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0039] 需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其他的特征。
[0040] 鉴于背景技术所提出的技术问题,本申请提供一种片上外部接口的通信方法,能够切换芯片的主/从模式,让芯片作为主机对外部访问或者让芯片作为从机被外部主机访问,进而灵活地应对不同的通信场景。
[0041] 参见说明书附图1,本申请提供的一种片上外部接口的通信方法,所述方法包括以下步骤:
[0042] S1、在接收到CPU或者其他主设备的对外访问请求后,检测外部总线是否空闲;其中,在检测到外部总线为空闲状态时,生成总线请求信号;
[0043] S2、在生成总线请求信号后的设定时钟内,检测外部总线上是否有有效的片选信号;其中,在设定时钟内检测到外部总线上没有有效的片选信号时,产生有效的片选信号,获取外部总线使用权,以作为主机对外部访问;在设定时钟内检测到外部总线上有有效的片选信号时,在该片选信号无效时,重新检测在设定时钟内外部总线上是否有有效的片选信号;
[0044] S3、根据配置的单线控制模式或者双线控制模式进行总线通信,并且在完成数据传输后,放弃外部总线使用权,以作为从机被外部主机访问。
[0045] 在本申请提供的一种片上外部接口的通信方法中,芯片外部接口默认处于从机模式,只有在接收到CPU或者其他主设备的对外访问请求后,查看当前外部总线的状态,才切换为主机模式。其中,参见说明书附图3,在主机模式下,让芯片作为主机对外部访问,具体的,芯片外部接口线通过申请总线获得权限,再发起数据访问,数据访问结束释放总线;参见说明书附图4,退出主机模式进入从机模式下,让芯片作为从机被外部主机访问,具体的,外部主机接口在申请总线,芯片授权后,接收访问请求,数据访问结束主机释放总线。从而根据实际需求采用不同的通信模式,灵活地应对不同的通信场景;并且在系统扩展过程中,支持主从切换的芯片能够更好地适应新设备的加入,简化并提升系统扩展性能。
[0046] 为了清楚地了解本申请实施例的技术方案,可以先对本申请芯片的外部接口进行说明。参见说明书附图2,在一实施例中,外部接口通过A[7:0]、ADDRSEL[3:0]、D[31:0]、DE[3:0]、CS、OE、WE、READY、REQ信号与外部主机进行通信。其中,A[7:0]为地址总线,作为主从机访问的地址;ADDRSEL[3:0]为访问基地址选择信号,选择访问地址的基地址;D[31:0]为数据总线;DE[3:0]为写数据有效标志位,并且每一位控制一个字节,可以定义数据传输的有效数据位,例如,DE[0]=1有效时,表示D[7:0]有效;DE[1]=1有效时,表示D[15:8]有效;DE[2]=1有效时,表示D[23:16]有效;DE[3]=1有效时,表示D[31:24]有效;CS为片选信号,在该实施例中低电平有效;OE为读写控制信号,在该实施例中,当使用单线控制模式控制数据传输时,高电平表示读,低电平表示写;使用双线控制模式时,低电平表示读;WE为写控制信号,在该实施例中你,当使用双线控制模式控制数据传输时,低电平表示写;READY为总线有效状态,在该实施例中,高电平表示当前传输可以继续进行,低电平表示当前状态需要维持;REQ为总线请求信号。
[0047] 在本申请中,提供片上外部接口单、双线控制模式。其中,芯片采用单线控制模式的数据传输协议参见说明书附图6,芯片采用双线控制模式的数据传输协议参见说明书附图6。其具体的工作原理应为本领域技术人员所是熟知的技术手段,在此不做赘述。本申请之所以提供单、双线控制模式,是由于这样可以满足不同应用场景的需求。例如,在单线控制模式下,可以节省芯片的使用管脚,适用于小封装(芯片管脚少的)的芯片;在双线控制模式下,虽然增加了芯片的使用管脚,成本有所增加,但是相比单线控制模式功能更加丰富、抗干扰能力更强。
[0048] 需要说明单是,在本申请中,多个芯片以共享总线的方式挂在同一套总线上,每个芯片对应的设备都可以作为主机或者从机。其中,从硬件连接角度看,采用共享总线方式可以简化系统的布线,相较于为每个芯片都单独建立一套连接通道,使用共享总线只需要一套总线就可以将多个芯片连接起来,实现资源共享和协同工作。并且在本申请中,片外部接口默认处于从机模式,步骤S1中,只有接收到CPU或者其他主设备的对外访问请求后,查看当前外部总线的状态,才切换为主机模式。
[0049] 首先在接收到CPU或者其他主设备的对外访问请求后,需要检测其他设备(CPU)是否有在使用外部总线,即REQ是否为低电平。如果REQ是高电平,表示此时正在有其他设备在申请并使用总线,此时不能申请总线;如果REQ是低电平,表示此时没有其他设备在申请并使用总线,此时总线空闲,可以申请总线的使用权;申请总线的使用权后,即产生高电平的REQ。
[0050] 而在本申请中,并不是在申请总线的使用权后就立马获取到总线的使用权的,这是由于本申请设置了等待机制,来确保基于共享总线的系统中的设备能够有序使用总线资源。正如步骤S2所述,在生成总线请求信号后的设定时钟CLK内,检测外部总线上是否有有效的片选信号CS;其中,在设定时钟CLK内检测到外部总线上没有有效的片选信号CS时,产生有效的片选信号CS,获取外部总线使用权,以作为主机对外部访问;在设定时钟CLK内检测到外部总线上有有效的片选信号CS时,在该片选信号CS无效时,重新检测在设定时钟CLK内外部总线上是否有有效的片选信号CS。
[0051] 在一实施例中,通过芯片内部的CPU配置外部接口的ID寄存器,为每个芯片分配一个ID号,并且ID号越大,获取外部总线使用权的优先级越低;ID号越小,获取外部总线使用权的优先级越高。设置的等待机制为,在生成总线请求信号后的ID+1个时钟内,检测外部总线上是否有有效的有片选信号。即,根据芯片的ID号信息,在产生REQ信号之后的(ID+1)个CLK之内,如果总线上没有CS有效信号(CS=0),该芯片输出产生CS信号;如果有CS有效信号,则表明在同一时刻有其他的设备产生了REQ,而其他产生REQ请求的设备的ID号比当前设备ID号小,需要等待其他设备数据传输完成之后,即CS拉高之后的(ID+1)个时钟之后产生CS有效信号来占有总线使用权。
[0052] 所设置的等待机制确保了基于共享总线的系统中的设备能够有序使用总线资源。如果多个设备同时请求总线使用权,通过比较ID号的大小来确定优先级,可以避免总线冲突和数据传输错误。较小ID号的设备具有更高的优先级,优先使用总线,这有助于保证关键任务或紧急任务能够及时得到处理。例如,说明书附图示出了芯片的ID为3的申请总线并占用总线的时序图。当产生REQ信号后,计数器开始计数。如果在3+1=4个CLK周期内CS信号仍然为高电平,才产生低电平的CS有效信号。
[0053] 在步骤S3中,即芯片获得总线权限之后,根据配置的单线还是双线模式协议,进行总线通信。其中,产生地址信号的同时,需要根据基地址控制寄存器,输出基地址控制信号ADDRSEL。所述基地址控制寄存器是一个存储特定地址值(即基地址)的寄存器,这个基地址是一个参考点,用于确定地址范围的起始位置,系统根据基地址控制寄存器中的值来生成ADDRSEL信号。
[0054] 并且,首先发送一次写操作命令,对地址O,写要接收的设备的ID号,使能需要接收信息的设备。如果写的数据为全0,则表示所有设备都需要接收该主设备发送的写数据请求。即可以完成后续的对所有设备的写操作;如果是写对应的ID,如ID=1,则ID号为1的设备接收主机发送的访问请求,其余设备不处理该请求。其中,对ID号为1的设备进行进行写地址A1后再读操作的时序信息如说明书附图9所示。
[0055] 另外,写数据的有效位可以根据DE控制信号来决定,如果是写8位数据,需要根据实际需要产生DE对应的1bit为1;如果是16位数据需要产生2位有效位,如果是32位数据,需要4位同时生效。
[0056] 在从机设备没有处理完成请求时,会拉低总线有效状态READY信号,主机需要通过判断总线有效状态READY信号来决定该次请求是否已经完成。在完成数据传输后,放弃总线申请,恢复为从机模式。
[0057] 在从机模式下,同样也需要配置从机使能、配置从机的工作模式是单线控制模式或者双线控制模式;同时配置addrsel对应的偏移地址(有多个寄存器,在一实施例中有15个寄存器,其中basesel=0时是外部接口模块的地址信息);使能的从机设备,接收主机发送的命令信号,当接收到写地址为0的操作时,对写入的数据进行判断,如果写数据为0时,需要接收后续的写操作请求;如果写的数据不是0,需要判断是否匹配了本设备的ID号,如果匹配则处理后续的数据访问请求。
[0058] 其中,需要对访问地址进行处理,根据ADDRSEL的信息,选择对应配置寄存器信息的偏移地址;如果主机访问的地址ADDRSEL=0,此时访问的是外部接口的偏移地址;如果是其余的地址信息,则需要根据CPU配置的addrsel地址来确定访问的地址是哪一部分,例如主机访问时ADDRSEL[3:0]=1,A=0x55时,CPU配置的base_addr1寄存器为0xff00,则此时访问的地址为0xff55地址,即需要将ADDRSEL选择的base_addr1地址与A相加得到芯片内部的真实地址。如果是写操作需要将写数据写入到对应的操作,读操作将对应地址的寄存器读出,放在总线上。
[0059] 如果读数据不能及时返回或者写数据时遇到芯片系统内部的总线忙时,需要将[0060] 总线有效状态READY信号拉低,直到能返回主机读地址的有效数据或者是处理完成主机写操作后再释放总线有效状态READY信号。主机传输完成数据即当CS变高时,清除从设备使能接收使能,等待下一次数据传输。
[0061] 可见,本申请提供的一种片上外部接口的通信方法,提供芯片主/从模式切换的功能,能够让芯片作为主机对外部访问或者让芯片作为从机被外部主机访问,进而可以灵活地应对不同的通信场景;并且在从机模式切换为主机模式的过程中,采用基于芯片ID号设置的等待机制,获取总线的使用权,避免总线冲突和数据传输错误。
[0062] 基于本发明的同一构思,说明书附图10所示,本申请实施例提供的一种电子设备1000的结构,该电子设备1000包括:至少一个处理器1001,至少一个网络接口1004或者其他用户接口1003,存储器1005,至少一个通信总线1002。通信总线1002用于实现这些组件之间的连接通信。该电子设备1000可选的包含用户接口1003,包括显示器(例如,触摸屏、LCD、CRT、全息成像(Holographic)或者投影(Projector)等),键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触摸屏等)。
[0063] 存储器1005可以包括只读存储器和随机存取存储器,并向处理器1001提供指令和数据。存储器1005的一部分还可以包括非易失性随机存取存储器(NVRAM)。
[0064] 在一些实施方式中,存储器1005存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
[0065] 操作系统10051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;
[0066] 应用程序模块10052,包含各种应用程序,例如桌面(launcher)、媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。
[0067] 在本申请实施例中,通过调用存储器1005存储的程序或指令,处理器1001用于执行如一种于大模型的智能问答方法中的步骤,能够切换芯片的主/从模式,让芯片作为主机对外部访问或者让芯片作为从机被外部主机访问,进而灵活地应对不同的通信场景。
[0068] 本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如于大模型的智能问答方法中的步骤。
[0069] 具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述于大模型的智能问答方法。
[0070] 在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0071] 作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0072] 另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0073] 功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0074] 最后应说明的是:以上实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。