可编程器件的访问方法及通信设备与流程

文档序号:17079965发布日期:2019-03-09 00:08阅读:149来源:国知局
可编程器件的访问方法及通信设备与流程

本发明涉及通信技术领域,具体而言,涉及一种可编程器件的访问方法及通信设备。



背景技术:

在交换机、路由器等通信设备的主板设计中,可以采用以下两种方案使得中央处理器(centralprocessingunit,cpu)能够通过spi(serialperipheralinterface,串行外设接口)总线访问多个复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)。其中,第一种方案可参照图1,cpu中具有多个spi控制器,每个spi控制器对应一个cpld,cpu有n个spi控制器就可以访问n个cpld,但目前市面上的cpu内的spi控制器的数量有限,一般不会超过2个,很难做到访问多个cpld,增加了cpu的复杂度和选型难度,也增加了硬件成本;第二种方案可参照图2,cpu中具有一个spi控制器,该spi控制器有多个片选(chipselect,cs)端口,每个片选端口单独控制一个cpld,cpu每次访问cpld时,多个片选端口中只有一个有效,从而只会选中一个cpld,cpu的spi控制器有n个片选端口就能访问n个cpld,但目前市面上的cpu的spi控制器片选端口数量有限,通常只有一个片选端口,故采用这种方式实用性不高。可见,上述的两种方案中,cpu的选型难度大,硬件成本高,且由于spi控制器及片选端口数量有限,导致cpu可访问的cpld的数量有较大的局限性。



技术实现要素:

本发明实施例的目的在于提供一种可编程器件的访问方法及通信设备,以改善上述问题。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提出一种可编程器件的访问方法,应用于通信设备,所述通信设备包括中央处理器及多个可编程器件,所述中央处理器包括一个spi控制器,所述spi控制器包括一个片选端口,所述片选端口与所述多个可编程器件均电连接,所述方法包括:

所述中央处理器通过所述片选端口向所述多个可编程器件输出第一片选信号,以与所述多个可编程器件建立通信;

所述中央处理器向所述多个可编程器件发送访问命令,其中,所述访问命令包括可编程器件地址字段,所述可编程器件地址字段用于存放待访问可编程器件的地址;

每个所述可编程器件在所述可编程器件地址字段存放的待访问可编程器件的地址为自身的地址时,确定与所述访问命令关联;

与所述访问命令关联的可编程器件响应所述访问命令。

第二方面,本发明实施例还提出一种通信设备,包括中央处理器及多个可编程器件,所述中央处理器包括一个spi控制器,所述spi控制器包括一个片选端口,所述片选端口与所述多个可编程器件均电连接;

所述中央处理器用于通过所述片选端口向所述多个可编程器件输出第一片选信号,以与所述多个可编程器件建立通信;

所述中央处理器还用于向所述多个可编程器件发送访问命令,其中,所述访问命令包括可编程器件地址字段,所述可编程器件地址字段用于存放待访问可编程器件的地址;

每个所述可编程器件用于在所述可编程器件地址字段存放的待访问可编程器件的地址为自身的地址时,确定与所述访问命令关联;

与所述访问命令关联的可编程器件用于响应所述访问命令。

相对现有技术,本发明实施例具有以下有益效果:

在本发明实施例中,所述通信设备包括中央处理器及多个可编程器件,所述中央处理器包括一个spi控制器,所述spi控制器包括一个片选端口,所述片选端口与所述多个可编程器件均电连接,所述中央处理器通过所述片选端口向所述多个可编程器件输出第一片选信号,以与所述多个可编程器件建立通信,所述中央处理器向所述多个可编程器件发送访问命令,其中,所述访问命令包括可编程器件地址字段,所述可编程器件地址字段用于存放待访问可编程器件的地址,每个所述可编程器件在所述可编程器件地址字段存放的待访问可编程器件的地址为自身的地址时,确定与所述访问命令关联,与所述访问命令关联的可编程器件响应所述访问命令。在本申请中,中央处理器仅需要一个片选端口就可以访问多个可编程器件,降低了中央处理器的选型难度和硬件成本,解决了实际应用中中央处理器的片选端口数量不够,无法满足访问多个可编程器件的问题,具有较好的扩展性。

本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了现有技术cpu通过多个spi控制器分别访问cpld的示意图。

图2示出了现有技术cpu通过一个spi控制器的多个片选端口访问cpld的示意图。

图3示出了本发明实施例所提供的通信设备的一种结构框图。

图4示出了本发明实施例所提供的通信设备的另一种结构框图。

图5示出了本发明实施例所提供的访问命令的格式的示意图。

图6示出了本发明实施例所提供的地址空间分配表的示意图。

图7示出了本发明实施例所提供的可编程器件的访问方法的一种流程示意图。

图8示出了本发明实施例所提供的可编程器件的访问方法的另一种流程示意图。

图标:100-通信设备;110-中央处理器;112-spi控制器;120-可编程器件。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参照图3,为本发明实施例所提供的通信设备100的结构框图。该通信设备100可以是交换机、路由器等设备,包括中央处理器110及多个可编程器件120,中央处理器110包括一个spi控制器112,该spi控制器112包括一个片选端口cs_1,该片选端口cs_1与多个可编程器件120均电连接,即该spi控制器112的片选端口cs_1同时与多个可编程器件120的片选端口(如图3所示的cs_1′、cs_2′、…、cs_n′)电连接。在本实施例中,该spi控制器112还包括第一sdi(seriaidatain,串行数据输入)端口sdi_1、第一sdo(serialdataout,串行数据输出)端口sdo_1及第一sck(serialclock,时钟)端口sck_1,每个可编程器件120还包括第二sdi端口(如图3所示的sdi_1′、sdi_2′、…、sdi_n′)、第二sdo端口(如图3所示的sdo_1′、sdo_2′、…、sdo_n′)及第二sck端口(如图3所示的sck_1′、sck_2′、…、sck_n′),该第一sdi端口sdi_1与每个可编程器件120的第二sdi端口电连接,该第一sdo端口sdo_1与每个可编程器件120的第二sdo端口电连接,该第一sck端口sck_1与每个可编程器件120的第二sck端口电连接。

在本实施例中,该可编程器件120可以是cpld、fpga(field-programmablegatearray,现场可编程门阵列)等,中央处理器110与多个可编程器件120中的任意一个可编程器件120通信时,中央处理器110作为主设备发起访问,可编程器件120作为从设备响应访问。

所述中央处理器110用于通过所述片选端口向所述多个可编程器件120输出第一片选信号,以与所述多个可编程器件120建立通信。

在本实施例中,中央处理器110向任意一个可编程器件120发起访问前,需要先通过片选端口输出第一片选信号,以通过该第一片选信号使能每个可编程器件120,从而与每个可编程器件120建立通信,使得每个可编程器件120都能通过第二sdi端口接收中央处理器110发送的指令或数据。其中,该第一片选信号可以采用高电平信号或者低电平信号,本申请对此不做限制。

所述中央处理器110还用于向所述多个可编程器件120发送访问命令,其中,所述访问命令包括可编程器件地址字段,所述可编程器件地址字段用于存放待访问可编程器件的地址。

在本实施例中,该中央处理器110具体用于通过第一sdi端口sdi_1向每个可编程器件120的第二sdi端口发送访问命令。即中央处理器110在使能所有的可编程器件120后,将访问命令通过第一sdi端口sdi_1发送到每一个可编程器件120。

每个所述可编程器件120用于根据访问命令中的可编程器件地址字段存放的待访问可编程器件的地址判断是否与所述访问命令关联。

