一种可编程逻辑器件在线升级方法及系统

文档序号:7225 发布日期:2021-09-17 浏览:45次 英文

一种可编程逻辑器件在线升级方法及系统

技术领域

本发明涉及可编程逻辑器件

技术领域

,特别是涉及一种可编程逻辑器件在线升级方法及系统。

背景技术

相关技术中,在CPLD(Complex Programmable Logic Device,可编程逻辑器件)的在线升级过程中,需要占用CPU的GPIO(General-purpose input/output,通用型输入输出)管脚模拟JTAG(Joint Test Action Group,联合测试工作组)时序,以将升级文件发送给CPLD,从而实现CPLD的在线升级。

但是该在线升级方式将固定占用CPU中的4个GPIO管脚,而对于CPU的GPIO管脚往往是功能复用的,因此如果4个GPIO管脚被固定用于在线升级,将导致其他功能所能够使用的GPIO管脚资源减少,影响其他功能的正常实现。

发明内容

本发明实施例的目的在于提供一种可编程逻辑器件在线升级方法及系统,以实现在不占用CPU的GPIO资源的情况下,实现可编程逻辑器件的在线升级。

具体技术方案如下:

在本发明实施例的第一方面,提供了一种可编程逻辑器件在线升级方法,所述方法应用于第一可编程逻辑器件,所述第一可编程逻辑器件包括第一IO管脚组、第二IO管脚组、第一总线管脚组,所述第一IO管脚组与所述第一总线管脚组连接,所述第二IO管脚组与CPU的串口管脚组连接,所述方法包括:

通过所述第二IO管脚组接收所述CPU通过所述串口管脚组发送的携带有升级文件的目标串口信号;

基于预设的串口信号与总线信号之间的映射关系,确定所述目标串口信号对应的目标总线信号,所述目标总线信号携带有所述升级文件;

通过所述第一IO管脚组将所述目标总线信号发送至所述第一总线管脚组,以通过所述目标总线信号将所述升级文件写入所述第一可编程逻辑器件。

在一种可能的实施例中,所述第一IO管脚组包括第一IO管脚、第二IO管脚、第三IO管脚以及第四IO管脚,所述第一总线管脚组包括第一TCK管脚、第一TMS管脚、第一TDI管脚以及第一TDO管脚;所述第一IO管脚与所述TCK管脚连接,所述第二IO管脚与所述第一TMS管脚连接,所述第三IO管脚与所述第一TDI管脚连接,所述第四IO管脚与所述第一TDO管脚连接;

所述目标总线信号包括目标TCK子信号、目标TMS子信号以及目标TDI子信号,所述目标TDI子信号携带有所述升级文件;

所述通过所述第一IO管脚组将所述目标总线信号发送至所述第一总线管脚组,包括:

通过所述第一IO管脚向所述第一TCK管脚发送所述目标TCK子信号,并通过所述第二IO管脚向所述第一TMS管脚发送所述目标TMS子信号,并通过所述第三IO管脚向所述第一TDI管脚发送所述目标TDI子信号。

在一种可能的实施例中,所述第一IO管脚组与至少一个第二可编程逻辑器件的第二总线管脚组连接,其中,每个第二可编程逻辑器件中第二总线管脚组包括:第二TCK管脚、第二TMS管脚、第二TDI管脚以及第二TDO管脚;

所述第一IO管脚与每个第二可编程逻辑器件的第二TCK管脚连接,并且所述第二IO管脚与每个第二可编程逻辑器件的第二TMS管脚连接;

并且所述第一TDO管脚与位于首位的第二可编程逻辑器件中的第二TDI管脚连接;除位于末位的第二可编程逻辑器件外,每个第二可编程逻辑器件中的第二TDO管脚与位于该第二可编程逻辑器件后一位的第二可编程逻辑器件中的第二TDI管脚连接;位于末位的第二可编程逻辑器件中的第二TDO管脚与所述第四IO管脚连接;

所述方法还包括:

通过所述第一IO管脚向每个第二TCK管脚发送所述目标TCK子信号,并通过所述第二IO管脚向每个第二TMS管脚发送所述目标TMS子信号,并通过所述第一TDO管脚向位于首位的第二可编程逻辑器件中的第二TDI管脚发送所述目标TDI子信号;

