ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:380.35KB ,
资源ID:4447815      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4447815.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于VHDL的多功能调制解调器的设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于VHDL的多功能调制解调器的设计.docx

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

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

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

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

5、使能输入信号,从而实现不同条件下多种调制解调方式间的选择,对于PSK调制与解调以CPSK为例来输入原理图。2、利用仿真程序生成2ASK调制器的RTL视图及电路符号3、利用仿真程序生成2ASK解调器的RTL视图及电路图4、利用仿真程序生成2FSK调制器的RTL视图及电路图5、利用仿真程序生成2FSK解调器的RTL视图及电路图6、利用仿真程序生成2CPSK调制器的RTL视图及电路图7、利用仿真程序生成2CPSK解调器的RTL视图及电路图8、利用仿真程序生成2DPSK调制器绝对码转换为相对码的RTL视图及电路图9、利用仿真程序生成2DPSK解调器相对码转换为绝对码的RTL视图及电路图四、VHDL源代

6、码的实现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 Q Q Q Q Qnull; end case; end process;end rtl; 2、2AS

7、K调制器的程序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; -系统时钟 start :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

8、 3; -分频计数器signal f :std_logic; -载波信号beginprocess(clk)beginif clkevent and clk=1 then if start=0 then q=0; elsif q=1 then f=1;q=q+1; -改变q后面数字的大小,就可以改变载波信号的占空比 elsif q=3 then f=0;q=0; -改变q后面数字的大小,就可以改变载波信号的频率 else f=0;q=q+1; end if;end if;end process;y=x and f; -对基带码进行调制end behav;3、2ASK解调器的程序library i

9、eee;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; -系统时钟 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

10、 xx:std_logic; -寄存x信号signal m:integer range 0 to 5; -计xx的脉冲数beginprocess(clk) -对系统时钟进行q分频,beginif clkevent and clk=1 then xx=x; -clk上升沿时,把x信号赋给中间信号xx if start=0 then q=0; -if语句完成q的循环计数 elsif q=11 then q=0; else q=q+1; end if;end if;end process;process(xx,q) -此进程完成ASK解调begin if q=11 then m=0; -m计数器清零

11、elsif q=10 then if m=3 then y=0; -if语句通过对m大小,来判决y输出的电平 else y=1; end if;elsif xxevent and xx=1then m=m+1; -计xx信号的脉冲个数end if;end process;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 is port( clk:in std_logic;

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

13、lkevent and clk=1 then if start=0 then q1=0; elsif q1=5 then f1=1; q1=q1+1; -改变q1后面的数字可以改变载波f1的占空比 elsif q1=11 then f1=0; q1=0; -改变q1后面的数字可以改变载波f1的频率 else f1=0; q1=q1+1; end if; end if; end process; process(clk) -此进程通过对系统时钟clk的分频,得到载波f2 begin if clkevent and clk=1 then if start=0 then q2=0; elsif q2

14、=0 then f2=1; q2=q2+1; -改变q2后面的数字可以改变载波f2的占空比 elsif q2=1 then f2=0; q2=0; -改变q2后面的数字可以改变载波f2的频率 else f2=0; q2=q2+1; end if; end if; end process; process(clk,x) -此进程完成对基带信号的FSK调制 begin if clkevent and clk=1 then if x=0 then y=f1; -当输入的基带信号x=0时,输出的调制信号y为f1 else y=f2; -当输入的基带信号x=1时,输出的调制信号y为f2 end if;

15、end if; end process;end rtl;5、2FSK解调器的程序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; -系统时钟 start:in std_logic; -同步信号 x:in std_logic; -调制信号 y:out std_logic -基带信号 );end PL_FSK2;architecture behav of PL_F

16、SK2 issignal q:integer range 0 to 11; -分频计数器signal m:integer range 0 to 5; -计数器signal xx:std_logic; -寄存器begin process(clk) -对系统时钟进行q分频 begin if clkevent and clk=1 then xx=x; -在clk信号上升沿时,x信号对中间信号xx赋值 if start=0 then q=0; -if语句完成Q的循环计数 elsif q=11 then q=0; else q=q+1; end if; end if; end process; proc