在本实施例中,每个所述可编程器件120用于在所述可编程器件地址字段存放的待访问可编程器件的地址为自身的地址时,确定与所述访问命令关联;在所述可编程器件地址字段存放的待访问可编程器件的地址不为自身的地址时,确定与所述访问命令不关联。也即是说,当中央处理器110想要访问某个可编程器件120时,可将该可编程器件120的地址存放到该可编程器件地址字段中,每个可编程器件120通过自己的第二sdi端口接收访问命令后,对该访问命令中的可编程器件地址字段进行解析,并判断该可编程器件地址字段中存放的待访问可编程器件的地址是否与自身的地址相同,若相同,则确定自身与该访问命令关联,是中央处理器110想要访问的对象(即待访问可编程器件);若不相同,则确定自身与该访问命令不关联,不是中央处理器110想要访问的对象,待访问可编程器件是其他的可编程器件120。

与所述访问命令关联的可编程器件120用于响应所述访问命令。

在本实施例中,该访问命令还包括指令字段、数据字段以及数据存储地址字段,指令字段用于存放读数据指令或写数据指令,数据存储地址字段用于存放待访问可编程器件的数据存储地址,数据字段用于存放待写数据。每个可编程器件120通过自己的第二sdi端口接收访问命令后,对该访问命令的指令字段进行解析,当指令字段存放的内容为读数据指令时,表示中央处理器110要对待访问可编程器件进行读操作,当指令字段存放的内容为写数据指令时,表示中央处理器110要对待访问可编程器件进行写操作,该数据字段存放了中央处理器110要写入待访问可编程器件的数据。

在本实施例中,每个可编程器件120可包括多个寄存器,该多个寄存器用于存放数据,每个寄存器对应一个地址,即该访问命令中的数据存储地址字段存放的数据存储地址可理解为可编程器件120上的其中一个寄存器的地址,与访问命令关联的可编程器件120可以根据数据存储地址字段中的数据存储地址向对应的寄存器中读数据或写数据。

所述与所述访问命令关联的可编程器件120用于依据所述指令字段存放的写数据指令,将所述数据字段存放的待写数据写入所述数据存储地址字段存放的数据存储地址。即某个可编程器件120解析访问命令中的指令字段、可编程器件地址字段以及数据存储地址字段,当确定自己为与访问命令关联的可编程器件120且指令字段存放的是写数据指令时,从数据字段获取待写数据并向该数据存储地址字段中的数据存储地址对应的寄存器中写入该待写数据。

所述与所述访问命令关联的可编程器件120用于依据所述指令字段存放的读数据指令,从所述数据存储地址字段存放的数据存储地址中读取数据,并将读取的数据输出至所述中央处理器110。即某个可编程器件120解析访问命令中的指令字段、可编程器件地址字段以及数据存储地址字段,当确定自己为与访问命令关联的可编程器件120且指令字段存放的是读数据指令时,根据数据存储地址字段中的数据存储地址从对应的寄存器中读取数据。

在本实施例中,所述与所述访问命令关联的可编程器件120用于通过所述第二sdo端口将所述读取的数据输出至所述中央处理器110的所述第一sdo端口sdo_1。应理解的是,该多个可编程器件120中,只有与访问命令关联的可编程器件120的第二sdo端口才能向第一sdo端口sdo_1送出数据,而与访问命令不关联的可编程器件120的第二sdo端口要处于高阻状态,以保证多个可编程器件120间数据发送不会发生冲突。

进一步地,在本实施例中,当与访问命令关联的可编程器件120响应访问命令完成后,所述中央处理器110还用于通过所述片选端口cs_1向所述多个可编程器件120输出第二片选信号,以与所述多个可编程器件120断开通信。

在本实施例中,该第二片选信号也可以采用高电平信号或者低电平信号,当第一片选信号采用低电平信号时,则第二片选信号采用高电平信号,当第一片选信号采用高电平信号时,则第二片选信号采用低电平信号;如此,中央处理器110在结束对可编程器件120的访问后,通过该第二片选信号即可断开与每个可编程器件120之间的通信,此时中央处理器110既不能向可编程器件120的寄存器中写数据也不能从可编程器件120的寄存器中读数据。

下面给出一个实例,以对中央处理器110访问可编程器件120的原理进行具体说明。如图4所示,假设可编程器件120为cpld,中央处理器110通过一个片选端口cs_1,可以实现多个cpld(即cpld1、cpld2、…、cpldn)的访问。如图5所示,将访问命令的长度定义为32bit,即中央处理器110每次对cpld进行访问操作时,发出的访问命令可以用32bit的数据表示,高位在前,低位在后;定义0~7bit(即d[7:0])为上述的数据字段;定义8~23bit(即a[15:0])为地址字段,可表示216=64k个地址空间,其中,20~23bit(即a[15:12])为上述的可编程器件地址字段,用于表示中央处理器110需要访问的cpld,8~19bit(即a[11:0])为上述的数据存储地址字段,用于表示4kb地址空间,对应cpld的不同寄存器地址,地址空间分配表如图6所示;定义24~31bit为上述的指令字段,其中,c[7:0]=0x55表示读数据指令,c[7:0]=0xaa表示写数据指令。需要说明的是,在本实施例中,上述的指令字段、可编程器件地址字段、数据存储地址字段以及数据字段可以灵活定义,对于数据字段,通过调节传输的数据位宽可以和多种cpu系统进行对接,例如,采用8位的cpu系统时,数据字段采用8位进行数据传送,采用其他cpu系统时,数据位宽还可以为16位、24位等;对于可编程器件地址字段,可以为调整19~23bit(即a[15:11])用于表示中央处理器110需要访问的cpld。

实施时,假设第一片选信号为低电平信号,第二片选信号为高电平信号,则中央处理器110发起访问前先使能(enable)片选端口cs_1,即控制片选端口cs_1的电平为低电平,使得每个cpld的片选端口都接收到低电平信号,从而实现所有cpld的使能,使它们处于有效状态;当中央处理器110访问结束后,则禁用(disable)该片选端口cs_1,即控制片选端口cs_1的电平为高电平,使得每个cpld的片选端口都接收到高电平信号,此时所有cpld都处于禁用状态。当中央处理器110要向cpld1的寄存器1中写入数据0xff时,则中央处理器110通过spi控制器112的第一sdi端口发出的访问命令可以为“0xaa0001ff”,每个cpld对该访问命令中的每个bit的数据进行解析,得到c[7:0]=0xaa(即写数据指令)、a[15:12]=0000(即cpld1的地址),a[11:0]=0x001(即寄存器1的地址),d[7:0]=0xff(即待写数据),此时只有cpld1会响应此访问命令,而其他cpld不响应此访问命令,故中央处理器110向cpld1的寄存器1中写入数据“0xff”。

当中央处理器110要向cpld2的寄存器1中写入数据0xff时,则中央处理器110通过spi控制器112的第一sdi端口发出的访问命令可以为“0xaa1001ff”,每个cpld对该访问命令中的每个bit的数据进行解析,得到c[7:0]=0xaa(即写数据指令)、a[15:12]=0001(即cpld2的地址),a[11:0]=0x001(即寄存器1的地址),d[7:0]=0xff(即待写数据),此时只有cpld2会响应此访问命令,而其他cpld不响应此访问命令,故中央处理器110向cpld2的寄存器1中写入数据“0xff”。

当中央处理器110想要向cpld1的寄存器1中读取数据时,则中央处理器110通过spi控制器112的第一sdi端口发出的访问命令可以为“0x550001xx”,每个cpld对该访问命令中的每个bit对应的数据进行解析,得到c[7:0]=0x55(即读数据指令)、a[15:12]=0000(即cpld1的地址),a[11:0]=0x001(即寄存器1的地址),此时只有cpld1会响应此访问命令,而其他cpld不响应此访问命令,故中央处理器110向cpld1的寄存器1中读取数据,读取的数据通过cpld1的第二sdo端口(即sdo_1′)输出到中央处理器110的第一sdo端口。需要说明的是,当中央处理器110对cpld进行读操作时,其访问命令中的数据字段无需存放待写数据,该数据字段的内容“xx”可以是预先设定的一个值,本申请对此不做限制。

