5B6B線路碼編譯碼的電路設(shè)計綜述_第1頁
5B6B線路碼編譯碼的電路設(shè)計綜述_第2頁
5B6B線路碼編譯碼的電路設(shè)計綜述_第3頁
5B6B線路碼編譯碼的電路設(shè)計綜述_第4頁
5B6B線路碼編譯碼的電路設(shè)計綜述_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 *實踐教學*蘭州理工大學計算機與通信學院2015年秋季學期通信系統(tǒng)綜合訓練 題 目: 5B6B線路碼的電路設(shè)計 專業(yè)班級: 通信工程(1)班 姓 名: 學 號: 指導教師: 成 績: 摘 要在光纖通信系統(tǒng)中,選取適當?shù)拇a型對提高系統(tǒng)的可靠性,實現(xiàn)線路的高速、低誤碼率、最大容量傳輸具有重要意義。 5B6B碼是mBnB線路碼型中的一種,具有最大相同碼元連碼數(shù)少、定時信息豐富、勻衡性好、誤碼監(jiān)視、同步性好等優(yōu)點。5B6B編碼是將5B碼組按照一定的規(guī)律,編成6B碼組后輸出;而譯碼則是將傳輸?shù)浇邮斩藱C的6B數(shù)據(jù)碼流,譯成5B數(shù)據(jù)碼流輸出,二者互為逆過程。5B6B編碼和譯碼有許多種設(shè)計方法,本

2、文采用的是基于碼表的編譯碼電路設(shè)計,結(jié)合Quartus II軟件寫出編譯碼過程從具有相應功能的程序,封裝成模塊,最后集成完整的編譯碼電路,并且對每個模塊及編譯碼電路進行波形仿真,檢驗設(shè)計的正確性。關(guān)鍵字:5B6B線路碼、編譯碼、分頻、封裝2目 錄前 言4一、光纖通信系統(tǒng)51.1 光纖通信系統(tǒng)基本構(gòu)成51.2數(shù)字光纖通信系統(tǒng)61.3光纖通信技術(shù)的特點6二、 光纖通信中的線路編碼72.1線路擾碼72.2 mBnB碼72.3插入碼7三、 設(shè)計平臺(Quartus II 軟件)83.1 Quartus II軟件介紹83.2 Quartus II系統(tǒng)開發(fā)流程8四、系統(tǒng)設(shè)計104.1 5B6B碼表設(shè)計10

3、4.2 編碼電路設(shè)計10 4.2.1 編碼原理10 4.2.2 各模塊的設(shè)計及仿真11 4.2.3 編碼電路設(shè)計與仿真134.3 譯碼電路設(shè)計15 4.3.1 譯碼原理15 4.3.2 各模塊的設(shè)計及仿真15 4.2.3 譯碼電路設(shè)計與仿真18總 結(jié)20參考文獻21附錄:編譯碼各模塊的程序22前 言mBnB碼是把輸入的二進制原始碼流進行分組,每組有m個二進制碼,記為mB,稱為一個碼字,然后把一個碼字變換為n個二進制碼,記為nB,并在同一個時隙內(nèi)輸出。這種碼型是把mB變換為nB,所以稱為mBnB碼,其中m和n都是正整數(shù), n>m,一般選取n=m+1。mBnB碼有1B2B、3B4B、5B6B

4、、 8B9B、 17B18B等等。5B6B碼是mBnB線路碼型中最常見的一種,具有最大相同碼元連碼數(shù)少、定時信息豐富、勻衡性好、誤碼監(jiān)視、同步性好等優(yōu)點。5B6B編碼是將自編數(shù)據(jù)按照一定的規(guī)律,編成6B碼組后輸出;而譯碼則是將傳輸?shù)浇邮斩藱C的6B數(shù)據(jù)碼流,譯成5B數(shù)據(jù)碼流輸出,二者互為逆過程。5B6B編碼和譯碼有許多種設(shè)計方法,其中主要有基于集成電路工藝ASIC(專用集成電路)和基于碼表設(shè)計。本文運用Quartus II軟件,采用基于碼表設(shè)計的方法對5B6B碼進行編碼和譯碼。其中編碼由分頻模塊、編碼模塊、五位串轉(zhuǎn)換模塊及六位并串轉(zhuǎn)換模塊構(gòu)成;譯碼部分由譯碼模塊、分頻模塊、六位串及五位并轉(zhuǎn)換模塊

