m基于FPGA的数字下变频verilog设计

简介: m基于FPGA的数字下变频verilog设计

1.算法描述
整个数字下变频的基本结构如下所示

image.png

NCO使用CORDIC算法,CIC采用h结构的CIC滤波器,HBF采用复用结构的半带滤波器,而FIR则采用DA算法结构。

这里,我们首先假设不考虑中频信号输入的载波频偏问题,即发送的中频频率和本地的载波频率是一致的。

为了验证系统的正确性,我们首先需要设计一个发送源,由于你要求的信号带宽为20M,

所以整个系统我们设计的系统参数为,中频为80M,A/D采样为60M。本地接收端的载波频率为20M。

即发送端通过80M的中频调制之后,信号的频谱会搬移到80M附近,然后接收端通过AD60M采样后,会将频谱搬移到20M附近,且不会发生混叠现象。

那么系统测试方案可以简化为,一个中心频率在20M附近的中频输入测试信号进行测试。

首先设计一个发送测试信号。

信号的基本结构如下所示:

image.png

  我们首先在FPGA中设计这么一个结构得到中频测试信号,然后使用这个测试信号进行下变频测试。

整个系统的原理框图如下所示:

image.png

RTL图:

image.png

综合资源占用:
image.png

2.仿真效果预览
quartusii10.0,ModelSim-Altera 6.6d Starter Edition

6.png
7.png
8.png
9.png
10.png

3.verilog核心程序

    reset,
    clk,
    clk0,
    rst0,
    clk1,
    rst1,
    I0,
    phase0,
    phase1,
    Q0,
    cosr,
    I_cic,
    I_d,
    I_hb,
    I_out,
    Q_d,
    Q_out,
    R,
    sinr
);
 
 
input wire    reset;
input wire    clk;
input wire    clk0;
input wire    rst0;
input wire    clk1;
input wire    rst1;
input wire    [7:0] I0;
input wire    [7:0] phase0;
input wire    [7:0] phase1;
input wire    [7:0] Q0;
output wire    [7:0] cosr;
output wire    [47:0] I_cic;
output wire    [13:0] I_d;
output wire    [31:0] I_hb;
output wire    [15:0] I_out;
output wire    [13:0] Q_d;
output wire    [15:0] Q_out;
output wire    [13:0] R;
output wire    [7:0] sinr;
 
wire    [47:0] I_cic_ALTERA_SYNTHESIZED;
wire    [31:0] I_hb_ALTERA_SYNTHESIZED;
wire    [47:0] Q_cic;
wire    [31:0] Q_hb;
wire    [13:0] SYNTHESIZED_WIRE_0;
wire    [13:0] SYNTHESIZED_WIRE_1;
wire    [13:0] SYNTHESIZED_WIRE_2;
wire    SYNTHESIZED_WIRE_3;
wire    SYNTHESIZED_WIRE_4;
wire    SYNTHESIZED_WIRE_5;
wire    SYNTHESIZED_WIRE_6;
 
assign    I_d = SYNTHESIZED_WIRE_0;
assign    Q_d = SYNTHESIZED_WIRE_1;
assign    R = SYNTHESIZED_WIRE_2;
 
 
 
 
cic_top    b2v_inst(
    .i_clk(clk),
    .i_rst(reset),
    .i_din(SYNTHESIZED_WIRE_0),
    .o_clk16(SYNTHESIZED_WIRE_3),
    .o_dout(I_cic_ALTERA_SYNTHESIZED));
    defparam    b2v_inst.WIDTH = 48;
 
 
cic_top    b2v_inst1(
    .i_clk(clk),
    .i_rst(reset),
    .i_din(SYNTHESIZED_WIRE_1),
    .o_clk16(SYNTHESIZED_WIRE_4),
    .o_dout(Q_cic));
    defparam    b2v_inst1.WIDTH = 48;
 
 
Rec    b2v_inst12(
    .clk(clk1),
    .rst(rst1),
    .phase(phase1),
    .recs(SYNTHESIZED_WIRE_2),
    .Iss(SYNTHESIZED_WIRE_0),
    .Qss(SYNTHESIZED_WIRE_1));
 
 