其中,每个第二可编程逻辑器件用于通过该第二可编程逻辑器件中的第二TDO管脚向位于该第二可编程逻辑器件后一位的第二可编程逻辑的第二TDI管脚发送所述目标TDI子信号;并根据所述目标TMS子信号确定该第二可编程逻辑器件是否被所述目标TMS子信号选中,如果是,根据接收到的所述目标TCK子信号与所述目标TDI子信号进行在线升级。

在一种可能的实施例中,所述第一可编程逻辑器件与第二可编程逻辑器件之间设置有驱动器,所述驱动器用于对所述目标TCK子信号、所述目标TMS子信号以及所述目标TDI子信号中的至少一个子信号进行再驱动。

在一种可能的实施例中,所述第二IO管脚组包括第五IO管脚、第六IO管脚、第七IO管脚以及第八IO管脚;所述串口管脚组包括CLK管脚、MISO管脚、MOSI管脚以及CS管脚;所述第五IO管脚与所述CLK管脚连接,所述第六IO管脚与所述MISO管脚连接,所述第七IO管脚与所述MOSI管脚连接,所述第八IO管脚与所述CS管脚连接;

所述通过所述第二IO管脚组接收所述CPU通过所述串口管脚组发送的携带有升级文件的目标串口信号,包括:

根据所述CPU通过所述CLK管脚发送的时序信号以及通过所述CS管脚发送的控制信号,将所述CPU通过所述MOSI管脚发送的目标串口信号写入所述第一可编程逻辑器件。

在本发明实施例的第二方面,提供了一种可编程逻辑器件在线升级系统,所述系统包括:CPU、第一可编程逻辑器件;

所述CPU包括串口管脚组,所述第一可编程逻辑器件包括第一IO管脚组、第二IO管脚组、第一总线管脚组,所述第一IO管脚组与所述第一总线管脚组连接,所述第二IO管脚组与所述串口管脚组连接;

所述CPU,用于通过所述串口管脚组向所述第一可编程逻辑器件发送携带有升级文件的目标串口信号;

所述第一可编程逻辑器件,用于基于预设的串口信号与总线信号之间的映射关系,确定所述目标串口信号对应的目标总线信号,所述目标总线信号携带有所述升级文件;并通过所述第一IO管脚组将所述目标总线信号发送至所述第一总线管脚组,以通过所述目标总线信号将所述升级文件写入所述第一可编程逻辑器件。

在一种可能的实施例中,所述第一IO管脚组包括第一IO管脚、第二IO管脚、第三IO管脚以及第四IO管脚,所述第一总线管脚组包括第一TCK管脚、第一TMS管脚、第一TDI管脚以及第一TDO管脚;所述第一IO管脚与所述TCK管脚连接,所述第二IO管脚与所述第一TMS管脚连接,所述第三IO管脚与所述第一TDI管脚连接,所述第四IO管脚与所述第一TDO管脚连接;

所述目标总线信号包括目标TCK子信号、目标TMS子信号以及目标TDI子信号,所述目标TDI子信号携带有所述升级文件;

所述第一可编程逻辑器件通过所述第一IO管脚组将所述目标总线信号发送至所述第一总线管脚组,包括:

通过所述第一IO管脚向所述第一TCK管脚发送所述目标TCK子信号,并通过所述第二IO管脚向所述第一TMS管脚发送所述目标TMS子信号,并通过所述第三IO管脚向所述第一TDI管脚发送所述目标TDI子信号。

在一种可能的实施例中,所述系统还包括至少一个第二可编程逻辑器件;其中,每个第二可编程逻辑器件包括第二总线管脚组,所述第二总线管脚组包括:第二TCK管脚、第二TMS管脚、第二TDI管脚以及第二TDO管脚;

所述第一IO管脚与每个第二可编程逻辑器件的第二TCK管脚连接,并且所述第二IO管脚与每个第二可编程逻辑器件的第二TMS管脚连接;

并且所述第一TDO管脚与位于首位的第二可编程逻辑器件中的第二TDI管脚连接;除位于末位的第二可编程逻辑器件外,每个第二可编程逻辑器件中的第二TDO管脚与位于该第二可编程逻辑器件后一位的第二可编程逻辑器件中的第二TDI管脚连接;位于末位的第二可编程逻辑器件中的第二TDO管脚与所述第四IO管脚连接;

所述第一可编程逻辑器件,还用于通过所述第一IO管脚向每个第二TCK管脚发送所述目标TCK子信号,并通过所述第二IO管脚向每个第二TMS管脚发送所述目标TMS子信号,并通过所述第一TDO管脚向位于首位的第二可编程逻辑器件中的第二TDI管脚发送所述目标TDI子信号;

