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