一种减少总线耦合翻转的编解码装置的制作方法

文档序号:13744854阅读:218来源:国知局

本发明涉及一种减少片上总线耦合翻转的编解码装置,属于片上系统低功耗设计技术领域。



背景技术:

随着半导体工艺技术的发展,片上系统(systemonchip,SoC)芯片的性能和集成度都得到了很大的提升,由此带来的功耗问题也变得很突出。片上总线作为连接SoC中各个子系统的关键部件,由于具有数据位宽高、物理路径长并且访问频繁的特点而成为了系统功耗的重要来源。在深亚微米工艺下,总线的耦合翻转产生的功耗占据了总线功耗的主导地位。

低功耗总线编码技术可用于降低片上总线的耦合翻转功耗。总线编码技术对总线上需要传输的数据进行编码,减少总线上前后两次数据传输时耦合翻转所带来的功耗,其基本结构如图1所示。

在现有的技术中,中国专利201010144090.3公布了一种抑制总线串扰的自适应时间编解码方法,该方法可以降低总线的耦合翻转功耗。它的工作原理是:对总线当前时刻需要传输的数据是否会引起最坏情况耦合翻转进行判断,并生成相应的标志信号;对于没有引起最坏情况耦合翻转的数据,编码器将该数据直接发送到总线上;对于引起最坏情况耦合翻转的数据,编码器先将该数据的奇数位数据发送到总线上,下一时刻再将该数据发送到总线上。该方法可以消除最坏情况耦合翻转,降低了总线的功耗。但是,该方法存在如下不足:(1)对于引起最坏情况耦合翻转的数据,总线需要两个时钟周期来发送该数据,降低了总线的传输性能;(2)对于降低总线功耗而言,该方法只考虑了总线数据最坏情况耦合翻转的情况,而没有综合考虑总线数据整体耦合翻转的情况。



技术实现要素:

本发明所要解决的技术问题是提出一种减少总线耦合翻转的编解码装置,可以减少总线数据传输过程中的耦合翻转次数,从而降低总线的耦合翻转功耗。

本发明是通过以下技术方案解决上述技术问题的:一种减少总线耦合翻转的编解码装置,包括输入与未编码数据相连接、输出与总线发送端相连接的编码器,输入与总线接收端相连接、输出与解码数据相连接的解码器,所述编码器包括:

原码编码单元、异或编码单元、同或编码单元、反转编码单元,分别用于对未编码数据进行原码编码、异或编码、同或编码、反转编码,它们的输入与未编码数据、两位标志信息相连接;

第一耦合翻转计数单元、第二耦合翻转计数单元、第三耦合翻转计数单元、第四耦合翻转计数单元,分别用于计算原码编码单元的输出、异或编码单元的输出、同或编码单元的输出、反转编码单元的输出相对总线前一时刻传输的编码数据的耦合翻转数;

四路比较器,用于计算第一耦合翻转计数单元的输出、第二耦合翻转计数单元的输出、第三耦合翻转计数单元的输出、第四耦合翻转计数单元的输出中最小的数,并生成相应的两位标志信息;

第一选择器,根据四路比较器的输出,选择原码编码单元的输出、异或编码单元的输出、同或编码单元的输出、反转编码单元的输出中的一个作为编码数据发送到总线上;

第一寄存器,输入与总线上的编码数据相连接,用于保存总线前一时刻传输的编码数据;

所述解码器包括:

原码解码单元、异或解码单元、同或解码单元、反转解码单元,分别用于对编码数据进行原码解码、异或解码、同或解码、反转解码,它们的输入与总线上的编码数据相连接;

第二选择器,用于根据总线上的编码数据的高两位标志信息选择原码解码单元的输出、异或解码单元的输出、同或解码单元的输出、反转解码单元的输出中的一个作为解码数据;

第二寄存器,输入与总线上的编码数据相连接,用于保存总线前一时刻传输的编码数据。

进一步的,所述原码编码单元的输出为未编码数据增加两位标志信息的结果。

