畢業(yè)設(shè)計(論文)基于FPGA的HDB3編譯碼的建模與實現(xiàn)_第1頁
畢業(yè)設(shè)計(論文)基于FPGA的HDB3編譯碼的建模與實現(xiàn)_第2頁
畢業(yè)設(shè)計(論文)基于FPGA的HDB3編譯碼的建模與實現(xiàn)_第3頁
畢業(yè)設(shè)計(論文)基于FPGA的HDB3編譯碼的建模與實現(xiàn)_第4頁
畢業(yè)設(shè)計(論文)基于FPGA的HDB3編譯碼的建模與實現(xiàn)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于fpga的hdb3編譯碼的建模與實現(xiàn)(吉首大學(xué)物理科學(xué)與信息工程學(xué)院,湖南 吉首 416000)摘 要 本文以fpga為硬件平臺,基于eda工具quartus為軟件平臺上對hdb3編/譯碼進行實現(xiàn)。由于在eda的軟件平臺quartus上不能處理雙極性的信號,因此對hdb3碼的編/譯碼的實現(xiàn)分為:軟件部分和硬件部分。軟件部分是基于quartus的平臺上對輸入的碼元進行編碼和譯碼,通過系統(tǒng)仿真,驗證了hdb3碼的編譯碼的正確性;硬件部分采用cd74hc4052雙四選一的數(shù)模選擇器實現(xiàn)單極性到雙極性的轉(zhuǎn)換;采用ad790和se5539實現(xiàn)雙極性到單極性的轉(zhuǎn)換。最后,通過仿真,驗證了方案的正確性。

2、關(guān)鍵詞:hdb3;建模;vhdl;編/譯碼;quartusthe modeling and realization of the hdb3 encoding and decoding based on fpgawu yingfa(college of physics science and information engineering,jishou university,jishou,hunan 416000)abstractthe hdb3 encoding and decoding are realized based on taking fpga as hardware platfor

3、m and taking quartus,a kind of eda tool,as the software platform. because quartus can not deal with the bipolar of signal,the realization of hdb3s encoding/decoding function is divided into two parts: software and hardware part. in the software part: the encoding/decoding of hdb3 are realized based

4、on quartus, and the simulation result that the realization is correct. in the hardware part: the cd74hc4052 are used to realize unipolar /bipolar transformation, at the same time, the ad790 and se5539 are used to realize bipolar/unipolar transformation. at last, the efficiency of the above method is

5、 proved by the simulation results.key words: hdb3;modeling;vhdl;encoding/decoding;quartusi目 錄第一章 緒 論1第二章 eda輔助設(shè)計工具的介紹32.1 fpga的介紹32.1.1 pld的介紹32.1.2 fpga的系統(tǒng)介紹32.2 vhdl語言和quartus42.2.1 vhdl語言42.2.2 eda工具quartus5第三章 hdb3碼編碼器的建模與實現(xiàn)63.1 hdb3碼的編碼規(guī)則63.2 基于vhdl的編碼器的建模及實現(xiàn)63.2.1 編碼器的vhdl建模及難點分析73.2.2 基于vhdl編

6、碼器的實現(xiàn)73.3編碼中單/雙極性轉(zhuǎn)換的實現(xiàn)113.3.1單/雙極性轉(zhuǎn)換的流程圖113.3.2單/雙極性變換的vhdl實現(xiàn)113.3.3單/雙極性變換的硬件實現(xiàn)113.4 hdb3碼編碼器的波形仿真及分析113.5 小結(jié)11第四章 hdb3碼譯碼器的建模與實現(xiàn)114.1 hdb3碼的譯碼規(guī)則及建模114.2 譯碼中雙/單極性的實現(xiàn)114.3 基于vhdl譯碼器的實現(xiàn)114.3.1基于vhdl譯碼器的流程圖114.3.2 hdb3碼譯碼器的程序設(shè)計114.4 hdb3碼譯碼器的波形仿真及分析114.5 小結(jié)11第五章 結(jié)束語11參考文獻11致謝26附錄一11附錄二11基于fpga的hdb3編譯碼