17、ess(q,xx) -此进程完成FSK解调 begin if q=11 then m=0; -m计数器清零 elsif q=10 then if m=3 then y=0; -if语句通过对m大小,来判决y输出的电平 else y=1; end if; elsif xxevent and xx=1 then m=m+1; end if; end process;end behav;6、2CPSK调制器的程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsign

18、ed.all;entity PL_CPSK isport(clk :in std_logic; -系统时钟 start :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); -2位计数器signal f1,f2:std_logic; -载波信号beginprocess(clk) -此进程主要是产生两重载波信号f1,f2beginif clk

19、event and clk=1 then if 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) -此进程完成对基带信号x的调制beginif clkevent and clk=1 then -上升沿触发 if q(0)=1 then if x=1 then y=f1; -基带信号x为1时,输出信号y为f1 else y=f2; -基带信号x为0时,输出

20、信号y为f2 end if; end if;end if;end process;end behav;7、2CPSK解调器的程序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 :in std_logic; -系统时钟 start :in std_logic; -同步信号 x :in std_logic; -调制信号 y :out std_logic); -基带信号end PL_CPSK2

21、;architecture behav of PL_CPSK2 issignal q:integer range 0 to 3; beginprocess(clk) -此进程完成对CPSK调制信号的解调beginif clkevent and clk=1 then if start=0 then q=0; elsif q=0 then q=q+1; -在q=0时,根据输入信号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 beha

22、v;8、2DPSK调制器绝对码转换为相对码的程序library ieee;use ieee.std_logic_arith.all;use 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 iss

23、ignal q:integer range 0 to 3; -分频器signal xx:std_logic; -中间寄存信号beginprocess(clk,x) -此进程完成绝对码到相对码的转换beginif clkevent 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解调器相对码

24、转换为绝对码的程序library 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:inte

25、ger range 0 to 3; -分频signal xx:std_logic; -寄存相对码beginprocess(clk,x) -此进程完成相对码到绝对码的转换beginif clkevent and clk=1 then if 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、选择译码器的仿真波形如下图所示对应于不同的输入选择信

26、号,输出信号的特定输出高电平,其余为低电平。2、2ASK调制器的仿真波形如下图所示当start信号为高电平时,进行ASK调制;载波信号f通过系统时钟进行4分频获得。3、2ASK解调器的仿真波形如下图所示当start信号为高电平时,进行ASK解调;在q=11时,m清零;根据m的大小,进行对输出基带信号y的电平的判决;在q为其他时,m计xx的脉冲数;输出的基带信号y滞后输入的调制信号x十个时钟周期。4、2FSK调制器的仿真波形如下图所示当start信号为高电平时,进行FSK调制;载波f1,f2分别是通过对clk信号进行12分频和2分频得到的;基带码长是载波信号f1的两个周期,载波信号f2的六个周期

27、;输出的调制信号则在时间上滞后于载波信号一个时钟周期,滞后于输入时钟脉冲两个周期。5、2FSK解调器的仿真波形如下图所示当start信号为高电平时,进行FSK解调;当q=11时,m清零;当q=10时,根据m的大小,进行对输出基带信号y的电平判决;当q为其他值是,计数器m记下xx的脉冲数;输出信号y滞后于输入信号x十个时钟周期。6、2CPSK调制器的仿真波形如下图所示当start信号为高电平时,进行CPSK调制;载波信号f1、f2是通过输入时钟脉冲clk 分频得到的,且滞后输入时钟一个时钟周期;调制输出信号y滞后载波一个时钟周期,滞后输入时钟两个时钟周期。7、2CPSK解调器的仿真波形如下图所示当start信号为高电平时,进行CPSK解调;当q=0时,根据x的电平来进行判决;输出信号y滞后输入信号x一个时钟周期。8、2DPSK调制器绝对码转换为相对码的仿真波形如下图所示当q=0时,输出信号y是输入信号x与中间寄存信号xx异或,输出信号y滞后于输入信号x一个时钟周期。9、2DPSK解调器相对码转换为绝对码的仿真波形如下图所示当q=3时,输出信号y是信号x与xx的异或;输出信号y滞后于输入信号x 一个基带码长即4个输入时钟周期。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1