进一步的,所述异或编码单元的输入还与总线前一时刻传输的编码数据相连接,输出为未编码数据与总线前一时刻传输的编码数据去掉高两位标志信息后作异或操作并增加两位标志信息的结果。

进一步的,所述同或编码单元的输入还与总线前一时刻传输的编码数据相连接,输出为未编码数据与总线前一时刻传输的编码数据去掉高两位标志信息后作同或操作并增加两位标志信息的结果。

进一步的,所述反转编码单元的输出为未编码数据取反后增加两位标志信息的结果。

进一步的,所述原码解码单元的输出为总线上的编码数据去掉高两位标志信息后的结果。

进一步的,所述异或解码单元的输入还与总线前一时刻传输的编码数据相连接,输出为总线上的编码数据去掉高两位标志信息后与总线前一时刻传输的编码数据去掉高两位标志信息后作异或操作的结果。

进一步的,所述同或解码单元的输入还与总线前一时刻传输的编码数据相连接,输出为总线上的编码数据去掉高两位标志信息后与总线前一时刻传输的编码数据去掉高两位标志信息后作同或操作的结果。

进一步的,所述反转解码单元的输出为总线上的编码数据去掉高两位标志信息后取反的结果。

进一步的,所述两位标志信息用于记录总线上编码数据的编码类型。

本发明相比现有技术具有以下优点:编码器始终选择耦合翻转次数最少的编码数据进行传输,可有效降低总线的耦合翻转功耗。

附图说明

图1总线编码基本结构;

图2本发明提供的总线编码装置结构原理图;

图3本发明提供的总线解码装置结构原理图;

图4相邻两位总线的耦合翻转计数图。

具体实施方式

下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

本发明提供了一种减少总线耦合翻转的编解码装置,用于降低总线的耦合翻转功耗。编码装置利用总线前一时刻传输的编码数据对当前时刻需要传输的未编码数据进行异或编码、同或编码,并将异或编码数据、同或编码数据、反转编码数据、原码编码数据中相对总线前一时刻传输的编码数据耦合翻转次数最少的编码数据送到总线上进行传输。编码装置始终选择耦合翻转次数最少的编码数据进行传输,因此可以有效降低总线的耦合翻转功耗。

下面结合附图2和附图3对本发明的技术方案做详细描述。

图2为本发明提供的总线编码装置,图3为本发明提供的总线解码装置。在总线发送端有一个编码器,用于对总线当前时刻需要发送的数据进行编码;在总线接收端有一个解码器,用于对总线当前时刻接收的数据进行解码。其中编码器的输入为总线当前时刻需要发送的未编码数据Dk,其位宽为N;编码器的输出为总线当前时刻发送的编码数据Sk,其位宽为N+2,与总线位宽一致;编码数据比未编码数据多了2-bit。解码器的输入为总线上的编码数据Sk;译码器的输出为Sk进行解码后的数据Lk,其位宽为N,Lk=Dk

编码器包括:

第一寄存器,用于保存总线前一时刻发送的编码数据Sk-1,其输入为总线当前时刻发送的编码数据Sk

原码编码单元,不对输入的未编码数据Dk做任何处理,只是增加2-bit的标志信息00,输出为S_org,S_org={2’b00,Dk}。

异或编码单元,输入为2-bit标志信息01,未编码数据Dk,总线前一时刻发送的编码数据Sk-1,输出为S_xor,S_xor={2’b01,Dk^Sk-1[N-1:0]}。

同或编码单元,输入为2-bit标志信息10,未编码数据Dk,总线前一时刻发送的编码数据Sk-1,输出为S_xnor,S_xnor={2’b10,Dk~^Sk-1[N-1:0]}。

反转编码单元,输入为2-bit标志信息11,未编码数据Dk,输出为S_inv,S_inv={2’b11,~Dk}。

第一耦合翻转计数器,用于计算S_org相对Sk-1发生的耦合翻转数,输入为S_org、Sk-1,输出为耦合翻转数N_org。相邻两位总线的耦合翻转计数如图4所示。其中01变为10,10变为01时耦合翻转数最大。