第二可编程逻辑器件,用于通过该第二可编程逻辑器件中的第二TDO管脚向位于该第二可编程逻辑器件后一位的第二可编程逻辑器件的第二TDI管脚发送所述目标TDI子信号;并根据所述目标TMS子信号确定该第二可编程逻辑器件是否被所述目标TMS子信号选中,如果是,根据接收到的所述目标TCK子信号与所述目标TDI子信号进行在线升级。

在一种可能的实施例中,所述系统还包括驱动器;所述驱动器与所述第一IO管脚组连接,并且与至少一个第二可编程逻辑器件的第二总线管脚组连接;

所述驱动器,用于对所述目标总线信号进行再驱动。

在一种可能的实施例中,所述第二IO管脚组包括第五IO管脚、第六IO管脚、第七IO管脚以及第八IO管脚;所述串口管脚组包括CLK管脚、MISO管脚、MOSI管脚以及CS管脚;所述第五IO管脚与所述CLK管脚连接,所述第六IO管脚与所述MISO管脚连接,所述第七IO管脚与所述MOSI管脚连接,所述第八IO管脚与所述CS管脚连接;

所述CPU,具体用于根据所述CPU通过所述CLK管脚发送的时序信号以及通过所述CS管脚发送的控制信号,将所述CPU通过所述MOSI管脚发送的目标串口信号写入所述第一可编程逻辑器件。

在一种可能的实施例中,所述系统还包括加载座,所述加载座包括第三总线管脚组,所述第三总线管脚组与所述第一总线管脚组连接;

所述加载座,用于通过所述第三总线管脚组向所述第一总线管脚组发送携带有升级文件的加载总线信号;

所述第一可编程逻辑器件,还用于根据所述加载总线信号进行升级。

在本发明实施例的第三方面,提供了一种第一可编程逻辑器件,所述第一可编程逻辑器件包括第一IO管脚组、第二IO管脚组、第一总线管脚组,、存储单元以及处理单元,所述第一IO管脚组与所述第一总线管脚组连接,所述第二IO管脚组与CPU的串口管脚组连接;

所述存储单元,用于存放逻辑程序;

所述处理单元,用于执行第一存储单元上所存放的程序时,实现上述第一方面任一所述的方法步骤。

本发明实施例有益效果:

本发明实施例提供的可编程逻辑器件在线升级方法及系统,可以由CPU通过串口管脚组接入第一CPLD,从而向第一CPLD发送携带有升级文件的目标串口信号,再由第一CPLD基于预设的串口信号与总线信号之间的映射关系,将目标串口信号转换为携带有升级文件的目标总线信号,并经由第二IO管脚组将目标总线信号发送至第一CPLD的第一总线管脚组,从而使得第一总线管脚组能够接收到携带有升级文件的目标总线信号,因此第一CPLD能够将升级文件写入第一CPLD实现在线升级。该方案中只需占用CPU中的串口管脚组,而无需占用CPU的GPIO管脚,并且由于CPLD中的IO管脚资源较为宽裕,因此即使固定占用第一IO管脚组和第二IO管脚组进行在线升级,对CPLD其他功能的实现没有影响(或影响较小)。即可以实现在不占用CPU的GPIO管脚资源的情况下实现CPLD的在线升级,从而降低在线升级对其他功能的影响。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。

图1为本发明实施例提供的可编程逻辑器件在线升级方法的一种流程示意图;

图2为本发明实施例提供的可编程逻辑器件在线升级系统的一种电路示意图;

图3为本发明实施例提供的可编程逻辑器件在线升级系统的另一种电路示意图;

图4a为本发明实施例提供的可编程逻辑器件在线升级系统的又一种电路示意图;

图4b为本发明实施例提供的可编程逻辑器件在线升级系统的又一种电路示意图;

图5为本发明实施例提供的可编程逻辑器件在线升级系统的又一种电路示意图;

图6为本发明实施例提供的可编程逻辑器件在线升级系统的又一种电路示意图;

图7为本发明实施例提供的可编程逻辑器件在线升级系统的又一种电路示意图;

图8为本发明实施例提供的可编程逻辑器件在线升级系统的又一种电路示意图;

