0 引言
CMI碼是傳號反轉(zhuǎn)碼的簡稱,它是一種應(yīng)用于PCM四次群和光纖傳輸系統(tǒng)中的常用線路碼型,具有碼變換設(shè)備簡單、有較多的電平躍變,含有豐富的定時信息,便于時鐘提取,有一定的糾錯能力等優(yōu)點。
在高次脈沖編碼調(diào)制終端設(shè)備中廣泛應(yīng)用作接口碼型,在速率低于8 448 Kb/s的光纖數(shù)字傳輸系統(tǒng)中也被建議作為線路傳輸碼型。
本文針對光纖通信傳輸碼型的要求和CMI碼的編碼原理,介紹了一種以EPM系列7064芯片為硬件平臺,以Max+PlusⅡ為軟件平臺,以VHDL為開發(fā)工具,適合于CPLD實現(xiàn)的CMI編碼器的設(shè)計方案。
1 CMI碼的編碼規(guī)則
CMI編碼規(guī)則如表1所示。
在CMI編碼中,輸入碼字0直接輸出01碼型,較為簡單。對于輸入為1的碼字,其輸出CMI碼字存在兩種結(jié)果OO或11碼,因而對輸入1的狀態(tài)必須記憶。同時,編碼后的速率增加一倍。
2 CMI編碼器的建模與實現(xiàn)
首先在原始時鐘MUX_Clk的上升沿進行翻轉(zhuǎn)得到二分頻時鐘Clk,周期為原始時鐘的2倍。
然后產(chǎn)生偽隨機序列,由3個D觸發(fā)器產(chǎn)生7位偽隨機序列,序列產(chǎn)生原理如圖1所示。
任何一個D觸發(fā)器的輸出都可以作為要產(chǎn)生的m序列,則序列以7為周期循環(huán)出現(xiàn),在3個D觸發(fā)器輸出都為0時,語句m_buffer(2)<=(m_bu-ffer(1)xor m_buffer(O))Or((not m_buffer(2))and(not m_buffer(1))and(not m_buffer(O))),可以使第一個D觸發(fā)器在Clk上升沿到來時輸出為1,從而避免陷入“000"的死循環(huán)。
最后為“O”碼、“1”碼的編碼:
“O”編碼的實現(xiàn):在原始時鐘信號的下降沿對m序列進行檢測,當(dāng)其值為“0”時,將原始信號的二分頻后的信號求非賦值給編碼輸出,即可實現(xiàn)對“O”進行“01”編碼。
“1”編碼的實現(xiàn):在原始時鐘信號的二分頻信號的上升沿對m序列進行檢測,如果其值為“1”,用表達式statel<=statel X0R m_buff(O)對“1”的奇偶進行記錄;在原始時鐘的下降沿,將statel的值賦給編碼輸出即可實現(xiàn)對“1”的“00”,“11”交替編碼。
其中:m_test:產(chǎn)生的m序列;
MUX_DT:CMI編碼輸出;
MUX_CLK:原始時鐘。
3 仿真結(jié)果
在Max+PlusⅡ平臺下對CMI編碼進行編譯和仿真,最后得到CMI編碼仿真結(jié)果。圖2是CMI碼編碼波形圖。
在時鐘MUX_CLK驅(qū)動下工作,m_test是產(chǎn)生的m序列1011100,MUX_的DT為CMI編碼輸出,可以看到,編碼為11010011000101,有一定延時,但編碼完全正確。
4 結(jié)語
該 設(shè)計詳細介紹了基于CPLD的CMI編碼的實現(xiàn)方法。提出利用原始信號的二分頻后的信號求非賦值給編碼輸出,得到“0”的編碼,利用緩存對“1”的個數(shù)進 行記錄,而對“1”進行編碼的編程思路,利用VHDL進行程序設(shè)計實現(xiàn),在Max+PlusⅡ平臺下對設(shè)計結(jié)果進行仿真,結(jié)果完全正確。
實踐表 明,運用CPLD實現(xiàn)CMI編碼具有軟件開發(fā)周期短、成本低、執(zhí)行速度高、實時性強、升級方便等特點,而且可以把該電路和其他功能電路集成在同一塊 CPLD/FPGA中,減少了外接元件的數(shù)目,提高了集成度,而且有很大的編程靈活性,很強的移植性,因此有很好的應(yīng)用前景。