5、構(gòu)成。本文著重介紹了編碼譯碼的工作原理以及各模塊的封裝,并對程序和電路編譯碼進行仿真,最終得出正確的結(jié)果。以實現(xiàn)5B6B線路碼的編碼和譯碼在理論上的功能。一、光纖通信系統(tǒng)隨著科學技術(shù)發(fā)展,世界正走向信息時代,人們需要更寬帶、更高速的大容量通信方式,并要求這種通信方式的傳輸成本不斷降低。光纖通信則是實現(xiàn)這一目標的最理想手段,成為構(gòu)筑信息化時代信息傳輸網(wǎng)的主要通信方式。光纜是通信網(wǎng)絡的主流傳輸媒介,這是由光纖本身的良好特性所決定的。光纖通信是以激光為信息載體,以光纖為傳輸介質(zhì)的通信方式。1.1 光纖通信系統(tǒng)基本構(gòu)成最基本的光纖通信系統(tǒng)由數(shù)據(jù)源、光發(fā)送端、光學信道和光接收端組成。其中數(shù)據(jù)源包括所有的

6、信號源,它們是話音、圖象、數(shù)據(jù)等業(yè)務經(jīng)過信源編碼所得到的信號;光發(fā)送端和負責將信號轉(zhuǎn)變成適合于在光纖上傳輸?shù)墓庑盘?;光學信道包括最基本的光纖,還有中繼放大器EDFA等;而光學接收端則接收光信號,并從中提取信息,然后轉(zhuǎn)變成電信號,最后得到對應的話音、圖象、數(shù)據(jù)等信息。圖1-1 光纖通信系統(tǒng)的組成(1) 光發(fā)信機光發(fā)信機是實現(xiàn)電/光轉(zhuǎn)換的光端機。它由光源、驅(qū)動器和調(diào)制器組成。其功能是將來自于電端機的電信號對光源發(fā)出的光波進行調(diào)制,成為已調(diào)光波,然后再將已調(diào)的光信號耦合到光纖或光纜去傳輸。電端機就是常規(guī)的電子通信設(shè)備。 (2) 光收信機光收信機是實現(xiàn)光/電轉(zhuǎn)換的光端機。 它由光檢測器和光放大器組成。

7、其功能是將光纖或光纜傳輸來的光信號,經(jīng)光檢測器轉(zhuǎn)變?yōu)殡娦盘?,然后,再將這微弱的電信號經(jīng)放大電路放大到足夠的電平,送到接收端的電端汲去。(3) 光纖或光纜光纖或光纜構(gòu)成光的傳輸通路。其功能是將發(fā)信端發(fā)出的已調(diào)光信號,經(jīng)過光纖或光纜的遠距離傳輸后,耦合到收信端的光檢測器上去,完成傳送信息任務。 (4)中繼器中繼器由光檢測器、光源和判決再生電路組成。它的作用有兩個:一個是補償光信號在光纖中傳輸時受到的衰減;另一個是對波形失真的脈沖進行整形。(5)光纖連接器、耦合器等無源器件由于光纖或光纜的長度受光纖拉制工藝和光纜施工條件的限制,且光纖的拉制長度也是有限度的(如1Km)。因此一條光纖線路可能存在多根光

8、纖相連接的問題。于是,光纖間的連接、光纖與光端機的連接及耦合,對光纖連接器、耦合器等無源器件的使用是必不可少的。1.2數(shù)字光纖通信系統(tǒng)光纖傳輸系統(tǒng)是數(shù)字通信的理想通道。與模擬通信相比較,數(shù)字通信有很多的優(yōu)點,靈敏度高、傳輸質(zhì)量好。因此,大容量長距離的光纖通信系統(tǒng)大多采用數(shù)字傳輸方式。在光纖通信系統(tǒng)中,光纖中傳輸?shù)氖嵌M制光脈沖"0"碼和"1"碼,它由二進制數(shù)字信號對光源進行通斷調(diào)制而產(chǎn)生。而數(shù)字信號是對連續(xù)變化的模擬信號進行抽樣、量化和編碼產(chǎn)生的,稱為PCM,即脈沖編碼調(diào)制。這種電的數(shù)字信號稱為數(shù)字基帶信號,由PCM電端機產(chǎn)生。1.3光纖通信技術(shù)的特點

9、(1)頻帶極寬,通信容量大。光纖比銅線或電纜有大得多的傳輸帶寬,光纖通信系統(tǒng)的于光源的調(diào)制特性、調(diào)制方式和光纖的色散特性。 (2)損耗低,中繼距離長。目前,商品石英光纖損耗可低于020dB/km,這樣的傳輸損耗比其它任何傳輸介質(zhì)的損耗都低;若將來采用非石英系統(tǒng)極低損耗光纖,其理論分析損耗可下降的更低。這意味著通過光纖通信系統(tǒng)可以跨越更大的無中繼距離;對于一個長途傳輸線路,由于中繼站數(shù)目的減少,系統(tǒng)成本和復雜性可大大降低。 (3)抗電磁干擾能力強。光纖是由石英制成的絕緣體材料,不易被腐蝕,而且絕緣性好。 (4)無串音干擾,保密性好。在電波傳輸?shù)倪^程中,電磁波的泄漏會造成各傳輸通道的串擾,而容易被

