浙大通信原理大作業(yè)_第1頁
浙大通信原理大作業(yè)_第2頁
浙大通信原理大作業(yè)_第3頁
浙大通信原理大作業(yè)_第4頁
浙大通信原理大作業(yè)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗報告課程名稱:通信原理 指導老師:鄧焰 陳宏 成績:_實驗名稱:偽隨機序列 編碼及解碼 實驗類型:基礎規(guī)范型 同組學生姓名: 一、實驗目的和要求(必填)二、實驗內容和原理(必填)三、主要儀器設備(必填)四、操作方法和實驗步驟五、實驗數(shù)據記錄和處理六、實驗結果與分析(必填)七、討論、心得裝 訂 線0 實驗要求:1、環(huán)境與工具適應;2、偽隨機編碼,含5級m序列、M序列;3、歸零碼、差分碼的編碼與解碼;4、雙相碼、CMI的編碼與解碼;5、AMI、PST、HDB3的編碼與解碼。1 5級m序列:實驗原理:查找本原多項式表,得到5級m序列的本原多項式為x5+x2+1,即有C0=C2=C5=1,C1=C

2、3=C4=0對照課本P380圖12-4,以邏輯運算“異或”表示加法器的“加”運算,則可以得到以下的電路圖:其中,上圖中右下角BNAND6器件的使用是為了避免序列“00000”的出現(xiàn)。當只有為全零時,BNAND6輸出才為1,此時5個D觸發(fā)器的置位端有效,將“00000”置為“11111”仿真結果:上圖兩條粗線間恰為一個周期,共有31us,而一個狀態(tài)占1us,即為31個狀態(tài),這與5級m序列的總狀態(tài)數(shù)N=25-1=31相等。此外,經檢驗有 從而得以驗證結果的正確性。實驗波形:2 5級M序列:實驗原理:查找本原多項式表,得到5級m序列的本原多項式為x5+x2+1,即有C0=C2=C5=1,C1=C3=

3、C4=0對照課本P380圖12-4,以邏輯運算“異或”表示加法器的“加”運算,并在此基礎上增加一條支路(a4、a3、a2、a1的或非)引到加法器,則可以得到以下的電路圖:下圖中左下角BAND6即為在5級m序列基礎中新增的支路,其中多余的2個端口直接接地。仿真結果:上圖兩條粗線間恰為一個周期,共有31us,而一個狀態(tài)占1us,即為31個狀態(tài),這與5級M序列的總狀態(tài)數(shù)N=25-1=31相等。此外,經檢驗符合課本P391遞推方程(12.2-47),從而得以驗證結果的正確性。此外,上圖虛線框中為全零序列“00000”。實驗波形:3 單極性歸零碼:實驗原理:為方便起見,取占空比為50%。當原碼為1,則編

4、碼為10;當原碼為0,則編碼恒為0。比對上述偽隨機序列仿真結果的時鐘脈沖序列和5級m(或M)序列,發(fā)現(xiàn)單極性歸零碼可以通過兩者進行邏輯“與”得到,示意圖如下所示。基于此可以得到歸零碼的編碼電路。 至于解碼電路的得到,比對上圖左下角的原碼(也即解碼)和右下角的編碼并結合時鐘脈沖,不難發(fā)現(xiàn),若將時鐘脈沖作為上升沿觸發(fā)而將編碼作為輸入則可以得到原碼波形。在此需要注意的是,雖然數(shù)電課程中講的是上升沿觸發(fā)要看觸發(fā)前的狀態(tài),但由于實際器件存在延時,故在Quartus2仿真及實驗過程中均是由觸發(fā)后的狀態(tài)決定,這一點已在實踐中得到證明。由此借助上升沿觸發(fā)的D觸發(fā)器進行歸零碼的解碼。其中,之所以在解碼時又使用與

5、門將時鐘脈沖和5級m序列進行“與”運算而非直接從編碼輸出引出的原因,是從編碼輸出引出的相位和編碼直接輸出的相位差了180度,盡管兩者都是同一點上的波形。仿真結果:實驗波形:原碼編碼編碼解碼4 差分碼:實驗原理:CP原碼編碼差分碼是以跳變來表示高電平,以不變表示低電平,即01和10表示高電平;00和11表示低電平。編碼過程如上所示,由編碼規(guī)則不難發(fā)現(xiàn),編碼中要發(fā)生跳變就必須當原碼為1時。因而,可以借助T觸發(fā)器來實現(xiàn)。其中,CP脈沖作為上升沿觸發(fā),原碼作為T端口輸入。當然,也可以借助于D觸發(fā)器,以下采用的是同組同學的電路圖,思想是通過D觸發(fā)器保存前一個狀態(tài),并將與當前狀態(tài)進行異或運算。顯然,若前后

