一種基于CPLD的曼徹斯特編解碼器設計
引言
雖然計算機通信的方法和手段多種多樣,但都必須依靠數據通信技術(shù)。數據通信就是將數據信號加到數據傳輸信道上進(jìn)行傳輸,并在接收點(diǎn)將原始發(fā)送的數據正確地恢復過(guò)來(lái)。由于計算機產(chǎn)生的一般都是數字信號,因此計算機之間的通信實(shí)際上都屬于數據通信。曼徹斯特碼編解碼器是1553B總線(xiàn)接口中不可缺少的重要組成部分。曼徹斯特碼編解碼器設計的好壞直接影響總線(xiàn)接口的性能。在數控測井系統和無(wú)線(xiàn)監控等領(lǐng)域,曼徹斯特碼編解碼器都有廣泛應用。
1 數據通信系統結構
圖1所示是數據通信系統的基本構成。在計算機通信中,通信雙方傳遞的信息必須進(jìn)行量化并以某種形式進(jìn)行編碼后才能進(jìn)行傳輸。機內信號不論采用哪一種編碼方法,它們的基本信號都是脈沖信號,為了減少信號在傳輸媒質(zhì)上的通信帶寬限制,以及噪音、衰減、時(shí)延等影響,也由于同步技術(shù)的需要,操作時(shí)都需要對簡(jiǎn)單的脈沖信號進(jìn)行一些不同的變換,以適合傳輸的需要。這樣就會(huì )產(chǎn)生許多不同的代碼,通常有不歸零電平(NRZ-L)碼,逢“1”反轉(NRZ-1)碼,曼徹斯特碼和差分曼徹斯特等。圖2所示是部分編碼方式的波形圖。
由圖2可知,不歸零碼的制碼原理是用負電平表
示“0”,正電平表示“1”,其缺點(diǎn)是難以分辨一位的結束和另一位的開(kāi)始;發(fā)送方和接收方必須有時(shí)鐘同步;若信號中“0”或“1”連續出現,信號直流分量將累加。這樣就容易產(chǎn)生傳播錯誤。曼徹斯特碼(Manchester)的原理是每一位中間都有一個(gè)跳變,從低跳到高表示“0”,從高跳到低表示“1”。這種編碼方式克服了NRZ碼的不足。每位中間的跳變即可作為數據,又可作為時(shí)鐘,因而能夠自同步。曼徹斯特編碼特點(diǎn)是每傳輸一位數據都對應一次跳變,因而利于同步信號的提取,而且直流分量恒定不變。缺點(diǎn)是數據編碼后,脈沖頻率為數據傳輸速度的2倍。差分曼徹斯特碼(Differential Manchester)的原理是每一位中間都有一個(gè)跳變,每位開(kāi)始時(shí)有跳變表示“0”,無(wú)跳變表示“1”。位中間跳變表示時(shí)鐘,位前跳變表示數據。這種方式的優(yōu)點(diǎn)是時(shí)鐘、數據分離,便于提取。
2 曼徹斯特編解碼器的設計
可編程邏輯器件的出現為數字系統的設計帶來(lái)了很大的靈活性.而VHDL (VHSIC HardwareDescription Language)是一種功能強大的硬件設計語(yǔ)言,可用簡(jiǎn)潔的代碼來(lái)進(jìn)行復雜控制邏輯的設計。為此,本文采用VHDL語(yǔ)言來(lái)對曼徹斯特編解碼器進(jìn)行描述,并用Active-HDL進(jìn)行編譯,最后用Synplify進(jìn)行綜合。
2.1 解碼
根據曼徹斯特碼的特點(diǎn),可將該碼的解碼過(guò)程分成三部分:一是啟動(dòng)解碼時(shí)鐘,即通過(guò)檢測一個(gè)數據跳變沿來(lái)使能時(shí)鐘。二是對曼徹斯特碼形式的數據進(jìn)行解碼。三是將串行數據轉換成并行數據。解碼器的邏輯框圖如圖3所示。
該邏輯可南進(jìn)程實(shí)現。輸人的時(shí)鐘為clkl6x的時(shí)鐘,串行的曼徹斯特碼的數據與單倍的時(shí)鐘相對應。首先,串行的曼碼由clk16x的時(shí)鐘采樣,之后再將采樣到的數據先后存放在兩個(gè)寄存器中,當兩個(gè)寄存器中的值不一致時(shí),即開(kāi)始解碼過(guò)程,從而完成檢測數據變化的進(jìn)程。分頻計數進(jìn)程用來(lái)產(chǎn)生clklx,并用分頻計數的結果來(lái)實(shí)現1/4和3/4點(diǎn)的采樣。根據曼徹斯特碼的性質(zhì),對1/4和3/4點(diǎn)采樣可以準確的恢復成NRZ碼。此后在clklx的驅動(dòng)下,控制字計數器開(kāi)始計數,直到8個(gè)clklx之后,計數器歸零。解碼進(jìn)程則在clkl6x的驅動(dòng)下,對1/4和3/4采樣點(diǎn)的數據進(jìn)行解碼,從而得到曼碼相對應的NRZ碼。緊接著(zhù)將解碼得到的每一位NRZ碼移入8位的移位寄存器,當控制字寄存器計到8時(shí)(即8位移位寄存器溢出的時(shí)候),再將8位NRZ碼一起輸出到數據寄存器,最后輸出數據寄存器中被解碼好的NRZ碼。
圖4所示是采用該設計的曼徹斯特碼的時(shí)序仿真波形,clkl6x采用16 MHz的時(shí)鐘,mdi為輸入的曼碼(10101100)。最后輸出dout為十六進(jìn)制AC,這說(shuō)明該解碼過(guò)程是正確的。
2.2 編碼
編碼是解碼的逆過(guò)程。編碼的過(guò)程也可以分為兩部分:一是檢測編碼周期是否開(kāi)始,以決定產(chǎn)生正跳變沿;二是對串行的數據進(jìn)行編碼,之后編碼周期結束。編碼器的輸入時(shí)鐘(clk2x)為2MHz。當寫(xiě)信號(wr)為高電平時(shí),開(kāi)始產(chǎn)生正跳變沿,并使clklx-enable為高電平,這樣,正跳變沿產(chǎn)生完成即開(kāi)始編碼過(guò)程。將clk2x進(jìn)行二分頻可得到clklx,這樣可使歸零制的數據(nrz)與clklx相對應。此后再在clklx_enable高電平和clk2x正跳變的情況下,將歸零制碼(nrz)轉換成相應的曼徹斯特碼(meo)。最后,當寫(xiě)信號(wr)為低電平時(shí),以使clklx_enable為低電平,結束編碼過(guò)程。
圖5所示其編碼時(shí)序仿真波形圖,圖中,clk2x采用2MHz的時(shí)鐘,nrz為串行輸入的歸零制碼(10101100),meo為串行輸出的曼徹斯特碼。由圖可見(jiàn),從剛開(kāi)始的跳變沿之后,輸出meo也為10101100,證明編碼過(guò)程正確。
3 基于CPLD的曼徹斯特碼實(shí)現
為了確保設計的可行性,操作時(shí)必須對設計進(jìn)行時(shí)序仿真。為了提高CPLD芯片的性能及資源利用率,應采用專(zhuān)門(mén)的綜合軟件來(lái)對設計進(jìn)行優(yōu)化和綜合。本設計采用Synplify7.3進(jìn)行綜合,并采用Active-HDL6.1進(jìn)行時(shí)序仿真。在Synplify中使用有效的代碼可以?xún)?yōu)化組合邏輯、減少邏輯延時(shí),從而提高整體性能。此外,本設計還進(jìn)行了多個(gè)文件的分塊設計,然后將這些文件映射到頂層文件進(jìn)行綜合,并運用VHDL對單個(gè)文件進(jìn)行編寫(xiě)、仿真和優(yōu)化。在用到組合邏輯時(shí),Syn-plify會(huì )盡量避免鎖存器的出現,節省邏輯單元。Synplify和其它綜合軟件一樣,編譯后所生成的電子設計交換格式文件(EDIF)可以在A(yíng)ctive-HDL中進(jìn)行編譯、仿真、分配引腳和其它優(yōu)化處理。因此,采用Active-HDL6.1和Synplify7.3相結合對CPLD進(jìn)行設計、優(yōu)化、綜合,可以提高系統性能和
芯片資源的利用率。
CPLD(Complex Programmable Logic Device復雜可編程邏輯器件)的內部結構為“與或陣列”。該結構來(lái)自于典型的PAL、GAL器件結構。由于任意一個(gè)組合邏輯都可以用“與一或”表達式來(lái)描述,所以該“與或陣列”結構能實(shí)現大量的組合邏輯功能。CPLD和FPGA的主要區別如下:
(1) 布線(xiàn)能力
CPLD內連率高,不需要人工布局布線(xiàn)來(lái)優(yōu)化速度和面積,較FPGA更適合于EDA芯片設計的可編程驗證;
(2) 延遲可預測能力
CPLD連續式布線(xiàn)結構決定了時(shí)序延時(shí)是均勻的和可預測的,而FPGA的分段式布線(xiàn)結構則決定了其不可預測時(shí)間延遲;
(3) 集成度的不同
CPLD的集成度一般在500~50000門(mén)。而FP-GA的集成度一般在1K~10M門(mén);
(4) 應用范圍的不同
CPLD邏輯能力強而寄存器少,適用于控制密集型系統,而FPGA邏輯能力較弱但寄存器多,適于數據密集型系統。
CPLD和FPGA的共同優(yōu)點(diǎn)一是規模越來(lái)越大,實(shí)現功能越來(lái)越強,同時(shí)可以實(shí)現系統集成。二是研制開(kāi)發(fā)費用低,不承擔投片風(fēng)險,使用方便。三是通過(guò)開(kāi)發(fā)工具在計算機上完成設計,電路設計周期短,同時(shí)不需要設計人員了解很深的IC知識,EDA軟件易學(xué)易用。此外通過(guò)FPGA和CPLD開(kāi)發(fā)的系統成熟后,還可以進(jìn)行A-SIC設計,以形成批量生產(chǎn)。
事實(shí)上,本設計在Xilinx公司的XC9500系列CPLD(xc95108pq100-7)芯片上進(jìn)行了實(shí)現。并針對其特點(diǎn)對設計進(jìn)行了最后的優(yōu)化。該編解碼器共占用了149個(gè)邏輯單元,占總邏輯資源的8%,因此,十分有利于今后對其進(jìn)行完善和功能的添加。
4 結束語(yǔ)
本設計具有一定的通用性,它的邏輯大部分只涉及到編、解碼器本身;而它與外部的接口十分簡(jiǎn)單,只要對其讀、寫(xiě)并對跳變沿信號進(jìn)行有效控制,就能使其正常工作。本設計十分獨立,由于選用器件資源比較豐富,故對其進(jìn)行功能添加也十分方便,只需添加電路設計而不必對原有電路進(jìn)行修改。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論