摘 要:根據(jù)CMI碼的特性,介紹了一種新的編程思路實現(xiàn)CMI編碼,在Max+PlusⅡ開發(fā)平臺上使用VHDL編程實現(xiàn)CMI編碼,并得到仿真波形。實驗結(jié)果表明,這種編程思路簡單、清晰。在產(chǎn)生7位偽隨機序列的前提下,分別對“0”,“1”進行編碼。這種思路為其他碼型設(shè)計提供了參考。
關(guān)鍵詞:通信原理; VHDL; CMI; Max+PlusⅡ
中圖分類號:TP274 文獻標(biāo)識碼:A
文章編號:1004-373X(2010)11-0086-02
Design and Implementation of CMI Coding Based on CPLD/FPGA
LI Li
(Department of Telecommunication Engineering, Xi’an Institute of Posts and Telecommunications, Xi’an 710061,China)
Abstract: A new programming idea of which VHDL programming is used to achieve CMI coding on the platform ofMaxplusⅡ is introduced according to the characteristics of CMI code, and the simulation waveforms are achieved. The results indicate that this method is simple and clear. ″0″,″1″are encoded in the premise of generating 7 b pseudorandom sequence. This method provides a reference for other design of code type.
Keywords: communication principle; VHDL; CMI; Max+PlusⅡ
0 引 言
CMI碼是傳號反轉(zhuǎn)碼的簡稱,它是一種應(yīng)用于PCM四次群和光纖傳輸系統(tǒng)中的常用線路碼型,具有碼變換設(shè)備簡單、有較多的電平躍變,含有豐富的定時信息,便于時鐘提取,有一定的糾錯能力等優(yōu)點[1]。
在高次脈沖編碼調(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所示。
表1 CMI編碼
輸入碼字編碼結(jié)果
001
100/11交替表示
在CMI編碼中,輸入碼字0直接輸出01碼型,較為簡單。對于輸入為1的碼字,其輸出CMI碼字存在兩種結(jié)果00或11碼,因而對輸入1的狀態(tài)必須記憶。同時,編碼后的速率增加一倍[2]。
2 CMI編碼器的建模與實現(xiàn)
首先在原始時鐘MUX_Clk的上升沿進行翻轉(zhuǎn)得到二分頻時鐘Clk[3],周期為原始時鐘的2倍。
然后產(chǎn)生偽隨機序列,由3個D觸發(fā)器產(chǎn)生7位偽隨機序列[4],序列產(chǎn)生原理如圖1所示。
圖1 7位偽隨機碼產(chǎn)生原理圖
任何一個D觸發(fā)器的輸出都可以作為要產(chǎn)生的m序列[5],則序列以7為周期循環(huán)出現(xiàn),在3個D觸發(fā)器輸出都為0時,語句m_buffer(2)<=(m_buffer(1)xor m_buffer(0))0r( (not m_buffer(2))and(not m_buffer(1)) and(not m_buffer(0))),可以使第一個D觸發(fā)器在Clk上升沿到來時輸出為1,從而避免陷入“000”的死循環(huán)[6]。
最后為“0”碼、“1”碼的編碼:
“0”編碼的實現(xiàn):在原始時鐘信號的下降沿對m序列進行檢測,當(dāng)其值為“0”時,將原始信號的二分頻后的信號求非賦值給編碼輸出[7],即可實現(xiàn)對“0”進行“01”編碼。
“1”編碼的實現(xiàn):在原始時鐘信號的二分頻信號的上升沿對m序列進行檢測,如果其值為“1”,用表達式state1<=state1 XOR m_buff(0)對“1”的奇偶進行記錄;在原始時鐘的下降沿,將state1的值賦給編碼輸出即可實現(xiàn)對“1”的“00”,“11”交替編碼。
IF(rising_edge(data_clkt))THEN
input_buff<=m_buff(0);--輸入緩存
state1<=state1 XOR m_buff(0);--1的編碼
END IF;
--編碼
IF(falling_edge(MUX_CLK))THEN
IF(input_buff=′0′)THEN
coder_buff<=NOT data_clkt;
ELSIF(input_buff=′1′)THEN
coder_buff<=state1;
END IF;
END IF;
cmi_out<=coder_buff;
MUX_DT<=cmi_out;
m_test<=m_buff(0);
其中:
m_test:產(chǎn)生的m序列;
MUX_DT:CMI 編碼輸出;
MUX_CLK:原始時鐘。
3 仿真結(jié)果
在Max+PlusⅡ平臺下對CMI編碼進行編譯和仿真,最后得到CMI編碼仿真結(jié)果。圖2是CMI碼編碼波形圖。
圖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ù)進行記錄[8],而對“1”進行編碼的編程思路,利用VHDL進行程序設(shè)計實現(xiàn),在Max+PlusⅡ平臺下對設(shè)計結(jié)果進行仿真,結(jié)果完全正確。
實踐表明,運用CPLD實現(xiàn)CMI編碼具有軟件開發(fā)周期短[9]、成本低、執(zhí)行速度高、實時性強、升級方便等特點,而且可以把該電路和其他功能電路集成在同一塊CPLD/FPGA中,減少了外接元件的數(shù)目,提高了集成度,而且有很大的編程靈活性,很強的移植性,因此有很好的應(yīng)用前景[10]。
參考文獻
[1]樊昌信,任光亮.通信原理[M].北京:國防工業(yè)出版社,2005.
[2]段吉海,黃智偉.基于CPLD/FPGA的數(shù)字通信系統(tǒng)建模與設(shè)計[M].北京:國防工業(yè)出版社,2004.
[3]鮑家元,毛文林.數(shù)字邏輯[M].2版.北京:高等教育出版社,2002.
[4]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].2版.西安:西安電子科技大學(xué)出版社,2001.
[5]閔祥國.基于硬件描述語言VHDL電路系統(tǒng)設(shè)計研究[J].電腦知識與技術(shù),2007(18):14-16.
[6]苗長新,李桂林.Max+PlusⅡ在“組合電路中競爭與冒險現(xiàn)象”課堂教學(xué)上的應(yīng)用[J].現(xiàn)代電子技術(shù),2009,32(19):128-130.
[7]周灼榮,聶濤,靳小超.基于FPGA的基帶碼發(fā)生器設(shè)計[J].現(xiàn)代電子技術(shù),2006,29(11):53-55.
[8]林財,陳婷,楊軍.一種基于CPLD編碼器的實現(xiàn)方法[J].實驗科學(xué)與技術(shù),2007(6):154-156.
[9]孫華錦.基于VHDL語言的電子設(shè)計自動化及其應(yīng)用[D].西安:西北工業(yè)大學(xué),2001.
[10]王英華.VHDL語言在教學(xué)與研究中的應(yīng)用[D].秦皇島:燕山大學(xué),2001.