6、兩個狀態(tài)不同,異或后得到“1”,否則為“0”,這與差分的編碼思想一致,只是此方法會至少滯后1個周期。基于此便可得到差分碼的編碼電路圖。至于解碼過程,若仍采用上述編碼的后一種思想,則解碼與編碼同效。這是因為解碼的差分碼便是原碼,可以說是兩者處于相同的地位。當然,這也可以從“異或”邏輯運算的特點得到。因此,仍將編碼的前后狀態(tài)進行“異或”運算便得到解碼,只不過又至少滯后編碼一個周期以上。正是因為該方法的編碼和解碼必然會有較大的延時滯后,故電路圖上右上角存在兩個為減少滯后時間而采用的D觸發(fā)器,當然這其中的性價比不高。仿真結果:實驗波形:編碼原碼原碼解碼5 雙相碼:實驗原理:雙相碼的編碼規(guī)則是當原碼為1

7、時,則編碼為10;當原碼為0時,則編碼為01。具體的波形表示為CP原碼編碼由上面波形圖,不難發(fā)現(xiàn),編碼為CP脈沖與原碼的“同或”,且解碼為CP脈沖與編碼的“同或”運算?;诖丝傻玫诫娐穲D如下所示。仿真結果:實驗波形:原碼編碼原碼解碼6 CMI:實驗原理:CMI的編碼規(guī)則為當原碼為1,編碼為11與00相互交替;當原碼為0,編碼為01。由此可見,CMI碼為1B2B碼。由于當原碼為1時存在交替現(xiàn)象,因此考慮采用VHDL語言進行編碼。其中,設定一個變量用于記錄“1”出現(xiàn)的狀態(tài),以此判別輸出為11還是00。其中,編碼為位于右下角偏上模塊而解碼為其下方的模塊,具體VHDL語言在下文給出。仿真結果:實驗波形

8、:原碼編碼解碼原碼編 碼 解 碼LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY CMI_code ISPORT( Clk : in std_logic; CP : in std_logic;DataInput : in std_logic; DataOutput : out std_logic);END CMI_code;ARCHITECTURE CMIcode OF CMI_code IS signal ControlSig : std_logic;-CMI碼元控制信號 signa

9、l count: std_logic;-'00''11' signal DataBuffer : std_logic_vector(1 downto 0);-CMI碼元寄存 begin process(CP)-CMI編碼進程 begin if CP'event and CP = '1' then CASE DataInput IS WHEN '0'=> DataBuffer <= "01" WHEN '1' => -基帶信號為'1' 則交替編為"

10、;11" 和 "00" if count = '0' then DataBuffer <= "11" count<='1' else DataBuffer <= "00" count<='0' end if; END CASE; end if; end process; process(Clk)-CMI碼元輸出進程 begin if Clk'event and Clk = '1' then if ControlSig = '

11、;1' then DataOutput<= DataBuffer(0); ControlSig<= '0' else DataOutput<= DataBuffer(1); ControlSig <= '1' end if; end if; end process; end CMIcode;LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY CMI_decode ISPORT( Clk : in std_logic; CP

12、: in std_logic; DataInput : in std_logic; DataOutput : out std_logic );END CMI_decode;ARCHITECTURE CMIdecode OF CMI_decode IS signal ControlSig : std_logic;-CMI碼元控制信號 signal count: std_logic;-'00''11' signal DataBuffer : std_logic_vector(1 downto 0);-CMI碼元寄存 begin process(Clk)-CMI碼元輸

13、出進程 begin if Clk'event and Clk = '1' then if ControlSig = '1' then DataBuffer(1)<= DataInput; ControlSig<= '0' DataOutput<=DataBuffer(1) xnor DataBuffer(0); else DataBuffer(0)<= DataInput; ControlSig <= '1' end if; end if; end process; end CMIdecode

14、;7 AMI:實驗原理:AMI的編碼規(guī)則為當原碼為1時,編碼為+1與-1相互交替;當原碼為0時,編碼為0保持不變。由于AMI為三電平碼,故可以通過兩路二電平碼來表示,如下所示:CP原碼編碼(+)(-) 其中,當(+)為高電平、(-)零電平時,表示+1;當(+)為零電平、(-)高電平時,表示-1;而(+)與(-)均為零電平時,表示0。 因此,可以將三電平碼AMI的編解碼化為兩路二電平碼的編解碼。為避免兩路二電平碼的不同步造成編碼、解碼出錯,故采用VHDL語言對AMI進行編碼,而解碼部分則直接由兩路二電平碼進行“異或”運算得到。仿真結果:實驗波形:原碼編碼原碼解碼編 碼 LIBRARY ieee;