图9为本发明实施例提供的第一可编程逻辑器件的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1所示为本发明实施例提供的可编程逻辑器件在线升级方法的一种流程示意图,该可编程逻辑器件在线升级方法方法应用于第一CPLD,第一CPLD包括第一IO管脚组、第二IO管脚组、第一总线管脚组,第一IO管脚组与第一总线管脚组连接,第二IO管脚组与CPU的串口管脚组连接,该可编程逻辑器件在线升级方法可以包括:

S101,通过第二IO管脚组接受CPU通过串口管脚组发送的携带有升级文件的目标串口信号。

S102,基于预设的串口信号与总线信号之间的映射关系,确定目标串口信号对应的目标总线信号,目标总线信号携带有升级文件。

S103,通过第一IO管脚组将目标总线信号发送至第一总线管脚组,以通过目标总线信号将升级文件写入第一可编程逻辑器件。

选用该实施例,可以由CPU通过串口管脚组接入第一CPLD,从而向第一CPLD发送携带有升级文件的目标串口信号,再由第一CPLD基于预设的串口信号与总线信号之间的映射关系,将目标串口信号转换为携带有升级文件的目标总线信号,并经由第二IO管脚组将目标总线信号发送至第一CPLD的第一总线管脚组,从而使得第一总线管脚组能够接收到携带有升级文件的目标总线信号,因此第一CPLD能够将升级文件写入第一CPLD实现在线升级。该方案中只需占用CPU中的串口管脚组,而无需占用CPU的GPIO管脚,并且由于CPLD中的IO管脚资源较为宽裕,因此即使固定占用第一IO管脚组和第二IO管脚组进行在线升级,对CPLD其他功能的实现没有影响(或影响较小)。即可以实现在不占用CPU的GPIO管脚资源的情况下实现CPLD的在线升级,从而降低在线升级对其他功能的影响。

其中,在S101中,串口管脚组可以是CPU中任意具备发送串口信号能力且能够与第一IO管脚组对接的管脚组,例如可以是MDIO(Management Data Input/Output,管理数据输入输出)管脚组、SPI(Serial Peripheral Interface,串行外设接口)管脚组等,下文中为描述方便,以串口管脚组为SPI管脚组为例进行说明,对于串口管脚组为其他管脚组的情况同理。

在S102中,可以理解的是,总线信号可以视为具有时序的高电平信号和低电平信号组合而成的,因此在一种可能的实施例中,第一CPLD可以利用特定形式的数据,如字符、数值等,记录目标串口信号,并将记录的数据映射为高电平信号和低电平信号的组合,从而得到目标串口信号对应的目标总线信号。关于第一CPLD如何记录目标串口信号,以及如何将记录的数值映射为高电平信号和低电平信号的组合将在下文中进行详细的示例说明,因此在此不再赘述。

在S103中,第一总线管脚组可以是第一CPLD中任意具备将升级文件写入第一CPLD的能力且能够与第二IO管脚组对接的管脚组,具有将升级文件写入第一CPLD的能力是指第一CPLD能够将该管脚组接收到的升级文件写入第一CPLD。例如,第一总线管脚组可以为JTAG管脚组,并且下文中为描述方便,将以第一总线管脚组为JTAG管脚组为例进行说明,对于第一总线管脚组为其他管脚组的情况同理可得,不再赘述。

为了更清楚的对本发明实施例提供的可编程逻辑器件在线升级方法进行说明,下面将结合具体的实施例,对第一CPLD如何将目标串口信号映射为目标总线信号进行示例说明,可以参见图2,图2所示为本发明实施例提供的CPLD在线升级系统的一种结构示意图,可以包括:CPU210、第一CPLD220。

其中,CPU210包括串口管脚组211。CPU210通过串口管脚组211向第一CPLD发送目标串口信号。

第一CPLD220包括第一IO管脚组221、第二IO管脚组222以及第一总线管脚组223。第一IO管脚组221包括第一IO管脚、第二IO管脚、第三IO管脚以及第四IO管脚,第一总线管脚组包括第一TCK(测试时钟输入)管脚、第一TMS(测试模式选择)管脚、第一TDI(测试数据输入)管脚以及第一TDO(测试数据输出)管脚。第一IO管脚与所述TCK管脚连接,第二IO管脚与第一TMS管脚连接,第三IO管脚与第一TDI管脚连接,第四IO管脚与第一TDO管脚连接。

在该实施例中,目标总线信号可以包括目标TCK子信号、目标TMS子信号以及目标TDI子信号。第一CPLD通过第一IO管脚组将目标总线信号发送至第一总线管脚组,可以包括:

通过第一IO管脚组向第一TCK管脚发送目标TCK子信号,并通过第二IO管脚向第一TMS管脚发送目标TMS子信号,并通过第三IO管脚向第一TDI管脚发送目标TDI子信号。

第一CPLD可以根据目标串口信号在第一CPLD的寄存器中的目标位写入数值,并根据与TCK子信号对应的目标位的值,确定目标TCK子信号,根据与TMS子信号对应的目标位的值,确定目标TMS子信号,根据与TDI子信号对应的目标位的值,确定目标TDI子信号。

其中,目标位可以是寄存器中的多个位,并且目标位可能的取值的数量应当大于目标总线信号可能的种类。示例性的,由于目标TCK子信号、目标TMS子信号以及目标TDI子信号中的任一信号为高电平信号或低电平信号,因此由目标TCK子信号、目标TMS子信号以及目标TDI子信号组成的目标总线信号理论上存在2^3=8种可能,因此目标位可能的取值应当至少有8个。假设每个目标位上的取值为0或者1,则当目标位为1个时,目标位的可能的取值0、1,即此时目标位的可能的取值的数量为2个,当目标位为2个时,目标位的可能的取值00、01、10、11,即此时目标位的可能的取值的数量为4个。可见,在该实施例中,目标位的数量应当至少有3个,并且在一些可能的实施例中,目标位的数量可以只有3个,而在另一些实施例中,目标位的数量也可以多于3个,例如可以为5个、8个、11个、16个等,本实施例对此不做任何限制。下文中为描述方便,仅以目标位为8个的情况进行说明,对于其他数量个目标位的情况同理可得,不再赘述。

每个子信号可以对应于一个或多个目标位,每个目标位最多对应于一个子信号,示例性的,在一种可能的实施例中,一共有8个目标位,分别记为目标位1-8,则可以是目标位1对应于TCK子信号,目标位2对应于TMS子信号,目标为3对应于TDI子信号,目标位4-8可以对应于其他信号也可以不对应于任何信号,例如目标位4可以对应于TDO子信号,目标位5-8为保留目标位,不对应于任何信号。

在根据与TCK子信号对应的目标位的值,确定目标TCK子信号时,可以是当与TCK子信号对应的目标位的值为1时,确定目标TCK子信号为高电平信号,当与TCK子信号对应的目标位的值为0时,确定目标TCK子信号为低电平信号。同理,可以是当与TMS子信号对应的目标位的值为1时,确定目标TMS子信号为高电平信号,当与TMS子信号对应的目标位的值为0时,确定目标TMS子信号为低电平信号。当与TDI子信号对应的目标位的值为1时,确定目标TDI子信号为高电平信号,当与TDI子信号对应的目标位的值为0时,确定目标TDI子信号为低电平信号

为了更清楚的对本发明实施例提供的可编程逻辑器件在线升级方法进行说明,下面将结合具体的实施例,对第一CPLD如何记录目标串口信号进行说明,即对CPU如何将目标串口信号写入第一CPLD进行说明。可以参见图3,图3所示为本发明实施例提供的CPLD在线升级系统的另一种结构示意图。

在该实施例中,第二IO管脚组222包括第五IO管脚、第六IO管脚、第七IO管脚以及第八IO管脚。串口管脚组包括CLK(Clock,时钟)管脚、MISO(Master In Slave Out,主机输入、从机输出)管脚、MOSI(Master Out Slave In,主机输出、从机输入)管脚以及CS(ChipSelect,片选使能)管脚。并且第五IO管脚与CLK管脚连接,第六IO管脚与MISO管脚连接,第七IO管脚与MOSI管脚连接,第八IO管脚与CS管脚连接;

在该实施例中,第一CPLD220通过第二IO管脚组222接收CPU通过串口管脚组211发送的携带有升级文件的目标串口信号,可以包括:根据CPU通过CLK管脚发送的时序信号以及通过CS管脚发送的控制信号,将CPU通过MOSI管脚发送的目标串口信号写入所述第一可编程逻辑器件。

CPU210通过MOSI管脚发送的目标串口信号可以视为一个码流,在一种可能的实施例中,每次发送码流时CPU210可以通过MOSI管脚分4次发送共计32位的码流。并且当32位的码流发送完成后,CPU210可以将CS管脚的信号置为高电平信号,并在下一次发送码流前将CS管脚的信号重新置为低电平信号。

