基于VHDL的多功能調(diào)制解調(diào)器的設(shè)計(jì)_第1頁
基于VHDL的多功能調(diào)制解調(diào)器的設(shè)計(jì)_第2頁
基于VHDL的多功能調(diào)制解調(diào)器的設(shè)計(jì)_第3頁
基于VHDL的多功能調(diào)制解調(diào)器的設(shè)計(jì)_第4頁
基于VHDL的多功能調(diào)制解調(diào)器的設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、 設(shè)計(jì)功能與要求調(diào)制解調(diào)器被人們稱為“貓”,它是在發(fā)送端通過調(diào)制將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),而在接收端通過解調(diào)再將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)的一種裝置。這篇報(bào)告將通過這學(xué)期所學(xué)習(xí)的VHDL的相關(guān)知識(shí)設(shè)計(jì)一個(gè)多功能的調(diào)制解調(diào)器,下面是設(shè)計(jì)要求:1、 實(shí)現(xiàn)二進(jìn)制振幅鍵控(2ASK)的調(diào)制與解調(diào);2、 實(shí)現(xiàn)二進(jìn)制頻移鍵控(2FSK)的調(diào)制與解調(diào);3、 實(shí)現(xiàn)二進(jìn)制相位鍵控(2PSK)的調(diào)制與解調(diào)。二、 設(shè)計(jì)思路1、2ASK調(diào)制與解調(diào)(1)、2ASK調(diào)制器原理圖如圖1、圖2所示,輸入隨機(jī)信號(hào)序列,經(jīng)過基帶信號(hào)形成器,產(chǎn)生波形序列,然后通過懲罰器進(jìn)行頻譜搬移,并使用帶通濾波器來濾除高頻諧波和低頻干擾,最終輸

2、出振幅鍵控信號(hào)。(2)、2ASK解調(diào)器以包絡(luò)解調(diào)為例來說明,原理圖如圖3所示,其中分頻器對(duì)時(shí)鐘信號(hào)進(jìn)行分頻得到與發(fā)射端數(shù)字載波相同的數(shù)字載波信號(hào);寄存器在時(shí)鐘上升沿到來時(shí)把數(shù)字ASK信號(hào)存入寄存器;計(jì)數(shù)器利用分頻輸出的載波信號(hào)作為計(jì)數(shù)器的時(shí)鐘信號(hào),在其上升沿到來時(shí),對(duì)寄存器中的ASK載波個(gè)數(shù)進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)值大于3時(shí),輸出位1,否則為0;判決器則以數(shù)字載波為判決時(shí)鐘,對(duì)計(jì)數(shù)器輸出信號(hào)進(jìn)行抽樣判決,并輸出解調(diào)后的基帶信號(hào)。2、2FSK調(diào)制與解調(diào)(1)、2FSK調(diào)制器的原理圖如圖4所示,信號(hào)通過2個(gè)獨(dú)立的分頻器產(chǎn)生不同頻率的載波信號(hào),然后通過選通開關(guān)選擇不同頻率的高頻信號(hào),從而實(shí)現(xiàn)2FSK調(diào)制。(

3、2)、2FSK與2ASK解調(diào)相似,也是由分頻器、寄存器、計(jì)數(shù)器和判決器構(gòu)成,其結(jié)構(gòu)構(gòu)圖如圖5所示: 3、2PSK調(diào)制與解調(diào) 相位鍵控分為絕對(duì)調(diào)相(CPSK)與相對(duì)調(diào)相(DPSK)兩種。CPSK是利用載波的不同相位去直接傳送數(shù)字信息的一種方式;DPSK則是利用載波相位的相對(duì)變化來傳送數(shù)字信號(hào),即利用前后碼之間載波相位的變化表示數(shù)字基帶信號(hào)。(1)CPSK調(diào)制與解調(diào) CPSK調(diào)制器結(jié)構(gòu)圖如圖6所示。計(jì)數(shù)器對(duì)外部時(shí)鐘信號(hào)進(jìn)行分頻與計(jì)數(shù),并輸出兩路相位不同的數(shù)字載波信號(hào);2選1開關(guān)在基帶信號(hào)的控制下,對(duì)兩路載波信號(hào)進(jìn)行選擇,輸出信號(hào)即為CPSK信號(hào)。 CPSK解調(diào)器的結(jié)構(gòu)圖如圖7所示,計(jì)數(shù)器q輸出與發(fā)