10、竊聽,保密性差。光波在光纖中傳輸,因為光信號被完善地限制在光波導結(jié)構(gòu)中,而任何泄漏的射線都被環(huán)繞光纖的不透明包皮所吸收,即使在轉(zhuǎn)彎處,漏出的光波也十分微弱,即使光纜內(nèi)光纖總數(shù)很多,相鄰信道也不會出現(xiàn)串音干擾,同時在光纜外面,也無法竊聽到光纖中傳輸?shù)男畔?。除以上特點之外,還有光纖徑細、重量輕、柔軟、易于鋪設(shè);光纖的原材料資源豐富,成本低;溫度穩(wěn)定性好、壽命長。由于光纖通信具有以上的獨特優(yōu)點,其不僅可以應用在通信的主干線路中,還可以應用在電力通信控制系統(tǒng)中,進行工業(yè)監(jiān)測、控制,而且在軍事領(lǐng)域的用途也越來越為廣泛。二、 光纖通信中的線路編碼信號在光纖中傳輸時,需將簡單的二進制信號變換成適合光纖傳輸系

11、統(tǒng)的光線路碼型。而線路碼型有多種,在選擇線路碼時不僅要考慮光纖的傳輸特性,還要考慮光電器件的特性。在光纖通信系統(tǒng)中,常用的線路碼型有:擾碼,mBnB碼以及插入碼。2.1線路擾碼線路擾碼就是對輸入的二進制序列進行轉(zhuǎn)換,這樣這個二進制序列就會接近隨機的序列。然后再接收端再將擾碼解擾還原,因此保證了信息傳輸?shù)耐该鞫?。在系統(tǒng)光發(fā)射機的調(diào)制器前面可以增加一個擾碼器,這樣做的目的是保證傳輸?shù)耐该餍?,以此來將原始的二進制碼序列進行一些簡單的變換,讓其基本上接近于隨機序列。如:擾碼前序列:1100000011000擾碼后序列:1101110110011m序列可以用來實現(xiàn)擾碼器,在發(fā)射端產(chǎn)生m序列,然后將m序列

12、與信息序列做模二加的運算,這樣輸出來的就是經(jīng)過加擾的隨機序列了。解擾器在使用相同的擾碼序列與接收到的序列做模二加運算,用來恢復原始的信息。擾碼也有它的一些缺點:不能控制連續(xù)碼的出現(xiàn);不能在線誤碼檢測;不能夠解決隨機波動。2.2 mBnB碼該碼型又稱為塊碼、分組碼以及字母平衡型碼等等。在一般情況下都是n>m。將輸入的二進制碼每mB分成一組作為一個碼字,將輸入的碼字在相同的時間間隔內(nèi),根據(jù)一定的編碼規(guī)則,將其變換成nB一組的新碼字,最后以不歸零或歸零格式傳輸這些新碼流,此新碼就是mBmB碼。m,n都為正整數(shù),且多數(shù)用n=m+1這種形式,經(jīng)過一些變換,線路碼速率就會相比原二進制碼率提高了n/m

13、倍。常見的有1B2B,2B3B,3B4B,4B5B,5B6B碼,8B9B等,其中5B6B碼在高次群光纖通信系統(tǒng)中用得比較頻繁。mBnB碼的編碼原理以最簡單的1B2B碼(曼徹斯特碼)即將原碼中的“0”碼變換為“01”碼,將“1”碼變成“10”碼。2.3插入碼插入碼是將原始輸入的二進制碼按照每m比特一組進行分組操作,然后在每組碼的后面插入一個碼字,組成一組新的線路碼型長度為m+1,插入碼根據(jù)其插入碼字的規(guī)律不同可以分為以下幾種碼型:mB1C碼、mB1H碼以及mB1P碼。三、 設(shè)計平臺(Quartus II 軟件)圖3-1 Quartus II 軟件運行窗口3.1 Quartus II軟件介紹Qua

14、rtus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件該軟件。該界面友好,使用便捷,功能強大,是一個完全集成化的可編程邏輯設(shè)計環(huán)境,是先進的EDA工具軟件。它具有開放性、與結(jié)構(gòu)無關(guān)、多平臺、完全集成化、豐富的設(shè)計庫、模塊化工具等特點,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。Quartus II是適合單芯片可編程系統(tǒng)(SOPC)的最全面的設(shè)計環(huán)境。Q