7、的建模與實現(xiàn) 緒論第一章 緒 論數(shù)字基帶信號的傳輸是數(shù)字通信系統(tǒng)的重要組成部分之一。特別是hdb3(high density bipolar-3 coding,三階高密度雙極性碼)碼的使用,其不但保持ami(alternation mark inversion,交替反轉(zhuǎn)碼)碼的優(yōu)點外,更使連0串的個數(shù)減到至多0個的優(yōu)點,而且還克服了ami碼的關(guān)于可能出現(xiàn)長連0串而造成提取定時信號困難的缺點?;谏鲜龅奶攸chdb3碼在通信傳輸領(lǐng)域應(yīng)用很廣泛,因此其作為ccitt推薦使用的碼型之一1。本畢業(yè)設(shè)計是采用eda工具實現(xiàn)hdb3碼的仿真和校驗,從而使系統(tǒng)的實現(xiàn)具有很大的靈活性。eda(electroni

8、cs design automation,電子設(shè)計自動化)就是以大規(guī)模可編程邏輯器件為設(shè)計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達方式,以計算機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件方式設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的編輯邏輯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯布局布線、邏輯仿真,直至對于特定芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)2.4。 本畢業(yè)設(shè)計的主要工作是hdb3碼的編譯碼的建模與實現(xiàn),對于hdb3編譯碼模塊,一般以硬件的方式來實現(xiàn)的。但它具有產(chǎn)品更新慢、設(shè)計靈活性差、不可重配置及現(xiàn)場升級性能缺乏等缺點。因

9、此擬采用可編程邏輯電路來實現(xiàn)??删幊踢壿嬰娐肥莈da的一個重要技術(shù)基礎(chǔ),主要包括fpga(field programmable gate array,現(xiàn)場可編程邏輯門陣列)和cpld(complex programmable logic devices,復(fù)雜可編程邏輯器件),它們具有豐富的可重配置邏輯資源,既包含有大量實現(xiàn)組合邏輯的資源;還包含有相當數(shù)量的觸發(fā)器,因此采用eda技術(shù)進行電子系統(tǒng)的設(shè)計有以下優(yōu)點:l 系統(tǒng)可現(xiàn)場編程,在線升級;l 用軟件的方式設(shè)計硬件;l 整個系統(tǒng)可集成在一個芯片上,體積小、功耗低、可靠性高;l 用軟件方式設(shè)計的硬件系統(tǒng)的轉(zhuǎn)換是由有關(guān)的開發(fā)軟件自動完成,降低了系統(tǒng)

10、設(shè)計的難度。對于hdb3編譯碼器的實現(xiàn),本畢業(yè)設(shè)計采用硬件描述語言vhdl來實現(xiàn)。用vhdl語言設(shè)計分別設(shè)計一個完善的hdb3碼編碼器和譯碼器。本設(shè)計是從hdb3原理出發(fā),采用“從頂?shù)降?top-down)”設(shè)計方法,以eda工具quartus5.1為軟件平臺,輸入hdb3的代碼并對其進行編譯、綜合和仿真,經(jīng)過功能測試、驗證,最終實現(xiàn)基于fpga的hdb3碼的編碼和譯碼功能。本文對章節(jié)的安排如下:第二章對fpga、vhdl(very-high-speed integrated circuit hardware description language,甚高速硬件描述性語言)和quartus等進

11、行簡介,并選定fpga和quartus作為系統(tǒng)的開發(fā)環(huán)境。第三章介紹hdb3碼的編碼原理,并基于fpga對hdb3碼編碼部分進行建模及實現(xiàn),通過波形仿真,校驗編碼模塊的正確性。第四章介紹hdb3碼的譯碼原理,并基于fpga對hdb3碼譯碼部分進行建模及實現(xiàn),通過波形仿真,校驗譯碼模塊的正確性。第五章對全文進行總結(jié)。38基于fpga的hdb3編譯碼的建模與實現(xiàn) eda輔助設(shè)計工具的介紹第二章 eda輔助設(shè)計工具的介紹2.1 fpga的介紹2.1.1 pld的介紹2.4pld(programmable logic devices,可編程邏輯器件)是一種由用戶編程以實現(xiàn)某種邏輯功能的新型邏輯器件。它

