线性反馈移位寄存器的差分能量攻击 - 电子与信息学报200909

线性反馈移位寄存器的差分能量攻击 - 电子与信息学报200909
线性反馈移位寄存器的差分能量攻击 - 电子与信息学报200909

第31卷第10期电子与信息学报Vol.31No.10 2009年10月 Journal of Electronics & Information Technology Oct. 2009

线性反馈移位寄存器的差分能量攻击

臧玉亮韩文报

(解放军信息工程大学信息工程学院郑州 450002)

摘要:能否有效去除算法噪声的影响,直接关系到能量攻击成败。该文以线性反馈移位寄存器(LFSR)相邻两个时钟周期的能量消耗差异为出发点,提出了一种新的差分能量攻击算法。它从根本上去除了密码算法噪声在攻击过程中带来的影响。由于该算法随机选择初始向量(initialization vector),从而使攻击者能够容易地将其推广到具有类似结构的流密码体制。为了进一步验证攻击算法的有效性,该文利用软件仿真的方法对DECIM进行了模拟攻击。

仿真结果表明,该攻击算法能够有效降低LFSR的密钥搜索的复杂度。

关键词:流密码;差分能量攻击;线性反馈移位寄存器;DECIM;复杂度

中图分类号:TN918.4 文献标识码:A 文章编号:1009-5896(2009)10-2406-05

Differential Power Attack on Liner Feedback Shift Register

Zang Yu-liang Han Wen-bao

(Institute of Information Engineering, PLA Information Engineering University, Zhengzhou 450002, China)

Abstract: Whether the algorithm noise can be effectively wiped off decides the success or loss of the power analysis attack. This paper offers a new differential power analysis attack algorithm, which is based on the consumed power differences between two neighboring clock cycles of liner feedback shift register. This new attack algorithm radically wipes off the effect of cipher algorithm noise in the process of attack. Because this algorithm randomly chooses initialization vectors, the attackers can easily extend the algorithm to other stream ciphers that have similar structures. In order to further validate the algorithm’s availability, simulative attacks on DECIM are carried on with the method of software simulation. And the result shows that this algorithm can effectively reduce the complexity of the exhaustive search on LFSR.

Key words: Stream cipher; Differential Power Attack (DPA); Liner Feedback Shift Register (LFSR); DECIM;

Complexity

1引言

一个完整的密码系统由密码算法设计者,硬件设计者和软件设计者共同开发完成,但他们的工作又相互独立,各层设计者通常只考虑本层的安全问题,并且一层的设计者并不一定了解其他层设计者的工作,比如密码算法设计者并不一定具有较高的硬件知识水平。其次,由于现代制造工艺的限制,无法做到在硬件中的任何运算都消耗相同的能量。因此综合上述两个原因,使得密码系统在旁道攻击[1,2]面前出现了诸多可被攻击者利用的漏洞。

自密码算法设计之初,设计者就开始考虑其算法自身抗已知攻击的能力,如代数攻击[3]。因此,攻击者从密码算法的角度来分析一个密码体制变得越来越困难。然而,旁道攻击的出现给密码算法带来了严重威胁。

从Kocher提出能量攻击方法[4]以来,它被广泛应用于分组密码(如AES, DES)和公钥密码(如RSA,

2008-10-14收到,2009-06-25改回ECC)分析。研究的广泛性说明了能量攻击方法对于这两种密码体制的有效性。但是我们却很少看到对流密码的能量攻击研究。文献[5]给出了eSTREAM[6]第3阶段相关候选算法抗旁道攻击的理论评估。文献[7]对GSM手机使用的A5/1流密码算法和蓝牙中所使用的E0流密码算法进行了能量攻击理论分析,给出了已知初始IV的攻击算法。文献[8]通过观察能量消耗与LFSR初态之间的关系建立方程,进而求得初态。文献[9]是第1篇对基于硬件的流密码进行实际能量攻击的文章。它针对eSTREAM中的Grain 算法和Trivium算法提出了选择IV的攻击算法。有针对性地选择16个IV来降低密码算法噪声对攻击的影响,虽然作者成功获得了算法密钥,但是如何针对不同的算法来选择IV并没有给出选择规则,因此给该攻击算法的广泛适用带来了影响。

当攻击者对于一个流密码算法进行能量攻击时,如何克服算法噪声给攻击过程带来的影响是他必须考虑的问题。当LFSR的状态在某一个时钟发生变化时,攻击者可以从示波器上看到当前时钟整

第10期 臧玉亮等:线性反馈移位寄存器的差分能量攻击 2407

个LFSR 的电流或电压变化,但是却无法从中看到某一个触发器的变化。在这样的条件下,攻击者根据一个触发器建立的选择方程来划分整个LFSR 的能量是不切实际的。理想的情况是,攻击者根据一个触发器建立的选择方程所划分的能量只与该触发器有关,而与剩余触发器无关。因此,本文通过考察LFSR 相邻时钟的能量消耗差异,使得观察到的能量变化差异只与LFSR 最左端和最右端的触发器有关,并据此提出了一种全新的方法来实施差分能量攻击。与文献[9]有针对性的选择IV 不同,本文方法能够在随机选择IV 的情况下,有效去除算法噪声的影响。

本文内容安排如下:在第2节中结合LFSR 的能量模型和相邻时钟的能耗关系提出算法1—差分能量攻击算法;针对第2节中提出的攻击算法,在第3节中给出了DECIM [10]流密码算法的理论攻击方法和密钥穷尽规模分析;在第4节中,我们结合模拟攻击的软件仿真结果给出了恢复第1轮32 bit 密钥的时间估计,并分析了软件仿真结果峰值不唯一的原因;第5节是结束语。

2 LFSR 的差分能量攻击

2.1 LFSR 的能量模型

在流密码的硬件实现中,触发器(flip flop)和布尔逻辑门是关键的组成部分[11],其中触发器是组成LFSR 的基础部件,用来记录LFSR 的状态。当流密码运行时,能量消耗的大部分集中在触发器上,也就是LFSR 在状态发生变换的时候。文献[11]给出了触发器和逻辑门的能量消耗对比,从中可以看到触发器的能量消耗较其它逻辑部件高出许多。所以,本文通过触发器的能量消耗来刻画LFSR 的能量模

型。为叙述简单,文中只考虑有限域2F 上的LFSR 。

假设 设,a b 表示2F 上触发器的状态,即{},0,1a b ∈,()P ab 表示由a 变化到b 所消耗的能量,

则有A :()01P 和()10P 消耗的能量相同;

B :()00P 和()11P 消耗的能量相同;

C :()()00=11P P ()()01=10P P 。

本文用汉明距离模型来刻画一个时钟内LFSR 的能量消耗。LFSR 由时钟信号触发,而后每个时钟改变一次LFSR 的状态,整个LFSR 的状态向左或右移一位。攻击者可以在假设基础上,通过计算相邻两个LFSR 状态的汉明距离来模拟当前时钟消耗的能量。即在一个时钟内,LFSR 中“0”变化到“1”和“1”变化到“0”的触发器个数。用状态发生变化的触发器个数表示一个时钟内LFSR 的能量消耗。如果记录下每一个相邻时钟触发器状态发生

变化的个数,那么就可以得到一条能量消耗轨迹。 2.2 相邻时钟的能量消耗关系

