你现在位置:首页>技术论文>数据通讯>正文
基于FPGA的分频法FSK调制器的设计与实现
日期:2008-3-31 0:20:27 来源:《PLC&FA》  
点击: 作者:未知
点击【】放大字体.

1  引言

WWW_P※LCJS_CO※M-PLC-技-.术_网

在数字通信系统中,原始的模拟信号经量化编码转变成二进制码流(即数字基带信号)后,必须经过调制后才适合于传输。fsk(移频键控)即为一种常用的数字调制方式,它是利用载波频率的变化来传递数字信息,所以也可以称为数字调频。

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

若用2种载波频率分别代表二进制码流所含的两种基本码元,此时的数字调频即为2fsk调制。若2个载频由不同的独立振荡器提供,他们之间相位互不相关,就称为相位离散的数字调频信号,若两个频率由同一振荡信号源提供,只是对其中的载频进行分频,这样产生的两个载频就是相位连续的数字调频信号。

W1WW_P4LCJS_COM-PLC-技.术_网

2  分频法实现fsk调制器的方案

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

键控法也常常利用数字基带信号去控制可变分频器的分频比来改变输出载波频率,从而实现fsk调制。fsk调制方框图如图1所示。

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

W1WW_P4LCJS_COM-PLC-技.术_网

WWW_P※LCJS_CO※M-PLC-技-.术_网

1  fsk调制方框图

P.L.C.技.术.网——可编程控制器技术门户

fsk调制的核心部分包括分频器、二选一选通开关等。图1中的两个分频器分别产生两路数字载波信号;二选一选通开关的作用是:以基带信号作为控制信号,当基带信号为“0”,选通载波f1;当基带信号为“1”时,选通载波f2。从选通开关输出的信号就是数字fsk信号。图中没有包含模拟电路部分,调制信号为数字信号。

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

采用可变分频器产生的fsk信号相位通常是连续的,因此在基带信息变化时,fsk信号会出现过渡频率。为减小过渡时间,可变分频器应工作于较高的频率,而在可变分频器后再插入固定分频器,使输出频率满足fsk信号要求的频率。

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

 

WWW_PL※CJS_COM-PLC-技.术_网

3  用fpga实现fsk信号的调制及仿真

——可——编——程——控-制-器-技——术——门——户

3.1 vhdl建模符号

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

fsk调制电路的vhdl建模符号如图2所示。

plcjs.技.术_网

WWW_PLC※JS_COM-PmLC-技.术_网

WWW_P※LCJS_COM-PLC-)技.术_网

 图2  fsk调制电路的vhdl建模符号

WW.W_PLCJS_COM-PLC-技.术_网

3.2 vhdl程序设计

WWW_P※LCJS_COM-PLC-)技.术_网

分频法fsk调制器的源代码如下:

WW.W_PLC※JS_C,OM-PL,C-技.术_网

library ieee;

WWW_PL※CJS_COM-PLC-技.术_网

use ieee.std_logic_arith.all;

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

use ieee.std_logic_1164.all;

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

use ieee.std_logic_unsigned.all;

WWW_P※LCJS_COM-PLC-)技.术_网

entity fsk0 is

W1WW_P4LCJS_COM-PLC-技.术_网

port(clk     :in std_logic;

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

x   :in std_logic;

WWW_P※LCJS_CO※M-PLC-技-.术_网

     out1    :buffer std_logic;

WWW.PLCJS.COM——可编程控制器技术门户

     out2    :buffer std_logic;

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

y   :out std_logic);

plcjs.技.术_网

end fsk0;

WW.W_PLCJS_COM-PLC-技.术_网

architecture behav of fsk0 is

——可——编——程——控-制-器-技——术——门——户

signal division1,division2,division3,division4 :std_logic:=0;

WWW_PL※CJS_COM-PLC-技.术_网

signal temp1,temp2,temp3,temp4:integer range 0 to 20;

WWcW_PLCJS_COM-PLC-技.术_网

begin

WWW_PLCJS_COM-PLC-技.术_网

a1:process(clk)

——可——编——程——控-制-器-技——术——门——户

begin

——可——编——程——控-制-器-技——术——门——户

if clkevent and clk=1 then

WWW_PLC※JS_COM-PmLC-技.术_网

temp1 <=temp1+1;

WWW_PLCJS@_COM%-PLC-技.术_网

if temp1=7 then division1<=1;

WWcW_PLCJS_COM-PLC-技.术_网

elsif temp1=14 then division1<=0;

P.L.C.技.术.网——可编程控制器技术门户