第二耦合翻转计数器,用于计算S_xor相对Sk-1发生的耦合翻转数,输入为S_xor、Sk-1,输出为耦合翻转数N_xor。

第三耦合翻转计数器,用于计算S_xnor相对Sk-1发生的耦合翻转数,输入为S_xnor、Sk-1,输出为耦合翻转数N_xnor。

第四耦合翻转计数器,用于计算S_inv相对Sk-1发生的耦合翻转数,输入为S_inv、Sk-1,输出为耦合翻转数N_inv。

四路比较器,用于计算N_org、N_xor、N_xnor、N_inv中最小的数,并生成标志信息flag。若N_org最小,则flag=2’b00;若N_xor最小,则flag=2’b01;若N_xnor最小,则flag=2’b10;若N_inv最小,则flag=2’b11。

第一选择器,用于根据四路比较器生成的标志信息flag选择S_org、S_xor、S_xnor、S_inv中的一个作为编码数据Sk发送到总线上。若flag=2’b00,则Sk=S_org;若flag=2’b01,则Sk=S_xor;若flag=2’b10,则Sk=S_xnor;若flag=2’b11,则Sk=S_inv。

解码器包括:

第二寄存器,用于保存总线前一时刻发送的编码数据Sk-1,其输入为总线当前时刻发送的编码数据Sk

原码解码单元,输入为编码数据Sk,输出为Sk去掉高两位标志信息后得到的数据D_org,D_org=Sk[N-1:0]。

异或解码单元,输入为编码数据Sk,总线前一时刻发送的编码数据Sk-1,输出为D_xor,D_xor=Sk[N-1:0]^Sk-1[N-1:0]。

同或解码单元,输入为编码数据Sk,总线前一时刻发送的编码数据Sk-1,输出为D_xnor,D_xnor=Sk[N-1:0]~^Sk-1[N-1:0]。

反转解码单元,输入为编码数据Sk,输出为D_inv,D_inv=~Sk[N-1:0]。

第二选择器,用于根据编码数据Sk高两位标志信息Sk[N+1:N]选择D_org、D_xor、D_xnor、D_inv中的一个作为解码数据Lk。若Sk[N+1:N]=2’b00,则Lk=D_org;若Sk[N+1:N]=2’b01,则Lk=D_xor;若Sk[N+1:N]=2’b10,则Lk=D_xnor;若Sk[N+1:N]=2’b11,则Lk=D_inv。

以下通过一个例子来说明本发明的具体应用。

假设总线当前时刻要发送的未编码数据Dk=8’b1101_1010,位宽为8-bit;总线前一时刻发送的编码数据Sk-1=10’b00_1100_1101,位宽为10-bit。则原码编码、异或编码、同或编码、反转编码分别为:

S_org=10’b00_1101_1010;

S_xor=10’b01_0001_0111;

S_xnor=10’b10_1110_1000;

S_inv=10’b11_0010_0101;

S_org、S_xor、S_xnor、S_inv相对Sk-1的耦合翻转数分别为:

N_org=0+0+0+0+1+0+1+2+2=6;

N_xor=1+2+0+0+1+2+1+0+0=7;

N_xnor=1+0+0+0+1+0+1+0+0=3;

N_inv=0+2+0+2+1+0+1+0+0=6;

四路比较器会判断出N_xnor为最小耦合翻转数,产生标志信息flag=2’b10;

第一选择器根据flag=2’b10选出S_xnor作为编码数据发送到总线上,即

Sk=10’b10_1110_1000;

此时总线上发送的编码数据相对前一时刻发送的编码数据的耦合翻转数仅为3。编码器选择耦合翻转次数最少的编码数据进行传输,可有效降低总线的耦合翻转功耗。

在总线接收端,原码解码、异或解码、同或解码、反转解码分别为:

D_org=8’b1110_1000;

D_xor=8’b0010_0101;

D_xnor=8’b1101_1010;

D_inv=8’b0001_0111;

第二选择器根据Sk[9:8]=2’b10选出D_xnor作为解码数据,即

Lk=8’b1101_1010;Lk=Dk

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

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