基于FPGA的HDB3編解碼器設(shè)計說明書
《基于FPGA的HDB3編解碼器設(shè)計說明書》由會員分享,可在線閱讀,更多相關(guān)《基于FPGA的HDB3編解碼器設(shè)計說明書(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
基于FPGA的HDB3編解碼器設(shè)計 摘 要:在數(shù)字通信系統(tǒng)中,數(shù)字基帶信號由信源發(fā)出,但是夾雜著低頻分量和直流分量,在傳輸信號時會容易產(chǎn)生碼間的干擾從而嚴(yán)重影響了傳輸?shù)目煽啃裕蚨獙ζ溥M行編碼再進行傳輸。FPGA(現(xiàn)場可編程門陣列)作為21世紀(jì)興起的一種可編程器件,要比傳統(tǒng)的可編程器件的集成度要高,且編碼電路直接集成在了FPGA芯片上。利用HDB3碼(三階高密度雙極性碼)在傳輸過程中可打破長連“0”、不含直流、碼譜位于高頻段和提取同步信號方便這一特點,本文提出了基于FPGA的HDB3編解碼器設(shè)計,基于頂層設(shè)計原理,首先介紹了FPGA的開發(fā)基礎(chǔ)和HDB3編解碼的原理,其次設(shè)計HDB3編解碼模塊,再者通過集成了FPGA設(shè)計環(huán)境的QuartusⅡ軟件中完成編解碼器的編譯與仿真等過程,分別對編碼模塊和解碼模塊進行仿真,最后進行了編解碼模塊的合成仿真,得到了與預(yù)期相符合的波形。最終結(jié)果表明,本次設(shè)計的基于FPGA的HDB3編解碼器具有編解碼簡單、程序靈活、工作可靠性高的特點,相比其他的可編程器件而言,基于FPGA的HDB3編解碼器的集成度更高,體積更小。 關(guān)鍵詞:FPGA;HDB3碼;VHDL語言;編解碼器 The Design of HDB3 Encoder and Decoder Based on FPGA Abstract:In digital communication system,digital baseband signal is issued by the signal source with low frequency component and the dc component. This is easy to produce the interference in the process of transmission signal which can seriously affect the reliability of transmission.Therefore,it is necessary to encode before the transmission. As the rise of a programmable device of the 21st century, FPGA(field programmable gate array) have a higher level of integration than traditional programmable device, and encoding circuit is directly integrated in the FPGA chip. In the process of transmission, HDB3 code (third-order high density bipolar codes) have the characteristics of break long "0", not including dc, code spectrum at high frequencies, and easy to extract the sync signal. Use of these advantages, this paper puts forward the HDB3 encoder and decoder design based on FPGA. Based on the principle of top design, this paper firstly introduces the development foundation of FPGA and the principle of HDB3 encoder and decoder. Secondly, design HDB3 encoder and decoder module.Through Quartus Ⅱ software which integrationed of the FPGA design environment, complete the process of compilation and simulation of encoder and decoder. Finally,has carried on the synthesis simulation of encoder and decoder module, and expectations of the wave are obtained. Final results show that the design of HDB3 encoder and decoder based on FPGA has the characteristics of simple and flexible in application and high working reliability.Compared with other programmable devices, HDB3 encoder and decoder based on the FPGA is more integrated and smaller. Key Words: FPGA; HDB3 code; VHDL language; codecs 目 錄 1. 概述 1 1.1 課題的意義 1 1.2 課題的研究背景 1 1.3 課題的主要研究工作 2 1.4 現(xiàn)代數(shù)字系統(tǒng)的設(shè)計方法 3 1.5 論文結(jié)構(gòu) 3 2. FPGA開發(fā)基礎(chǔ) 4 2.1 Quartus II簡介 4 2.2 可編程邏輯器件簡介 5 2.3 硬件描述語言簡介 7 2.4 FPGA開發(fā)流程 9 2.5 FPGA器件選型 12 3. HDB3編解碼原理 13 3.1 基本碼型簡介 13 3.2 HDB3碼的編解碼規(guī)則 16 4. HDB3編解碼器的設(shè)計與實現(xiàn) 18 4.1 總體設(shè)計構(gòu)思 18 4.2 HDB3編碼器的FPGA實現(xiàn) 18 4.2.1 插“V”模塊 19 4.2.2 插“B”模塊 19 4.2.3 極性變換模塊 20 4.2.3 HDB3編碼器的仿真 21 4.3 HDB3解碼器的FPGA實現(xiàn) 22 4.3.1 +V、-V碼的檢測 24 4.3.2 扣V扣B模塊建模 24 4.3.3 HDB3解碼器的仿真 25 4.4 HDB3編解碼器合成及驗證 25 5. 總結(jié)和展望 27 參考文獻 28 致 謝 29 附 錄 30 附錄1:基于VHDL語言的HDB3編解碼器源程序 31 附錄2:系統(tǒng)頂層設(shè)計原理圖 34 附錄3:HDB3編碼器RTL視圖 35 附錄4:HDB3解碼器RTL視圖 36 基于FPGA的HDB3編解碼器設(shè)計 1. 概述 1.1 課題的意義 相對于傳統(tǒng)的AMI碼來說,可以自檢出傳輸中的編碼錯誤,頻譜能量主要在基波頻率中段,其功率譜中沒有直流分量,但是當(dāng)信息代碼在傳輸?shù)倪^程中出現(xiàn)4連“0”碼時,這時的AMI碼就不具備了定時提取的功能,這也就是AMI的缺陷。為了克服這種編碼的缺陷,人們改進了傳統(tǒng)的AMI碼,并得到一種全新的雙極性歸零碼HDB3碼,由于HDB3碼是一種三階高密度雙極性碼,相比于AMI碼而言,它的頻譜能量主要集中在基波頻率的高頻段,且占用較窄的頻帶,具有編碼規(guī)則簡單、便于時鐘信號的提取、無直流分量、頻帶較窄的優(yōu)點,實現(xiàn)的電路的結(jié)構(gòu)層次也要比采用AMI碼編碼方式簡單,是標(biāo)準(zhǔn)ITU-TG.703推薦的PCM終端設(shè)備基群、二次群和三次群的標(biāo)準(zhǔn)數(shù)字傳輸接口碼型。 本文設(shè)計了基于FPGA的HDB3編解碼器,運用EDA所學(xué)的設(shè)計方法,結(jié)合VHDL語言編程,最后進行系統(tǒng)編解碼功能的時序仿真。仿真結(jié)果表明,最終設(shè)計的HDB3編解碼器具有較強的抗擾動性能,且改變參數(shù)就可調(diào)整編解碼器的功能,還具有軟件開發(fā)簡單、造價低、應(yīng)變能力快、互動性強、便于改動等特點。 1.2 課題的研究背景 EDA(Electrical Design Automation,電子設(shè)計自動化)技術(shù)不僅是現(xiàn)代集成電路的基礎(chǔ),還是數(shù)字電子技術(shù)電路設(shè)計要用到的關(guān)鍵平臺,作為21世紀(jì)科技創(chuàng)新和產(chǎn)業(yè)發(fā)展的關(guān)鍵部分,EDA技術(shù)的設(shè)計是基于大規(guī)模的可編程器件,如FPGA,表達方式有很多種,但其中最方便使用的是VHDL語言,VHDL語言是一種硬件描述語言,主要功能是實現(xiàn)系統(tǒng)硬件邏輯描述。EDA技術(shù)在開發(fā)使用中用到了很多工具,其中有計算機、大規(guī)??删幊踢壿嬈骷€有為其配套開發(fā)的軟件以及實驗系統(tǒng),EDA技術(shù)最大的功能是實現(xiàn)電子系統(tǒng)向硬件系統(tǒng)的轉(zhuǎn)變,我們可以在EDA的平臺上進行軟件的邏輯編譯、邏輯化簡與邏輯仿真,EDA也會自動完成對于FPGA芯片的適配編譯、邏輯映射與編程下載等過程,這就是現(xiàn)代數(shù)字電路中常用的一種方法,也是一門新技術(shù)。 現(xiàn)代集成電路技術(shù)發(fā)展迅猛,已經(jīng)進入了一個全新的階段,不管是從工藝上還是集成電路的復(fù)雜程度上,都比過去提升了很多。電子系統(tǒng)電路之所以成為現(xiàn)在發(fā)展熱門的一種技術(shù),就是由于它所使用的集成電路高度的集成化,使得電子系統(tǒng)成為一個復(fù)雜的系統(tǒng)。所以說,離開EDA技術(shù),電子系統(tǒng)的設(shè)計是很困難的。21世紀(jì)是人才競爭的世紀(jì),高素質(zhì)的電子科技人才是需要培養(yǎng)的,一個重要的途徑就是EDA教學(xué),這也成為了IC從業(yè)人員提升自我的一個重要手段。由于EDA技術(shù)的迅猛發(fā)展,對我們國家高校的傳統(tǒng)教學(xué)形成了無形的挑戰(zhàn),沖擊著傳統(tǒng)的電子技術(shù)教學(xué),需要提升高校的教師教學(xué)水平,在革新教學(xué)思路與創(chuàng)新教學(xué)方法上多下功夫。近年來,國內(nèi)許多高校更加注重高等人才的培養(yǎng),積極探索更加適應(yīng)新世紀(jì)的教學(xué)方法,電子技術(shù)的快速發(fā)展需要更多的優(yōu)秀人才,高校引入并消化吸收形成了完善的電子技術(shù)教學(xué)模式,比如開設(shè)電子技術(shù)課程,注重學(xué)生的實驗?zāi)芰?,在電子技術(shù)有獨特優(yōu)勢的高校在獲得國家重點項目支持資金后建立起了先進的實驗室,有的是國家級,有的是省級??偲鹌饋恚瑖鴥?nèi)高校不管是從硬件上還是從軟件上都開展了一系列電子技術(shù)教學(xué)創(chuàng)新,借助于EDA這一現(xiàn)代教學(xué)方法就更加方便了教學(xué),學(xué)生可以方便地使用EDA軟件進行電子技術(shù)設(shè)計與仿真等。電子系統(tǒng)的設(shè)計主要依靠EDA技術(shù)來完成,一般有系統(tǒng)級、電路級和物理級三個層次的電路設(shè)計。EDA技術(shù)可以設(shè)計的電子電路的頻段不再受局限,從低頻到高頻甚至更高頻率的微波都在EDA設(shè)計的范疇。更重要的是,電路的線性與非線性、種類、復(fù)雜程度等也都在EDA的考慮范圍內(nèi),因此,EDA所研究的對象是非常廣泛的。 我們試著從其他角度來看EDA的發(fā)展,比如專用集成電路(ASIC)的開發(fā)與應(yīng)用角度,一個完整的電子系統(tǒng)的設(shè)計至少應(yīng)包括以下5個子模塊:設(shè)計輸入子模塊、設(shè)計數(shù)據(jù)庫子模塊、分析驗證子模塊、綜合仿真子模塊、布局布線子模塊。 由此可見,EDA技術(shù)已經(jīng)成為現(xiàn)在數(shù)字電子技術(shù)設(shè)計的有力工具。 1.3 課題的主要研究工作 本課題主要研究的內(nèi)容是利用FPGA芯片,選擇合適的一種碼型對信號進行編碼,設(shè)計信號傳輸過程中的編碼器和解碼器,最終進行仿真驗證。本次設(shè)計采用的是HDB3碼對信號進行編碼,這是由于HDB3碼相比較于傳統(tǒng)的AMI碼而言可以打破4連“0”,在解碼環(huán)節(jié)便于同步提取,HDB3碼的的各項指標(biāo)都比較符合設(shè)計所需,比如在頻率、頻帶上。鑒于HDB3碼的優(yōu)越特點,PCM系統(tǒng)的基群到三次群通常采用HDB3碼作為標(biāo)準(zhǔn)接口碼型,課題的主要工作是以下幾點: a) 用QuartusⅡ軟件實現(xiàn)基于FPGA的HDB3編解碼; b) 在QuartusⅡ環(huán)境下構(gòu)建系統(tǒng)總體及編解碼原理圖設(shè)計; c) 對系統(tǒng)進行時序仿真; d) 驗證編解碼器的功能; e) 對本次的設(shè)計進行一個總結(jié)。 1.4 現(xiàn)代數(shù)字系統(tǒng)的設(shè)計方法 傳統(tǒng)設(shè)計數(shù)字系統(tǒng)電路的方法就是自上而下的設(shè)計方法,利用現(xiàn)有的元器件焊接好電路板,借助電路板來做出數(shù)字系統(tǒng)。設(shè)計人員在設(shè)計之初的首要工作就是選擇合適的元器件,選取元器件時要注意器件的各項參數(shù)指標(biāo)是否能達到要求。其次就是把我們用到的各種元器件焊接到電路板上,并用仿真軟件檢查電路的電氣可靠性能。EDA技術(shù)的出現(xiàn)催生出了新的設(shè)計理論和設(shè)計方法,并且也促進了可編程邏輯器件的新發(fā)。由于可編程器件具有編寫程序很靈活的特點,又利用現(xiàn)代EDA技術(shù)設(shè)計輸入,已經(jīng)成為了數(shù)字系統(tǒng)設(shè)計的主要方法。 可編程邏輯器件在器件內(nèi)部通過硬件描述語言來完成各個功能模塊設(shè)計,最終實現(xiàn)系統(tǒng)整體的功能設(shè)計。設(shè)計者按照系統(tǒng)的需求完成內(nèi)部邏輯和定義相應(yīng)的功能管腳,在芯片內(nèi)設(shè)計就可以完成電路板設(shè)計的大量工作,在芯片內(nèi)設(shè)計靈活的組合內(nèi)部功能塊定義管腳等來實現(xiàn)數(shù)字系統(tǒng)的邏輯功能,可以有效的減輕電路板以及電路設(shè)計的工作量和難度,極大的提高工作效率。采用可編程邏輯器件作為芯片的設(shè)計方法,設(shè)計人員可以反復(fù)設(shè)計編程,修改錯誤,方便靈活研發(fā)周期短,便于更快的開發(fā)產(chǎn)品搶占市場,而且縮小了系統(tǒng)的體積,減少了芯片的使用數(shù)量,可以提高系統(tǒng)的可靠性能。 利用EDA軟件和可編程邏輯器件芯片,可以形成專業(yè)從事IP模塊生產(chǎn)的無芯片EDA公司,也可以形成無生產(chǎn)線的集成電路設(shè)計公司,設(shè)計時調(diào)用IP核減少開發(fā)量。可以說,可編程邏輯器件和EDA設(shè)計工具在現(xiàn)代的數(shù)字系統(tǒng)設(shè)計也越來越重要了。 1.5 論文結(jié)構(gòu) 本文主要研究的是如何搭建好一個仿真平臺,首先就是對系統(tǒng)的整體設(shè)計進行規(guī)劃,然后設(shè)計各個子模塊,最后在搭建好的平臺上進行模塊仿真,具體章節(jié)安排如下:第一章是概述,這章介紹了本論文選題的背景及意義,以及可編程邏輯器件的發(fā)展歷程和現(xiàn)代數(shù)字系統(tǒng)的設(shè)計理論與方法。第二章是EDA技術(shù)和FPGA開發(fā)基礎(chǔ),詳細(xì)介紹了EDA技術(shù)和FPGA開發(fā)的基本原理,探析了FPGA芯片的種類和選型。第三章詳細(xì)說明了HDB3編解碼器的原理,首先介紹NRZ碼、AMI碼和HDB3碼這三種基本碼型及其編解碼規(guī)則,其次分別介紹了HDB3編碼器和解碼器的編解碼規(guī)則。第四章是基于FPGA芯片來實現(xiàn)HDB3編解碼器的設(shè)計,首先畫出了HDB3編解碼器設(shè)計的總體框圖,然后分別設(shè)計了編碼器模塊和解碼器模塊,在仿真軟件中得到時序仿真波形圖,然后將編碼器解碼器合成仿真,最終完成整體系統(tǒng)的時序仿真驗證。第五章是全文總結(jié),從總體上概括本次設(shè)計,寫出了這次設(shè)計的成果和不足之處。 2. FPGA開發(fā)基礎(chǔ) 2.1 Quartus II簡介 Altera公司在之前開發(fā)出了一綜合性仿真平臺軟件,它就是Quartus II集成開發(fā)軟件,該軟件支持多種輸入方式,自帶仿真器,能自動完成硬件系統(tǒng)到軟件的PLD設(shè)計。Quartus II同時也支持多種可操作的系統(tǒng),設(shè)計流程不僅可以幫助我們直觀地瀏覽RTL視圖,它的設(shè)計方式也非常多樣化,支持友好的用戶界面。它的顯著特點就是運行穩(wěn)定、界面友好、易于初學(xué)者掌握。在Quartus II內(nèi)部提供了一系列的調(diào)試查看工具,包括Technology Map、RTL Viewer、Chip Planner和TimeQuest等,并且集成了總線接口和軟核,提供最新型的研發(fā)工具,載入到設(shè)計的硬件系統(tǒng)中,可以編寫源程序以及Test bench程序。 不僅如此,Quartus II可以和DSP直接連接,還可以支持DSP操作系統(tǒng)。另外,片上開發(fā)系統(tǒng)也離不開Quartus II軟件的支持,可以在Quartus II平臺上開發(fā)相應(yīng)的系統(tǒng),系統(tǒng)整體設(shè)計和編程開發(fā)整合在一起,因此Quartus II是一個綜合性的平臺。 在使用Quartus II軟件進行電路設(shè)計時,我們可以采用圖形或者HDL編輯器進行編輯,因為這個軟件本身就是模塊化的編譯器。一個系統(tǒng)整個設(shè)計過程的第一步是進行設(shè)計的輸入,第二步是編寫我們所能實現(xiàn)電路的程序,第三步是進行仿真驗證。等仿真驗證的結(jié)果沒有問題后我們才畫元器件的布局與布線圖,隨后在Quartus II軟件中生成可下載的源文件,Quartus II軟件的設(shè)計流程如圖2-1所示。 圖2-1 Quartus II設(shè)計流程圖 Quartus II自帶IP內(nèi)核,包含模塊庫里面的宏功能,模塊功能強大,便于用戶利用,設(shè)計精簡了復(fù)雜度,從而優(yōu)化了設(shè)計。同時多方面支持EDA系統(tǒng)工具,使用戶對整個設(shè)計流程都熟悉。 不僅如此,Quartus II可以和DSP無縫對接,支持DSP應(yīng)用系統(tǒng),另外片上可編程系統(tǒng)也離不開Quartus II的支持,可以在Quartus II平臺上開發(fā)相應(yīng)的系統(tǒng),系統(tǒng)整體設(shè)計和編程開發(fā)整合在一起,因此Quartus II是一個綜合性的平臺。 2.2 可編程邏輯器件簡介 數(shù)字集成電路在最近的幾十年里得到了快速的發(fā)展,從小規(guī)模的集成電路到中規(guī)模集成電路再到大規(guī)模集成電路和超大規(guī)模集成電路,這一過程也說明了數(shù)字電子技術(shù)本身迅猛的發(fā)展。此過程出現(xiàn)了各種類型的數(shù)字集成電路,但大體上分為以下三種。 a) 標(biāo)準(zhǔn)邏輯器件。之所以稱為標(biāo)準(zhǔn)器件就是因為它是中小規(guī)模集成電路,基于TTL工作原理的計數(shù)器、多路轉(zhuǎn)換器、譯碼器、觸發(fā)器等都是比較典型的邏輯器件。標(biāo)準(zhǔn)器件的特點就是產(chǎn)量大、價格低廉、便于編譯。由于具有完整的功能,在設(shè)計標(biāo)準(zhǔn)器件時更注重提高產(chǎn)品的性能,因此標(biāo)準(zhǔn)器件的工作速度很快,幾乎沒有延遲。典型數(shù)字系統(tǒng)設(shè)計就要使用到標(biāo)準(zhǔn)器件,但是標(biāo)準(zhǔn)器件也有一些不足之處,那就是它的集成度不太高,在進行系統(tǒng)設(shè)計時,消耗的能量多,而且在印制排版時比較復(fù)雜,不容易焊接,這樣對用戶來說就很不方便,不方便修改,導(dǎo)致整個系統(tǒng)的可靠性能大大地降低。另外,當(dāng)設(shè)計的電路中一個元器件改變,就要重新設(shè)計電路板,這就嚴(yán)重影響了我們的設(shè)計工作。 b) 集成電路器件。21世紀(jì)電子技術(shù)的迅猛發(fā)展造就了基于軟件的集成電路器件,最著名的就是單片機和PLC等。與傳統(tǒng)的標(biāo)準(zhǔn)器件相比較而言,這類元器件實現(xiàn)了很多之前傳統(tǒng)器件不能實現(xiàn)的復(fù)雜功能。其特點是整個電路有很高的集成度,可以在自身的平臺上進行邏輯的實現(xiàn),使得我們設(shè)計的整個系統(tǒng)更加方便可靠。但是它也有一些缺點,就是這類器件的工作速度也不高,尤其是需要高速邏輯器件的場合更加不適合使用。再者就是這類電路的組成也很復(fù)雜,這是因為它在工作時需要外圍電路的幫助才能正??煽康墓ぷ?。 c) ASIC集成電路。為了克服以上器件的缺點,ASIC集成電路應(yīng)運而生,ASIC電路是具有實現(xiàn)某種特定功能的一個芯片,有了ASIC電路,我們減小了設(shè)計電路的大小,更提高了工作的穩(wěn)定性。 現(xiàn)在標(biāo)準(zhǔn)的ASIC電路分為三種,分別是全定制產(chǎn)品、半定制產(chǎn)品和可編程邏輯器件。全定制產(chǎn)品是指根據(jù)具體的要求設(shè)計制造,全定制電路的使用條件就是產(chǎn)能需求很大。半定制產(chǎn)品是指為了簡化設(shè)計、縮短研發(fā)時間和提高產(chǎn)能,半定制產(chǎn)品就是這樣一種方式??删幊踢壿嬈骷朔撕芏嗟膯栴},而且還可以再次編寫程序,為設(shè)計和研發(fā)提供了方便,可以作為我們設(shè)計電路的理想器件?,F(xiàn)代的可編程邏輯器件在實現(xiàn)的功能上可分為兩類,一種是簡單PLD,另一種是復(fù)雜PLD,兩種PLD在原理上相近,使用的場合不盡相同,圖2-2是PLD的分類圖。 圖2-2 PLD的分類圖 對比之下,F(xiàn)PGA和CPLD在目前的應(yīng)用更為廣泛些,這是由于這些可編程器件本身的功能更為強大、集成度很高,從而能實現(xiàn)更為復(fù)雜、較大規(guī)模的電路設(shè)計做基礎(chǔ),對于二次開發(fā)更為有好處,F(xiàn)PGA和CPLD的區(qū)別如表2-1所示。 表2-1 FPGA與CPLD的區(qū)別示意圖 參數(shù)指標(biāo) FPGA CPLD 程序存儲 SRAM,外掛EEPROM 內(nèi)部的EEPROM 資源類型 觸發(fā)器種類繁多 電路組合形式多樣 集成度 很高 比較低 使用場合 大規(guī)模集成電路 中小規(guī)模集成電路 速度 很快 比較慢 其他資源 EAB 無 2.3 硬件描述語言簡介 EDA技術(shù)可以采用多種靈活的編程語言,目前應(yīng)用比較廣泛的就是VHDL和VerilogHDL這兩種硬件描述語言。本次設(shè)計根據(jù)課題開題報告中的要求采用VHDL語言編程,故以下重點介紹這一硬件描述語言。 VHDL(Very-High-Speed Integrated Circuit Hardware Description Language,超高速集成電路硬件描述語言),VHDL語言是基于門級的邏輯設(shè)計語言,誕生于 1982 年,以后的幾十年里得到了迅猛的發(fā)展,現(xiàn)在已經(jīng)是數(shù)字系統(tǒng)電路的開發(fā)必不可少的工具。VHDL語言主要用于數(shù)字系統(tǒng)的設(shè)計和仿真,它表述了很多的結(jié)構(gòu)或者開發(fā)行為,內(nèi)含了一些接口模式。VHDL語言不僅具有普通編程語言的基本硬件特征外,它還能像高級語言一樣,用于我們設(shè)計數(shù)字系統(tǒng)。在進行數(shù)字系統(tǒng)的硬件電路設(shè)計時,我們之前采取的辦法就是首先選取合適的元器件,然后做好基于這些元器件的原理圖。這種方法是先設(shè)計好系統(tǒng)的頂層,再設(shè)計各個子系統(tǒng),這樣就基本做好了系統(tǒng)的硬件電路結(jié)構(gòu),設(shè)計從最基本的電路原理圖著手,然后一層一層逐層往上設(shè)計,最終得到想要的波形文件。VHDL語言的語法嚴(yán)格,描述方法對于不同的模塊也會不太一樣。對于不同的描述方法要采用不同的編碼模塊才行。因此,VHDL語言學(xué)習(xí)起來不是很簡單,需要首先學(xué)習(xí)簡單的語句和語法,然后認(rèn)識一些典型的編程案例,進行分析,這樣才能發(fā)揮出VHDL語言的強大功能。但是對于專業(yè)用戶而言,VHDL是非常有用的編程語言。為了快速地研發(fā)大規(guī)模集成電路,提高生產(chǎn)效率,并對研發(fā)成果保護以及增加成果的可復(fù)制性,各個大規(guī)模集成電路廠家都有自己的硬件描述語言。VHDL正式由于這種強大的需求才發(fā)展起來的,VHDL以形式化方式描述電路結(jié)構(gòu),并且和高級的描述方法結(jié)合起來,可以描述硬件電路的功能,比電路的原理圖更直接地顯示電路關(guān)系。VHDL語言具有高級程序語言的一些特點,他的主要目的就是用來編寫電路的邏輯關(guān)系,電路的性質(zhì)決定了VHDL設(shè)計的邏輯模型。 VHDL語言以其鮮明的特點獲得了社會的認(rèn)同,并廣泛用于現(xiàn)在的大規(guī)模數(shù)字系統(tǒng)設(shè)計層次上,作為類似于計算機高級語言的一種編程語言,VHDL語言具有強大的功能,且用戶體驗效果好,可以方便地在用戶之間進行交流,VHDL語言具有以下幾個特點: a) 電路設(shè)計形式多樣。VDHL語言可以支持靈活多樣的設(shè)計方法,很多的邏輯電路都可以使用VHDL語言來實現(xiàn),現(xiàn)在EDA軟件支持很多種硬件描述語言,VHDL語言就在其中; b) 電路設(shè)計層次多樣。VHDL語言對電路的功能進行逐層掃描,甚至到門級電路的標(biāo)準(zhǔn),并且VHDL還支持更多層次系統(tǒng)描述的能力。此外,不同層次的結(jié)構(gòu)描述語言可以和與之對應(yīng)的行為描述語言一起使用; c) 實現(xiàn)有關(guān)工藝編程。在采用VHDL語言設(shè)計的數(shù)字系統(tǒng)時,我們往往使用相應(yīng)的工具進行使用前的仿真驗證,從而可以更方便地描述電路所顯現(xiàn)的功能。當(dāng)設(shè)計需求發(fā)生改變時,我們只需要改動相應(yīng)的驗證工具就可使得電路的功能發(fā)生改變,這對我們的設(shè)計是很方便的; d) 易于共享和復(fù)用。VHDL語言作為標(biāo)準(zhǔn)的硬件描述語言,以其嚴(yán)格的語句及語法得到了廣泛的應(yīng)用。當(dāng)我們設(shè)計一個大規(guī)模的數(shù)字系統(tǒng)時,不可能像設(shè)計中小規(guī)模數(shù)字系統(tǒng)一樣,從門級電路開始設(shè)計,而是應(yīng)該首先設(shè)計出相應(yīng)的子模塊,通過模塊的累加從而達到設(shè)計電路的要求。并且由于VHDL語言是一種基于仿真平臺的綜合語言,所以用VHDL語言設(shè)計出來的成果方便了用戶之間的交流,從而為設(shè)計者減少了壓力并大大地縮短了一個產(chǎn)品的研發(fā)周期。 VHDL語言主要用于描述數(shù)字電路結(jié)構(gòu)上,所涉及的電路一般有以下五個層次:系統(tǒng)級、算法級、寄存器傳輸級、門級和電路級。VHDL語言不僅有描述硬件電路性質(zhì)的語言,更重要的是它的語句類似于計算機的C語言。VHDL語言的特點是將一個數(shù)字電路工程分成外部和內(nèi)部兩個部分,在對一個實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就會直接調(diào)用這個實體。VHDL語言可以支持自頂向下和基于庫的設(shè)計方法,還支持同步電路、異步電路、FPGA以及其他隨機電路的設(shè)計,但是VHDL語言不具備描述模擬電路的能力。 2.4 FPGA開發(fā)流程 現(xiàn)代集成電路設(shè)計的主要方式是基于硬件描述語言VHDL,經(jīng)過綜合布線與布局,下載到FPGA中進行軟件合法性測試,從而實現(xiàn)了基本的門電路,比如與門、或門、與非門等,更加復(fù)雜的譯碼器也可以得到。大多數(shù)的FPGA包含觸發(fā)器,是一種記憶元件,或是一種記憶塊。 FPGA基于邏輯單元陣列LCA(Logic Cell Array),內(nèi)部集成配置邏輯模塊CLB、輸入輸出模塊IOB和內(nèi)部連線三個部分。FPGA是可編程器件,相比之前的PAL或者GAL而言,F(xiàn)PGA的內(nèi)部結(jié)構(gòu)做了很大的改動。FPGA實現(xiàn)組合邏輯的方法是利用查表法,每個表端指向一個D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動其他邏輯電路或驅(qū)動I/O,由此構(gòu)成了既可實現(xiàn)組合邏輯功能又可實現(xiàn)時序邏輯功能的基本邏輯單元模塊,這些模塊間可以利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲單元加載編程數(shù)據(jù)來實現(xiàn)的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實現(xiàn)的功能,F(xiàn)PGA允許無限次的編程。FPGA作為一種可編程邏輯器件的出現(xiàn)不是偶然的,而是可編程邏輯器件發(fā)展的必然結(jié)果,F(xiàn)PGA的出現(xiàn)同時也促進了可編程邏輯的發(fā)展。上個世紀(jì)60年代,F(xiàn)PGA得到了大力發(fā)展,用FPGA設(shè)計的數(shù)字系統(tǒng)完全顛覆了以往的設(shè)計理念,用它設(shè)計的電路工作的可靠性非常高。FPGA內(nèi)部的邏輯塊可以被人為的連接,就像芯片里集成了一塊電路實驗板一樣。成品的FPGA可以根據(jù)人們的意愿改變,所以FPGA具有強大的可編寫功能。 FPGA雖說是專用集成電路的一部分,但是它要比專用集成電路慢,想要實現(xiàn)同樣的功能,要比專用集成電路占用的電路面積要小很多。FPGA也有很多優(yōu)點,比如從設(shè)計到成品的時間非常短,自帶的程序可擦除再覆蓋,具有良好的可執(zhí)行性。FPGA的設(shè)計流程一般是頂層設(shè)計、模塊設(shè)計、編譯仿真和現(xiàn)場調(diào)試。 可編程邏輯器件的設(shè)計過程是利用EDA開發(fā)軟件和編程工具對器件進行開發(fā)的過程。可編程邏輯器件的一般設(shè)計流程如圖2-3所示,包括設(shè)計準(zhǔn)備,設(shè)計輸入,功能仿真,設(shè)計處理,時序仿真和器件編程及測試等七個步驟。 圖2-3 可編程邏輯器件的一般設(shè)計流程 a) 設(shè)計準(zhǔn)備。設(shè)計一個系統(tǒng)我們首先要做的就是要進行方案論證,然后選擇系統(tǒng)所需的元器件。根據(jù)設(shè)計的難易程度,比如系統(tǒng)達到的功能或是復(fù)雜程度、工作的可靠性以及綜合布線等進行考量,選擇好我們的方案。一般而言,設(shè)計系統(tǒng)我們采用的是自上而下的方法。 b) 設(shè)計輸入。在確定好設(shè)計的要求后將電路以VHDL語言的形式表達出來,下載到計算機中,這就是設(shè)計的輸入階段,設(shè)計輸入通常有以下幾種形式: 原理圖輸入方式。設(shè)計描述方式最直接的一種方法就是原理圖,軟件系統(tǒng)中的元件庫可以調(diào)用元件,然后再畫出原理圖。這對從業(yè)人員的要求就很高,需要掌握很多的專業(yè)方面知識。原理圖的主要優(yōu)點就是可以方便地仿真,偏于設(shè)計人員觀察信號,并作出相應(yīng)的電路原理圖調(diào)整。但也有缺點,就是需要人為地進行改動,從而大大降低了效率。 硬件描述語言輸入方式。硬件描述語言描述設(shè)計的方法是文本方式,它有兩種,一種是普通硬件描述語言,另一種是行為描述語言。普通硬件描述語言有ABEL、CUR和LFM等,它們支持邏輯方程。行為描述語言是常用的頂級描述語言,主要有VHDL和VerilogHDL兩個IEEE標(biāo)準(zhǔn)。其優(yōu)點是:編程語言基于系統(tǒng)頂層原理圖,設(shè)計人員利用邏輯驗證確立方案的可行性;VHDL語言可移植性強,便于系統(tǒng)設(shè)計;邏輯描述和仿真功能強大,可以隨意在輸入庫之間轉(zhuǎn)換。 波形輸入方式。波形輸入方式主要是用來建立和編輯波形設(shè)計文件,以及輸入仿真向量和功能測試向量。 c) 功能仿真。所謂功能仿真就是對電路的實現(xiàn)功能進行驗證,仿真的結(jié)果并沒有延時,僅驗證電路功能。在開始仿真前,首先用VHDL語言編程,然后輸入到波形編輯器中建立文件,仿真會產(chǎn)生一些信號脈沖,觀察信號的變化與邏輯驗證相比較,再做出一些修改。 d) 設(shè)計處理。系統(tǒng)設(shè)計中的核心環(huán)節(jié)就是設(shè)計處理。編譯軟件將對設(shè)計輸入文件進行邏輯化簡、綜合優(yōu)化和適配,最后產(chǎn)生編程用的編程文件。設(shè)計處理過程如下: 語法和設(shè)計規(guī)則檢查; 邏輯優(yōu)化; 配和分割; 布局和布線。 e) 時序仿真。另外一種帶延時的仿真叫時序仿真,但是器件的延時取決于電路的布局與布線,因此在設(shè)計處理過程中,在對電路仿真前首先分析電路的時序和工作的可靠性,以及檢查并消除冒險競爭等是很重要的。 f) 編程測試。開始時序仿真后,編程就開始調(diào)用軟件的數(shù)據(jù)。對FPGA來說,編程后產(chǎn)生了位數(shù)據(jù)庫文件,然后自動完成編程數(shù)據(jù)下載到FPGA這一過程。 在滿足了編程所需的電壓、時序和算法后,器件編程才能成功。一般的FPGA器件編程需要專門設(shè)計的編程器來完成,但是基于高速閃存的FPGA可以由可擦寫的存儲元件修改,這樣就進行了編程測試。 2.5 FPGA器件選型 傳統(tǒng)的可編輯器件存在著很多缺陷,因此導(dǎo)致了FPGA的誕生。FPGA(Field-Programmable Gate Array)即現(xiàn)場可編程門陣列,屬于大規(guī)模集成電路中的一種,同時也是一種半加工電路,克服了加工電路本身的缺陷,同時還增加了自身邏輯門電路的數(shù)量,并提高了工作效率。現(xiàn)代集成電路設(shè)計的主要方式是基于硬件描述語言VHDL,經(jīng)過綜合布局,下載到FPGA中進行軟件合法性測試,從而實現(xiàn)了基本的門電路,比如與門、或門、與非門等,大多數(shù)的FPGA包含觸發(fā)器,是一種記憶元件,或是一種記憶塊。 FPGA內(nèi)部的邏輯塊可以被人為的連接,就像芯片里集成了一塊電路實驗板一樣。成品的FPGA可以根據(jù)人們的意愿改變,所以FPGA具有強大的可編寫功能。 FPGA雖說是專用集成電路的一部分,但是它要比專用集成電路慢,想要實現(xiàn)同樣的功能,專用集成電路占用的電路面積要小很多。但是優(yōu)點也有很多,比如從設(shè)計到成品的時間非常短,自帶的程序可擦除再覆蓋,具有良好的可執(zhí)行性。 FPGA技術(shù)設(shè)計的原理來自于基本的邏輯單元陣列組合,通過組合達到實現(xiàn)的功能。FPGA內(nèi)部集成了很多的模塊,有邏輯模塊、控制模塊和總線模塊。FPGA能實現(xiàn)組合設(shè)計的原因是它內(nèi)部集成了查表算法,從一個表端到另一個表端進行了特定的指向,最終指向D觸發(fā)器的輸入端,通過觸發(fā)器的觸發(fā)功能完成系統(tǒng)輸入與輸出接口的驅(qū)動,這樣構(gòu)成的功能模塊實現(xiàn)的功能就很強大了,既可以實現(xiàn)功能仿真又可以實現(xiàn)時序仿真,模塊與模塊之間的連接通過可靠的金屬線。FPGA的工作原理是通過內(nèi)置的模塊編譯來實現(xiàn)的,存儲單元的大小決定了電路實現(xiàn)功能的復(fù)雜程度,由于編譯軟件的靈活性,F(xiàn)PGA受到了很多用戶的歡迎。 整個系統(tǒng)設(shè)計的最重要部分就是FPGA的選型,選型應(yīng)該根據(jù)很多因素來決定,型號如果選擇不好就會對整個設(shè)計系統(tǒng)的運行不利,因此,合理的選型可以節(jié)省了設(shè)計時間,優(yōu)化了設(shè)計結(jié)構(gòu)。本次設(shè)計選用的FPGA芯片是Altera公司的CycloneⅡ系列的EP2C35F672C8。該芯片擁有的邏輯單元多達33216個,并且自帶484K片內(nèi)RAM,可以很好的完成本設(shè)計任務(wù),其余的資源可供后期開發(fā)應(yīng)用。 3. HDB3編解碼原理 3.1 基本碼型簡介 在用HDB3碼設(shè)計編解碼器設(shè)計之前要首先了解傳輸信號的基本碼型,所以首先介紹NRZ碼、AMI碼和HDB3碼。NRZ碼的全稱是Non-Return to Zero,NRZ碼的編碼規(guī)則如下:信道傳輸來的信號的1是有脈沖的,而0是沒有脈沖的,NRZ碼的信號占空比是1。但是NRZ碼的一個缺點就是含有太大的直流分量,而且頻率主要集中在高頻段。 NRZ碼分為單極性NRZ碼和雙極性NRZ碼兩種,單極性NRZ碼表示一個信道時,二進制的1和0分別對應(yīng)著基帶信號的正電平和負(fù)電平,在整個信號的傳輸過程中,基帶信號的電平的極性保持不變,如圖3-1所示。 圖3-1 單極性NRZ碼示意圖 在NRZ和雙極性非歸零編碼過程中,二進制的1和0也分別對應(yīng)著基帶信號的正負(fù)電平脈沖,如圖3-2所示。雙極性非歸零NRZ嗎的特點是濾去了直流分量、電壓門檻低、工作頻率穩(wěn)定,因此在傳輸信號時的抗干擾性能強,甚至在鋪設(shè)電纜時可以不用鋪設(shè)屏蔽線就能直接傳輸,雙極性的NRZ碼如圖3-2所示。 圖3-2 雙極性NRZ碼示意圖 現(xiàn)在一般使用雙極性歸零碼也就是AMI碼來進行信號的傳輸,下面介紹AMI碼。 AMI碼傳輸?shù)氖墙惶娴男盘?,根?jù)傳輸代碼中出現(xiàn)0或者1來進行編碼。當(dāng)代碼中傳輸?shù)氖?信號時,傳輸碼仍然為0保持不變,而當(dāng)代碼中傳輸?shù)氖?信號時則變?yōu)?1、-1這樣極性相互交替的脈沖。AMI碼并沒有直流成分信號,且信號基本為低頻信號,在上述過程進行后,這樣在信道傳輸?shù)倪^程中信號不容易失真,保證了傳輸?shù)目煽啃?。AMI碼優(yōu)點在于編碼電路相對比較簡單,誤碼狀況很容易觀察出來,但是沒有對長的連串0進行判斷,過長的0序列也會造成對另一端的解碼工作的影響。但是AMI的缺點就是提取定時信號比較困難,可能在傳輸過程中出現(xiàn)3個及3個以上的長連0數(shù)據(jù)串,圖3-3是AMI碼的示意圖。 圖3-3 AMI碼示意圖 HDB3碼之所以被稱為三階高密度雙極性碼時因為它在傳統(tǒng)AMI碼上做了很大的改進,從而得到了一種新型的NRZ碼,也就是單極性歸零碼。數(shù)據(jù)在傳輸過程中沒有出現(xiàn)4個及4個以上含0字符的時,此時HDB3碼就是AMI碼,也就是替代了原先的馬克反演碼,是一種正負(fù)交替的信號。當(dāng)信號傳輸過程中出現(xiàn)四個以上或含0的四個字符,首先對字符按照AMI編碼規(guī)則進行編碼,然后再進行以下的操作,最后的一位0將由破壞性脈沖信號V碼的正負(fù)性來替換,但是考慮到AMI碼正負(fù)性的交替,只要保證其正負(fù)交替的極性與原來非0的極性相同即可。同時,兩個相鄰的V碼的標(biāo)志交替變換極性,以確保代碼沒有直流組件。在上述過程進行開始后,兩個相鄰的V碼為了嚴(yán)格保證沒有直流組件,其極性需要正負(fù)交替。在本次設(shè)計中,插入V碼后的數(shù)據(jù)串被稱為破壞性序列。當(dāng)V碼和相鄰V碼間的0的個數(shù)是奇數(shù)的時候,最終編譯產(chǎn)生的便是我們想要的HDB3編碼。從另一個方面說,在上述過程進行后,破壞性序列的首位0應(yīng)該被插B信號的正負(fù)信號所取代,至于B碼的正負(fù)極性判定就要用到前面的非0信號來判定,它與非0信號之間應(yīng)該是相反的,而且非0信號緊挨著V碼,這樣就完成了整個編碼的工作,它的轉(zhuǎn)換步驟見表3-1。 表3-1 HDB3編碼的格式表 二進制序列 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 AMI碼 1 -1 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 編碼的第一步 1 -1 1 0 0 0 V -1 0 0 0 -V 0 0 0 -V 1 編碼的第二步 1 -1 1 0 0 0 V -1 0 0 0 -V B 0 0 V -1 設(shè)定信息碼為0000 0110 0001 0000,那么對應(yīng)的NRZ碼、AMI碼、HDB3碼的波形如圖3-4所示。 圖3-4 NRZ、AMI、HDB3碼波形圖 由圖3-4我們可以知道,不管是傳統(tǒng)的AMI碼還是改進的HDB3碼,它們都是連續(xù)的信號,沒有離散,信號對應(yīng)著基本的NRZ波形,通過編譯工作,NRZ碼就可以進行直接的傳輸。在設(shè)計過程中,本文將原始信號轉(zhuǎn)換為AMI碼,然后再轉(zhuǎn)換成HDB3碼,當(dāng)AMI碼中不出現(xiàn)4連0信號時,此時HDB3碼就是AMI碼,但是只要出現(xiàn)4連0碼,HDB3碼就需要重新進行編碼了。 3.2 HDB3碼的編解碼規(guī)則 a) HDB3碼的編碼規(guī)則:在傳輸信號的接收端所接受到的HDB3碼并不能直接使用,還要將其再還原成AMI碼才能使用。AMI在傳輸過程中不會改變0的極性,但是會改變1的極性,使得1的極性正負(fù)交替,在把AMI碼變換為HDB3碼的過程中就要考慮AMI中的4連0情況了,當(dāng)AMI中沒有4連0時,此時的HDB3碼就是AMI碼,但是AMI中有了4連0時,此時就需要將連0數(shù)據(jù)串的最后一位0替換成V碼的正負(fù)極性信號,用+V和-V來表示。然后對比觀察兩個V符號出現(xiàn)的位置,記錄下這個位置,數(shù)位置之間的非0符號的個數(shù),如果數(shù)出來的非0個數(shù)是整數(shù)個的話就需要將出現(xiàn)V符號位置的前一個非0符號的首位0改成+B或者-B字母,此時根據(jù)前面非0信號的極性來判定B的極性,簡單的說,B的極性與前面的非0信號極性相反。HDB3碼的基帶信號含有很少的低頻率,并且無直流要素,為了提取同步信號信息,設(shè)計考慮的只是在連0數(shù)據(jù)串只有3個的情況下的信號傳輸。 綜上所述歸納總結(jié)HDB3碼的特點:基帶信號的所含的頻率很低,并且濾去了直流要素;為了利于提取定時信息,連0串符號最多只有3個;編碼規(guī)則相比較而言復(fù)雜,信號的傳輸可靠性提高。 b) HDB3碼的解碼規(guī)則:從HDB3碼的編碼規(guī)則中可以推斷出來,在HDB3碼的每一個V碼前面必須有一個與其極性相同的非0碼。因此,解碼器的工作原理如下:如果兩個相鄰的非零的HDB3碼序列中的代碼都是相同的極性,則第二個必須是V,那么就將其之前的所有三個代碼轉(zhuǎn)換成0000序列,然后把所有剩下的的 1序列轉(zhuǎn)換成1序列,0序列仍然是0序列。與其他的解碼器相比,這種設(shè)計實現(xiàn)的解碼器最大的優(yōu)點在于它有解碼功能以及錯誤檢測和糾正功能,當(dāng)輸入的HDB3碼有一些錯誤時,它可以在解碼之前先糾正它們。 根據(jù)HDB3碼的編碼規(guī)則可知,HDB3碼譜序列中的錯誤一定是以下三種情況之一造成的:同極性的兩個相鄰的非0碼的個數(shù)超過2;相鄰的0序列碼的個數(shù)超過3;極性相同的兩個相鄰的非0代碼間的0序列的個數(shù)小于2。當(dāng)發(fā)生錯誤時,編碼器將根據(jù)一定的原則首先糾正錯誤的代碼,這個原則便是最大化修改后的每個解碼步驟的結(jié)果中包含0的個數(shù),考慮到NRZ序列碼轉(zhuǎn)換成為HDB3碼并被傳輸?shù)钠渲幸粋€特點就是它包含很長的連續(xù)的0序列。其修改過程如下,當(dāng)錯誤代碼為0,首先要看它是否能夠取代一個它之前的與第一個非0的代碼相同的極性的非0代碼。如果答案是否定的,那么取代它的極性相反的非0代碼。當(dāng)錯誤的代碼是非0,首先要看它是否可以被0所取代。如果答案是否定的,然后由它取代極性相反的非0代碼。關(guān)于這個設(shè)計提出來的修改建議中,這是所有可能中唯一的。當(dāng)錯誤的HDB3碼序列在這一原則的基礎(chǔ)上糾正之后,解碼結(jié)果將會有更多的0序列。經(jīng)過更正的錯誤的代碼,它會被立刻解碼。當(dāng)輸入HDB3碼沒有錯誤,它就會被直接解碼。 4. HDB3編解碼器的設(shè)計與實現(xiàn) 4.1 總體設(shè)計構(gòu)思 本研究的主要目的就是利用FPGA完成HDB3編解碼器的設(shè)計,本課題主要研究的內(nèi)容是利用FPGA芯片,選擇合適的一種碼型對信號進行編碼,設(shè)計信號傳輸過程中的編碼器和解碼器,最終仿真驗證成果。本次設(shè)計采用的是HDB3碼對信號進行編碼,這是由于HDB3碼相比較于傳統(tǒng)的AMI碼而言可以打破4連“0”,在解碼環(huán)節(jié)便于同步提取,HDB3碼的的各項指標(biāo)都基本符合設(shè)計的預(yù)期效果,比如在頻率、頻帶上。圖4-1為系統(tǒng)總體設(shè)計框圖,表明了總體上設(shè)計需要的模塊以及各個子模塊之間的關(guān)系。 圖4-1 HDB3編解碼框圖 HDB3編碼器模塊是將AMI碼變換為HDB3碼,通過相關(guān)的功能模塊傳送到HDB3解碼器模塊,在解碼模塊檢測解碼后的信號與AMI信號是否一致,一致則證明編解碼器設(shè)計成功,否則就要重新設(shè)計。 4.2 HDB3編碼器的FPGA實現(xiàn) 本次設(shè)計的基本內(nèi)容就是在原始信號的基礎(chǔ)上,利用HDB3編解碼規(guī)則來實現(xiàn)系統(tǒng)所要實現(xiàn)的功能,由于加入了外圍的模塊電路,最終實現(xiàn)了傳輸信號的單雙極性變換過程,HDB3編碼模塊如圖4-2所示。 圖4-2 HDB3編碼框圖 本次設(shè)計的HDB3編碼器模塊按照功能劃分為三個組成部分:插“V”模塊、插“B”模塊以及極性變換模塊。由于采用各個模塊之間采用了頻率一樣的時鐘上升沿信號,這就保證了各個模塊工作的一致,也為仿真創(chuàng)造了一致的時序,設(shè)計的編碼器為了清除異步信號還帶有清零端口,下面分別介紹各個組成模塊。 4.2.1 插“V”模塊 建立好一個插“V”模塊就是當(dāng)傳輸信號中出現(xiàn)四連“0”的時候?qū)ζ溥M行檢測,從而得到其位置,把最后一個“0”替換為“V”模塊中的V碼,V碼可以是上升沿有效的高電平,在其他原則條件下,就保證了傳輸信號的解碼輸出。為了后續(xù)工作的方便開展,我們用“11”來代表插入的信號,“01”來代表“1”,“00”來代表“0”。事實上,插“V”模塊的設(shè)計并不難,我們首先檢測傳送到來的原始信源,如果信源中出現(xiàn)了0碼,找出與之相鄰的0碼的個數(shù),如果查到的個數(shù)不小于3個時,我們就用V碼來替換原始信源。如果沒有出現(xiàn)0碼,原始信源就會繼續(xù)傳送,這就實現(xiàn)了插“V”模塊的設(shè)計。 在前面得設(shè)計中插“V”模塊的設(shè)計用到了4位選擇器,用來標(biāo)出插“V”的具體位置。在程序的編譯過程中,我們編寫了VHDL語句來實現(xiàn)插“V”的編碼功能??梢圆捎脿顟B(tài)機的方式控制,為了簡化這里使用流程來控制,將條件判斷語句(if語句)嵌套在選擇語句(case語句)中,這樣控制來實現(xiàn)功能。(詳細(xì)程序見附錄一) 當(dāng)輸入了一序列消息代碼后,在完成插入“V”符號操作后,對比輸入信息代碼與插入“V”之間的關(guān)系如表4-1所示: 表4-1 代碼與插“V”關(guān)系表 代碼 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 插“V”后 01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 4.2.2 插“B”模塊 HDB3編解碼時并無直流產(chǎn)生的原因就是信碼極性的相互交替,在加入了插“V”模塊后可能會對極性的交替產(chǎn)生影響,所以就引入了插“B”模塊,插“B”模塊可以很好的解決極性交替失常的問題。插“B”模塊的工作原理是:當(dāng)兩個V碼之間的非“0”符號的個數(shù)不是奇數(shù)時,就在含有非“0”數(shù)據(jù)串的第一位用“B”符號來替換,這就是插“B”模塊的基本實現(xiàn)原理。 上圖中的插“B”模塊最大的難點就是狀態(tài)不確定因素如何解決,這里面有一個狀態(tài)機的時序問題。其中還有如何確定是“1”,還是“V”的問題。解決這個難點的方法是:我們首先應(yīng)把經(jīng)過插“V”模塊操作的信號移出寄存器的寄存地址,由于采用了一樣的時鐘頻率,就保證了插“B”模塊的順利進行。此時再把“V”符號替換為“B”符號,本次設(shè)計采用的這兩個獨立模塊要調(diào)用前面提到的數(shù)據(jù)庫,D觸發(fā)器的輸出會有一個延遲,在后面的仿真圖中我們可以清晰的看出來。 在做好了各個獨立模塊之后,下面要做的就是在元件庫中把各個模塊連接起來,在原理圖中把接口引出,定義實體作為元件庫中的一個元件,然后通過VHDL語言編程下載到軟件中跟原理圖中的接口相連接,這樣設(shè)計的元件庫中的元件屬于比較低的設(shè)計層次,還需要頂層原理的設(shè)計,已經(jīng)設(shè)計好的子模塊可以在后面的仿真中用到。VHDL語言引用的是實體元件,它可以很好地完成系統(tǒng)的頂層設(shè)計。 在進行插“B”模塊的設(shè)計之前,我們首先應(yīng)該找出插“V”模塊后的V碼的具體位置,前面已經(jīng)提到,“11”代表“V”的位置,“01”代表“1”,“00”代表“0”,雙極性編碼就可以準(zhǔn)確找出V碼的位置。按照這種方式,輸入代碼與插“B” 及插“V”后的信號關(guān)系如表4-2所示: 表4-2 代碼插入模塊示意圖 代 碼 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 插“V”后 01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 01 01 插“B”后 01 00 00 00 11 01 00 00 00 11 01 01 10 00 00 11 01 01 4.2.3 極性變換模塊 根據(jù)上面的碼型對比圖可以知道,兩個相鄰位置的V符號在正負(fù)號之間不斷進行極性交替變換,這種編碼的方式同時也保證了V碼的極性和首位不是0碼的極性是相同的。我們用“11”、“10”和“01”來分別代替“V”、“B”和“1”,這就是雙相碼標(biāo)識的方法。 經(jīng)過進一步的分析與討論可以知道,V碼的極性應(yīng)與第一位非“0”信號的極性一致,B碼的極性應(yīng)與第一位非“0”信號的極性相反。因為我們用“11”來代替信號“V”碼,從而可以很清晰地看出信號之間的區(qū)別,只要將V碼進行適度的極性變換就可以讓1碼和B碼一塊地變換極性,上述過程就是HDB3的編碼過程,這就實現(xiàn)了單極性到雙極性的變換。 在QUARTUS Ⅱ軟件中急需解決這樣一個問題,就是這個軟件本身并不能自動識別“-1”,因為不管是功能仿真還是時序仿真都只能識別“1”和“0”。故在本次設(shè)計中采用兩相碼來解決這個問題,在軟件設(shè)計中加入四選一數(shù)據(jù)選擇開關(guān)完成兩相碼的定義,我們用“00”、“01”、“11”分別取代“0”、“+1”、“-1”,這樣QUARTUS Ⅱ軟件就可以自動地識別和轉(zhuǎn)換了。 根據(jù)以上的設(shè)計想法首先編寫好源程序,在QUARTUS Ⅱ軟件中生成可執(zhí)行的文件,下載到目標(biāo)芯片中就可以看到仿真的結(jié)果。對比發(fā)現(xiàn)波形的變化并不太平穩(wěn),因此在選擇器的地址編碼上采用數(shù)組的校驗方法,這樣就得到了符合設(shè)計要求的波形。 4.2.4 HDB3編碼器的仿真 在完成了電路結(jié)構(gòu)的搭建并寫好VHDL程序后,下一步就是在仿真軟件中進行仿真了,仿真有著嚴(yán)格的思路,要遵循一定的步驟,在仿真之前還應(yīng)該把搭建好的電路檢查一下,并且對程序進行逐一檢查。 按照上述思路編寫好程序,然后將其生成可下載文件,下載到FPGA中,但其輸出結(jié)果發(fā)現(xiàn)是單極性雙電平信號,并不是像“+1”、“-1”、“0” 這樣多種電平變化的波形,事實上,采用數(shù)據(jù)選擇器實現(xiàn)四選一功能,從而可以得到如圖4-3所示符合規(guī)則的“+1”、“-1”、“0”在輸出端輸出變化的波形。 圖4-3 HDB3編碼器仿真波形 下面是波形分析:圖4-3是編碼器在仿真軟件中得到的仿真波形,從圖中我們可以清晰地看出來,主要有4路信號波形能反應(yīng)出編碼的仿真,分別是輸入波形、輸出波形、時鐘上升沿、V碼波形,傳輸信號經(jīng)過了前面編碼器設(shè)計的插“V”模塊和補“B”模塊后,得到的一個輸出波形的時序仿真圖,經(jīng)過對比測取波形的偏移量后發(fā)現(xiàn),輸出波形相比較于輸入波形來說,是有一定的延遲的,經(jīng)過認(rèn)真的對比后發(fā)現(xiàn)大約有5個周期的延遲,用時鐘脈沖的上升沿來保證所有模塊的工作頻率一致,這就為查看波形提供了極大的方便。圖中DATA-IN表示碼元輸入,CLOCK表示時鐘輸入,DATA-OUT表示插“V”后二進制數(shù)碼輸出,V-CNT表示插“B”后的二進制數(shù)碼輸出,“000”表示“0”,“010”表示“-1”,“110”表示“+1”,“011”“-V”表示,“111”表示“+V”,“001”表示“-B”,“101”表示“+B”。 4.3 HDB3解碼器的FPGA實現(xiàn) 本次設(shè)計中解碼器的設(shè)計利用了各個模塊的組合來實現(xiàn)的,因為之前設(shè)計了編碼器,所以有些模塊是根據(jù)了編碼模塊來進行的解碼設(shè)計,本次設(shè)計的解碼器共有4大模塊,分別是整流模塊、V碼檢測模塊、時鐘提取模塊和扣V模塊,模塊與模塊之間通過嚴(yán)謹(jǐn)?shù)倪壿嬯P(guān)系連接起來構(gòu)成了這樣的一個解碼器,設(shè)計中還用到了兩個相加電路,用于V碼的計算,圖4-4是HDB3解碼器框圖。 圖4-4 HDB3解碼框圖 正如圖中所示的一樣,HDB3碼傳輸過來之后經(jīng)過了兩個整流電路,一個是正整流電路,一個是負(fù)整流電路,這樣就分別整流成了帶有正負(fù)極性的信號。接下來要經(jīng)過“+V”碼和“-V”碼的檢測電路,這個電路的工作原理是:當(dāng)信號中沒有含V碼脈沖時,這時信號脈沖“1”的極性會交替變換;當(dāng)出現(xiàn)兩個含“+1”或“-1”信號時,我們根據(jù)前面的- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
10 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 基于 FPGA HDB3 編解碼器 設(shè)計 說明書
鏈接地址:http://appdesigncorp.com/p-12883085.html