哈工大电信学院eda课程设计通用通信信号源设计 学位论文.docx
- 文档编号:24891565
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:60
- 大小:854.44KB
哈工大电信学院eda课程设计通用通信信号源设计 学位论文.docx
《哈工大电信学院eda课程设计通用通信信号源设计 学位论文.docx》由会员分享,可在线阅读,更多相关《哈工大电信学院eda课程设计通用通信信号源设计 学位论文.docx(60页珍藏版)》请在冰豆网上搜索。
哈工大电信学院eda课程设计通用通信信号源设计学位论文
HarbinInstituteofTechnology
课程设计说明书(论文)
课程名称:
课程设计І
设计题目:
通用通信信号源设计
院系:
电子信息与工程学院
班级:
电子信息2班
设计者:
王珊珊
学号:
110520204
指导教师:
赵雅琴
设计时间:
2014年3月13日至2014年5月10日
哈尔滨工业大学
2013年6月10日
哈尔滨工业大学课程设计任务书
姓名:
王珊珊院(系):
电子信息与工程学院
专业:
电子信息工程班号:
1105202
任务起至日期2014年3月13日至2014年5月10日
课程设计题目:
通用通信信号源设计
已知技术参数和设计要求:
设计一个通用通信信号源。
技术参数:
(1)可以产生的信号类型:
方波、三角波、正弦波、锯齿波;AM、FM、ASK、FSK、PSK、16QAM、GMSK
(2)基带信号频率范围:
0~1MHz可调
(3)射频频率范围:
0~300MHz可调
(4)要求给出系统方案的数学模型,分别采用MATLAB和QuartusII进行仿真,给出采用MATLAB实现每种信号的仿真波形,给出采用QUARTUSII仿真得到的PSK的仿真图。
提交材料:
(1)纸质报告;
(2)PPT;(3)电子版报告、所有EDA仿真源文件、PPT,以“学号+姓名命名”所有电子版文件由班长收齐后压缩成一个文件,以班级号命名,发送到老师的邮箱:
Yaqin_zhao@
工作量:
1.查找资料,设计论证方案:
阐明所选设计方案优点,给出系统框图。
2.具体说明各部分电路图的工作原理,具体各个电路选择、元器件选择和数值计算。
3.仿真验证:
MATLAB的程序清单、和QuartusII编程文件(原理图,或VHDL源程序及框图),给出采用MATLAB和QuartusII仿真结果
4.绘制电路原理图
5.绘制印刷电路图
6.元器件列表
7.编写调试操作
8.打印论文
工作计划安排:
1.查找资料、设计论证方案具体各个电路选择、元器件选择和数值计算绘制电路原理图一周
2.电路仿真与设计计算一周
3.绘制印刷电路图、元器件列表一周
4.编写调试操作、打印论文一周
同组设计者及分工:
每人一组单独完成
指导教师签字___________________
2013年5月15日
教研室主任意见:
教研室主任签字___________________
2012年5月25日
*注:
此任务书由课程设计指导教师填写
摘要
在通信系统的科研实验中,常常需要用到多种不同频率的信号,如正弦波、三角波、方波和锯齿波等,因此多波形信号发生器的应用十分广泛。
传统的波形发生器多采用模拟分立元件实现,产生的波形种类要受到电路硬件的限制,体积大,灵活性和稳定性也相对较差。
近年来,以数字技术为基础的波形发生器得到了飞速的发展,性能指标都达到了一个新的水平。
现场可编程门阵列器件具有容量大、运算速度快、现场可编程等优点,使得许多复杂的电路有了新的实现途径,越来越被广泛地应用到实际系统中。
本文基于DDS(直接数字频率合成原理)及FPGA技术,利用QuartusII9.0软件和Matlab数学工具,配合相应外围器件实现通用通信信号源设计,电路结构简单、易于扩展,具有极大的灵活性和方便性。
实现的通用通信信号源可产生正弦波、三角波、锯齿波和方波信号,输出信号频率在一范围内可调。
而且可以实现AM、FM、ASK、FSK、PSK、16QAM、GMSK功能。
完成了部分功能的软硬件仿真,并用AltiumDesigner制作了PCB板。
关键词:
通信;频率;信号;正弦波;方波;三角波;锯齿波;波形发生;FPGA;DDS;Quartus;Matlab;电路;仿真。
摘要……………………………………………………………………………….…………….Ⅰ
第1章设计原理
设计主要分为三个模块进行:
DDS直接数字频率合成模块;信号发生模块;调制功能模块。
下面分别对三个模块进行介绍。
1.1DDS模块
直接数字频率合成是基于奈奎斯特抽样定理和数字波形合成原理而发展起来的一种数字化的频率合成技术。
根据该定理,对于1个周期的连续波形信号,可以沿着其相位轴方向,以等量的相位间隔对其进行相位/幅度采样,得到1个周期性的波形信号的离散相位的幅度序列,并对模拟幅度进行量化,对量化后的幅度采用相应的二进制数据进行编码。
这样就可以把1个周期性的连续信号转换成1系列离散的二进制序列,最后把它存储在只读存储器中,每个存储单元的地址就是相位取样地址,而存储单元的内容即是量化的正弦波的幅度值。
这样的1个只读存储器构成1个与2π周期内相位取样相对应的波形函数查找表,由于其存储的是1个周期的波形的幅度值,所以又称其为波形存储器。
一个完整的DDS内部结构由N位频率控制寄存器、模2N加相位累加器、正弦“相位-幅度”转换表ROM、存储器及数模转换器DAC等几部分组成。
本模块设计只选取前半部分及由累加器和相位寄存器构成的相位累加器,如图1-1所示。
N
输出
时钟
相位寄存器
频率控制字K
累加器
图1-1相位累加器
若频率控制字为K,相位累加器为N位,参考时钟频率为
则输出频率为
,最小频率分辨率为
由以上两个式子可以看出,DDS的输出频率的下限对应于频率控制字K=0的情形,即
。
根据奈奎斯特抽样定律,DDS的输出上限频率为时钟频率的1/2,但由于实际输出低通滤波器的非理想特性,工程上可实现的频率上限为
。
即若参考频率为
,DDS的输出频率范围为0~0.4
。
由于本设计要求为基带信号频率范围:
0~1MHz可调,设可调精度(步长):
10KHz
射频频率范围:
0~300MHz可调,设可调精度(步长):
3MHz
由此可列出方程
解得用于基带信号的时钟频率为
,用于射频信号的时钟频率
,而相位累加器的N都为8。
本模块的FPGA实现如图1-1所示。
图1-2FPGA
其封装后用dds8b表示,如图1-3所示
图1-3dds8b
本模块的VHDL代码如下:
1.adder8b:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityadder8bis
port(
a:
instd_logic_vector(7downto0);
b:
instd_logic_vector(7downto0);
s:
outstd_logic_vector(7downto0));
endadder8b;
architecturebehavofadder8bis
begin
s<=a+b;
endbehav;
2.reg8b:
libraryieee;
useieee.std_logic_1164.all;
entityreg8bis
port(
load:
instd_logic;
din:
instd_logic_vector(7downto0);
dout:
outstd_logic_vector(7downto0));
endreg8b;
architecturebehavofreg8bis
begin
process(load,din)
begin
ifload'eventandload='1'then
dout<=din;
endif;
endprocess;
endbehav;
1.2信号发生模块
本模块的设计,正弦波是基于查找表方法;方波、三角波、锯齿波由于原理简单,可直接生成,所以不必用查找表方法,因为查找表必定耗费资源。
1.2.1正弦波的产生
通过预先计算出一个一个周期正弦波幅度值表,然后由前级dds8b的输出作为查表地址,进而输出实现正弦波。
正弦波幅度值表由Matlab产生,并生成.mif文件供QuartusII创建ROM表。
Matlab代码如下:
width=6;
depth=256;
index=linspace(0,2*pi,depth);
sin_a=sin(index);
sin_d=fix(sin_a*(2^width-1)+128);
plot(sin_d);
axis([0,depth-1,0,2^width+127]);
addr=0:
depth-1;
str_width=strcat('WIDTH=',num2str(width));
str_depth=strcat('DEPTH=',num2str(depth));
fid=fopen('f:
\sin.mif','w');
fprintf(fid,str_width);
fprintf(fid,';\n');
fprintf(fid,str_depth);
fprintf(fid,';\n\n');
fprintf(fid,'ADDERSS_RADIX=DEC;\n');
fprintf(fid,'DATA_RADIX=DEC;\n\n');
fprintf(fid,'CONTENTBEGIN\n');
fprintf(fid,'\t%d:
%d;\n',[addr;sin_d])
fprintf(fid,'END;\n');
fclose(fid);
其Matlab仿真波形如图1-4所示
图1-4Matlab仿真图
QuartusII创建ROM表用sinrom表示,如图1-5所示。
图1-5sinrom
1.2.2锯齿波的产生
由于前级dds8b输出的是一个周期递增的8位二进制数,它便是一个锯齿波,所以,本级只要直接输出即可。
1.2.3方波波的产生
由于前级dds8b输出的是一个周期递增的8位二进制数,所以只要当最高位为1时输出为高,最高位为0时输出为低即可产生方波。
其VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityfangbois
port(
k:
instd_logic_vector(7downto0);
q:
outstd_logic_vector(7downto0));
end;
architecturestroffangbois
begin
process(k)
begin
ifk(7)='1'then
q<="11111111";
else
q<="00000000";
endif;
endprocess;
end;
QuartusII封装后用fangbo表示,如图1-6所示。
图1-6fangbo
1.2.4三角波的产生
由于前级dds8b输出的是一个周期递增的8位二进制数,只需当最高位为1时将原值取反,而最高位为0时,将原值输出即可。
其VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitysanjiaobois
port(
k:
instd_logic_vector(7downto0);
q:
outstd_logic_vector(7downto0));
end;
architecturestrofsanjiaobois
begin
process(k)
begin
ifk(7)='0'then
q<=k;
elsifk(7)='1'then
q<=not(k);
endif;
endprocess;
end;
QuartusII封装后用sanjiaobo表示,如图1-7所示。
图1-7sanjiaobo
1.2.5波形选择VHDL设计
通过sel的3位2进制数的0与1变换来控制输出。
代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycenteris
port(sel:
instd_logic_vector(2downto0);
d1:
instd_logic_vector(7downto0);
d2:
instd_logic_vector(7downto0);
d3:
instd_logic_vector(7downto0);
d4:
instd_logic_vector(7downto0);
q:
outstd_logic_vector(7downto0);
d:
outstd_logic);
end;
architecturestrofcenteris
begin
process(sel)
begin
caseselis
when"000"=>q<=d1;d<='0';
when"001"=>q<=d2;d<='0';
when"010"=>q<=d3;d<='0';
when"100"=>q<=d4;d<='0';
whenothers=>q<=null;
endcase;
endprocess;
end;
QuartusII封装后用center表示,如图1-8所示。
图1-8center
1.2.6顶级原理图设计及波形仿真
综合以上设计,组合成顶级原理图如图1-9所示,其封装后用signal表示,如图1-10所示。
图1-9顶级原理图
图1-10signal
其中d为下级提供使能。
Matlab仿真:
经过Quartus综合、波形仿真后,可以得到.vwf波形文件。
然后选择FILE菜单下的SaveCurrentReportSectionAs,保存类型选择为.vbl。
这样边可以得到输出波形的数字幅度序列数据,就可以借助Matlab工具方便的观察波形。
.m文件如下:
clearall;
fid=fopen('E:
\dds\*.tbl','r');
yy=fscanf(fid,'%s');
fclose(fid);
aa=find(yy=='=');
i=0;
forj=1:
length(aa)
ifyy(aa(j)-1)=='0'
i=i+1;
data(i,1)=yy(aa(j)+1);
data(i,2)=yy(aa(j)+2);
data(i,3)=yy(aa(j)+3);
end
end
plot(data);
gridon
方波Matlab仿真如图1-11所示。
图1-11Matlab仿真图
锯齿波Matlab仿真如图1-12所示。
图1-12Matlab仿真图
代码如下:
L=zeros(256,1);
tmp=0;
x=7;
a=0;
forss=[0:
255]
tmp=tmp+x;
iftmp>=255
tmp=0;
end
L(ss+1)=tmp;
end
三角波仿真如图1-13示
图1-13Matlab仿真图
代码如下:
L=zeros(256,1);
tmp=0;
x=2;
a=0;
forss=[0:
255]
ifa==0
iftmp>=254
tmp=255;
a=1;
else
tmp=tmp+x;
end
else
iftmp<=1
tmp=1;
a=0;
else
tmp=tmp-x;
end
end
L(ss+1)=tmp;
end
plot(L)
1.3调制模块
1.3.1AM调制
调幅是一种将需要发送的信号(低频)加载到高频载波信号上进行传送的方法,假设载波信号的表达式为:
调制波信号的表达式为:
那么幅度调制信号的表达式为:
从式中可以知道要用数字的方式实现模拟AM必须知道调制信号的数字序列波形以及载波信号的数字序列波形,然后再采用两个乘法器和一个加法器通过各种逻辑运算实现幅度调制。
。
根据DDS的原理,可以通过DDS技术来实现调制信号的数字序列波形以及载波信号的数字序列波形。
图1-14给出了DDS调幅信号发生器的核心QuartusII9.0FPGA设计电路图。
图1-14调幅FPGA
图中,基带信号和射频信号都由前面设计的dds与正弦信号发生器的组合产生。
基带信号先与幅度控制字
经过乘法器相乘,再与载波幅度控制字
相加。
其结果再与前级产生的射频信号相乘即得出已调信号的离散序列,最后经过data_conversion模块转换成DAC器件的数据格式输出,完成整个调幅过程。
其封装后用am表示,如图1-15所示。
图1-15
乘法器的VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
entitymulti88is
port(a,b:
instd_logic_vector(7downto0);
y:
outstd_logic_vector(15downto0));
endentitymulti88;
architecturertlofmulti88is
begin
behavior:
process(a,b)is
variablea_in:
std_logic_vector(7downto0);
variableb_in:
std_logic_vector(7downto0);
variabley_out:
std_logic_vector(15downto0);
variablecarry_in,carry:
std_logic;
begin
a_in:
=a;
b_in:
=b;
y_out:
=(others=>'0');
forcountin0to7loop
carry:
='0';
if(b_in(count)='1')then
forindexin0to7loop
carry_in:
=carry;
carry:
=(y_out(index+count)anda_in(index))
or(carry_inand(y_out(index+count)xora_in(index)));
y_out(index+count):
=y_out(index+count)xora_in(index)xorcarry_in;
endloop;
y_out(count+8):
=carry;
endif;
endloop;
y<=y_out;
endprocessbehavior;
endarchitecturertl;
符号如图1-16所示。
图1-16
加法器VHDL代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityadder8bis
port(
a:
instd_logic_vector(7downto0);
b:
instd_logic_vector(7downto0);
s:
outstd_logic_vector(7downto0));
endadder8b;
architecturebehavofadder8bis
begin
s<=a+b;
endbehav;
符号如图1-17所示.
图1-17
data_conversion代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydate_conversionis
port(
a:
instd_logic_vector(15downto0);
q:
outstd_logic_vector(7downto0));
enddate_conversion;
architecturertlofdate_conversionis
begin
q(7downto0)<=a(15downto8);
endrtl;
符号如图1-18所示。
图1-18
1.3.2FM调制
频率调制及高频振荡的振幅保持不变,瞬时角频率随调制信号成线性变化。
频率调制(FM)后的信号频谱不再是原调制信号频谱的线性搬移,而是频谱的非线性变换,会产生与频谱搬移不同的新的频率成分,故又称为非线性调制。
给出频率调制信号的表达式:
通过DDS技术产生线性FM波的关键就是产生线性变化的频率控制字,设
为产生载波序列对就的频率控制字,ΔK为相对于载波频偏的频率控制字,
对应调频步进的频率控制字。
线性调频频率控制字的实现框图如图1-19所示。
图1-19
图1-20给出了DDS调频信号发生器的核心Quar2tusII9.0FPGA设计电路图。
图1-20
图中所有模块前文均有叙述,这里不再赘述。
其封装后用表示,如图1-21所示.
图1-21
1.3.3ASK调制
数字信号对载波振幅的调制称为振幅键控即ASK(AmplitudeShiftKeying)
设计思想是,当基带信号为1时,输出载波,当亟待信号为0时,输出为0。
原理如图1-22所示。
图1-22
其VHDL实现代码如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityaskis
port(
x:
instd_logic;
carrer:
instd_logic_vector(7downto0);
y:
outstd_logic_vector(7downto0));
end;
architecturertlofaskis
begin
process(x)
begin
ifx='0'then
y<="00000000";
else
y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大电信学院eda课程设计通用通信信号源设计 学位论文 哈工大 电信 学院 eda 课程设计 通用 通信 信号源 设计 学位 论文