




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄1. VHDL語言概述12. HDB3碼介紹22.1 AMI碼22.2 HDB3碼22.3 HDB3編碼規則33. 用VHDL語言設計HDB3編碼器53.1 HDB3編碼器實現的基本原理53.2 HDB3編碼器的設計過程63.2.1 插“V”模塊的實現63.2.2 插“B”模塊的實現73.2.3 單極性變雙極性的實現83.3 HDB3編碼仿真調試93.4 生成模塊105. 課設心得11參考文獻12附錄A13本科生課程設計成績評定表151. VHDL語言概述VHDL的全名是very-high-speed integrated circuit hardware description lang
2、uage,誕生與1982年。1987年底VHDL被IEEE和美國國防部確認為標準硬件描述語言。自IEEE發布了HDL標準版本后,各EDA公司相繼推出了自己的VHDL實際環境,或宣布自己的程序可以和VHDL接口。此后VHDL在電子設計領域得到了廣泛的接受,并逐步取代了原有的非標準的硬件描述語言。1993年,IEEE對VHDL進行了修正,從更高的抽象層次和系統描述能力擴展VHDL的內容。現在,VHDL和VERILOG作為IEEE的工業硬件描述語言,又得到了眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬件描述語言。VHDL主要用于描述數字系統的結構,行為,功能和接口。除了含有許多具有硬件
3、特征的語句外,VHDL的語言形式和描述風格與句法是十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統)分成外部(或稱可是部分,及端口)和內部(或稱不可視部分),既涉及實體的內部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內部開發完成后,其他的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統設計的基本點。162. HDB3碼介紹數字基帶信號的傳輸是數字通信系統的重要組成部分之一。在數字通信中,有些場合可不經過載波調制和解調過程,而對基帶信號進行直接傳輸。為使基帶信號能適合在基帶信道
4、中傳輸,通常要經過基帶信號變化,這種變化過程事實上就是編碼過程。于是,出現了各種各樣常用碼型。不同碼型有不同的特點和不同的用途。作為傳輸用的基帶信號歸納起來有如下要求:1 希望將原始信息符號編制成適合與傳輸用的碼型;2 對所選碼型的電波形,希望它適宜在信道中傳輸。可進行基帶傳輸的碼型較多。2.1 AMI碼AMI碼稱為傳號交替反轉碼。其編碼規則為代碼中的0仍為傳輸碼0,而把代碼中1交替地變化為傳輸碼的+1-1+1-1,、。 舉例如下。消息代碼:0 1 1 1 0 0 1 0 、AMI 碼:0 +1 -1 +1 0 0 -1 0 、或0 -1 +1 -1 0 0 +1 0 、AMI碼的特點:(1)
5、無直流成分且低頻成分很小,因而在信道傳輸中不易造成信號失真。(2)編碼電路簡單,便于觀察誤碼狀況。(3)由于它可能出現長的連0串,因而不利于接受端的定時信號的提取。2.2 HDB3碼這種碼型在數字通信中用得很多,HDB3碼是AMI碼的改進型,稱為三階高密度雙極性碼。它克服了AMI碼的長連0傳現象。NRZ,AMI,HDB3碼之間的對應關系:假設信息碼為0000 0110 0001 0000,對應的NRZ碼、AMI碼,HDB3碼如圖所示。圖 1 NRZ ,AMI,HDB3碼型圖分析表現,AMI碼及HDB3碼的功率譜不含有離散譜fS成份(fS1/TS,等于位同步信號頻率)。在通信的終端需將他們譯碼為
6、NRZ碼才能送給數字終端機或數/模轉換電路。在做譯碼時必須提供位同步信號。工程上,一般將AMI或HDB3碼數字信號進行整流處理,得到占空比為0.5的單極性歸零碼(RZ|0.5TS)。由于整流后的AMI,HDB3碼中含有離散譜fS,故可用一選頻網絡得到頻率為fS的正弦波,經整形、限幅、放大處理后即可得到位同步信號。2.3 HDB3編碼規則(1)將消息代碼變換成AMI碼;(2)檢查AMI碼中的連0情況,當無4個以上的連0傳時,則保持AMI的形式不變;若出現4個或4個以上連0時,則將1后的第4個0變為與前一非0符號(+1或-1)同極性的符號,用V表示(+1記為+V,-1記為-V(3)檢查相鄰V符號間
7、的非0符號的個數是否為偶數,若為偶數,則再將當前的V符號的前一非0符號后的第1個0變為+B或-B符號,且B的極性與前一非0符號的極性相反,并使后面的非0符號從V符號開始再交替變化。HDB3碼的特點如下:(1)基帶信號無直流成分,且只有很小的低頻成分;(2)連0串符號最多只有3個,利于定時信息的提取;(3)不受信源統計特性的影響。HDB3編碼舉例如下:圖 2 HDB3編碼實例3. 用VHDL語言設計HDB3編碼器設計要求:掌握HDB3碼的編碼原理,設計通信系統框圖,畫出實現電路原理圖,編寫VHDL語言程序,上機調試、仿真,記錄實驗結果波形,對實驗結果進行分析。3.1 HDB3編碼器實現的基本原理
8、從編碼規則來分析,這個設計的難點之一是如何判決是否應該插“B”,因為這涉及到由現在事件的狀態決定過去事件狀態的問題。按照實時信號處理的理論,這是沒辦法實現的。但在實際的電路中,可以考慮用寄存器的方法,首先把信碼寄存在寄存器里,同時設置一個計數器計數兩個“V”之間“1”的個數,經過4個碼元時間后,由一個判偶電路來給寄存器發送是否插“B”的判決信號,從而實現插“B”功能。不過,信號處理的順序不能像編碼規則那樣:首先把代碼串變換成為AMI碼,完成插“V”、插“B”工作之后,其后的“+1”和“-1”的極性還要依據編碼規則的規定變換。這樣做需要大量的寄存器,同時電路結構也變的復雜。若把信號處理的順序變換
9、一下:首先完成插“V”工作,接著執行插“B”功能。最后實現單極性變雙極性的信號輸出。這樣做的好處是:輸入進來的信號和插“V”、插“B”功能電路中處理的信號都是單極性信號,且需要的寄存器的數目可以少很多。另外,如何準確識別電路中的“1”、“V”和“B”。因為“V”和“B”符號是人為標識的符號,但在電路中最終的表現形式還是邏輯電平“1”。解決的方法是利用了雙相碼,將其用二進制碼去取代。例如代碼: 1 1 0 0 1 0雙相碼 10 10 01 01 10 01 這樣就可以識別電路中的“1”、“V”、“B”。也可以人為地加入一個標識符(其最終目的也是選擇輸出“1”的極性)。控制一個選擇開關,使輸出“
10、1”的極性能按照編碼規則進行變化。3.2 HDB3編碼器的設計過程圖 3 HDB3編碼設計流程整個HDB3編碼器包含3個功能部分:插“V”、插“B”和單極性碼轉變成雙極性碼。下面將詳細介紹各個部分的設計流程、編寫的源程序模擬仿真的波形圖。3.2.1 插“V”模塊的實現(1)插“V”模塊的建模插“V”模塊的功能實際上就是對消息代碼里的四連0串的檢測即當出現四個連0串的時候,把第四個“0”變換成為符號“V”(即將其置“1”,先不考慮符號問題),而在其他情況下,則保持消息代碼的原樣輸出。插“V”符號的設計思想很簡單:首先判斷輸入的代碼是什么(用一個條件語句判斷),如果輸入的是“0”碼,則接著判斷這是
11、第幾個“0”碼,則把這一位碼元變換成為“V”碼。在其他條件下,讓原代碼照常輸出。(2) 插”V”模塊的程序設計如前考慮,插”V”模塊須加入一個變量enjudge,用來作為插”V”符號的標志。在進程(process)中,通過if語句完成插”V”功能。假設輸入一串代碼,根據設計思想,輸入代碼與插入”V”符號之后的關系如下:代碼 : 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0插V后:1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1圖 4 插“V”流程圖3.2.2 插“B”模塊的實現插“B”模塊的功能是保證附加“V”符號后的序列不破壞“極性交替反轉”造成的無直流特性,
12、即當相鄰“V”符號之間有偶數個非0符號的時候,把后一小段的第1個“0”變換成一個非破壞符號“B”符號。插“B”模塊是這個設計遇到的第一個難點,因為他涉及到一個由現在事件的狀態決定過去狀態的的問題。其中還有如何確定是“1”,還是“V”的問題。處理難點的思路是:首先把碼元(經插“V”處理過的)放入一個4位的移位寄存器里,在同步時鐘的作用下,同時進行是否插“B”的判決,等到碼元從寄存器里出來的時候,就可以決定是應該變換成“B”符號,還是照原碼輸出。要進行插“B”判決,首先要知道哪一個是“V”,此時之前的插“V”判斷符號起了作用(enjudge)。由于標志量與輸出量有延時,此時加了一個記錄“V”位置的
13、計數器,插“V”后開始計數,用以記錄“V”。再有奇偶判斷標志(parity)決定是否插“B”。在進程中利用if語句判斷輸出極性與符號。圖 5 插“B”流程圖3.2.3 單極性變雙極性的實現根據HDB3的編碼規則,我們可以知道,“V”的極性是正負交替的,余下的“1”和“B”看成一體且是正負交替的,同時滿足“V”的極性與前面的非零碼極性一致。由此我們可以將其分別進行極性變換來實現。根據編碼規則,“B”符號的極性與前一非零符號相反,“V”極性符號與前一非零符號一致。因此將“V”單獨拿出來進行極性變換,余下的“1”和“B”看成一體進行正負交替,這樣就完成了HDB3的編碼。這個部分遇到的難點在于:在Ma
14、x plus軟件仿真過程中,它無法識別“-1”,在它的波形仿真中只有“1”和“0”。因此在這里采用了雙相碼來分別表示“-1”、“+1”、“0”程序中所定義的“00”、“01”、“11”代表0、+1、-1,從而達到設計所需結果。3.3 HDB3編碼仿真調試全“1”碼輸入:圖 6 “+1”和“-1”交替此時為全“1”碼輸入。不存在插“V”插“B”的判斷,輸出結果為“01”“11”的交替即雙極性碼的“+1”“-1”的交替,由此可指此部分的程序運行符合要求。全“0”碼輸入:圖 7 “B00V”輸出由于是全“0”碼輸入,奇偶判斷符的結果都是偶,輸出結果為“B00V”,“B”極性與前面的非零符號相反,“V
15、”與對應的“B”符號相同,可驗證程序運行符合要求。輸入碼隨機:一路信碼經過插V補B后的輸出波形仿真圖,輸出相對與輸入延時了5個脈沖周期。data_out表示二位二進制碼輸出,默認01為+1,11位-1。CLOCK為時鐘脈沖信號。圖 8 HDB3碼輸出輸入為:1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0輸出為:11 01 11 01 11 01 11 0 0 11 01 0 0 01 11 01 11 0 0 0 01此時的輸出符合HDB3編碼規則,可驗證程序整體符合要求,輸出正確。3.4 生成模塊利用Max plus本身的功能,將運行正確的VHDL程序保存
16、,并生成模塊,保存頂層文件,得到hdb3_coding1.gcf文件。圖 9 生成模塊添加波形仿真文件驗證模塊功能:圖 10 模塊波形輸出根據波形輸入為:1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1輸出為:11 0 0 0 11 01 0 0 01 00 11 01 11 0 0 11 01 11編碼輸出正確,符合HDB3編碼,驗證得模塊文件符合要求,此次課程設計成功。5. 課設心得通過一步步有條不紊的分析和思考,更重要的是在設計中,根據實際情況,對設計初期的思想做不斷完善和改進,因為在設計之前的思路,只能說是一個大體的方向,很多時候,實際的操作和設計要細致和復雜的多
17、,或者原來的想法根本就行不通,得從實際設計的角度一步步來完成了這樣一個系統設計。通過這次課程設計,讓我學到了很多知識,也獲得很多體會,這是自己將平日學的理論知識應用到實際操作中的一次很好的實踐。才明白:實際操作和設計,并不是像學習理論知識那么簡單,會理論不等于就會應用,很多都是經驗的東西,需要在自己的努力設計中才能慢慢體會到,設計多了,才會經驗中找到設計自如的感覺。就像我,對于VHDL語言,開始也沒有什么太大的感覺,看書的時候,很清楚明白它的設計結構和流程是什么樣的,但是一旦拋開書本,開始自己編程序的時候,不是這里忘了定義,就是那里忘了結構方式;但是,到了現在,在不斷實踐編程中,程序設計的流程
18、和一些要注意的地方,我都記得很清楚,能很容易的編寫一段簡單的程序了,也不用看書本幫忙了,這些都是光靠看書本得不到的經驗,是我最大的收獲。雖然說,整個系統還存在很多不足,但是,我也并不感到有太多的遺憾,因為面對自己三個月的辛勤勞動的成果,心里更多的還是萬分喜悅!不足之處總是有的,這些就是自己今后需要努力的地方,只要不斷的朝著自己的目標的努力,很快就會有解決的那一天!附錄A基于VHDL語言HDB3編碼程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hdb3_coding is por
19、t( data_in :in std_logic; clock :in std_logic; data_out :out std_logic_vector(1 downto 0);end hdb3_coding;architecture rtl of hdb3_coding is signal reg :std_logic_vector(3 downto 0); signal parity :std_logic; -記錄破壞點間1碼個數的奇偶性 signal judge_v :std_logic; -判斷是否有破壞符 signal grant_cnt:std_logic; -允許開始計算破壞點
20、間的1碼個數 signal last_sign:std_logic; -上一輸出的符號 signal v_cnt :std_logic_vector(2 downto 0);-v點位置跟蹤計數器 begin process(clock) - 移位寄存器 ,插V begin if rising_edge(clock) then if data_in='0' and reg(3 downto 1)="000" then reg<=('1' & reg(3 downto 1); judge_v<='1' gran
21、t_cnt<='1' else reg<=data_in & reg(3 downto 1); judge_v<='0' grant_cnt<='0' end if; end if; end process; process(clock) -計數 begin if rising_edge(clock) then if grant_cnt='1' and data_in='0' then parity<='0' elsif grant_cnt='1' and data_in='1' then parity<='1' elsif data_in='1' then parity<=not parity; end if; end if; end process; process(clock) -V點跟蹤 begin if rising_edge(clock) then if judge_v='1' then v_cnt<="000" elsif v_cnt="111" then v_cnt<=v_cnt;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護理心理學修養
- 物業管理發展趨勢
- 健康查體注意事項
- 2025年橋梁傾角撓度測量儀項目提案報告
- 中國XXXX年上海世界博覽會注冊報告(摘要二)-相關法律和財政措施
- 2025年紙品用膠項目立項申請報告模板
- 2025年河南鄭州市鄭鹽集團招聘考試筆試試題(含答案)
- 【寧波】2025年浙江寧波市海曙區招聘事業單位人員15人筆試歷年典型考題及考點剖析附帶答案詳解
- 春曉 教學課件
- 文庫發布:教育學課件
- 柑桔嫁接合同協議
- 候診廳衛生管理制度
- 超市導購人員管理制度
- 阻塞性肺部疾病護理查房
- 2024年4月自考00228環境與資源保護法學試題及答案
- 設備物資管理培訓
- 汽車漆面保護膜維護考核試卷
- 公司事故隱患內部報告獎勵制度
- 2025年中考英語作文預測及滿分范文11篇
- 集成電路測試指南
- 工程總承包管理制度
評論
0/150
提交評論