可编程输入/输出端口
具体实施方式
现在将公开下面请求保护的主题的示例。为了清楚起见,本说明书中并未描述实际实施方式的所有特征。应当理解的是,在任何这种实际实施方式的开发中,可以做出许多特定于实施方式的决策,以实现开发人员的特定目标,例如遵从与系统相关和与业务相关的约束,这将因不同的实施方式而不同。此外,应当理解的是,即使这种开发工作是复杂且耗时的,对于受益于本公开的本领域普通技术人员来说也是常规任务。
很多计算系统包括使用不同的相应通信协议与不同类型的终端设备进行通信的主机设备。如本文所使用的,术语“主机设备”指代但不限于包括处理单元的计算设备。主机设备的示例可以是中央处理单元、服务器、刀片服务器或包括控制器、处理资源等的任何其他设备或装备。术语“终端设备”指代但不限于适于与包括处理单元的主机设备通信的任何设备。终端设备的示例包括但不限于存储器模块、硬盘驱动器或固态驱动器、网络连接设备(例如,WiFi或以太网卡)、图形处理器、其他计算设备等。
在很多计算系统中,主机设备由印刷电路板支撑。终端设备经由印刷电路板上的迹线连接到主机设备。由于迹线固定在印刷电路板上,所以这种连接在灵活性方面受到限制。
在某些情况下,主机设备和终端设备使用电缆连接,以允许高速数据通信。电缆将与主机设备相关联的输入/输出(I/O)端口连接到不同的终端设备。如本文所使用的,术语“输入/输出(I/O)端口”指代包括电缆的一个端部插入其中的端子的插座。I/O端口又经由适当的连接(例如,电触点或总线)连接到主机设备。电缆包括在一个端部处的用于将电缆连接到I/O端口的I/O端口连接器,以及在另一端部处的用于将电缆连接到终端设备接口的终端设备接口连接器。如本文所使用的,术语“终端设备接口”指代电缆插入其中的硬件,例如,I/O槽、背板或I/O端口连接器。终端设备接口又经由任何适当的连接(例如,电触点或总线)连接到终端设备。
很多计算系统使用不同的I/O端口,这些I/O端口分别专用于与不同类型的终端设备相关联的不同的终端设备接口,以允许主机设备与不同类型的终端设备通信。计算系统在不同的I/O端口之间切换,以允许主机设备与不同类型的终端设备通信。使用专用的I/O端口和交换机在不同的I/O端口之间切换需要主板上的空间,并增加了计算系统的成本。
为了减轻这些问题中的至少一些问题,根据本文公开的一个或多个示例,允许主机设备使用单个可编程I/O端口和与不同协议相关联的不同类型的终端设备进行通信。基于连接到主机设备的终端设备的类型,引导I/O端口呈现对应于与终端设备相关联的协议的信号。不是在I/O端口之间切换,而是适当地对I/O端口进行编程以允许主机设备使用与终端设备相关联的协议与终端设备通信。
根据一些示例,提供了一种用于管理主机设备和终端设备之间的通信的系统。该系统包括与主机设备相关联的可编程输入/输出(I/O)端口。主机设备可通过电缆和可编程I/O端口连接到多个不同类型的终端设备。多个不同类型的终端设备分别与不同类型的协议相关联。该系统还包括端口管理器,该端口管理器检测来自与终端设备相关联的终端设备接口的信号并基于检测到的信号确定终端设备的类型。端口管理器还引导可编程I/O端口呈现对应于与所确定的终端设备的类型相关联的协议的信号,以允许主机设备与终端设备通信。
根据其他示例,提供了一种用于管理主机设备和终端设备之间的通信的方法。主机设备可通过电缆和可编程I/O端口连接到多个不同类型的终端设备。多个不同类型的终端设备分别与不同类型的协议相关联。从与终端设备相关联的终端设备接口检测信号。基于检测到的信号确定终端设备的类型。引导可编程I/O端口呈现对应于与所确定的终端设备的类型相关联的协议的信号,以允许主机设备与终端设备通信。
根据其他示例,一种非暂态计算机可读存储介质包括存储于其上的计算机可执行指令,该计算机可执行指令在由处理器执行时使得处理器管理主机设备和终端设备之间的通信。主机设备可通过电缆和可编程I/O端口连接到多个不同类型的终端设备。多个不同类型的终端设备分别与不同类型的协议相关联。指令在被执行时使得处理器检测来自与终端设备相关联的终端设备接口的信号。指令还使得处理器基于检测到的信号确定终端设备的类型,并引导可编程I/O端口呈现对应于与所确定的终端设备的类型相关联的协议的信号,以允许主机设备与终端设备通信。
图1是根据一个或多个示例的包括主机设备和终端设备的装配的透视图。在图1所示的示例中,装配100包括由主板的被称为“计算印刷电路板(PCB)”的计算部分105支撑的一个或多个主机设备110。该装配还包括与主机设备110相关联的一个或多个可编程I/O端口120。
装配100还包括由主板支撑的多种不同类型的终端设备接口130、140和150。终端设备接口分别与可由主板支撑或连接到主板的多个不同类型的终端设备135、145和155相关联。在图1所示的示例中,终端设备接口130是与终端设备135(例如,图形处理器)相关联的外围组件互连(PCIe)槽。终端设备接口140是与终端设备145(例如,以太网或Wifi卡)相关联的开放计算项目(OCP)网络接口卡(NIC)槽。终端设备接口150是与可以包括存储设备的终端设备155相关联的高速非易失性存储器背板(NVME-BP)。应当理解的是,可以有其他类型的终端设备接口以连接到其他类型的终端设备。
主机设备110可分别经由电缆(未示出)、可编程I/O端口120和终端设备接口130、140和150连接到多个不同类型的终端设备135、145、155。下面参考参考图2-图6C进一步详细描述。
装配100还包括主板的被称为“管理PCB”的系统管理部分115。系统管理部分115可以支撑管理设备,例如,用于管理主机设备110和终端设备135、145和155之间的通信的可编程逻辑设备和端口管理器(未示出)。下面参考图3-图6C进一步详细描述可编程逻辑设备和端口管理器。
现在参考图2(继续参考图1)的将可编程I/O端口120连接到终端设备接口的电缆的细节,图2是将可编程I/O端口(例如,图1所示的可编程I/O端口120)连接到终端设备接口(例如,图1所示的终端设备接口130、140和150)的电缆的引脚分配200。可编程I/O端口120中的每个可编程I/O端口包括用于接收将可编程I/O端口120连接到终端设备接口的电缆的插座。根据一个示例,可编程I/O端口120包括可编程端子(也称为“引脚”)。就端子可以基于来自可编程逻辑设备的指令呈现不同的信号而言,端子是“可编程的”,如下面进一步详细描述的。图2所示的引脚分配200是可以由可编程I/O端口的端子呈现给电缆(未示出)的端部上的I/O端口连接器的信号的示例,如参考图3-图6C更详细地描述的。
在图2中,列202指示呈现信号的可编程I/O端口120上的端子,列205和列210指示端子的接触顺序(指示端子与电缆的端部处的I/O端口连接器接触的顺序),列215指示由可编程I/O端口120呈现给电缆的端部处的I/O端口连接器的B侧的信号,并且列220指示由可编程I/O端口120呈现给电缆的端部处的I/O端口连接器的A侧的信号。
在图2所示的示例中,引脚分配200用于小尺寸(Small Form Factor,SFF)电缆,例如具有要呈现给PCIe x 16槽的信号的标准SFF-TA-1002 3C电缆。应该理解的是,提供此引脚分配是为了说明目的,并且可使用用于其他类型的电缆的其他引脚分配。
根据一些示例,由可编程I/O端口根据该引脚分配呈现的信号可以被视为默认信号,如果未检测到来自PCIe槽以外的终端设备接口的信号,则呈现该默认信号。然而,在从PCIe槽以外的另一类型的终端设备接口检测到信号的情况下,可以对可编程I/O端口(例如,图1所示的可编程I/O端口120)的端子进行编程,以呈现对应于和与检测到的信号相关联的终端设备相关联的协议的信号。这可以参考下面描述的图3-图5来理解。
图3概念性地示出了根据一个或多个示例的用于管理主机设备和终端设备之间经由PCIe槽的通信的系统300。系统300包括可编程I/O端口305。
参考图3,可编程I/O端口305与诸如图1所示的主机设备110的主机设备(未示出)相关联。系统300包括与诸如图1所示的终端设备135的终端设备(也未示出)相关联的终端设备接口320。系统300还包括用于连接终端设备接口320和可编程I/O端口305的电缆330。电缆330包括在一个端部处的用于连接到可编程I/O端口305的I/O端口连接器310,以及在另一端部处的用于连接到终端设备接口320的终端设备接口连接器325。
系统300还包括用于经由内部集成电路(I2C或I2C电缆)检测来自终端设备接口320的信号的端口管理器340。端口管理器340可以基于检测到的信号确定终端设备的类型。
在一些示例中,端口管理器340可以具有存储于存储器中的主板规范数据,该主板规范数据指定在主板上安装什么类型的终端设备接口以及这些终端设备接口的安装位置。当从终端设备接口检测到信号时,端口管理器340使用所存储的规范数据来确定所连接的终端设备的类型。例如,当从PCIe槽检测到信号时,端口管理器340基于规范数据确定检测到的信号来自PCIe槽并且终端设备的类型是PCIe设备。端口管理器340引导可编程I/O端口305呈现对应于与所确定的终端设备的类型相关联的协议的信号,以允许主机设备经由电缆330和终端设备接口320与终端设备通信。
可编程I/O端口305包括用于经由I/O端口连接器310向电缆330呈现信号的可编程端子。可编程端子由包括在系统300中的可编程逻辑设备350编程。端口管理器340用于指示可编程逻辑设备350对可编程I/O端口305的可编程端子进行编程,以将对应于与所确定的终端设备的类型相关联的协议的信号呈现给I/O端口连接器310。
根据一个或多个示例,端口管理器340通过提供对应于可编程逻辑设备350中的选择语句的指令来指示可编程逻辑设备350对可编程I/O端口305的可编程端子(未另外示出)进行编程。选择语句可以定义可编程逻辑设备350如何对可编程I/O端口305进行编程。例如,如果端口管理器340提供指令“00”,则可编程逻辑设备350对可编程I/O端口305的可编程端子进行编程以呈现第一组信号。另一方面,如果端口管理器340提供指令“01”,则可编程逻辑设备350对可编程I/O端口305的可编程端子进行编程以呈现不同的一组信号。可编程逻辑设备350通过使可编程I/O端口的可编程端子输出对应于与所确定的终端设备的类型相关联的协议的信号来对端子进行“编程”。
在图3所示的示例系统300中,终端设备接口320是PCIe槽,并且终端设备接口连接器325是PCIe I/O连接器。出于说明的目的,端口管理器340被示出为指示可编程逻辑设备350将信号“PRSNT2#”、“CLKREQ”和“PWR_BRAKE#”发送到可编程I/O端口305,以对可编程I/O端口305进行编程来呈现这些信号。假定PCIe槽是“默认”终端设备接口(针对其已经对I/O端口进行编程以经由电缆330呈现信号),端口管理器340可以不指示可编程逻辑设备350对可编程I/O端口进行编程以呈现信号。也就是说,对于PCIe槽的默认情况,可编程I/O端口305将分别在端子54的A侧、端子2的B侧和端子的A侧上呈现信号“PRSNT2#”、“CLKREQ”和“PWR_BRAKE#”,而无需由可编程逻辑设备350进行编程。
在图3所示的示例系统300中,电缆330是16路(x16)电缆。然而,应当理解的是,可以代替地使用双8路(x 8)电缆。
图4A概念性地示出了根据一个或多个示例的用于管理主机设备和终端设备之间经由OCP NIC槽的通信的系统400A。系统400A包括可编程I/O端口405。可编程I/O端口405与诸如图1所示的主机设备110的主机设备(未示出)相关联。系统400A包括与诸如图1所示的终端设备145的终端设备(也未示出)相关联的终端设备接口420。系统400还包括用于连接终端设备接口420和可编程I/O端口405的电缆430。电缆430包括在一个端部处的用于连接到可编程I/O端口405的I/O端口连接器410,以及在另一端部处的用于连接到终端设备接口420的终端设备接口连接器425。
系统400A还包括经由I2C电缆连接到终端设备接口420的端口管理器440。端口管理器440用于检测来自终端设备接口420的信号,并基于检测到的信号确定终端设备的类型。端口管理器440引导可编程I/O端口405呈现对应于与所确定的终端设备的类型相关联的协议的信号,以允许主机设备经由电缆430和终端设备接口420与终端设备通信。
可编程I/O端口405包括可编程端子(未另外示出),以经由I/O端口连接器410向电缆430呈现信号。可编程端子由包括在系统400A中的可编程逻辑设备450编程。端口管理器440用于指示可编程逻辑设备450对可编程I/O端口405的可编程端子进行编程,以向I/O端口连接器410呈现对应于与所确定的终端设备的类型相关联的协议的信号。
在图4A所示的示例系统400A中,终端设备接口420是OCP槽,并且终端设备接口连接器425是OCP I/O连接器。由于这不是默认情况,所以端口管理器440指示可编程逻辑设备450将信号“PAL_OCP_CBL_DETO”、“EN_CLK_100M_OCP_NIC_EN_N”和“PAL_OCP_CBL_DET1”发送到可编程I/O端口405,以对可编程I/O端口405进行编程来呈现这些信号。因此,可编程I/O端口405分别在端子54的A侧、端子2的B侧和端子3的A侧上呈现信号“PAL_OCP_CBL_DETO”、“EN_CLK_100M_OCP_NIC_EN_N”和“PAL_OCP_CBL_DET1”。
在图4A所示的示例系统400A中,终端设备接口420是经由16路(x16)电缆430连接到可编程I/O端口405的双OCP槽。在图4B所示的另一系统400B中,相应的终端设备接口420A和420B是经由相应的8路(x8)电缆430A和430B连接到可编程I/O端口405的OCP槽。为了确定使用x16电缆连接还是x 8电缆连接,可以执行电缆回环检测。也就是说,可以将信号“PAL_OCP_CBL_DET”从可编程I/O端口405发送到图4A所示的终端设备接口420。如果可编程I/O端口405根据电缆回环检测到“PAL_OCP_CBL_DETO”和“PAL_OCP_CBL_DET1”二者,则与可编程I/O端口405相关联的主机设备可以确定使用图4A中的系统400A。如果可编程I/O端口405检测到信号“PAL_OCP_CB:_DETO”但没有检测到信号“PAL_OCP_CBL_DET1”,则与可编程I/O端口相关联的主机设备可以确定使用图4B中的系统。
图4B所示的系统400B包括与诸如图1所示的主机设备110的主机设备(未示出)相关联的双可编程I/O端口405A和405B。系统400B还包括与诸如图1所示的终端设备145的终端设备(也未示出)相关联的相应的终端设备接口420A和420B。系统400B还包括用于将终端设备接口420A和420B连接到可编程I/O端口405A和405B的相应的电缆430A和430B。电缆430A和430B包括在一个端部处的用于连接到可编程I/O端口405A和405B的相应的I/O端口连接器410A和410B,以及在另一端部处的用于连接到终端设备接口420A和420B的相应的终端设备接口连接器425A和425B。
与图4A所示的系统400A一样,系统400B还包括通过I2C电缆连接到终端设备接口的端口管理器440。端口管理器440检测来自终端设备接口420A和420B的信号,并基于检测到的信号确定终端设备的类型。端口管理器440用于引导可编程I/O端口405A和405B呈现对应于与所确定的终端设备的类型相关联的协议的信号,以允许主机设备经由电缆430A和终端设备接口420A和420B与终端设备通信。
可编程I/O端口405A和405B包括可编程端子,以经由相应的I/O端口连接器410A和410B向相应的电缆430A和430B呈现信号。可编程端子由包括在系统400B中的可编程逻辑设备450编程。端口管理器440用于指示可编程逻辑设备450对可编程I/O端口405A和405B的可编程端子进行编程,以向相应的I/O端口连接器410A和410B呈现对应于与所确定的终端设备的类型相关联的协议的信号,终端设备接口420A和420B与该终端设备相关联。
在图4B所示的示例系统400B中,终端设备接口420A和420B是OCP槽,并且终端设备接口连接器425A和425B是OCP I/O连接器。由于这不是默认情况,所以端口管理器440指示可编程逻辑设备450向可编程I/O端口405A和405B发送信号“PAL_OCP_CBL_DETO”和“EN_CLK_100M_OCP_NIC_EN_N”,以对可编程I/O端口405A和405B进行编程来呈现这些信号。因此,可编程I/O端口405A和405B分别在端子54的A侧和端子2的B侧上呈现信号“PAL_OCP_CBL_DETO”和“EN_CLK_100M_OCP_NIC_EN_N”。
图5概念性地示出了根据一个或多个示例的用于管理主机设备(未示出)和终端设备(也未示出)之间经由NVMe BP的通信的系统500。图5所示的系统500包括与诸如图1所示的主机设备110的主机设备相关联的可编程I/O端口505。系统500还包括相应的终端设备接口520A和520B,终端设备接口520A和520B中的两者与诸如图1所示的终端设备155的终端设备相关联。系统500还包括用于将终端设备接口520A和520B连接到可编程I/O端口505的相应电缆530A和530B。电缆530A和530B在一个端部处连接到I/O端口连接器510从而连接到可编程I/O端口505。电缆530A和530B包括在另一端部处的用于连接到终端设备接口520A和520B的相应的终端设备接口连接器525A和525B。在图5所示的示例系统中,电缆530A和530B可以是x 8电缆。
系统500还包括经由I2C电缆连接到终端设备接口520A和520B的端口管理器540。端口管理器540用于检测来自终端设备接口520A和520B的信号,并基于检测到的信号确定终端设备的类型。基于所确定的终端设备的类型,端口管理器540用于引导可编程I/O端口505呈现对应于与所确定的终端设备的类型相关联的协议的信号,以允许主机设备经由电缆530A和530B以及终端设备接口520A和520B与终端设备通信。
可编程I/O端口505包括可编程端子,以经由I/O端口连接器510向相应的电缆530A和530B呈现信号。可编程端子由包括在系统500中的可编程逻辑设备550编程。端口管理器540用于指示可编程逻辑设备550对可编程I/O端口505的可编程端子进行编程,以向I/O端口连接器510呈现对应于与所确定的终端设备的类型相关联的协议的信号,终端设备接口520A和520B与该终端设备相关联。
在图5所示的示例系统500中,终端设备接口520A和520B是NVME背板,并且终端设备接口连接器525A和525B是NVME连接器。由于这不是默认情况,所以端口管理器540指示可编程逻辑设备550向可编程I/O端口505发送信号“CBL_DET_SENSE/SS_CLK”、“SS_DATA_OUT”、“CBL_DET_PULSE/SS_DATA_IN”和“SS_LD”,以对可编程I/O端口505进行编程来呈现这些信号。因此,可编程的I/O端口505分别在端子3的A侧、端子2的A侧、端子54的A侧和端子55的A侧上呈现信号“CBL_DET_SENSE/SS_CLK”、“SS_DATA_OUT”、“CBL_DET_PULSE/SS_DATA_IN”和“SS_LD”。
图6A-6C概念性地示出了根据一个或多个示例的用于管理主机设备和一个或多个相应的终端设备之间经由充当处理器间链路的一条或多条电缆的通信的系统。
首先参考图6A,系统600A包括与主机设备(例如,中央处理单元(CPU)605A)相关联的可编程I/O端口615A。系统600A还包括终端设备接口,在本例中,该终端设备接口是另一个可编程I/O端口615B。终端设备接口与终端设备(例如,CPU 605B)相关联。系统600A还包括用于将终端设备接口(例如,可编程I/O端口615B)连接到可编程I/O端口615A的电缆630。电缆630在一个端部处经由I/O端口连接器610A连接到可编程I/O端口615A。电缆630在另一端部处经由另一I/O端口连接器610B连接到终端设备接口(例如,可编程I/O端口615B)。
系统600A还包括通过I2C电缆连接到可编程I/O端口615B和可编程I/O端口615A的端口管理器650。与分别在图3、图4A-图4B和图5中示出的上述端口管理器340、440和540类似并且如上所述,端口管理器650确定终端设备的类型。即,端口管理器650例如通过检测来自终端设备接口(在该示例中,该终端设备接口是可编程I/O端口615B)的信号检测出终端设备是CPU 605B。
基于确定终端设备是CPU 605B,端口管理器650引导可编程I/O端口615A呈现对应于CPU本地协议的信号。可编程I/O端口615A可以使用一些终端(未另外示出)来呈现CPU本地协议中的信号。在这些端子上呈现的信号对于与任何类型的相应终端设备进行通信将是相同的。不使用那些用于向其他类型的终端设备呈现信号的端子,可以取决于终端设备的类型对这些端子进行编程。因此,在本示例中,不存在可编程逻辑控制设备对可编程I/O端口615A的端子的编程。
在图6A所示的示例系统600A中,主机设备和终端设备(例如,CPU 605A和605B)、可编程I/O端口615A和终端设备接口(例如,可编程I/O端口615B)被支撑在同一印刷电路板620上。根据图6B所示的另一示例系统600B,主机设备(例如,CPU 605A)和可编程I/O端口615A由一个印刷电路板620A支撑。终端设备(例如,CPU 605B)和终端设备接口(例如,可编程I/O端口615B)由另一印刷电路板620B支撑。
参考图6B,系统600B还包括用于将终端设备接口(例如,可编程I/O端口615B)连接到可编程I/O端口615A的电缆630。电缆630在一个端部处经由I/O端口连接器610A连接到可编程I/O端口615A。电缆630在另一端部处经由另一I/O端口连接器610B连接到终端设备接口(例如,可编程I/O端口615B)。
系统600B还包括通过I2C电缆连接到可编程I/O端口615B和可编程I/O端口615A的端口管理器650。端口管理器650用于例如通过检测来自可编程I/O端口615B的信号检测出终端设备是CPU 605B。基于确定终端设备是CPU,端口管理器650引导可编程I/O端口615A呈现对应于CPU本地协议的信号。如上文参考图6A所描述的示例中,在本示例中不存在可编程逻辑控制设备对可编程I/O端口615A的端子的编程。
图6C示出了与系统600A和600B类似的系统600C。如图6C所示,系统600C包括与主机设备(例如,CPU 605A)相关联的可编程I/O端口615A。系统600C还包括相应的终端设备接口(在本示例中为可编程I/O端口615B、615C和615D)。终端设备接口(例如,可编程I/O端口615B、615C和615D)分别与相应的终端设备(例如,CPU 605B、605C和605D)相关联。
在示例系统600C中,主机设备和一个相应的终端设备(例如,CPU 605A和605B)、可编程I/O端口615A以及一个相应的终端设备接口(例如,可编程I/O端口615B)被支撑在同一印刷电路板620A上。其他相应的终端设备(例如,CPU 605C和605D)以及其它相应的终端设备接口(例如,可编程I/O端口615C和615D)被支撑在另一印刷电路板620B上。
系统600C还包括用于将终端设备接口(例如,可编程I/O端口615B)连接到可编程I/O端口615A的电缆630A。电缆630在一个端部处经由I/O端口连接器610A连接到可编程I/O端口615A。电缆630A在另一端部处经由另一I/O端口连接器610B连接到终端设备接口(例如,可编程I/O端口615B)。
系统600C还包括用于连接终端设备接口(例如,可编程I/O端口615C和615D)的另一电缆630B。电缆630B在一个端部处经由I/O端口连接器610C连接到终端设备接口(例如,可编程I/O端口615C)。电缆630B在另一端部处经由另一I/O端口连接器610D连接到终端设备接口(例如,可编程I/O端口615D)。如图6C所示,电缆630A和630B也相互连接以提供主机设备(例如,CPU 605A)和终端设备(例如,CPU 605B、605C和605D)之间经由可编程I/O端口615A的通信。
系统600C还包括通过I2C电缆连接到终端设备接口(例如,可编程I/O端口615B、615C和615D)以及可编程I/O端口615A的端口管理器650。端口管理器650用于检测来自终端设备接口(例如,可编程I/O端口615B、615C和615D)的信号,并确定终端设备是CPU 605B、605C和605D。基于确定终端设备是CPU,端口管理器650引导可编程I/O端口615A呈现对应于CPU本地协议的信号。如上文参考图6A和图6B所描述的示例中,在本示例中,不存在可编程逻辑控制设备对可编程I/O端口615A的端子的编程。
图7是描述根据本公开的一个或多个示例的用于管理主机设备之间的通信的方法700的流程图。方法700可以由例如图3、图4A、图4B、图5、和图6A-图6C所示的端口管理器340、440、540和650执行。
方法700包括在710处检测来自与终端设备相关联的终端设备接口的信号。终端设备经由电缆和与主机设备相关联的可编程I/O连接到主机设备。主机设备可连接到多个不同类型的终端设备,并且多个不同类型的终端设备分别与不同类型的协议相关联。
基于检测到的信号,在720处确定终端设备的类型。在730处,基于所确定的终端设备的类型,引导可编程I/O端口呈现对应于与终端设备相关联的协议的信号。这可以包括指示可编程逻辑设备对可编程I/O端口进行编程以呈现信号。
图8是根据说明性示例的利用其可以实现分别在图3、图4A-图4B、图5和图6A-6C中示出的端口管理器340、440、540和650的计算设备800的框图。
参考图8,计算设备800包括处理器810,处理器810经由地址/数据总线825通信地耦合到输入/输出(I/O)接口820。处理器810经由I/O接口820接收输入并传输输出。处理器810可以是任何商业上可获得或定制的微处理器或微控制器。处理器810可以是例如,控制器、微处理器、数字信号处理器、图形处理器或者甚至是处理器芯片组。此列表既不是排他性的也不是穷尽性的。I/O接口820可以包括任何适当的连接接口,例如I2C电缆接口。
处理器810经由例如地址/数据总线815与存储器830通信。存储器830表示包含用于实现计算设备800的功能的软件和数据的存储器设备。存储器830可以包括但不限于非暂态计算机可读存储介质835,例如实现为固件的电可擦除可编程只读存储器(EEPROM)。也可以使用其他可替代品。存储器可以是易失性或非易失性、随机存取或只读或者甚至是高速缓存。如图8所示,存储器830可以包括在计算设备800中使用的多个类别的软件和数据(包括计算机可执行指令840)。
计算机可执行指令840可以被存储在存储器830中,并且可以由处理器810执行。计算机可执行指令840包括实现计算设备800的各种特征的各种程序。例如,计算机可执行指令840可以包括用于实现端口管理器的功能的指令(包括检测来自与经由电缆和与主机设备相关联的可编程I/O端口连接到主机设备的终端设备相关联的终端设备接口的信号、基于检测到的信号确定终端设备的类型、基于所确定的终端设备的类型,引导可编程I/O端口呈现对应于与所确定的终端设备的类型相关联的协议的信号,以允许主机设备与终端设备通信等)。
存储器830还可以存储由指令840使用的静态和动态数据。另外,其他软件程序可以驻留在存储器830中。可以存储在存储器中的数据可以包括,例如,用于基于从终端设备接口检测到的信号确定连接的终端设备是什么类型的主板规范、针对不同类型的设备发送到可编程逻辑设备的指令等。
应该理解的是,图8和以上描述旨在提供对可以实现本公开的一些示例的各个方面的适当环境的简要的一般性描述。虽然描述包括存储在固件中的可执行指令的一般上下文,但是除了处理器可执行指令之外或者代替处理器可执行指令,本公开还可以与其他程序模块组合实现和/或作为硬件和软件的组合来实现。
为了解释的目的,前面的描述使用了特定的术语来提供对本公开的透彻理解。然而,对于本领域技术人员将显而易见的是,为了实践本文所描述的系统和方法,并不需要特定的细节。为了说明和描述的目的,给出了特定示例的上述描述。它们并不旨在穷尽本公开或将本公开限制为所描述的精确形式。鉴于上述教导,许多修改和变型是可能的。示出和描述示例是为了最好地解释本公开的原理和实际应用,从而使本领域的其他技术人员能够最好地利用本公开和具有各种修改的各种示例,以适合预期的特定用途。本公开的范围旨在由以下权利要求及其等同物限定。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种安全操作设备