摘 要: 研究了曼徹斯特編解碼方法,,采用VHDL語言在CPLD上實現(xiàn)了編解碼,,使系統(tǒng)的功能高度集成,提高了系統(tǒng)的靈活性與兼容性,。通過MAX+PLUS II仿真了2 MB/s速率下的編解碼,,結果和理論分析一致,驗證了編解碼電路設計的有效性和可行性,。
關鍵詞:CPLD,;曼徹斯特編解碼;MAX+PLUS II
在工業(yè)現(xiàn)場控制網(wǎng)絡中,,曼徹斯特碼由于編碼方式簡單易行,、無直流分量,且含有豐富的時鐘信息,,常被用作高速基帶數(shù)據(jù)傳輸,。曼徹斯特編碼已經(jīng)廣泛應用在數(shù)控測井和無線監(jiān)控等領域。
要實現(xiàn)曼徹斯特編解碼,,專業(yè)的編解碼器必不可少,,目前曼徹斯特編解碼器HD-6408、HD-6409最高速率只有1 MB/s,,而且這種器件是對串行信號進行編解碼,,在電路設計中需要專門的并/串、串/并轉換支持,,增加了設計成本,。
本文主要介紹一種通過CPLD來實現(xiàn)曼徹斯特編解碼的方法,,在CPLD內部完成并/串、串/并轉換以及曼徹斯特編解碼,,提高了編解碼的通用性,,大大節(jié)省了開發(fā)成本,,并且可以實現(xiàn)更高的編碼速率,。
1 曼徹斯特碼
在曼徹斯特編碼[1-2]中,每一位的中間有一個跳變,,位中間的跳變既作時鐘信號,,又作數(shù)據(jù)信號。從高到低跳變表示“0”,,從低到高跳變表示“1”,。
從曼徹斯特碼的特點可以看出曼徹斯特碼是一種自同步碼,且沒有直流分量,,因此抗干擾能力強,。但其缺點是編碼后每一個碼元都被調成2個電平,所以數(shù)據(jù)傳輸速率只有調制速率的1/2,。
2 可編程邏輯器件的選擇
系統(tǒng)中CPLD器件選擇Altera公司的MAX7000系列[3]的EPM7128AETC100-10,。EPM7128AE系列CPLD具有2 500個可用門,內部具有128個宏單元,,最多可用I/O引腳100個,,時鐘最高可達192.3 MHz,使用3.3 V電壓供電,。
本文的編解碼分別在2個CPLD中完成,。編碼端的CPLD內部程序框圖如圖1所示,首先鎖存并行信號,,然后根據(jù)編碼時鐘把并行數(shù)據(jù)用移位寄存器進行并/串轉換,,最后曼徹斯特編碼模塊對串行NRZ數(shù)據(jù)進行編碼輸出。
解碼端的CPLD內部程序框圖如圖2所示,,首先曼徹斯特解碼模塊把輸入的曼徹斯特碼解碼成NRZ碼,,并從碼元中提取同步時鐘,然后在移位寄存器中對串行NRZ碼完成串/并轉換,,最后把并行信號鎖存到鎖存器中并輸出,。
3 曼徹斯特編解碼器設計
在編解碼器的設計中,VHDL設計語言和原理圖方式混合使用,,提高了軟件設計的靈活性,。
3.1 編碼器設計
(1)同步頭
解碼時,何時開始一個解碼周期是解碼正確與否的關鍵,,為此在曼徹斯特碼的前面增加了4個時鐘周期(此時鐘是數(shù)據(jù)傳輸速率的2倍)的高電平作為同步頭,。編碼時首先輸出同步頭,,接著輸出曼徹斯特碼元。解碼器檢測到此同步頭時啟動一個解碼周期,。
本文中采用的曼徹斯特編碼的數(shù)據(jù)幀格式如圖3所示,,第1~2位為高電平,作為數(shù)據(jù)幀的同步頭,;第3~18位是16個經(jīng)過曼徹斯特編碼的數(shù)據(jù)位,。
(2)曼徹斯特編碼
根據(jù)曼徹斯特碼的特點,常規(guī)設計方法是將NRZ碼和時鐘信號相異或進行編碼,,這種方法的缺點是會在數(shù)據(jù)的跳變沿產(chǎn)生毛刺,。設計中采用如下編碼方式:
選用二倍頻于數(shù)據(jù)傳輸速率的時鐘,當時鐘個數(shù)為奇數(shù)時,曼徹斯特碼等于NRZ碼,;當時鐘個數(shù)為偶數(shù)時,曼徹斯特碼等于NRZ碼取反,。
這種編碼方式簡單易行,而且解決了常規(guī)通過異或方式編碼產(chǎn)生的毛刺現(xiàn)象,。
3.2 解碼器設計
曼徹斯特解碼框圖如圖4所示,,主要分為4個部分:同步頭檢測電路、同步時鐘提取器,、解碼的判決器和計數(shù)器,。
其中同步頭檢測電路和判決器采用VHDL語言設計,同步時鐘提取器和計數(shù)器使用原理圖方式設計,。下面分別介紹這4部分:
(1)同步頭檢測電路
同步頭檢測電路有2個功能:檢測同步頭和去掉同步頭,。這部分電路不斷對接收到的數(shù)據(jù)進行檢測,當檢測到同步頭后,,向其他3部分發(fā)送使能信號,,控制這3個部分開始工作,并且同步頭檢測電路還將去掉同步頭后的標準曼徹斯特碼發(fā)送給判決器,,由判決器對接收到的曼徹斯特碼解碼,。
(2)同步時鐘提取器[4]
曼徹斯特碼的一個優(yōu)點是本身含有時鐘信息,可以很方便地進行位同步,。時鐘提取器就是要從曼徹斯特碼中提取出同步時鐘,。從曼徹斯特碼的特點可以看出每個碼元中間都有一次跳變,時鐘提取電路提取出跳變信息,,以此來恢復出位同步時鐘,。
同步時鐘提取電路如圖5所示,DataIn是輸入的曼徹斯特碼,;CLK16x是解碼用的高倍時鐘,;DataIn2是曼徹斯特碼經(jīng)過2次時延后的信號,此信號與經(jīng)過1次時延的信號異或運算得到曼徹斯特碼的跳變信息;CLR是從曼徹斯特碼中提取出的跳變信息,,把這個跳變信息作為計數(shù)器的清零信號,,同時利用高倍時鐘就可以從輸入的曼徹斯特碼中恢復出同步時鐘,圖5中CLKOUT是同步時鐘的輸出端,,可用于電路的其他部分,。
(3)判決器
判決器是曼徹斯特解碼的核心部分,采用16倍頻于傳輸速率的時鐘作為解碼時鐘,。解碼流程圖如圖6所示,。在接收到曼徹斯特碼后使用16倍頻的時鐘對信號進行采樣,為了正確解碼出一位NRZ碼,,需要進行16次采樣,,即一個解碼周期等于16個時鐘周期。
解碼時設置了2個計數(shù)器:tHigh和tClock,。tHigh用于記錄每16次采樣時前8次采樣的高電平的個數(shù)。如果tHigh等于8,,那么原始碼元就是“1”,,反之為“0”。在每次采樣時tClock都會加1,,記錄采樣的次數(shù),。當tClock等于16時,一個解碼周期完成,,將tHigh和tClock清零,。
在實際設計中,為了提高對解碼的抗干擾能力,,將tHigh的判決門限設定為8-2,,即6,當tHigh≥6就認為原始信號是“1”,,反之為“0”,。
(4)計數(shù)器
計數(shù)器的時鐘是從曼徹斯特碼恢復出的同步時鐘,主要用來記錄解碼的位數(shù),,當解碼完16位時,,表明一幀數(shù)據(jù)解碼完成,產(chǎn)生解碼完成信號,,可用這個信號通知外部處理單元對解碼后的信號進行讀取,。
3.3 軟件仿真
(1)編碼仿真[5]
本文使用VHDL語言進行設計,使用MAX+PLUS II進行仿真,,仿真的數(shù)據(jù)編碼速率設為2 MB/s,,仿真圖形如圖7所示。其中D[0..5]是發(fā)送端的并行信號,;DSP_CLK是由外部提供的40 MHz的時鐘信號,,在CPLD中進行10分頻,,產(chǎn)生需要的4 MHz的二倍頻時鐘信號;MAN_OUT是最終的曼徹斯特碼,。從圖7可以看出,,曼徹斯特碼的最前面有4個時鐘周期的高電平,是編碼信號的同步頭,。
從圖7中還可以看出,,輸入的并行信號是0xA756,由于程序中使數(shù)據(jù)的最低位在前,,最高位在后,,因此進行并串轉換后的NRZ碼是0110,1010,,1110,,0101,對應的曼徹斯特碼為01 10 10 01,,10 01 10 01,,10 10 10 01,01 10 01 10(如圖7中MAN_OUT所示),。
(2)解碼仿真
仿真時所用的解碼時鐘是16 MHz,,仿真圖如圖8所示。其中,,DataIn是輸入的曼徹斯特碼,,速率是原始數(shù)據(jù)速率的2倍,即4 MB/s,;DataIn2是由輸入信號延遲一個時鐘周期產(chǎn)生的,;CLK16x是外部提供的16 MHz高倍時鐘信號;CLR是從曼徹斯特碼提取的跳變信息,;CLKOUT是恢復出的時鐘信號,;enable是同步頭檢測電路產(chǎn)生的使能信號;NRZ是判決器輸出的NRZ碼,;q[0..15]是解碼出的數(shù)據(jù),,從圖8中可以看出其值為0xA756,正確解碼了輸入的曼徹斯特碼,。
本文使用VHDL語言在Altera公司的EMP7128AETC100-10實現(xiàn)了曼徹斯特編解碼,,在MAX+PLUS II下正確實現(xiàn)了2 MHz時鐘下的編解碼。比專用器件具有更高的速率和更好的靈活性,。大大增加了曼徹斯特編解碼的可移植性,,并且為編解碼器的擴展預留了足夠的空間。
參考文獻
[1] 楊剛,龍海燕.現(xiàn)代電子技術-VHDL與數(shù)字電路系統(tǒng)設計[M].北京:電子工業(yè)出版社,,2004.
[2] VOLNEI A P著,,VHDL數(shù)字電路設計教程[M]. 喬廬峰, 王志功譯.北京:電子工業(yè)出版社,,2005.
[3] ALTERA. MAX7000A programmable logic device family data sheet. 2003.
[4] INTERSIL. HD-6408 Data Sheet. www.intersil.com.2006.
[5] RODGER E Z著.數(shù)字通信基礎[M].尹長川譯.北京:機械工業(yè)出版社,2005.