版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一、 設(shè)計功能與要求調(diào)制解調(diào)器被人們稱為“貓”,它是在發(fā)送端通過調(diào)制將數(shù)字信號轉(zhuǎn)換為模擬信號,而在接收端通過解調(diào)再將模擬信號轉(zhuǎn)換為數(shù)字信號的一種裝置。這篇報告將通過這學(xué)期所學(xué)習(xí)的VHDL的相關(guān)知識設(shè)計一個多功能的調(diào)制解調(diào)器,下面是設(shè)計要求:1、 實現(xiàn)二進制振幅鍵控(2ASK)的調(diào)制與解調(diào);2、 實現(xiàn)二進制頻移鍵控(2FSK)的調(diào)制與解調(diào);3、 實現(xiàn)二進制相位鍵控(2PSK)的調(diào)制與解調(diào)。二、 設(shè)計思路1、2ASK調(diào)制與解調(diào)(1)、2ASK調(diào)制器原理圖如圖1、圖2所示,輸入隨機信號序列,經(jīng)過基帶信號形成器,產(chǎn)生波形序列,然后通過懲罰器進行頻譜搬移,并使用帶通濾波器來濾除高頻諧波和低頻干擾,最終輸
2、出振幅鍵控信號。(2)、2ASK解調(diào)器以包絡(luò)解調(diào)為例來說明,原理圖如圖3所示,其中分頻器對時鐘信號進行分頻得到與發(fā)射端數(shù)字載波相同的數(shù)字載波信號;寄存器在時鐘上升沿到來時把數(shù)字ASK信號存入寄存器;計數(shù)器利用分頻輸出的載波信號作為計數(shù)器的時鐘信號,在其上升沿到來時,對寄存器中的ASK載波個數(shù)進行計數(shù),當(dāng)計數(shù)值大于3時,輸出位1,否則為0;判決器則以數(shù)字載波為判決時鐘,對計數(shù)器輸出信號進行抽樣判決,并輸出解調(diào)后的基帶信號。2、2FSK調(diào)制與解調(diào)(1)、2FSK調(diào)制器的原理圖如圖4所示,信號通過2個獨立的分頻器產(chǎn)生不同頻率的載波信號,然后通過選通開關(guān)選擇不同頻率的高頻信號,從而實現(xiàn)2FSK調(diào)制。(
3、2)、2FSK與2ASK解調(diào)相似,也是由分頻器、寄存器、計數(shù)器和判決器構(gòu)成,其結(jié)構(gòu)構(gòu)圖如圖5所示: 3、2PSK調(diào)制與解調(diào) 相位鍵控分為絕對調(diào)相(CPSK)與相對調(diào)相(DPSK)兩種。CPSK是利用載波的不同相位去直接傳送數(shù)字信息的一種方式;DPSK則是利用載波相位的相對變化來傳送數(shù)字信號,即利用前后碼之間載波相位的變化表示數(shù)字基帶信號。(1)CPSK調(diào)制與解調(diào) CPSK調(diào)制器結(jié)構(gòu)圖如圖6所示。計數(shù)器對外部時鐘信號進行分頻與計數(shù),并輸出兩路相位不同的數(shù)字載波信號;2選1開關(guān)在基帶信號的控制下,對兩路載波信號進行選擇,輸出信號即為CPSK信號。 CPSK解調(diào)器的結(jié)構(gòu)圖如圖7所示,計數(shù)器q輸出與發(fā)
4、射端同步的0相數(shù)字載波;將計數(shù)器輸出的0相載波與數(shù)字CPSK信號中的載波進行與運算,當(dāng)兩比較信號在判決時刻都為1時,輸出為1,否則輸出為0,從而實現(xiàn)解調(diào)。(2)、DPSK調(diào)制與解調(diào) DPSK調(diào)制器的結(jié)構(gòu)圖如圖8所示,CPSK調(diào)制器,計數(shù)器,異或門和寄存器共同完成絕對碼到相對碼的變換功能。 DPSK解調(diào)器關(guān)鍵則是實現(xiàn)相對碼到絕對碼的轉(zhuǎn)換,其結(jié)構(gòu)圖如圖9所示,DPSK解調(diào)采用CPSK解調(diào)器與相對碼到絕對碼轉(zhuǎn)換電路即可實現(xiàn),其中,相對碼到絕對碼的轉(zhuǎn)換是以在以計數(shù)器輸出信號為時鐘控制下完成的。三、 原理圖說明1、 頂層模塊的原理圖 利用選擇譯碼器輸出矢量的每一位分別作為調(diào)制解調(diào)器的工作使能輸入信號,從
5、而實現(xiàn)不同條件下多種調(diào)制解調(diào)方式間的選擇,對于PSK調(diào)制與解調(diào)以CPSK為例來輸入原理圖。2、 利用仿真程序生成2ASK調(diào)制器的RTL視圖及電路符號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)制器絕對碼轉(zhuǎn)換為相對碼的 RTL視圖及電路圖 9、 利用仿真程序生成2DPSK解調(diào)器相對碼轉(zhuǎn)換為絕對碼的RTL視圖及電路圖四、
6、VHDL源代碼的實現(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)時鐘 start :in std_logic; -開始調(diào)制信號 x :in std_logic; -基帶信號 y :out std_logic); -調(diào)制信號end PL_ASK;architecture behav of PL_ASK issignal q:intege
9、r range 0 to 3; -分頻計數(shù)器signal f :std_logic; -載波信號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ù)字的大小,就可以改變載波信號的占空比 elsif q=3 then f<='0'q<=0; -改變q后面數(shù)字的大小,就可以改變載波信號的頻率 else f<=
10、9;0'q<=q+1; end if;end if;end process;y<=x and f; -對基帶碼進行調(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)時鐘 start :in std_logic; -同步信號 x :in std_logic; -調(diào)制信號 y :out std
11、_logic); -基帶信號end PL_ASK2;architecture behav of PL_ASK2 issignal q:integer range 0 to 11; -計數(shù)器signal xx:std_logic; -寄存x信號signal m:integer range 0 to 5; -計xx的脈沖數(shù)beginprocess(clk) -對系統(tǒng)時鐘進行q分頻,beginif clk'event and clk='1' then xx<=x; -clk上升沿時,把x信號賦給中間信號xx if start='0' then q<
12、=0; -if語句完成q的循環(huán)計數(shù) elsif q=11 then q<=0; else q<=q+1; end if;end if;end process;process(xx,q) -此進程完成ASK解調(diào)begin if q=11 then m<=0; -m計數(shù)器清零elsif q=10 then if m<=3 then y<='0' -if語句通過對m大小,來判決y輸出的電平 else y<='1' end if;elsif xx'event and xx='1'then m<=m+1;
13、-計xx信號的脈沖個數(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)時鐘 start:in std_logic; -開始調(diào)制信號 x:in std_logic; -基帶信號 y:out std_logic -調(diào)制信號 );end PL_FSK;architecture r
14、tl of PL_FSK issignal q1:integer range 0 to 11; -載波信號f1的分頻計數(shù)器signal q2:integer range 0 to 3; -載波信號f2的分頻計數(shù)器signal f1,f2:std_logic; -載波信號f1,f2begin process(clk) -此進程通過對系統(tǒng)時鐘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) -此進程通過對系統(tǒng)時鐘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) -此進程完成對基帶信號的FSK調(diào)制 begin if clk'event and clk='1' then if x=
17、9;0' then y<=f1; -當(dāng)輸入的基帶信號x=0時,輸出的調(diào)制信號y為f1 else y<=f2; -當(dāng)輸入的基帶信號x=1時,輸出的調(dià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)時鐘 start:in st
18、d_logic; -同步信號 x:in std_logic; -調(diào)制信號 y:out std_logic -基帶信號 );end PL_FSK2;architecture behav of PL_FSK2 issignal q:integer range 0 to 11; -分頻計數(shù)器signal m:integer range 0 to 5; -計數(shù)器signal xx:std_logic; -寄存器begin process(clk) -對系統(tǒng)時鐘進行q分頻 begin if clk'event and clk='1' then xx<=x; -在clk信號上
19、升沿時,x信號對中間信號xx賦值 if start='0' then q<=0; -if語句完成Q的循環(huán)計數(shù) elsif q=11 then q<=0; else q<=q+1; end if; end if; end process; process(q,xx) -此進程完成FSK解調(diào) begin if q=11 then m<=0; -m計數(shù)器清零 elsif q=10 then if m<=3 then y<='0' -if語句通過對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)時鐘 start :in std_logic; -開始調(diào)制信號 x :in std_logic; -基帶信號 y
21、 :out std_logic); -已調(diào)制輸出信號end PL_CPSK;architecture behav of PL_CPSK issignal q:std_logic_vector(1 downto 0); -2位計數(shù)器signal f1,f2:std_logic; -載波信號beginprocess(clk) -此進程主要是產(chǎn)生兩重載波信號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) -此進程完成對基帶信號x的調(diào)制 beginif clk'event and clk='1' then -上升沿
23、觸發(fā) if q(0)='1' then if x='1' then y<=f1; -基帶信號x為1時,輸出信號y為f1 else y<=f2; -基帶信號x為0時,輸出信號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)時鐘 start :in std_logic; -同步信號 x :in std_logic; -調(diào)制信號 y :out std_logic); -基帶信號end PL_CPSK2;architecture behav of PL_CPSK2 issignal q:integer range 0 to 3; beginprocess(clk) -此進程完成對CPSK調(dià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時,根據(jù)輸入信號x的電平來進行判決 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)制器絕對碼轉(zhuǎn)換為相對碼的程序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)時鐘 start :in std_logic; -開始轉(zhuǎn)換信號 x :in std_logic; -絕對碼輸入信號 y :out std_logic); -相對碼輸出信號end PL_DPSK;architecture behav of PL_DPSK issignal q:integer range 0 to 3; -分頻器signal xx:std_logic; -中間寄存信號 beginprocess(clk,x) -此進程完成絕對碼到相對碼的轉(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; -輸入信號與前一個輸出信號進行異或 elsif q=3 then q<=0; else q<=q+1; end if;end if;end process;end behav;9、2DPSK解調(diào)器相對碼轉(zhuǎn)換為絕對碼的程序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)時鐘 start :in std_logic; -開始轉(zhuǎn)換信號 x :in std_logic; -相對碼輸入信號 y :out std_logic); -絕對碼輸出信號end PL_DPSK2;architecture behav of PL_DPSK2 issignal q:integer range 0 to 3; -分頻signal xx:std_logic; -寄存相對碼beginprocess(clk,x) -此進程完成相對碼到絕對碼的轉(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等.壓縮文件請下載最新的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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 道路安全學(xué)習(xí)心得體會
- 護理人員職業(yè)道德培訓(xùn)
- 油庫應(yīng)急處理流程
- 初中歷史教案反思
- 布藝扎染教案反思
- 白露主題班會教案
- 和的認識說課稿
- 文化創(chuàng)意承銷協(xié)議書范本
- 水利工程機械施工合同
- 土建項目協(xié)議書范本
- 墊片沖壓模具設(shè)計畢業(yè)設(shè)計論文
- 常見矩形管規(guī)格表
- 冷庫工程特點施工難點分析及對策
- Python-Django開發(fā)實戰(zhàn)
- 小學(xué)道法小學(xué)道法1我們的好朋友--第一課時ppt課件
- 路由和波長分配PPT課件
- 光伏組件開路電壓測試記錄
- 配電箱安裝規(guī)范
- AP1000反應(yīng)堆結(jié)構(gòu)設(shè)計
- 中英文商務(wù)派遣函樣板
- 彎臂車床夾具設(shè)計說明書
評論
0/150
提交評論