
现代通信系统要求通信距离远、通信容量大、传输质量好。作为其关键技术之一的调制解调技术一直是人们研究的一个重要方向。本论文主要讨论和仿真了基于CPLD的FSK、4FSK系统单元设计,并对调制解调系统和CPLD设计方法进行了相关的研究。以VHDL作为设计的硬件描述语言,在Altera公司的Maxplus2开发平台上进行了程序设计及波形仿真。对各个模块进行CPLD的建模,然后对各个模块的设计内容进行了层层细化。最终达到模块的具体软硬件实现。
基于中压通信的特点,对中压信道噪声特性进行了总结研究,并在Maxplus2下实现仿真波形;对通信上现有调制解调技术进行比较总结,应用Maxplus2编程实现了FSK调制解调,并在实现单载波FSK调制解调基础上,实现了多载波FSK调制解调。介绍了采用多载波调制技术实现数字信号传输的基本原理及其优点;从理论上分析总结了中压信道及噪声特性,并结合均衡、编码,小波变换等技术,提出了进一步提高多载波调制系统性能的途径。
关键词: 频率键控系统;CPLD;MAXPLUS2;VHDL
目 录
摘 要 1
一、绪 论 1
二、FSK频移键控(Frequency Shift Keying) 2
2.1 FSK频移键控及信号产生原理 2
2.2 FSK信号的调制与解调 4
2.2.1 FSK信号的调制技术 4
2.2.2 FSK信号的解凋技术 5
三、系统的总体方案设计 7
3.1 MAXPLUS2系统简介 8
3.2 系统实现 8
四、系统电路模块的设计及仿真实现 11
4.1基于VHDL硬件描述语言的FSK程序设计 11
4.1.1 FSK调制模块及仿真 11
4.1.2 FSK解调模块及仿真 15
结 论 19
参考文献 21
一、 绪 论
随着科学技术的进步,通信事业得到了飞速发展,信息的传送也由模拟传输转向数字传输,信息越来越多地作为数字脉冲之间的时间或相位的变化而传送出去。这样,对信号进行数字调制显的尤其重要,这种利用模拟调制方法随着现代调制方法的出现而陷入了困境。为了可靠地进行通信,现代调制方法更钟情于频率和相位调制。
计算机应用的日益普及,人们对计算机之间的数据传输要求越来越高,不仅向着高速、宽带、延迟小的方向发展,而且对数据传输方式的灵活性要求也越来越高。无线数据传输在人们的日常生活中正日益扮演越来越重要的角色;同时,无线数据通信的份额占整个数据通信领域的比重也正日益加重特别是在一些特殊的场合,如:博物馆、移动办公室、交通工具中等设施内,架设电缆往往不符合设施规范。无线数据传输设备变得必不可少了。
调制器是通信系统中必不可少的关键设备,其性能的好坏直接关系到整个系统的性能。我们设计的FSK调制系统具有抗干扰、抗噪声、抗衰减性能较强、技术复杂程度低、成本低等诸多优点,因而广泛应用与实际电路中。在中低速数据传输通信系统中得到了较为广泛的应用。此外,许多集成芯片里也用到了FSK调制技术。数字频率调制是数据通中常见的一种调制方式。频移键控(FSK—Frequency Shift Keying)方法简单,用不同频率的载波来传送数字信号,并用数字基带信号控制载波信号的频率,易于实现,并且解调不须恢复本地载波,可以异步传输,抗噪声和抗衰落性能也较强,传输距离远、误码率低等优点。因此,FSK调制技术在通信行业,特别是在衰落信道中传输数据时得到了广泛地应用,并且主要适用于用于低、中速数据传输。
一个系统的通信质量,很大程度上依赖于所采用的调制方式。但传统用硬件实现FSK的方法,特别是相干解调需要提取载波。设备相对比较复杂、成本较高。文中基于FPGA芯片。采用VHDL语言提出了一种FSK调制解调器的实现方法因此,对调制方式的研究,将直接决定着通信系统质量的好坏。现场可编程门阵列(CPLD)既具有很高的处理速度.又具有一定的灵活性。本课题就采用CPLD实现数字调制解调技术加以论述。
二、FSK频移键控(Frequency Shift Keying)
2.1 FSK频移键控及信号产生原理
所谓FSK就是用数字信号去调制载波频率,是数字信号传输中用的最早的一种调制方式。此方式实现起来比较容易,抗噪声和抗衰减性能好,稳定可靠,是中低速数据传输最佳选择。频移就是把振幅、相位作为常量,而把频率作为变量,通过频率的变化来实现信号的识别,原理如图2-1所示。在FSK中传送的信号只有0和1两个。输出后的2FSK波形如图2-2所示。
图2-1 FSK信号调制原理图
图2-2 调制后波形图
FSK信号的产生原理
用二进制数字信号m(t)进行调频,是使载波υC=Vccos(ω+φ)中的ω,当符号为1时具有协l频率的信息,而当符号为0时具有ω2的信息,此调制称移频调制。产生波形如图2-3所示。
图2-3 FSK调制原理波形图
2.2 FSK信号的调制与解调
FSK是利用载波的频率变化来传递数字信息的一种非线性调制方法。在2FSK(二进制频移键控)系统中,使用两个不同频率的载波分别代表数字信号“0”和“1”,2FSK信号的解调和2FSK的调制是一个相反的过程。2FSK信号的躲调是从已调的载波信号中,恢复为调制前的基带信号“0”和“1”。
2.2.1 FSK信号的调制技术
(1)直接调频法
直接调频法是用数字基带信号直接控制载频振荡器的振荡频率。直接调频法实现电路有许多。一般采用的控制方法是:当基带信号为正时(相当于‘1’码),改变振荡器谐振回路的参数·(电容或电感数值),使振荡器的振荡频率提高(设为f1);当基带信号为负时(相当于‘0’码),改变振荡器谐振回路的参数,使振荡器的频率降低(设为f2)。从而实现了调频,这种方法产生的调频信号是相位连续的。虽然实现方法简单。但频率稳定度不高,同时频率转换速度不能太快。
(2)频率键控法
频率键控法也称频率选择法.图2-4是它实现的原理框图。
图2-4 频带键控法的原理框图
频率键控法产生的FSK信号频率稳定度可以做得很高并且没有过渡频率,它的转换速度快,波形好。频率键控法在转换开关发生转换的瞬间.两个高频振荡的输出电压通常不可能相等于是U。Ufsk(t)信号在基带信号变换时电压会发生跳变,这种现象也称为相位不连续,这是频率键控特有的情况。
2.2.2 FSK信号的解凋技术
图2-5 VHDL描述FSK信号解调原理方框图
(1)同步解调法
同步解调中,FSK信号解调原理方框如图2-6所示。
图2-6 FSK信号同步解调原理方框图
从图2-6可见,FSK信号的同步解调分成上、下两个支路,输入的FsK信号经过f1和f2两个带通滤波器后变成了上、下两路ASK信号.之后其解调原理与ASK类似,但判决需对上、下两支路比较来进行。
当输入的FSK信号振荡频率为fl时.上支路经带通后由正弦信号Acos2πflt存在。与ASK系统接收到“l”码时的情况相似,经过低通滤波器,xl=A。而下支路带通滤波器输出为0.与ASK系统接收到“0”码时相似,故x2=0,显然xl—x2=A一0>0.
按判决准则判输入为fl;反之,当输人为f2时.xl=0,x2=A,Xl-X2=0-A<0,按判决准则应判输入为f2。因此可以判决出FSK信号。
(2)包络解调法
图2-7 FSK信号包络解调方框图
FSK信号包络解调方框图如图2-7所示。从图2-7可见,FSK信号包络解凋相当于两路ASK信号包络解调。用两个窄带的分路滤波器分别滤出频率为fl及f2的高频脉冲,经包络检波后分别取出它们的包络。把两路输出同时送到抽样判决器进行比较.从而判决输m基带数字信号。
有时称这种比较判别器的判决门限为零点平。当FSK信号为fl时.上支路相当于ASK系统接收“1”码的情况,其输出xl为正弦波加窄带高斯噪声的包络,它服从莱斯分布。而下支路相当于ASK系统接收“0”码的情况,其输出x2为窄带高斯噪声的包络,它服从瑞利分布。如果FSK信号为f2。上、下支路的情况正好相反,此时上支路输出的瞬时值服从瑞利分布.下支路输出的瞬时值服从莱斯分布。由以上分析可知.无论输出的FSK信号是f1或f2,两路输出总是一路为莱斯分布,另一路为瑞利分布。
(3)过零检测法
过零检测法是利用信号波形在单位时间内与零电平轴交叉的次数来测定信号频率。输入u隙信号经限幅放大后成为矩形脉冲波,再经微分电路得到双向宽脉冲,然后整流的单向宽脉冲,每个宽脉冲表示信号的一个过零点。宽脉冲的重复频率就是信号频率的二倍。将宽脉冲去触发一单稳态电路.产生一定宽度的矩形脉冲序列,该序列的平均分量与脉冲频率成正比,即与输入信号频率成正比。所以经过低通滤波器输出的平均分量的变化反映了输入信号频率的变化,这样就把码元“1”与“0”在幅度上区分开来,恢复出数字基带信号,其结构图如图2-8所示。
图2-8 过零检测法方框图
三、系统的总体方案设计
3.1 MAXPLUS2系统简介
Altera公司的姒XPLUS2开发系统是一个完全集成化、易学易用的可编程逻辑设计系统。它可以在多种平台上运行。它拥有开放的界面,可与其他工业标准的设计输入、综合与校验工具相连接。其设计输入、处理和校验功能集成在统一的开发环境下n1。MAXPLUS2采用自顶向下的设计方法,设计流程为设计输入一项目编译一项目校验一器件编程。
1. 设计输入
MAXPLUS2软件的设计输入方法很多,主要有以下三种:原理图输入、文本输入和波形输入。文本设计输入方法主要用来实现以AHDL语言形式或VHDL语言形式书写的文件。MAXPLUS2波形编辑器用于建立和编辑波形文件。Compiler先进的波形综合算法根据用户定义的输入及输出波形自动生成逻辑关系。Compiler自动为状态机分配状态位和状态变量。
2. 项目编译
MAXPLUS2编译器可以检查项目中的错误并进行逻辑综合,将项目最终设计结果加载到Altera器件中去,并为模拟和编程产生输出文件。
3. 项目校验
设计校验过程包括设计仿真和定时分析,作用是测试逻辑操作和设计的内部定时,MAXPLUS2仿真器可以对编译期间生成的二进制仿真网表进行功能、定时的仿真。
4.器件编程
器件的编程是指MAXPLUS2 Programmer使用Compiler生成的编程文件对Altera器件编程。编程过程可通过配套的编程适配器连接微机到应用板的JAG接口上来实现。
3.2 系统实现
由过零点检测原理可以知道,FSK信号的过零点次数反映了原始信号的规律,所以只要某种方法能够分析出FSK信号的过零点次数,然后根据调制时原始信号和调制频率的关系,就可以解调出原始信号。信号的解调框图如图3-1所示。因为FPGA只能产生数字信号,所以假设图3-1中的调制信号FSK已经是经过数模转换的数字FSK信号。
图3-1 调制器系统
1. 时钟计数器C
由于要计算调制信号一个周期内的过零点次数,所以用时钟计数器来计算调制信号的周期,如果时钟频率与FSK调制信号频率fclk:f=1:11,那么表示每11个CLK时钟周期发送一个FSK调制信号,即当q从0递增到10时,一个调制信号传输结束。
2 计数器Q
根据过零检测法原理,通过检测一个信号传输周期内的过零点次数来判断基带信号。由于上升沿的个数就相当于FSK信号过零点的个数,那么计数器的主要功能就是在调制信号的一个周期内,对信号X的上升沿进行计数
3. 判决器D
判决器的作用圭要是在调制信号的一个周期内,对计数器m的值进行判决。判决门限值可以根据调制信号和基带信号的频率的比值决定。如f1:fclk=5:1,f2:fclk=2:1则判决门限值工可以选择.x=5也可以选择x=2。这样通过判决器就可以恢复出原始的基带信号。判决器的门限也可以选3或者4,选3或者4的好处是使得解调器有一定的容错能力,能更好的解调出基带信号。
4. 源程序代码(主体部分)
architecture fun of pl_fsk2 is
signal q:integer range 0 to 10; 一分频计数器
signal x x.std—logic; 一寄存器
signal m:integer range 0 tO 5; 一计数器
begin
process(clk) 一对系统时钟进行q分频
begin
if clk’event and clk=’1’thenl xx<=fsk;
一在clk信上升沿时,fsk信号对中间信号赋值
if start=’0’then q<=O; --if语句完成Q的循环计数
else if q=lO then q<=O;
else q<=q+l;
end if;
end if;
end process;
process(xx,q) 一此进程完成FSK解调
begin
if q=lO then m<=0: --m计数器清零
else if q=9 then
if m<=3then y<=’0’; 一if语句通过对m大小,来判决y输出的电平
else y<=’l’;
end if;
else if xx’event and xx=’l’
then m end process; end fun; 四、系统电路模块的设计及仿真实现 4.1基于VHDL硬件描述语言的FSK程序设计 4.1.1 FSK调制模块及仿真 library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_11.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 behav of PL_FSK is signal q1:integer range 0 to 11; --载波信号f1的分频计数器 signal q2:integer range 0 to 3; --载波信号f2的分频计数器 signal f1,f2:std_logic; --载波信号f1,f2 begin process(clk) --此进程通过对系统时钟clk的分频,得到载波f1 begin if clk'event 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 clk'event 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 clk'event 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 behav; 其波形仿真图如图4-1所示。其中载波f1、也分别是通过对时钟clk信号6分频和2分频得到的;基带码长为载波f1的2个周期,为载波f2的6个周期;输出的调制信号y在时间上滞后于载波信号一个elk周期.滞后于系统时钟2个elk周期。 (a)FSK调制VHDL程序仿真全图 (b)FSK调制VHDL程序仿真局部放大图 图4-1 FSK调制VHDL程序仿真图 注:a. 载波f1、f2分别是通过对clk的12分频和2分频得到的。 b.基带码长为载波f1的2个周期,为载波f2的6个周期。 c.输出的调制信号y在时间上滞后于载波信号一个clk,滞后于系统时钟2个clk。 4.1.2 FSK解调模块及仿真 library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_11.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 is signal q:integer range 0 to 11; --分频计数器 signal xx:std_logic; --寄存器 signal m:integer range 0 to 5; --计数器 begin process(clk) --对系统时钟进行q分频 begin if clk'event 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) --此进程完成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 xx'event and xx='1'then m<=m+1; --计xx信号的脉冲个数 end if; end process; end behav; 其波形仿真图如图4-2所示。其中输出信号Y滞后输入信号lO个时钟周期;在q=ll时,m清零;q=10时,根据m的大小,进行对输出基带信号Y的电平的判决;在q为其它值时,计数器m计下xx(寄存x信号)的脉冲数。 (a)FSK解调VHDL程序仿真全图 (b)FSK解调VHDL程序仿真局部放大图 图4-2 FSK解调VHDL程序仿真图及注释 VHDL建模符号 结 论 文中通过对FSK调制信号原理的研究,根据过零检测法设计了一种FSK数字解调器,实现了对FSK数字调制信号的解调,达到了设计的目的。Altera公司的MAXPLUS2应用软件具有较强大的开放性和综合性,它可以利用其他各种EDA资源以及先进的设计方法,使其功能更加完善和强大。它韵可编程特性带来了电路设计的灵活性,缩短了产品的上市时间。 在忙忙碌碌中和不断改善中,时间一晃而过。刚开始,我们头绪不是很清楚,不知道从哪里入手,但是通过对资料的查阅和同学间的讨论,有了思绪。跑图书馆查资料、确定了基本设计方案、对所有专业知识进行查找、调试、上机仿真等。经历了一次次的困惑,却积累了一定的知识。 在整个课程设计中的过程中遇到的问题主要有以下三点: 第一,基础知识的不牢固,主要表现在一些常用的HDL语言不够熟悉,不能正确的一次性编写成功,对书本上的内容理解不够透彻; 第二,对一些常用的应用软件缺少应用,体现在华电路图和系统仿真的时候,对这些软件操作的不熟练,浪费了很多时间。 第三,相关知识掌握不够全面,缺少系统设计和仿真的经验。 总之,可以这样说毕业设计是对大学所学知识的一次综合运用和检阅,同时对自学能力提出很高的要求,所以平时的学习离开思考,就是严重的错误,我们学习不应该有偏科现象,各方面的知识都应该要接触,这样做才能为毕业设计打下基础。同时,学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整。偶而还会遇到错误的资料现象,这就要求我们应更加注重实践环节。 参考文献 [l]樊昌信,张甫翊,徐炳祥.通信原理[M].第5版.北京:国防工业出版杜.2001. [2]冯玉岷,通信系统原理[M].北京:清华大学出版社.2003:34~43 [3]侯伯亨,VHDL硬件描述语言与数字电路设计[M].西安:西安电子科大出版社.2003: 42~ [4]基于CPLD的FSK信号发生器的设计[J].源河技术学院学报,2004:56~70 [5]刘美兰.张开生.李莉.基于低压端电力网的远程秒表监控系统[J]. 西北轻工业学院学报.1999(3):9l~95. [6]柳永智,刘晓川.电力系统运动[M].北京:中国电力出版社.2002:62~78 [7]田日才,刘文贵.低速FSK制式的Modem[J].黑龙江通信技术.1995(2):4~16. [8]盛寿麟.电力系统远程监控原理[M].北京:中国电力出版社.1998:48~54 [9]豆耀华.鉴频和锁频电路的研制[J].西北地震学报, 1997(1):85~86. [10]吴仲光.FSK调制解调器的单片机实现[J].四川大学学报. 1995(6):2~3. [11]王志平.通信原理[M].国防工业出版社.2000:65~73 [12]张传生.数字通信原理[M].西安交通大学出版社.2000:124~151 [13]李东生.Maxplus2系统设计及仿真[J].电子工业出版社.2001:95~129 [14]宋成文.通信原理教程[M].电子工业出版社.2000:52~59 [15]龚世辉. Maxplus2的编程与仿真[M]. 成都出版社.2002:96~105
