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

这篇具有很好参考价值的文章主要介绍了m基于FPGA的数字下变频verilog设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.算法描述

2.仿真效果预览

3.verilog核心程序

4.完整FPGA


1.算法描述

整个数字下变频的基本结构如下所示

fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

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

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

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

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

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

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

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

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

fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

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

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

fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

RTL图:

fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

综合资源占用:

fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

2.仿真效果预览

本系统采用了2个FPGA平台开发,分别是

quartusii10.0,ModelSim-Altera 6.6d Starter Edition

vivaod2019.2

其中quartusii的仿真结果如下:

fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

 fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

 fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

 fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

 fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

vivado的仿真版本如下:

fpga设计数字下变频器,Matlab通信和信号,FPGA通信和信号处理,fpga开发,数字下变频

3.verilog核心程序

 
 
module tops2(
	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.完整FPGA

V文章来源地址https://www.toymoban.com/news/detail-833764.html

到了这里,关于m基于FPGA的数字下变频verilog设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【西门子PLC S7-200smart与汇川变频器通过通讯控制】

    一,变频器通讯设置部分 先查看汇川变频器的使用说明书,将FD组“通讯参数设置”设置好对应波特率,数据格式,本机地址,通讯协议 FD-00 波特率设置   0:300bps 1:600bps 2:1200bps 3:2400bpd 4:4800bps 5:9600bps9:115200bps FD-01 数据格式    1:偶校验  2:奇校验  3:无校验 FD-02 本机地

    2024年02月04日
    浏览(73)
  • 485modbus转profinet网关连三菱变频器modbus通讯触摸屏监控

    本案例介绍了如何通过485modbus转profinet网关连接威纶通与三菱变频器进行modbus通讯。485modbus转profinet网关提供了可靠的连接方式,使用户能够轻松地将不同类型的设备连接到同一网络中。通过使用这种网关,用户可以有效地管理和监控设备,从而提高生产力和效率。 打开博图

    2024年02月11日
    浏览(39)
  • 【FPGA】Verilog:时序电路设计 | 二进制计数器 | 计数器 | 分频器 | 时序约束

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:计数器与分频器   ​​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用

    2024年02月02日
    浏览(58)
  • 数字信号处理----数字上变频和下变频都FPGA实现

    数字上变频器(DUC)和数字下变频器(DDC)广泛应用于通信系统,用于信号采样速率的转换。当信号从基带转换至中频( IF )带,需要使用数字上变频器。而数字下变频器是用于将信号从中频( IF )带转换为基带。DUC和DDC通常包括使用混频器进行频率转换,此外还有采样率

    2024年01月16日
    浏览(54)
  • FPGA【Verilog分频器】

            在数字系统的设计中经常会碰到需要使用多个时钟的情况。时钟信号的产生通常具有两种方法,一种是使用PLL(Phase Locked Loop,锁相环),可生成倍频、分频信号;另一种则是使用硬件描述语言构建一个分频电路。         分频器的设计通常分为以下三类:奇

    2024年02月20日
    浏览(45)
  • 【FPGA & Verilog】奇数分频器 (50%)

    2.1 设计输⼊ 1. 模块名称:FrequencyDivider 2. 输⼊输出:CLK、RSTn、CLK_15 2.2 引脚约束 1. 输⼊端 ⾃定义 2. 输出端 ⾃定义 2.3 设计要求 1. 输出时钟的周期是输⼊时钟的15倍(15分频器) 2. 分别实现 7/15 占空⽐和 50% 占空⽐两种分频⽅式 3. 使⽤RTL View分析电路的区别 2.4 电路仿真1.

    2024年02月03日
    浏览(34)
  • 基于FPGA的数字电子琴——数电小系统设计【数字电子技术】(使用Vivado中的verilog语言)含piano代码文件(全)

    目录 一、电路功能描述 二、方案设计 1. 总体设计方案 2. 对原理框图或程序流程图做出简单解释 3. 各模块介绍 3.1 音频驱动模块 3.2 LED显示模块 3.3 数码管显示模块 3.4 矩阵键盘模块 3.5 PS2机械键盘模块 3.6 时钟分频模块 3.7 曲谱生成模块 三、总结 数码管和LED显示模块 矩阵键盘

    2024年02月06日
    浏览(51)
  • FPGA学习日记——verilog实现分频器

    主要思想是利用计数器实现分频器功能,其中按原理不同可分为分频和降频 一、先说分频。 1、第一种实现方式 输入信号为系统时钟50MHz,本例子先以偶数倍六分频为例实现分频的第一种方式:计数器对系统时钟的上升沿进行计数,最大计数M=5,即count取值范围为0~5,当计数

    2024年02月04日
    浏览(43)
  • FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

    2019   级    电子科学与技术   专业FPGA课程设计 报   告 2022  年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用EDA技术设计的结果既可以用FPGA / CPLD来实施验证,也可以直接做成专用集成电路(ASIC)。

    2024年02月03日
    浏览(43)
  • 基于FPGA的CAN通讯verilog代码设计

    FPAGA本篇文章参考github网站的开源项目can-FPGA-master编写改进 在调试过程中,发现该项目无法在quartus pro13.0的环境下运行通过,代码存在错误,并且对于EP4系列的芯片来说有太多的IO口,无法在烧录,所以笔者对此进行了改进。  can_top模块 can_tx传输数据模块 can_rx接收数据模块

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包