15、uartus II軟件所支持的器件有很多,如max3000A、max 7000B、max 7000S、max7000AE、max2、mercury、cyclone、cyclone 2、stratix2、stratix GX、flex6000、flex10K、flex10KA以及flex0KE等。該軟件包的編程器可以提供功能強大的設(shè)計處理,因為它是整個系統(tǒng)的主要部分,設(shè)計者可以通過增加一定的約束條件來提高芯片的利用率。Quautus2軟件有它自帶的仿真器與綜合器,這些可以用來完成從設(shè)計輸入到硬件配置的整個設(shè)計過程。它可以支持altera的ip核,并且含有一些宏功能模塊庫。3.2 Quartus

16、II系統(tǒng)開發(fā)流程(1)創(chuàng)建工程文件在Quartus II軟件上創(chuàng)建一個新的工程。所謂工程就是你的設(shè)計的描述、設(shè)置、數(shù)據(jù)以及輸出的整個集合,此軟件會將這些存儲在不同類型文件集中放在同一個文件夾下,所以要創(chuàng)建一個工程。創(chuàng)建一個新的工程步驟如下:1 打開Quartus II軟件,點擊“File”,選擇“New Project Wizard”;2 在新彈出的窗口中分別鍵入新工程的工作路徑、項目名稱以及實體名稱,且項目名稱和實體名稱要一致;3 用鼠標點擊下方的“finish”按鈕即可完成對新工程的創(chuàng)建。(2)設(shè)計輸入在設(shè)計輸入之前還有重要的一步是電路的設(shè)計部分,在整個系統(tǒng)的設(shè)計之前首先必須進行的是方案的

17、論證、系統(tǒng)的設(shè)計以及FPGA芯片的選擇等等。一般來說采用的設(shè)計方案都是自頂向下的,即將整個系統(tǒng)劃分為若干個小模塊,然后再每個模塊劃分為下一個層次的小模塊,直到直接可以調(diào)用元件庫里的元件。(3)設(shè)計項目編譯 打開“Processing”菜單,點擊“Start Compilation”即可執(zhí)行項目的編譯功能,編譯器將運行預先指定的各個模塊的功能。編譯成功后,編譯器將會產(chǎn)生相應的輸出文件。如果有錯誤出現(xiàn),編譯器將停止編譯,并會相應的給出錯誤的信息欄,用鼠標點擊“error”的信息條,一般下可以指出錯誤的地方,以便修改,直至所有的錯誤均消除后,系統(tǒng)就會彈出編譯成功的窗口。(4)項目的仿真仿真

18、檢查綜合結(jié)果是否與原先要設(shè)計的項目功能是否一致。項目的編譯成功,需要做的就是對每個模塊的功能進行仿真測試,來查看設(shè)計的結(jié)果是否滿足原先設(shè)計的基本要求。仿真分為功能仿真、時序仿真以及波形仿真。功能仿真僅僅測試設(shè)計的邏輯功能;而時序仿真首先要測試邏輯的功能,而且還要測試有關(guān)設(shè)計的一些目標器件;波形仿真是在波形編輯器中將設(shè)計的邏輯功能用波形圖的形式顯示,通過查看波形圖來檢查設(shè)計的邏輯功能是否符合設(shè)計的要求。波形仿真的步驟包括新建波形文件、設(shè)置波形仿真器、插入仿真節(jié)點、編輯輸入波形、運行仿真器、檢查輸出波形是否符合設(shè)計要求等。四、系統(tǒng)設(shè)計4.1 5B6B碼表設(shè)計碼表設(shè)計的原則是:(1)“0”碼和“1”

19、碼出現(xiàn)的概率相等;(2)減小最大同符號連續(xù)數(shù)的數(shù)目;(3)選取游程差值D值小的碼組。為了達到以上設(shè)計目標,引入模式概念。6B碼有模式1和模式2。定義模式1為正,模式2為負;模式1和模式2交替出現(xiàn)。設(shè)計的碼表為:表4-1 5B6B碼表4.2 編碼電路設(shè)計4.2.1 編碼原理5B6B編碼電路模型如下圖,包括時鐘控制模塊、串并轉(zhuǎn)換模塊、存儲器模塊、并串轉(zhuǎn)換模塊等組成。圖4-1 編碼部分系統(tǒng)框圖編碼電路原理是一個本地振蕩器產(chǎn)生一個標準時鐘,有頻變電路產(chǎn)生的時鐘用于編碼電路工作的輸出電路的時鐘,他們之間的關(guān)系是緩沖電路接收5位輸入碼存儲為一個編碼器,這個編碼器電路中,根據(jù)5B6B碼表輸出6位代碼。再將這

