课程设计(论文)-基于VHDL的多功能调制解调器的设计.doc_第1页
课程设计(论文)-基于VHDL的多功能调制解调器的设计.doc_第2页
课程设计(论文)-基于VHDL的多功能调制解调器的设计.doc_第3页
课程设计(论文)-基于VHDL的多功能调制解调器的设计.doc_第4页
课程设计(论文)-基于VHDL的多功能调制解调器的设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

一、 设计功能与要求调制解调器被人们称为“猫”,它是在发送端通过调制将数字信号转换为模拟信号,而在接收端通过解调再将模拟信号转换为数字信号的一种装置。这篇报告将通过这学期所学习的vhdl的相关知识设计一个多功能的调制解调器,下面是设计要求:1、 实现二进制振幅键控(2ask)的调制与解调;2、 实现二进制频移键控(2fsk)的调制与解调;3、 实现二进制相位键控(2psk)的调制与解调。二、 设计思路1、2ask调制与解调(1)、2ask调制器原理图如图1、图2所示,输入随机信号序列,经过基带信号形成器,产生波形序列,然后通过惩罚器进行频谱搬移,并使用带通滤波器来滤除高频谐波和低频干扰,最终输出振幅键控信号。(2)、2ask解调器以包络解调为例来说明,原理图如图3所示,其中分频器对时钟信号进行分频得到与发射端数字载波相同的数字载波信号;寄存器在时钟上升沿到来时把数字ask信号存入寄存器;计数器利用分频输出的载波信号作为计数器的时钟信号,在其上升沿到来时,对寄存器中的ask载波个数进行计数,当计数值大于3时,输出位1,否则为0;判决器则以数字载波为判决时钟,对计数器输出信号进行抽样判决,并输出解调后的基带信号。2、2fsk调制与解调(1)、2fsk调制器的原理图如图4所示,信号通过2个独立的分频器产生不同频率的载波信号,然后通过选通开关选择不同频率的高频信号,从而实现2fsk调制。(2)、2fsk与2ask解调相似,也是由分频器、寄存器、计数器和判决器构成,其结构构图如图5所示: 3、2psk调制与解调 相位键控分为绝对调相(cpsk)与相对调相(dpsk)两种。cpsk是利用载波的不同相位去直接传送数字信息的一种方式;dpsk则是利用载波相位的相对变化来传送数字信号,即利用前后码之间载波相位的变化表示数字基带信号。(1)cpsk调制与解调 cpsk调制器结构图如图6所示。计数器对外部时钟信号进行分频与计数,并输出两路相位不同的数字载波信号;2选1开关在基带信号的控制下,对两路载波信号进行选择,输出信号即为cpsk信号。 cpsk解调器的结构图如图7所示,计数器q输出与发射端同步的0相数字载波;将计数器输出的0相载波与数字cpsk信号中的载波进行与运算,当两比较信号在判决时刻都为1时,输出为1,否则输出为0,从而实现解调。(2)、dpsk调制与解调 dpsk调制器的结构图如图8所示,cpsk调制器,计数器,异或门和寄存器共同完成绝对码到相对码的变换功能。 dpsk解调器关键则是实现相对码到绝对码的转换,其结构图如图9所示,dpsk解调采用cpsk解调器与相对码到绝对码转换电路即可实现,其中,相对码到绝对码的转换是以在以计数器输出信号为时钟控制下完成的。三、 原理图说明1、 顶层模块的原理图 利用选择译码器输出矢量的每一位分别作为调制解调器的工作使能输入信号,从而实现不同条件下多种调制解调方式间的选择,对于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源代码的实现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、2ask调制器的程序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 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 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; -系统时钟 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; -寄存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计数器清零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; -系统时钟 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 clkevent 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=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; 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_fsk2 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; process(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_unsigned.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 clkevent 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时,输出信号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;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 behav;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 issignal 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解调器相对码转换为绝对码的程序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:integer 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、选择译码器的仿真波形如下图所示对应于不同的输

温馨提示

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

评论

0/150

提交评论