4、射端同步的0相數(shù)字載波;將計(jì)數(shù)器輸出的0相載波與數(shù)字CPSK信號(hào)中的載波進(jìn)行與運(yùn)算,當(dāng)兩比較信號(hào)在判決時(shí)刻都為1時(shí),輸出為1,否則輸出為0,從而實(shí)現(xiàn)解調(diào)。(2)、DPSK調(diào)制與解調(diào) DPSK調(diào)制器的結(jié)構(gòu)圖如圖8所示,CPSK調(diào)制器,計(jì)數(shù)器,異或門和寄存器共同完成絕對(duì)碼到相對(duì)碼的變換功能。 DPSK解調(diào)器關(guān)鍵則是實(shí)現(xiàn)相對(duì)碼到絕對(duì)碼的轉(zhuǎn)換,其結(jié)構(gòu)圖如圖9所示,DPSK解調(diào)采用CPSK解調(diào)器與相對(duì)碼到絕對(duì)碼轉(zhuǎn)換電路即可實(shí)現(xiàn),其中,相對(duì)碼到絕對(duì)碼的轉(zhuǎn)換是以在以計(jì)數(shù)器輸出信號(hào)為時(shí)鐘控制下完成的。三、 原理圖說明1、 頂層模塊的原理圖 利用選擇譯碼器輸出矢量的每一位分別作為調(diào)制解調(diào)器的工作使能輸入信號(hào),從

5、而實(shí)現(xiàn)不同條件下多種調(diào)制解調(diào)方式間的選擇,對(duì)于PSK調(diào)制與解調(diào)以CPSK為例來輸入原理圖。2、 利用仿真程序生成2ASK調(diào)制器的RTL視圖及電路符號(hào)3、 利用仿真程序生成2ASK解調(diào)器的RTL視圖及電路圖4、 利用仿真程序生成2FSK調(diào)制器的RTL視圖及電路圖 5、 利用仿真程序生成2FSK解調(diào)器的RTL視圖及電路圖 6、 利用仿真程序生成2CPSK調(diào)制器的RTL視圖及電路圖 7、 利用仿真程序生成2CPSK解調(diào)器的RTL視圖及電路圖8、 利用仿真程序生成2DPSK調(diào)制器絕對(duì)碼轉(zhuǎn)換為相對(duì)碼的 RTL視圖及電路圖 9、 利用仿真程序生成2DPSK解調(diào)器相對(duì)碼轉(zhuǎn)換為絕對(duì)碼的RTL視圖及電路圖四、

6、VHDL源代碼的實(shí)現(xiàn)1、選擇譯碼器的程序library ieee;use ieee.std_logic_1164.all;entity selecter is port( sel:in std_logic_vector(2 downto 0); Q:out std_logic_VECTOR(5 downto 0) );end selecter;architecture rtl of selecter is begin process(sel) begin case sel is when "000" => Q<="000001" when &

7、quot;001" => Q<="000010" when "010" => Q<="000100" when "011" => Q<="001000" when "100" => Q<="010000" when "101" => Q<="100000" when others=>null; end case; end process;en

8、d rtl; 2、2ASK調(diào)制器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_ASK isport(clk :in std_logic; -系統(tǒng)時(shí)鐘 start :in std_logic; -開始調(diào)制信號(hào) x :in std_logic; -基帶信號(hào) y :out std_logic); -調(diào)制信號(hào)end PL_ASK;architecture behav of PL_ASK issignal q:intege

9、r range 0 to 3; -分頻計(jì)數(shù)器signal f :std_logic; -載波信號(hào)beginprocess(clk)beginif clk'event and clk='1' then if start='0' then q<=0; elsif q<=1 then f<='1'q<=q+1; -改變q后面數(shù)字的大小,就可以改變載波信號(hào)的占空比 elsif q=3 then f<='0'q<=0; -改變q后面數(shù)字的大小,就可以改變載波信號(hào)的頻率 else f<=

10、9;0'q<=q+1; end if;end if;end process;y<=x and f; -對(duì)基帶碼進(jìn)行調(diào)制end behav;3、2ASK解調(diào)器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_ASK2 isport(clk :in std_logic; -系統(tǒng)時(shí)鐘 start :in std_logic; -同步信號(hào) x :in std_logic; -調(diào)制信號(hào) y :out std

