数字集成电路 -- 各种计数器简介
1. 环形计数器
N个寄存器构成的环形计数器,状态数:N
2. 扭环形计数器
N个寄存器构成的扭环形计数器,状态数:2N
就是将环形计数器最后一级反向后接到第一级。 对于自启动的设计,如下:在真值表表23-14中的非工作时序有一部分可以通过修改反馈使得一拍就进入工作时序的状态, 即破坏正常的反馈
逻辑(F= overline{Q_1})所确定的反馈值。需要修改反馈为“1”使得下一拍进入工作时序的,在旁边填上s;需要修改反馈为“0”者,在旁边填上r。填有小写字母的状态就是异常时序被拆开进入正常时序突破口处的状态。对于不能一拍进入工作时序的状态, 仍按反馈逻辑(F= overline{Q_1})来,待其转换到突破口处,就可进入工作时序。将真值表23-14 填入卡诺图,突破口至少要选择一个,至于选择几个突破口要以在卡诺图上使反馈函数最简来确定。按图23-5-10 的卡诺图(其中s处表示可以将0改为1,r处表示可以将1改为0)确定的反馈逻辑,可以发现如果将两个s处改为1,则卡诺图包围的面积最大,可使反馈函数最简。于是有:(F'= overline{Q_1}+Q_4overline{Q_2})
3. 线性反馈移位寄存器
N级的线性反馈移位寄存器最多有(2^N-1)个状态。
线性反馈移位寄存器的基本结构见
https://blog.csdn.net/qq_44113393/article/details/89852994
https://www.cnblogs.com/weijianlong/p/11947741.html
一个N级的移位寄存器产生的序列的最大周期为(2^N-1),当然这个最大周期跟反馈函数有很大关系,线性反馈函数实际上就是这个级的移位寄存器选取“某些位”进行异或后得到的结果,这里的“某些位”的选取很重要,得到线性反馈函数之后,把这个移位寄存器的每次向右移动一位,把最右端的作为输出,把“某些位”的异或结果作为输入放到最左端的那位,这样所有的输出对应一个序列,这个序列叫做M序列,是最长线性移位寄存器序列的简称。
那么应该选取哪些位来进行异或才能保证最长周期为(2^N-1)呢?
实际上选取的“某些位”构成的序列叫做抽头序列,理论表明,要使LFSR得到最长的周期,这个抽头序列构成的多项式加1必须是一个本原多项式,也就是说这个多项式不可约。
例如反馈多项式为(f(x)=x^3+x+1),其表示的LFSR为:
次数 | a2 | a1 | a0 |
---|---|---|---|
1 | 0 | 0 | 1 |
2 | 0 | 1 | 0 |
3 | 1 | 0 | 0 |
4 | 0 | 1 | 1 |
5 | 1 | 1 | 0 |
6 | 1 | 1 | 1 |
7 | 1 | 0 | 1 |
8 | 0 | 0 | 1 |
9 | 0 | 1 | 0 |
从第八次开始寄存器中的序列开始循环。所以这样一个反馈多项式可以得到一个M序列。长度为2*4-1.
对于反馈多项式具有什么数学性质实际上我一直比较好奇,应该不只是表示一个等效电路这么简单,直到看到这篇文章:
假设的是R(x)是寄存器中剩余的数据,M(x)是输入的码字多项式。R(x)比较好理解,M(x)的话是这个意思:
比如(M(x)=1)时,就是输入序列为1;
(M(x)=x)时,就是输入序列为1,0;
(M(x)=x^2)时,就是输入序列为1,0,0;
实际上可以看出,当第一个时钟时输入端输入一个1时,以后保持输入端为0,则随着时钟的到来,输入码字多项式就是按照(1,x,x^2,x^3,x^4,x^5,x^6,x^7,…,x^n)这样的顺序发展着。
而实际上每个周期寄存器保存的值代表的多项式R(x)满足:
这里除法是模二的除法,在LFSR的结果中,多项式中的“+”都是模2加,就是异或运算,所以是没有进位的概念;同样,这里的除法也是模2除法,即除法过程中用到的减法是模2减法,是不会产生加法进位和减法借位的运算。举个例子:
得到的余数就是R(x)。 把其他几个都算完得到:可以发现,当一开始输入一个1,之后每个周期代表的输入序列M(x)除以反馈多项式得到的R(x)代表的寄存器值就是001,010,100,011,110,111,101,也就是上面表中的状态。
通过这一特性,线性移位寄存器在CRC电路中有广泛应用。
4. 行波计数器
2的幂次分频
每一级的输出都是输入时钟的二分频,N级串联实现输入时钟的(2^N)次分频。