12、誕生于20世紀70年代,在20世紀80年代以后,隨著集成電路技術(shù)和計算機技術(shù)的發(fā)展而迅速發(fā)展。自問世以來,pld經(jīng)歷了從prom(programmable read-only memory,可編程序的只讀存儲器)、pla(programmable logic array,可編程序邏輯陣列)、pal(programmable array logic,可編程陣列邏輯)、gal(generic array logic,通用陣列邏輯)到fpga、isplsi(in system programmable large scale integration,在系統(tǒng)可編程大規(guī)模集成電路)等高密度pld的發(fā)展過

13、程。在此期間,pld的集成度、速度不斷提高,功能不斷增強,結(jié)構(gòu)趨于更合理,使用起來靈活方便。pld的出現(xiàn),打破了由中小規(guī)模通用型集成電路和大規(guī)模專用集成電路;壟斷的局面。與中小型規(guī)模通用型集成電路相比,用pld實現(xiàn)數(shù)字系統(tǒng),有集成度高、速度快、功耗小、可靠性高等優(yōu)點。與大規(guī)模專用集成電路相比,用pld實現(xiàn)數(shù)字系統(tǒng),有研制周期短、先期投資少、無風(fēng)險、修改邏輯設(shè)計方便、小批量生產(chǎn)成本低等優(yōu)勢。最早的可編程邏輯器件出現(xiàn)在20世紀70年代初,主要是prom和pal。隨后出現(xiàn)了pal、gal、epld(erasable programmable logic devices,可擦除可編程邏輯器件)和cpl

14、d、pfga、isplsi。2.1.2 fpga的系統(tǒng)介紹fpga是20世紀80年代中期,美國altera公司推出一種現(xiàn)場可編程門陣列,其結(jié)構(gòu)主要分為三部分:可編程邏輯單元,可編程輸入輸出單元和可編程連線部分。fpga器件采用邏輯單元陣列結(jié)構(gòu)和靜態(tài)隨機存取存儲器工藝,設(shè)計靈活,集成度高,可利用計算機輔助設(shè)計,繪出實現(xiàn)用戶邏輯原理圖、編輯布爾方程或用硬件描述語言等方式設(shè)計輸入;然后經(jīng)一系列轉(zhuǎn)換程序、自動布局布線、模擬仿真的過程;最后生成配置fpga器件的數(shù)據(jù)文件,對fpga器件初始化。這樣實現(xiàn)了滿足用戶要求的專用集成電路,真正達到了用戶自行設(shè)計、自行研制和自行生產(chǎn)集成電路的目的。概括來說,fpg

15、a器件具有下列優(yōu)點:高密度、高效率、系列化、標準化、小型化、多功能、低功耗、低成本、設(shè)計靈活方便,可無限次反復(fù)編程,并可現(xiàn)場模擬調(diào)試驗證。使得使用fpga器件,一般可在幾天到幾周內(nèi)完成一個電子系統(tǒng)的設(shè)計和制作,可以縮短研制周期,達到快速上市和進一步降低成本要求?;谏鲜龅膬?yōu)點,本畢業(yè)設(shè)計采用fpga芯片作為平臺,這樣可以把整個系統(tǒng)下載到一塊芯片之中,實現(xiàn)了所謂的片上系統(tǒng),從而大大縮小了體積,便于工程人員的管理和屏蔽外界干擾。2.2 vhdl語言和quartus2.2.1 vhdl語言2常用的硬件描述性語言有vhdl、verilog和abel語言。vhdl語言起源于美國國防部的vhsic,vhd

16、l是一種高級描述語言,適用于行為級和rtl級的描述相對與verilog語言和abel語言這些較低一級的適合描述門級電路的描述性語言而言,其具有以下的優(yōu)點:設(shè)計方法靈活、支持廣泛 vhdl語言可以支持自頂至下(top-down)和基于庫(library-based)的設(shè)計方法,而且還支持同步電路、異步電路、fpga以及其他隨機電路的設(shè)計。其范圍之廣是其它方法所不能比擬的。目前大多數(shù)eda工具幾乎都支持vhdl語言。這給vhdl語言進一步推廣和應(yīng)用創(chuàng)造了良好的環(huán)境。系統(tǒng)硬件描述能力強 vhdl語言具有多層次描述系統(tǒng)硬件功能的能力,可以從系統(tǒng)的框圖直到門級電路。另外,高層次的行為描述可以與低層次的r

