AM2FSK调制DSPBuilder 实现论文.docx
- 文档编号:11655318
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:57
- 大小:1.21MB
AM2FSK调制DSPBuilder 实现论文.docx
《AM2FSK调制DSPBuilder 实现论文.docx》由会员分享,可在线阅读,更多相关《AM2FSK调制DSPBuilder 实现论文.docx(57页珍藏版)》请在冰豆网上搜索。
AM2FSK调制DSPBuilder实现论文
编号:
EDA技术与VerilogHDL
设计报告
题目:
基于DSPBuilder的AM、2ASK
和2FSK信号调制器的实现
院(系):
电子工程与自动化学院
专业:
测试计量技术与仪器
学生姓名:
李娇
学号:
112081108
同作者:
潘鑫龙
指导教师:
潘明
职称:
副教授
题目类型:
理论研究实验研究工程设计工程技术研究软件开发
2011年11月30日
摘要
设计使用DSPBuilder实现了基于现场可编程门阵列(Field-ProgrammableGatesArray,FPGA)的幅度调制(AM)、二进制幅度键控(2ASK)和二进制频率键控(2FSK)调制器。
首先在Simulink中采用DSPBuilder的模块建立直接数字频率合成器(DirectDigitalSynthesizer,DDS)子系统模型,根据它分别建立AM、2ASK和2FSK调制系统模型;然后使用SignalCompiler工具生成与其对应的VHDL文件;最后使用QuartusⅡ完成功能仿真和下载。
关键词:
DSPBuilder;FPGA;调制器;仿真
Abstract
ThedesignrealizestheAmplitudeModulation(AM),theBinaryAmplitudeShiftKeying(2ASK)andtheBinaryFrequencyShiftKeying(2FSK)basedonFPGA(Field-ProgrammableGatesArray)byusingDSPBuilder.Atfirst,tobuildDDS(DirectDigitalSynthesize)subsystemmodulebyusingDSPBuilderinSimulink.Andthen,tobuildmodulationsystemmodulesforAM,2ASKand2FSKbasedonDDS.Afterthat,generateitscorrespondingVHDLfilebyusingSignalCompiler.Atlast,fulfillfunctionsimulationanddownloadbyQuartusⅡ.
Keyworld:
DSPBuilder;FPGA;modulationsystem;simulation
目录
摘要2
Abstract2
目录1
引言1
1基本原理1
2DDS设计2
2.1DDS原理2
2.2基于DSPBuilder的DDS设计3
2.2.1DSPBuilder简介3
2.2.2基于DSPBuilder的DDS设计 与仿真3
3AM设计4
3.1幅度调制AM原理4
3.2调制度m设计5
42ASK和2FSK调制器设计7
4.12ASK调制原理7
4.22FSK调制原理8
5设计编译下载11
6结论14
谢辞15
参考文献15
附录16
引言
在模拟传输系统中,幅度调制(AM)通过正弦型载波的幅度随调制信号作线性变化的过程,是通信系统中较见的一种模拟调制模式。
而在数字传输系统中,2ASK(二进制幅度键控)和2FSK(二进制频率键控)分别用数字信号去控制调制信号的幅度和频率,是常用的数字调制模式。
随着现场可编程门阵列(FPGA)在通信领域得到了广泛的应用,利用FPGA性能优越、使用方便的特点,可以简化各种调制电路的设计,而且易于反复编写和修改程序。
DSPBuilder是Altera公司推出的一种基于FPGA的面向DSP的系统开发的工具软件,它作为Matlab的一个Simulink的工具箱出现,它的使得用FPGA设计DSP系统完全可以通过Matlab的Simulink的图形界面进行,只有进行DSPBuilder工具箱模块的调用即可。
本设计采用的DSPBuilder实现中的DSP模块是以算法级的描述出现,易于用户一系统或者是算法级进行理解,甚至不需要了解FPGA本身的硬件语言。
1基本原理
DDS(直接数值合成器)信号发生器,通过不同的频率控制字产生各种不同频率的信号。
主要由16位加法器、16位寄存器正弦波形数据查找表(LUT)、频率控制字组成,并且其输出计算波形为:
。
AM幅度调制函数信号可以用式
来表述,其中,
、
、
分别是被调制的载波信号,需要被调制的信号和调制后AM的输出信号,它们都是有符号数,m是调制度,
。
2ASK与AM相近,就是被调制的不在是模拟的信号,而是数字信号。
2ASK是利用代表数字信息“0”或“1”的基带矩形脉冲去键控一个连续的载波,使载波时断时续地输出。
有载波输出时表示发送“1”,无载波输出时表示发送“0”。
2ASK信号可表示为
。
2FSK(二进制频移键控调制),即用不同的频率来表示不同的符号。
二进制符号0对应于载波f1,符号1对应于载频f2,而且f1与f2之间的改变是瞬时完成的一种频移键控技术。
它是数字传输中应用较广的一种方式。
2DDS设计
DDS,即直接数字合成器,是采用数字技术的一种新型频率合成技术,他通过控制频率、相位增量的步长,产生各种不同频率的信号。
它的优点在于:
有较高的频率分辨率;可以实现快速的频率切换;在频率改变时能够保持相位的连续;很容易实现频率、相位和幅度的数控调制等。
目前可采用专用芯片或可编程逻辑芯片实现DDS,专用的DDS芯片产生的信号波形、功能和控制方式固定,常不能满足具体需要。
FPGA具有器件规模大、工作速度快及可编程的硬件特点,并且开发周期短,易于升级,因为非常适合用于实现DDS。
2.1DDS原理
DDS的结构原理图如图2.1所示,DDS以数控振荡器的方式,产生频率、相位和幅度可控的正弦波。
电路包括了相位累加器、相位调制器、正弦ROM查找表、基准时钟源等组成。
其中前三者是DDS结构中的数字部分,具有数字控制频率合成的功能。
图2.1基本DDS结构框图
如图2.1所示,DDS系统的核心是相位累加器,完成相位累加过程。
在基准时钟的控制下,频率控制字由累加器累加,以得到相应的相位数据,相位调制器接收相位累加器的相位输出,主要用于信号的相位调制,其输出的数据作为取样地址来寻址正弦ROM查找表,完成相位-幅度变换,输出不同的幅度编码;再经过D/A转换器得到相应的阶梯波;最后经低通滤波器对阶梯进行平滑处理,即可得到由频率控制字决定的连续变换输出的正弦波。
由以上原理可以得到DDS的输出频率
,式中,
是频率的控制字,它与系统时钟频率呈正比;
是系统基准时钟的频率值;
是相位累加器数据位宽,也是频率输入字的数据位宽。
2.2基于DSPBuilder的DDS设计
2.2.1DSPBuilder简介
DSPBuilder是美国Altera公司推出的一个面向DSP开发的系统级工具,他作为Matlab的一个Simulink工具箱,使得用FPGA设计DSP系统完全通过Simulink的图形化界面进行建模、系统级仿真,设计模型可直接向VHDL硬件描述语言转换,并自动调用QuartusⅡ等EDA设计软件,完成综合、网表生成以及器件适配乃至FPGA的配置下载,使得系统描述与硬件实现有机的融合为一体,充分体现了现代电子技术自动化开发的特点与优势。
2.2.2基于DSPBuilder的DDS设计 与仿真
基于DSPBuilder的DDS系统如图2.2所示,主要由元件BusConcatenation1、BusConcatenation2、PipelineAdder1、Delay、AltBus3和LUT1构成。
DDS的输入为Freqword(16位频率控制字)输出为9位Output2输出。
2个ParallelAdderSubtractor分别为相位累加器和相位调制器,LUT(LookUpTable)为正弦ROM查找表。
根据DSPBuilder的算法将一个完整的正弦波周期进行1024次采样,并存储于LUT中。
在Matlab中设置Matlabarray:
511*sin([0:
2*pi/(2^10):
2*pi]),左边的输入端为查找数据的地址输入端,右边的输出端为离散正弦波信号输出端。
设置Simulink的仿真停止时间stoptime为5,仿真步进FixedStepSize为le-3。
图对应频率控制字为4000000时DDS系统的输出波形。
图2.2DDS直接频率合成器DSPBuilder/MatlabSimulink模型
仿真图如下图2.3:
图2.3DDS仿真图
3AM设计
3.1幅度调制AM原理
AM幅度调制是用调制信号去控制高频正弦载波的幅度,使其按调制信号的规律变化的过程。
AM的输出信号可以用式
来表述,其中,
、
分别是被调制的载波信号和调制的信号,m是调制度,
。
AM调制器的模型如下图所示:
图3.1AM调制器结构模型
3.2调制度m设计
调制度m是用来控制调制信号的调制程度。
如图3,2所示,调制度m来自通过八选一选择器对预设好的8个调制度数据进行选择,将选中的数据送到乘法器进行运算。
图3.2调制度m产生电路
基于DSPBuilder的AM调制器设计
AM调制器如图3.3所示,由上方的DDS1产生调制信号
,与八选一选择器所选择的m进行乘法运算,加一后,在与下方的DDS产生的
进行乘法运算,最后通过一个加法器以确定函数的符号。
图3.3AM调制器总体设计图
图3.4AM调制器仿真图
42ASK和2FSK调制器设计
4.12ASK调制原理
数字幅度调制又称幅度键控(ASK),二进制幅度键控记作2ASK。
2ASK是利用代表数字信息“0”或“1”的基带矩形脉冲去键控一个连续的载波,使载波时断时续地输出。
有载波输出时表示发送“1”,无载波输出时表示发送“0”。
2ASK信号可表示为:
,式中
为载波角频率。
2ASK信号的产生方法(调制方法)有两种,如图所示。
图4.1(a)是一般的模拟幅度调制方法;图4.1(b)是一种键控方法,这里的开关电路受控制。
图4.1(c)给出了2ASK信号的波形示例。
二进制幅度键控信号,由于一个信号状态始终为0,相当于处于断开状态,故又常称为二进制开关键控信号(OOK信号)。
图4.12ASK的产生方法及波形示例
4.22FSK调制原理
数字频率调制又称频移键控(FSK),二进制频移键控记作2FSK。
数字频移键控是用载波的频率来传送数字消息,即用所传送的数字消息控制载波的频率。
2FSK信号便是符号“1”对应于载频
,而符号“0”对应于载频
(为与
不同的另一载频)的已调波形,而且
与
之间的改变是瞬间完成的。
从原理上讲,数字调频可用模拟调频法来实现,也可用键控法来实现。
模拟调频法如图4.2(a)所示是利用一个矩形脉冲序列对一个载波进行调频,是频移键控通信方式早期采用的实现方法。
2FSK键控法如图4.2(b)所示则是利用受矩形脉冲序列控制的开关电路对两个不同的独立频率源进行选通。
键控法的特点是转换速度快、波形好、稳定度高且易于实现,故应用广泛。
2FSK信号的产生方法及波形示例如图4.2(c)所示。
图中
为代表信息的二进制矩形脉冲序列,
即是2FSK信号。
图4.22FSK的产生方法及波形示例
根据以上2FSK信号的产生原理,已调信号的数字表达式可以表示为:
其中,
为单极性非归零矩形脉冲序列。
基于DSPBuilder的2ASK和2FSK调制器设计
如图4.3所示,左下角是2ASK和2FSK调制器分别用了两个二选一选择器进行幅度键控和频率键控。
右下角的乘法器是对AM波形进行2ASK调制,采用的是模拟调制(即使用乘法器)的方式。
图4.32ASK和2FSK调制器设计图
仿真结果如下图4.4(仿真采用阶跃信号作为数字信号来调制仅仅只含有一个“0”和“1”,真是的信号为更多的“0”和“1”)。
图a是2FSK仿真输出,图b是对AM波形进行2ASK的仿真输出,图c是2ASK的仿真输出。
(a)
(b)
(c)
图4.42ASK和2FSK调制器仿真图
5设计编译下载
利用DSPBuilder提供的功能模块在Matlab/Simulink中建立DSP电路模型后,接下来需要用DSPBuilder的SingnalCompiler进行VHDL代码的生成以及调用QuartusⅡ进行综合与仿真,包括VHDL的编译、分配管脚、仿真、和下载。
SignalCompiler编译
双击SignalCompiler模块,将出现SingnalCompiler对话窗口,可以在其设定的目标器件系列、所使用的综合器、优化目标以及其它的选项。
选择CycloneII型EP2C5T144C8的器件。
进行编译,并生成VHDL代码以及QuartusⅡ工程文件。
图5.1SingnalCompiler编译下载结果
5.1QuartusⅡ综合与仿真
在通过SingnalCompiler编译后,打开生成的工程文件,对自动生成的VHDL文件进行编译,编译通过以后对其进行元件例化。
并在新建图形描述文件中使用例化的该元件绘制电路(电路如图5.2所示),对电路的输入输出进行仿真,仿真结果如图5.3所示。
QuartusⅡ软件分配管脚通过是选择菜单“assignments->pins”进入管脚分配视图手动分配。
图5.2元件例化电路
图5.3QuartusⅡ仿真结果
RTL级电路图:
图5.4RTL级电路图
6结论
本设计使用了DSPBuilder,建立了基于双DDS的AM、2ASK和2FSK调制系统模型,使用QuartusⅡ进行功能仿真和时序仿真,结果表明该模型可以正确地产生AM、2ASK和2FSK调制信号。
本方案最大的特点是采用了DSPBuilder,它作为一个算法级的设计工具,只需在Simulink中进行图形化设计,仿真通过后,即可使用SignalCompiler把MATLAB/Simulink模型文件(.mdl)转换成相应的硬件描述语言VHDL设计文件(.vhd),以及用于控制综合与编译的TCL脚本。
根据这些文件后续步骤可以由QuartusⅡ自己完成。
大大减少了编程的复杂度,使硬件描述更加的直观。
此外,本方案采用DDS技术,获得了较高的频率分辨率,同设计方法简单快捷,降低了实现的复杂度,而且便于修改和功能扩充。
谢辞
随着这次设计的进行,本学期的EDA课程也要进入尾声。
这个学期中,我们跟着潘老师学到了不只有verilog语言,还有许多FPGA的使用的技巧和方式,拓宽了我对于FPGA应用方面的思路和眼界,让我受益匪浅。
这次设计的所采用的DSPBuilder也是在潘老师的悉心指导下学会的。
在此表示对潘老师最衷心的谢意,同时在做的过程中,我的同做者潘鑫龙同学也给我提出了许多宝贵指导意见,在此我也对他表示我最诚挚的感谢。
参考文献
[1]潘松.黄继业.陈龙.EDA技术与VerilogHDL-程序设计.北京:
清华大学出版社,2010.4
[2]蒋璇臧.纯华.数字系统设计与PLD应用(第二版)-北京:
电子工业出版社,2005.1
[3]李海涛.邓樱MATLAB程序设计教程.北京:
高等教育出版社,2002.8
附录
libraryIEEE;
useIEEE.std_logic_1164.all;
useIEEE.std_logic_arith.all;
useIEEE.std_logic_unsigned.all;
entityFPGA_AM1_GNis
port(Input:
inSTD_LOGIC_VECTOR(2downto0);
Output3:
outSTD_LOGIC_VECTOR(8downto0);
Output4:
outSTD_LOGIC_VECTOR(8downto0);
Input2:
inSTD_LOGIC_VECTOR(7downto0);
Output1:
outSTD_LOGIC_VECTOR(9downto0);
Output2:
outSTD_LOGIC_VECTOR(7downto0);
Input3:
inSTD_LOGIC_VECTOR(3downto0);
Input1:
inSTD_LOGIC_VECTOR(1downto0);
Clock:
inSTD_LOGIC;
Output:
outSTD_LOGIC_VECTOR(10downto0);
aclr:
inSTD_LOGIC);
endentity;
architecturertlofFPGA_AM1_GNis
signalBus_Concatenation1_output_wire:
STD_LOGIC_VECTOR(4downto0);--Bus_Concatenation1:
output->[Bus_Concatenation2:
b]
signalBus_Concatenation9_output_wire:
STD_LOGIC_VECTOR(9downto0);--Bus_Concatenation9:
output->[Bus_Concatenation8:
b]
signalDelay_output_wire:
STD_LOGIC_VECTOR(16downto0);--Delay:
output->[AltBus3:
input,cast4:
input]
signalDelay1_output_wire:
STD_LOGIC_VECTOR(15downto0);--Delay1:
output->[AltBus7:
input,cast5:
input]
signalInput2_0_output_wire:
STD_LOGIC_VECTOR(7downto0);--Input2_0:
output->[Bus_Concatenation9:
a]
signalInput3_0_output_wire:
STD_LOGIC_VECTOR(3downto0);--Input3_0:
output->[Bus_Concatenation1:
a]
signalInput_0_output_wire:
STD_LOGIC_VECTOR(2downto0);--Input_0:
output->[Multiplexer:
sel]
signalConstant10_output_wire:
STD_LOGIC_VECTOR(9downto0);--Constant10:
output->[Multiplexer:
in0]
signalConstant11_output_wire:
STD_LOGIC_VECTOR(9downto0);--Constant11:
output->[Multiplexer:
in1]
signalConstant12_output_wire:
STD_LOGIC_VECTOR(9downto0);--Constant12:
output->[Multiplexer:
in2]
signalConstant13_output_wire:
STD_LOGIC_VECTOR(9downto0);--Constant13:
output->[Multiplexer:
in3]
signalConstant5_output_wire:
STD_LOGIC_VECTOR(9downto0);--Constant5:
output->[Multiplexer:
in4]
signalConstant8_output_wire:
STD_LOGIC_VECTOR(9downto0);--Constant8:
output->[Multiplexer:
in5]
signalConstant9_output_wire:
STD_LOGIC_VECTOR(9downto0);--Constant9:
output->[Multiplexer:
in6]
signalConstant14_output_wire:
STD_LOGIC_VECTOR(9downto0);--Constant14:
output->[Multiplexer:
in7]
signalLUT2_Output_wire:
STD_LOGIC_VECTOR(9downto0);--LUT2:
Output->[Output1_0:
input,cast16:
input]
signalLUT1_Output_wire:
STD_LOGIC_VECTOR(7downto0);--LUT1:
Output->[Output2_0:
input,cast12:
input]
signalPipelined_Adder1_result_wire:
STD_LOGIC_VECTOR(16downto0);--Pipelined_Adder1:
result->[Delay:
input]
signalPipelined_Adder2_result_wire:
STD_LOGIC_VECTOR(8downto0);--Pipelined_Adder2:
result->[Output4_0:
input,cast15:
input]
signalAltBus7_output_wire:
STD_LOGIC_VECTOR(15downto0);--AltBus7:
output->[Pipelined_Adder4:
dataa]
signalBus_Concatenation8_output_wire:
STD_LOGIC_VECTOR(15downto0);--Bus_Concatenation8:
output->[Pipelined_Adder4:
datab]
signalPipelined_Adder4_result_wire:
STD_LOGIC_VECTOR(15downto0);--Pipelined_Adder4:
result->[Delay1:
input]
signalPipelined_Adder3_result_wire:
STD_LOGIC_VECTOR(9downto0);--Pipelined_Adder3:
result->[Product2:
dataa]
signalConstant1_output_wire:
STD_LOGIC_VECTOR(7downto0);--Constant1:
output->[c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AM2FSK调制DSPBuilder 实现论文 AM2FSK 调制 DSPBuilder 实现 论文