设LFSR 的级数是n ,反馈多项式为()f ?,其抽头个数为m ,则它有n 个存储单元,每一个存储单元都是一个触发器,其中影响()f ?的触发器个数为m 。()s l 表示LFSR 第l 个输出比特值,()s l {}0,1∈,其中021n l ≤≤?。LFSR 的状态每一个时钟向右移1位同时输出1 bit 。若12LS ,LS ,LS t t t ++分别表示LFSR 在第,1,+2t t t +个时钟的状态,则设LS {(1),,(0)}t s n s =?",()1LS {,,(1)}t s n s +=",()(){}2LS 1,,2t s n s +=+",其中()((1),s n f s n =? ,(0))s ",()()1(,,(1))s n f s n s +="。

由文献[8]可进一步推导出定理1和推论1。 定理 1 设HD t 表示1LS ,LS t t +的汉明距离,PD t 表示第t 和1t +个时钟的能量消耗差异,通过2.1节的讨论,可直接用PD t i +表示第i 轮的实际能量消耗差异,0i ≥。则 ()()()(())()()1

112PD HD HD HW LS ,LS HW LS ,LS HW 01HW ()1t t t t t t t s s s n s n ++++=?=?=⊕?⊕+ (1)

当()()10s n s n ⊕+=时,则()()PD 01t s s =⊕;

当()()11s n s n ⊕+=时,则()PD 0t s =⊕ ()11s ?。

推论1 设HD t i +表示1LS ,LS t i t i +++的汉明距离,PD t i +表示第t i +和1t i ++个时钟的能量消耗差异,则

()(())

()()()

1PD HD HD HW 1 HW 1t i t i t i s i s i s n i s n i ++++=?=⊕+?+⊕++ (2)

当()()+10s n i s n i +⊕+=时,则i PD t += ()()+1s i s i ⊕,记为()0PD t i +;

当()()+11s n i s n i +⊕+=时,则()i PD t s i += ()+11s i ⊕?,记为()1PD t i +。

下面以第i 轮为例,分析根据推论1去除算法噪声的原因。通过对相邻两个时钟的汉明距离进行比较,可知HD t i +和1HD t i ++之间有1n ?项重复,故PD t i +只与()()()(),1,,1s i s i s n i s n i ++++有关。若设选择方程()()i+1C s n i s n =+⊕+,那么第i 轮的能量消耗差异PD t i +将直接由选择方程C 决定。所以去掉了1n ?个重复项产生的能量对选择方程C 的影响,达到了去除算法噪声的目的,进而提高了选择方程C 的划分精度。 2.3 LFSR 差分能量攻击算法

由推论1可知,相邻两个时钟的触发器翻转个

2408 电 子 与 信 息 学 报 第31卷

数在()()i+10s n i s n +⊕+=时比()(s n i s n +⊕+ +1)1i =时多一个,所以在能量消耗上()0PD t i +较()1PD t i +大。另外,LFSR 的初始化一般是通过密钥K 和IV 以及它们之间的运算来填充LFSR 状态。因此本文提出算法1,它在密钥K 固定的情况下,通过LFSR 不同时钟间的能量消耗差异,恢复LFSR 的密钥K 。

假设恢复LFSR 的密钥K 需要k 轮。在反馈多项式的m 个抽头中有r 个抽头完全由IV 决定,设IV 集合为SET_IV ,阶为d ;剩下的m r ?个抽头由密钥K 或者K 和IV 共同决定,则每个时钟的密钥穷尽量为2m r ?,相邻两个时钟的密钥穷尽量最大为()22m r ?。若选择方程()()+1C s n i s n i =+⊕+,

则当0C =时对应的能量集合为SET_P0;

当1C =时对应的能量集合为SET_P1。在攻击算法开始前,假定已经采集到了由SET_IV 中不同IV 和固定密钥K 所对应的连续k 轮的能量消耗差异PD t i +。

算法1 LFSR 差分能量攻击算法 for =0i to 1k ?

for _num = 0K to ()221m r ??

for IV_num=1to d

步骤1 从SET_IV 中选取一个IV ;

步骤2 根据IV 和假定的子密钥_num K 对LFSR 的抽头位置进行填充;

步骤3 根据反馈多项式()f ?,计算相邻两个时钟的()s n i +和()1s n i ++;

步骤4 计算选择方程

()()1C s n i s n i =+⊕++ (3)

当=0C 时,将PD t i +放入集合SET_P0; 当C=1时,将PD t i +放入集合SET_P1; 结束

步骤5 计算差分公式

PD SET_P0

PD SET_P1

1

peak (1)PD SET_P01 PD SET_P1

t i t i t i

t i

C C +++∈+∈=???

?∑∑

(4)

步骤6 选择最大的peak 对应的子密钥

_num K 为第i 轮的真子密钥;

结束

步骤7 返回最外层循环,寻找下一轮LFSR 抽头所用到的子密钥。

结束

3 DECIM 的差分能量攻击

3.1 DECIM

DECIM 是一个面向硬件的流密码算法,是

eSTREAM 计划第3阶段候选算法之一。它的密钥K 长度为80 bit ,记为K =()0179,,,K K K ",IV 长度为64 bit ,记为(01IV=IV , IV ,,")63IV 。DECIM 是由一个2F 上192级线性反馈移位寄存器,一个有14个变量的布尔函数()g ?,一个不规则混乱机制(ABSG)和一个32 bit 输出缓存组成。DECIM 共有192 bit 内部状态19119010(,,,,)a a a a ",LFSR 的初始化过程可以通过式(5)表示:

设t K 是第t 个时钟的密钥,IV t 是第t 个时钟的初始值,其中2{,IV }t t K F ∈,则

808080144128112160

128, 079IV , 80143=IV IV IV , 144159IV IV 1, 160191t t t t t t t t t t K t K t a K t t ?????????≤≤????⊕≤≤????⊕⊕⊕≤≤????⊕⊕≤≤??? (5) 在对LFSR 进行初始化后,LFSR 空转768个

时钟,不输出任何值,如图1。设反馈多项式()f ?和布尔函数()g ?在第192i +个时钟的输出分别记为i c 和i b 。因此192i a +在第192i +个时钟的值为

192i i i a b c +=⊕

(6)

图1 IV/keysetup 阶段流程图

3.2 能量模型

DECIM 的硬件实现中共用到了196个触发器,其中192个用于LFSR ,4个用于ABSG ,其余是加法和异或等逻辑门[10]。在IV/key setup 阶段,第

192i +个时钟的能量消耗()192P i +将包含4部分:

192个触发器消耗的能量,记为()191

120

j ff j p s s =∑,()f ?消

耗的能量f P ,()g ?消耗的能量g P ,

一个()()f g ?⊕?中异或消耗的能量xor P 和非算法噪声ε。记为 ()()191

12xor 0192j ff f g j P i p s s P P P ε=+=++++∑ (7)

其中()12j ff p s s 表示第j 个触发器由1s 翻转到2s 所消耗的能量,用汉明距离模型进行刻画,1j ≥。因此在IV/key setup 阶段算法每个时钟的能量消耗主要集中在192个触发器的状态变换上。

本文提出的对于DECIM 的能量攻击是针对

第10期 臧玉亮等:线性反馈移位寄存器的差分能量攻击 2409

