基于FPGA的PSK调制系统实验报告Word文件下载.docx

上传人:b****2 文档编号:15180319 上传时间:2022-10-28 格式:DOCX 页数:11 大小:255.18KB
下载 相关 举报
基于FPGA的PSK调制系统实验报告Word文件下载.docx_第1页
第1页 / 共11页
基于FPGA的PSK调制系统实验报告Word文件下载.docx_第2页
第2页 / 共11页
基于FPGA的PSK调制系统实验报告Word文件下载.docx_第3页
第3页 / 共11页
基于FPGA的PSK调制系统实验报告Word文件下载.docx_第4页
第4页 / 共11页
基于FPGA的PSK调制系统实验报告Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

基于FPGA的PSK调制系统实验报告Word文件下载.docx

《基于FPGA的PSK调制系统实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的PSK调制系统实验报告Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

基于FPGA的PSK调制系统实验报告Word文件下载.docx

为简单起见,载波频率也是1200Hz。

为简单起见,已调信号的相位和基带信的夫系柬用绝对调相方式。

即基带信号为l,己调信号的相位相对于参考相位改变180度。

基带信号为0,已调信号的相位与参考相位相同。

三、实验容

1、PSK调制原理

相移键控(PhaseShiftKeying,PSK),它是受键控的载波相位按数字基带脉冲的规律而改变的一种数字调制方式。

这种以载波的不同相位直接表示相应数字信息的相位键控,通常被称为绝对移相方式。

当基带信号为二进制数字脉冲序列时,所得到的相位键控信号为二进制相位键控,即2PSK,它的表达式为

式中,φ(t)由数字信息“0”“1”控制。

在绝对移相中,因为φ(t)选用的参考相位基准就是未调制的载波,所以φ(t)就是载波的绝对值。

一般说来,数字信息为“1”时,φ(t)=0,数字信息为“0”时,φ(t)=π。

如图所示

2、系统总体设计

系统的结构框图

3、系统详细设计

1分频器设计

根据题目中载波频率小于30kHZ的要求,生成载波信号的正弦信号发生器选择16位累加器,则其需要的时钟在30kHZ以上即可。

因此,设计中对20MHZ的系统时钟进行512分频(39KHZ)和16384分频(1.22KHZ)。

512分频所得时钟作为正弦信号发生器的时钟,16384分频所得时钟则作为整个系统的基带信号。

VNDL具体设计见附录一。

通过VHDL包装生成的分频器模块及其波形仿真图如下面两图所示。

分频器模块

分频器模块波形仿真结果

2正弦信号发生器设计

DDS(DirectDigitalSynthesizer)具有较高的频率分辨率,可以实现频率的快速切换,并且在频率切换时能保持相位的连续,很容易实现频率、相位、幅度的数字调制。

本系统的正弦信号发生器模块就是基于DDS技术设计的。

DDS原理图如下:

DDS基本结构

上图中M为相位累加器的位数。

N为信号数据的位数。

F为频率控制字。

fclk为系统的时钟。

由DDS原理知其基频为:

fSIN=fclk/2M

也即是设计的正弦信号发生器的精度为fSIN。

由以上知,当输入的频率控制字为F时,输出正弦波的频率为:

fout=F*fSIN=F*fclk/2M

基于以上DDS原理,系统选择16位的累加器。

一个周期正弦波取64个采样点,在Excel表格中可以用下拉单元格的方式迅速生成地址,地址围为0~63,即波形表中每种波形每周期取64点。

之后输入公式“=sin((A1/64)*2*3.1415926)”,再利用下拉单元格的方式,得到各个地址单元所对应得正弦函数值。

以上得到的正弦函数表往往不能被D/A转换器直接利用,需要将其置映射到D/A转换器所能接受的数据空间。

设计中所用D/A转换器为8位,其数据空间是0——255,可以利用公式“=127.5*(1+B1)”来映射数据,影射后的数据为小数,还须对其取整,输入公式“=INT(C1)”。

然后复制所得数据,在QuartusII平台中生成hex文件。