码流中可以包括寄存器地址字段和值字段。其中,寄存器地址字段用于表示寄存器地址,值字段用于表示待写入值,其中,待写入值为CPU210执行写操作时待写入寄存器的值。当CPU210执行读操作时,由于不存在待写入寄存器的值,则值字段所表示的待写入值可以为任意值。

第一CPLD220在接收到码流后,可以解析其中的寄存器地址字段和值字段,从而得到寄存器地址字段所表示的寄存器地址以及值字段所表示的待写入值,并将待写入值写入寄存器中地址为寄存器地址的位。从而使得CPU210实现向第一CPLD220的寄存器中写入值,并使得CPU210可以通过向寄存器中写入值的方式将携带有升级文件的串口信号写入第一CPLD220中。可以理解的是,CPU210根据实际需求,除了可以在寄存器的目标位上写入目标值外,也可以在寄存器中的非目标位写入相应的值,本实施例对此不做任何限制。

并且,在一种可能的实施例中,码流中还可以包括命令字段,命令字段用于表示CPU210所需执行的操作,第一CPLD220可以通过解析命令字段确定命令字段所表示的操作,如果命令字段表示写操作,则将待写入值写入寄存器中地址为寄存器地址的位,如果命令表示读操作,则读取寄存器中地址为寄存器地址的位上的值,并将读取到的值发送至CPU210,以实现CPU210读取寄存器中的值。

为了更清楚的对码流进行说明,下面以码流的长度为32位为例进行示例性的说明,并将码流中的32位分别记为位0-31,则在一种可能的实施例中,位0-7为值字段,位8-23为寄存器地址字段,位24-31为命令字段。

则命令字段的长度为8位,可以表示为2位的16进制数,在一种可能的实施例中,当命令字段为0x55时表示读操作,当命令字段为0xaa时表示写操作,其中,0x为16进制数的前缀,即0x55表示十六进制下的55,表示为二进制数则为01010101。

寄存器地址字段的长度为16位,可以表示2^16≈32000个地址空间。值字段的长度为8位。下文为描述方便,以8位的16进制代码表示32位的码流以进行示例性说明,在一种可能的实施例中,CPU210需要读取寄存器中地址为0001的位上的值时,可以发送码流0x550001**时,其中*表示任意值,当CPU210需要将0x5a写入寄存器中地址为0001的位上时,可以发送码流0xaa00015a。

并且,在一种可能的实施例中,可以除第一CPLD以外,CPU还可以通过串口管脚组驱动其他CPLD进行在线升级,示例性的,可以如图4a所示,图4a所示为本发明实施例提供的可编程逻辑器件在线升级系统的另一种电路示意图,图中除第一CPLD220以外,还包括第二CPLD230。

虽然图4a中仅包括两个第二CPLD230,但是在其他可能的实施例中,也可以仅包括一个第二CPLD230,还可以包括3个或3个以上的第二CPLD230,本实施例对此不做任何限制。并且,对于仅包括一个第二CPLD230的情况,可以参见图4b,对于3个或3个以上的第二CPLD230的情况,CPU210、第一CPLD220以及各第二CPLD230之间的连接关系与图4a所示同理,在此不再赘述。

在该实施例中,每个第二CPLD包括第二总线管脚组,第二总线管脚组包括:第二TCK管脚、第二TMS管脚、第二TDI管脚以及第二TDO管脚。

第一IO管脚与每个第二CPLD的第二TCK管脚连接,并且第二IO管脚与每个第二CPLD的第二TMS管脚连接。并且第一TDO管脚与位于首位的第二CPLD的第二TDI管脚连接,并且除位于末位的第二CPLD外,每个第二CPLD中的第二TDO管脚与位于该第二CPLD后一位的第二CPLD中的第二TDI管脚连接;位于末位的第二CPLD中的第二TDO管脚与第四IO管脚连接。

其中,各第二CPLD230的顺位可以根据实际需求的不同进行调整,以图4a所示的CPLD在线升级系统为例,其中靠近第一CPLD220的第二CPLD230为位于首位的第二CPLD230,远离第一CPLD220的第二CPLD230为位于末位的第二CPLD230,在其他可能的实施例中,也可以远离第一CPLD220的第二CPLD230为位于首位的第二CPLD230,靠近第一CPLD220的第二CPLD230为位于末位的第二CPLD230,在这些实施中第一CPLD220与各第二CPLD230之间的连接关系将相应变化。