请参照图7,为本发明实施例所提供的可编程器件的访问方法的流程示意图。需要说明的是,本发明实施例所述的可编程器件的访问方法,并不以图7以及以下所述的具体顺序为限制,应当理解,在其它实施例中,本发明实施例所述的可编程器件的访问方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该可编程器件的访问方法可以应用于图3所示的通信设备100,其基本原理及产生的技术效果与该通信设备100相同,为简要描述,本实施例中未提及部分,可参考前述通信设备100的相应内容。下面对图7所示的流程进行阐述。

步骤s201,所述中央处理器110通过所述片选端口向所述多个可编程器件120输出第一片选信号,以与所述多个可编程器件120建立通信。

在本实施例中,该步骤s201具体包括:所述中央处理器110通过所述第一sdi端口向每个所述可编程器件120的所述第二sdi端口发送所述访问命令。

步骤s202,所述中央处理器110向所述多个可编程器件120发送访问命令,其中,所述访问命令包括可编程器件地址字段,所述可编程器件地址字段用于存放待访问可编程器件的地址。

在本实施例中,所述中央处理器110通过所述第一sdi端口向每个所述可编程器件120的所述第二sdi端口发送所述访问命令。

步骤s203,每个所述可编程器件120在所述可编程器件地址字段存放的待访问可编程器件的地址为自身的地址时,确定与所述访问命令关联。

步骤s204,与所述访问命令关联的可编程器件120响应所述访问命令。

在本实施例中,所述访问命令还包括指令字段、数据字段以及数据存储地址字段,所述指令字段用于存放写数据指令或读数据指令,所述数据字段用于存放待写数据,所述数据存储地址字段用于存放所述待访问可编程器件的数据存储地址。

当该指令字段存放的是写数据指令时,该步骤s204具体包括:所述与所述访问命令关联的可编程器件120依据所述指令字段存放的写数据指令,将所述数据字段存放的待写数据写入所述数据存储地址字段存放的数据存储地址。

当该指令字段存放的是读数据指令时,该步骤s204具体包括:所述与所述访问命令关联的可编程器件120依据所述指令字段存放的读数据指令,从所述数据存储地址字段存放的数据存储地址中读取数据,并将读取的数据输出至所述中央处理器110。其中,所述与所述访问命令关联的可编程器件120通过所述第二sdo端口将所述读取的数据输出至所述中央处理器110的所述第一sdo端口。

进一步地,如图8所示,与所述访问命令关联的可编程器件120响应所述访问命令之后,该方法还包括:

步骤s205,所述中央处理器110通过所述片选端口向所述多个可编程器件120输出第二片选信号,以与所述多个可编程器件120断开通信。

综上所述,本发明实施例提供的可编程器件的访问方法及通信设备,所述通信设备包括中央处理器及多个可编程器件,所述中央处理器包括一个spi控制器,所述spi控制器包括一个片选端口,所述片选端口与所述多个可编程器件均电连接,所述中央处理器通过所述片选端口向所述多个可编程器件输出第一片选信号,以与所述多个可编程器件建立通信,所述中央处理器向所述多个可编程器件发送访问命令,其中,所述访问命令包括可编程器件地址字段,所述可编程器件地址字段用于存放待访问可编程器件的地址,每个所述可编程器件在所述可编程器件地址字段存放的待访问可编程器件的地址为自身的地址时,确定与所述访问命令关联,与所述访问命令关联的可编程器件响应所述访问命令。在本申请中,中央处理器仅需要一个片选端口就可以访问多个可编程器件,降低了中央处理器的选型难度和硬件成本,解决了实际应用中因中央处理器的片选端口数量不够,无法满足访问多个可编程器件的问题,具有较好的扩展性。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1