17、tl描述和結(jié)構(gòu)描述混合使用。其他hdl語言如udl/i、verilog等對系統(tǒng)級的功能描述能力較弱。vhdl語言描述與工藝不發(fā)生關(guān)系 在用vhdl語言設(shè)計系統(tǒng)硬件時,沒有嵌入工藝信息。采用vhdl語言的設(shè)計,當門級或門級以上層次的描述通過仿真檢驗以后,再用相應(yīng)的工具將設(shè)計映射成不同的工藝(如mos, cmos等)。這樣,在工藝變更時,只要改變相應(yīng)的映射工具就行了。由此可見,修改電路和改變工藝之間的相關(guān)性較小。vhdl語言標準、規(guī)范,易于共享和復(fù)用 由于vhdl語言已成為一種ieee的工業(yè)標準,這樣,設(shè)計成果便于復(fù)用和交流,反過來也更進一步推動vhdl語言的推廣及完善?;谏鲜龅奶攸c,可知vhd

18、l語言可讀性好,又能被計算機識別。vhdl語言中設(shè)計實體、程序包、設(shè)計庫,為設(shè)計人員重復(fù)利用已有的設(shè)計提供了諸多技術(shù)手段。可重復(fù)利用他人的ip(intelligence property)模塊和軟核(soft core)也是vhdl的另一特色許多設(shè)計不必每次都從頭再來,只要在更高層次上把ip模塊組合起來,就能達到事半功倍的效果。這樣,設(shè)計人員自行開發(fā)的ip模塊在集成電路設(shè)計中占有重要的地位。因此本畢業(yè)設(shè)計采用vhdl語言設(shè)計一個完善的hdb3碼編、譯碼器。2.2.2 eda工具quartus2.5 quartus軟件是美國altera公司為sopc(system on a programmab

19、le chip,系統(tǒng)級可編程芯片) 提供最全面的設(shè)計平臺。它具有比起其他的編譯軟件,具有以下的優(yōu)點:開放的界面quartus ii軟件可與其它eda廠家的設(shè)計輸入、綜合、驗證工具相連接。設(shè)計人員可使用altera或標準eda設(shè)計輸入工具建立電路設(shè)計,使用quartusii編譯器(compiler)對altera的器件進行編譯,然后使用altera或其他標準eda驗證工具進行驗證。目前,quartus ii支持與cadence、exemplarlogic、mentor graphics、 synopsys、synplicity、viewlogic等公司的eda工具接口。與結(jié)構(gòu)無關(guān)quartus

20、ii系統(tǒng)的核心編譯器(compiler)支持altera公司的flex10k,flex8000, flex6000, max9000, max7000, max5000和classic等可編程邏輯器件系列,提供了業(yè)界,除了maxplus ii以外惟一真正與結(jié)構(gòu)無關(guān)的可編程邏輯設(shè)計環(huán)境。quartus的編譯器還提供了強大的邏輯綜合與優(yōu)化功能,使設(shè)計人員能比較容易地將其設(shè)計集成到可編程邏輯器件中。 多平臺quartus ii軟件可在多種pc機和工作站的操作系統(tǒng)中運行。完全集成化quartus ii的設(shè)計輸入、處理、驗證、器件編程等功能全部集成在統(tǒng)一的開發(fā)環(huán)境下,可以使用戶進行動態(tài)調(diào)試,加快開發(fā)進程

21、。 豐富的設(shè)計庫quartus ii提供豐富的庫單元供設(shè)計者使用,其中包括74系列的全部器件和多種特殊的邏輯宏功能(macro-function)以及新型的參數(shù)化兆功能(mega-function) 。接受高級描述語言quartus ii接受多種硬件描述語言,包括vhdl、ahdl、c、c+等語言。良好的人機界面quartus具有比maxplus更加人性化的人機界面,方便工程人員的操作?;谏鲜龅奶攸c,本文采用quartus軟件對hdb3編、譯碼的仿真驗證。基于fpga的hdb3編譯碼的建模與實現(xiàn) hdb3碼編碼器的建模與實現(xiàn)第三章 hdb3碼編碼器的建模與實現(xiàn)3.1 hdb3碼的編碼規(guī)則 在