由以上可得,系统需要使用6位地址线8位数据线的ROM作为数据存储器。

时钟为512分频(约为39KHZ)所得信号。

具体电路图如图10所示。

正弦信号发生器电路图

设计时将频率控制字设置为8192。

也即输出的正弦波频率为4.88KHZ。

仿真结果如图所示。

正弦信号发生器模块波形仿真结果

3PSK模块设计

PSK模块仿真结果如图

PSK模块仿真波形

4数模转换

本系统数模转换器采用DAC0832,数模转换模块如下图18所示。

输出的模拟量与输入的数字量(DN-1*2N-1+……+D0*20)成正比,这就实现了从数字量到模拟量的转换。

输入可有28(=256)个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压围任意值,只能是256个可能值中的一个。

本系统要求输出量是电压,而DAC0832输出的是电流量,所以还必须经过一个外接的运算放大器转换成电压,这里选用OP07集成运放,此运放具有极低的输入失调电压、极低的失调电压温漂能长期稳定工作等特点。

图18D/A转换模块

系统总电路

3:

源程序清单

1、分频器程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYclkdivIS

PORT(clk:

INSTD_LOGIC;

--clk_div2:

OUTSTD_LOGIC;

--clk_div4:

--clk_div8:

--clk_div16:

--clk_div32:

--clk_div256:

clk_div512:

clk_div16384:

OUTSTD_LOGIC

);

ENDclkdiv;

ARCHITECTURErtlOFclkdivIS

SIGNALcount:

STD_LOGIC_VECTOR(13DOWNTO0);

BEGIN

PROCESS(clk)

IF(clk'

eventANDclk='

1'

)THEN

IF(count="

111"

Count<

=(OTHERS=>

'

0'

);

ELSE

=count+1;

ENDIF;

ENDPROCESS;

--clk_div2<

=count(0);

--clk_div4<

=count

(1);

--clk_div8<

=count

(2);

--clk_div16<

=count(3);

--clk_div32<

=count(4);

--clk_div256<

=count(7);

clk_div512<

=count(8);

clk_div16384<

=count(13);

ENDrtl;

2、加法器程序

libraryieee;

ENTITYADDER16IS

PORT(

A:

INSTD_LOGIC_VECTOR(15DOWNTO0);

B:

S:

OUTSTD_LOGIC_VECTOR(15DOWNTO0)

ENDADDER16;

ARCHITECTUREbehavOFADDER16IS

BEGIN

S<

=A+B;

ENDbehav;

3、寄存器程序

ENTITYREG32BIS

LOAD:

DIN:

DOUT:

ENDREG32B;

ARCHITECTUREbehavOFREG32BIS

BEGIN

PROCESS(LOAD,DIN)

IFLOAD'

EVENTANDLOAD='

THEN

DOUT<

=DIN;

ENDIF;

4、ROM程序

LIBRARYieee;

USEieee.std_logic_1164.all;

LIBRARYaltera_mf;

USEaltera_mf.all;

ENTITYDATAROMIS

PORT

address:

INSTD_LOGIC_VECTOR(5DOWNTO0);

inclock:

INSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)

ENDDATAROM;

ARCHITECTURESYNOFdataromIS

SIGNALsub_wire0:

STD_LOGIC_VECTOR(7DOWNTO0);

COMPONENTaltsyncram

GENERIC(

clock_enable_input_a:

STRING;

clock_enable_output_a:

init_file:

intended_device_family:

lpm_hint:

lpm_type:

numwords_a:

NATURAL;

operation_mode:

outdata_aclr_a:

outdata_reg_a:

widthad_a:

width_a:

width_byteena_a:

NATURAL

PORT(

clock0:

address_a:

q_a:

ENDCOMPONENT;

BEGIN

q<

=sub_wire0(7DOWNTO0);

altsyncram_component:

altsyncram

GENERICMAP(

clock_enable_input_a=>

"

BYPASS"

clock_enable_output_a=>

init_file=>

data.hex"

intended_device_family=>

CycloneII"

lpm_hint=>

ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=ROM1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1