CPLD上五種密勒碼基帶碼型變換方法_第1頁
CPLD上五種密勒碼基帶碼型變換方法_第2頁
CPLD上五種密勒碼基帶碼型變換方法_第3頁
CPLD上五種密勒碼基帶碼型變換方法_第4頁
CPLD上五種密勒碼基帶碼型變換方法_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基帶碼型變換設計密勒碼碼型變換1 技術指標1) 設計密勒碼的編譯碼電路。2) 輸入信號為24位的周期NRZ碼。3) 編譯碼延時小于3個碼元寬度。2 基本原理我的課程設計選題是基帶碼型變換設計 密勒碼 碼型變換,也就是設計電路實現密勒碼的編碼、解碼過程。電路設計的重點在于按照密勒碼的編碼規則實現基帶碼,也就是信源碼的邏輯變換。為了達到這個過程,我們需要先分析清楚密勒碼的特點。故基本原理這一部分我分為兩部分進行闡述,分別是2.1 密勒碼原理分析;2.2 編、解碼設想及思路。2.1密勒碼原理分析查閱通信原理(樊昌信著 國防工業出版社第6版)可知密勒碼相關信息如下:“M ILLER碼又稱延遲調制碼。其

2、編碼規則是二進制信息“1”碼用碼元間隔中心點出現躍變表示, 即用“10”或“01”表示; 二進制信息“0”碼有兩種情況: 單個“0”時, 在碼元間隔內不出現電平躍變, 且與相鄰碼元的邊界處也不躍變; 在連“0”時, 在兩個“0”碼的邊界處出現電平躍變, 即“00”與“11”交替。M ILLER碼最初用于氣象衛星和磁記錄, 現在也用于低速基帶數傳機。”分析可知,其編碼規則可以整理如下表1:表1. 密勒碼的編碼規則由編碼規則,我們可以繪出密勒碼的波形。在此參照教材上給的提示,我們也畫出雙相BPH碼的波形,分析NRZ碼,密勒碼,BPH碼之間的關系。此處的BPH用01表示數字信號0;用10表示數字信號

3、1。繪制波形如圖1,原始NRZ碼為。圖1. 對應NRZ碼的密勒碼波形圖分析波形我們可以發現,BPH碼的下跳沿對應著密勒碼的跳變沿。參考教材所給的提示,我們可以用BPH碼下跳沿去觸發雙穩態電路,即可輸出密勒碼。3設計方案功能分析及其比較結合本次的設計內容為了方便闡述,在整理所有的設計方案后,我將碼型轉換的原理分為5種。下面分別闡述其原理及設計的想法來源。3.1方案一方案一核心思想史以VHDL的窮舉編程實現密勒碼的編解碼,也是我最早得出的設計。顧名思義,就是在程序中利用各種順序語句羅列出編碼時可能碰到的所有的情形,并給出對應的編碼解。所以,找到那幾個條件因子是這種方法最核心的地方。分析密勒碼的編碼

4、規則我們可以發現以下規則:1) 密勒碼用10和01表示信號1,用00和11表示信號0。2) 兩個信源碼之間對應的密勒碼沒有跳變,也就是說當前碼的編碼到底是哪一個,需要考慮前一個碼的情況。綜合以上兩條,設計出以下判斷邏輯:信號輸入為DATA,簡稱D。信號輸入時刻前一位為Sav1簡寫為S1,對應的密勒碼輸出為Sav2簡寫為S2。 輸出為Do。程序流程圖如圖2。圖2. VHDL窮舉法程序流程圖即當前輸入信號D有0,1兩種可能;前一密勒輸出有00,11,01,10四種情況;綜合起來就是8種情況,以D及S2為條件因子,作為順序語句的條件。對應此邏輯以“IF THEN ELSIF” 語句編寫了如下程序:l

5、ibrary ieee;entity miller_encoder isport(datain :in std_logic; en :in std_logic; clk :in std_logic; encodeout:out std_logic_vector(1 downto 0) );end ;architecture func of miller_encoder isbegin process(en,clk,datain) variable sav1 :std_logic:='1' variable sav2 :std_logic_vector(1 downto 0):=

6、"01" begin if(en='0') then encodeout<="00" else if(clk 'event and clk='0')then if(datain='1' and sav1='1' and sav2="01") then encodeout<="10" sav2:="10" sav1:='1' elsif(datain='1' and sav1=

7、9;1' and sav2="10") then encodeout<="01" sav2:="01" sav1:='1' elsif(datain='0' and sav1='1' and sav2="01") then encodeout<="11" sav2:="11" sav1:='0' elsif(datain='0' and sav1='1' and

8、 sav2="10") then encodeout<="00" sav2:="00" sav1:='0' elsif(datain='0' and sav1='0' and sav2="00") then encodeout<="11" sav2:="11" sav1:='0' elsif(datain='0' and sav1='0' and sav2="

9、11") then encodeout<="00" sav2:="11" sav1:='0' elsif(datain='1' and sav1='0' and sav2="00") then encodeout<="01" sav2:="01" sav1:='1' elsif(datain='1' and sav1='0' and sav2="11") th

10、en encodeout<="10" sav2:="10" sav1:='1' end if; end if; end if; end process;end func; 同理,逆向采用窮舉法,可以實現解碼。以下為方案一的解碼VHDL程序:library ieee;entity miller_decoder isport(encodein :in std_logic_vector(1 downto 0); en :in std_logic; clk :in std_logic; decodeout:out std_logic );e

11、nd ;architecture func of miller_decoder isbegin process(en,clk,encodein) begin if(en='0') then decodeout<='0' else if(clk 'event and clk='0') then if(encodein="11" or encodein="00") then decodeout<='0' elsif(encodein="10" or enc

12、odein="01") then decodeout<='1' end if; end if; end if; end process;end func;3. 2 方案二方案二的核心是利用數據選擇器與移位寄存器實現密勒碼的編解碼。其設計思路如下:編碼時:1) 利用簡單門電路和數據選擇器實現BPH碼編碼。2) 使用BPH碼觸發雙穩態電路,生成密勒碼。解碼時:1) 利用密勒碼的性質,01,10表示1,其兩位異或得到輸出。2) 利用移位寄存器將串行的01,10,00,11,變為并行。3) 再利用BS信號兩位異或,即得到譯碼。電路圖如下:圖3. 方案二電路原理

13、圖3. 3方案三方案三是利用VHDL編程,實現BPH碼的編碼,然后將其輸出接入雙穩態電路,觸發產生密勒碼。BPH碼的編碼規則取以01表示0,10表示1。因比較簡單所以省略了邏輯圖,直接給出編碼程序。程序如下:LIBRARY IEEE;ENTITY double ISPORT(clk,clr,codein:IN STD_LOGIC; codeout:OUT STD_LOGIC_VECTOR(1 DOWNTO 0); count:buffer STD_LOGIC );END double;ARCHITECTURE behav OF double ISBEGINPROCESS(clk,clr) BE

14、GINIF(RISING_EDGE(clk) THENIF(clr='1') THENcodeout<="00"ELSE CASE codein IS WHEN '1'=> codeout<="10" count<='1' WHEN '0'=> codeout<="01"END CASE;END IF;END IF;END PROCESS ;END behav;對應的雙穩態電路,可以采用D觸發器、T觸發器,鎖存器,其原理大同小異,這里給

15、出D觸發器雙穩態電路的電路圖(圖4)。圖4. D觸發器構成的雙穩態電路解碼同樣采用VHDL解碼,與方案一種的VHDL解碼方式相同,這里不再贅述。本方案的特點是在編碼的過程將VHDL文本輸入設計與原理圖設計結合了起來,避免了復雜的純VHDL編程,相當于方案一、二的各取所長。3. 4方案四方案四是經搜集、整理、總結所有資料后總結出來的較為可行的方案,其核心是以NRZ碼與BS信號異或生成BPH,然后輸入以D觸發器構成的雙穩態電路產生密勒碼。解碼電路由3個D觸發器構成。方案4中原理大致如下:編碼時:1) 利用輸入數據NRZ碼與位同步信號BS異或,得到BPH碼。2) BPH碼觸發雙穩態電路,生成密勒碼。

16、譯碼時:1) 將輸出的密勒碼分為兩路M1,M2,分別輸入兩個D觸發器D1,D2的D端。2) 將BS信號送入D1,取反后送入D2。因為D觸發器對上升沿有效,而密勒碼的無論上跳還是下跳都對應著同步信號及輸出信號。如此是為了將密勒碼的跳變沿全部采集,D1采集上升跳變,D2采集下降跳變。3) 將D1,D2的輸出端異或,這樣既可以消除D1,D2在兩路反相BS的作用下輸出的OUT1,OUT2的重合無效部分,同時也把兩路的不同采樣整合到了一起。4) 此時將異或后的輸出OUT3做為最后一個D觸發器的D3輸入,其時鐘接BS對信號采樣,即得到密勒碼解調輸出。編碼、解碼電路圖如圖5(MAX+PLUS2繪制)。圖5.

17、 方案四編解碼電路圖利用方案四中的編碼設計,在波形編輯器中仿真得到圖6。圖6. 方案四波形仿真圖其中MMILLER為譯碼輸出,END TIME 設置為15us,時鐘周期為200ns。3. 5方案五仔細分析方案四的原理,我們不難發現有很多地方可以修改。在方案四的基礎上,分別對編碼、譯碼電路做改動。改動如下:1) 輸入處直接改用異或門,替代3個邏輯門,減小延時。2) 方案四中,譯碼電路采用了3個D觸發器。經過分析我們知道,D1,D2是用來分別采樣密勒碼的上升沿和下跳沿,并經過異或門將兩路信號整合。我們分析可以知道,密勒碼本身就包含了上跳沿的有效信息,所以D1觸發器是不必要。直接保留D2,將D2的輸

18、出與密勒碼輸出兩者異或,整合,就可以得到最。終使用D3采樣的信號。改進后的實際電路圖如圖7。圖7. 方案五編解碼電路圖根據方案五,在MAX+PLUS2中的波形編輯器中仿真,得到圖8。圖8. 方案五波形仿真圖其中MMILLER為譯碼輸出,NRZ為信號輸入,由圖可知電路很好的實現了譯碼,并且延遲不超過2個碼元寬度。3.6 方案比較綜合上述五種方案,我們不難發現其各自的特點。對方案一而言,它的優點思考量較少,容易理解,容易設計。但是,由于密勒碼編解碼中出現的狀態不算特別多,只有8種,所以采取窮舉法也不是很難。但是如果是一個大型的,邏輯狀態比較多的設計,那么再采用窮舉就不一定合適了,這是本方案最大缺陷

19、。同時,此種設計還需要設置編碼時的初始條件,因此也麻煩了很多。所以作為實際操作方案并不太合適。對于方案二,它的編碼譯碼,理解起來很容易。同樣是因為本設計的邏輯關系較為簡單,而且使用到的器件也不多。但是可以推想在實際操作中,由于各個器件的延時,時鐘的控制是否精準,都對我們的輸出會帶來很多影響,所以這個系統并不十分可靠。也就是說很可能得不到理想中的波形。而且,方案二的仿真也是比較困難的。對于方案三,可以說是一種比較好的方法,利用VHDL語言根據總結出的編碼時邏輯特點編程,利用原理圖輸入法解決VHDL復雜的器件描述,兩者各取其長,頗有編程時模塊化設計的思想的應用。當然了,有利也有弊,在思考上省了事就

20、得在操作中多花時間,本方案的一個弊端就是在軟件操作時,因為多種設計方法并用于同一個項目,所以要達到設計目的操作就麻煩了很多。為了使數據在編程和器件之間交換,可能還要引入信號,作為兩者的中繼。另外,在調試的時候如果出錯,查明原因也要復雜很多。對于方案四,方案四的邏輯設計是非常巧妙的,參照搜集的資料可以知道方案四及其改進的多種方案就是應用于實際的密勒碼編解碼方法。該方案采用的器件較為簡單,它占用的邏輯單元較少,不易出錯,巧妙的設計在理解上自然就要稍微復雜一點,尤其是譯碼部分。由于采用的器件較少,器件延時不大,時鐘信號穩定輸入各個D觸發器,系統也比較穩定,本方案很適合實際的燒寫。對于方案五,大抵的原

21、理與方案四相同,其主要特點時減少了方案四種的冗余,更合理的利用了各種器件。比如減少了門電路數量,減少了D觸發器的數量,減少了延時。綜上所述,以上五種方案里,方案四、五比較適合實際燒寫。4 CPLD時序和功能仿真參照以上五種方案的對比,我初步選定采用方案一、四、五作為實際燒寫的實現方案。然后在對三種方案進行編譯的過程中,程序設計存在報錯較多,所以最終采用的是方案四和方案五。對于方案四和方案五,在選定了設計器件為EPM7128SLC84-15后鎖定管腳重新進行編譯,編譯成功。此時,我們利用MAX+PLUS2軟件對兩種方案進行時序和功能仿真。4.1實際采用方案一的CPLD時序和功能仿真對于方案四,最

22、終采用的電路圖如圖9。圖9. 方案四實際燒寫電路圖分析仿真波形,方案四的電路可以成功仿真出密勒碼的編碼、解碼功能。在此設定的碼元周期為400ns,仿真時間END TIME = 10us,仿真了3X8=24位的波形。根據方案四的設計思路,以NRZ碼與BS碼異或得到BPH碼,再以BPH碼下跳沿觸發雙穩態電路生成密勒碼。解碼時對密勒的上下跳變采樣,最終還原成NRZ碼。在此我們分別采用了3組8位為一循環共24位一周期的輸入信號。得到了以下3幅仿真時序波形圖(圖10-a,10-b,10-c)。圖10-a. 時序仿真波形(輸入信號1101 0100) 分析波形可知,BPH碼編碼為:10 10 01 10

23、01 10 01 01。即BPH碼編碼正確。對應的密勒碼編碼為:01 10 00 01 11 10 00 11。密勒碼編碼正確。觀察波形可知,BPH碼下跳沿對應著密勒碼的跳變沿,故經過仿真驗證后本設計符合設計思路。圖10-b. 時序仿真波形(輸入信號0010 1011)分析波形可知,BPH碼編碼為:01 01 10 01 10 01 10 10。即BPH碼編碼正確。對應的密勒碼編碼為:00 11 10 00 01 11 10 01。密勒碼編碼正確。觀察波形可知,BPH碼下跳沿對應著密勒碼的跳變沿,故經過仿真驗證后本設計符合設計思路。圖10-c. 時序仿真波形(輸入信號0011 1011) 分析

24、波形可知,BPH碼編碼為:01 01 10 10 10 01 10 10。即BPH碼編碼正確。對應的密勒碼編碼為:00 11 10 01 10 00 01 101。密勒碼編碼正確。觀察波形可知,BPH碼下跳沿對應著密勒碼的跳變沿,故經過仿真驗證后本設計符合設計思路。4.2實際采用方案二的CPLD時序和功能仿真對于方案五,最終采用的電路圖如圖11。圖11. 方案五實際燒寫電路圖仔細分析方案四的原理,我們不難發現有很多地方可以修改。在方案四的基礎上,分別對編碼、譯碼電路做改動即得到方案五。改動如下:1) 輸入處直接改用異或門,替代3個邏輯門,減小延時。2) 方案四中,譯碼電路采用了3個D觸發器。經

25、過分析我們知道,D1,D2是用來分別采樣密勒碼的上升沿和下跳沿,并經過異或門將兩路信號整合。我們分析可以知道,密勒碼本身就包含了上跳沿的有效信息,所以D1觸發器是不必要。直接保留D2,將D2的輸出與密勒碼輸出兩者異或,整合,就可以得到最。終使用D3采樣的信號。在此設定的碼元周期為400ns,仿真時間END TIME = 10us,仿真了3X8=24位的波形。根據方案五的設計思路,以NRZ碼與BS碼異或得到BPH碼,再以BPH碼下跳沿觸發雙穩態電路生成密勒碼。解碼時對密勒的上下跳變采樣,最終還原成NRZ碼。在此我們分別采用了3組8位為一循環共24位一周期的輸入信號。得到了以下3幅仿真時序波形圖(

26、圖12-a,12-b.12-c)。圖12-a. 時序仿真波形(輸入信號1111 0000) 分析波形可知,BPH碼編碼為:10 10 10 10 01 01 01 01。即BPH碼編碼正確。對應的密勒碼編碼為:01 10 01 10 00 11 00 11。密勒碼編碼正確。觀察波形可知,BPH碼下跳沿對應著密勒碼的跳變沿,故經過仿真驗證后本設計符合設計思路。圖12-b. 時序仿真波形(輸入信號1101 0100)分析波形可知,BPH碼編碼為:10 10 01 10 01 10 01 01。即BPH碼編碼正確。對應的密勒碼編碼為:01 10 00 01 11 10 00 11。密勒碼編碼正確。觀

27、察波形可知,BPH碼下跳沿對應著密勒碼的跳變沿,故經過仿真驗證后本設計符合設計思路。圖12-c. 時序仿真波形(輸入信號0011 1011) 分析波形可知,BPH碼編碼為:01 01 10 10 10 01 10 10。即BPH碼編碼正確。對應的密勒碼編碼為:00 11 10 01 10 00 01 10。密勒碼編碼正確。觀察波形可知,BPH碼下跳沿對應著密勒碼的跳變沿,故經過仿真驗證后本設計符合設計思路。綜上可知,以上兩種方案都可以成功的實現密勒碼的編解碼過程,且符合本次課程設計所要求的技術指標。故仿真項目校驗成功。5 硬件電路調試對于以上兩種實現方案,經過時序仿真后,分別進行了管腳鎖定以及

28、編譯。之后在通信原理實驗箱上成功進行了燒寫。燒寫成功如圖13所示。圖13. 燒寫成功顯示對于實現方案一具體的引腳設定如下:NRZ35,BS33,BPH-39,MILLER-37, MMILLER(解碼輸出)-41(圖14)。圖14. 實現方案一管腳鎖定圖經編譯成功后在實驗箱上進行測試。將信號源電路打開,燒寫用模塊打開,確定合適的分頻后,將信號源BS,2BS,NRZ,FS分別接入測試模塊。用示波器測試各點波形,得到的波形符合理想情況。BPH編碼正常,密勒碼編碼正常,密勒碼解碼正常,實際的延遲小于2位。可知方案四硬件調試后無誤,設計成功。對于實現方案二,具體的管腳鎖定如下: NRZ35,BS33,

29、2BS36,BPH-39,MILLER-37,OMILLER-41(圖15)。圖15. 實現方案二管腳鎖定圖同樣,實現方案二經過編譯后在實驗箱模塊上燒寫,再經驗證,BPH碼,密勒碼的生成,密勒碼的解碼都很理想,實際延遲小于2位。故方案五硬件調試后無誤,方案五設計成功。詳盡的硬件連接,調試,各點測試波形及其分析參見附錄2 安裝調試實驗報告。6 結論本次課程設計的內容是密勒碼的碼型變換,對應的有3個方面的技術要求,并且設計既能夠在軟件中仿真,也能在硬件上實現仿真的電路功能。經過調整修改后,經過實際的功能檢測,在合適的基帶碼元速率下,實現方案一、二的編碼電路可以按照密勒碼編碼規則成功的對密勒碼進行編

30、碼。同樣,兩個方案的解碼電路也能順利的完成解碼。對應本次的課程設計技術指標,參照由2010年1月25日在實驗室燒寫后的實際的測試數據。本次課程設計中五種設計方案中有兩種得到了實際驗證,并且是符合設計要求的。首先,實現方案一、二的電路經仿真以及實際測試可知,都能成功完成密勒碼的編解碼,故滿足技術要求中第一條。其次,經過仿真以及調試,每種電路都給予了輸入3種不同的24位周期信號,對應的都得到了理想的解碼,故滿足技術要求中第二條。最后,兩種電路的解碼延時都不超過一個碼元寬度,滿足技術要求中第三條。綜上,本次的課程設計成功的達到了技術指標中的各項要求,即本密勒碼變換設計是成功的。7 心得體會歷經一個星

31、期的準備,兩個星期的設計編譯燒寫調試以及撰寫報告,共計三個星期的專業課程設計2(通信原理)終于接近了尾聲。想這三個星期,雖然有點累,收獲還是不少。首先,我最深的感受是整個設計從無到有的這個過程,以及它帶來的面對一個問題,積極的去尋找解決辦法的心理體驗。我相信很多時候,我們面臨的都不是稍微想想就能解決的問題,甚至有些難題是一個人很難完成的。俗話說“多為成功找方法”,這種時候等沒有用,急沒有用。我們不妨靜下來理清思路,把大問題細化,分條梳理,整合自己的時間、精力等資源,搜集信息,然后一步一步的去做。比如這次課程設計,根據要求,我們來找難點。CPLD在數電中學的很簡略,幾乎就只有個印象,這是第一個大

32、問題。密勒碼的編碼、解碼規則,對其波形做一個深入的分析,這是要分析的第二問題。在設計過程中,我們要用到軟件仿真,軟件的操作就是第三個問題。這三個問題解決了,基本上我們就可以動手去做了。于是,針對以上三個完成本設計的必備因素,我們先廣泛的搜集信息,確定哪些資料比較適合對應這次課程設計進行自學,先選準方向。在此,我最終決定了圖書館借來的兩本介紹CPLD器件的參考書。它們一本包含了CPLD器件底層原理,器件類型及特點,VHDL語言,以及一些應用實例。另外一本則重點介紹了MAX+PLUS2的軟件操作。同時結合一些網絡上搜集的視頻資料,那些需要知道的知識我在一個星期內都解決了。同時,在自學的過程中也誕生

33、了不少關于這次課程設計的靈感,而且最終在這些想法之上,也順利的得出了報告中的五種設計方案。其次,在調試的過程中也出現了意外的情況,比如密勒碼的編碼1到0之間究竟跳變不跳變,這一點在很多文獻上都寫得模棱兩可,但經過實際測試,發現它是不影響密勒碼解碼的。在此之前,我在軟件中仿真卻沒有出現這個情況。可知理想情況即使分析的很全面,實際情況仍然可能會有出入,在這里我們努力嘗試了去解決這個問題,在這個過程中我們對CPLD的設計也有了更深刻的理解。最后,我想這次的課程設計也是一種鍛煉自己學習能力的過程,體現了我們自主學習,自主分析,自我督促的態度。這一過程彌補了被動教學的不足,對我們的個人能力的提升也有很大

34、的作用。好了,課程設計即將告一段落,學到的東西不少,體會也挺深,畢竟這是我進校以來花的時間最多的一次課設。也許技術會過時,會被淘汰,不過我相信我們自主解決問題的精神會帶領我們繼續攻克下一個生活中的挑戰。在此也向指導老師致謝,感謝老師在我有疑問時給予的細心解答,春節將近,祝您身體健康,闔家安泰。8 參考文獻1 樊昌信,曹麗娜.通信原地(第6版).國防工業出版社,2009年2月.2 廖裕平,陸瑞強.CPLD數字電路設計.清華大學出版社,2001年10月. 3 朱恭生,胡冬琴,曹麗娜.FPGA/CPLD系統設計與應用案例.中國電力出版社,2009年7月第1版.4 John F.Wakerly.Dig

35、ital Design Principles and Practices.機械工業出版社,2003年8月第1版.5 劉雁飛,吳進.基于的曼徹斯特編譯碼實現.西安郵電學院學報,2003年1月第8卷第1期.6 沈春,李釋華.曼徹斯特碼編碼與解碼硬件實現.電子測量技術,2002年第6期.7邱祖江,郭亞煒,楊蓮興.一種改進Miller編解碼的實現方法.微電子學,2000年6月第30卷第6期.附錄:1 安裝調試實驗報告1.1 安裝調試過程記錄本部分將詳細闡述整個實驗過程中我的所有操作過程。在成功完成實驗方案的編譯后,我得到了兩個對應的.pof燒寫用文件。在實驗室實驗箱上進行燒寫。整個操作過程如下:1)

36、首先接好燒寫用實驗模塊的硬件燒寫線路,在確認連接無誤后(凹凸對準),準備開始燒寫。2) 然后操作MAX+PLUS2 軟件,在“Hardware Type”下拉框中選擇“ByteBlasterMV” 同時檢查下載電纜一端插入LPT1(并行口,打印機口),另一端插入目標板,打開目標板電源。3) 從“Max+plusII”菜單下選擇“Programmer”,開始燒寫。實現方案一燒寫成功。4) 關閉實驗模塊電源,拔掉下載線,將實驗箱轉移到合適位置后準備開始檢測芯片的邏輯功能。在檢測時用到了雙蹤示波器一臺,探頭線,導線若干。5) 將通信原理實驗箱上的信號源模塊的BS,FS,2BS,NRZ用導線對應接入測

37、試模塊的BS,FS,2BS,NRZ接口,在信號源處選擇合適的分頻(實際采用分頻后約500HZ的碼元速率),將24位NRZ碼設置為11000000 11000000 11000000,為便于觀察和檢測采用了簡單的周期性波形做初步測試。6) 將探頭線接上雙蹤示波器的X1,X2兩路輸入。探頭部分小夾子接測試模塊的GND,減小干擾。7) 兩個探頭依次接測試模塊上的BS,2BS,NRZ,BPH,RZ,ORZ,調整示波器,觀察對比其波形并記錄。8) 方案一成功測試完畢。9) 重復以上過程,對實驗方案二進行測試,同樣成功測試完畢。10)對方案一、二進行實踐后,再對VHDL語言實現方案進行測試,由于頂層文件編

38、譯操作頻繁出錯,故最終在本次測試中放棄。波形記錄參見1.2測試波形記錄及分析。1.2 測試波形記錄及分析對于實現方案一,實際測得的波形如下,對應圖片的內容參見表1實現方案一波形序號表。表1實現方案一波形序號表探頭1探頭2對應編號探頭1探頭2對應編號2BSBS1-1BPHRZ1-2NRZBPH1-3NRZRZ1-4NRZORZ1-5BPHORZ1-6RZORZ1-7RZ2BS1-8RZBS1-9BPH2BS1-10ORZ2BS1-11BS1-12 1-1. 2BS-BS 波形對比 1-2. BPH-RZ 波形對比 1-3. NRZ-BPH 波形對比 1-4.NRZ-RZ 波形對比 1-5. NR

39、Z-ORZ 波形對比 1-6. BPH-ORZ 波形對比1-7. RZ-ORZ 波形對比 1-8. RZ-2BS 波形對比1-9. RZ-BS 波形對比 1-10. BPH-2BS 波形對比1-11. ORZ-2BS 波形對比 1-12. ORZ-BS 波形對比 其中RZ引腳對應密勒碼編碼輸出,ORZ引腳對應密勒碼解碼輸出。分析實測波形圖可知,由圖1-3可知,3個周期24位NRZ碼(11000000)對應BPH碼編碼成功;由圖1-2可知,BPH碼下降沿觸發密勒碼跳變沿,即密勒碼編碼成功(但由1到0存在不影響譯碼的額外跳變);由圖1-5可知,密勒碼解碼輸出對應NRZ輸入完全正確,且延時小于2個碼

40、元時間。綜上,實現方案一成功的實現了密勒碼的編碼解碼過程,且符合技術要求。對于實現方案二,實際測得的波形如下,對應圖片的內容參見表2實現方案二波形序號表。表2實現方案二波形序號表探頭1探頭2對應編號探頭1探頭2對應編號BSNRZ2-1BSBPH2-2BSRZ2-3NRZBPH2-4NRZRZ2-5BPHRZ2-6BPHORZ2-7RZORZ2-8其中RZ引腳對應密勒碼編碼輸出,ORZ引腳對應密勒碼解碼輸出。 2-1. BS-NRZ 波形對比 2-2. BS-BPH 波形對比2-3. BS-RZ 波形對比 2-4. NRZ-BPH 波形對比2-5.BPH - RZ 波形對比 2-6. NRZ-O

41、RZ 波形對比 2-7. BPH-ORZ 波形對比 2-8. RZ-ORZ 波形對比分析實測波形圖可知,由圖2-4可知,3個周期24位NRZ碼(11000000)對應BPH碼編碼成功;由圖2-5可知,BPH碼下降沿觸發密勒碼跳變沿,即密勒碼編碼成功(但由1到0存在不影響譯碼的額外跳變);由圖2-6可知,密勒碼解碼輸出對應NRZ輸入完全正確,且延時小于2個碼元時間。綜上,實現方案一成功的實現了密勒碼的編碼解碼過程,且符合技術要求。1.3 調試報告小結 從12:30到4:30,歷時4個小時的硬件電路調試終于結束了,在整個調試過程中,由于之前準備比較充分沒有出現大的問題,所以說是比較順利的。本次設計

42、中有我用了其中三種來調試,兩種原理圖輸入的設計方法都基本上成功了,唯一遺憾的是VHDL語言的設計方案沒有成功燒寫,經分析應該是對語言中的一些細節和軟件操作還是不夠熟練所造成。可見原理圖設計要比語言設計更容易上手,VHDL語言設計雖然沒有完成成功但在學習的過程中收獲也不小,至少看得懂不是特別復雜的語言了。本次調試中唯一的小波折就是兩種設計方案中密勒碼的實測波形和仿真有一些小的不同,就是1到0時存在一個額外的跳變,經過分析,調整,測試,發現這個意外和我們的時鐘信號時0先還是1先無關,和一些外圍的電路的參數無關,和碼元速率的大小無關。最終經過檢測,發現這個額外跳變是不影響譯碼的。所以總的來說,兩個設

43、計還是成功的。另外通過這次調試,鍛煉了我們動手能力,仔細觀察的能力,以及針對問題求解的過程體驗,其收獲不小。2 CPLD設計的原理圖以下分別是實現方案一、二的原理大圖。2.1 實現方案一原理圖2.2 實現方案二原理大圖3 思考題1)在利用CPLD進行基帶碼型變換的過程中,有哪些因素影響延時?應如何減小設計延時?答:經過分析以及搜集資料可知影響延遲的因素有:(1) 各個邏輯器件(如非門,異或門等)由于本身的傳輸延遲帶來的系統延遲。(2)由于在信號提取之前,提取信號上升沿或者下降沿到達之前有一段“空白”,因此帶來了一定的延遲。對應的設計改善方案為:(1)在設計電路時精簡電路,盡量用最少的元器件實現

44、所要求的功能。(2)方案中可以用頻率較高的提取信號,這樣可以在一定程度上減少延遲時間。(3)綜合考慮整體延時合理分配器件位置,減少延遲時間。2)本設計需要占用多少個CPLD的邏輯單元? 答:由MAX+PLUS2 中自動生成的.rpt文件中有以下報告,實現方案一:Total logic cells used: 6/128 (4%);實現方案二:Total logic cells used:6/128 (4%)。即兩種實現方案都占用了CPLD中的6個邏輯單元。3)本設計除了用原理圖輸入的方式來實現電路外,還可以采用VHDL或者Verilog HDL等其他硬件描述語言來實現,嘗試用硬件描述語言完成本

45、設計的功能。 答:VHDL程序實現方案如設計方案一。ibrary ieee;entity miller_encoder isport(datain :in std_logic; en :in std_logic; clk :in std_logic; encodeout:out std_logic_vector(1 downto 0) );end ;architecture func of miller_encoder isbegin process(en,clk,datain) variable sav1 :std_logic:='1' variable sav2 :std_

46、logic_vector(1 downto 0):="01" begin if(en='0') then encodeout<="00" else if(clk 'event and clk='0')then if(datain='1' and sav1='1' and sav2="01") then encodeout<="10" sav2:="10" sav1:='1' elsif(datain='1' and sav1='1' and sav2="10") then encodeout<="

溫馨提示

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

評論

0/150

提交評論