關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 一種基于CPLD的曼徹斯特編解碼器設(shè)計

一種基于CPLD的曼徹斯特編解碼器設(shè)計

——
作者:杜敏社 趙文波 時間:2007-07-23 來源:電子元器件應(yīng)用 收藏

引言

  雖然計算機通信的方法和手段多種多樣,但都必須依靠數(shù)據(jù)通信技術(shù)。數(shù)據(jù)通信就是將數(shù)據(jù)信號加到數(shù)據(jù)傳輸信道上進行傳輸,并在接收點將原始發(fā)送的數(shù)據(jù)正確地恢復(fù)過來。由于計算機產(chǎn)生的一般都是數(shù)字信號,因此計算機之間的通信實際上都屬于數(shù)據(jù)通信。碼編解碼器是1553B總線接口中不可缺少的重要組成部分。碼編解碼器設(shè)計的好壞直接影響總線接口的性能。在數(shù)控測井系統(tǒng)和無線監(jiān)控等領(lǐng)域,碼編解碼器都有廣泛應(yīng)用。

1 數(shù)據(jù)通信系統(tǒng)結(jié)構(gòu)

 

  圖1所示是數(shù)據(jù)通信系統(tǒng)的基本構(gòu)成。在計算機通信中,通信雙方傳遞的信息必須進行量化并以某種形式進行編碼后才能進行傳輸。機內(nèi)信號不論采用哪一種編碼方法,它們的基本信號都是脈沖信號,為了減少信號在傳輸媒質(zhì)上的通信帶寬限制,以及噪音、衰減、時延等影響,也由于同步技術(shù)的需要,操作時都需要對簡單的脈沖信號進行一些不同的變換,以適合傳輸?shù)男枰?。這樣就會產(chǎn)生許多不同的代碼,通常有不歸零電平(NRZ-L)碼,逢“1”反轉(zhuǎn)(NRZ-1)碼,曼徹斯特碼和差分曼徹斯特等。圖2所示是部分編碼方式的波形圖。

 

  由圖2可知,不歸零碼的制碼原理是用負電平表 
示“0”,正電平表示“1”,其缺點是難以分辨一位的結(jié)束和另一位的開始;發(fā)送方和接收方必須有時鐘同步;若信號中“0”或“1”連續(xù)出現(xiàn),信號直流分量將累加。這樣就容易產(chǎn)生傳播錯誤。曼徹斯特碼(Manchester)的原理是每一位中間都有一個跳變,從低跳到高表示“0”,從高跳到低表示“1”。這種編碼方式克服了NRZ碼的不足。每位中間的跳變即可作為數(shù)據(jù),又可作為時鐘,因而能夠自同步。曼徹斯特編碼特點是每傳輸一位數(shù)據(jù)都對應(yīng)一次跳變,因而利于同步信號的提取,而且直流分量恒定不變。缺點是數(shù)據(jù)編碼后,脈沖頻率為數(shù)據(jù)傳輸速度的2倍。差分曼徹斯特碼(Differential Manchester)的原理是每一位中間都有一個跳變,每位開始時有跳變表示“0”,無跳變表示“1”。位中間跳變表示時鐘,位前跳變表示數(shù)據(jù)。這種方式的優(yōu)點是時鐘、數(shù)據(jù)分離,便于提取。

2 曼徹斯特編解碼器的設(shè)計

  可編程邏輯器件的出現(xiàn)為數(shù)字系統(tǒng)的設(shè)計帶來了很大的靈活性.而VHDL (VHSIC HardwareDescription Language)是一種功能強大的硬件設(shè)計語言,可用簡潔的代碼來進行復(fù)雜控制邏輯的設(shè)計。為此,本文采用VHDL語言來對曼徹斯特編解碼器進行描述,并用Active-HDL進行編譯,最后用Synplify進行綜合。

2.1 解碼

  根據(jù)曼徹斯特碼的特點,可將該碼的解碼過程分成三部分:一是啟動解碼時鐘,即通過檢測一個數(shù)據(jù)跳變沿來使能時鐘。二是對曼徹斯特碼形式的數(shù)據(jù)進行解碼。三是將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)。解碼器的邏輯框圖如圖3所示。

 

  該邏輯可南進程實現(xiàn)。輸人的時鐘為clkl6x的時鐘,串行的曼徹斯特碼的數(shù)據(jù)與單倍的時鐘相對應(yīng)。首先,串行的曼碼由clk16x的時鐘采樣,之后再將采樣到的數(shù)據(jù)先后存放在兩個寄存器中,當兩個寄存器中的值不一致時,即開始解碼過程,從而完成檢測數(shù)據(jù)變化的進程。分頻計數(shù)進程用來產(chǎn)生clklx,并用分頻計數(shù)的結(jié)果來實現(xiàn)1/4和3/4點的采樣。根據(jù)曼徹斯特碼的性質(zhì),對1/4和3/4點采樣可以準確的恢復(fù)成NRZ碼。此后在clklx的驅(qū)動下,控制字計數(shù)器開始計數(shù),直到8個clklx之后,計數(shù)器歸零。解碼進程則在clkl6x的驅(qū)動下,對1/4和3/4采樣點的數(shù)據(jù)進行解碼,從而得到曼碼相對應(yīng)的NRZ碼。緊接著將解碼得到的每一位NRZ碼移入8位的移位寄存器,當控制字寄存器計到8時(即8位移位寄存器溢出的時候),再將8位NRZ碼一起輸出到數(shù)據(jù)寄存器,最后輸出數(shù)據(jù)寄存器中被解碼好的NRZ碼。

  圖4所示是采用該設(shè)計的曼徹斯特碼的時序仿真波形,clkl6x采用16 MHz的時鐘,mdi為輸入的曼碼(10101100)。最后輸出dout為十六進制AC,這說明該解碼過程是正確的。

