CN117981268A - 通信系统和方法 - Google Patents
通信系统和方法 Download PDFInfo
- Publication number
- CN117981268A CN117981268A CN202180102392.0A CN202180102392A CN117981268A CN 117981268 A CN117981268 A CN 117981268A CN 202180102392 A CN202180102392 A CN 202180102392A CN 117981268 A CN117981268 A CN 117981268A
- Authority
- CN
- China
- Prior art keywords
- bit
- data signal
- data
- states
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000004891 communication Methods 0.000 title abstract description 47
- 230000007704 transition Effects 0.000 claims abstract description 86
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 230000000295 complement effect Effects 0.000 claims description 9
- 230000000116 mitigating effect Effects 0.000 abstract description 15
- 230000005540 biological transmission Effects 0.000 description 86
- 238000013461 design Methods 0.000 description 42
- 230000008569 process Effects 0.000 description 42
- 230000015654 memory Effects 0.000 description 37
- 238000010586 diagram Methods 0.000 description 21
- 239000004744 fabric Substances 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000005457 optimization Methods 0.000 description 11
- 230000003068 static effect Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 230000011664 signaling Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000012938 design process Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000033228 biological regulation Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 2
- 230000003750 conditioning effect Effects 0.000 description 2
- 229910003460 diamond Inorganic materials 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004549 pulsed laser deposition Methods 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0023—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the signalling
- H04L1/0028—Formatting
- H04L1/0029—Reduction of the amount of signalling, e.g. retention of useful signalling or differential signalling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/12—Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/001—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using chaotic signals
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Dc Digital Transmission (AREA)
Abstract
提供了各种技术来实现与数据通信相关联的信息泄漏缓解。在一个示例中,一种方法包括接收包括多个比特的比特流。该方法还包括:针对多个比特中的每个比特:响应于该比特,在多个状态中的两个状态之间进行转换;响应于该转换,将与该比特相关联的数据信号差分对反相,以获得差分地转换的数据信号;响应于该转换,维持与该比特相关联的第三数据信号;以及通过相应的线发送差分地转换的数据信号和第三数据信号中的每个数据信号。相关的系统和设备被提供。
Description
技术领域
本发明总体上涉及通信系统和数据安全,并且更具体地,涉及例如用于促进信息泄漏缓解的信号发送(signaling)系统和方法。
背景技术
提供数据的安全传递已经变得越来越重要。在一些情况下,在任何网络环境内,这种数据的安全传递可以发生在芯片的组件之间、在不同芯片的组件之间、在内联网上和/或在互联网(诸如因特网)上。
附图说明
图1示出了根据本公开的一个或多个实施例的在其中传送数据的示例网络环境。
图2示出了根据本公开的一个或多个实施例的针对在状态转换中对数据比特进行编码而定义的示例编码方案。
图3示出了根据本公开的一个或多个实施例的与图2的编码方案相关的随时间变化的示例信号图。
图4示出了根据本公开的一个或多个实施例的在其中传送数据的示例网络环境。
图5A示出了根据本公开的一个或多个实施例的用于促进信息泄漏缓解的示例编码过程的流程图。
图5B示出了根据本公开的一个或多个实施例的示例解码过程的流程图。
图6A示出了根据本公开的一个或多个实施例的用于促进信息泄漏缓解的示例编码过程的流程图。
图6B示出了根据本公开的一个或多个实施例的示例解码过程的流程图。
图7示出了根据本公开的一个或多个实施例的可编程逻辑器件的框图。
图8示出了根据本公开的一个或多个实施例的可编程逻辑器件的逻辑块的框图。
图9示出了根据本公开的一个或多个实施例的可编程逻辑器件的设计过程。
图10示出了根据本公开的一个或多个实施例的包括可编程逻辑器件的设备的框图。
通过参考以下详细描述,可以最好地理解本公开的实施例及其优点。应当理解,相同附图标记用于标识在一个或多个图中示出的相同元件。
具体实施方式
提供了各种技术来促进缓解/抑制与有线传输相关联的信息泄漏。在各种实施例中,可以实现缓解/抑制来解决侧信道攻击。侧信道攻击可以指由对手(adversary)(例如,也称为对抗设备、攻击者或黑客)发起的攻击,这些攻击不直接涉及尝试访问由受攻击设备传送的数据,而是依赖于收集由受攻击设备通过受攻击设备的一般使用/操作而可能泄露的信息,并且基于这种被泄露的信息来确定由受攻击设备所传送的数据。在这点上,在一些情况下,这种泄漏可以基于当设备正在传送数据时监测设备的功率分布(power profile)来确定。本文提供的缓解技术可以在可以执行的其他缓解和/或对策之上进行应用,或者作为对可以执行的其他缓解和/或对策的补充进行应用。
这样,通过线(wire)进行的数据传输(例如,安全数据传输)可能表现出可能需要被缓解/抑制的不期望的数据泄漏。在一些攻击中,对手可能能够收集由设备泄露的与该设备所发送的数据相关联的信息。作为示例,由设备发送的数据所导致的不期望的数据泄漏可能经由通过供应线(例如,公共供电线)的泄漏而发生。不期望的数据泄漏可以是动态信号(例如,动态电流)的形式,对手可以感测(例如,侧信道感测)该动态信号以提取与该设备所发送的数据相关联的信息。在这点上,数据线(data wire)和相关联的负载表现出被充电和放电的电容和电感。因此,通过侧信道感测,可以潜在地提取通过线传播的数据的存在或不存在,并且在一些情况下,甚至可以潜在地提取数据的实际值。不期望的数据泄露,如果不被缓解的话,可能允许对手确定设备所发送的数据(或部分数据)。
在一些实施例中,由传输系统执行多线单比特传输以缓解与数据传输相关联的泄漏信息。数据被编码在多线传输系统中的信号转换中。在这点上,对于任何给定的输入数据比特,可以生成多个数据比特(例如,也称为传输比特、编码数据比特或其变体),并且将这些数据比特变换(例如,驱动)为具有适当信号电平(例如,电流电平或电压电平)的数据信号。每个数据信号都可以被提供到线中的一条线上。在一个方面,来自电源的功率信号(例如,电流信号)用于适当地对线中的一条或多条线进行充电或放电,以在线上提供数据信号。多个数据比特或等效的数据信号可以共同地提供传输系统的状态(例如,也称为活动状态)。
为了促进缓解/抑制泄漏信息,可以定义编码方案,在该编码方案中,传输系统的状态转换可以响应于每个接收到的输入数据比特而发生。在这点上,即使当输入数据比特的值(例如,1或0)没有从其先前值改变时,也可以发生状态转换。可以进一步定义编码方案,使得传输系统的每个状态可以具有处于第一逻辑电平的预定数目的一个或多个传输比特和处于第二逻辑电平的预定数目的一个或多个传输比特。例如,在三线情况下,传输系统的所有状态都可以具有两个为0(例如,逻辑低)的传输比特以及一个为1的传输比特(例如,逻辑高)。
在一些方面,通过使编码方案具有随着每个接收到的输入比特而发生的状态转换以及跨状态保持恒定的逻辑构成(例如,零和一的数目),与向线提供功率的电源相关联的活动/效果对于编码方案所允许的任何状态转换都保持标称相同/基本相同。在这点上,对于任何给定的状态转换,与对线进行充电或放电相关联的任何活动/效果(例如,电源信号尖峰)是标称相同的,而不管输入比特的值是1还是0。这样,可以从用于将功率从电源传递到线的一条或者多条供应线中提取的信息不可用于确定通过线传送的数据信号。在每个时钟周期都发生状态转换的情况下,从一条或者多条系统电源线的角度来看,每一个时钟周期都与相同的结果(例如,相同的功率尖峰)相关联,而不管输入比特是1还是0,因此,对手可从一条或者多条供应线中提取的信息不可用于确定通过线被传送的数据信号。在一些情况下,可以实现双绞线方法,使得来自线的唯一辐射信号是基本时钟频率。
在一些情况下,线上提供的信号电平可以是完整的互补金属氧化物半导体(CMOS)电平。CMOS信号从逻辑低电平到逻辑高电平(反之亦然)的摆幅可以在5V左右(例如,逻辑低约为0V,逻辑高约为5V)或更小(例如,取决于技术水平,低至1V或甚至更低)。在一些情况下,取决于应用和/或可用资源,可以适当地使用与不同半导体技术/方案(例如,材料系统、工艺)相关联的信号电平。在其他情况下,可以使用其他电单端信号发送方法来生成在一个或多个实施例中利用的差分信号。
因此,使用各种实施例,可以适当地指定/实现用于布线资源的芯片有效面积(chip real estate)以促进多线单比特传输,同时提供数据泄漏缓解/抑制。在一些情况下,这种线可以用于芯片间连接、设备间连接、芯片内连接、设备内连接和/或一般的任何有线通信,只要利用具有适当信号电平的信号以使得信号可以穿过期望的线距离/长度。在一些情况下,数据信号发送可以被应用于片上信号发送以及点对点板级信号发送。
作为一个示例,传输系统可以实现三线单数据比特传输。对于根据一个或多个实施例的编码方案,传输系统的每个状态都可以具有第一逻辑电平的两个比特以及第二逻辑电平的剩余比特,第二逻辑电平与第一逻辑电平互补(例如,反相)。作为示例,传输系统可以具有在任何给定时间三个传输比特中只有一个传输比特为1(例如,逻辑高)的状态,其中传输系统的状态包括001、010和100。作为另一示例,传输系统可以具有在任何给定时间三个传输比特中只有一个传输比特为零(例如,逻辑低)的状态,其中传输系统的状态包括110、101和011。因此,从任何给定状态起,都存在两种转换可能性。数据输入比特0可以被分配(例如,任意地分配)两种转换中的一种转换,而数据输入比特1可以被分配给两种转换中的剩余转换。
状态转换可以涉及:三个传输比特中的两个传输比特改变值,而剩余的传输比特维持其值(例如,保持静态)。在一些情况下,改变值的两个传输比特形成差分对(例如,一个传输比特与逻辑低相关联,并且另一传输比特与逻辑高相关联),并且这两个数据值的转换可以被称为差分转换。适当的电路装置(诸如驱动器电路装置)可以用于将传输比特变换成提供在线上的适当信号电平(例如,电压电平)。在这点上,对于任何给定的输入数据比特,双线差分转换是利用保持静态的第三条线来编码的。在一些情况下,差分转换是完整的CMOS差分转换。在每个时钟周期都处理数据比特的情况下,每个时钟周期都发生状态转换(例如,即使输入数据比特没有从其先前值发生改变),这样,在每一个时钟脉冲都存在双线差分信号。从一条或者多条系统电源线的角度来看,每一个时钟周期都与相同的结果(例如,与双线差分转换相关联的相同的功率尖峰,同时第三条线保持静态)相关联,因此对手可从一条或者多条供应线中提取的信息不可用于确定通过线传送的数据信号。在一些情况下,可以实现双绞线方法,使得来自线的唯一辐射信号是基本时钟频率。
现在参考附图,图1示出了根据本公开的一个或多个实施例的在其中传送数据的示例网络环境102。然而,并非所有描绘的组件都是必需的,并且一个或多个实施例可以包括图中未示出的附加的组件。在不脱离本文阐述的权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供附加的组件、不同的组件和/或更少的组件。
网络环境102包括编码电路108(例如,也称为编码设备或编码器)、解码电路112(例如,也称为解码设备或解码器)、线118A-118C、电源122和电源线128。线118-118C连接编码电路108和解码电路112。编码电路108和解码电路112可以被实现在单个芯片或多个芯片上(例如,在一个设备内或在多个设备上)。例如,当编码电路108和解码电路112被实现在相同芯片上时,线118A-118C可以提供芯片内连接和/或设备内连接(例如,以促进跨芯片的块到块通信)。当编码电路108和解码电路112被实现在分离的芯片上时,线118A-118C可以提供芯片间连接和/或设备间连接。
编码电路108可以接收输入比特流的比特,对比特进行编码以获得传输比特A、B和C,并且将传输比特A、B和C变换(例如,驱动)到具有适当信号电平(例如,电压电平或电流电平)的数据信号dA、dB和dC,以分别通过线118A、118B和118C进行传输。在一些情况下,信号电平可以是CMOS电平。在这点上,线118A-118C可以共同提供用于发送与输入比特流的比特相关联的数据的1比特数据总线。在一些情况下,可以实现双绞线方法,使得来自三条线118A-118C的唯一辐射信号是基本时钟频率。由于传输比特A、B和C与数据信号dA、dB和dC具有直接的对应/关系,因此出于讨论的目的,传输比特和数据信号在本文中可以被互换地指代。作为一个非限制性示例,输入比特流可以包括与密钥交换相关联的数据,以用于促进在包括编码电路108的系统与包括解码电路112的系统之间的安全通信。在输入比特流中提供的其他类型的安全数据内容可以包括软件修订和安全个人数据。编码电路108可以根据时钟信号clk进行操作。在一些情况下,编码电路108可以在每个时钟周期期间都对输入比特流的一个比特进行编码。下面关于图2描述了由编码电路108执行的编码方案的示例。
解码电路112可以接收线118A-118C上的数据信号dA、dB和dC,并且对数据信号进行解码以获得输出比特流(例如,也称为输出数据流)。一般来说,当正确地执行解码时,输出比特流的每个比特与输入比特流的对应比特相同或指示输入比特流的对应比特。例如,对于输入比特流的给定比特,编码电路108可以生成数据信号并且在线118A-118C上提供这些数据信号。解码电路112可以对线118A-118C上的数据信号进行解码/变换,以获得由编码电路108用来生成数据信号的输入比特流的比特值(例如,0或1)。解码电路112可以将输出比特流提供给解码电路112下游的可以利用输出比特流的一个或多个组件。虽然图1中未示出,但是解码电路112也可以根据时钟信号进行操作。在一些方面,为了促进编码和解码,解码电路112的时钟信号可以与关联于编码电路108的时钟信号clk同步,和/或具有与关联于编码电路108的时钟信号clk相同的时钟频率。
电源122可以向编码电路108供应功率(例如,电压和/或电流)。可以经由功率线128将功率提供给编码电路108。在图1中,电源122向编码电路108供应电压VCC。在一些情况下,除了向编码电路108供应功率之外,电源122还可以向一个或多个其他组件供应功率。在一些情况下,功率线128可以是电源122向其提供功率的功率总线(例如,一条或者多条公共供应线)的一部分。功率总线可以向编码电路108和图1中未示出的其他组件提供功率。来自电源122的功率可以通过一条或多条功率总线来供应。在一些情况下,电源122可以被实现为电池或电池组,例如,集成有充电和监测电子器件的电池或电池组。在一些情况下,电源122可以接收电网功率或其他外部功率,并且包括各种功率调节、调整和/或变换组件,以通过一条或多条功率总线来供应功率。功率总线可以包括一条或多条导电线和/或迹线,以将所供应的功率(例如,电压和/或电流)传达给各种组件。
在一些实施例中,编码电路108促进多线单比特传输,以缓解与数据传输相关联的泄漏信息。数据可以被编码在信号转移中。对于输入比特流的给定比特,编码电路108可以基于该比特和先前的所发送数据信号dA,prev、dB,prev和dC,prev集合(或者等效地,先前的传输比特Aprev、Bprev和Cprev集合)来生成数据信号dA、dB和dC的集合(或者等效地,传输比特A、B和C的集合)。作为示例,当在每个时钟周期中都对比特进行编码并且发送对应的数据信号的集合时,先前的数据信号dA,prev、dB,prev和dC,prev集合是在时钟周期n-1期间通过线118A-118C发送的数据信号的集合,时钟周期n-1在时间上与时钟周期n相邻并且在时钟周期n之前,在时钟周期n中,数据信号dA、dB和dC的集合将通过线118A-118C被发送。在该示例中,对于输入比特流中与时钟周期n+1相关联的下一比特,编码电路108可以基于该下一比特和在时钟周期n处发送的数据信号的集合来生成数据信号的集合。
解码电路112可以经由线118A-118C接收数据信号dA、dB和dC的集合,并且基于数据信号dA、dB和dC的集合以及先前的所接收数据信号dA,prev、dB,prev和dC,prev集合来确定输入比特流的比特。在这点上,编码电路108和解码电路112可以包括相应的存储器和/或可以耦合到相应的存储器,相应的存储器存储先前的传输比特集合、先前的数据信号集合和/或指示先前的传输比特或数据信号集合的任何信息,以促进它们相应的编码功能和解码功能。
在一些方面,数据信号dA、dB和dC的集合(或等效地,传输比特A、B和C的集合)可以共同提供与编码电路108相关联的状态。这样,在各种实施例中,对于与时钟周期n相关联的比特,该比特的值被编码在从与时钟周期n-1相关联的数据信号dA,prev、dB,prev和dC,prev的集合所提供的状态到与时钟周期n相关联的数据信号dA、dB和dC的集合所提供的状态的转换中。与解码电路112相关联的状态可以类似地由数据信号dA、dB和dC的集合(或等效地,传输比特A、B和C的集合)来提供。
图2示出了根据本公开的一个或多个实施例的针对在状态转换中编码数据比特而定义的示例编码方案。出于解释的目的,本文参考图1的网络环境102来描述编码方案,尽管该编码方案可以用于其他网络环境(例如,其他编码器-解码器架构/环境)。传输比特A、B和C可以共同定义编码电路108的状态001、010和100,状态001、010和100被任意地表示为状态S1、S2和S3。输入比特D可以导致从这三个状态中的一个状态转换到这三个状态中的另一状态。在图2的编码方案中,每种转换导致传输比特中的两个传输比特(例如,以及线118A-118C中的两条线上的对应信号)差分地改变,并且传输比特中的第三传输比特(例如,以及线118A-118C中的剩余线上的对应信号)不变。
图2的编码方案可以由以下状态转换图/方程来表示:
A’=B·D+C·D/
B’=A·D/+C·D
C’=A·D+B·D/
其中A、B和C是传输比特的当前值并且提供当前状态;A’、B’和C’是传输比特的下一值并且提供下一状态;并且“/”表示反相(例如,当D=0时,D/=1,并且当D=1时,D/=0)。
作为第一示例转换,对于状态001(也表示为状态S1),输入比特1导致转换到状态010,其中传输比特B和C形成差分地转换的差分对(如图2中使用下划线所示),并且传输比特A保持不变。输入比特0导致转移到状态100,其中传输比特A和C形成差分地转换的差分对(如图2中使用下划线所示),并且传输比特B保持不变。
作为第二示例转换,对于状态010(也表示为状态S2),输入比特1导致转换到状态100,其中传输比特A和B形成差分地转换的差分对(如图2中使用下划线所示),并且传输比特C保持不变。输入比特0导致转换到状态001,其中传输比特B和C形成差分地转换的差分对(如图2中使用下划线所示),并且传输比特A保持不变。
作为第三示例转换,对于状态100(也表示为状态S3),输入比特1导致转换到状态001,其中传输比特A和C形成差分地转换的差分对(如图2中使用下划线所示),并且传输比特B保持不变。输入比特0导致转换到状态010,其中传输比特A和B形成差分地转换的差分对(如图2中使用下划线所示),并且传输比特C保持不变。
注意,图2的编码方案是通过非限制性示例而提供的。例如,不是当输入比特为1时从状态001转换到010、并且当输入比特为0时从状态001转换到状态100,而是输入比特为1可以将状态001转换到状态100,并且输入比特为0可以将状态001转换到状态010。此外,尽管图2示出了其中与编码电路108相关联的所有状态都具有两个与0相关联的传输比特和一个与1相关联的传输比特的编码方案,但是在其他实施方式中,与编码电路108相关联的所有状态都可以具有两个与1相关联的传输比特和一个与0相关联的传输比特。
图3示出了根据本公开的一个或多个实施例的与图2的编码方案相关的随时间变化的示例信号图305、310、315、320A-320C和325。信号图305提供了与时钟信号clk相关联的随时间变化的时钟脉冲。信号图310提供了输入数据比特D随时间变化的逻辑电平(例如,逻辑低为0,逻辑高为1)。信号图315提供了与包括编码电路108的系统的操作相关联的信号vrst(例如,称为复位信号或起始/初始化信号)随时间变化的信号电平。当编码电路108(例如,包括编码电路108的系统)没有被操作来对比特流进行编码时,信号vrst可以处于与逻辑低相对应的电平,并且当编码电路108(例如,包括编码电路108的系统)被操作来对比特流进行编码时,信号vrst可以处于与逻辑高相对应的电平。
信号图320A、320B和320C分别提供了数据信号dA、dB和dC随时间变化的信号电平(例如,电压电平)。在一些情况下,与数据信号dA、dB和dC相关联的信号电平可以是CMOS电平。在一些情况下,与信号电平之间的转换相关联的信号摆动可以涉及完整的CMOS信号摆动。信号图325提供了与电源122所供应的功率相关联的电流ICC随时间变化的信号电平(例如,电流电平)。可以提供电流ICC以将数据信号dA、dB和/或dC转换到它们的适当信号电平。
时刻t-1、t0、t1、t2、t3、t4、t5等各自提供与时钟信号clk相关联的相应时钟周期的开始(例如,时钟脉冲的上升边沿)。在t=t-1 +(例如,在t-1前后稍晚的时刻)时,vrst的信号电平处于与逻辑低相对应的电平,因此不执行编码。在t=t0 +时,为了发起编码操作,将vrst的信号电平转换到与逻辑高相对应的电平。将vrst的信号电平设置为逻辑高状态可以导致(例如,用于编码电路108的初始化)将编码电路108设置为已知状态并且将数据输入设置为预定电平。作为非限制性示例,已知状态可以是000,并且数据输入D可以是值1,如t=t0和t=t1之间的信号图310、320A、320B和320C所示。随着编码被发起,数据信号dA、dB和dC(以及对应的传输比特A、B和C)可以在大约t=t1处被设置为初始状态(例如,从已知状态转换到初始状态),以启动与编码电路108相关联的状态机。在图3中,编码器电路105的初始状态是允许的/有效的状态001,尽管在其他实现方式中,其他两个允许的/有效的状态中的任何一个状态可以被设置为初始状态。
在t1与t2之间,编码电路108处于初始状态001,并且接收值为1的输入比特,因此导致在大约t2处转换到状态010。该输入比特1可以被认为是输入比特流中的要被编码的第一个/初始比特,其中该输入比特是基于从初始状态001到状态010的转换来被编码的。在这点上,初始比特导致从初始状态到下一状态010的转换。电流ICC在大约t=t2处的尖峰将数据信号dB和dC(例如,选择性地对线118B和118C进行充电或放电)改变到与状态010相关联的适当信号电平。数据信号dB和dC的转换可以被称为差分转换。在一些情况下,差分转换可以是完整的CMOS级别差分转换。在一些情况下,可以使用其他电单端信号发送来生成差分信号以实现差分转换。数据信号dA不变(例如,线118A保持静态)。在t2与t3之间,编码电路108处于状态010,并且接收值为0的输入比特,因此导致在大约t3处转换到状态001。电流ICC在大约t=t3处的尖峰将数据信号dB和dC改变(例如,差分地转换)到与状态001相关联的适当信号电平。数据信号dA不变(例如,线118A保持静态)。在t3与t4之间,编码电路108处于状态001,并且接收值为0的输入比特,因此导致在大约t4处转换到状态100。电流ICC在大约t=t4处的尖峰将数据信号dA和dC改变(例如,差分地转换)到与状态100相关联的适当信号电平。数据信号dB不变(例如,线118B保持静态)。
在t4与t5之间,编码电路108处于状态100,并且接收值为0的输入比特,因此导致在大约t5处转换到状态010。电流ICC在大约t=t5处的尖峰将数据信号dA和dB改变(例如,差分地转换)到与状态010相关联的适当信号电平。数据信号dC不变(例如,线118C保持静态)。在t5与t6之间,编码电路108处于状态010,并且接收值为1的输入比特,因此导致在大约t6处转换到状态100。电流ICC在大约t=t6处的尖峰将数据信号dA和dB改变(例如,差分地转换)到与状态100相关联的适当信号电平。数据信号dC不变(例如,线118C保持静态)。在t6与t7之间,编码电路108处于状态100,并且接收值为1的输入比特,因此导致在大约t7处转换到状态001。电流ICC在大约t=t7处提供的尖峰将数据信号dA和dC改变(例如,差分地转换)到与状态001相关联的适当信号电平。数据信号dB不变(例如,线118B保持静态)。附加的转换发生在图3所示的后续时钟周期中。
如信号图325所示,电流ICC的尖峰表示电源122响应于每个时钟周期期间(例如,在大约t2、t3、t4等处)的状态转换而提供的用以对线118A-118C中的两条线进行充电或放电的功率。在信号图325中,通过将数据信号中的两个数据信号反相(例如,差分地转换数据信号中的两个数据信号)并且保留第三数据信号不变,使得数据信号dA、dB和dC处于与期望状态相关联的适当信号电平,将每次状态转换与对数据信号dA、dB和dC进行转换相关联。在这点上,每一个时钟周期/脉冲都与双线差分信号相关联。每一个时钟周期都与状态转换相关联,状态转换又与电流ICC的信号电平中基本相同/标称相同的尖峰相关联。因此,从提供电流ICC的系统功率总线(例如,其可能被对手监测)的角度来看,在每个时钟周期期间,在功率总线上都不存在数据信息(例如,或等效地与尖峰有关的相同信息)。这样,即使每个时钟周期的t=t1、t2、t3等处的尖峰都被认为是泄漏信息,对手也无法使用从功率总线中提取的泄漏信息来确定正在被传送的数据(例如,输入比特D、数据信号dA、dB和dC或传输比特A、B和C)。
图4示出了根据本公开的一个或多个实施例的在其中传送数据的示例网络环境400。然而,并非所有描绘的组件都是必需的,并且一个或多个实施例可以包括图中未示出的附加组件。在不脱离本文阐述的权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供附加的组件、不同的组件和/或更少的组件。在实施例中,网络环境400可以是图1的网络环境102、可以包括图1的网络环境102或者可以是图1的网络环境102的一部分。对图1的网络环境102的描述总体上适用于图4的网络环境400,其中本文提供了差异的示例和其他描述。
网络环境400包括安全系统块405、编码电路410、解码电路415、线420A-420C、电源425、电源线430、电源435和电源线440。编码电路410和解码电路415可以被实现在单个芯片或多个芯片上。作为一个示例,安全系统块405、编码电路410和解码电路415可以被实现在同一芯片上,使得线420A-420C可以提供芯片内连接和/或设备内连接(例如,以促进跨芯片的块到块通信)。作为另一示例,安全系统块405和编码电路410可以被实现在一个芯片上,并且解码电路415可以被实现在另一芯片上,使得线420A-420C可以提供芯片间连接和/或设备间连接。
可以使用硬件、软件或者硬件和软件的组合来实现安全系统块405。在一些方面,安全系统块405可以被实现为硬知识产权(IP)核心资源,以提供安全的和/或非易失性的数据存储。安全系统块405可以包括多个有区别的扇区,诸如一个或多个设备密钥扇区(例如,高级加密标准(AES)密钥扇区和分离的密钥/密钥对扇区)、一个或多个用户闪存(UFM)扇区和/或其他定义的存储扇区。设备密钥扇区可以用于存储加密/解密密钥、公钥/私钥和/或其他安全密钥。在一些情况下,诸如当安全系统块405被提供在可编程逻辑器件中时,安全系统块405可以包括用于存储可编程逻辑器件的配置的配置映像扇区。替代地或附加地,与安全系统块405相关联的其他类型的安全数据内容可以包括软件修订和/或安全个人数据。存储在安全系统块405中的数据可以作为输入比特流被提供给编码电路410。
编码电路410包括状态机逻辑电路445和驱动器450(例如,也称为驱动器电路)。编码电路410可以根据时钟clk进行操作。注意,在一些情况下,编码电路410的其他组件和/或包括编码电路410的系统的其他组件可以利用时钟clk。在一些情况下,编码电路410可以在每个时钟周期期间都对输入比特流的一个比特进行编码。
状态机逻辑电路445可以接收输入比特流的比特,基于该比特和与编码电路410相关联(或等效地,与状态机逻辑电路445相关联)的先前状态(例如,由传输比特Aprev、Bprev和Cprev提供)来确定与编码电路410相关联的当前状态(例如,由传输比特A、B和C提供)。状态机逻辑电路445可以包括存储器和/或可以耦合到至少存储与状态机逻辑电路445相关联的先前状态的存储器。电源425可以经由电源线430至少向状态机逻辑电路445供应功率(例如,电压和/或电流)。
驱动器450可以从状态机逻辑电路445接收当前状态,基于当前状态生成数据信号dA、dB和dC,并且分别通过线420A、420B和420C发送数据信号dA、dB和dC。在一些情况下,状态机逻辑电路445可以向驱动器450提供传输比特A、B和C,并且驱动器450可以根据需要将传输比特A、B和/或C驱动到适当信号电平以通过线420A-420C进行传输。在实施例中,对于给定编码方案的从先前状态到当前状态的转换可以导致驱动器450改变仅与数据信号dA、dB和dC的子集相关联的信号电平,而与一个或者多个剩余数据信号相关联的信号电平由驱动器450维持(例如,该一个或者多个剩余数据信号跨多个连续的时钟周期具有相同的信号电平)。关于图2描述了由编码电路108执行的编码方案的示例。关于图3描述了与编码电路410的操作相关联的信号图的示例。关于图2和图3中提供的示例,对于任何转换,驱动器450可以差分地转换三个数据信号中的两个数据信号,并且保留第三数据信号不变。在实施例中,编码电路410可以是图1的编码电路108、可以包括图1的编码电路108或者可以是图1的编码电路108的一部分。
电源435可以经由电源线440至少向驱动器450供应功率(例如,电压和/或电流)。在一个方面,电源线440可以提供电源435向其提供功率的一条或者多条公共电源线。在实施例中,电源435和电源线440可以分别是图1的电源122和电源线128、可以分别包括图1的电源122和电源线128或者可以分别是图1的电源122和电源线128的一部分。在一些实施例中,本文描述的编码方案和相关解码方案可以用于缓解/抑制与可能遭受侧信道攻击的电源线440(和/或其他类似电源线)相关联的信息泄漏。在一些情况下,电源425通常是与比电源435低的电压相关联的不同的片上电源的一部分。电源425可以具有用于处理器核晶体管而不是输入/输出(I/O)驱动器的较低电压。注意,电源线430和/或440可以向图4中的其他电路装置和/或图4中未示出的其他电路装置提供功率,和/或图4中未示出的其他电源和相关联的电源线可以用于向图4中的其他电路装置提供功率。
解码电路415包括接收器455(例如,也称为接收器电路)和状态机逻辑电路460。对于由编码电路410编码的任何给定比特,解码电路415的接收器455可以经由线420A-420C接收数据信号dA、dB和dC,并且确定与数据信号dA、dB和dC相关联的当前状态(例如,传输比特)。状态机逻辑电路460可以从接收器455接收当前状态(或指示当前状态的信息),并且可以确定导致从先前状态转换到当前状态的比特的值。状态机逻辑电路460可以包括存储器和/或可以耦合到至少存储与状态机逻辑电路460相关联的先前状态的存储器。状态机逻辑电路460可以将该比特作为输出数据流的一部分提供给状态机逻辑电路460下游的可以利用输出数据流的一个或多个组件。虽然图4中未示出,但是解码电路415也可以根据时钟信号进行操作。在一些方面,为了促进编码和解码,解码电路415的时钟信号可以与关联于编码电路410的时钟信号clk同步,和/或具有与关联于编码电路410的时钟信号clk相同的时钟频率(例如,以避免数据丢失)。在一些情况下,系统时钟速率的差异(例如,在较高频率处使能分组突发)可以作为安全系统块405的一部分进行调整和/或在输出数据流处进行后处理。
图5A示出了根据本公开的一个或多个实施例的用于促进信息泄漏缓解的示例编码过程500的流程图。出于解释的目的,本文参考图1的网络环境102来描述示例编码过程500,尽管示例编码过程500可以用于其他网络环境。注意,可以根据需要,组合、省略和/或以不同的次序执行一个或多个操作。
在框505处,编码电路108接收输入比特流的比特。作为一个示例,输入比特流可以包括与密钥交换、软件修订和/或个人数据相关联的数据。在框510处,编码电路108基于接收到的比特和先前的数据信号dA,prev、dB,prev和dC,prev集合来生成当前的数据信号dA、dB和dC集合。在一些情况下,编码电路108可以基于其先前状态(对应于传输比特Aprev、Bprev和Cprev)和接收到的比特,来确定其当前状态(对应于传输比特A、B和C),并且将当前状态变换/转变到具有适当信号电平(例如,CMOS电平)的当前的数据信号dA、dB和dC集合。在一些实施例中,通过使用这样一种编码方案,在该编码方案中,对于每个接收到的输入数据比特(例如,不管该比特是0还是1)都发生状态转换,并且每个状态与处于第一逻辑电平的预定数目的一个或者多个比特和处于第二逻辑电平的预定数目的一个或者多个传输比特相关联,从系统功率总线(其可能被攻击者监测)的角度来看,每一次转换都给出相同的结果(例如,双线差分转换并且第三条线保持静态),因此对于每个转换(例如,不管状态、状态转换和输入比特如何),在功率总线上都不存在数据信息(例如,或等效地,相同信息)。在一些情况下,每个时钟周期都与单次状态转换和对单个比特进行编码相关联。
在框515处,编码电路108分别通过线118A、118B和118C发送当前的数据信号dA、dB和dC集合。在框520处,编码电路108存储对当前的数据信号dA、dB和dC集合的指示。例如,编码电路108可以存储传输比特A、B和C。编码电路108可以将当前集合存储在编码电路108的存储器中和/或者存储在耦合到编码电路108的存储器中。在框525处,编码电路108将当前的数据信号dA、dB和dC集合设置为先前的数据信号dA,prev、dB,prev和dC,prev集合,以用于处理输入比特流的下一比特。在框530处,编码电路108执行框505、510、515、520和525,直到比特流的所有比特都被处理。
图5B示出了根据本公开的一个或多个实施例的示例解码过程550的流程图。出于解释的目的,本文参考图1的网络环境102来描述示例解码过程550,尽管示例解码过程550可以用于其他网络环境。此外,出于解释的目的,示例解码过程550用于对根据图5A的示例编码过程500进行编码的数据进行解码。注意,根据需要,可以组合、省略和/或以不同的次序执行一个或多个操作。
在框555处,解码电路112分别通过线118A、118B和118C来接收与比特流的比特相关联的当前的数据信号dA、dB和dC集合。在框560处,解码电路112基于当前的数据信号dA、dB和dC集合以及先前的数据信号dA,prev、dB,prev和dC,prev集合来确定当前比特。在一些情况下,解码电路112可以将当前的数据信号dA、dB和dC集合变换/转变到对应的传输比特A、B和C以获得其当前状态,并且基于其当前状态和其先前状态(对应于传输比特Aprev、Bprev和Cprev)来确定当前比特。解码电路112可以将解码电路112的状态存储在解码电路112的存储器中和/或存储在耦合到解码电路112的存储器中。在一些情况下,每个时钟周期都与单个比特的解码相关联。
在框565处,解码电路112存储对当前的数据信号dA、dB和dC集合的指示。例如,解码电路112可以存储传输比特A、B和C。在框570处,解码电路112将当前的数据信号dA、dB和dC集合设置为先前的数据信号dA,prev、dB,prev和dC,prev集合,以用于处理通过线118A-118C接收到的下一数据信号集合(例如,与编码器侧的下一时钟周期相关联)。在框575处,解码电路112执行框555、560、565和570,直到比特流的所有比特都被处理。
图6A示出了根据本公开的一个或多个实施例的用于促进信息泄漏缓解的示例编码过程600的流程图。出于解释的目的,本文参考图1的网络环境102来描述示例编码过程600,尽管示例编码过程600可以用于其他网络环境。注意,根据需要,可以组合、省略和/或以不同的次序执行一个或多个操作。在一些方面,编码过程可以包括来自图5A的示例编码过程500的一个或多个操作和/或来自图6A的示例编码过程600的一个或多个操作。
在框605处,编码电路108接收输入比特流的比特。在框610处,编码电路108基于(例如,响应于)接收到的比特,从先前状态(例如,与传输比特Aprev、Bprev和Cprev相关联,或等效地,与数据信号dA,prev、dB,prev和dC,prev相关联)转换到当前状态(例如,与传输比特A、B和C相关联,或等效地,与数据信号dA、dB和dC相关联)。在框615处,编码电路108基于(例如,根据)当前状态,将数据信号dA、dB和dC当中的数据信号的差分对进行反相。在这点上,响应于该转换,编码电路108可以确定数据信号dA、dB和dC,并且从数据信号dA、dB和dC当中标识基于当前状态进行反相的适当差分对。可以将该差分对进行反相,以获得差分地反相/转换的信号对。在框620处,编码电路108维持数据信号dA、dB和dC中的剩余信号。在框625处,反相的差分对和剩余的数据信号通过线118A-118C被发送。作为示例,参考图2,如果先前状态是001并且接收到的比特D=1,则当前状态是010。编码电路108可以基于先前状态001和当前状态010来确定/标识数据信号dB,prev和dC,prev形成要被反相的差分对并且数据信号dA,prev将被维持。分别在线118B和118C上的数据信号dB,prev和dC,prev响应于状态转换而各自被反相,以分别在线118B和118C上提供数据信号dB和dC。线118A上的数据信号dA,prev响应于状态转换而在线118A上被维持,以在线118A上提供数据信号dA。
在框630处,编码电路108存储当前状态的指示。编码电路108可以将当前状态存储在编码电路108的存储器中和/或存储在耦合到编码电路108的存储器中。在一些情况下,可以存储传输比特A、B和C来表示当前状态。在框635处,编码电路108将当前状态设置为先前状态,以用于处理输入比特流的下一比特。在框640处,编码电路108执行框605、610、615、620、625、630和635,直到比特流的所有比特都被处理。在这点上,基于每个输入比特,编码电路108可以根据输入比特而在两个状态之间转换(例如,在框610处),并且根据相关联的状态转换而改变或维持线118A-118C上的数据信号(例如,在框615处和框620处),以在线118A-118C上提供数据信号(例如,在框625处)。在一些实施例中,为了促进信息泄漏缓解,任何两个状态之间的转换都与来自电源122的标称相同/基本相同的功率相关联,该标称相同/基本相同的功率用于将差分对(例如,在框615处)进行反相,诸如图3中的信号图325所示。
图6B示出了根据本公开的一个或多个实施例的示例解码过程650的流程图。出于解释的目的,本文参考图1的网络环境102来描述示例解码过程650,尽管示例解码过程650可以用于其他网络环境。此外,出于解释的目的,示例解码过程650用于对根据图6的示例编码过程600进行编码的数据进行解码。注意,根据需要,可以组合、省略和/或以不同的次序执行一个或多个操作。在一些方面,解码过程可以包括来自图5B的示例解码过程550的一个或多个操作和/或来自图6B的示例编码过程650的一个或多个操作。
在框655处,解码电路112分别通过线118A、118B和118C接收与比特流的比特相关联的当前的数据信号dA、dB和dC集合。在框660处,解码电路112基于(例如,响应于)当前的数据信号集合,从先前状态(例如,与传输比特Aprev、Bprev和Cprev相关联,或等效地,与数据信号dA,prev、dB,prev和dC,prev相关联)转换到当前状态(例如,与传输比特A、B和C相关联,或等效地,与数据信号dA、dB和dC相关联)。在框665处,解码电路112基于先前状态和当前状态来确定当前比特。在框670处,解码电路112存储当前状态的指示。在一些情况下,可以存储传输比特A、B和C来表示当前状态。在框675处,解码电路112将当前状态设置为先前状态,以用于处理通过线118A-118C接收到的下一数据信号集合(例如,与编码器侧的下一时钟周期相关联)。在框680处,解码电路112执行框655、660、665、670和675,直到比特流的所有比特都被处理。在一些情况下,解码电路112的每个时钟周期都与对当前的数据信号集合进行解码以获得单个比特相关联。注意,解码电路112的时钟周期可以与编码电路108的时钟周期相同或不同。
本文提供的技术可以用于促进有线通信(诸如芯片间通信、设备间通信、芯片内通信、设备内通信和/或一般的任何有线通信)中的信息泄漏缓解,只要利用具有适当信号电平的信号使得信号可以穿过期望的线距离/长度。在一些实施例中,技术可以用于可编程逻辑器件以促进信息泄漏缓解。可以选择性地对可编程逻辑器件的布线资源进行编程,以实现组件之间期望的数据通信路线。在一些方面,可以对布线资源进行编程,以实现用于发送比特流、时钟信号、数据信号(例如,dA、dB和dC)和/或其他数据的线。
图7示出了根据本公开的一个或多个实施例的可编程逻辑器件(PLD)700的框图。在一些实施例中,编码电路108、解码电路112、安全系统块405、编码电路410和/或解码电路415可以被实现在PLD 700中。在各种实施例中,例如,PLD 700可以被实现为独立设备,或者可以被嵌入到片上系统(system on a chip,SOC)、其他逻辑器件和/或其他一个或多个集成电路中。PLD 700(例如,现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、现场可编程片上系统(FPSC)或其他类型的可编程器件)通常包括I/O块702和逻辑块704(例如,也称为可编程逻辑块(PLB)、可编程功能单元(PFU)或可编程逻辑单元(PLC))。在一些情况下,PLD 700通常可以是具有分布式配置的任何类型的可编程器件(例如,可编程集成电路),这可以涉及:通过引脚加载配置数据,移动到相关联的构造中的适当位置,以及对配置存储器单元进行配置。PLB也可以被称为逻辑块、PFU或PLC。在一个方面,PLB 704可以共同形成PLD700的集成电路(IC)核或逻辑核。I/O块702为PLD 700提供I/O功能(例如,以支持一个或多个I/O和/或存储器接口标准),而PLB 704为PLD 700提供逻辑功能(例如,基于LUT的逻辑)。串行化器/解串行化器(SERDES)块750和物理译码子层(PCS)块752可以提供附加的I/O功能。PLD 700还可以包括硬IP核块760以提供附加的功能(例如,在硬件中提供的可以用比PLB 704少的编程来配置的基本上预定的功能)。
PLD 700可以适当地包括存储器706的块(例如,可擦除可编程只读存储器(EEPROM)的块、静态RAM(SRAM)的块和/或闪存)、时钟相关电路708(例如,时钟源、锁相环(PLL)电路、延迟锁定环(DLL)电路和/或馈线互连)和/或各种布线资源780(例如,互连和适当的开关电路,用以提供用于在整个PLD 700中对信号(诸如时钟信号、数据信号、控制信号等)进行布线的路径)。一般来说,PLD 700的各种元件可以用于执行它们针对期望应用的预期功能,如本领域技术人员所可以理解的。
例如,I/O块702中的某些块可以用于对存储器706进行编程或者向/从PLD 700传递信息(例如,各种类型的用户数据和/或控制信号)。I/O块702中的其他块包括第一编程端口(其可以表示中央处理单元(CPU)端口、外围数据端口、串行外围接口(SPI)接口和/或sysCONFIG编程端口)和/或第二编程端口(诸如联合测试行动组(JTAG)端口)(例如,通过采用诸如电气和电子工程师协会(IEEE)1149.1或1532标准之类的标准)。在各种实施例中,可以包括I/O块702,以接收配置数据和命令(例如,通过一个或多个连接)来配置PLD 700用于其预期用途,并且适当地支持串行或并行设备配置以及与SERDES块750、PCS块752、硬IP块760和/或PLB 704的信息传递。在另一示例中,布线资源780可以用于对组件之间(诸如逻辑块704的I/O节点之间)的连接进行布线。在一些实施例中,这种布线资源可以包括可编程元件(例如,多个布线资源相交的节点),可编程元件可以用于选择性地形成用于PLD 700的组件之间或者PLD 700与外部设备之间的特定连接的信号路径以用于传输/传送数据(例如,通过使用适当编程的I/O块702)。在一些实施例中,可以对PLD 700进行编程,以提供或促进PLD 700内和/或与其他设备的编码功能、解码功能和/或通信功能。在一些实施例中,可以对布线资源780进行编程,以实现用于向编码电路(例如,图1的编码电路108)传送数据的线、用于向编码电路传送时钟信号的线、用于从编码电路向解码电路(例如,图1的解码电路112)传送数据的线(例如,线路118A-118C)和/或其他线。
应当理解,各种元件的数目和放置不是限制性的,并且可以取决于期望的应用。例如,对于期望的应用或设计规范(例如,对于所选择的可编程器件类型),可能不需要各种元件。此外,应当理解,为了清楚起见,元件以框的形式示出,并且各种元件通常将分布在整个PLD 700中(诸如在PLB 704、硬IP块760和布线资源780中以及在PLB 704、硬IP块760和布线资源780之间),以执行它们的常规功能(例如,存储对PLD 700进行配置的配置数据或在PLD700内提供互连结构)。例如,布线资源780可以用于每个PLB 704内和/或不同PLB 704之间的内部连接。还应理解,本文公开的各种实施例不限于可编程逻辑器件(诸如PLD 700),并且可以应用于各种其他类型的可编程器件,如本领域技术人员所可以理解的。
外部系统730可以用于创建PLD 700的期望用户配置或设计,并且生成对应的配置数据以对PLD 700进行编程(例如,配置)。例如,为了配置PLD 700,系统730可以向I/O块702、PLB 704、SERDES块750和/或PLD 700的其他部分中的一者或多者提供这种配置数据。在这点上,外部系统730可以包括连接到PLD 700的编程端口(例如,SPI、JTAG)的链路740,以促进将配置数据从外部系统730传递到PLD 700。结果,I/O块702、PLB 704、各种布线资源780和PLD 700的任何其他适当组件可以被配置为根据用户指定的应用进行操作。
在所示实施例中,系统730被实现为计算机系统。在这点上,系统730包括例如一个或多个处理器732,该一个或多个处理器732可以被配置为执行在一个或多个存储器734中提供的和/或以非暂态的形式存储在一个或多个非暂态机器可读介质736(例如,其可以在系统730的内部或外部)中的指令,诸如软件指令。例如,在一些实施例中,系统730可以运行PLD配置软件(诸如可从莱迪思半导体公司获得的Lattice Diamond System Planner软件),以准许用户创建期望的配置并且生成对应的配置数据以对PLD 700进行编程。在这点上,在一些情况下,系统730和/或其他外部/远程系统可以用于(例如,通过网络)对一个或多个PLD(诸如PLD 700)进行工厂编程(factory programming)或远程编程(例如,远程更新)。
配置数据可以被替代地或附加地存储在PLD 700上(例如,存储在位于PLD 700内的存储器中)和/或被存储在包括PLD 700和分离/分立存储器的系统(例如,PLD 700在其中进行操作的系统)的分离/分立存储器上。在一些实施例中,PLD 700的存储器706可以包括用于存储由外部系统730生成并提供给存储器706的配置数据的非易失性存储器(例如,闪存)。在PLD 700的配置期间,非易失性存储器可以经由配置路径和相关联的数据线路来提供配置数据,以配置PLD 700的各个部分(例如,I/O块702、PLB 704、SERDES块750、布线资源780和/或其他部分)。在一些情况下,配置数据可以被存储在PLD 700外部的非易失性存储器中(例如,在外部硬盘驱动器(诸如系统730中的存储器734)上)。在配置期间,可以将配置数据从外部非易失性存储器提供(例如,加载)到PLD 700中以配置PLD 700。
系统730还包括:例如,用以向用户显示信息的用户接口735(例如,屏幕或显示器),以及用以接收用户命令或设计输入以准备PLD 700的期望配置的一个或多个用户输入设备737(例如,键盘、鼠标、轨迹球、触摸屏和/或其他设备)。在一些实施例中,例如,用户接口735可以被适配为显示网表、组件放置、连接布线、硬件描述语言(HDL)代码和/或期望的电路设计的其他最终表示和/或中间表示。
图8示出了根据本公开的一个或多个实施例的PLD 700的逻辑块704的框图。如所讨论的,PLD 700包括多个逻辑块704,逻辑块704包括各种组件以提供逻辑功能和算术功能。在图8所示的示例实施例中,逻辑块704包括多个逻辑单元800,多个逻辑单元800可以在逻辑块704内进行内部互连和/或使用布线资源780进行外部互连。例如,每个逻辑单元800可以包括各种组件,诸如:查找表(LUT)802、模式逻辑电路804、寄存器806(例如,触发器或锁存器)和各种可编程复用器(例如,可编程复用器812和814),以用于为逻辑单元800和/或在逻辑单元800之间选择期望的信号路径。在该示例中,LUT 802接受四个输入820A-820D,这使其成为可以通过PLD 700的配置数据进行编程以实现具有四个或更少输入的任何适当的逻辑运算的四输入LUT(其可以被缩写为“4-LUT”或“LUT4”)。模式逻辑804可以包括各种逻辑元件和/或附加输入(诸如输入820E),以支持逻辑单元800的各种模式的功能(例如,包括各种处理模式和/或功能模式)。对于PLD的特定实现方式,其他示例中的LUT 802可以是具有任何其他合适数目的输入的任何其他合适的大小。在一些实施例中,可以为不同的逻辑块704和/或不同的逻辑单元800提供不同大小的LUT。
在一些实施例中,来自LUT 802和/或模式逻辑804的输出信号822可以通过寄存器806被传递,以提供逻辑单元800的输出信号833。在各种实施例中,来自LUT 802和/或模式逻辑804的输出信号823可以被直接传递到输出823,如图所示。取决于多路复用器810-814和/或模式逻辑804的配置,输出信号822可以根据控制信号830而被临时存储(例如,锁存)在寄存器806中。在一些实施例中,PLD 700的配置数据可以将逻辑单元800的输出823和/或833配置为以分级或级联布置(例如,包括多个级别)提供的另一逻辑单元800(例如,在另一逻辑块或同一逻辑块中)的一个或多个输入,以配置不能在单个逻辑单元800中实现的逻辑和/或其他操作(例如,具有太多输入而不能由单个LUT 802实现的操作)。此外,可以用多个输出和/或互连来实现逻辑单元800,以促进可选择的操作模式。
模式逻辑电路804可以用于PLD 700的一些配置,以有效地实现算术运算(诸如加法器、减法器、比较器、计数器或其他运算),以有效地形成一些扩展逻辑运算(例如,对多比特数据进行操作的高阶LUT),以有效地实现相对较小的RAM,和/或以允许在逻辑、算术、扩展逻辑和/或其他可选择的操作模式之间进行选择。在这点上,跨多个逻辑单元802的模式逻辑电路804可以被链接在一起,以在相邻的逻辑单元802之间传递进位输入信号805和进位输出信号807和/或其他信号(例如,输出信号822)。在图8的示例中,例如,进位输入信号805可以被直接地传递到模式逻辑电路804,或者可以通过配置一个或多个可编程复用器而被传递到模式逻辑电路804。在一些情况下,模式逻辑电路804可以跨多个逻辑块704进行链接。
图8所示的逻辑单元800仅仅是示例,并且根据不同实施例的逻辑单元800可以包括不同组合和布置的PLD组件。此外,尽管图8示出了具有八个逻辑单元800的逻辑块704,但是根据其他实施例的逻辑块704可以包括更少的逻辑单元800或更多的逻辑单元800。逻辑块704中的每个逻辑单元800可以用于实现由PLD 700实现的用户设计的一部分。在这点上,PLD 700可以包括许多逻辑块704,每个逻辑块704可以包括用于共同实现用户设计的逻辑单元800和/或其他组件。
图9示出了根据本公开的一个或多个实施例的PLD的设计过程900。例如,图9的过程可以由运行Lattice Diamond软件的系统730来执行以配置PLD 700。在一些实施例中,图9中引用的各种文件和信息可以被存储在例如存储器734、机器可读介质736和/或其他存储装置中的一个或多个数据库和/或其他数据结构中。
在操作905中,系统730接收指定PLD 700的期望功能的用户设计。例如,用户可以与系统730进行(例如,通过用户输入设备737和表示设计的硬件描述语言(HDL)代码)以标识用户设计的各种特征(例如,高级逻辑运算、硬件配置、I/O和/或SERDES操作、和/或其他特征)。在一些实施例中,用户设计可以在RTL描述(例如,门级别描述)中提供。系统730可以执行一个或多个规则检查以确认用户设计描述了PLD 700的有效配置。例如,系统730可以适当地拒绝无效的配置和/或请求用户提供新的设计信息。
在操作910中,系统730对设计进行合成以创建网表(例如,合成的RTL描述),网表将用户设计的抽象逻辑实现标识为多个逻辑组件(例如,也称为网表组件)。在一些实施例中,网表可以以电子设计交换格式(EDIF)被存储在本地通用数据库(NGD)文件中。
在一些实施例中,在操作910中将设计合成到网表中可以涉及将对用户设计中的逻辑运算、硬件配置和/或其他特征的高级描述变换(例如,转变)成PLD组件(例如,逻辑块704、逻辑单元800和PLD 700的被配置用于实现用户设计的逻辑、算术或其他硬件功能的其他组件)及其相关互连或信号的集合。取决于实施例,转换后的用户设计可以被表示为网表。
在一些实施例中,在操作910中将设计合成到网表中还可以涉及对用户设计(例如,被变换/转变成PLD组件及其相关互连或信号的集合的用户设计)执行优化过程,以减少传播延迟、减少PLD资源和布线资源的消耗,和/或以其他方式在被配置为实现用户设计时优化PLD的性能。取决于实施例,优化过程可以在表示变换/转变后的用户设计的网表上执行。取决于实施例,优化过程可以以网表表示优化的用户设计(例如,以产生优化的网表)。
在一些实施例中,优化过程可以包括优化在用户设计中标识的布线连接。例如,优化过程可以包括在用户设计中检测具有定时误差的连接,以及互换和/或调整实现无效连接和/或其他连接的PLD资源,以减少用于实现连接的PLD组件和/或布线资源的数目和/或减少与连接相关联的传播延迟。在一些情况下,布线距离可以基于定时来确定。
在操作915中,系统730执行映射过程,映射过程标识可以用于实现用户设计的PLD700的组件。在这点上,系统730可以将优化的网表(例如,作为优化过程的结果在操作910中存储的网表)映射到由PLD 700提供的各种类型的组件(例如,逻辑块704、逻辑单元800、嵌入式硬件和/或PLD 700的其他部分)及其相关联的信号(例如,以逻辑方式,但是还没有指定放置或布线)。在一些实施例中,映射可以在一个或多个先前存储的NGD文件上执行,其中映射结果被存储为物理设计文件(例如,也称为NCD文件)。在一些实施例中,映射过程可以作为操作910中的合成过程的一部分来执行,以产生被映射到PLD组件的网表。
在操作920中,系统730执行放置过程以将被映射的网表组件分配给驻留在PLD700的具体物理位置处的特定物理组件(例如,分配给PLD 700的特定的逻辑单元800、逻辑块704、时钟相关电路708、布线资源780和/或其他物理组件),因此确定PLD 700的布局。在一些实施例中,可以在存储器中对例如从一个或多个先前存储的NCD文件中取回的数据和/或对一个或多个先前存储的NCD文件执行放置,其中放置结果作为另一物理设计文件而存储(例如,在存储器734和/或机器可读介质736中)。
在操作925中,系统730执行布线过程,以基于在操作920中确定的放置布局而在PLD 700的组件之间对连接进行布线(例如,使用布线资源780),以实现放置的组件之间的物理互连。在一些实施例中,可以在存储器中对例如从一个或多个先前存储的NCD文件中取回的数据和/或对一个或多个先前存储的NCD文件执行布线,其中布线结果作为另一物理设计文件而存储(例如,在存储器734和/或机器可读介质736中)。
在各种实施例中,在操作925中对连接进行布线还可以包括对用户设计执行优化过程,以减少传播延迟、减少PLD资源和/或布线资源的消耗,和/或在以其他方式被配置为实现用户设计时优化PLD的性能。在一些实施例中,优化过程可以在表示变换/转换后的用户设计的物理设计文件上执行,并且优化过程可以以物理设计文件表示优化的用户设计(例如,以产生优化的物理设计文件)。
布线中的变化可以被传播回之前的操作(诸如合成、映射和/或放置),以进一步优化用户设计的各个方面。
因此,在操作925之后,可以提供一个或多个物理设计文件,其指定了在已经针对PLD 700进行合成(例如,变换和优化)、映射、放置和布线(例如,进一步优化)之后的用户设计(例如,通过组合对应的先前操作的结果)。在操作930中,系统730针对经合成、映射、放置和布线的用户设计生成配置数据。在操作940中,系统730通过例如在连接740上将配置数据比特流加载到PLD 700中来用配置数据对PLD 700进行配置/编程。
图10示出了根据本公开的一个或多个实施例的包括PLD 1005的设备1000的框图。设备1000包括电源1010和促进设备1000的操作的一个或多个组件,诸如PLD 1005、通信模块1015和其他设备模块1020,以例如促进PLD 1005的管理或促进设备应用。在各种实施例中,设备1000可以被实现为智能电话、膝上型计算机、平板计算机、台式计算机、智能环境传感器、家庭自动化设备(例如,传感器和/或致动器)、网络管理设备、智能显示器或电视、汽车用户接口和/或其他设备。更一般地,设备1000可以被实现为嵌入式设备或可与PLD 1005集成的任何其他计算设备或电子设备。在一些实施例中,经由线在设备1000的一个或多个组件之间提供的数据可以利用本文描述的编码方案,诸如图2所示的编码方案。
如图10所示,电源1010可以通过功率总线1025向设备1000的各种组件提供一个或多个电源电压。例如,电源1010可以被实现为电池或电池组,例如,具有集成的充电和监测电子设备的电池或电池组。在其他实施例中,电源1010可以接收电网功率或其他外部功率,并且包括各种功率调节、调整和/或变换组件,以使用一条或多条功率总线1025为设备1000的每个组件提供适当的操作电压。功率总线1025可以包括一条或多条导电线和/或迹线,以将这种电源电压传达到各种组件,如图所示,并且在一些实施例中,可以包括信号发送迹线,以发送和接收促进电源1010、设备1000和/或设备1000的各种组件的操作的逻辑信号/数据。在一些实施例中,电源1010可以用于根据本文描述的编码方案(诸如图2所示的编码方案)对线路进行充电和放电。
PLD 1005可以由与关于图7的PLD 700所描述的组件类似的组件来实现,但是其具有附加的被配置为在特定的计算应用和/或架构内促进与PLD 1005的操作和/或通信的可配置IP元件和/或硬IP元件。如图10所示的实施例所示,PLD 1005可以包括通过各种总线链接到非易失性存储器(NVM)1035、可编程I/O 1040和/或其他IC模块1045的PLD构造(fabric)1030,NVM 1035、可编程I/O 1040和/或其他IC模块1045都可以被实现在单片IC上。一般来说,PLD构造1030可以由关于PLD 700所描述的各种组件中的任何组件来实现,并且可以使用与关于图9所描述的设计过程900类似的设计过程来配置,以根据期望的配置来生成PLD构造1030并对PLD构造1030进行编程。在一些情况下,PLD 1005可以被配置为使用图10中所标识的各种硬IP元件来(例如,在根据接收到的配置对PLD构造1030进行编程之前)接收、解密、认证和/或验证接收到的配置,或者以其他方式与PLD 1005的管理系统进行通信。
NVM 1035可以被实现为硬IP资源,其被配置为提供对用于促进PLD 1005的操作的数据的可保全的非易失性存储。NVM 1035可以包括多个有区别的扇区,诸如一个或多个配置映像扇区、设备密钥扇区(例如,AES密钥扇区和分离的公钥/密钥对扇区)、UFM扇区和/或其他定义的存储扇区。例如,配置映像扇区可以各自存储PLD构造1030的配置,以便允许它们被选择(例如,基于版本或日期)并且用于对PLD构造1030进行编程。例如,trim扇区可以用于存储制造商trim、设备标识符、设备类别标识符和/或特定于PLD 1005的其他数据,诸如可修改的客户特定的订购零件号和/或生成的客户ID号。设备密钥扇区可以用于存储加密/解密密钥、公钥/私钥和/或特定于PLD 1005的其他安全密钥。UFM扇区可以用于存储通常可由PLD构造1030访问的用户数据,诸如配置或应用特定的安全密钥、证书和/或其他安全用户数据。NVM 1035的任何一个或多个单独的元件、部分或扇区可以被实现为可配置的存储器。
可编程I/O 1040可以被实现为至少部分可配置的资源和/或硬IP资源,其被配置为例如跨总线1050(例如,被配置为将PLD构造1030的部分链接到可编程I/O 1040、NVM1035和/或PLD的其他元件的内部通信总线和/或集成通信总线)并根据一个或多个外部总线接口和/或协议,来提供或支持PLD构造1030与外部控制器、存储器和/或其他设备(诸如通信模块1015)之间的通信链路。可编程I/O 1040还可以被配置为支持跨总线1050的PLD构造1030和/或NVM 1035之间的通信和/或外部总线接口/协议1055与通信模块1015和/或设备1000的其他元件(例如,作为外部系统730/机器可读介质736的补充或替代的)之间的通信,如本文所述的。在一些实施例中,总线1050和/或可编程I/O 1040可以与PLD构造1030集成在一起。更一般地,PLD 1005的在图10中被示为分离的一个或多个组件可以与彼此集成和/或在彼此内集成。
其他IC模块1045可以被实现为被配置为促进PLD 1005的操作的硬IP资源和/或可配置IP资源。例如,其他IC模块1045可以包括被实现为硬IP资源的安全引擎,安全引擎被配置为提供由PLD构造1030和/或设备1000使用的各种安全功能。其他IC模块1045还可以包括被实现为硬IP资源的配置引擎,配置引擎被配置为管理PLD 1005的各种组件的配置和/或其间的通信,包括管理或控制PLD 1005的组件的配置、PLD构造1030的引导以及整个PLD1005中的流量控制。在一些实施例中,其他IC模块1045可以包括一个或多个通信模块(例如,类似于设备1000的通信模块1015),通信模块与PLD 1005集成,并且可以执行各种操作或操作子集,以形成和/或管理有线和/或无线网络上的通信链路。
在其他实施例中,其他IC模块1045可以包括例如根据JTAG、I2C、SPI和/或其他外部访问总线或协议中的一项或多项而实现的一个或多个附加的外部访问总线,该外部访问总线被配置为提供去往和/或来自通信模块1015和/或其他设备模块1020的访问。例如,尽管在图10中示为被集成为PLD 1005内的硬IP资源,但是NVM 1035或类似的附加的硬IP资源可以与设备1000集成(例如,作为其他设备模块1020),并且可以通过内部总线1050、外部总线接口/协议1055和/或这种外部访问总线或协议中的任何一者或组合(例如,由PLD构造1030和/或PLD 1005的其他元件)进行访问。
通信模块1015可以被实现为被配置以形成(例如,通过一个或多个有线和/或无线网络)到用于管理PLD 1005的操作的远程外部设备的通信链路的网络通信IC。例如,在一些实施例中,通信模块1015可以被实现为被配置为支持到通信网络的无线通信链路(例如,根据WiFi、蓝牙、Zigbee、Zwave、近场通信(NFC)、蜂窝和/或其他开放和/或专有无线通信协议而形成)的无线通信模块。在这种实施例中,通信模块1015可以被配置为管理这种无线通信链路的各种安全特征(例如,建立通信链路凭证、采用通信链路凭证来建立无线通信链路、用于在这种无线通信链路上建立的加密通信隧道的协商加密密钥,诸如传输层安全(TLS)),和/或可以被配置为由PLD 1005和/或其他设备模块1020来控制以管理这种安全特征。PLD 1005可以被配置为通过外部总线接口/协议1055和/或由PLD 1005和/或设备1000实现的其他外部总线接口/协议来控制通信模块1015的操作,以接替由设备1000以其他方式进行的控制。
例如,其他设备模块1020可以包括被配置为实现设备应用(诸如远程传感器应用、远程控制器应用和/或远程计算应用)的各种计算元件、传感器元件和/或致动器元件。其他主机模块1020还可以包括各种其他通信总线、功率存储和输送元件、用户接口(例如,按钮、键盘、鼠标、触控板和/或显示器/触摸屏显示器),以支持这种主机设备应用。
在适用的情况下,本公开提供的各种实施例可以使用硬件、软件或者硬件和软件的组合来实现。同样在适用的情况下,可以将本文阐述的各种硬件组件和/或软件组件组合成包括软件、硬件和/或两者的复合组件,而不脱离本公开的精神。在适用的情况下,可以将本文阐述的各种硬件组件和/或软件组件分成包括软件、硬件或两者的子组件,而不脱离本公开的精神。此外,在适用的情况下,设想软件组件可以被实现为硬件组件,反之亦然。
根据本公开的软件(诸如程序代码和/或数据)可以被存储在一个或多个非暂时性机器可读介质上。还设想可以使用联网的和/或其他方式的一个或多个通用或专用计算机和/或计算机系统来实现本文标识的软件。在适用的情况下,可以将本文描述的各种步骤的排序改变、组合成复合步骤和/或分成子步骤以提供本文描述的特征。
上述实施例示出了本发明,但不限制本发明。还应理解,根据本发明的原理,许多修改和变化是可能的。相应地,本发明的范围仅由以下权利要求限定。
Claims (32)
1.一种编码方法,包括:
接收比特流,所述比特流包括多个比特;
针对所述多个比特中的每个比特:
响应于所述比特,在多个状态中的两个状态之间进行转换;
响应于所述转换,将与所述比特相关联的数据信号差分对反相,以获得差分地转换的数据信号;
响应于所述转换,维持与所述比特相关联的第三数据信号;以及
通过相应的线发送所述差分地转换的数据信号和所述第三数据信号中的每个数据信号。
2.根据权利要求1所述的编码方法,其中所述多个状态中的任何两个状态之间的转换与用于所述反相的、基本相同的功率相关联。
3.根据权利要求1所述的编码方法,其中:
所述差分地转换的数据信号和所述第三数据信号中的每个数据信号与第一逻辑电平或第二逻辑电平相关联,所述第二逻辑电平与所述第一逻辑电平互补;并且
针对所述比特流中的第一比特:
与所述第一比特相关联的所述差分地转换的数据信号包括:
与所述第一比特相关联的第一数据信号和与所述第一比特相关联的第二数据信号;
所述第二数据信号与所述第一数据信号互补;
与所述第一比特相关联的所述数据信号差分对包括:与第二比特相关联的第一数据信号和与所述第二比特相关联的第二数据信号;
所述反相包括:
将第一线上的与所述第二比特相关联的所述第一数据信号反相,以在所述第一线上获得与所述第一比特相关联的所述第一数据信号;以及
将第二线上的与所述第二比特相关联的所述第二数据信号反相,以在所述第二线上获得与所述第一比特相关联的所述第二数据信号。
4.根据权利要求3所述的编码方法,其中针对所述第一比特,所述维持包括:维持第三线上的与所述第二比特相关联的所述第三数据信号,以在所述第三线上提供与所述第一比特相关联的所述第三数据信号。
5.根据权利要求3所述的编码方法,其中所述第一比特与第一时钟周期相关联,并且其中所述第二比特与第二时钟周期相关联,所述第二时钟周期在时间上与所述第一时钟周期相邻并且在所述第一时钟周期之前。
6.根据权利要求3所述的编码方法,其中:
所述第一比特与第一时钟周期相关联;
所述比特流中的第三比特与第二时钟周期相关联,所述第二时钟周期在时间上与所述第一时钟周期相邻并且在所述第一时钟周期之后;
针对所述第三比特:
响应于所述转换,从与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号当中,标识与所述第三比特相关联的数据信号差分对,并且从与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号当中,标识剩余数据信号;
所述反相包括:将与所述第三比特相关联的所述数据信号差分对反相;以及
所述维持包括:维持所述剩余数据信号。
7.根据权利要求3所述的编码方法,其中针对所述第一比特:
所述转换包括:响应于所述第一比特,从所述多个状态中的第一状态转换到所述多个状态中的第二状态;
所述方法还包括:基于所述第二状态,确定与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号;
所述第一状态关联于与所述第二比特相关联的所述第一数据信号、与所述第二比特相关联的所述第二数据信号和与所述第二比特相关联的所述第三数据信号;并且
所述第二状态关联于与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号。
8.根据权利要求7所述的编码方法,其中,针对所述比特流中的第三比特:
所述转换包括:响应于所述第三比特,从所述第二状态转换到所述多个状态中的另一状态;
基于所述另一状态,从与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号当中,标识与所述第三比特相关联的所述数据信号差分对,并且从与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号当中,标识剩余数据信号;
所述反相包括:将与所述第三比特相关联的所述数据信号差分对反相;
所述维持包括:维持所述剩余数据信号;以及
与所述第三比特相关联的所述反相和与所述第一比特相关联的所述反相关联于基本相同的功率。
9.根据权利要求3所述的编码方法,其中所述第一比特和所述第二比特与相同的逻辑电平相关联。
10.根据权利要求1所述的编码方法,其中:
所述多个状态中的每个状态与三个数据信号相关联;并且
针对所述多个状态中的每个状态,所述三个数据信号中的两个数据信号与第一逻辑电平相关联,并且所述三个数据信号中的剩余数据信号与第二逻辑电平相关联,所述第二逻辑电平与所述第一逻辑电平互补。
11.根据权利要求10所述的编码方法,其中所述第一逻辑电平为0并且所述第二逻辑电平为1,或者其中所述第一逻辑电平为1并且所述第二逻辑电平为0。
12.一种编码器,被配置为执行根据权利要求1所述的方法。
13.一种解码方法,包括:
接收多个数据信号集合;
针对每个数据信号集合:
在多个状态中的两个状态之间进行转换;以及
响应于所述转换,确定比特。
14.根据权利要求13所述的解码方法,其中所述多个状态中的两个状态之间的每次转换与从所述多个数据信号集合中的集合到所述多个数据信号集合中的另一集合的信号电平转换相关联,并且其中所述多个状态中的任何两个状态之间的转换与用于转换所述信号电平的、基本相同的功率相关联。
15.根据权利要求13所述的解码方法,其中:
所述多个状态中的每个状态与三个数据信号的集合相关联;并且
针对所述多个状态中的每个状态,所述三个数据信号中的两个数据信号与第一逻辑电平相关联,并且所述三个数据信号中的剩余数据信号与第二逻辑电平相关联,所述第二逻辑电平与所述第一逻辑电平互补。
16.根据权利要求13所述的解码方法,其中针对第一数据信号集合,所述转换包括从所述多个状态中的第一状态转换到所述多个状态中的第二状态,并且其中与所述第一集合相关联的所述比特基于所述第一状态和所述第二状态。
17.根据权利要求16所述的解码方法,其中:
所述第一数据信号集合与第一时钟周期相关联;
第二数据信号集合与第二时钟周期相关联,所述第二时钟周期在时间上与所述第一时钟周期相邻并且在所述第一时钟周期之后;并且
针对所述第二数据信号集合,所述转换包括从所述第二状态转换到所述多个状态中的另一状态,其中与所述第二数据信号集合相关联的所述比特基于所述第二状态和所述另一状态。
18.一种系统,包括:
多条线;以及
编码电路,所述编码电路被配置为:
接收比特流,所述比特流包括多个比特;
针对所述多个比特中的每个比特:
响应于所述比特,在多个状态中的两个状态之间进行转换;
响应于所述转换,将与所述比特相关联的数据信号差分对反相,以获得差分地转换的数据信号;
响应于所述转换,维持与所述比特相关联的第三数据信号;以及
通过所述多条线中的相应线,发送所述差分地转换的数据信号和所述第三数据信号中的每个数据信号。
19.根据权利要求18所述的系统,其中所述多个状态中的任何两个状态之间的转换与基本相同的功率相关联,所述基本相同的功率通过功率总线被提供给所述编码电路以用于将所述差分对反相。
20.根据权利要求19所述的系统,还包括电源,所述电源被配置为通过所述功率总线提供功率。
21.根据权利要求18所述的系统,其中:
所述差分地转换的数据信号和所述第三数据信号中的每个数据信号与第一逻辑电平或第二逻辑电平相关联,所述第二逻辑电平与所述第一逻辑电平互补;并且
针对所述比特流中的第一比特:
与所述第一比特相关联的所述差分地转换的数据信号包括:
与所述第一比特相关联的第一数据信号和与所述第一比特相关联的第二数据信号;
所述第二数据信号与所述第一数据信号互补;
与所述第一比特相关联的所述数据信号差分对包括:与第二比特相关联的第一数据信号和与所述第二比特相关联的第二数据信号;
所述编码电路被配置为通过以下操作将所述差分对反相:
将所述多条线中的第一线上的与所述第二比特相关联的所述第一数据信号反相,以在所述第一线上获得与所述第一比特相关联的所述第一数据信号;以及
将所述多条线中的第二线上的与所述第二比特相关联的所述第二数据信号反相,以在所述第二线上获得与所述第一比特相关联的所述第二数据信号。
22.根据权利要求21所述的系统,其中针对所述第一比特,所述编码电路被配置为:通过维持所述多条线中的第三线上的与所述第二比特相关联的所述第三数据信号,维持所述第三数据信号,以在所述第三线上提供与所述第一比特相关联的所述第三数据信号。
23.根据权利要求21所述的系统,其中所述第一比特与第一时钟周期相关联,并且其中所述第二比特与第二时钟周期相关联,所述第二时钟周期在时间上与所述第一时钟周期相邻并且在所述第一时钟周期之前。
24.根据权利要求21所述的系统,其中:
所述第一比特与第一时钟周期相关联;
所述比特流的第三比特与第二时钟周期相关联,所述第二时钟周期在时间上与所述第一时钟周期相邻并且在所述第一时钟周期之后;
针对所述第三比特:
响应于所述转换,从与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号当中,标识与所述第三比特相关联的所述数据信号差分对,并且从与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号当中,标识剩余数据信号;
所述反相包括:将与所述第三比特相关联的所述数据信号差分对反相;以及
所述维持包括:维持所述剩余数据信号。
25.根据权利要求21所述的系统,其中针对所述第一比特:
所述编码电路被配置为:通过响应于所述第一比特从所述多个状态中的第一状态转换到所述多个状态中的第二状态,在两个状态之间进行转换;并且
所述编码电路还被配置为:基于所述第二状态,确定与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号;
所述第一状态关联于与所述第二比特相关联的所述第一数据信号、与所述第二比特相关联的所述第二数据信号和与所述第二比特相关联的所述第三数据信号;以及
所述第二状态关联于与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号。
26.根据权利要求25所述的系统,还包括电源,其中针对所述比特流中的第三比特,所述编码电路被配置为:
响应于所述第三比特,从所述第二状态转换到所述多个状态中的另一状态;
基于所述另一状态,从与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号当中,标识与所述第三比特相关联的所述数据信号差分对,并且从与所述第一比特相关联的所述第一数据信号、与所述第一比特相关联的所述第二数据信号和与所述第一比特相关联的所述第三数据信号当中,标识剩余数据信号;
将与所述第三比特相关联的所述数据信号差分对反相;以及
维持所述剩余数据信号,
其中将与所述第三比特相关联的所述数据信号差分对反相和将与所述第一比特相关联的所述数据信号差分对反相关联于基本相同的功率。
27.根据权利要求18所述的系统,其中所述编码电路包括:
状态机逻辑电路,被配置为:针对所述多个比特中的每个比特,响应于所述比特而在所述多个状态中的两个状态之间进行转换;以及
驱动器电路,被配置为:针对所述多个比特中的每个比特:
接收与所述两个状态之间的转换相关联的指示;
基于所述指示,将与所述比特相关联的所述数据信号差分对反相;以及
基于所述指示,维持与所述比特相关联的所述第三数据信号。
28.根据权利要求18所述的系统,还包括解码电路,所述解码电路被配置为:
通过所述多条线接收多个数据信号集合;以及
针对每个数据信号集合:
响应于所述数据信号集合,在所述多个状态中的两个状态之间进行转换;以及
响应于两个状态之间的转换,确定比特。
29.根据权利要求28所述的系统,其中每个数据信号集合包括相应的数据信号差分对和相应的第三数据信号。
30.根据权利要求28所述的系统,其中所述多个状态中的两个状态之间的每次转换与从所述多个数据信号集合中的集合到所述多个数据信号集合中的另一集合的信号电平转换相关联,并且其中所述多个状态中的任何两个状态之间转换与用于转换所述信号电平的、基本相同的功率相关联。
31.根据权利要求28所述的系统,其中:
所述多个状态中的每个状态与三个数据信号的集合相关联;并且针对所述多个状态中的每个状态,所述三个数据信号中的两个数据信号与第一逻辑电平相关联,并且所述三个数据信号中的剩余数据信号与第二逻辑电平相关联,所述第二逻辑电平与所述第一逻辑电平互补。
32.根据权利要求18所述的系统,其中所述系统包括可编程逻辑器件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2021/042092 WO2023287437A1 (en) | 2021-07-16 | 2021-07-16 | Communication systems and methods |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117981268A true CN117981268A (zh) | 2024-05-03 |
Family
ID=84920377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180102392.0A Pending CN117981268A (zh) | 2021-07-16 | 2021-07-16 | 通信系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240154718A1 (zh) |
CN (1) | CN117981268A (zh) |
WO (1) | WO2023287437A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8752032B2 (en) * | 2007-02-23 | 2014-06-10 | Irdeto Canada Corporation | System and method of interlocking to protect software-mediated program and device behaviours |
US8064535B2 (en) * | 2007-03-02 | 2011-11-22 | Qualcomm Incorporated | Three phase and polarity encoded serial interface |
KR20100024255A (ko) * | 2008-08-25 | 2010-03-05 | 삼성전자주식회사 | 입출력 인터페이스 및 입출력 데이터 전송 방법 |
US9337997B2 (en) * | 2013-03-07 | 2016-05-10 | Qualcomm Incorporated | Transcoding method for multi-wire signaling that embeds clock information in transition of signal state |
US9172426B2 (en) * | 2013-03-07 | 2015-10-27 | Qualcomm Incorporated | Voltage mode driver circuit for N-phase systems |
-
2021
- 2021-07-16 WO PCT/US2021/042092 patent/WO2023287437A1/en active Application Filing
- 2021-07-16 CN CN202180102392.0A patent/CN117981268A/zh active Pending
-
2024
- 2024-01-12 US US18/412,436 patent/US20240154718A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023287437A1 (en) | 2023-01-19 |
US20240154718A1 (en) | 2024-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210083675A1 (en) | Key provisioning systems and methods for programmable logic devices | |
US7587537B1 (en) | Serializer-deserializer circuits formed from input-output circuit registers | |
TWI614607B (zh) | 用於使用資料匯流排反相的記憶體操作之記憶體裝置與方法 | |
US8294490B1 (en) | Integrated circuit and method of asynchronously routing data in an integrated circuit | |
US5952846A (en) | Method for reducing switching noise in a programmable logic device | |
US8788756B2 (en) | Circuit for and method of enabling the transfer of data by an integrated circuit | |
US8913601B1 (en) | Programmable integrated circuit and method of asynchronously routing data in a circuit block of an integrated circuit | |
US20190103873A1 (en) | Field programmable transistor arrays | |
EP1697867A1 (en) | Template-based domain-specific reconfigurable logic | |
US10382021B2 (en) | Flexible ripple mode device implementation for programmable logic devices | |
US8358148B1 (en) | Programmable integrated circuit and method of asynchronously routing data in an integrated circuit | |
US20240154718A1 (en) | Communication systems and methods | |
CN114144763A (zh) | 用于可编程逻辑器件的远程编程系统和方法 | |
US9672307B2 (en) | Clock placement for programmable logic devices | |
US11907033B2 (en) | Adaptive power-on-reset generator systems and methods for programmable logic devices | |
WO2009107309A1 (ja) | 半導体装置 | |
US20080265955A1 (en) | Synchronization circuit and method | |
CN115428340B (zh) | 用于可编程逻辑器件的输入/输出总线保护系统和方法 | |
US20230216503A1 (en) | Programmable look-up table systems and methods | |
US7397726B1 (en) | Flexible RAM clock enable | |
US20240187001A1 (en) | Cryptographic hardware sharing systems and methods | |
EP3791305A1 (en) | Key provisioning systems and methods for programmable logic devices | |
US20050120155A1 (en) | Multi-bus I2C system | |
US20230126961A1 (en) | Systems And Methods For Securing Input/Output Data | |
US20240185908A1 (en) | Dual power supplied memory cells and deterministic reset thereof for programmable logic devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |