基于FPGA的PSK调制系统实验报告.docx

上传人:b****4 文档编号:3850680 上传时间:2023-05-06 格式:DOCX 页数:10 大小:17.96KB
下载 相关 举报
基于FPGA的PSK调制系统实验报告.docx_第1页
第1页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第2页
第2页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第3页
第3页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第4页
第4页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第5页
第5页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第6页
第6页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第7页
第7页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第8页
第8页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第9页
第9页 / 共10页
基于FPGA的PSK调制系统实验报告.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的PSK调制系统实验报告.docx

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

基于FPGA的PSK调制系统实验报告.docx

基于FPGA的PSK调制系统实验报告

 

实验题目:

基于FPGA的PSK调制系统

 

专业班级:

学生姓名:

指导教师:

设计时间:

 

基于FPGA的PSK调制系统

一、实验目的

1.掌握利用原理图输入法设计电路的方法,掌握QuartusII的层次化设计方法。

通过PSK调制系统的设计,熟悉用EDA软件进行电路设计的详细流程,以及在硬件上的应用。

2.掌握绝对码、相对码的概念以及它们之间的变换关系和变换方法。

3.掌握用键控法产生2PSK信号的方法。

4.掌握相对码波形与2PSK信号波形之间的关系、绝对码波形与2DPSK信号波形之间的关系。

二、实验要求

利用实验板具有模拟信号处理的功能,设计一个移相键控信号发生器。

要求利用板上的8位DIP开关设置基带信号码(8bit)。

板上的DAC送出己调信号(正弦波),对8bit基带信号循环调制。

要有用于观察的同步脉冲输出。

传输速率1200bps。

为简单起见,载波频率也是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分频()。

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*”,再利用下拉单元格的方式,得到各个地址单元所对应得正弦函数值。

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

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

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

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

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

具体电路图如图10所示。

正弦信号发生器电路图

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

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

仿真结果如图所示。

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

3PSK模块设计

PSK模块仿真结果如图

PSK模块仿真波形

4数模转换

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

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

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

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

图18D/A转换模块

 

系统总电路

3:

源程序清单

1、分频器程序

LIBRARYIEEE;

USE

USE

USE

ENTITYclkdivIS

PORT(clk:

INSTD_LOGIC;

--clk_div2:

OUTSTD_LOGIC;

--clk_div4:

OUTSTD_LOGIC;

--clk_div8:

OUTSTD_LOGIC;

--clk_div16:

OUTSTD_LOGIC;

--clk_div32:

OUTSTD_LOGIC;

--clk_div256:

OUTSTD_LOGIC;

clk_div512:

OUTSTD_LOGIC;

clk_div16384:

OUTSTD_LOGIC

);

ENDclkdiv;

ARCHITECTURErtlOFclkdivIS

SIGNALcount:

STD_LOGIC_VECTOR(13DOWNTO0);

BEGIN

PROCESS(clk)

BEGIN

IF(clk'eventANDclk='1')THEN

IF(count="1")THEN

Count<=(OTHERS=>'0');

ELSE

Count<=count+1;

ENDIF;

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;

USEADDER16IS

PORT(

A:

INSTD_LOGIC_VECTOR(15DOWNTO0);

B:

INSTD_LOGIC_VECTOR(15DOWNTO0);

S:

OUTSTD_LOGIC_VECTOR(15DOWNTO0)

);

ENDADDER16;

ARCHITECTUREbehavOFADDER16IS

BEGIN

S<=A+B;

ENDbehav;

3、寄存器程序

LIBRARYIEEE;

USEREG32BIS

PORT(

LOAD:

INSTD_LOGIC;

DIN:

INSTD_LOGIC_VECTOR(15DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(15DOWNTO0)

);

ENDREG32B;

ARCHITECTUREbehavOFREG32BIS

BEGIN

PROCESS(LOAD,DIN)

BEGIN

IFLOAD'EVENTANDLOAD='1'THEN

DOUT<=DIN;

ENDIF;

ENDPROCESS;

ENDbehav;

4、ROM程序

LIBRARYieee;

USEaltera_mf;

USE;

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:

STRING;

init_file:

STRING;

intended_device_family:

STRING;

lpm_hint:

STRING;

lpm_type:

STRING;

numwords_a:

NATURAL;

operation_mode:

STRING;

outdata_aclr_a:

STRING;

outdata_reg_a:

STRING;

widthad_a:

NATURAL;

width_a:

NATURAL;

width_byteena_a:

NATURAL

);

PORT(

clock0:

INSTD_LOGIC;

address_a:

INSTD_LOGIC_VECTOR(5DOWNTO0);

q_a:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)

);

ENDCOMPONENT;

BEGIN

q<=sub_wire0(7DOWNTO0);

altsyncram_component:

altsyncram

GENERICMAP(

clock_enable_input_a=>"BYPASS",

clock_enable_output_a=>"BYPASS",

init_file=>"",

intended_device_family=>"CycloneII",

lpm_hint=>"ENABLE_RUNTIME_MOD=YES,INSTANCE_NAME=ROM1",

lpm_type=>"altsyncram",

numwords_a=>64,

operation_mode=>"ROM",

outdata_aclr_a=>"NONE",

outdata_reg_a=>"UNREGISTERED",

widthad_a=>6,

width_a=>8,

width_byteena_a=>1

PORTMAP(

clock0=>inclock,

address_a=>address,

q_a=>sub_wire0

);

ENDSYN;

5、PSK模块程序

LIBRARYIEEE;

USEAP_SKIS

PORT(

SIN:

INSTD_LOGIC_VECTOR(7DOWNTO0);

K,A,P:

INSTD_LOGIC;

SOUT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)

);

ENDAP_SK;

ARCHITECTUREbehavOFAP_SKIS

BEGIN

process(A,K,P,SIN)

BEGIN

IFK='0'THEN

ELSIFP='0'THENSOUT<=SIN;

ELSESOUT<=NOTSIN;

ENDIF;

ENDPROCESS;

ENDbehav;

四、实验结果

PSK调制测试结果

五、参考书目

1、潘松黄继业EDA技术实用教程科学出版社2006年9月

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2