temp1<=0;

WW.W_PLC※JS_C,OM-PL,C-技.术_网

end if;

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

end if;

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

end process a1;

WWW_PL※CJS_COM-PLC-技.术_网

a2:process(clk)

WW.W_PLC※JS_C,OM-PL,C-技.术_网

begin

plcjs.技.术_网

if clkevent and clk=0 then

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

temp2<=temp2+1;

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

if temp2=7 then division2<=1;

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

elsif temp2=14 then division2<=0;

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

temp2<=0;

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  end if;

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

end if;

WWW_PLCJS@_COM%-PLC-技.术_网

end process a2;

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

a3:process(division1,division2)

WW.W_PLCJS_COM-PLC-技.术_网

begin

W1WW_P4LCJS_COM-PLC-技.术_网

   out1<=division2 or division1;

W1WW_P4LCJS_COM-PLC-技.术_网

   end process a3;

WWW_P※LCJS_CO※M-PLC-技-.术_网

a4:process(clk)

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

begin

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

if clkevent and clk=1 then temp3 <=temp3+1;

WWW_P※LCJS_CO※M-PLC-技-.术_网

     if temp3=8 then division3<=1;

WW.W_PLCJS_COM-PLC-技.术_网

elsif temp3=16 then division3<=0;

WWW_PLCJS@_COM%-PLC-技.术_网

temp3<=0;

WWW_PL※CJS_COM-PLC-技.术_网

end if;

plcjs.技.术_网

end if;

WWW_PLCJS_COM-PLC-技.术_网

end process a4;

WWW_P※LCJS_CO※M-PLC-技-.术_网

a5:process(clk)

WWW.PLCJS.COM——可编程控制器技术门户

begin

WWW_PLCJS_COM-PLC-技.术_网

if clkevent and clk=0 then temp4<=temp4+1;

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

if temp4=8 then division4<=1;

plcjs.技.术_网

elsif temp4=16 then division4<=0;

WW.W_PLC※JS_C,OM-PL,C-技.术_网

temp4<=0;

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

end if;

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

end if;

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

end process a5;

WWcW_PLCJS_COM-PLC-技.术_网

a6:process(division3,division4)

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

begin

WWW_PL※CJS_COM-PLC-技.术_网

out2<=division3 or division4;

WWW_PL※CJS_COM-PLC-技.术_网

end process a6;

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

a7:process(x,out1,out2)

WWW_PLCJS@_COM%-PLC-技.术_网

begin

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

if x=1 then y<=out1;

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

else y<=out2;

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

end if;

WWW.PLCJS.COM——可编程控制器技术门户

end process a7;

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

end behav;

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

3.3 仿真结果

WWW_P※LCJS_CO※M-PLC-技-.术_网

   程序仿真图如图3所示。

W1WW_P4LCJS_COM-PLC-技.术_网

WWcW_PLCJS_COM-PLC-技.术_网

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

3 程序仿真图

WW.W_PLC※JS_C,OM-PL,C-技.术_网

3.4 引脚锁定

WWW_P※LCJS_CO※M-PLC-技-.术_网

前面所做的只是逻辑功能的软件模拟仿真,即使模拟仿真、时序分析都达到设计要求,这只是理论上的结果,实际硬件的执行与软件模拟不一定完全一样,最后必须做硬件的验证。在做硬件验证时,各个输入、输出信号必须锁定到具体芯片的脚上,才能将外部信号加进来,将输出信号接出去,根据外部电路设计,将设计中各个输入、输出信号锁定到芯片的管脚上。选择菜单[assign]下的[pin/location/chip...]功能,出现如图4所示的信号与芯片管脚锁定的对话框,在“node name”框内填入需要输入、输出的信号名,在“pin type”框内显示出该信号的输入、输出类型,在“pin”复选框内选择芯片的管脚,按右下角的“add”按钮将信号与管脚的锁定关系加入“existing pin / location / chip assignments”框内,当所有的信号都加入后,按“ok”确认退出。注意:如果你的设计中有时钟信号、复位信号、输出允许信号等可以全局使用的信号,编译器会自动将这些信号分配到芯片的相应全局信号管脚,如果你锁定的管脚不是全局信号脚,在编译综合时,系统会提示有错,解决的方法是,选择[assign]菜单下的[global project synthesis] 功能,在弹出的对话框的“automatic global”栏内,去掉所使用全局信号前的选中勾,使其不会被自动分配。按“ok”钮确认退出。

本新闻共2页,当前在第11 2  
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行