2.2 編碼

  編碼是解碼的逆過程。編碼的過程也可以分為兩部分:一是檢測編碼周期是否開始,以決定產(chǎn)生正跳變沿;二是對串行的數(shù)據(jù)進行編碼,之后編碼周期結(jié)束。編碼器的輸入時鐘(clk2x)為2MHz。當寫信號(wr)為高電平時,開始產(chǎn)生正跳變沿,并使clklx-enable為高電平,這樣,正跳變沿產(chǎn)生完成即開始編碼過程。將clk2x進行二分頻可得到clklx,這樣可使歸零制的數(shù)據(jù)(nrz)與clklx相對應(yīng)。此后再在clklx_enable高電平和clk2x正跳變的情況下,將歸零制碼(nrz)轉(zhuǎn)換成相應(yīng)的曼徹斯特碼(meo)。最后,當寫信號(wr)為低電平時,以使clklx_enable為低電平,結(jié)束編碼過程。

  圖5所示其編碼時序仿真波形圖,圖中,clk2x采用2MHz的時鐘,nrz為串行輸入的歸零制碼(10101100),meo為串行輸出的曼徹斯特碼。由圖可見,從剛開始的跳變沿之后,輸出meo也為10101100,證明編碼過程正確。

3 基于的曼徹斯特碼實現(xiàn)

  為了確保設(shè)計的可行性,操作時必須對設(shè)計進行時序仿真。為了提高芯片的性能及資源利用率,應(yīng)采用專門的綜合軟件來對設(shè)計進行優(yōu)化和綜合。本設(shè)計采用Synplify7.3進行綜合,并采用Active-HDL6.1進行時序仿真。在Synplify中使用有效的代碼可以優(yōu)化組合邏輯、減少邏輯延時,從而提高整體性能。此外,本設(shè)計還進行了多個文件的分塊設(shè)計,然后將這些文件映射到頂層文件進行綜合,并運用VHDL對單個文件進行編寫、仿真和優(yōu)化。在用到組合邏輯時,Syn-plify會盡量避免鎖存器的出現(xiàn),節(jié)省邏輯單元。Synplify和其它綜合軟件一樣,編譯后所生成的電子設(shè)計交換格式文件(EDIF)可以在Active-HDL中進行編譯、仿真、分配引腳和其它優(yōu)化處理。因此,采用Active-HDL6.1和Synplify7.3相結(jié)合對進行設(shè)計、優(yōu)化、綜合,可以提高系統(tǒng)性能和 
芯片資源的利用率。

  CPLD(Complex Programmable Logic Device復(fù)雜可編程邏輯器件)的內(nèi)部結(jié)構(gòu)為“與或陣列”。該結(jié)構(gòu)來自于典型的PAL、GAL器件結(jié)構(gòu)。由于任意一個組合邏輯都可以用“與一或”表達式來描述,所以該“與或陣列”結(jié)構(gòu)能實現(xiàn)大量的組合邏輯功能。CPLD和FPGA的主要區(qū)別如下:

(1) 布線能力

  CPLD內(nèi)連率高,不需要人工布局布線來優(yōu)化速度和面積,較FPGA更適合于EDA芯片設(shè)計的可編程驗證;

(2) 延遲可預(yù)測能力

  CPLD連續(xù)式布線結(jié)構(gòu)決定了時序延時是均勻的和可預(yù)測的,而FPGA的分段式布線結(jié)構(gòu)則決定了其不可預(yù)測時間延遲;

(3) 集成度的不同

  CPLD的集成度一般在500~50000門。而FP-GA的集成度一般在1K~10M門;

(4) 應(yīng)用范圍的不同

  CPLD邏輯能力強而寄存器少,適用于控制密集型系統(tǒng),而FPGA邏輯能力較弱但寄存器多,適于數(shù)據(jù)密集型系統(tǒng)。

  CPLD和FPGA的共同優(yōu)點一是規(guī)模越來越大,實現(xiàn)功能越來越強,同時可以實現(xiàn)系統(tǒng)集成。二是研制開發(fā)費用低,不承擔(dān)投片風(fēng)險,使用方便。三是通過開發(fā)工具在計算機上完成設(shè)計,電路設(shè)計周期短,同時不需要設(shè)計人員了解很深的IC知識,EDA軟件易學(xué)易用。此外通過FPGA和CPLD開發(fā)的系統(tǒng)成熟后,還可以進行A-SIC設(shè)計,以形成批量生產(chǎn)。

  事實上,本設(shè)計在Xilinx公司的XC9500系列CPLD(xc95108pq100-7)芯片上進行了實現(xiàn)。并針對其特點對設(shè)計進行了最后的優(yōu)化。該編解碼器共占用了149個邏輯單元,占總邏輯資源的8%,因此,十分有利于今后對其進行完善和功能的添加。

4 結(jié)束語

  本設(shè)計具有一定的通用性,它的邏輯大部分只涉及到編、解碼器本身;而它與外部的接口十分簡單,只要對其讀、寫并對跳變沿信號進行有效控制,就能使其正常工作。本設(shè)計十分獨立,由于選用器件資源比較豐富,故對其進行功能添加也十分方便,只需添加電路設(shè)計而不必對原有電路進行修改。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