20、6位碼在時鐘脈沖的驅(qū)動下在進行并串轉(zhuǎn)換來輸出。4.2.2 各模塊的設(shè)計及仿真(1)時鐘控制模塊(分頻模塊)該模塊主要是實現(xiàn)一個時鐘分頻的功能。本設(shè)計需要用到一個五分頻和一個六分頻分別為后面五位串并轉(zhuǎn)換模塊和六位并串轉(zhuǎn)換模塊提供時鐘,通過Quartus II封裝后的圖形如下:27 圖4-2 五分頻器模塊 圖4-3 六分頻器模塊設(shè)置好相應的輸入后分頻模塊的仿真波形如下:圖4-4 五分頻模塊的仿真圖4-5 六分頻模塊的仿真 圖中clk為系統(tǒng)時鐘輸入,clk5 為五分頻后的時鐘輸出,clk6為六分頻后的時鐘輸出。(2)串并轉(zhuǎn)換模塊該模塊主要實現(xiàn)串行數(shù)據(jù)輸入轉(zhuǎn)換為并行數(shù)據(jù)輸出,輸入的為5位的串行數(shù)據(jù),輸

21、出的為5位并行的數(shù)據(jù),通過Quartus II封裝后的圖形如下圖: 圖4-6 5位串并轉(zhuǎn)換模塊設(shè)置好相應的輸入和輸出后串并轉(zhuǎn)換模塊仿真波形如下:圖4-7 5位串并轉(zhuǎn)換模塊的仿真圖中圖中clk為系統(tǒng)時鐘輸入,clk5為五分頻后的時鐘輸入,shift_in為串行的5B碼組輸入,A為并行的5B碼組輸出。任選一個碼組10110,從仿真結(jié)果中可以看出,在第五個時鐘周期結(jié)束后并行輸出的碼組為10110,驗證了仿真的正確性。(3)編碼模塊該模塊主要實現(xiàn)5B數(shù)據(jù)轉(zhuǎn)換為6B數(shù)據(jù)的一個功能,其實質(zhì)的事一個PROM,通過程序把5B6B碼表存儲起來,然后如果輸入一個5B的數(shù)據(jù),通過查表后輸出一個對應的6B數(shù)據(jù),從而實

22、現(xiàn)5B轉(zhuǎn)6B的功能,通過Quartus II封裝后的圖形如下圖:圖4-8 編碼模塊設(shè)置好相應的輸入和輸出后六分頻器的仿真波形如下:圖4-9 存儲模塊(編碼模塊)的仿真 圖中clk為系統(tǒng)時鐘輸入;F為模式選擇位,0表示選擇模式1,1表示選擇模式2;Y位并行的5B碼組輸入,Q為并行的6B碼輸出。通過Y和Q的碼組可以發(fā)現(xiàn),當輸入00000時輸出110010,當輸入00001時輸出100001,只不過延遲了半個時鐘周期。與5B6B編碼表中進行對比可以證明仿真結(jié)果是正確的。(4)并串轉(zhuǎn)換模塊該模塊主要實現(xiàn)并行數(shù)據(jù)輸入轉(zhuǎn)換為串行數(shù)據(jù)輸出,輸入的為6位并行的數(shù)據(jù),輸出的為6位串行數(shù)據(jù),通過Quartus I

23、I封裝后的圖形如下圖:圖4-10 6位并串轉(zhuǎn)換模塊設(shè)置好相應的輸入和輸出后并串裝換模塊的仿真波形如下:圖4-11 6位并串轉(zhuǎn)換模塊的仿真圖中clk0表示系統(tǒng)時鐘6分頻后的時鐘輸入,clk為系統(tǒng)時鐘輸入,Q為并行的6B碼組輸入,shift_out為串行的6B碼組輸出。選用任意一個碼組100100測試,shift_out第六個周期后開始輸出的串行碼為100100,說明了仿真的正確性。4.2.3 編碼電路設(shè)計與仿真完整的電路模塊采用自頂向下的設(shè)計方法,在頂層模塊中調(diào)用各個子模塊完成系統(tǒng)控制功能。具體頂層設(shè)計電路如下:圖4-12 編碼完整電路設(shè)置好相應的輸入和輸出后并串裝換模塊的仿真波形如下:圖4-1

24、3 編碼電路仿真波形圖clk為系統(tǒng)時鐘輸入,clk5為5分頻器分頻后的輸出,clk6為6分頻器分頻后的輸出,F(xiàn)為模式選擇位, shift_in為串行的5B碼組輸入,shift_out為串行的6B碼組輸出。A、B分別為并行的5B、6B碼組。任選一個碼組01100作為串行碼組輸入,當F為1時,可以看到在一個clk6周期開始串行輸出的6B碼組為101100,通過碼表對比可以知道,設(shè)計與仿真都是正確的,故整個系統(tǒng)完全實現(xiàn)了所需的功能。4.3 譯碼電路設(shè)計4.3.1 譯碼原理圖4-14 譯碼部分系統(tǒng)框圖5B6B譯碼是編碼過程的逆過程,也就是把6B碼流按照算法規(guī)則譯成5B碼流。譯碼的輸入是6B碼流,譯碼時

