数字信号处理——数字上边频和下变频器片上逻辑仪ILA

一、概述

数字上变频器(DUC)和数字下变频器(DDC)广泛应用于通信系统,用于信号采样速率的转换。当信号从基带转换至中频( IF )带,需要使用数字上变频器。而数字下变频器是用于将信号从中频( IF )带转换为基带。DUC和DDC通常包括使用混频器进行频率转换,此外还有采样率转换。DUC或DDC的结构主要取决于所需要的转换率。例如,WiMAX (全球互通微波接入)系统典型的转换率为8—10阶。对于如此低的转换率,DUC和DDC只需采用FIR滤波器架构。如果需要更高的转换率,DDC / DUC结构中需要使用级联积分梳状(CIC)滤波器。DDC用于滤波和降低输出数据速率。该数字处理部分包括数控振荡器:NCO(Nu-merical Control Oscillator)、半带抽取滤波器、FIR滤波器、增益级和复数-实数转换级。各处理模块都有控制线路,能单独使能或者禁用,以便提供所需的处理功能。通过配置数字下变频器,可以输出实数数据或复数数据。数字上变频DUC(Digital Up Converter),无线电发射链路中,数字信号经过转换成模拟信号,模拟信号经过混频后得到比原始信号高的期望的射频中心频率,然后信号经过放大到适当的功率电平,最后经过限制带宽后经天线发射出去。这种混频频率向上变化的方式叫做上变频。

二、基本原理

在这里插入图片描述

在这里插入图片描述

三、具体实现步骤

3.1 数字下变频(Direct Digital Controller,DDC)

首先完成数字下变频(Direct Digital Controller,DDC)工程,在此基础上进行下一步操作。数字下变频(Direct Digital Controller,DDC)工程不会创立的可以参考博主上一篇博客>,有详细说明。

https://blog.csdn.net/Born_toward/article/details/123221134

3.2 管教约束文件编写

在逻辑分析完成综合后,打开I/O port 窗口,对各个管脚进行物理约束。
首先建立管脚约束文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来 点击ImPlement Tion 中的Open Implemented Design
在这里插入图片描述
在这里插入图片描述
分配I/O 引脚
在这里插入图片描述
然后按Ctrl + S 保存到提前建立的管教约束文件中。
在这里插入图片描述

3.3 ILA 片上逻辑仪的使用

添加ILA IP核,配置输出 时钟 和 fir_out_data,实现上板后在vivado上完成片上逻辑分析。
在这里插入图片描述

四、仿真逻辑分析

可以看到输出的fir_out_data_OBUF与FIR Compiler 滤波之后的fir_out_data 波形一致,认定上板调试成功。
在这里插入图片描述

五、相关代码,仅供参考

主程序代码:


`timescale 1 ps / 1 ps

module DDC_wrapper
   (clk,
    fir_out_data,
    s_axis_data_tvalid_0);
  input clk;
  output [39:0]fir_out_data;
  input s_axis_data_tvalid_0;

  wire clk;
  wire [39:0]fir_out_data;
  wire s_axis_data_tvalid_0;

  DDC DDC_i
       (.clk(clk),
        .fir_out_data(fir_out_data),
        .s_axis_data_tvalid_0(s_axis_data_tvalid_0));
        
ila_0 ila_0_A (
	.clk(clk), // input wire clk


	.probe0(clk), // input wire [0:0]  probe0  
	.probe1(fir_out_data) // input wire [39:0]  probe1
);
endmodule

管脚约束文件代码

#create_clock -period 10.000 -name clk100MHZ [get_ports clk]
set_property PACKAGE_PIN W5 [get_ports clk]
set_property IOSTANDARD LVCMOS18 [get_ports clk]



set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[39]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[38]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[37]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[36]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[35]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[34]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[33]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[32]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[31]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[30]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[29]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[28]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[27]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[26]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[25]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[24]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[23]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[22]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[21]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[20]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[19]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[18]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[17]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[16]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[15]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[14]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[13]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[12]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[11]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[10]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[9]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[8]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[7]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[6]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[5]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[4]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[3]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[2]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[1]}]
set_property IOSTANDARD LVCMOS18 [get_ports {fir_out_data[0]}]

set_property IOSTANDARD LVCMOS18 [get_ports s_axis_data_tvalid_0]

set_property PACKAGE_PIN G3 [get_ports {fir_out_data[39]}]
set_property PACKAGE_PIN G2 [get_ports {fir_out_data[38]}]
set_property PACKAGE_PIN H2 [get_ports {fir_out_data[37]}]
set_property PACKAGE_PIN J2 [get_ports {fir_out_data[36]}]
set_property PACKAGE_PIN H1 [get_ports {fir_out_data[35]}]
set_property PACKAGE_PIN J1 [get_ports {fir_out_data[34]}]
set_property PACKAGE_PIN K2 [get_ports {fir_out_data[33]}]
set_property PACKAGE_PIN L2 [get_ports {fir_out_data[32]}]
set_property PACKAGE_PIN L1 [get_ports {fir_out_data[31]}]
set_property PACKAGE_PIN J3 [get_ports {fir_out_data[30]}]
set_property PACKAGE_PIN K3 [get_ports {fir_out_data[29]}]
set_property PACKAGE_PIN L3 [get_ports {fir_out_data[28]}]
set_property PACKAGE_PIN M3 [get_ports {fir_out_data[27]}]
set_property PACKAGE_PIN M2 [get_ports {fir_out_data[26]}]
set_property PACKAGE_PIN M1 [get_ports {fir_out_data[25]}]
set_property PACKAGE_PIN N2 [get_ports {fir_out_data[24]}]
set_property PACKAGE_PIN N1 [get_ports {fir_out_data[23]}]
set_property PACKAGE_PIN N3 [get_ports {fir_out_data[22]}]
set_property PACKAGE_PIN P3 [get_ports {fir_out_data[21]}]
set_property PACKAGE_PIN P1 [get_ports {fir_out_data[20]}]
set_property PACKAGE_PIN A14 [get_ports {fir_out_data[19]}]
set_property PACKAGE_PIN A15 [get_ports {fir_out_data[18]}]
set_property PACKAGE_PIN C15 [get_ports {fir_out_data[17]}]
set_property PACKAGE_PIN B15 [get_ports {fir_out_data[16]}]
set_property PACKAGE_PIN A16 [get_ports {fir_out_data[15]}]
set_property PACKAGE_PIN A17 [get_ports {fir_out_data[14]}]
set_property PACKAGE_PIN C16 [get_ports {fir_out_data[13]}]
set_property PACKAGE_PIN B16 [get_ports {fir_out_data[12]}]
set_property PACKAGE_PIN C17 [get_ports {fir_out_data[11]}]
set_property PACKAGE_PIN B17 [get_ports {fir_out_data[10]}]
set_property PACKAGE_PIN B18 [get_ports {fir_out_data[9]}]
set_property PACKAGE_PIN A18 [get_ports {fir_out_data[8]}]
set_property PACKAGE_PIN W15 [get_ports {fir_out_data[7]}]
set_property PACKAGE_PIN W13 [get_ports {fir_out_data[6]}]
set_property PACKAGE_PIN W14 [get_ports {fir_out_data[5]}]
set_property PACKAGE_PIN U15 [get_ports {fir_out_data[4]}]
set_property PACKAGE_PIN U16 [get_ports {fir_out_data[3]}]
set_property PACKAGE_PIN V13 [get_ports {fir_out_data[2]}]
set_property PACKAGE_PIN V14 [get_ports {fir_out_data[1]}]
set_property PACKAGE_PIN U14 [get_ports {fir_out_data[0]}]

set_property PACKAGE_PIN D18 [get_ports s_axis_data_tvalid_0]



六、参考文献

[1] 无线通信的MATLAB和FPGA实现 / 西瑞克斯(北京)通信设备有限公司编著.——北京:人民邮电出版社,2009.6

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Born_toward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值