hb_filter_02    b2v_inst2(
    .i_clk(SYNTHESIZED_WIRE_3),
    .i_rst(reset),
    .i_din(I_cic_ALTERA_SYNTHESIZED[34:19]),
    .o_clk2(SYNTHESIZED_WIRE_5),
    .o_dout(I_hb_ALTERA_SYNTHESIZED));
    defparam    b2v_inst2.h0 = 27316;
    defparam    b2v_inst2.h1 = 20073;
    defparam    b2v_inst2.h11 = 1238;
    defparam    b2v_inst2.h13 = -1175;
    defparam    b2v_inst2.h15 = -624;
    defparam    b2v_inst2.h3 = -4745;
    defparam    b2v_inst2.h5 = 965;
    defparam    b2v_inst2.h7 = 667;
    defparam    b2v_inst2.h9 = -1238;
 
 
hb_filter_02    b2v_inst3(
    .i_clk(SYNTHESIZED_WIRE_4),
    .i_rst(reset),
    .i_din(Q_cic[34:19]),
    .o_clk2(SYNTHESIZED_WIRE_6),
    .o_dout(Q_hb));
    defparam    b2v_inst3.h0 = 27316;
    defparam    b2v_inst3.h1 = 20073;
    defparam    b2v_inst3.h11 = 1238;
    defparam    b2v_inst3.h13 = -1175;
    defparam    b2v_inst3.h15 = -624;
    defparam    b2v_inst3.h3 = -4745;
    defparam    b2v_inst3.h5 = 965;
    defparam    b2v_inst3.h7 = 667;
    defparam    b2v_inst3.h9 = -1238;
 
 
firfilter_da    b2v_inst4(
    .CLK(SYNTHESIZED_WIRE_5),
    .Reset(reset),
    .DIN(I_hb_ALTERA_SYNTHESIZED[30:23]),
    .Dout(I_out));
 
 
firfilter_da    b2v_inst5(
    .CLK(SYNTHESIZED_WIRE_6),
    .Reset(reset),
    .DIN(Q_hb[30:23]),
    .Dout(Q_out));
 
 
Trans    b2v_inst6(
    .clock(clk0),
    .reset(rst0),
    .I(I0),
    .phase(phase0),
    .Q(Q0),
    .cosr(cosr),
    .r(SYNTHESIZED_WIRE_2),
    .sinr(sinr));
 
assign    I_cic = I_cic_ALTERA_SYNTHESIZED;
assign    I_hb = I_hb_ALTERA_SYNTHESIZED;
 
endmodule
01-115m
相关文章
|
4月前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
128 7
|
4月前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
4月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
163 2
|
4月前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
96 1
|
4月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。
|
4月前
|
算法 异构计算
m基于FPGA的MPPT最大功率跟踪算法verilog实现,包含testbench
该内容包括三部分:1) 展示了Vivado 2019.2和Matlab中关于某种算法的仿真结果图像,可能与太阳能光伏系统的最大功率点跟踪(MPPT)相关。2) 简述了MPPT中的爬山法原理,通过调整光伏电池工作点以找到最大功率输出。3) 提供了一个Verilog程序模块`MPPT_test_tops`,用于测试MPPT算法,其中包含`UI_test`和`MPPT_module_U`两个子模块,处理光伏电流和电压信号。
50 1
|
2月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
升级版FPGA MSK调制解调系统集成AWGN信道模型,支持在Vivado 2019.2中设置不同SNR仿真误码率。示例SNR值从0到15,结果展示解调质量随SNR提升。MATLAB仿真验证了MSK性能,图片显示了仿真结果。 ### 理论概要 研究聚焦于软件无线电中的MSK调制解调,利用Verilog实现。MSK是一种相位连续、恒包络的二进制调制技术,优点包括频谱效率高。系统采用无核设计,关键模块包括调制器、解调器和误码检测。复位、输入数据、中频信号等关键信号通过Verilog描述,并通过Chipscope在线观察。
64 6
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
|
2月前
|
C语言 芯片 异构计算
FPGA新起点V1开发板(六-语法篇)——verilog简介+基础语法
FPGA新起点V1开发板(六-语法篇)——verilog简介+基础语法
|
4月前
|
算法 异构计算
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
48 0
|
3月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```

热门文章

最新文章