劉新紅
(北京信息職業(yè)技術學院,北京,100018)
循環(huán)碼編解碼電路結構簡單,易于實現(xiàn)。有廣泛應用。
根據(jù)糾錯位數(shù)的多少,解碼器復雜程度不同,糾多位錯的解碼器電路實現(xiàn)復雜一般用查表法實現(xiàn)[1-3],糾1位錯一般用電路實現(xiàn)[4-5],當然糾1位錯也可用查表法[6-7]。
糾1位錯的電路實現(xiàn)方法文獻[4-5]給出了實現(xiàn)電路但并未分析電路結構。本文以(7,3)循環(huán)碼為例基于Simulink仿真對編解碼電路工作過程進行詳細分析,得出基于移位寄存器的循環(huán)碼編解碼電路的設計方法。
(7,3)循環(huán)碼生成多項式如式(1)所示。
信息多項式m(x)、生成多項式g(x)、監(jiān)督多項式(余數(shù)多項式)r(x)滿足式(2)。其中Qx是商多項式。
以m(x)=x2+ 1即輸入信息位101為例列豎式計算余數(shù)r(x)的過程如式(3)所示。
編碼器仿真電路圖如圖1所示。
由移位寄存器實現(xiàn)。4位循環(huán)移位寄存器,輸入編碼信號101,附加4位監(jiān)督位0000,故輸入信號設為1010000。3個時鐘周期輸入的3位信息位產(chǎn)生4位監(jiān)督位,4位移位寄存器中的值就是余數(shù),也就是監(jiān)督位的值。
反饋控制信號取值1110000,也保證前3位真正的信息位反饋進入移位寄存器。
輸出控制信號取值0001111,保證輸出信號前3位為信號后4位為移位寄存器中產(chǎn)生的監(jiān)督位。
仿真波形圖如圖2所示。
波形圖的下波形為輸入的被編碼信號,上波形為輸出的產(chǎn)生了監(jiān)督位的編碼后信號。
從仿真波形看,輸入的編碼信號為1010000,輸出1011100,產(chǎn)生的監(jiān)督位正確。
前3個時鐘周期信息位101送入4位移位寄存器產(chǎn)生4位監(jiān)督位。每個時鐘周期低位向高位循環(huán)移1位,第一個時鐘周期信息位1和D4中的0模2加后得1和 D2、 D1的值模2加后移入高位,移位后得 D4D3D2D1=0111,同理,第2個時鐘周期信息位0和D4中的0模2加后得1和 D2、 D1的值模2加后移入高位,移位后得 D4D3D2D1=1110,第3個時鐘周期信息位1和D4中的1模2加后得0和 D2、 D1的值模2加后移入高位,移位后得 D4D3D2D1=1100,這時的寄存器中的值便是最終的余數(shù)也是編碼時的4位監(jiān)督位。說明循環(huán)移位寄存器這種電路結構能夠?qū)崿F(xiàn)編碼功能。編碼輸出電路控制信號取值0001111,使輸出7位碼字1011100前3位為信息位101,后4位為監(jiān)督位1100。
根據(jù)上面分析,可以得出,移位寄存器電路仿真除法過程,移位寄存器位數(shù)為余數(shù)(監(jiān)督位)位數(shù),組合邏輯部分由生成多項式?jīng)Q定,移位寄存器最高位和生成多項式中系數(shù)為1的位對應的寄存器位輸出模2加作為高位寄存器輸入。實現(xiàn)如果最高位為1,模2加上生成多項式對應的2進制序列并移位1位,如果最高位為0直接移1位即可。
接收碼字在不出錯時除法余數(shù)為0,也就是除法器4位移位寄存器最后結果為 D4D3D2D1=0000,(7,3)循環(huán)碼生成矩陣如式(4)所示。
其系統(tǒng)碼形式如式(5)所示。
圖2 編碼器仿真波形圖
由生成矩陣得到發(fā)送碼字C如式(6)所示。
由此可得監(jiān)督位 c4c3c2c1和信息位 c7c6c5的關系如下。
可寫出監(jiān)督矩陣如式(7)所示。
監(jiān)督矩陣和發(fā)送碼字存在式(8)的關系。
接收碼字R和監(jiān)督矩陣H、校正子S關系如式(9)所示。
由此得出校正子各位和接收碼字各位之間的關系如下。
可得出如表1所示校正子和錯誤位置關系。
表1
1 1 1 0 6 r 1 0 1 1 7 r
解碼仿真電路如圖3所示,仿真波形如圖4所示。
解碼包括校正子產(chǎn)生電路和錯誤圖樣產(chǎn)生電路。輸入碼字1111100,正確碼字1011100,輸出1011100,由此看出解碼電路正確識別并糾正了錯誤。
輸入碼字1111100一方面進入循環(huán)移位寄存器產(chǎn)生校正子,一方面進入7位寄存器,7個時鐘周期碼字全部進入后產(chǎn)生校正子,在后7個時鐘周期輸入碼字依次從寄存器輸出并逐位和錯誤位模2加糾錯后輸出。
糾錯的起始狀態(tài)為糾r7,如果r7有錯則S=1011,將s2取反相與輸出為1表明有錯模2加到r7上即可糾正該位錯誤。如果r7無錯,S≠1011,與門輸出0,r7值無改變。如果r6有錯則S=1110,先在4位移位寄存器中循環(huán)移位1位得 D4D3D2D1=1011將D2取反相與輸出為1表明有錯模2加到r6上即可糾正該位錯誤。如果r6無錯,S≠1011,與門輸出0,r6值無改變。分析一下r1有錯的情況。如果r1有錯則S=0001,經(jīng)過6個時鐘周期r1才移出,D4D3D2D1=0001依次變?yōu)?D4D3D2D1=0010、D4D3D2D1=0100、 D4D3D2D1=1000、 D4D3D2D1=0111、D4D3D2D1=1110、 D4D3D2D1=1011將D2取反相與輸出為1表明有錯模2加到r1上即可糾正該位錯誤。如果r1無錯,S≠0001,與門輸出0,r1值無改變。對每位錯誤的情況進行一一分析后得出結論糾錯電路能夠糾正各位錯誤。糾錯電路的邏輯結構基于r7有錯的情況分析得出,適用于各位有錯的情況。
因此,糾錯組合邏輯電路根據(jù)接收碼字最高位有錯時的校正子取值確定。把最高位有錯時校正子各位相與(如某位為0則取反)后作為錯誤位模2加到接收碼字相應位上糾正錯誤。
每個碼字檢錯糾錯需14個時鐘周期,移位寄存器反饋控制信號取00001111111111,前4個時鐘周期接收碼字的前4位移入4位移位寄存器,此過程反饋不起作用避免寄存器中原數(shù)據(jù)的影響。輸出控制信號取00000001111111,保證后7個時鐘周期輸出糾錯后的碼字。
圖3 解碼器仿真電路圖
圖4 解碼器仿真波形圖
基于移位寄存器的循環(huán)碼編解碼電路結構簡單,易于實現(xiàn)。通過分析電路工作過程得出,編碼電路結構由生成多項式?jīng)Q定,移位寄存器最高位和生成多項式中系數(shù)為1的位對應的寄存器位輸出模2加作為高位寄存器輸入;解碼器校正子產(chǎn)生電路由生成多項式?jīng)Q定,糾錯電路的邏輯結構由接收碼字最高位有錯時的校正子決定。