具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下通过具体实施例并参见附图,对本申请进行详细说明。
本申请提出一种可编程逻辑器件PLD,包括:SMI接口寄存器、以及与其相连的SMI接口收发器和译码器;其中,所述SMI接口寄存器与处理器CPU通过总线相连;所述SMI接口收发器的SMI接口通过译码器扩展出与被管理的从SMI接口器件数量相同的主SMI接口;每个主SMI接口使用PLD的2个通用I/O管脚,扩展出的每个主SMI接口与一个从SMI接口器件相连;不同电平应用的主SMI接口位于PLD的输入输出端口I/O组不同的逻辑区域BANK中,每个BANK的I/O管脚设置成与该BANK内主SMI接口的电平相同的电平模式;
所述SMI接口寄存器在CPU读取SMI接口寄存器的状态后启动一次SMI接口操作(读SMI接口操作或写SMI接口操作)时,存储CPU写入的操作信息;所述译码器根据所述操作信息中的SMI接口地址信息选定待访问的从SMI接口;
当CPU在SMI接口寄存器中写入操作执行指令的操作信息时,所述SMI接口收发器根据SMI接口寄存器中的操作信息对所述选定的从SMI接口执行对应的操作。
本申请中,通过对可编程逻辑器件进行电路设计,在可编程逻辑器件中实现SMI接口寄存器、SMI接口收发器和译码器,CPU将SMI接口操作信息写入SMI接口寄存器,通过SMI接口寄存器中的操作信息来控制译码器选定待访问的从SMI接口,并且控制SMI接口收发器读写选定的从SMI接口器件,从而当单板上需管理的从SMI接口众多,而且从SMI接口电平也不单一时,可以实现对这些从SMI接口的统一管理。
为清晰描述本申请方案,下面通过实施例进行具体说明。
本申请实施例一的装置结构如图1所示,一种可编程逻辑器件PLD,包括:SMI接口寄存器、以及与其相连的SMI接口收发器和译码器;包含有所述装置的拓扑结构图如图2所示。
所述SMI接口寄存器与处理器CPU通过总线相连。
本申请实施例中,不限定CPU与SMI接口寄存器之间的总线接口类型,只要可以访问可编程逻辑器件中的寄存器即可,支持各种各样的CPU访问接口。例如,可使用Local bus接口、I2C接口、PCIE接口等等,这样极大地方便了CPU的选型。
由可编程逻辑器件实现CPU管理接口(以Local bus接口为例)转化的具体内容可参见说明书的后面部分,由于这部分属于现有技术,在这里不多赘述。
由于进行CPU接口设计时,可使用多种多样的接口协议,因此,本申请实施例的电路设计可以有很多的变化,为电路设计中选择合适的CPU提供了更大的选择空间。这里的CPU也可以是单片机或ARM处理器。
所述SMI接口收发器的SMI接口通过译码器扩展出与被管理的从SMI接口器件数量相同的主SMI接口,每个主SMI接口使用PLD的2个通用I/O管脚。
SMI接口包括两根信号线:MDC(Management Data Clock,管理数据时钟)和MDIO(Management Data Input/Output,管理数据输入/输出)。MDC是一个非周期信号,信号的最小周期为400ns,最小正电平时间和负电平时间为160ns,最大的正负电平时间无限制。MDIO是一根双向的数据线,用来传送MAC层的控制信息和物理层的状态信息。MDIO数据与MDC时钟同步,在MDC上升沿有效。
由于可编程逻辑器件的管脚众多,一般小一些的可编程逻辑器件,也有100至200多个I/O管脚,而每个主SMI接口只需2个通用I/O管脚即可。这样完全可以满足管理单板上众多SMI接口的需求,且可扩展性非常好。例如,某一单板上需管理的SMI接口数量达到50至100个,甚至更多,采用可编程逻辑器件就可以管理如此众多的SMI接口。
本申请实施例中,所述SMI接口收发器的SMI接口通过译码器扩展出的每个主SMI接口与一个从SMI接口器件相连。
即主SMI接口一对一连接从SMI接口,保证了对每个从SMI接口访问的拓扑结构为一驱一结构,可以保证SMI总线良好的信号质量,从而可以保证产品的高稳定性和可靠性。
本申请实施例对SMI接口采用一驱一的拓扑结构,其仿真波形如图3所示,从图中可以清楚看出,采用一驱一拓扑结构,MDC信号质量会非常好。
本申请实施例中,不同电平应用的主SMI接口位于PLD的输入输出端口I/O组不同的逻辑区域BANK中,每个BANK的I/O管脚设置成与该BANK内主SMI接口的电平相同的电平模式。
对于不同的从SMI接口器件,要求的电平可能多种多样,例如,有的从SMI接口器件只支持1.2V电平规范,有的只支持1.8V电平规范,有的又只支持3.3V电平规范等。
由于一般的可编程逻辑器件,可将不同逻辑区域BANK的I/O管脚设置为不同的电平模式,这样就可以使可编程逻辑器件访问多种不同电平规范的从SMI接口了,可支持1.2V、1.5V、1.8V、2.5V、3.3V等多种电平规范,从而可以支持当多个从SMI接口电平不同时的访问。
本申请实施例中,利用可编程逻辑器件不同逻辑区域BANK的I/O管脚可设置成不同的电平模式,可以很好地解决需管理的从SMI接口电平不单一的问题。
例如,假设需管理的从SMI接口电平有1.2V和3.3V两种电平应用,可编程逻辑器件PLD有200个I/O管脚,PLD有四个BANK,每个BANK内有50个I/O管脚,与电平为1.2V的从SMI接口相连的主SMI接口位于其中一个BANK内,将该BANK内的50个I/O管脚均设置成1.2V的电平模式,同样地,与电平为3.3V的从SMI接口相连的主SMI接口位于另一个BANK内,将该BANK内的50个I/O管脚均设置成3.3V的电平模式,从而可以访问1.2V和3.3V两种电平应用的从SMI接口。
通过以上描述可知,本申请实施例采用可编程逻辑器件进行设计,当单板上需管理的SMI接口众多,而且SMI接口电平也不单一时,可以实现对这些SMI接口的统一管理,且使SMI总线为一驱一的拓扑结构,可以保证MDC和MDIO的信号质量完好,以实现系统的高稳定性和可靠性。
下面对采用上述电路设计的可编程逻辑器件实现SMI接口统一管理的流程进行描述,这里分为读SMI接口操作和写SMI接口操作两个实施例来分别进行描述。
首先需要了解,在可编程逻辑器件中,需要定义SMI接口寄存器,用于CPU和可编程逻辑器件的交互,所述SMI接口寄存器包括:SMI接口控制以及接口地址寄存器、SMI接口写数据寄存器和SMI接口读数据寄存器,其中:
SMI接口控制以及接口地址寄存器,用于存储SMI接口寄存器的状态信息、以及待访问的从SMI接口地址、操作类型和操作执行指令信息;
SMI接口写数据寄存器,用于存储需要传送到待访问的从SMI接口器件的数据;
SMI接口读数据寄存器,用于存储从从SMI接口器件读取到的数据。
上述对SMI接口寄存器的定义详见后面的描述,此处不多赘述。
当需要启动一次写SMI接口操作时,本申请实施例二的方法流程如图4所示,包括以下步骤:
步骤401:CPU读取可编程逻辑器件的SMI接口寄存器的状态。
即读取SMI接口控制以及接口地址寄存器中的状态信息。参见后面的表1可知,当SMI_ERROR为0,且SMI_READY为0时,才能启动一次操作,本步骤属于CPU启动一次操作时的常用操作方式。
步骤402:所述SMI接口寄存器存储CPU写入的需要传送到待访问的从SMI接口器件的数据。
即参见后面的表2,CPU向可编程逻辑器件中的SMI接口写数据寄存器写入需要传送到从SMI接口器件的数据。
步骤403:所述SMI接口寄存器存储CPU写入的待访问的从SMI接口地址、操作类型信息;所述操作类型信息包含于操作信息中。
即CPU写可编程逻辑器件中的SMI接口控制以及接口地址寄存器,例如,参见表1,写入的操作信息包括:待访问的从SMI接口地址(DEVAD[4:0]和ADDR[5:0])、本次操作类型SMI_ACCESS_TYPE[1:0]。
ADDR[5:0]表示待访问的从SMI接口物理地址,DEVAD[4:0]表示所述待访问的从SMI接口的寄存器的层,例如,从SMI接口1物理地址的编码值为0,要访问从SMI接口1的寄存器的第32层,则写入的ADDR[5:0]=0,DEVAD[4:0]=32。
ADDR字段的位数是可以根据需管理的从SMI接口的数量而进行扩展的,例如,如果ADDR[5:0]不能满足现有的数量管理需求,可以扩展为ADDR[6:0]。
写操作时,操作类型SMI_ACCESS_TYPE[1:0]=01。
步骤404:所述译码器根据所述操作信息中的SMI接口地址信息选定待访问的从SMI接口。
所述译码器可以根据所述操作信息中的SMI接口地址信息,即步骤403中的字段ADDR[5:0],来选择需要访问的从SMI接口。可采用如下方法实现:
所述译码器预先对被管理的所有从SMI接口进行编码,根据所述操作信息中的从SMI接口地址的编码信息选定待访问的从SMI接口。
例如,假设被管理的从SMI接口有n个,将从SMI接口1地址编码为0,从SMI接口2地址编码为1,....,从SMI接口n地址编码为n-1,则当ADDR[5:0]=0时,表示访问从SMI接口1,以此类推。这样,CPU可把所有从SMI接口器件看成一个器件访问,只定义一段地址空间即可,从而可以在逻辑上实现多个从SMI接口器件的寄存器空间的统一管理,即可以将多个从SMI接口器件在软件层面看成一个器件,从而可极大地方便软件设计,因为与CPU联系的只是可编程逻辑器件中的寄存器单元,每一个从SMI接口都对应到同一段地址空间,可方便软件管理。
如此,可以只用一个SMI接口收发器和一个译码器,就可以实现多端口访问,从而可以节省大量的逻辑资源,降低产品成本和设计复杂度。
例如,在某一可编程逻辑器件CPLD中实现一个SMI接口收发器,需要大约7%(相对该CPLD总资源)的逻辑资源。如果单板有20个从SMI接口需要管理,且在逻辑中如果每个从SMI接口单独实现一个SMI接口收发器,则所需资源将达到140%,超出该CPLD的总资源了。如果采用本申请实施例方案,设计一个译码器来选择待访问的从SMI接口,采用一个SMI接口收发器来读写选定的SMI接口器件,这样被管理的多个从SMI接口复用一个SMI接口收发器,就可以大大节约逻辑资源。
步骤405:所述SMI接口寄存器存储CPU写入的操作执行指令的操作信息。
即CPU在SMI接口寄存器中写入操作执行指令的操作信息。参见表1,CPU将可编程逻辑器件的SMI接口控制以及接口地址寄存器中SMI_START置1、以及SMI_READY置1。
步骤406:所述SMI接口收发器根据SMI接口寄存器中的操作信息对所述选定的从SMI接口执行一次写SMI接口操作。
所述操作信息包括:需要传送到待访问的从SMI接口器件的数据、待访问的从SMI接口地址、操作类型、以及操作执行指令信息。
当CPU在SMI接口寄存器中写入操作执行指令时,所述SMI接口收发器对所述选定的从SMI接口执行一次写操作。
一次写操作包括以下步骤:
S1、可编程逻辑器件将需要传送到待访问的从SMI接口器件的数据通过SMI接口,送到从SMI接口器件。
S2、一个逻辑周期后,SMI接口控制以及接口地址寄存器中的SMI_START被清0。
S3、本次访问完成,SMI接口控制以及接口地址寄存器中的SMI_READY被清0。
S4、如果访问正常,SMI接口控制以及接口地址寄存器中的SMI_ERROR置0;如果访问异常,SMI接口控制以及接口地址寄存器中的SMI_ERROR置1,等CPU处理异常后,置0。
上述步骤S1、S2、S3、S4通过SMI接口收发器的逻辑状态机实现。
如图5所示,当SMI接口收发器对选定的从SMI接口执行读操作或写操作时,SMI接口收发器的逻辑状态机的逻辑状态实现描述如下,其中,REG1表示SMI接口控制以及接口地址寄存器,REG2表示SMI接口写数据寄存器,REG3表示SMI接口读数据寄存器:
空闲状态:等待CPU启动读写操作。当REG1的SMI_START为置1时,转到下一状态。
前导状态:此状态持续32周期,发送同步信号。
发送起始码状态:持续2周期,发送开始标志。
发送操作码状态:持续2周期,发送操作码。
发送地址状态:持续10周期,发送地址设备信息。
读写状态转化状态:持续2周期,若为读操作,则第一比特由主SMI接口器件置为高阻态,第二比特由从芯片置“0”,若为写操作,则仍由主芯片控制,其连续输出“10”两个比特。
读写状态:持续16周期,读操作时为从芯片送到主芯片的数据,写操作时为主芯片送到从芯片的数据。
当需要启动一次读SMI接口操作时,本申请实施例三的方法流程如图6所示,包括以下步骤:
步骤601:CPU读取可编程逻辑器件的SMI接口寄存器的状态。
当SMI_ERROR为0,且SMI_READY为0时,才能启动一次操作。本步骤对应于实施例二中的步骤401。
步骤602:所述SMI接口寄存器存储CPU写入的待访问的从SMI接口地址、操作类型信息。
即CPU写可编程逻辑器件中的SMI接口控制以及接口地址寄存器,参见表1,写入的操作信息包括:DEVAD[4:0]、ADDR[5:0]、SMI_ACCESS_TYPE[1:0]。本步骤对应于实施例二中的步骤403。
步骤603:所述译码器根据所述操作信息中的SMI接口地址信息选定待访问的从SMI接口。
本步骤对应于实施例二中的步骤404。
步骤604:所述SMI接口寄存器存储CPU写入的操作执行指令的操作信息。
即CPU将可编程逻辑器件的SMI接口控制以及接口地址寄存器中SMI_START置1、以及SMI_READY置1。
本步骤对应于实施例二中的步骤405。
步骤605:所述SMI接口收发器根据SMI接口寄存器中的操作信息对所述选定的从SMI接口执行一次读SMI接口操作。
所述操作信息包括:待访问的从SMI接口地址、操作类型以及操作执行指令信息。
一次读SMI接口操作包括以下步骤:
T1、可编程逻辑器件将需读取的数据通过SMI接口,从从SMI接口器件读取后,存入SMI接口读数据寄存器。
T2、一个逻辑周期后,SMI_START被清0。
T3、本次访问完成,SMI_READY被清0。
T4、CPU读取SMI接口读数据寄存器,获取想要的数据。
T5、如果访问正常,SMI_ERROR置0;如果访问异常,SMI_ERROR置1。等CPU处理异常后,清0。
上述步骤T1、T2、T3、T4、T5通过SMI接口收发器的逻辑状态机实现,如图6所示,本申请实施例二中已有描述,此处不再赘述。
本申请实施例四的方法流程如图7所示,一种SMI接口管理方法,应用于由串行管理接口SMI接口寄存器、以及与其相连的SMI接口收发器和译码器构成的可编程逻辑器件PLD,所述SMI接口寄存器与处理器CPU通过任意总线相连;所述SMI接口收发器的SMI接口通过译码器扩展出与被管理的从SMI接口器件数量相同的主SMI接口;每个主SMI接口使用PLD的2个通用I/O管脚,每个主SMI接口与一个从SMI接口器件相连;不同电平应用的主SMI接口位于PLD的输入输出端口I/O组不同的逻辑区域BANK中,每个BANK的I/O管脚设置成与该BANK内主SMI接口的电平相同的电平模式;
当CPU读取SMI接口寄存器的状态后启动一次SMI接口操作时,执行以下步骤:
步骤701:所述SMI接口寄存器存储CPU写入的操作信息。
本步骤对应于实施例二的步骤402、403、405或者实施例三的步骤602、604。
步骤702:所述译码器根据所述操作信息中的SMI接口地址信息选定待访问的从SMI接口。
本步骤对应于实施例二的步骤404或实施例三的步骤603。
步骤703:当CPU在SMI接口寄存器中写入操作执行指令的操作信息时,所述SMI接口收发器根据SMI接口寄存器中的操作信息对所述选定的从SMI接口执行对应的操作。
本步骤对应于实施例二的步骤406或实施例三的步骤605。
当启动一次写SMI接口操作时,
所述CPU写入的操作信息包括:需要传送到待访问的从SMI接口器件的数据、待访问的从SMI接口地址、操作类型、以及操作执行指令信息。
当启动一次读SMI接口操作时,
所述CPU写入的操作信息包括:待访问的从SMI接口地址、操作类型以及操作执行指令信息。
较佳地,所述译码器根据所述操作信息中的SMI接口地址信息选定待访问的从SMI接口,包括:
所述译码器预先对被管理的所有从SMI接口进行编码,根据所述操作信息中的从SMI接口地址的编码信息选定待访问的从SMI接口。
本申请方案中,由可编程逻辑器件根据接收到的CPU的操作信息,去访问从SMI接口器件。在可编程逻辑器件中,实现了CPU管理接口和SMI接口之间的转化,即在可编程逻辑器件中,实现一个包括SMI接口寄存器、SMI接口收发器和译码器的SMI接口管理器。通过如此设计,当单板上需管理的SMI接口众多,而且SMI接口电平也不单一时,可实现对这些SMI接口的统一管理。
为方便理解本申请方案,下面附上所述SMI接口寄存器的定义内容作为参考,SMI接口寄存器包括:SMI接口控制以及接口地址寄存器、SMI接口写数据寄存器和SMI接口读数据寄存器。
所述SMI接口控制以及接口地址寄存器[0xBASE(基地址)+000001(偏移地址)]的定义如下表1:
表1
所述SMI接口写数据寄存器(0xBASE+000002)的定义如下表2:
位 |
缺省值 |
定义 |
功能描述 |
属性 |
15:0 |
全0 |
WE_data[15:0] |
写数据/地址寄存器 |
R/W |
表2
所述SMI接口读数据寄存器(0xBASE+000003)的定义如下表3:
位 |
缺省值 |
定义 |
功能描述 |
属性 |
15:0 |
全0 |
RD_data[15:0] |
读数据寄存器 |
R |
表3
为方便理解本申请方案,下面对可编程逻辑器件实现CPU管理接口(以Localbus接口为例)转化的相关内容进行描述,以作为参考。
这里以Local bus作为CPU管理接口,拓扑如图8所示:
CPU和逻辑之间连接信号线包括:数据线(数据线宽为:8、16…bit)DATA、地址线(线数根据可编程逻辑芯片的寄存器容量确定)ADDR、片选
输出使能信号
写信号
地址锁存信号
等等。CPU对可编程逻辑芯片操作时,首先片选信号
有效(“-”表示本信号低电平有效,否则高电平有效),读操作时
信号会有效,写操作时
信号会有效,其它信号也依不同CPU芯片定义时序变化,每个厂家都会对自己推出的CPU芯片定义CPU各种接口的读、写访问信号时序,以便于应用硬件人员参考设计CPU系统电路。
下面以MOTOROLA的MPC8245的PORT X接口介绍CPU总线的接口时序。
图9是MPC8245的一种CPU接口对外设备的读操作时序图,以它为例介绍一般CPU接口读时序原理。图中MemClk是CPU系统频率,ADDR是地址线,DATA是数据线,
是地址锁存信号,
是外围芯片片选信号,
是输出使能信号。CPU在
片选信号结束前一个系统时钟的上升沿采样数据。
信号保持高持续时间ASFALL和
信号保持低持续时间ASRISE长度可以通过CPU内部寄存器调整,以保证把稳定的地址数据锁入外设,
信号也可以做其它用途。
图10是MPC8245的一种CPU接口对外设备的写操作时序图,以它为例介绍一般CPU接口写时序原理。信号基本同于上段介绍,
是CPU的写使能指示信号,外围设备根据此信号指示采样数据,例如用
或者
信号的上升沿采样获得CPU写数据。CPU可通过该管理接口,访问可编程逻辑器件中定义的寄存器。
本申请中,在有众多SMI接口器件需要管理的情况下,使用较少可编程逻辑器件的逻辑资源,就可实现单CPU接口对众多SMI接口的统一管理,且能保证一驱一的拓扑结构,支持多种SMI接口电平规范。并且在可编程逻辑器件中,设计了一个多路选择开关,只使用一个SMI接口收发器,就可以实现对众多SMI接口的访问,实现了一个SMI接口收发器管理众多SMI接口的功能。从而可以节省大量逻辑资源,降低产品成本和设计复杂度。
以上所述不限于SMI接口的管理,本申请的电路设计思想同样适用于对产品稳定性要求较高的其它多接口的统一管理。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。