基于VHDL的多功能调制解调器的设计_第1页
基于VHDL的多功能调制解调器的设计_第2页
基于VHDL的多功能调制解调器的设计_第3页
基于VHDL的多功能调制解调器的设计_第4页
基于VHDL的多功能调制解调器的设计_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、设计功能与要求调制解调器被人们称为 “猫”,它是在发送端通过调制将数字信号转换为模拟信号,而在接收端通过解调再将模拟信号转换为数字信号的一种装置。这篇报告将通过这学期所学习的VHDL的相关知识设计一个多功能的调制解调器,下面是设计要求:1、实现二进制振幅键控(2ASK)的调制与解调;2、实现二进制频移键控(2FSK)的调制与解调;3、实现二进制相位键控(2PSK)的调制与解调。设计思路1、2ASKM1制与解调(1)、2ASK调制器原理图如图1、图2所示,输入随机信号序列 aJ,经过基带信号 形成器,产生波形序列,然后通过惩罚器进行频谱搬移,并使用带通滤波器来滤除高频图东(2)、2ASKB调器以

2、包络解调为例来说明,原理图如图3所示,其中分频器对时钟信号进行分频得到与发射端数字载波相同的数字载波信号;寄存器在时钟上升沿到来时 把数字ASK信号存入寄存器;计数器利用分频输出的载波信号作为计数器的时钟信号,在其上升沿到来时, 对寄存器中的ASK载波个数进行计数,当计数值大于3时,输出位1,否则为0;判决器则以数字载波为判决时钟,对计数器输出信号进行抽样判决,并 输出解调后的基带信号。图M2、2FSKM1制与解调(1)、2FSK调制器的原理图如图 4所示,信号通过2个独立的分频器产生不同频率 的载波信号,然后通过选通开关选择不同频率的高频信号,从而实现2FSK调制。图4-h(2)、2FSK与

3、2ASK解调相似,也是由分频器、寄存器、计数器和判决器构成,其 结构构图如图5所示:图43、2PSK?制与解调相位键控分为绝对调相(CPSK与相对调相(DPSK两种。CPS癌利用载波的不同 相位去直接传送数字信息的一种方式;DPSK则是利用载波相位的相对变化来传送数字信号,即利用前后码之间载波相位的变化表示数字基带信号。(1) CPSKM制与解调CPSK调制器结构图如图6所示。计数器对外部时钟信号进行分频与计数,并输出 两路相位不同的数字载波信号;2选1开关在基带信号的控制下,对两路载波信号进行选择,输出彳t号即为 CPSK言号。图3CPSK解调器的结构图如图 7所示,计数器q输出与发射端同步

4、的 0相数字载波; 将计数器输出的0相载波与数字CPSK言号中的载波进行与运算,当两比较信号在判决 时刻都为1时,输出为1,否则输出为0,从而实现解调。图7“(2)、DPSKM制与解调DPSK调制器的结构图如图 8所示,CPS耐制器,计数器,异或门和寄存器共同完 成绝对码到相对码的变换功能。图瓯DPSK解调器关键则是实现相对码到绝对码的转换,其结构图如图9所示,DPSKW调采用CPSKW调器与相对码到绝对码转换电路即可实现,其中,相对码到绝对码的转 换是以在以计数器输出信号为时钟控制下完成的。图g-三、原理图说明1、 顶层模块的原理图利用选择译码器输出矢量的每一位分别作为调制解调器的工作使能输

5、入信号,从而实现不同条件下多种调制解调方式间的选择,对于PSK调制与解调以CPS例来输入原理图。- - - .- 10 -2、 利用仿真程序生成2ASK5制器的RTL视图及电路符号j'PL_ASKfjelk y Iiastart匚inst* a3、 利用仿真程序生成2ASK军调器的RTL视图及电路图I PL_ASK2 Il- elk y startixiinstl4、 利用仿真程序生成2FSK调制器的RTL视图及电路图PL_FSK "elk ystartinst2i5、 利用仿真程序生成2FSKW调器的RTL视图及电路图6、利用仿真程序生成2CPSK制器的RTL视图及电路图i

6、 PL CPSKelk startinst37、利用仿真程序生成2CPSK军调器的RTL视图及电路图rPLCPSK?+'elkstartinst48、利用仿真程序生成2DPSK调制器绝对码转换为相对码的RTL视图及电路图利用仿真程序生成 2DPSK解调器相对码转换为绝对码的9、RTL视图及电路图四、VHDL源代码的实现1、选择译码器的程序library ieee;use ieee.std_logic_1164.all;entity selecter isport(sel:in std_logic_vector(2 downto 0);Q:out std_logic_VECTOR(5 d

7、ownto 0) );end selecter;architecture rtl of selecter isbeginprocess(sel)begincase sel iswhen "000" => Q<="000001"when "001" => Q<="000010"when "010" => Q<="000100"when "011" => Q<="001000"when &qu

8、ot;100" => Q<="010000"when "101" => Q<="100000"when others=>null;end case;end process;end rtl;2、2AS颁制器的程序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; -st

9、art :in std_logic; -x :in std_logic; -y :out std_logic); -end PL_ASK;architecture behav of PL_ASK issignal q:integer range 0 to 3;signal f :std_logic;-beginprocess(clk)beginif clk'event and clk='1' thenif start='0' then q<=0;elsif q<=1 then f<='1'q<=q+1;的占空比el

10、sif q=3 then f<='0'q<=0;的频率else f<='0'q<=q+1;end if;end if;end process;y<=x and f;-end behav;3、2ASKS调器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_ASK2 is对基带码进行调制系统时钟开始调制信号基带信号调制信号分频计数器载波信号- 改变q 后面数字

11、的大小,就可以改变载波信号改变q 后面数字的大小,就可以改变载波信号系统时钟port(clk :in std_logic; -start :in std_logic;-x :in std_logic; -y :out std_logic);-end PL_ASK2;architecture behav of PL_ASK2 issignal q:integer range 0 to 11;-signal xx:std_logic;-signal m:integer range 0 to 5;-beginprocess(clk)-beginif clk'event and clk=

12、9;1' then xx<=x; -clkxxif start='0' then q<=0;-ifelsif q=11 then q<=0;else q<=q+1;end if;end if;end process;process(xx,q)-beginif q=11 then m<=0;-melsif q=10 thenif m<=3 then y<='0'-ifelse y<='1'end if;elsif xx'event and xx='1'then m<

13、;=m+1; -end if;end process;同步信号调制信号基带信号计数器寄存 x 信号计 xx 的脉冲数对系统时钟进行q 分频,上升沿时,把x 信号赋给中间信号语句完成q 的循环计数此进程完成ASK解调 计数器清零语句通过对m大小,来判决y输出的电平计 xx 信号的脉冲个数- 20 -end behav;4、2FSK调制器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_FSK isport(clk:in

14、 std_logic; -系统时钟start:in std_logic; -开始调制信号x:in std_logic; -基带信号y:out std_logic -调制信号);end PL_FSK;architecture rtl of PL_FSK is signal q1:integer range 0 to 11; -signal q2:integer range 0 to 3; -signal f1,f2:std_logic; -载波信号f1的分频计数器载波信号f2的分频计数器载波信号f1,f2beginprocess(clk) -此进程通过对系统时钟clk 的分频,得到载波f1beg

15、inif clk'event and clk='1' thenif start='0' then q1<=0;elsif q1<=5 thenf1<='1'q1<=q1+1; -改变 q1 后面的数字可以改变载波f1 的占空比elsif q1=11 thenf1<='0'q1<=0;-改变 q1 后面的数字可以改变载波f1 的频率elsef1<='0'q1<=q1+1;end if;end if;end process;process(clk) begin此进

16、程通过对系统时钟clk 的分频,得到载波f2if clk'event and clk='1' thenif start='0' then q2<=0;elsif q2<=0 thenf2<='1'改变 q2 后面的数字可以改变载波f2 的占空比q2<=q2+1; -elsif q2<=1 thenf2<='0'改变 q2 后面的数字可以改变载波f2 的频率q2<=0;-elsef2<='0'q2<=q2+1;end if;end if;end proce