LFSR 的IV/key setup 阶段。当LFSR 在经过初始化后,空转768个时钟。在每个空转时钟内,LFSR 的状态将进行更新而不输出产生的密钥流。在自同步阶段,DECIM 算法的其他部件并不发生作用,因此采集到的能量只与LFSR 有关。在上述768个时钟内,192i a +只与80 bit K 和64 bit IV 有关。在对于DECIM 的攻击中,本文假定密钥K 保持不变,随机选取不同的64 bit IV ,进行多次加密并且记录能量轨迹,每条能量轨迹中可以使用的部分为768个时钟。同时,可以通过对同一个IV 进行多次加密,然后计算其期望来减少非算法噪声的影响。这是因为非算法噪声服从正态分布,其方差将会随着实验次数增加而减小。

3.3 DECIM 差分能量攻击算法

在攻击算法开始前,假定已经采集到了由SET_IV 中不同IV 和固定密钥K 所对应的空转768个时钟的能量消耗,进而求得767轮的能量消耗差异192PD i +。

DECIM 算法的反馈值192i a +与LFSR 的28个抽头有关,其中有8个抽头完全由IV 决定,6个由K 和IV 共同决定,14个完全由K 决定。任意两个相邻时钟的子密钥穷尽量为40

2。DECIM 差分能量攻击算法中的符号定义同算法1,不再赘述。

DECIM 差分能量攻击算法 for =0i to 766

for _num = 0K to 4021?

for IV_num=1 to d

步骤1 从SET_IV 中选取一个IV ;

步骤2 根据IV 和假定的子密钥_num K 对LFSR 的抽头位置进行填充;

步骤3 根据()f ?和()g ?,

计算相邻两个时钟的()s n i +和()1s n i ++;

步骤4 计算选择方程

()()1C s n i s n i =+⊕++ (8) 当=0C 时,将192PD i +放入集合SET_P0; 当=1C 时,将192PD i +放入集合SET_P1; 结束

步骤5 计算差分公式

192192192PD SET_P0192PD SET_P1

1

peak (1)PD SET_P01 PD SET_P1

i i i

i

C C +++∈+∈=???

?∑∑

(9)

步骤6 选择最大的peak 对应的子密钥

_num K 为第i 轮的真子密钥;

结束

步骤7 返回最外层循环,寻找下一轮抽头所

用到的子密钥。

结束

3.4 密钥穷尽规模

实际的攻击过程中每一轮穷尽的密钥量并没有达到402。以第1轮为例来进行分析。在第1轮中用到768个空转时钟中的前两个,即第192和193个时钟。在第192个时钟内,根据式(5)可以求得与()f ?有关的密钥比特为0341823353637,,,,,,,,K K K K K K K K 606166,,K K K ,与()g ?有关的密钥比特为11324,,,K K K 28314554,,,,K K K K ;同理,在第193个时钟内,与()f ?有关的密钥比特为14519243637,,,,,,,K K K K K K K 38616267,,,K K K K ,与()g ?有关的密钥比特为214,,K K 25293246556566,,,,,,K K K K K K K 。其中两个时钟重复的密钥比特为14243637616566,,,,,,,K K K K K K K K ,因此第1轮需要穷尽的密钥比特为32个。其他各轮穷尽的密钥比特如表1所示。

表1 DECIM 差分能量攻击各轮需要穷尽的密钥 轮数 穷尽的密钥比特

0123451314181923242528293132353637384546,,,,,,,,,,,,,,,,,,,,,,,

K K K K K K K K K K K K K K K K K K K K K K K

545560616264656667,,,,,,,,K K K K K K K K K

1 615202630333947566368,,,,,,,,,,K K K K K K K K K K K

2 71621273440485769,,,,,,,,K K K K K K K K K

3 8172241495870,,,,,,K K K K K K K

4 942505971,,,,K K K K K

5 10435172,,,K K K K

6 11445273,,,K K K K

7 125374,,K K K

8

75K

通过9轮的运算可以得到76 bit 密钥信息,剩余的4 bit 可以通过直接穷尽得到。对DECIM 实施能量攻击,其总的密钥穷尽规模是232+211+29+27+

25+24+24+23+21+24≈O (232)。

攻击者可以根据自身的能力,在能量攻击和暴力穷尽攻击间寻找一个最佳点来降低获得全部密钥的时间。

4 软件仿真与分析

在Pentium4 1.5 GHz ,384 MB 内存的微机上,本文使用软件仿真方法验证DECIM 差分能量攻击算法的有效性,在整个过程中没有使用任何外部设备,如示波器,高精度电源。用C 语言实现了DECIM 算法及其能量攻击算法。对于攻击算法中涉及到的能量消耗差异192PD i +,按照如下方法进行了仿真,即当()()10s n i s n i +⊕++=时,则()192PD i s i +=

2410 电 子 与 信 息 学 报 第31卷

()1s i ⊕+;当()()11s n i s n i +⊕++=时,则192PD i +()(1)1s i s i =⊕+?。为使能量消耗差异表示方便,设当()()10s n i s n i +⊕++=时,192PD i + 1=;否则,192PD 0i +=。将SET_IV 的阶定为32。计算前两个相邻时钟的能量消耗差异的密钥穷尽量

为232,

理论峰值peak 应当为1。在上述硬件平台上,表2给出了对4组不同数据进行模拟攻击的实验结果。通过比较可得,选出比例平均为 4.169‰,每10000个密钥穷尽平均时间为8.777 s ,因此只恢复前两个时钟所用到的32 bit 子密钥理论耗时3,769,692 s ,约43.63天,筛选出子密钥个数约为17,905,718。

表2 模拟攻击数据统计表

穷尽子 密钥总数

选出 子密钥个数

选出比例

(‰)

耗时(s)

200,000 838 4.19 181.7 500,000 2,016 4.302 440.4

1,000,000 4,056 4.056 881.7 10,000,000 41,284 4.128 8399.9

下面分析筛选出的子密钥不唯一的原因。由式(6)可知,在每一个时钟所涉及到的20 bit 子密钥中,有11个与()f ?有关,剩余抽头与()g ?有关。因为对于每一个假设的子密钥都用相同的32个IV 来计算()s n i +,所以IV 对()s n i +的影响被抵消。当()f ?抽头位置的汉明重量相同时,()f ?对于()s n i +的影响被抵消,而对于布尔函数()g ?对()s n i +的分析较复杂,在这里不再论述。结合上述分析,可以看到符合峰值peak = 1的子密钥并不唯一的原因。

5 结束语

本文给出了LFSR 差分能量攻击的一般算法。该算法能够高效的去除算法噪声对攻击的影响,进而证明了差分能量攻击对于流密码的切实威胁。对DECIM 的仿真结果表明,该算法能够为进一步分析工作缩小密钥穷尽空间。因此,该算法在分析以LFSR 为驱动部件的流密码体制时具有较好的效果。为了更全面地对该算法进行评估,我们将依靠硬件模拟器或物理测试方法对其进行验证,进而将它广泛应用于流密码设计与研究工作中。 参 考 文 献

[1]

Jean-Jacques Quisquater and Math RiZK. Side channel attacks. http://www.ipa.go.jp/security/enc/CRYPTREC/ fy15 /doc/1047_Side_Channel_report.pdf, 2008.9. [2]

Zhou Yong-bin and Feng Deng-guo, et al .. Side-channel attacks: Ten years after its publication and the impacts on cryptographic module security testing. http://eprint.iacr. org/ 2005 / 388.pdf, 2008.4. [3]

Courtois N T and Meier W, et al .. Algebraic attacks on stream ciphers with linear feedback [C]. Advances in Eurocrypt 2003, Warsaw Poland, Lecture Notes in Computer Science, May 4-8, 2003, Vol. 2656: 345-359. [4]