在图4a所示的实施例中,第一CPLD220可以通过第一IO管脚向每个第二TCK管脚发送目标TCK子信号,并通过第二IO管脚向每个第二TMS管脚发送目标TMS子信号,并通过第一TDO管脚向位于首位的第二可编程逻辑器件中的第二TDI管脚发送目标TDI子信号。

每个第二CPLD230可以通过该第二CPLD中的第二TDO管脚向位于该第二可编程逻辑器件230后一位的第二可编程逻辑230的第二TDI管脚发送目标TDI子信号,并根据目标TMS子信号确定该第二CPLD230是否被目标TMS子信号选中,如果是,根据接收到的目标TCK子信号与目标TDI子信号进行在线升级。

可以理解的是,对于每个第二CPLD230,通过第二总线管脚组接收到的信号与第一CPLD220的第一总线管脚组接收到的信号相同,均为携带有升级文件的总线信号,因此第二CPLD230可以根据第二总线管脚组接收到的信号进行在线升级。

选用该实施例,CPU可以通过一个串口管脚组驱动多个CPLD进行在线升级,第一CPLD可以通过一个第一IO管脚组驱动多个CPLD进行在线升级,因此可以进一步节省CPU以及第一CPLD的管脚资源。

可以理解的是,对于位于末位的第二CPLD230不存在后一位的第二CPLD230,因此位于末位的第二CPLD230可以通过第二TDO管脚向第一CPLD220的第四IO管脚发送目标TDI子信号,也可以不向第四IO管脚发送目标TDI子信号。

并且在一种可能的实施例中,为避免第一IO管脚同时驱动多个CPLD导致的信号质量下降,进而引起CPLD在线升级出现异常,可以如图5所示,在第一CPLD220与第二CPLD230之间设置驱动器240,驱动器240可以用于对目标TCK子信号、目标TMS子信号以及目标TDI子信号中的至少一个子信号进行再驱动,从而提高子信号质量,以避免因子信号质量下降引起的CPLD在线升级异常。

参见图6,图6所示为本发明实施例提供的可编程逻辑器件在线升级系统的一种结构示意图,可以包括:

CPU210、第一CPLD220;

所述CPU210包括串口管脚组211,所述第一CPLD220包括第一IO管脚组221、第二IO管脚组222、第一总线管脚组223,所述第一IO管脚组221与所述第一总线管脚组223连接,所述第二IO管脚组222与所述串口管脚组211连接;

所述CPU210,用于通过所述串口管脚组211向所述第一CPLD220发送携带有升级文件的目标串口信号;

所述第一CPLD220,用于基于预设的串口信号与总线信号之间的映射关系,确定所述目标串口信号对应的目标总线信号,所述目标总线信号携带有所述升级文件;并通过所述第一IO管脚组221将所述目标总线信号发送至所述第一总线管脚组223,以通过所述目标总线信号将所述升级文件写入所述第一可编程逻辑器件220。

在一种可能的实施例中,所述第一IO管脚组221包括第一IO管脚、第二IO管脚、第三IO管脚以及第四IO管脚,所述第一总线管脚组223包括第一TCK管脚、第一TMS管脚、第一TDI管脚以及第一TDO管脚;所述第一IO管脚与所述TCK管脚连接,所述第二IO管脚与所述第一TMS管脚连接,所述第三IO管脚与所述第一TDI管脚连接,所述第四IO管脚与所述第一TDO管脚连接;

所述目标总线信号包括目标TCK子信号、目标TMS子信号以及目标TDI子信号,所述目标TDI子信号携带有所述升级文件;

所述第一CPLD通过所述第一IO管脚221组将所述目标总线信号发送至所述第一总线管脚组223,包括:

通过所述第一IO管脚向所述第一TCK管脚发送所述目标TCK子信号,并通过所述第二IO管脚向所述第一TMS管脚发送所述目标TMS子信号,并通过所述第三IO管脚向所述第一TDI管脚发送所述目标TDI子信号。

在一种可能的实施例中,所述系统还包括至少一个第二CPLD230;其中,每个第二CPLD230包括第二总线管脚组231,所述第二总线管脚组231包括:第二TCK管脚、第二TMS管脚、第二TDI管脚以及第二TDO管脚;

所述第一IO管脚与每个第二CPLD230的第二TCK管脚连接,并且所述第二IO管脚与每个第二CPLD230的第二TMS管脚连接;