11、_logic); -基帶信號(hào)end PL_ASK2;architecture behav of PL_ASK2 issignal q:integer range 0 to 11; -計(jì)數(shù)器signal xx:std_logic; -寄存x信號(hào)signal m:integer range 0 to 5; -計(jì)xx的脈沖數(shù)beginprocess(clk) -對(duì)系統(tǒng)時(shí)鐘進(jìn)行q分頻,beginif clk'event and clk='1' then xx<=x; -clk上升沿時(shí),把x信號(hào)賦給中間信號(hào)xx if start='0' then q<

12、=0; -if語句完成q的循環(huán)計(jì)數(shù) elsif q=11 then q<=0; else q<=q+1; end if;end if;end process;process(xx,q) -此進(jìn)程完成ASK解調(diào)begin if q=11 then m<=0; -m計(jì)數(shù)器清零elsif q=10 then if m<=3 then y<='0' -if語句通過對(duì)m大小,來判決y輸出的電平 else y<='1' end if;elsif xx'event and xx='1'then m<=m+1;

13、-計(jì)xx信號(hào)的脈沖個(gè)數(shù)end if;end process;end behav;4、2FSK調(diào)制器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_FSK is port( clk:in std_logic; -系統(tǒng)時(shí)鐘 start:in std_logic; -開始調(diào)制信號(hào) x:in std_logic; -基帶信號(hào) y:out std_logic -調(diào)制信號(hào) );end PL_FSK;architecture r

14、tl of PL_FSK issignal q1:integer range 0 to 11; -載波信號(hào)f1的分頻計(jì)數(shù)器signal q2:integer range 0 to 3; -載波信號(hào)f2的分頻計(jì)數(shù)器signal f1,f2:std_logic; -載波信號(hào)f1,f2begin process(clk) -此進(jìn)程通過對(duì)系統(tǒng)時(shí)鐘clk的分頻,得到載波f1 begin if clk'event and clk='1' then if start='0' then q1<=0; elsif q1<=5 then f1<='

15、1' q1<=q1+1; -改變q1后面的數(shù)字可以改變載波f1的占空比 elsif q1=11 then f1<='0' q1<=0; -改變q1后面的數(shù)字可以改變載波f1的頻率 else f1<='0' q1<=q1+1; end if; end if; end process; process(clk) -此進(jìn)程通過對(duì)系統(tǒng)時(shí)鐘clk的分頻,得到載波f2 begin if clk'event and clk='1' then if start='0' then q2<=0; e

16、lsif q2<=0 then f2<='1' q2<=q2+1; -改變q2后面的數(shù)字可以改變載波f2的占空比 elsif q2<=1 then f2<='0' q2<=0; -改變q2后面的數(shù)字可以改變載波f2的頻率 else f2<='0' q2<=q2+1; end if; end if; end process; process(clk,x) -此進(jìn)程完成對(duì)基帶信號(hào)的FSK調(diào)制 begin if clk'event and clk='1' then if x=

17、9;0' then y<=f1; -當(dāng)輸入的基帶信號(hào)x=0時(shí),輸出的調(diào)制信號(hào)y為f1 else y<=f2; -當(dāng)輸入的基帶信號(hào)x=1時(shí),輸出的調(diào)制信號(hào)y為f2 end if; end if; end process;end rtl;5、2FSK解調(diào)器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_FSK2 is port( clk:in std_logic; -系統(tǒng)時(shí)鐘 start:in st

18、d_logic; -同步信號(hào) x:in std_logic; -調(diào)制信號(hào) y:out std_logic -基帶信號(hào) );end PL_FSK2;architecture behav of PL_FSK2 issignal q:integer range 0 to 11; -分頻計(jì)數(shù)器signal m:integer range 0 to 5; -計(jì)數(shù)器signal xx:std_logic; -寄存器begin process(clk) -對(duì)系統(tǒng)時(shí)鐘進(jìn)行q分頻 begin if clk'event and clk='1' then xx<=x; -在clk信號(hào)上

19、升沿時(shí),x信號(hào)對(duì)中間信號(hào)xx賦值 if start='0' then q<=0; -if語句完成Q的循環(huán)計(jì)數(shù) elsif q=11 then q<=0; else q<=q+1; end if; end if; end process; process(q,xx) -此進(jìn)程完成FSK解調(diào) begin if q=11 then m<=0; -m計(jì)數(shù)器清零 elsif q=10 then if m<=3 then y<='0' -if語句通過對(duì)m大小,來判決y輸出的電平 else y<='1' end if;