22、現(xiàn)實的通信系統(tǒng)中,為了滿足基帶傳輸?shù)囊?,單極性脈沖序列必須經(jīng)過適當?shù)幕鶐Ь幋a,以保證傳輸碼型中無直流分量,有一定的自檢能力和適應(yīng)不同信源的統(tǒng)計特性的能力。在基帶傳輸中,常用的碼型有ami碼、hdb3碼、4b/3t碼、cmi碼、以及雙相碼等。其中,ami碼是將輸入單極性波形的所有正脈沖變?yōu)檫m合于在信道傳輸?shù)恼摌O性交替的脈沖,而hdb3碼則是在ami碼基礎(chǔ)上改進的一種雙極性歸零碼,它除具有ami碼功率譜中無直流分量,可進行差錯自檢等優(yōu)點外,還克服了ami碼當信息中出現(xiàn)連“0” 碼時定時提取困難的缺點,同時hdb3碼頻譜能量主要集中在基波頻率以下,占用頻帶較窄,因此被廣泛用作pcm(pulse

23、code modulation,脈沖編碼調(diào)制)線路傳輸碼型,因此要了解hdb3碼的編碼規(guī)則,首先要知道ami碼的構(gòu)成規(guī)則,ami碼就是把單極性脈沖序列中相鄰的“1”碼(即正脈沖)變?yōu)闃O性交替的正、負脈沖。將“0”碼保持不變,把“1”碼變?yōu)?1、-1交替的脈沖。如:信息序列:10011010111100001ami碼:+100-1+10-10+1-1+1-10000+1hdb3碼是一種ami碼的改進型,它的編碼過程為:沒有4個或4個連“0”串時,hdb3編碼規(guī)律與ami碼相同,即“1”碼變?yōu)椤?1”、 “-1”交替脈沖。當代碼序列中出現(xiàn)4個或4個以上連“0”串時,則將每4個連“0”小段即“000

24、0”的第4個0變換成與前一非“0”符號(+1或-1)同極性的符號,用破壞符號v表示(即+1記為+v,-1記為-v)。為了使附加v符號后的序列不破壞“極性交替反轉(zhuǎn)”造成的無直流特性,還必須保證相鄰v符號也應(yīng)極性交替。這一點,當相鄰v符號之間有奇數(shù)個非0符號時,則是能得到保證,當有偶數(shù)個非0符號時,則就得不到保證,這時再將該小段的第一個0變換成+b或-b,b符號的極性與前一非0符號的極性相反,并讓后面的非0符號從v符號開始再交替變換2.4。3.2 基于vhdl的編碼器的建模及實現(xiàn)3.2.1 編碼器的vhdl建模及難點分析從編碼規(guī)則來分析,hdb3碼的編碼器的設(shè)計的難點是在于如何判決是否應(yīng)該添加符號

25、“b”,因為這涉及到有現(xiàn)在事件的狀態(tài)決定過去事件狀態(tài)的問題。按照實時信號處理的理論,這是無法實現(xiàn)的。但是在實際的電路中,可以考慮用寄存器的方法,首先把信碼寄存在寄存器里,同時設(shè)置一個計數(shù)器計算兩個“v”之間“1”的個數(shù),經(jīng)過4個碼元時間后,有一個判偶電路來給寄存器發(fā)送是否添加符號“b”的判決信號,從而實現(xiàn)添加符號“b”功能。為了減少資源的消耗和電路的復(fù)雜度,在對信號進行hdb3碼編碼時,先依據(jù)hdb3碼的編碼規(guī)則進行添加破壞符號“v”然后進行添加符號“b”操作,最后才進行單極性信號變成雙極性信號的轉(zhuǎn)換。hdb3碼的編碼模型如圖3.1所示。圖 3.1 hdb3碼編碼器模型如圖所示:整個hdb3碼