25、,把送來的已變換的6B信號碼流,每6比特并聯(lián)為一組,作為PROM的地址,然后讀出5B碼,再經(jīng)過并-串變換還原為原來的信號碼流。在5B6B碼中,5位字符共有32種不同的組合碼字。而6位字符共有64種不同組合的碼字。4.3.2 各模塊的設(shè)計及仿真(1)時鐘控制模塊(分頻模塊)該模塊主要是實現(xiàn)一個時鐘分頻的功能。本設(shè)計需要用到一個五分頻和一個六分頻,通過Quartus II封裝后的圖形以及仿真波形與編碼模塊的分頻模塊完全相同,不同的是五分頻模塊為五位并串轉(zhuǎn)換模塊提供時鐘,而六分頻為六位串并轉(zhuǎn)換模塊提供時鐘。(2)六位串并轉(zhuǎn)換模塊該模塊主要實現(xiàn)串行數(shù)據(jù)輸入轉(zhuǎn)換為并行數(shù)據(jù)輸出,輸入的為6位的串行數(shù)據(jù),輸

26、出的為6位并行的數(shù)據(jù),通過Quartus II封裝后的圖形如下圖:圖4-15 6位串并轉(zhuǎn)換模塊設(shè)置好相應的輸入和輸出后并串裝換模塊的仿真波形如下:圖4-16 6位串并轉(zhuǎn)換模塊的仿真圖中圖中clk為系統(tǒng)時鐘輸入,clk6為六分頻后的時鐘輸入,shift_in為串行的6B碼組輸入,A為并行的6B碼組輸出。任選一個碼組100110,從仿真結(jié)果中可以看出,在第六個時鐘周期結(jié)束后并行輸出的碼組為100110,驗證了仿真的正確性。(3)譯碼部分該模塊主要實現(xiàn)6B數(shù)據(jù)轉(zhuǎn)換為5B數(shù)據(jù)的一個功能,其實質(zhì)的事一個PROM,通過程序把5B6B碼表存儲起來,然后如果輸入一個6B的數(shù)據(jù),通過查表后輸出一個對應的5B數(shù)據(jù)

27、,從而實現(xiàn)6B轉(zhuǎn)5B的功能,通過Quartus II封裝后的圖形如下圖:圖4-17 譯碼模塊設(shè)置好相應的輸入和輸出后并串裝換模塊的仿真波形如下:圖4-18 譯碼模塊仿真圖中clk5為系統(tǒng)時鐘輸入; Y位并行的5B碼組輸入,Q為并行的6B碼輸出。通過Y和Q的碼組可以發(fā)現(xiàn),當輸入011010時輸出11010,只不過延遲了半個時鐘周期。與5B6B編碼表中進行對比可以證明仿真結(jié)果是正確的。(4)五位并串轉(zhuǎn)換電路該模塊主要實現(xiàn)并行數(shù)據(jù)輸入轉(zhuǎn)換為串行數(shù)據(jù)輸出,輸入的為5位并行的數(shù)據(jù),輸出的為5位串行數(shù)據(jù),通過Quartus II封裝后的圖形如下圖:圖4-19 5位并串轉(zhuǎn)換模塊 圖4-20 5位并串轉(zhuǎn)換模塊

28、仿真圖中clk0表示系統(tǒng)時鐘5分頻后的時鐘輸入,clk1為系統(tǒng)時鐘輸入,Q為并行的5B碼組輸入,shift_out為串行的5B碼組輸出。選用任意一個碼組01101測試,shift_out第五個周期后開始輸出的串行碼為01101,說明了仿真的正確性。4.2.3 譯碼電路設(shè)計與仿真圖4-21 譯碼完整電路圖4-22 譯碼電路仿真波形圖clk為系統(tǒng)時鐘輸入,clk5為5分頻器分頻后的輸出,clk6為6分頻器分頻后的輸出, shift_in為串行的6B碼組輸入,shift_out為串行的5B碼組輸出。任選一個碼組100110作為串行碼組輸入,可以看到在一個clk5周期后串行輸出的6B碼組為00110,