并且所述第一TDO管脚与位于首位的第二CPLD中的第二TDI管脚连接;除位于末位的第二可编程逻辑器件外,每个第二CPLD中的第二TDO管脚与位于该第二CPLD后一位的第二CPLD中的第二TDI管脚连接;位于末位的第二CPLD中的第二TDO管脚与所述第四IO管脚连接;

所述第一CPLD220,还用于通过所述第一IO管脚向每个第二TCK管脚发送所述目标TCK子信号,并通过所述第二IO管脚向每个第二TMS管脚发送所述目标TMS子信号,并通过所述第一TDO管脚向位于首位的第二CPLD中的第二TDI管脚发送所述目标TDI子信号;

第二CPLD230,用于通过该第二CPLD230中的第二TDO管脚向位于该第二CPLD后一位的第二CPLD230的第二TDI管脚发送所述目标TDI子信号;并根据所述目标TMS子信号确定该第二CPLD230是否被所述目标TMS子信号选中,如果是,根据接收到的所述目标TCK子信号与所述目标TDI子信号进行在线升级。

在一种可能的实施例中,,所述系统还包括驱动器240;所述驱动器240与所述第一IO管脚组221连接,并且与至少一个第二CPLD230的第二总线管脚组231连接;

所述驱动器240,用于对所述目标总线信号进行再驱动。

在一种可能的实施例中,所述第二IO管脚组包括第五IO管脚、第六IO管脚、第七IO管脚以及第八IO管脚;所述串口管脚组211包括CLK管脚、MISO管脚、MOSI管脚以及CS管脚;所述第五IO管脚与所述CLK管脚连接,所述第六IO管脚与所述MISO管脚连接,所述第七IO管脚与所述MOSI管脚连接,所述第八IO管脚与所述CS管脚连接;

所述CPU210,具体用于根据所述CPU通过所述CLK管脚发送的时序信号以及通过所述CS管脚发送的控制信号,将所述CPU210通过所述MOSI管脚发送的目标串口信号写入所述第一CPLD220。

在一种可能的实施例中,所述系统还可以包括加载座250,所述加载座250包括第三总线管脚组251,所述第三总线管脚组251与所述第一总线管脚组223连接;

所述加载座250,用于通过所述第三总线管脚组251向所述第一总线管脚组223发送携带有升级文件的加载总线信号;

所述第一CPLD220,还用于根据所述加载总线信号进行升级。

示例性的,可以如图7所示,加载座250中的第三总线管脚组251可以包括第三TDI管脚、第三TDO管脚、第三TMS管脚以及第三TCK管脚,并且第三TDI管脚与第一TDO管脚连接,第三TDO管脚与第一TDI管脚连接,第三TMS管脚与第一TMS管脚连接,第三TCK管脚与第一TCK管脚连接。

加载总线信号中可以包括加载TMS子信号、加载TCK子信号、加载TDI子信号,其中加载TDI子信号中携带有升级文件。加载座250可以根据通过第三CLK管脚发送的加载CLK子信号以及通过第三TMS管脚发送的加载TMS子信号,将通过第三TDI管脚发送的加载TDI信号所携带的升级文件写入第一CPLD220中,以控制第一CPLD220的升级。

选用该实施例,使得CPLD除了可以在CPU的驱动下进行在线升级,也可以在加载器的驱动下进行升级,提高了适用性。

并且,在多个CPLD以及存在驱动器的场景下,CPLD在线升级系统中也可以包括加载器,示例性的,可以参见图8,关于图8中的CPU210、第一CPLD220、第二CPLD230、驱动器240以及加载器250可以参见前述相关说明,在此不再赘述。

本发明实施例还提供了一种第一CPLD,第一CPLD可以如图9所示,包括第一IO管脚组、第二IO管脚组、第一总线管脚组,、存储单元以及处理单元,所述第一IO管脚组与所述第一总线管脚组连接,所述第二IO管脚组与CPU的串口管脚组连接;

所述存储单元901,用于存放逻辑程序;

所述处理单元902,用于执行第一存储单元上所存放的程序时,执行以下步骤:

通过所述第二IO管脚组接收所述CPU通过所述串口管脚组发送的携带有升级文件的目标串口信号;

基于预设的串口信号与总线信号之间的映射关系,确定所述目标串口信号对应的目标总线信号,所述目标总线信号携带有所述升级文件;

通过所述第一IO管脚组将所述目标总线信号发送至所述第一总线管脚组,以通过所述目标总线信号将所述升级文件写入所述第一可编程逻辑器件。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

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

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统、第一CPLD实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:一种微服务管理方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!