15、USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY AMI_code ISPORT( Clk : in std_logic; DataInput : in std_logic; DataOutput1 : out std_logic; DataOutput0 : out std_logic );END AMI_code;ARCHITECTURE AMIcode OF AMI_code IS signal count: std_logic;-'01''10' signal DataB

16、uffer : std_logic_vector(1 downto 0);begin process(Clk) begin if Clk'event and Clk = '1' then CASE DataInput IS WHEN '0'=> DataBuffer <= "00" WHEN '1' => if count = '0' then DataBuffer <= "01" count<='1' else DataBuffer &

17、lt;= "10" count<='0' end if; END CASE; DataOutput1 <=DataBuffer(1); DataOutput0 <=DataBuffer(0); end if; end process; end AMIcode;8 PST:實驗原理:PST為2B1T碼,其編碼規(guī)則如下所示,實驗要求正負模式無條件輪流切換。其中,編碼時需要設置一個變量用于記錄此次編碼所采用的模式。在該狀態(tài)變量已決定所采用的編碼模式后,對兩位二進制原碼進行相應的編碼,這就是編碼乃至解碼部分所基于的思想。仿真結果:編 碼 解 碼LI

18、BRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY PST_code ISPORT( Clk : in std_logic; DataInput : in std_logic; DataOutput1 : out std_logic; DataOutput0 : out std_logic);END PST_code;ARCHITECTURE PSTcode OF PST_code IS signal count: std_logic;-'01''10' si

19、gnal DataBuffer : std_logic_vector(1 downto 0); signal Dbuffer : std_logic_vector(1 downto 0); signal c1:std_logic; signal c2:std_logic;begin process(Clk) begin if Clk'event and Clk = '1' then if count = '0' then Dbuffer<=DataBuffer; DataBuffer(1) <= DataInput; count<=&#

20、39;1' else DataBuffer(0) <= DataInput; count<='0' end if; if count = '0' then CASE Dbuffer IS WHEN "00" => DataOutput1 <='0' DataOutput0 <='1' WHEN "01" => DataOutput1 <='0'DataOutput0 <='0' WHEN "10

21、" => if c1='0' then DataOutput1 <='1'DataOutput0 <='0'c1<='1' else DataOutput1 <='0'DataOutput0 <='1'c1<='0' end if; WHEN "11" => DataOutput1 <='1'DataOutput0 <='0' END CASE; else CAS

22、E Dbuffer IS WHEN "00" =>DataOutput1 <='1'DataOutput0 <='0' WHEN "01" => if c2='0' then DataOutput1 <='1'DataOutput0 <='0'c2<='1' else DataOutput1 <='0'DataOutput0 <='1'c2<='0' e

23、nd if ; WHEN "10" =>DataOutput1 <='0'DataOutput0 <='0' WHEN "11" => DataOutput1<='0'DataOutput0 <='1' END CASE; end if; end if; end process; end PSTcode;LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTI

24、TY PST_decode ISPORT( Clk : in std_logic;DataInput1 : in std_logic; DataInput0 : in std_logic;DataOutput : out std_logic);END PST_decode;ARCHITECTURE PSTdecode OF PST_decode ISsignal count: std_logic; signal DBuffer0: std_logic_vector(1 downto 0);signal DataBuffer1 : std_logic_vector(1 downto 0);sig

25、nal DataBuffer0 : std_logic_vector(1 downto 0);signal DBuffer1: std_logic_vector(1 downto 0);signal DBuffer11: std_logic_vector(1 downto 0);begin process(Clk) begin if Clk'event and Clk = '1' then if count = '0' then DBuffer11<=DBuffer1; DBuffer1<=DataBuffer1; count<=

26、9;1' DataBuffer1(1) <=DataInput1; DataBuffer1(0) <= DataInput0; else DBuffer0<=DataBuffer0;DataBuffer0(1) <= DataInput1; DataBuffer0(0) <= DataInput0; count<='0' end if; if count = '0' then if DBuffer1="01" and DBuffer0="10" then DataOutput&l

27、t;='0' end if; if (DBuffer1="00" and DBuffer0="10") or (DBuffer1="00" and DBuffer0="01") then DataOutput<='0' end if; if (DBuffer1="10" and DBuffer0="00") or (DBuffer1="01" and DBuffer0="00") then DataOutput<='1

溫馨提示

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

評論

0/150

提交評論