29、通過碼表對比可以知道,設(shè)計與仿真都是正確的,故整個系統(tǒng)完全實現(xiàn)了所需的功能???結(jié)本次通信綜合訓練通過對5B6B線路碼的編譯碼工作原理進行分析,設(shè)計出相應的電路,實現(xiàn)5B6B線路碼的編碼與譯碼功能。我的設(shè)計是通過Quartus II軟件實現(xiàn)的,通過對設(shè)計所需系統(tǒng)的原理分析,將整個系統(tǒng)模塊化。然后寫出完成各部分功能對應的VHDL程序,再將這些程序封裝到一個模塊中,像編碼部分的分頻模塊、串并轉(zhuǎn)換模塊、編碼模塊、并串轉(zhuǎn)換模塊等。最后調(diào)用這些子模塊組成完整的電路,實現(xiàn)設(shè)計所需的編碼譯碼功能。在整個設(shè)計過程中,每個模塊都要進行仿真驗證,確保電路設(shè)計功能的正確性。在本次通信綜合訓練中遇到不少功能實現(xiàn)的問題

30、,尤其是對實現(xiàn)編譯碼功能模塊的VHDL語言的硬件電路實現(xiàn)的描述。從中深入體會到VerilogHDL語言軟件語法的靈活性和Quartus II強大的功能仿真能力。在這次綜合訓練過程中,屢屢碰見一些問題,在解決這些問題的過程中,不斷加強了我對光纖通信系統(tǒng)以及線路碼型的理解。對于一些自己不清楚,不明白但平時又很難發(fā)現(xiàn)的知識點有了一次全面的鞏固與復習。本次通信訓練讓我深深的感覺到理論與實踐相結(jié)合的重要性,為以后走向工作崗位從事通信設(shè)計提供了鍛煉的機會,打下了堅實的理論基礎(chǔ)和豐富了設(shè)計思想。在三周的通信綜合訓練過程中,指導老師時時在我們身旁幫助我們, 教會了我很多東西,謝謝我們的指導老師對我們的幫助,同

31、時也感謝同組同學的協(xié)作配合。參考文獻1 光纖通信系統(tǒng),邱昆,電子科技大學出版社2 光纖通信, 劉增基;西安電子科技大學出版社3 陳耀和.VHDL語言設(shè)計技術(shù)M.北京:電子工業(yè)出版社,2004. 4 閻石.數(shù)字電子技術(shù)第四版M.高等教育出版社,1998.5 謝琳.一種典型的4B5B編解碼電路,光通信技術(shù)J.光通信技術(shù),1997 (2 ):130-135.6孫嬌燕.5B6B碼編解碼方案的分析與改進J.光通信技術(shù),1994,4:282-286.75B6B編解碼的VHDL仿真實現(xiàn) 楊云 鄧元慶8VHDL硬件描述語言 辛春燕 國防工業(yè)出版社9 楊祥林. 光纖通信系統(tǒng)M. 北京:國防工業(yè)出版社,2000.

32、1.10 孟慶海,張洲. VHDL基礎(chǔ)及經(jīng)典實例開發(fā)M. 西安交通大學出版社,2008.4.附錄:編譯碼各模塊的程序Ø 五分頻模塊程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt5 is port(clk:in std_logic; clk5:out std_logic);end;architecture exam of CNT5 is signal q:integer range 0 to 4; signal temp: std_logic;begin p

33、rocess(clk) begin if clk'event and clk='1' then if q=4 then q<=0; temp<='1' else q<=q+1;temp<='0' end if; end if; end process; clk5<=temp; end exam;Ø 六分頻模塊程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity CNT6 isport (c

34、lk: in std_logic;clk6:out std_logic);end;architecture exam of CNT6 is signal q:std_logic_vector(2 downto 0); signal temp:std_logic;begin process(clk) beginif clk'event and clk='1'thenif q="101" then q<="000"temp<='1'else q<=q+1;temp<='0'end

