數字集成電路 -- 各種計數器簡介
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_4\overline{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減法,是不會產生加法進位和減法借位的運算。舉個例子:


可以發現,當一開始輸入一個1,之后每個周期代表的輸入序列M(x)除以反饋多項式得到的R(x)代表的寄存器值就是001,010,100,011,110,111,101,也就是上面表中的狀態。
通過這一特性,線性移位寄存器在CRC電路中有廣泛應用。
4. 行波計數器
2的冪次分頻

每一級的輸出都是輸入時鍾的二分頻,N級串聯實現輸入時鍾的\(2^N\)次分頻。