20、 elsif xx'event and xx='1' then m<=m+1; end if; end process;end behav;6、2CPSK調(diào)制器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_CPSK isport(clk :in std_logic; -系統(tǒng)時(shí)鐘 start :in std_logic; -開始調(diào)制信號(hào) x :in std_logic; -基帶信號(hào) y

21、 :out std_logic); -已調(diào)制輸出信號(hào)end PL_CPSK;architecture behav of PL_CPSK issignal q:std_logic_vector(1 downto 0); -2位計(jì)數(shù)器signal f1,f2:std_logic; -載波信號(hào)beginprocess(clk) -此進(jìn)程主要是產(chǎn)生兩重載波信號(hào)f1,f2beginif clk'event and clk='1' then if start='0' then q<="00" elsif q<="01&quo

22、t; then f1<='1'f2<='0'q<=q+1; elsif q="11" then f1<='0'f2<='1'q<="00" else f1<='0'f2<='1'q<=q+1; end if;end if;end process;process(clk,x) -此進(jìn)程完成對(duì)基帶信號(hào)x的調(diào)制 beginif clk'event and clk='1' then -上升沿

23、觸發(fā) if q(0)='1' then if x='1' then y<=f1; -基帶信號(hào)x為1時(shí),輸出信號(hào)y為f1 else y<=f2; -基帶信號(hào)x為0時(shí),輸出信號(hào)y為f2 end if; end if;end if;end process;end behav;7、2CPSK解調(diào)器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_CPSK2 isport(clk :

24、in std_logic; -系統(tǒng)時(shí)鐘 start :in std_logic; -同步信號(hào) x :in std_logic; -調(diào)制信號(hào) y :out std_logic); -基帶信號(hào)end PL_CPSK2;architecture behav of PL_CPSK2 issignal q:integer range 0 to 3; beginprocess(clk) -此進(jìn)程完成對(duì)CPSK調(diào)制信號(hào)的解調(diào)beginif clk'event and clk='1' then if start='0' then q<=0; elsif q=0 t

25、hen q<=q+1; -在q=0時(shí),根據(jù)輸入信號(hào)x的電平來進(jìn)行判決 if x='1' then y<='1' else y<='0' end if; elsif q=3 then q<=0; else q<=q+1; end if;end if;end process;end behav;8、2DPSK調(diào)制器絕對(duì)碼轉(zhuǎn)換為相對(duì)碼的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsi

26、gned.all;entity PL_DPSK isport(clk :in std_logic; -系統(tǒng)時(shí)鐘 start :in std_logic; -開始轉(zhuǎn)換信號(hào) x :in std_logic; -絕對(duì)碼輸入信號(hào) y :out std_logic); -相對(duì)碼輸出信號(hào)end PL_DPSK;architecture behav of PL_DPSK issignal q:integer range 0 to 3; -分頻器signal xx:std_logic; -中間寄存信號(hào) beginprocess(clk,x) -此進(jìn)程完成絕對(duì)碼到相對(duì)碼的轉(zhuǎn)換beginif clk'ev

27、ent and clk='1' then if start='0' then q<=0; xx<='0' elsif q=0 then q<=1; xx<=xx xor x;y<=xx xor x; -輸入信號(hào)與前一個(gè)輸出信號(hào)進(jìn)行異或 elsif q=3 then q<=0; else q<=q+1; end if;end if;end process;end behav;9、2DPSK解調(diào)器相對(duì)碼轉(zhuǎn)換為絕對(duì)碼的程序library ieee;use ieee.std_logic_arith.all;use

28、 ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_DPSK2 isport(clk :in std_logic; -系統(tǒng)時(shí)鐘 start :in std_logic; -開始轉(zhuǎn)換信號(hào) x :in std_logic; -相對(duì)碼輸入信號(hào) y :out std_logic); -絕對(duì)碼輸出信號(hào)end PL_DPSK2;architecture behav of PL_DPSK2 issignal q:integer range 0 to 3; -分頻signal xx:std_logic; -寄存相對(duì)碼beginprocess(clk,x) -此進(jìn)程完成相對(duì)碼到絕對(duì)碼的轉(zhuǎn)換beginif clk'event and clk='1' then if start='0' then q<=0; elsif q=0 then q<=1; elsif q=3 then q<=0; y<=xx

溫馨提示

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

評(píng)論

0/150

提交評(píng)論