35、 if;end if;end process;clk6<=temp;end exam;Ø 五位串并轉(zhuǎn)換模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SER2PAR5to5 is port ( clk: in std_logic; clk5: in std_logic; shift_in:in std_logic; A:out std_logic_vector(4 downto 0);end;architecture one of SER2PAR5to5 is

36、 signal q:std_logic_vector(4 downto 0);beginp1:process(clk)beginif clk'event and clk='1'then q<=q(3 downto 0)&shift_in;end if;end process p1;p2:process(clk5)beginif clk5'event and clk5='1'then A<=q;end if;end process p2;end one;Ø 編碼模塊程序library ieee;use ieee.std

37、_logic_1164.all;use ieee.std_logic_arith.all;entity prom5_6 isport ( Y: in std_logic_vector(4 downto 0); clk,F:in std_logic;Q: out std_logic_vector(5 downto 0);END;architecture one of prom5_6 issignal reg:std_logic_vector(5 downto 0);beginp1:process(Y,F)beginif F='0'then case Y is when "

38、;00000"=>REG<="110010" when "00001"=>REG<="110011" when "00010"=>REG<="110110" when "00011"=>REG<="100011" when "00100"=>REG<="110101" when "00101"=>REG<="

39、;100101" when "00110"=>REG<="100110" when "00111"=>REG<="100111" when "01000"=>REG<="101011" when "01001"=>REG<="101001" when "01010"=>REG<="101010" when "01011

40、"=>REG<="001011" when "01100"=>REG<="101100" when "01101"=>REG<="101101" when "01110"=>REG<="101110" when "01111"=>REG<="001110" when "10000"=>REG<="11000

41、1" when "10001"=>REG<="111001" when "10010"=>REG<="111010" when "10011"=>REG<="010011" when "10100"=>REG<="110100" when "10101"=>REG<="010101" when "10110"

42、=>REG<="010110" when "10111"=>REG<="010111" when "11000"=>REG<="111000" when "11001"=>REG<="011001" when "11010"=>REG<="011010" when "11011"=>REG<="011011"

43、; when "11100"=>REG<="011100" when "11101"=>REG<="011101" when "11110"=>REG<="011110" when "11111"=>REG<="001101" WHEN OTHERS=>REG<=NULL; end case; end if; if F='1' then case Y is wh

44、en "00000"=>REG<="110010" when "00001"=>REG<="100001" when "00010"=>REG<="100010" when "00011"=>REG<="100011" when "00100"=>REG<="100100" when "00101"=>REG&l

45、t;="100101" when "00110"=>REG<="100110" when "00111"=>REG<="000111" when "01000"=>REG<="101000" when "01001"=>REG<="101001" when "01010"=>REG<="101010" when &qu

46、ot;01011"=>REG<="001011" when "01100"=>REG<="101100" when "01101"=>REG<="000101" when "01110"=>REG<="000110" when "01111"=>REG<="001110" when "10000"=>REG<=&qu

47、ot;110001" when "10001"=>REG<="010001" when "10010"=>REG<="010010" when "10011"=>REG<="010011" when "10100"=>REG<="110100" when "10101"=>REG<="010101" when "101

48、10"=>REG<="010110" when "10111"=>REG<="010100" when "11000"=>REG<="011000" when "11001"=>REG<="011001" when "11010"=>REG<="011010" when "11011"=>REG<="001

49、010" when "11100"=>REG<="011100" when "11101"=>REG<="001001" when "11110"=>REG<="001100" when "11111"=>REG<="001101" WHEN OTHERS=>REG<=NULL; end case; end if;end process p1;p2:process(c

50、lk)beginif clk'event and clk='1'thenQ<=reg;end if;end process p2;end one;Ø 六位并串轉(zhuǎn)換模塊library ieee; use ieee.std_logic_1164.all; entity PAR2SER6to6 is port ( clk0,clk1: in std_logic; Q:in std_logic_vector(5 downto 0); shift_out : out std_logic); end PAR2SER6to6; architecture one of

51、PAR2SER6to6 is signal N:INTEGER RANGE 0 TO 5; signal REG:std_logic_vector(5 downto 0); begin p1:process(clk0,Q) begin if clk0'event and clk0='1' then REG<=Q; end if; end process p1; PROCESS(CLK1,REG,N) begin if clk1'event and clk1='1'then if n=5 then n<=0; else N<=n+

52、1; end if; end if; case N is when 0=>shift_out<=REG(5); when 1=>shift_out<=REG(4); when 2=>shift_out<=REG(3); when 3=>shift_out<=REG(2); when 4=>shift_out<=REG(1); when 5=>shift_out<=REG(0); when others=>shift_out<='X' end case; end process; end one;

53、Ø 六位串并轉(zhuǎn)換模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SER2PAR6to6 is port ( clk: in std_logic; clk6: in std_logic; shift_in:in std_logic; A:out std_logic_vector(5 downto 0);end;architecture one of SER2PAR6to6 is signal q:std_logic_vector(5 downto 0);beginp1:p

54、rocess(clk)beginif clk'event and clk='1'then q<=q(4 downto 0)&shift_in;end if;end process p1;p2:process(clk6)beginif clk6'event and clk6='1'then A<=q;end if;end process p2;end one;Ø 譯碼模塊程序library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all

55、; entity PROM6_5 is port ( clk5: in std_logic; Q: in std_logic_vector(5 downto 0); Y : out std_logic_vector(4 downto 0) ); end PROM6_5;architecture one of PROM6_5 issignal REG: std_logic_vector(4 downto 0);begin process(CLK5,Q) begin if clk5'event and clk5='1' then case Q is when "1

56、10010"=>REG<="00000" when "100001"=>REG<="00001" when "100010"=>REG<="00010" when "100011"=>REG<="00011" when "100100"=>REG<="00100" when "100101"=>REG<="

57、00101" when "100110"=>REG<="00110" when "000111"=>REG<="00111" when "101000"=>REG<="01000" when "101001"=>REG<="01001" when "101010"=>REG<="01010" when "001011"=>R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論