Kocher P C, Jae J, and Jun B, et al .. Differential power analysis [C]. CRYPTO' 99, Santa Barbara, CA, USA, Lecture Notes in Computer Science, Aug 15-19, 1999, Vol. 1666: 388-397.

[5] Gierlichs B, Batina L, and Clavier C, et al .. Susceptibility of eSTREAM candidates towards side channel analysis. https://www.360docs.net/doc/2a15585639.html,/stream, 2008.3.

[6] ECRYPT. eSTREAM. https://www.360docs.net/doc/2a15585639.html,/stream/, 2008.9. [7]

Lano J, Mentens N, and Preneel B, et al .. Power analysis of synchronous stream ciphers with resynchronization mechanism [C]. SASC Workshop, Novotel Brugge Centrum, Belgium, Workshop Record, Oct 14-15, 2004: 327-333. [8]

Burman S, Mukhopadhyay D, and Veezhinathan K, et al .. LFSR based stream ciphers are vulnerable to power attacks [C]. INDOCRYPT 2007, Chennai, INDIA, Lecture Notes in Computer Science, Dec 9-13, 2007, Vol. 4859: 384-392. [9]

Fischer W, Gammel B M, and Kniffler O, et al .. Differential power analysis of stream ciphers [C]. CT-RSA 2007, San Francisco, CA, USA, Lecture Notes in Computer Science, Feb 5-9, 2007, Vol. 4377: 257-270.

[10] Berbain C, Billet O, and Canteaut A, et al .. DECIMv2.

https://www.360docs.net/doc/2a15585639.html,/stream/decim/decim_p3.pdf, 2007.5.

[11] Kumar S, Lemke K, and Paar C, et al .. Some thoughts about

implementation properties of stream ciphers [C]. SASC Workshop, Novotel Brugge Centrum, Belgium, Workshop Record, Oct 14-15, 2004: 311-319.

臧玉亮: 男,1982年生,硕士生,研究方向为流密码能量攻击. 韩文报: 男,1963年生,教授,博士生导师,主要研究方向为信

息安全.

移位寄存器 第三章答案