26、的編碼器包括3個功能部分:添加破壞符號“v”、添加符號“b”和單極性碼轉(zhuǎn)變成雙極性碼,各部分之間采用同步時鐘作用,并且?guī)в幸粋€異步的復(fù)位(清零)端口。不過,信號處理的順序不能像編碼規(guī)則那樣:首先把代碼串變換成為ami碼,完成添加破壞符號“v”、添加符號“b”工作之后,其后的“+1”和“-1”的極性還要依據(jù)編碼規(guī)則的規(guī)定變換。這樣做需要大量的寄存器,同時電路結(jié)構(gòu)也變得復(fù)雜。因此本設(shè)計在此處把信號處理的順序變換一下:首先完成添加破壞符號“v”工作,接著執(zhí)行添加符號“b”功能,最后實現(xiàn)單極性變雙極性的信號輸出。這樣做的好處是輸入進來的信號和添加破壞符號“v”、添加符號“b”功能電路中處理的信號都是單

27、極性信號,且需要的寄存器的數(shù)目可以很少。另外,如何準備識別電路中的“1”、“v”和“b”,這也是一個難點,因為“v”和“b”符號是人為標識的符號,但在電路中最終的表示形式還是邏輯電平“1”,同時quartus軟件也不能像hdb3碼的編碼規(guī)則那樣把代碼串變換成ami碼,這是因為quartus軟件不能處理帶負號的信號,因此在軟件中本設(shè)計還是利用雙相碼來表示。雙相碼的編碼規(guī)則如下:對每個二進制代碼分別利用兩個不同相位的二進制代碼去取代。例如:信息序列: 110010雙相碼: 101001011001通過字節(jié)替代方法解決了識別“1”、“v”和“b”的問題。3.2.2 基于vhdl編碼器的實現(xiàn)1. 添加

28、破壞符號“v”的實現(xiàn) 添加破壞符號“v”模塊的功能實際上就是對消息代碼里的四個連0串的檢測,即當出現(xiàn)四個連0串的時候,把第四個“0”變換成符號“v”(“v”可以是邏輯電平“1”),而在其他的情況下,則保持消息代碼的原樣輸出,同時為了區(qū)別代碼“1”、 “v”和“0”,在添加破壞符號“v”時,用“11”標識符號“v”,用“01”標識符號“1”,用“00”標識符號“0”。因此,添加破壞符號“v”的設(shè)計思想如下:首先判斷輸入的代碼是什么,如果輸入的符號是“0”碼,則接著判斷這是第幾個“0”碼,如果是第四個“0”碼,則把這個“0”碼變換成“v”碼。在其他的情況下,讓原碼照常輸出。程序流程圖如圖3.2所示

29、:其中: count0是作為連0的計數(shù)器。 count0_s是四個連“0”狀態(tài)寄存器。1表示遇到四個連0,0表示未遇到四個連0的狀態(tài)在本程序中用“01”標識“1”。在本程序中用“00”標識“0”。在本程序中用“11”標識“v”。圖3.2 添加破壞符號“v”符號流程圖根據(jù)圖3.2的思想,完成hdb3碼編碼的程序?qū)崿F(xiàn)添加破壞符號“v”功能的程序,以下給出實現(xiàn)添加破壞符號“v”功能的關(guān)鍵代碼,具體程序見附錄一。add_v: process(clk,clr) -添加破壞符號v程序 begin if(clkevent and clk=1)then if(clr=1)then codeoutv=00; c

30、ount0codeoutv=01; -01表示1 count0 if(count0=3)then count0_s=1; codeoutv=11; count0=0; end process add_v; s0(0)=codeoutv(0); s1(0)=codeoutv(1);此添加破壞符號“v”功能程序設(shè)計了一個計數(shù)器count0,用來作為應(yīng)添加破壞符號“v”符號的標志。例如在程序代碼中當codein=1表示輸入的信號為“1”count0不計數(shù),代碼輸出為codeoutv=“01”,當codein=0時表示輸入的代碼為“0”,此時判斷count0的狀態(tài),如果為“3”,則count0_s=1

