CN104123959B - 置换规则配置简洁的通用置换电路结构 - Google Patents
置换规则配置简洁的通用置换电路结构 Download PDFInfo
- Publication number
- CN104123959B CN104123959B CN201410347018.9A CN201410347018A CN104123959B CN 104123959 B CN104123959 B CN 104123959B CN 201410347018 A CN201410347018 A CN 201410347018A CN 104123959 B CN104123959 B CN 104123959B
- Authority
- CN
- China
- Prior art keywords
- data
- replacement rule
- module
- register module
- input
- 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.)
- Active
Links
Landscapes
- Communication Control (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明公开了一种置换规则配置简洁的通用置换电路结构,包括控制模块、置换规则寄存器模块、源寄存器模块、n选1多路选择器、结果寄存器模块,控制模块的三个写使能控制信号端分别连接源寄存器模块、结果寄存器模块和置换规则寄存器模块的写使能控制信号接收端,控制模块的移位模式控制信号输出端连接置换规则寄存器模块的通道选择输入端;源寄存器模块的n个数据输出端对应连接n选1多路选择器的n个输入通道端口,n选1多路选择器的输出通道端口连接结果寄存器模块的数据输入端;置换规则寄存器模块的置换信息输出端分别连接n选1多路选择器的通道选择输入端和置换规则寄存器模块的循环移位数据输入端。
Description
技术领域
本发明涉及密码芯片集成电路设计技术领域,尤其涉及一种置换规则配置简洁的通用置换电路结构。
背景技术
Bit Permutation(位置换)和sub-block permutation(子块置换)在密码算法应用中有着重要的地位。例如DES,Present,Sperent等密码算法中均使用了比特级的位置换。位置换只改变数据中比特位数据的位置而不改变这些位的值。假设某一个位置换函数将n比特的数据S转成n比特的数据D,则有D[i]=S[π(i)],即数据D的第i位的值等于数据S的第π(i)位的值,其中0≤i≤n-1,π表示一个置换规则函数,其值域为[0,n-1]的整数,D[i]表示数据D的第i位的值,S[π(i)]表示数据S的第π(i)位的值。这里称数据S为源数据,数据D为结果数据。如图1所示,一种固定置换规则下的4比特位置换示意图。假设数据S由4比特的二进制数据组成,从左至右各比特位依次记作S3、S2、S1、S0,则数据S可以表示成S={S3S2S1S0},其中Si的值等于0或1。同理,数据D可以表示为D={D3D2D1D0}。在图1所示的位置换中的置换规则函数为:π(3)=1,π(2)=3,π(1)=0,π(0)=2,即数据D的第3位的值来自给数据S的第1位,数据D的第2位的值来自给数据S的第3位,数据D的第1位的值来自给数据S的第0位,数据D的第0位的值来自给数据S的第2位。在该位置换规则下,若数据S的值为S={1110},那么数据D的值就为D={1101};若数据S的值为S={0101},那么数据D的值就为D={0011}。
将上述数据中连续的m个比特位看作一个整体,这个整体就形成一个子块,子块的大小为m比特。子块置换与位置换类似,只改变子块的位置,不改变子块内部数据值。在广义Feistel型密码算法中,通常将分组数据分成多个子块,并使用子块置换进行扩散。在现有的密码算法中通常采用子块循环移动的置换规则。同时,实现对任意置换规则的子块置换的支持,有利于实现更安全的密码算法。对于固定规则置换可以采用硬件连线的方式来实现,该方法虽然具有实现成本低的优点,但缺乏灵活性。每个设计只能支持一种固定规则的置换,无法支持任意规则的置换。然而,不同的密码算法中的位置换规则并不相同。此外,在支持可自定义位置换或子块置换规则的密码算法芯片中,需要一种支持任意置换规则,且置换规则信息配置简单、实现成本较低的置换电路。因此,存在着支持任意置换规则的设计需求。
实现任意规则的位置换或子块置换,通常有软件和硬件两种途径。
采用软件方式实现位置换的思想通常是根据置换规则,从源数据中取出一位数据,然后移动到相应目标位置上,再将该值合并到结果数据中,即反复进行取数、屏蔽(按位与)、移动、合并(按位或)四类操作。其时间开销较大,对于n比特数据进行任意位置换时,如果采用具有桶形移位寄存器的处理器,一般需要4n个周期。如果处理器不具备桶形移位寄存器,则所耗时间更长。为了在通用处理器中高效地支持位置换,Ruly.B.LEE等人提出了GRP,BFLY,OMFLIP等几种位置换指令。这些设计虽然能够灵活地支持位置换,但其硬件开销较大,根据公开数据显示在ASIC设计中至少需要一万九千个等效门。此外,用软件实现任意位置换时编程较为复杂。对于子块置换,如果子块的大小不是一个字节大小的整数倍时,用软件实现子块置换将会非常麻烦,且执行效率低下。
采用硬件实现位置换(或子块置换)的常见思想是根据置换规则在源数据和结果数据相应位(或子块)之间建立起对应的数据传输通道,将源数据中各位(或子块)的值传递到结果数据的相应的位置上。为了实现支持任意的位置换(或子块置换),一般采用可配置的交换网络来实现,如交叉开关网络、Benes网络等。通常相同规模下,Benes网络的硬件资源开销比交叉开关网络低。但这些交换网络均需要大量的置换开关和控制位寄存器。例如,采用Benes网络实现n比特位置换电路时,需要个2-2置换开关、比特用于存储置换开关控制信息的寄存器,和2n比特用于存储置换前后数据的寄存器,其中一个置换开关由两个二选一多路选择器构成。对n=128任意位置换,采用Benes网络实现时,需要1664个二选一多路选择器和1088比特的寄存器,其中832比特寄存器用于存储控制位信息,256比特用于存储数据S和数据D。此外,在Benes网络下,当给定某一置换规则时,需要间接地通过一套复杂的配置算法从该置换规则中推算出各控制位的配置信息。这使得置换规则与配置信息之间的关系并不直观明了。
发明内容
本发明的目的是提供一种置换规则配置简洁的通用置换电路结构,使用简单的配置算法,简便、直观地配置置换电路的置换规则信息,有效降低任意置换的使用难度,并能够有效降低置换电路的芯片面积,从而降低芯片生产成本。
本发明采用的技术方案为:
一种置换规则配置简洁的通用置换电路结构,其特征在于:包括控制模块、置换规则寄存器模块、源寄存器模块、n选1多路选择器、结果寄存器模块,控制模块的控制信号输入端用于接收外部输入的控制信息,控制模块的第一写使能控制信号端连接源寄存器模块的写使能控制信号接收端,控制模块的第二写使能控制信号端连接结果寄存器模块的写使能控制信号接收端,控制模块的第三写使能控制信号端连接置换规则寄存器模块的写使能控制信号接收端,控制模块的状态信号输出端用于输出置换电路的工作状态,控制模块的移位模式控制信号输出端连接置换规则寄存器模块的通道选择输入端;源寄存器模块的数据输入端用于接收外部输入的源数据,源寄存器模块的n个数据输出端对应连接n选1多路选择器的n个输入通道端口,n选1多路选择器的输出通道端口连接结果寄存器模块的数据输入端;置换规则寄存器模块的置换规则输入端用于接收外部输入的置换规则信息,置换规则寄存器模块的置换信息输出端分别连接n选1多路选择器的通道选择输入端和置换规则寄存器模块的循环移位数据输入端,结果寄存器模块的数据输出端用于输出置换后数据;本置换电路还包括有一个时钟信号输入端口,时钟信号输入端口用于接收外部提供的时钟信号,并为整个置换电路提供时钟脉冲信号;
其中,所述的控制模块用于控制整个置换电路的工作状态、接收并解析操作命令字、反馈置换电路输出置换电路的工作状态;控制模块包括一个状态机和一个计数器;
所述的源寄存器模块用于存放需要进行位置换或子块置换的数据,由n个数据位宽为m比特的源数据寄存器构成,源数据寄存器从左至右的编号依次为Sn-1,Sn-2,……,S1,S0;
所述的n选1多路选择器用于从源寄存器模块中选择出相应编号源数据寄存器中的数据,其n个输入通道端口和1个输出通道端口的数据位宽均为m比特;n选1多路选择器的第0号输入通道端口连接源寄存器模块中的第S0号寄存器的数据输出端,第1号输入通道端口连接源寄存器模块中的第S1号寄存器的数据输出端,第2,3,4,……n-1号以此类推,n选1多路选择器的输出通道端口连接结果寄存器模块中的数据输入端;
所述的置换规则寄存器模块用于存放置换规则,包括n个数据位宽为k比特的置换规则寄存器和一个数据位宽为k比特的二选一多路选择器,其中k是大于或等于的最小正整数;n个置换规则寄存器从左至右的编号依次为:A0,A1,……,An-2,An-1;n个置换规则寄存器按如下规则连接构成一个移位寄存器链:当0<i≤n-1时,第Ai号置换规则寄存器的数据输入端连接第Ai-1号置换规则寄存器的数据输出端;第A0号置换规则寄存器的数据输入端连接二选一多路选择器的输出端;二选一多路选择器的通道选择输入端连接控制模块的移位模式控制信号输出端;二选一多路选择器的循环移位数据输入端连接置换规则寄存器模块中第An-1号置换规则寄存器的数据输出端,此时这些置换规则寄存器工作于循环移位模式;二选一多路选择器的置换规则输入端用于接收置换规则信息,此时这些置换规则寄存器工作于移位模式;第An-1号置换规则寄存器的数据输出端同时作为置换信息输出端;
所述的结果寄存器模块用于存放置换后的数据,由n个数据位宽为m比特的结果寄存器构成;结果寄存器从左至右的编号依次为Dn-1,Dn-2,……,D1,D0;n个结果寄存器按如下规则连接构成一个移位寄存器链:当0<i≤n-1时,第Di号结果寄存器的数据输入端连接第Di-1号结果寄存器的数据输出端;而第D0号结果寄存器的数据输入端连接n选1多路选择器的输出通道端口,n个结果寄存器的数据输出端拼接在一起作为置换后数据输出端口。
本发明通过控制模块控制并协调置换电路中的置换规则寄存器模块、源寄存器模块、n选1多路选择器和结果寄存器模块各个模块之间的工作,并将接收到的外部控制信息进行解析处理,合理的控制各个模块间的协调动作;
优点:1.通过本发明的置换电路结构能够灵活地开发出支持任意置换规则的位置换或子块置换电路,本发明所提供的置换电路结构,置换规则的配置信息与置换规则之间的关系简单明了,不需要使用复杂的配置算法来确定配置信息,能够有效地降低任意规则位置换或子块置换的使用难度;
2.利用本发明提供的置换电路结构具有实现成本低的优点,特别是当n大于16时,DC综合结果显示,本发明所提供的置换电路的面积小于相同尺寸的Benes网络的面积。本发明所提供的置换电路结构,进行n比特置换时,仅需要比特的寄存器、一个n选1多路选择器和简单控制电路;其中一个n选一多路选择器可以用n-1个二选一多路选择器来构建;当n较大时,其中的二选一多路选择器的个数远小于Benes网络中的个数例如,n=128时,本发明中只需要127个二选一多路选择器,而Benes网络需要1664个二选一多路选择。控制模块部分主要包括比特寄存器(其中2比特用表示状态机,比特用于计数)和一些逻辑电路构成,其面积开销较小;以n=128比特的位置换电路为例,在TSMC的130nm工艺库下DC综合结果显示,其中控制模块的面积约为210个等效门,小于100个二选一多路选择的面积。因此可以认为在n不超128时,控制电路的面积不超100个二选一多路选择器的面积。
附图说明
图1为本发明的背景技术中一种置换规则下的4比特位置换示意图;
图2为本发明的电路结构原理框图;
图3为本发明的支持128比特任意置换规则的位置换电路结构原理框图;
图4为本发明的支持16个子块任意置换规则的子块置换电路原理框图。
具体实施方式
如图2所示,本发明包括控制模块、置换规则寄存器模块、源寄存器模块、n选1多路选择器、结果寄存器模块,控制模块的控制信号输入端用于接收外部输入的控制信息A,控制模块的第一写使能控制信号端en1连接源寄存器模块的写使能控制信号接收端,控制模块的第二写使能控制信号端en2连接结果寄存器模块的写使能控制信号接收端,控制模块的第三写使能控制信号端en3连接置换规则寄存器模块的写使能控制信号接收端,控制模块的状态信号输出端用于输出置换电路的工作状态B,控制模块的移位模式控制信号输出端mod连接置换规则寄存器模块的通道选择输入端;源寄存器模块的数据输入端用于接收外部输入的源数据S,源寄存器模块的n个数据输出端对应连接n选1多路选择器的n个输入通道端口,n选1多路选择器的输出通道端口连接结果寄存器模块的数据输入端;置换规则寄存器模块的置换规则输入端用于接收外部输入的置换规则信息C,置换规则寄存器模块的置换信息输出端分别连接n选1多路选择器的通道选择输入端和置换规则寄存器模块的循环移位数据输入端,结果寄存器模块的数据输出端用于输出置换后数据D;本置换电路还包括有一个时钟信号输入端口,时钟信号输入端口用于接收外部提供的时钟信号,并为整个置换电路提供时钟脉冲信号clk;
其中,所述的控制模块用于控制整个置换电路的工作状态、接收并解析操作命令字、反馈置换电路的工作状态;控制模块包括一个状态机和一个计数器;所述的状态机包含四种工作状态,分别为:加载置换规则状态、加载源数据状态、执行置换状态和输出置换结果状态;
状态机的四种工作状态下控制模块的输出信号状态如下:
“加载置换规则状态”:控制模块输出的第一写使能控制信号(en1)无效(用‘0’表示),控制模块输出的第二写使能控制信号(en2)无效(用‘0’表示),控制模块输出的第三写使能控制信号(en3)有效(用‘1’表示),控制模块输出的置换规则寄存器模块移位模式控制信号(mod)为高电平(即使第A0号置换规则寄存器的输入数据来自外部输入的置换规则信息输入端),输出的状态信息为“01”。
“加载源数据状态”下,控制模块输出的第一写使能控制信号(en1)有效(用‘1’表示),即可以接收外部输入的源数据,控制模块输出的第二写使能控制信号(en2)无效,控制模块输出的第三写使能控制信号(en3)无效(用‘0’表示),控制模块输出的置换规则寄存器模块移位模式控制信号(mod)为低电平,输出的状态信息为“10”。
“执行置换状态”下,控制模块输出的第一写使能控制信号(en1)无效,控制模块输出的第二写使能控制信号(en2)有效(用‘1’表示),控制模块输出的第三写使能控制信号(en3)有效,控制模块输出的置换规则寄存器模块移位模式控制信号(mod)为低电平(即使第A0号置换规则寄存器的输入数据来自置换规则寄存器模块的循环移位数据输入端i0),输出的状态信息为“11”。
“输出置换结果状态”下,控制模块输出的第一写使能控制信号(en1)无效,控制模块输出的第二写使能控制信号(en2)无效,控制模块输出的第三写使能控制信号(en3)无效,控制模块输出的置换规则寄存器模块移位模式控制信号(mod)为低电平,输出的状态信息为“00”。
当输出的状态信息为“10”或“11”时,表示结果寄存器模块中的数据将被更新,输出的结果数据无效。当输出的状态信息为“00”或“01”时,表示输出的结果数据有效。
状态机的四种工作状态按如下规则切换:
状态机默认状态为“输出置换结果状态”,此状态下计数器的值被设置为0;
在“输出置换结果状态”下,当接收到“加载置换规则信息命令”后,状态机转入“加载置换规则状态”;
在“加载置换规则状态”下,置换规则寄存器模块可以接收由外部输入的置换规则信息,每接收一个置换规则信息,计数器的值加1,当计数器的值等于n时,即当接收完n个置换规则信息后,状态机自动转入到“输出置换结果状态”;
在“输出置换结果状态”下,当接收到“加载源数据命令”后,状态机转入“加载源数据状态”;
在“加载源数据状态”下,当完成将外部输入的源数据写入到源寄存器模块的寄存器后,状态机自动转入“执行置换状态”;
在“执行置换状态”下,置换规则寄存器模块中的各置换规则寄存器工作于循环移位模式,同时结果寄存器模块中的结果寄存器工作于向左移位模式,即每经过一个时钟周期,置换规则寄存器模块中的各置换规则寄存器中的数据向右循环移动一个位置,同时结果寄存器模块中的各结果寄存器中的数据向左移动一个位置,且第D0号结果寄存器的接收n选1多路选择器的输出值;每经过一个时钟周期,计数器的值加1;当计数器的值等于n时,状态机自动转入“输出置换结果状态”。
所述的源寄存器模块是用于存放需要进行位置换或子块置换的数据,由n个数据位宽为m比特的源数据寄存器构成,源数据寄存器从左至右的编号依次为Sn-1,Sn-2,……,S1,S0;当源寄存器模块的写使能控制信号接收端的信号有效时(en1=1),则将外部输入的数据写入到对应的源数据寄存器中。当源寄存器模块的写使能端的信号无效时(en1=0),则这些源数据寄存器中的值保持不变。
所述的n选1多路选择器用于从源寄存器模块中选择出相应编号源数据寄存器中的数据,其n个输入通道端口和1个输出通道端口的数据位宽均为m比特;n选1多路选择器的第0号输入通道端口连接源寄存器模块中的第S0号寄存器的数据输出端,第1号输入通道端口连接源寄存器模块中的第S1号寄存器的数据输出端,第2,3,4,……n-1号以此类推,n选1多路选择器的输出通道端口连接结果寄存器模块中的数据输入端;
所述的置换规则寄存器模块用于存放置换规则,包括n个数据位宽为k比特的置换规则寄存器和一个数据位宽为k比特的二选一多路选择器,其中k是大于或等于的最小正整数;n个置换规则寄存器从左至右的编号依次为:A0,A1,……,An-2,An-1;n个置换规则寄存器按如下规则连接构成一个移位寄存器链:当0<i≤n-1时,第Ai号置换规则寄存器的数据输入端连接第Ai-1号置换规则寄存器的数据输出端;第A0号置换规则寄存器的数据输入端连接二选一多路选择器的输出端;二选一多路选择器的通道选择输入端连接控制模块的移位模式控制信号输出端(mod);当mod信号为0时(用低电平表示),二选一多路选择器的输出来自于第An-1号置换规则寄存器的数据输出端时(即i0端口),此时这些置换规则寄存器工作于循环移位模式;当mod信号为1时(用高电平表示),二选一多路选择器的输出来自外部输入的置换规则信息(即i1端口),此时这些置换规则寄存器工作于移位模式;第An-1号置换规则寄存器的数据输出端同时作为置换信息输出端;
所述的结果寄存器模块用于存放置换后的数据,由n个数据位宽为m比特的结果寄存器构成;结果寄存器从左至右的编号依次为Dn-1,Dn-2,……,D1,D0;n个结果寄存器按如下规则连接构成一个移位寄存器链:当0<i≤n-1时,第Di号结果寄存器的数据输入端连接第Di-1号结果寄存器的数据输出端;而第D0号结果寄存器的数据输入端连接n选1多路选择器的输出通道端口,n个结果寄存器的数据输出端拼接在一起作为置换后数据输出端口。当结果寄存器模块的写使能端控制信号接收端的信号有效时,则本模块中各结果寄存器输入端的数据在时钟信号上升沿的触发下写入对应的结果寄存器中,从而使得结果数据向左移动一个位置;当结果寄存器模块的写使能控制信号接收端的信号无效时,则这些结果寄存器中的值保持不变。
在实际应用中,该置换电路由外部功能单元控制和使用,以完成相应的置换功能。本发明所述的置换电路完成位置换或子块置换功能时的工作过程如下:
第一步:配置置换规则。当控制模块输出的状态信息为“00”时(此时代表可以接收外部输入),外部功能单元输入“加载置换规则信息命令”,状态机转入“加载置换规则状态”,并在后续的n个时钟周期内,根据位置换(或子块置换)规则,依次向置换规则寄存器模块中写入表示结果数据的第i位(或子块)的值将来自源数据的哪一位(或子块)的数据;假设用π(i)表示,0≤i≤n-1,写入的顺序为:π(n-1),π(n-2),…….,π(1),π(0)。当n个置换信息写入完成后,状态机自动转入“输出置换状态”。此时,从逻辑上看置换规则寄存器模块中的第Ai号置换规则寄存器代表着置换后数据的第i位(或第i个子块),同时第Ai号置换规则寄存器中的值等于π(i),代表着结果数据的第i位(或第i个子块)来自于源数据的第π(i)位(或第π(i)个子块)。在上述过程中,外部功能单元发出的“加载置换规则信息命令”所持续的时间不能超过n个时钟周期,否则将触发新的一轮置换规则信息加载过程。
第二步:加载源数据。当控制模块输出的状态信息为“00”时,外部输入“加载源数据命令”,状态机转入“加载源数据状态”,将待置换的源数据通过数据输入端口写入到源数据寄存器中。当加载源数据完成后,状态机自动转入“执行置换状态”,即自动转入第三步。外部功能单元发出的“加载源数据命令”所持续的时间不能超过n个时钟周期,否则,将自动引起新的一次源数据加载。即外部输入的控制信息在完成源数据加载后可以变为无效命令“00”或“01”。
第三步:执行置换过程。此过程共需要n个周期。在每个时钟周期内进行如下操作:
(1)n选1多路选择器根据置换规则寄存器模块的置换信息输出端提供的数据作为通道选择信号,从源寄存器模块中选择出相应编号源数据寄存器中的值,并送入到结果寄存器模块的数据输入端。
(2)结果寄存器模块中的各结果寄存器中的数据向左移动一位置,即结果寄存器D0中的数据传递给结果寄存器D1,结果寄存器D1中的数据传递给结果寄存器D2,结果寄存器D3、结果寄存器D4......依次类推。
(3)置换规则寄存器模块中各置换规则寄存器数据向右循环移动一个位置,即置换规则寄存器A0中的数据传递给置换规则寄存器A1,置换规则寄存器A1中的数据传递给置换规则寄存器A2,置换规则寄存器A3、置换规则寄存器A4......依次类推,但置换规则寄存器An-1的值传递给置换规则寄存器A0;经过n个时钟周期后,置换规则寄存器模块中各置换规则寄存器的值回到第一步完成后的状态,同时结果寄存器模块的输出值就是置换后的结果。
第四步:读出置换后的数据结果。待上述的第三步完成后,置换电路输出的状态信息将变为“00”,此时代表着置换结果数据有效,外部功能单元可以从结果寄存器模块中的数据输出端口读得置换后的结果数据。
若对多个数据使用相同的置换规则进行置换时,第一步配置置换规则仅需要在首次置换时进行配置,而进行后续置换时可以跳过配置置换规则这一步骤,直接进行上述的第二、第三、第四步。上述的源寄存器模块、结果寄存器模块中各寄存器的数据位宽m以及n选1多路选择器的各通道数据位宽m均等于1时,利用本发明的置换电路结构可以实现支持任意置换规则的比特级位置换电路;当上述m为大于1的整数时,利用本发明的置换电路结构可以实现支持任意置换规则的子块置换电路,其中子块的大小为m比特,源数据和结果数据的数据位宽度为n*m比特。
下面以实施例的方式详细说明本发明的工作原理:
实施例1:
利用本发明所提供的置换规则配置简洁的通用置换电路结构实现了一种支持128比特任意置换规则的位置换电路,其电路结构图如图3所示。
该位置换电路包括五个部分,分别是源寄存器模块、128选1多路选择器、结果寄存器模块、置换规则寄存器模块和控制模块。在该实例中n的值为128,m的值为1,k的值为7。其中,所述的源寄存器模块内包含128个数据位宽为1比特的源寄存器和一个门控时钟单元,该门控时钟单元的输入为时钟信号(clk)和第一写使能控制信号(en1),该门控时钟单元输出一个门控时钟信号,并将该门控时钟信号作为源寄存器模块内所有源数据寄存器的时钟信号;所述的128选1多路选择器的各输入通道端口、输出通道端口的数据位宽为1比特;所述的结果寄存器模块内包含128个数据位宽为1比特的结果寄存器和一个门控时钟单元,该门控时钟单元的输入为时钟信号(clk)和第二写使能控制信号(en2),该门控时钟单元输出一个门控时钟信号,并将该门控时钟信号作为结果寄存器模块内所有结果寄存器的时钟信号,所述的结果寄存器模块的数据输出端口的数据位宽为128比特,数据输入端口数据位宽为1比特;所述的置换规则寄存器模块的置换规则输入端的数据位宽为7比特,置换信息输出端的数据位宽为7比特;所述的置换规则寄存器模块内包含128个数据位宽为7比特的置换规则寄存器、一个输入/输出通道数据位宽均为7比特的二选一多路选择器和一个门控时钟单元;该门控时钟单元的输入为时钟信号(clk)和第三写使能控制信号(en3),该门控时钟单元输出一个门控时钟信号,并将该门控时钟信号作为置换规则寄存器模块内所有置换规则寄存器的时钟信号;所述的控制模块用于控制和协调置换电路内各模块的工作、接收并解析外部输入的控制信息、反馈置换电路的工作状态;置换电路有四种工作状态,分别是加载置换规则状态、加载源数据状态、执行置换状态和输出置换结果状态。控制模块结合外部输入的控制信息控制各种工作状态之间的切换;控制信号输入端的数据宽度为2比特,用于接收外部输入的控制命令,控制命令包括:加载置换规则信息命令(用“10”表示),加载源数据命令(用“11”表示);当外部输入的控制信息为“00”或者“01”时,控制模块将其看作无效命令,不进行处理;状态信息输出端口的数据宽度为2比特,用于反馈置换电路的工作状态;控制模块包括一个具有四个状态的状态机和一个计数器;状态机的四个状态分别对应着置换电路的四种工作状态。在该实例中所述的状态机描述中n的值为128,该状态机的四种工作状态下控制模块的输出信号状态以及四种工作状态之间的切换规则与上述具体实施方式中状态机的描述相同,只需将n的值实例化为128即可,这里不再赘述。
在具体应用中,根据具体需求将该置换电路与相应的外部功能单元连接,并由外部功能单元来控制和使用该置换电路,以完成相应的位置换功能。
外部功能单元通过控制信号输入端向控制模块输入操作命令字;通过输入数据端口提供待置换的128比特数据;通过置换规则信息输入端提供相应的置换规则信息;通过输出数据端口得到相应的置换结果;通过状态信息输出端口获知置换电路的工作状态;该置换电路的时钟信号与外部功能单元的时钟信号相同。
实施例1所述的置换电路完成128比特的位置换的工作过程如下:
第一步:配置置换规则。当置换电路输出的状态信息为“00”时,外部功能单元发出一次“加载置换规则信息命令”,该置换电路转入“加载置换规则状态”,外部功能单元在后续的128个时钟周期内,根据位置换规则,通过置换规则信息输入端口依次向置换规则寄存器模块中写入128个7比特的置换规则信息,这些置换规则信息表示置换后结果数据的第i位的值将来自源数据的哪一位的数据,假设用π(i)表示,0≤i≤127,每个时钟周期外部功能单元提供一个置换规则信息,其顺序为:π(127),π(126),…….,π(1),π(0)。当128个置换规则信息写入完成后,该置换电路自动转入“输出置换结果状态”。从逻辑上看,此时置换规则寄存器模块中的第Ai号置换规则寄存器代表着置换后数据的第i位,同时第Ai号置换规则寄存器中的值等于π(i),这代表着结果数据的第i位来自于源数据的第π(i)位。在上述过程中外部功能单元发出的“加载置换规则信息命令”所持续的时间不能超过128个时钟周期。
第二步:加载源数据。当置换电路输出的状态信息为“00”时,外部功能单元将待置换的源数据准备好,并发出“加载源数据命令”,状态机转入“加载源数据状态”,将待置换的源数据通过数据输入端口写入到源数据寄存器中。当加载源数据完成后,自动转入第三步。外部功能单元在发出的“加载源数据命令”持续时间不能超过128个时钟周期。
第三步:执行置换过程。在此过程中置换电路根据置换规则寄存器模块中的置换规则信息,更新结果寄存器模块的中数据。共需要128个时钟周期。此过程完成后,状态机自动转入“输出置换结果状态”。
第四步:读出置换后的数据结果。上述的第三步完成后置换电路输出的状态信息变为“00”,此时结果寄存器模块输出的数据即为置换后的结果数据,并且该值在“输出置换结果状态”下保持不变,外部功能单元可以读取本次的置换结果数据。
若对多个数据使用相同的置换规则进行置换时,第一步配置位置换规仅需要在首次置换时进行配置,而进行后续置换时可以跳过配置置换规则这一步骤,直接进行上述的第二、第三、第四步。
该实施例在TSMC的130nm工艺库下,DC综合结果显示,其面积约为7756个等效门,与128位Benes网络(面积约为11275个等效门)相比可以节省近30%的面积。上述数据显示,本发明所涉及的通用置换电路结构达到了降低成本的目的,为后期的实际生产带来有利的经济效益。
实施例2:
利用本发明所提供的置换规则配置简洁的通用置换电路结构实现了一种支持16个子块(块大小为4比特)任意置换规则的子块置换电路,其电路结构如图4所示。
该子块置换电路主要包括五个部分,分别是源寄存器模块、16选1多路选择器、结果寄存器模块、置换规则寄存器模块和控制模块。在该实例中n的值为16,m的值为4,k的值为4。所述的源寄存器模块内包含16个数据位宽为4比特的源寄存器和一个门控时钟单元,该门控时钟单元的输入为时钟信号(clk)和第一写使能控制信号(en1),该门控时钟单元输出一个门控时钟信号,并将该门控时钟信号作为源寄存器模块内所有源寄存器的时钟信号,所述的源寄存器模块的数据输入端口的数据位宽为64比特,分成16个子块连接到相应的源寄存器的数据输入端;所述的16选1多路选择器的各输入、输出通道端口的数据位宽为4比特;所述的结果寄存器模块内包含16个数据位宽为4比特的结果寄存器和一个门控时钟单元,该门控时钟单元的输入为时钟信号(clk)和第二写使能控制信号(en2),该门控时钟单元输出一个门控时钟信号,并将该门控时钟信号作为结果寄存器模块内所有结果寄存器的时钟信号;所述的结果寄存器模块的数据输入端口的数据位宽为4比特,数据输出端口的数据位宽为64比特,它由16个4比特结果寄存器的数据输出端拼接而成;所述的置换规则寄存器模块内包含16个数据位宽为4比特的置换规则寄存器、一个输入/输出通道数据位宽均为4比特的二选一多路选择器和一个门控时钟单元;该门控时钟单元的输入为时钟信号(clk)和第三写使能控制信号(en3),该门控时钟单元输出一个门控时钟信号,并将该门控时钟信号作为置换规则寄存器模块内所有置换规则寄存器的时钟信号;所述的置换规则寄存器模块的置换规则数据输入端口的数据位宽为4比特,置换信息的输出端口的数据位宽为4比特;在该实例中所述的状态机描述中n的值为16,该状态机的四种工作状态下控制模块的输出信号状态以及四种工作状态之间的切换规则与上述具体实施方式中状态机的描述相同,只需将n的值实例化为16即可,这里不再赘述。
实施例2所述的置换电路完成16个子块大小位4比特的任意置换规则的子块置换的工作过程如下:
第一步:配置置换规则。当置换电路输出的状态信息为“00”时,外部功能单元发出一次“加载置换规则信息命令”,该置换电路转入“加载置换规则状态”,外部功能单元在后续的16个时钟周期内,根据子块置换规则,通过置换规则信息输入端口依次向置换规则寄存器模块中写入16个4比特的置换规则信息,这些置换规则信息表示置换后结果数据的第i个子块的值将来自源数据的哪一个子块的数据(假设用π(i)表示,0≤i≤15),每个时钟周期外部功能单元提供一个置换规则信息,其顺序为:π(15),π(14),…….,π(1),π(0)。当16个置换规则信息写入完成后,该置换电路自动转入“输出置换结果状态”。从逻辑上看,此时置换规则寄存器模块中的第Ai号置换规则寄存器代表着置换后数据的第i个子块,同时第Ai号置换规则寄存器中的值等于π(i),这代表着结果数据的第i个子块的值来自于源数据的第π(i)个子块。在上述过程中外部功能单元发出的“加载置换规则信息命令”所持续的时间不能超过16个时钟周期。
第二步:加载源数据。当置换电路输出的状态信息为“00”时,外部功能单元将待置换的源数据准备好,并发出“加载源数据命令”,状态机转入“加载源数据状态”,将待置换的源数据通过数据输入端口写入到源数据寄存器中。当加载源数据完成后,自动转入第三步。外部功能单元在发出的“加载源数据命令”持续时间不能超过16个时钟周期。
第三步:执行置换过程。在此过程中置换电路根据置换规则寄存器模块中的置换规则信息,更新结果寄存器模块的中数据。共需要16个时钟周期。此过程完成后,状态机自动转入“输出置换结果状态”。
第四步:读出置换后的数据结果。上述的第三步完成后置换电路输出的状态信息变为“00”,此时结果寄存器模块输出的数据即为置换后的结果数据,并且该值在“输出置换结果状态”保持不变,外部功能单元可以读取本次的置换结果数据。
若对多个数据使用相同的置换规则进行置换时,第一步配置子块置换规仅需要在首次置换时进行配置,而进行后续置换时可以跳过配置置换规则这一步骤,直接进行上述的第二、第三、第四步。
该实施例在TSMC的130nm工艺库下,DC综合结果显示,其面积约为1608个等效门,与用64位Benes网络(面积约为5616个等效门)来实现相同功能的子块置换相比,该实施例可以节省近70%的面积。上述数据显示,本发明所涉及的任意置换电路结构达到了减低成本的目的,为后期的实际生产带来有利的经济效益。
由上述实施例可以看出,本发明能够支持任意置换规则的位置换或者子块置换。
Claims (1)
1.一种置换规则配置简洁的通用置换电路结构,其特征在于:包括控制模块、置换规则寄存器模块、源寄存器模块、n选1多路选择器、结果寄存器模块,控制模块的控制信号输入端用于接收外部输入的控制信息,控制模块的第一写使能控制信号端连接源寄存器模块的写使能控制信号接收端,控制模块的第二写使能控制信号端连接结果寄存器模块的写使能控制信号接收端,控制模块的第三写使能控制信号端连接置换规则寄存器模块的写使能控制信号接收端,控制模块的状态信号输出端用于输出通用置换电路的工作状态,控制模块的移位模式控制信号输出端连接置换规则寄存器模块的通道选择输入端;源寄存器模块的数据输入端用于接收外部输入的源数据,源寄存器模块的n个数据输出端对应连接n选1多路选择器的n个输入通道端口,n选1多路选择器的输出通道端口连接结果寄存器模块的数据输入端;置换规则寄存器模块的置换规则输入端用于接收外部输入的置换规则信息,置换规则寄存器模块的置换信息输出端分别连接n选1多路选择器的通道选择输入端和置换规则寄存器模块的循环移位数据输入端,结果寄存器模块的数据输出端用于输出置换后数据;本通用置换电路还包括有一个时钟信号输入端口,时钟信号输入端口用于接收外部提供的时钟信号,并为整个通用置换电路提供时钟脉冲信号;
其中,所述的控制模块用于控制整个通用置换电路的工作状态、接收并解析操作命令字、反馈通用置换电路的工作状态;控制模块包括一个状态机和一个计数器;
所述的源寄存器模块用于存放需要进行位置换或子块置换的数据,由n个数据位宽为m比特的源数据寄存器构成,源数据寄存器从左至右的编号依次为Sn-1,Sn-2,……,S1,S0;
所述的n选1多路选择器用于从源寄存器模块中选择出相应编号源数据寄存器中的数据,其n个输入通道端口和1个输出通道端口的数据位宽均为m比特;n选1多路选择器的第0号输入通道端口连接源寄存器模块中的第S0号寄存器的数据输出端,第1号输入通道端口连接源寄存器模块中的第S1号寄存器的数据输出端,第2,3,4,……n-1号以此类推,n选1多路选择器的输出通道端口连接结果寄存器模块中的数据输入端;
所述的置换规则寄存器模块用于存放置换规则,包括n个数据位宽为k比特的置换规则寄存器和一个数据位宽为k比特的二选一多路选择器,其中k是大于或等于的最小正整数;n个置换规则寄存器从左至右的编号依次为:A0,A1,……,An-2,An-1;n个置换规则寄存器按如下规则连接构成一个移位寄存器链:当0<i≤n-1时,第Ai号置换规则寄存器的数据输入端连接第Ai-1号置换规则寄存器的数据输出端;第A0号置换规则寄存器的数据输入端连接二选一多路选择器的输出端;二选一多路选择器的通道选择输入端连接控制模块的移位模式控制信号输出端;二选一多路选择器的循环移位数据输入端连接置换规则寄存器模块中第An-1号置换规则寄存器的数据输出端;二选一多路选择器的置换规则输入端用于接收置换规则信息;第An-1号置换规则寄存器的数据输出端同时作为置换信息输出端;
所述的结果寄存器模块用于存放置换后的数据,由n个数据位宽为m比特的结果寄存器构成;结果寄存器从左至右的编号依次为Dn-1,Dn-2,……,D1,D0;n个结果寄存器按如下规则连接构成一个移位寄存器链:当0<i≤n-1时,第Di号结果寄存器的数据输入端连接第Di-1号结果寄存器的数据输出端;而第D0号结果寄存器的数据输入端连接n选1多路选择器的输出通道端口,n个结果寄存器的数据输出端拼接在一起作为置换后数据输出端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410347018.9A CN104123959B (zh) | 2014-07-21 | 2014-07-21 | 置换规则配置简洁的通用置换电路结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410347018.9A CN104123959B (zh) | 2014-07-21 | 2014-07-21 | 置换规则配置简洁的通用置换电路结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104123959A CN104123959A (zh) | 2014-10-29 |
CN104123959B true CN104123959B (zh) | 2016-09-21 |
Family
ID=51769344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410347018.9A Active CN104123959B (zh) | 2014-07-21 | 2014-07-21 | 置换规则配置简洁的通用置换电路结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104123959B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1192595A (zh) * | 1997-02-28 | 1998-09-09 | 阿尔卡塔尔-阿尔斯托姆通用电气公司 | 置换n个位组中的m个位组的接口装置、控制和逻辑单元 |
US20090100247A1 (en) * | 2007-10-12 | 2009-04-16 | Moyer William C | Simd permutations with extended range in a data processor |
US20100095087A1 (en) * | 2008-10-14 | 2010-04-15 | International Business Machines Corporation | Dynamic Data Driven Alignment and Data Formatting in a Floating-Point SIMD Architecture |
WO2013095657A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
-
2014
- 2014-07-21 CN CN201410347018.9A patent/CN104123959B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1192595A (zh) * | 1997-02-28 | 1998-09-09 | 阿尔卡塔尔-阿尔斯托姆通用电气公司 | 置换n个位组中的m个位组的接口装置、控制和逻辑单元 |
US20090100247A1 (en) * | 2007-10-12 | 2009-04-16 | Moyer William C | Simd permutations with extended range in a data processor |
US20100095087A1 (en) * | 2008-10-14 | 2010-04-15 | International Business Machines Corporation | Dynamic Data Driven Alignment and Data Formatting in a Floating-Point SIMD Architecture |
WO2013095657A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
Non-Patent Citations (1)
Title |
---|
比特置换网络及其在密码处理器中的应用研究;向楠;《中国优秀硕士学位论文全文数据库》;20080423;正文第27-42页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104123959A (zh) | 2014-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2235622B1 (en) | Apparatus and method for performing permutation operations on data | |
CN110390384A (zh) | 一种可配置的通用卷积神经网络加速器 | |
CN103098018A (zh) | 比特序列生成器 | |
US9166795B2 (en) | Device and method for forming a signature | |
CN101702709A (zh) | 一种适用于mips处理器的aes加密单元 | |
CN106487500A (zh) | 采用流水线实现aes算法处理的方法 | |
CN105892987A (zh) | 解码器、最小值选择电路及最小值选择方法 | |
CN104123959B (zh) | 置换规则配置简洁的通用置换电路结构 | |
CN107925410A (zh) | 用于可编程门阵列的逻辑块架构 | |
CN102707923A (zh) | 一种伪随机数生成电路及伪随机数产生方法 | |
CN103559161A (zh) | 一种用于fpga配置的总线多宽度转换电路 | |
CN102789190B (zh) | 适用于不同类型fpga电路编程的列地址分配器电路 | |
RU2374672C1 (ru) | Устройство для построения программируемых цифровых микропроцессорных систем | |
RU154062U1 (ru) | Устройство для перебора перестановок | |
CN109039608A (zh) | 一种基于双S核的8-bitAES电路 | |
US8023614B2 (en) | Counting circuit and address counter using the same | |
CN105515761A (zh) | 一种高速多模式循环移位的电路 | |
RU2736704C1 (ru) | Счетчик групповой структуры с сохранением количества единиц в группах | |
JP5208080B2 (ja) | シーケンス制御回路及び制御回路 | |
RU2319192C2 (ru) | Устройство для построения программируемых цифровых микропроцессорных систем | |
Malliyoor et al. | Comparison of hardware implementation and power consumption of low-power multiple output linear feedback shift register | |
US8299817B2 (en) | Circuit and method for adding dither to vertical droop compensation using linear feedback shift registers | |
JP5116499B2 (ja) | 演算処理回路 | |
CN107508604A (zh) | 一种Turbo码并行RP交织方法及并行RP交织器 | |
RU2409842C1 (ru) | Устройство кросс-кластерной управляемой перестановки информации, хранимой в персональной эвм |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190417 Address after: 215600 A10, 100 North Ring Road, Tangqiao Town, Zhangjiagang City, Jiangsu Province Patentee after: Weimi (Suzhou) Information Technology Co., Ltd. Address before: 475001 Henan province city Minglun Street No. 85 Patentee before: Henan University |