第三章习题参考答案 1.画出以1)(2 4 6 +++=x x x x f 为联接多项式的线性移位寄存器逻辑框图,及其对应的状态图。 解:由1)(2 46+++=x x x x f ,得反馈函数为531621),,,(x x x x x x f ++=Λ,故 (1)逻辑框图: (2)状态图: 状态圈-1: 状态圈-2: 状态圈-3: 状态圈-4: 状态圈-5: 状态圈-6: 状态圈-7: 状态圈-8:

状态圈-9: 状态圈-10: 状态圈-11: 状态圈-12: 2.已知图3-2所示的7级线性反馈移位寄存器: 图3-2 (1)绘出该移位寄存器的线性递推式,联接多项式及特征多项式。 (2)给出状态转移矩阵。 (3)设初态为(1 1 1 1 1 1 1),给出输出序列a 。 解:(1)由逻辑框图得,递推式为: k k k k a a a a ++=+++357 ()0≥k 。 联接多项式为:7 4 2 1)(x x x x f +++=。 特征多项式为:7531)(~ x x x x f +++=

(2)状态转移矩阵:? ? ???? ? ?? ? ? ??0100000 101000000010001000100 000001000000011000000。 (3)输出序列:)111111111(ΛΛ=- a 。 3.设5级线性反馈移位寄存器的联接多项式为1)(2 5 ++=x x x f ,初态为(10101)。求输出序列a 。 解:由联接多项式得,反馈函数为:41521),,,(x x x x x f +=Λ。故以)10101(为初态的状态转移图为: 10101 01010001010001000001100000100000100100100100110100110100110100110100111100111100111101111101111001110001110001110000110010110110111110101110101110101110101→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 由此可得,输出序列为:=a 44444443444444421一个周期 0110100100000011111001010111011…。 4.证明:n 级线性反馈移位寄存器的状态转移变换是n 维线性空间n F 2上的线性变换。 证明:设f T 为n 级线性移位寄存器的状态转移变换,对n F 2,∈?βα,令),,,(110-=n a a a Λα, ),,,(110-=n b b b Λβ,有: ),,,(),,,()(121110∑=--==n i i n i n f f a c a a a a a T T ΛΛα, ),,,(),,,()(1 21110∑=--==n i i n i n f f b c b b b b b T T ΛΛβ。 ) ()() ,,,(),,,() )(,,,() ,,,()(1 211 2112211111100βαβαf f i n n i i i n n i i n i i n i n i n n f f T T b c b b a c a a b a c b a b a b a b a b a T T +=+=+++=+++=+-=-==----∑∑∑ΛΛΛΛ 对 2F k ∈?, ))((),,,(),,,()(1 21110ααf i n n i i n f f T k a c k ka ka ka ka ka T k T ===-=-∑ΛΛ。 故n 级线性反馈移位寄存器的状态转移变换是n 为线性空间n F 2上的线性变换。

32位移位寄存器

实验四 一、实验名称 32位并进/并出移位寄存器设计 二、实验原理 用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。 三、实验步骤 1、建立一个工程项目,设置路径,项目名和顶层实体名一致; 2、设计一个8位移位寄存器电路; 3、设计一个8位锁存器电路; 4、运用元件调用声明语句和元件例化语句完成顶层设计。 四、实验程序 1、八位移位寄存器程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jicun IS PORT ( CLK,CO: IN STD_LOGIC; --时钟和进位输入 MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 待加载移位的数据 QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --移位数据输出 CN : OUT STD_LOGIC); --- 进位输出 END jicun; ARCHITECTURE behav OF jicun IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY : STD_LOGIC; BEGIN

PROCESS(CLK,CO,MD) BEGIN IF CLK'EVENT AND CLK='1' THEN CASE MD IS WHEN "001"=> REG(0)<=CO; ---带进位循环左移 REG(7 DOWNTO 1)<= REG(6 DOWNTO 0);CY<=REG(7); WHEN "010" => REG(0)<=REG(7); ---自循环左移 REG(7 DOWNTO 1)<= REG(6 DOWNTO 0); WHEN "011"=>REG(7)<=REG(0); ---自循环右移 REG(6 DOWNTO 0)<=REG(7 DOWNTO 1); WHEN "100" =>REG(7)<=CO; ---带进位循环右移 REG(6 DOWNTO 0)<=REG(7 DOWNTO 1);CY<=REG(0); WHEN "101" =>REG(7 DOWNTO 0)<=D(7 DOWNTO 0); --加载待移数 WHEN OTHERS=>REG<=REG;CY<=CY;--保持 END CASE; END IF; END PROCESS; QB(7 DOWNTO 0)<=REG(7 DOWNTO 0);CN<=CY; END behav; 2、锁存器程序 library ieee ; use ieee.std_logic_1164.all ; entity suocun is port(d : in std_logic_vector(7 downto 0) ; q: out std_logic_vector(7 downto 0); clk : in std_logic ); end suocun ; architecture one of suocun is signal q1: std_logic_vector(7 downto 0);

线性反馈移位寄存器(LFSR)

最近一直在研究信道编码,发现在信道编码里面有一个电路比较重要也比较有趣,那就是线性反馈移位寄存器LFSR ,相信大家对LFSR 电路也不陌生了,在通信领域lfsr有着很广泛的应用,比如说M序列,扰码,信道编码,密码学这方面都有很广泛的应用,LFRS的结构一般如下图: 其中他需要一个生成多项式为: 这个多项式是一个本原多项式,然后知道这个电路有一些有意思的性质,下面我以m = 3 来做个例子具体的电路图如下所示: 假设开始的时候(D2,D1,D0 )= (0,0,1),那么每过一个时钟周期会进行跳变一次, 可以看到具体的跳变如下所示:

然后我们可以看到这个计数器循环起来了,很好玩吧,无论进入那样一个状态除了0之外,都可以循环着回来,其实这里就相当于了一个3bit的伪随机数,很有意思,不是所有的多项式都有这个特性,我们现在在从数学上面来看看这个问题,其实最上面的电路是可以看成是一个除法电路,在Galois域的一个除法电路。现在假设的是R(x)是寄存器中剩余的数据,M(x)是输入的码字多项式,然后数学公式可以表示成: 然后我分别计算出了M(x)的各种情况,

然后我们单独进行一下7次方的运算 发现7次方的运算和0次的时候的余数是一样的 然后我们发现其实在上面的电路中对多项式的除法也是可以循环起来的,可以验证的是

把这个记成 上面的式子是可以循环的,然后我又想到了CRC的计算,CRC的计算也可以通过一个除法电路来实现, 假设码子多项式为 生成多项式为 那么CRC的码字为这样我们同样可以用LFSR电路来进行实现 首先对M(x)乘以一个x的r次方,然后去去除G(x),在电路上的表现就是 所以在输入码字以后还需要多输入r拍的0这样才能使最后的CRC码字数据. 同理这个电路也可以进行CRC校验,把生成的数据全部都依次输入进这个 Love is not a maybe thing. You know when you love someone.

作业参考答案级线性反馈移位寄存器在c=时可有种

第二章作业参考答案1.3级线性反馈移位寄存器在c3=1时可有4种线性反馈函数,设其初始状态为 (a1,a2,a3)=(1,0,1),求各线性反馈函数的输出序列及周期。 解:此时线性反馈函数可表示为f(a1,a2,a3)=a1?c2a2?c1a3 当c1=0,c2=0时,f(a1,a2,a3)=a1?c2a2?c1a3=a1, 输出序列为101101…,周期=3 当c1=0,c2=1时,f(a1,a2,a3)=a1?c2a2?c1a3=a1?a2, …,周期=7 当c1=1,c2=0时,f(a1,a2,a3)=a1?c2a2?c1a3=a1?a3, …,周期=7 当c1=1,c2=1时,f(a1,a2,a3)=a1?c2a2?c1a3=a1?a2?a3, 有输出序列为1010…,周期=2 2.设n级线性反馈移位寄存器的特征多项式为p(x),初始状态为(a1,a2,…,a n-1,a n)=(00…01),证明输出序列的周期等于p(x)的阶 证:设p(x)的阶为p,由定理2-3,由r|p,所以r?p 设A(x)为序列{a i}的生成函数,并设序列{a i}的周期为r,则显然有A(x)p(x)=?(x) 又A(x)=a1+a2x+…+a r x r-1+x r(a1+a2x+…+a r x r-1)+(x r)2(a1+a2x+…+a r x r-1)+… =a1+a2x+…+a r x r-1/(1-x r)=a1+a2x+…+a r x r-1/(x r-1) 于是A(x)=(a1+a2x+…+a r x r-1)/(x r-1)=?(x)/p(x) 又(a1,a2,…,a n-1,a n)=(00…01) 所以p(x)(a n x n-1+…+a r x r-1)=?(x)(x r-1)即p(x)x n-1(a n+…+a r x r-n)=?(x)(x r-1) 由于x n-1不能整除x r-1,所以必有x n-1|?(x),而?(x)的次数小于n,所以必有?(x)=x n-1 所以必有p(x)|(x r-1),由p(x)的阶的定义知,阶p?r 综上所述:p=r# 3.设n=4,f(a1,a2,a3,a4)=a1?a4?1?a2a3,初始状态为(a1,a2,a3,a4)=(1,1,0,1),求此非线性反馈移位寄存器的输出序列及周期。 解:由反馈函数和初始状态得状态输出表为 (a4 a3 a2 a1)输出(a4 a3 a2 a1)输出 1011111111 1101101111 1110010111(回到初始状态) 所以此反馈序列输出为:11011…周期为5 4.设密钥流是由m=2s级LFSR产生,其前m+2个比特是(01)s+1,即s+1个01。问第m+3个比特有无可能是1,为什么? 解:不能是1。 可通过状态考察的方法证明以上结论。 首先m级LFSR的状态是一个m维的向量,则前m个比特构成一个状态S0,可表示为(01)s, 第m+1个比特是0,所以S0的下一个状态是S1=(10)s, 第m+2个比特是1,所以S1的下一个状态是S2=(01)s=S0,回到状态S0, 所以下一个状态应是S3=S1=(10)s,也即第m+3个比特应该为0。 5.设密钥流是由n级LFSR产生,其周期为2n-1,i是任一正整数,在密钥流中考虑以下比特对 (S i,S i+1),(S i+1,S i+2),…,(S i+2n-3,S i+2n-2),(S i+2n-2,S i+2n-1), 问有多少形如(S j,S j+1)=(1,1)的比特对?证明你的结论。

8位移位寄存器的电路设计与版图实现

8位移位寄存器的电路设计与版图实现 摘要 电子设计自动化,缩写为EDA,主要是以计算机为主要工具,而Tanner EDA则是一种在计算机windows平台上完成集成电路设计的一种软件,基本包括S-Edit,T-Spice,W-Edit,L-Edit与LVS等子软件,其S-Edit以及L-Edit为常用软件,前者主要实现电路设计,后者主要针对的是已知电路的版图绘制,而T-Spice主要可实现电路图及版图的仿真,可以用Tanner EDA实现电路的设计布局以及版图实现等一系列完整过程。本文用Tanner EDA工具主要设计的是8位移位寄存器,移位寄存器主要是用来实现数据的并行和串行之间的转换以及对数据进行运算或专业处理的工具,主要结构构成是触发器,触发器是具有储存功能的,可以用来储存多进制代码,一般N 位寄存器就是由N个触发器构成,移位寄存器工作原理主要是数据在其脉冲的作用下实现左移或者右移的效果,输入输出的方式表现为串行及并行自由组合,本设计就是在Tanner EDA的软件平台上进行对8位移位寄存器的电路设计仿真,再根据电路图在专门的L-Edit 平台上完成此电路的版图实现,直至完成的结果和预期结果保持一致。 关键词:Tanner EDA;L-Edit;移位寄存器,S-Edit

8 bits shift register circuit design and layout Abstract Electronic design automation,referred to as EDA,it is based on computers as the main tool,and Tanner EDA is a kind of software that complete the integrated circuit design on Windows platforms.Its Sub-Softwares include S-Edit,T-Spice,W-Edit,L-Edit and LVS and so on.S-Edit and L-Edit are commonly used software,S-Edit is primarily designed to achieve circuit,the latter is aimed primarily known circuit layout drawing,T-Spice can achieve schematic and layout simulation.We can achieve layout of the circuit design and a series of complete process layout used Tanner EDA tools.In this paper, Tanner EDA tools are mainly designed an 8-bit shift register.The shift register is mainly used for data conversion between parallel and serial, and the data processing tool operation or professional,its main structure is the trigger composition,flip-flop is a storage function,it can be used to store more hexadecimal code,In general N-bits register is composed of N trigger.Working principle of the shift register data under the action of the pulse, mainly the effect of the shift to the left or right,input and output of the way of serial and parallel free combination.This design is in Tanner on the EDA software platform to 8 bits shift register circuit design and simulation,then according to the circuit diagram on special L - Edit platform to complete the circuit layout implementation,until the finish is consistent with the results and expected results. Keywords:Tanner EDA;L-Edit;Shift register,S-Edit

作业参考答案3级线性反馈移位寄存器在c3=1时可有4种

1. 3级线性反馈移位寄存器在 C 3 = 1时可有4种线性反馈函数,设其初始状态为 (a i , a 2, a 3)=(1,0,1),求 各线性反馈函数的输出序列及周期。 解:此时线性反馈函数可表示为 f (a 1, a 2, a 3)= a C 2a 2 C 1 a 3 当 C 1 = 0, C 2= 0 时, f (ai, a 2, a 3)= :a 1 C 2a 2 C £3= a 1, 输出序列为 101101 …, 周期=3 当 C 1 = 0, C 2= 1 时, f (ai,a 2, a 3)= :a 1 C 2a 2 C 1 a 3= a 1 a 2, 输出序列为 0… …,周期=7 当 C 1= 1, C 2= 0 时, f (ai,a 2, a 3)= :a 1 C 2a 2 oa 3= a 1 a 3, 输出序列为 1… …,周期=7 当 C 1= 1, C 2= 1 时, f (ai,a 2, a 3)= :a 1 C 2a 2 C 1 a 3= a 1 82 a 3, 有输出序列为 1010 …, 周期=2 2. 设n 级线性反馈移位寄存器的特征多项式为 p (x ),初始状态为 (a i ,a 2,…,a n-i , a n )=(00…01),证明输 出序列的周期等于 p (x )的阶 证:设p (x )的阶为p ,由定理2-3,由r | p ,所以r p 设A (x )为序列{a 。的生成函数,并设序列{a }的周期为r ,则显然有A (x )p (x ) = (x ) 又 A (x ) = a+a 2x +…+ax +x (a 1+a 2x +…+a 「x )+( x ) (a+a 2x +…+ax )+ … r-1 r r -1 r =a 1+a 2x +…+a r x /(1- x ) = a+a 2x +…+a 「x /( x -1) 于是 A (x )=( a+a 2x +…+a r X r-1)/( x r -1) = (x )/ p (x ) 又(a 1, a 2,…,a n-1, a n )=(00 …01) 所以 p (x )( a n x +?? ?+ a r x )= (x )( x -1) 即 p (x )x (a n +…+ a 「x )= (x )( x -1) 由于x n-1不能整除x r -1,所以必有x n-1| (x ),而(x )的次数小于n ,所以必有 (x ) = x n-1 所以必有p (x ) | (x r -1),由p (x )的阶的定义知,阶 p r 综上所述:p = r # 3. 设 n = 4, f ( a, a 2, a 3, a 4)= a 1 a 4 1 a 2a 3,初始状态为(a, a 2, a 3, a 4)= (1,1,0,1),求此 非线性反馈移位 寄存器的输出序列及周期。 解: 由反馈函数和初始状态得状态输出表为 (a 4 a 3 32 a 1) 输出 ( a 4 a 3 a ? a 1) 输出 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1 (回到初始状态) 所以此反馈序列输出为: 11011…周期为 5 4. 设密钥流是由 m = 2s 级LFSR 产生,其前m+2个比特是(01) s+1,g 卩s + 1个01。问第m+3个比特有无可 能是1,为什么 解:不能是1。 可通过状态考察的方法证明以上结论。 首先m 级LFSR 的状态是一个 m 维的向量,则前 m 个比特构成一个状态 S 0,可表示为(01) s , 第m + 1个比特是0,所以S c 的下一个状态是 S = (10) s , 第 耐2个比特是1,所以S 1的下一个状态是 S. = (01) s = S 0,回到状态S 0, 所以下一个状态应是 S 3=S = (10) s ,也即第m+3个比特应该为0。 5?设密钥流是由n 级LFSR 产生,其周期为2n - 1, i 是任一正整数,在密钥流中考虑以下比特对 ( S , S +1), ( S +1, S +2),…,(S +2n — 3, S i +2n - 2), ( S +2〔 2, S i+二1),

作业参考答案3级线性反馈移位寄存器在c3=1时可有4种

第二章作业参考答案 1.3级线性反馈移位寄存器在c3=1时可有4种线性反馈函数,设其初始状态为(a1,a2,a3)=(1,0,1),求各线性反馈函数的输出序列及周期。 解:此时线性反馈函数可表示为f(a1,a2,a3)=a1c2a2c1a3 当c1=0,c2=0时,f(a1,a2,a3)=a1c2a2c1a3=a1, 输出序列为101101…,周期=3 当c1=0,c2=1时,f(a1,a2,a3)=a1c2a2c1a3=a1a2, 输出序列为10111001011100…,周期=7 当c1=1,c2=0时,f(a1,a2,a3)=a1c2a2c1a3=a1a3, 输出序列为10100111010011…,周期=7 当c1=1,c2=1时,f(a1,a2,a3)=a1c2a2c1a3=a1a2a3, 有输出序列为1010…,周期=2 2.设n级线性反馈移位寄存器的特征多项式为p(x),初始状态为(a1,a2, …,a n-1,a n)=(00…01),证明输出序列的周期等于p(x)的阶 证:设p(x)的阶为p,由定理2-3,由r|p,所以r p 设A(x)为序列{a i}的生成函数,并设序列{a i}的周期为r,则显然有A(x)p(x)=(x) 又A(x)=a1+a2x+…+a r x r-1+x r(a1+a2x+…+a r x r-1)+(x r)2(a1+a2x+…+a r x r-1)+… =a1+a2x+…+a r x r-1/(1-x r)=a1+a2x+…+a r x r-1/(x r-1) 于是A(x)=(a1+a2x+…+a r x r-1)/(x r-1)=(x)/p(x) 又(a1,a2, …,a n-1,a n)=(00…01) 所以p(x)(a n x n-1+…+a r x r-1)=(x)(x r-1) 即p(x)x n-1(a n+…+a r x r-n)=(x)(x r-1) 由于x n-1不能整除x r-1,所以必有x n-1|(x),而(x)的次数小于n,所以必有(x)=x n-1 所以必有p(x)|(x r-1),由p(x)的阶的定义知,阶p r 综上所述:p=r # 3.设n=4,f(a1,a2,a3,a4)=a1a41a2a3,初始状态为(a1,a2,a3,a4)=(1,1,0,1),求此非线性反馈移位寄存器的输出序列及周期。 解:由反馈函数和初始状态得状态输出表为 (a4 a3 a2 a1) 输出 (a4 a3 a2 a1) 输出 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1(回到初始状态) 所以此反馈序列输出为:11011…周期为5 4.设密钥流是由m=2s级LFSR产生,其前m+2个比特是(01)s+1,即s+1个01。问第m+3个比特有无可能是1,为什么? 解:不能是1。 可通过状态考察的方法证明以上结论。 首先m级LFSR的状态是一个m维的向量,则前m个比特构成一个状态S0,可表示为(01)s, 第m+1个比特是0,所以S0的下一个状态是S1=(10)s, 第m+2个比特是1,所以S1的下一个状态是S2=(01)s=S0,回到状态S0, 所以下一个状态应是S3=S1=(10)s,也即第m+3个比特应该为0。 5.设密钥流是由n级LFSR产生,其周期为2n-1,i是任一正整数,在密钥流中考虑以下比特对

移位寄存器工作方式

一,串行口控制寄存器SCON 它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表: SM0、SM1:串行口工作方式选择位,其定义如下: 其中fosc为晶振频率 SM2:多机通讯控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。 REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。 TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。 RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。 TI:发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。 RI:接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说

明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清0。 二,串行口的工作方式 8051单片机的全双工串行口可编程为4种工作方式,现分述如下: 1,方式0为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。 (1)输出串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。 (2)输入当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD 为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。 2,方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。 (1)输出当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。 (2)输入在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。

74HC164 串入、并出8 位移位寄存器

8 位串入、并出移位寄存器 1. 概述 74HC164、74HCT164 是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。 时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(D SA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。 2. 特性 ?门控串行数据输入 ?异步中央复位 ?符合JEDEC 标准no. 7A ?静电放电(ESD) 保护: ·HBM EIA/JESD22-A114-B 超过2000 V ·MM EIA/JESD22-A115-A 超过200 V 。 ?多种封装形式 ?额定从-40 °C 至+85 °C 和-40 °C 至+125 °C 。 3. 功能图 图 1. 逻辑符号

图 2. IEC 逻辑符号 图 3. 逻辑图 图 4. 功能图 4. 引脚信息

图 5. DIP14、SO14、SSOP14 和 TSSOP14 封装的引脚配置 引脚说明 74HC164中文资料(功能,真值表,引脚图及电气参数介绍) SN54HC164,/SN74HC164是8位移位寄存器,当其中一个(或二个)选通串行输入端的低电平禁止进入新数据,并把第一个触发器在下一个时钟脉冲来后复位到低电平时,门控串行输入端(A 和B)可完全控制输入数据。一个高电平输入后就使另一个输入端赋能,这个输入就决定了第一个触发器的状态。虽然不管时钟处于高电平或低电平时,串行输入端的数据都可以被改变,但只有满足建立条件的信息才能被输入。时钟控制发生在时钟输入由低电平到高电平的跃变上。为了减小传输线效应,所有输入端均采用二极管钳位。 https://www.360docs.net/doc/2a15585639.html,/info/cmos/0083928.html H=高电平(稳定态)L=低电平(稳定态)×=不定↑=从低电平转换到高电平 QA0…QH0=在稳定态输入条件建立前QA…QH 的相应电平 QAn…QHn=在最近的时钟输入条件(↑)建立前QA…QH 的相应电平,表示移位一位

8位双向移位寄存器电路设计

目录 摘要 (1) 1 多功能双向移位寄存器 (2) 1.1 基本工作原理 (2) 1.2 基本实现方案 (2) 2 电路图设计 (4) 2.1 电路结构 (4) 2.2 真值表 (4) 3 Verilog描述8位双向移位寄存器 (6) 4 程序仿真 (8) 5 总结 (10) 参考文献 (11)

摘要 移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中,使用硬件描述语言Verilog,在EDA工具QuartussII中,设计8位双向移位寄存器硬件电路,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。 关键字:Verilog QuartusII 移位寄存器

8位双向移位寄存器电路设计 1 多功能双向移位寄存器 1.1 基本工作原理 移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。 为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品 又附加了并行输入、并行输出等功能。如图1所示是上述几种工作模式的简化示意图。 并行输入 并行输出 右移串行输入(D IR 左移串行输出(D OL 右移串行输出(D OR ) D IL ) 0123 图1 多功能移位寄存器工作模式简图 1.2 基本实现方案 图2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方 案。图中的D 触发器m FF 是N 为移位寄存器中的第m 位触发器,在其数据输入端插入了一个4选1数据选择器m MUX ,用2位编码输入10S S 、控制m MUX ,来选择触发器输入信号m D 的来源。当100S S ==时,选择该触发器本身输出的m Q , 次态为1m n n m m Q D Q +==,使触发器保持状态不变;当100,1S S ==时,触发器1m FF -的输出1m Q -被选中,故CP 脉冲上升沿到来时,m FF 存入1m FF -此前的逻辑值,即 1m 1n n m Q Q +-=,而1m +1n n m Q Q +=, 从而实现右移功能;类似地,当101,0S S ==时,m MUX 选择1m Q +,实现左移功能;而当101S S ==时,则选中并行输入数据m DI ,其次 态1 n m m Q DI +=,从而完成并行数据的置入功能。上述四种操作概述于表1,此外,

线性移位寄存器实现产生伪随机数M序列

线性反馈移位寄存器实现产生伪随机数M序列 -----在CN03平台上,主要体现为Random功能的实现。 什么是线性反馈移位寄存器? 数学解释这里就不作介绍了,这里我们主要理解两个词语就行,一个是线性,它是指量与量之间的一种按比例、成直线的关系。这里面有一点点的数学知识,就是说在ai∈(0,1)的存储单元,ai的个数表示为反馈移位寄存器的级,在某一个时刻,这些寄存器会有一个状态,共有2^n个状态,每个状态对应于域GF(2)上的一个N维向量,用(a1,a2,a3,……an)表示。作为某一个时刻的状态,可以用一个函数f(a1,a2,a3…..an)来表示,从而称为该反馈寄存器的反馈函数,因此线性的意思,就是指如果这个反馈函数是a1,a2,a3….an的线性函数,那么这个反馈移位寄存器,就叫做线性反馈移位寄存器,比如f(a1,a2,a3,…an)=kna1⊕kn-1a2⊕….⊕k2an-1⊕k1an,其中系数ki∈{0,1}i=(1,2,3,…,n)。 另外一个词,就是反馈,这个词在我理解,就是说需要获得下一个状态就需要通过获得一个反馈值来实现。这个反馈的值可以在接下来的两种实现LFSR的方式的解释过程中得到更深刻的理解。 为什么要使用线性反馈移位寄存器? 使用线性反馈移位寄存器的作用: 在很多领域上都有使用到LFSR,譬如说密码学、白噪声,还有我们这里的随机功能实现,之所以把它使用到我们的radio的随机功能里面,除了它可以产生伪随机数序列实现随机播放功能之外,更重要的是我们利用了它的两个特点。其

一,只需要在代码中开辟几个byte的位置,就能够实现随机序列的产生,需要的空间很少。其二,是它的记忆功能,我们在随机的功能里面,选择了下一曲,则上一曲可以通过调整抽头数的序列来从新获得,而不需要开辟空间进行存储。怎样产生伪随机数M序列? M序列的意思就是最大序列,专业点来说就是周期,就是这些不同的伪随机数在什么时候才会回到初始的输入状态,M序列的最大值为2^n-1,因为全0的初始状态不起作用,所以不能以全0的状态作为初始输入。 M序列就是我们在随机功能中获得的那个随机播放的序列。 它有些很好的特性: 1、通过反馈抽头数可以获得与之前输出的值的输入值,这也是我们所说的记 忆功能。 2、这些给定的反馈抽头数永远都是偶数的,而且只包括最高位,不包括最低 位。 3、还有另外一些特征,这里就不一一列出(这些规律的东西,我们只需要理解 我们用到的)。 两种LFSR的产生形式 这里有两种LFSR的实现方式,伽罗瓦(Galois)和斐波那契(Fibonacci)两种形式,也有人称为外部(External)执行方式和内部(Internal)执行方式。所以这两种方式也是有着本质的区别的。 1、伽罗瓦方式(Internal)

西门子plc移位寄存器指令

西门子plc移位寄存器指令 移位寄存器指令SHRB是将DATA数值移入移位寄存器。S_BIT指定移位寄存器的最低位。N指定移位寄存器的长度和移位方向(移位加= N,移位减= -N)。移位寄存器的最大长度是64位的,可以正也可以负。我们要注意的是SHRB指令移出的每个位是被放置在溢出内存位(SM1.1)中的。 下面便以以下的程序来讲解指令的使用,用I0.2的上升沿来执行移位寄存器指令,那么就是一个扫描周期移一位的,指令中V100.0是移位寄存器的最低位,I0.3里面存的是0或1的数值,指令指定是移位加的,移位寄存器的长度是4。我们结合下面的时序图和移位的图来看,若V100为0000 0101,因为移位寄存器的长度是4,那么只有0101,当I0.3为1时,执行第一次移位,把1移到移位寄存器的最低位,把移出的位的值0放置到SM1.1中,那么SM1.1为0,当I0.3为0时,执行第二次移位,把0移到移位寄存器的最低位,把移出的位的值1放置到SM1.1中,那么SM1.1为1。 在顺序控制或步进控制中,应用移位寄存器编程是很方便的,移位寄存器指令如图所示。 1)移位寄存器有3个数据输入端: DATA:移位寄存器的数据输入端,数据类型为BOOL(位)。 S_BIT:组成移位寄存器的最低位,数据类型为BOOL(位)。 N:移位寄存器的长度和移位方向,-64N64,当N 》0时为正向移位(从移位寄存器的最低位移入,由最高位移出),当N 《0时为反向移位(从移位寄存器的最高位移入,由最低位移出)。 2)移位寄存器的特点: 移位寄存器的数据类型无字节型、字型、双字型之分,移位寄存器的长度N由程序指定。移位寄存器的组成: 最低位为:S_BIT;

32位移位寄存器

8位数码扫描显示电路设计 一、实验目的 学习硬件扫描显示电路的设计; 二、实验原理 动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序进行点亮,当点亮的频率不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示,与传统方式得到的视觉效果完全一样。因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右。 图示8位数码扫描显示电路,其中每个数码管的8 个段:h、g、f、e、d、c、b、a(h 是小数点)都分别连在一起,8 个数码管分别由8 个选通信号k1、k2、… k8 来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3 为高电平,其余选通信号为低电平,这时仅k3 对应的数码管显示来自段信号端的数据,而其它7 个数码管呈现关闭状态。根据这种电路状况,如果希望在8 个数码管显示希望的数据,就必须使得8 个选通信号k1、k2、… k8 分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。 实验参考扫描显示程序中clk 是扫描时钟;SG 为7 段控制信号,由高位至低位分别接g、f、e、d、c、b、a 7个段;BT 是位选控制信号,接图5-2 中的8 个选通信号:k1、k2、… k8 。程序中CNT8 是一个3 位计数器,作扫描计数信号,由进程P2 生成;进程P3 是7 段译码查表输出程序,进程P1 是对8 个数码管选通的扫描程序,例如当CNT8 等于

{JZ}作业参考答案3级线性反馈移位寄存器在c3=时可有种231

第二章作业参考答案 .级线性反馈移位寄存器在=时可有种线性反馈函数,设其初始状态为()(),求各线性反馈函数的输出序列及周期。 解:此时线性反馈函数可表示为()⊕⊕ 当=,=时,()⊕⊕=, 输出序列为…,周期= 当=,=时,()⊕⊕=⊕, 输出序列为…,周期= 当=,=时,()⊕⊕=⊕, 输出序列为…,周期= 当=,=时,()⊕⊕=⊕⊕, 有输出序列为…,周期= .设级线性反馈移位寄存器的特征多项式为(),初始状态为(,…)(…),证明输出序列的周期等于()的阶 证:设()的阶为,由定理,由,所以≤ 设()为序列{}的生成函数,并设序列{}的周期为,则显然有()()=φ() 又()=…(…)()(…)… =…()=…() 于是()(…)()=φ()() 又(, …)(…) 所以()(…)φ()() 即()(…)φ()() 由于不能整除,所以必有φ(),而φ()的次数小于,所以必有φ()= 所以必有()(),由()的阶的定义知,阶≤ 综上所述:= .设=,()⊕⊕⊕,初始状态为()=(),求此非线性反馈移位寄存器的输出序列及周期。 解:由反馈函数和初始状态得状态输出表为 () 输出() 输出 (回到初始状态) 所以此反馈序列输出为:…周期为 .设密钥流是由=级产生,其前个比特是(),即+个。问第个比特有无可能是,为什么? 解:不能是。 可通过状态考察的方法证明以上结论。 第一步级的状态是一个维的向量,则前个比特构成一个状态,可表示为(), 第+个比特是,所以的下一个状态是=(), 第+个比特是,所以的下一个状态是=()=,回到状态, 所以下一个状态应是=(),也即第个比特应该为。 .设密钥流是由级产生,其周期为-,是任一正整数,在密钥流中考虑以下比特对 (, ), (, ), …, (-, -), (-, -), 问有多少形如(, )=()的比特对?证明你的结论。 答:共有() 证明: 证明方法一:由于产生的密钥流周期为-,且的级数为,所以是序列 以上比特对刚好是个周期上,两两相邻的所有比特对,其中等于()的比特对包含在所有大于等于的游程中。由序列的性质,所有长为的游程(≤≤)有个,没有长为-的游程,有个长为的游程。 长为(>)的游程可以产生个()比特对,

74HC595移位寄存器

74HC595 74HC595 74HC595是硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。 8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。 特点 8位串行输入 /8位串行或并行输出存储状态寄存器,三种状态 输出寄存器可以直接清除 100MHz的移位频率 输出能力 并行输出,总线驱动;串行输出;标准中等规模集成电路 595移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。 参考数据

CPD决定动态的能耗, PD=CPD×VCC×f1+∑(CL×VCC2×f0) F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压 引脚说明 符号引脚描述 Q0…Q7 15, 1, 7 并行数据输出 GND 8 地 Q7’ 9 串行数据输出 MR 10 主复位(低电平) SHCP 11 移位寄存器时钟输入 STCP 12 存储寄存器时钟输入 OE 13 输出有效(低电平) DS 14 串行数据输入 VCC 16 电源 功能表 输入输出功能 SHCP STCP OE MR DS Q7’ Qn × × L ↓ × L NC MR为低电平时仅仅影响移位寄存器 × ↑ L L × L L 空移位寄存器到输出寄存器 × × H L × L Z 清空移位寄存器,并行输出为高阻状态 ↑ × L H H Q6 NC 逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态移入,例如,以前的状态6(内部Q6”)出现在串行输出位。 × ↑ L H × NC Qn’ 移位寄存器的内容到达保持寄存器并从并口输出 ↑ ↑ L H × Q6’ Qn’ 移位寄存器内容移入,先前的移位寄存器的内容到达保持寄存器并出。 注释 H=高电平状态 L=低电平状态 ↑=上升沿 ↓=下降沿 Z=高阻 NC=无变化 ×=无效

相关文档
最新文档