31、,codeoutv=11,計“0”計數(shù)器count0清0,即代碼:count0_s=1; codeoutv=“11”;count0=0;這都是在進程process中,通過條件控制語句case完成添加破壞符號“v”功能。假設(shè)輸入某信息序列,根據(jù)設(shè)計思想,輸入代碼一添加破壞符號“v”后的關(guān)系如下:信息序列: 10000100001100011添加破壞符號v后:01000000110100000011010100000001012.添加符號“b”的實現(xiàn)根據(jù)hdb3碼的編碼規(guī)則可知:添加破壞符號“v”模塊的功能是為了保證附加“v”符號后的序列不破壞“極性交替反轉(zhuǎn)”造成的無直流特性,即當相鄰“v”符號之

32、間有偶數(shù)個非0符號的時候,把后一小段的第一個“0”變換成一個非破壞符號“b”符號。如圖3.3所示。其中: firstv作為前面是否出現(xiàn)“11”即符號“v”的標志位,其中0表示前面沒有出現(xiàn)v,1表示前面已經(jīng)出現(xiàn)過符號v。 count1作為記非0符號的奇偶數(shù),其中0表示為偶數(shù),1表示為奇數(shù)。 first_1遇1狀態(tài)寄存器,1表示前面遇到過1,0表示沒有遇到過。 在本程序中用“10”來標識符號“b”。 在本程序中用“01”來標識符號“1”。 在本程序中用“00”來標識符號“0”。 在本程序中用“11”來標識符號“v”。代碼01vb標識符00011110圖3.3 添加符號“b”符號流程圖如圖3.3所示