17、ss;process(clk,x) -beginif clk'event and clk='1' then此进程完成对基带信号的 FSK调制if x='0' theny<=f1;-当输入的基带信号x='0'时,输出的调制信号y为flelsey<=f2;-当输入的基带信号x='1'时,输出的调制信号y为f2end if;end if;end process;end rtl;5、2FSKB调器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logi

18、c_1164.all;use ieee.std_logic_unsigned.all;entity PL_FSK2 isport(clk:in std_logic; -系统时钟start:in std_logic; -同步信号x:in std_logic; -调制信号y:out std_logic -基带信号);end PL_FSK2;architecture behav of PL_FSK2 is signal q:integer range 0 to 11;-signal m:integer range 0 to 5;-signal xx:std_logic; -beginprocess(

19、clk) -beginif clk'event and clk='1' then分频计数器 计数器寄存器对系统时钟进行q 分频xx<=x; -if start='0' thenq<=0; -ifelsif q=11 thenq<=0;else在 clk 信号上升沿时,x 信号对中间信号xx 赋值语句完成Q的循环计数q<=q+1;end if;end if;end process;process(q,xx)-此进程完成FSK解调beginif q=11 thenm<=0;-m计数器清零elsif q=10 thenif m&l

20、t;=3 theny<='0' -ifelsey<='1'end if;elsif xx'event and xx='1' then m<=m+1;end if;end process;end behav;6、2CPS阐制器的程序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; -star

21、t :in std_logic; -x :in std_logic; -y :out std_logic); -end PL_CPSK;architecture behav of PL_CPSK issignal q:std_logic_vector(1 downto 0); -2signal f1,f2:std_logic; -beginprocess(clk)-beginif clk'event and clk='1' then语句通过对 m大小,来判决y输出的电平系统时钟开始调制信号基带信号已调制输出信号位计数器载波信号此进程主要是产生两重载波信号f1 , f2i

22、f start='0' then q<="00"elsif q<="01" 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)-b

23、eginif clk'event and clk='1' then -此进程完成对基带信号x 的调制上升沿触发if q(0)='1' thenif x='1' then y<=f1;else y<=f2;end if;基带信号x 为 1时,输出信号y 为 f1基带信号x 为 0时,输出信号y 为 f2end if;end if;end process;end behav;7、2CPSK军调器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.

24、all;use ieee.std_logic_unsigned.all;entity PL_CPSK2 isport(clk :in std_logic;-系统时钟start :in std_logic;-同步信号x :in std_logic;-调制信号y :out std_logic); -基带信号end PL_CPSK2;architecture behav of PL_CPSK2 issignal q:integer range 0 to 3;begin此进程完成对CPSK调制信号的解调在 q=0 时,根据输入信号x 的电平来进process(clk)beginif clk'e

25、vent and clk='1' thenif start='0' then q<=0;elsif q=0 then q<=q+1;行判决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、2DPS阐制器绝对码转换为相对码的程序library ieee;use ieee.std_logic_arith.all;use

26、ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_DPSK isport(clk :in std_logic; -start :in std_logic;-x :in std_logic; - y :out std_logic);-end PL_DPSK;architecture behav of PL_DPSK is signal q:integer range 0 to 3;signal xx:std_logic;-begin process(clk,x)-系统时钟开始转换信号绝对码输入信号相对码输出信号分频

27、器中间寄存信号此进程完成绝对码到相对码的转换begin if clk'event and clk='1' thenif 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军调器相对码转换为绝对码的程序library

28、ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_DPSK2 isport(clk :in std_logic; -start :in std_logic; -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; -beg

29、inprocess(clk,x)-beginif clk'event and clk='1' thenif start='0' then q<=0;elsif q=0 then q<=1;elsif q=3 then q<=0; y<=xx xor x; xx<=x;系统时钟开始转换信号相对码输入信号绝对码输出信号分频 寄存相对码此进程完成相对码到绝对码的转换输入信号x 与前一输入信号xx进行异或else q<=q+1;end if;end if;end process;end behav;五、仿真结果与说明1、选择译码器的仿真波形如下图所示2、2AS颁制器的仿真波形如下图所示3、2ASKS调器的仿真波形如下图所示start信号为高电平时,进行-y的电平的判决;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论