• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的基础数字 AM 调制/解调系统设计Verilog代码VIVADO仿真

08/01 09:05
695
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240612095Q93B.docx

共1个文件

名称:基于FPGA的基础数字 AM 调制/解调系统设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

? 任务

本课程设计需要搭建一个基础数字?AM?调制/解调系统,该系统在?FPGA?的控制下,实现:

(1)FPGA?内实现数字?DDS?可调频率的正弦波输出。

(2)FPGA?内实现低频正弦 信号对?DDS?中频的?AM?包络调制输出,并?DA?输出得到调制波形。

(3)通过?AD?采集进行包络解调恢复调制波。

(4)拓展综合任务设计,完成正交解调

?要求

1、理解通信原理中调制、解调技术和实现原理;

2、理解?FPGA?的实现工艺,与?HDL?的关系;

3、掌握?ISE?的?FPGA?开发方法;

4、掌握?DDS?的?FPGA?实现原理及方法;

5、掌握?AM?调制、包络解调的数字实现方法;

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

设计报告

a)关键参数

时钟频率:

100MHz

输出位宽:

8bit

相位控制字位宽:

16bit

频率控制字位宽:

16bit

频率精度:

1525.88Hz

输出频率计算: f=100MHz* N/2^16 ? (N为频率控制字)

2、DDS设计实现(5分)

a)输入系统时钟频率为 ?100MHz

b)设计产生 1525.88 Hz正弦波,其频率控制字为 ? 1 ? ,相位控制字为 0

c)设计产生 22888.2 Hz正弦波,其频率控制字为 ?15 ? ,相位控制字为 0

d)设计产生其他波形,绘制波形图并标明波形基本参数(选做)

3、DDS设计仿真记录(8分)

a)DDS输出波形图

b)DDS输出波形频率、振幅、均值

频率=1525.88Hz,

振幅为0~255,

均值为125

1、 AM调制设计实现(8分)

a) 系统时钟频率为 100MHz

b) 设计基波102233.88 Hz正弦波,其频率控制字为 67 ? ?,相位控制字为 0

c) 设计载波6.103 MHz正弦波,其频率控制字为 4000 ?,相位控制字为 0

d) 设计调制深度为 ?0.502

2、 AM调制仿真记录(10分)

a) 输入基波波形图,标明频率、振幅、均值

频率=102233.88Hz,幅值为63~190;均值为126.5

b) 输入载波波形图,标明频率、振幅、均值

频率=6.103MHz,幅值为-126~126;均值为0

c) 输出AM调制波波形图,标明频率、最大最小振幅、均值、调制深度

包络频率:=102233.88Hz

载波频率:=6.103MHz

最大振幅:173

最小振幅:141

信号均值:126

调制深度:

Vmax=173-126=47

Vmim=141-126=15

调制深度Ma=(47-15)/(47+15)=0.516

1、 包络检波设计实现(8分)

a) 系统时钟频率为 ?100MHz

b) 设计中FIR数字低通滤波器截止频率为 1MHz ? ,请介绍滤波器的设计依据。

因为载波频率为6.103MHz,基波频率为102.2KHz,为滤除6.103MHz的频率,可以将截止频率设置为1MHz,即低于1MHz的频率可以通过,高于1MHz的将被滤除。

2、 包络检波仿真记录(10分)

a) 待处理的AM调制波形图,标明频率、最大最小振幅、均值、调制深度

包络频率:=102233.88Hz=102.23KHz

载波频率:=6.103MHz

最大振幅:173

最小振幅:141

信号均值:126

调制深度:

Vmax=173-126=47

Vmim=141-126=15

调制深度Ma=(47-15)/(47+15)=0.516

b) 检波后输出波形图,标明频率、振幅、均值

输出频率:根据周期计算约等于103.09KHz(由于是肉眼观察周期计算均值,故存在一点误差,属于正常现象)

输出振幅:1239~3838

信号均值:1299.5

部分代码展示:

`timescale?1ns?/?1ps
module?AM(
????input?clk_100,
????input?AM_rst,
????input?[7:0]?f,?//am调制基波频率
????output?[7:0]?am_output_data?//am调制输出波形
????);
wire?clk_100;
wire?AM_rst;
wire?DDS_core_rst_n;
wire?[7:0]?f;
reg?[7:0]?am_output_data;
wire?[7:0]?dds1_output_data;
wire?[7:0]?add1_output_data;
wire?[7:0]?dds2_output_data;
wire?[15:0]?mult_output_data;
wire?[15:0]?add2_output_data;
assign?DDS_core_rst_n?=?~AM_rst;
always?@(posedge?clk_100)?
begin
if(AM_rst)?
begin
am_output_data?<=?0;
end?
else?
begin
am_output_data?<=?{1'b0,add2_output_data[15:9]}?+?8'b0011_1111;
end
end
DDS?dds1
(
????.dds_clk_100(clk_100),?//工作时钟100M
????.dds_rst(AM_rst),
????.dds_f({8'b0000_0000,f}),?//频率控制
????.dds_p(16'd0),?//相位控制
????.dds_a(8'd2?),?//幅度控制
????.dds_data_output(dds1_output_data)?//输出
????);
????c_addsub_1?add1?
????(
.A(dds1_output_data),??????//?input?wire?[7?:?0]?A
.B(8'b0011_1111),??????//?input?wire?[7?:?0]?B
.CLK(clk_100),??//?input?wire?CLK
.S(add1_output_data)??????//?output?wire?[7?:?0]?S
);
????dds_compiler_0?dds2?
????(
.aclk(clk_100),????????????????????????????????//?input?wire?aclk
.aresetn(DDS_core_rst_n),
.m_axis_data_tvalid(),????//?output?wire?m_axis_data_tvalid
.m_axis_data_tdata(dds2_output_data),??????//?output?wire?[7?:?0]?m_axis_data_tdata
.m_axis_phase_tvalid(),??//?output?wire?m_axis_phase_tvalid
.m_axis_phase_tdata()????//?output?wire?[15?:?0]?m_axis_phase_tdata
);
mult_gen_0?mult?
(
.CLK(clk_100),??//?input?wire?CLK
.A(dds2_output_data),??????//?input?wire?[7?:?0]?A
.B(add1_output_data),??????//?input?wire?[7?:?0]?B
.P(mult_output_data)??????//?output?wire?[15?:?0]?P
);
c_addsub_0?add2?
(
.A(mult_output_data),??????//?input?wire?[15?:?0]?A
.CLK(clk_100),??//?input?wire?CLK
.S(add2_output_data)??????//?output?wire?[15?:?0]?S
);
endmodule

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=850

  • 2-240612095Q93B.docx
    下载

相关推荐