33、可知,此添加符號“b”模塊涉及到一個有現(xiàn)在事件的狀態(tài)決定過去事件狀態(tài)的問題,其次還有如何確定是“1”,還是“v”的問題,是本畢業(yè)設(shè)計所遇到的第一個難點。本程序處理難點的思路是:先把碼元(經(jīng)過添加破壞符號“v”處理過的)放入一個四位的移位寄存器中,在同步脈沖(時鐘信號)的作用下,同時進行是否添加符號“b”的判決,等到碼元從移位寄存器里出來的時候,就可以決定是應(yīng)該變換成“b”符號,還是照原碼輸出。因此,在程序的結(jié)構(gòu)中進行元件聲明(component declaration),調(diào)用庫里的d觸發(fā)來實現(xiàn)延遲作用。為了使程序的流程更加清晰,用了四個元件例化語句(component instantiatio

34、n)dffx:dff port map(),來說明信號的流向。所謂元件例化就是引入一種連接關(guān)系,將預(yù)先設(shè)計好的設(shè)計實體定義為一個元件,然后利用特定的語句將此元件與當前的設(shè)計實體中的指定的端口相連接,從而為當前設(shè)計實體引入一個新的低一級的設(shè)計層次。在此程序中,當前的設(shè)計實體相當于一個較大的電路系統(tǒng),所定義的例化元件相當于一個要插在這個電路系統(tǒng)板上的芯片,而當前設(shè)計實體中所指定的端口則相當于這塊電路板準備接收此芯片的一個插座。元件例化是使vhdl設(shè)計實體構(gòu)成自上而下層次化設(shè)計的一種重要途徑。以下給出添加符號“b”模塊的部分程序,完整的程序見附錄一。ds11: dff port map(s1(0),

35、clk,s1(1); ds01: dff port map(s0(0),clk,s0(1); ds12: dff port map(s1(1),clk,s1(2); ds02: dff port map(s0(1),clk,s0(2); ds13: dff port map(s1(2),clk,s1(3); ds03: dff port map(s0(2),clk,s0(3); -調(diào)元件dff,即d觸發(fā)器 bclk: clkb=not clk; add_b: process(clkb) begin if(clkbevent and clkb=1)then if(codeoutv=11)then

36、 elsif(codeoutv=01)then if(count1=0)then first_1=1; count1=1; s1(4)=s1(3); s0(4)=s0(3); else s1(4)=s1(3); s0(4)=s0(3); end if; else count1=count1; s1(4)=s1(3); s0(4)=s0(3); end if; end if; end process add_b; codeoutb=s1(4)&s0(4);在此添加“b”的功能模塊中,例如程序代碼為:(codeoutv=01)then if(count1=0)then first_1=1; cou

37、nt1=1; s1(4)=s1(3); s0(4)=s0(3);表示當輸入的代碼codeoutv=01即1時,判斷計“1”計數(shù)器count1的狀態(tài),當為0時,即v之間的非0符號為偶數(shù)時,對遇一寄存器first_1賦1,計“1”計數(shù)器count1賦1,移位寄存器里的數(shù)值分別向高位移一位。3.3編碼中單/雙極性轉(zhuǎn)換的實現(xiàn)3.3.1單/雙極性轉(zhuǎn)換的流程圖根據(jù)hdb3碼的編碼規(guī)則,可知 “v”的極性是正負交替變換的,而余下的“1”和“b”本畢業(yè)設(shè)計把其看成為一體且是正負交替變換的,同時滿足“v”的極性與前面的非零碼極性一致。由此本畢業(yè)設(shè)計就把“1”和“b”看成一組,而“v”單獨作為一組來做正負交替變換

38、。同時,從3.2.2節(jié)中的第2小節(jié)的代碼中可知,“1”、 “v”,“b”已經(jīng)分別用雙相碼“01”,“11”,“10”標識,所以對“1”,“v”, “b”的正負交替變換很容易實現(xiàn)。由此可得到程序流程圖如圖3.4、圖3.5、圖3.6所示。圖3.4 單雙極性變換控制的程序流程圖“01”和“10”部分圖3.5 單雙極性變換控制的程序流程圖“11”部分圖3.6單雙極性變換控制的程序流程圖-“00”部分其中在圖中:以01表示+1。以11表示-1。以00表示0。3.3.2單/雙極性變換的vhdl實現(xiàn)以下是部分實現(xiàn)單雙極性變換控制功能的關(guān)鍵代碼,具體程序見附錄一。 if(clkevent and clk=1)

39、then if(codeoutb=01) or (codeoutb=10)then -1/b if(flagob=0)then if(flagov=0)then codeout=01; flagob=1; elsif(flagov=1)then codeout=11; flagob=2; elsif(flagov=2)then codeout=01; end if; elsif(flagob=1)then codeout=11; flagob=2; elsif(flagob=2)then codeout=01; flagob=1; -判01/10end if; elsif(codeoutb=1

40、1)then if(flagov=0)then elsif(flagov=1)then elsif(flagov=2)then codeout=01; flagov=1; -判v -flagov/flagob:0表示還未遇到v/b,1表示遇到奇數(shù)個v/b,2表示遇到偶數(shù)個v/b else codeout=00; flagob=flagob; flagov=flagov; end if; end if; end process output;end architecture rtl;本單/雙極性的變換,由于eda軟件不能處理雙極性的數(shù)值,實際上是把單相碼變換成雙相碼后再使用硬件電路來把其轉(zhuǎn)換成雙

41、極性的信號,如本單/雙極性變換的模塊中,使用了flagov,flagob兩個輸出控制寄存器控制hdb3碼的輸出,其控制的方式當flagob/flagov為0時表示還未遇到v/b,為1時表示遇到奇數(shù)個v/b,為2時表示遇到偶數(shù)個v/b,例如當代碼為:elsif(codeoutb=11)then if(flagov=0)then if(flagob=0)then codeout=01; flagovhdb3_in+1時輸出為低電平,其余的情況輸出全部為高電平,然后經(jīng)過反相器輸出,從而達到檢測出“+1”信號的目的,圖的下半部分是一個高精度整流電路,當hdb3_in0或hdb3_in=0時,必然使8引腳輸出為低電平,從而導(dǎo)致d2截止d1導(dǎo)通,r10中的電流為0,則最終dehdb3_out_h輸出為0,同理,可以推出當hdb3_in0時,dehdb3_out_h輸出為1,達到檢測“-1”的目的,整合電路,最終得到檢測“+1”和“-1”的功能。由此可知當輸入“+1”輸出的是01,輸入“-1”時輸出的是10,輸入“0”時輸出的是00。圖4.2

溫馨提示

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

評論

0/150

提交評論