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

news2024/10/5 16:20:51

目录

1.算法描述

2.仿真效果预览

3.verilog核心程序

4.完整FPGA


1.算法描述

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

 

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

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

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

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

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

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

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

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

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

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

RTL图:

综合资源占用:

2.仿真效果预览

quartusii10.0,ModelSim-Altera 6.6d Starter Edition

 

 

 

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/71933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华硕编程竞赛11月JAVA专场 B题召唤精灵 题解

作者主页:Designer 小郑 作者简介:软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲…

ATtiny13与Proteus仿真-GPIO与点亮LED仿真

GPIO与点亮LED仿真 1、GPIO介绍 ATtiny13的端口具有(Read-Modify-Write,读取-更改-写入)基础功能。这就意味着,可以通过 SBI 和 CBI 指令更改一个端口引脚的方向,而不会影响其他端口方向。同时,如果更改一个端口的值,也不会影响其他的端口的值。 ATtiny13的端口输出缓冲…

Spring boot前后端分离项目使用docker-compose部署在Ubuntu上 以及内网穿透,外网访问项目

docker-compose.yml部署vue Springboot前后端分离项目 以及内网穿透,外网访问项目一、windows上部署前后端项目,测试1、前端Vue打包,放到nginx的html中2、nginx代理转发后端端口:4、后端Springboot项目使用Maven打包二、Linux上使…

-aop-

文章目录一.动态代理实现invocationHandler二.AOP概述环绕通知Pointcut定义切入点一.动态代理实现invocationHandler 动态代理:可以在程序的执行过程中,创建代理对象。 通过代理对象执行方法,给目标类的方法增加额外的功能(功能增…

Filebeat采集数据到ES保证数据不重复

一.背景 业务需求使然,API接口负责收集用户传递上来的json数据,为了保证接口性能和数据的可靠性。我们没有直接拿到数据,然后存储到mysql或者kafka,而是直接使用最稳妥的方式,写文件。之后采用filebeat对数据文件进行采…

8_1、Java基本语法之多线程基本概念

一、涉及到多线程的基本概念 1、程序(programm) 概念:是为完成特定任务、用某种语言编写的一组指令的集合。即指一 段静态的代码,静态对象。 2、进程(process) 概念:是程序的一次执行过程,或是正在运行的一个程…

Cy7 Tyramide, Tyramide-Cy7,花青素Cy7 酪酰胺化学试剂供应

一:产品描述 1、名称 英文:Cyanine7 Tyramide,Cy7 Tyramide,Tyramide-Cy7 中文:花青素Cy7 酪酰胺 2、CAS编号:N/A 3、所属分类:Cyanine 4、分子量:802.01 5、分子式&#xff…

Docker学习6-Docker镜像commit操作案例

在上一篇中,我们知道了docker是基于联合文件系统的分层镜像。而且也知道了镜像是只读的,容器才是可以写的。那么,如果我们要修改镜像,修改之后,怎么提交呢?本文,凯哥将介绍,docker的…

svd分解

sklearn中svd分解 class sklearn.decomposition.TruncatedSVD(n_components2, *, algorithmrandomized, n_iter5, random_stateNone, tol0.0) 参数: n_components:整数,默认2 输出数据的所需维度。必须严格小于特征数。默认值对可视化很有用…

Git 操作 Gitea 出现 kex_exchange_identification: Connection closed by remote host

1. 问题背景 我的部分代码储存在使用 Gitea 搭建的服务上: DevWiki - 首页 - DevWiki Gitea 之前都是使用网页在网站上进行 仓库管理, 今天在clone代码的时候出现异常: kex_exchange_identification: Connection closed by remote host, 具体以下提示: $ git clone gitgit.d…

【案例分享】跨机房ES同步实战

背景 众所周知单个机房在出现不可抗拒的问题(如断电、断网等因素)时,会导致无法正常提供服务,会对业务造成潜在的损失。所以在协同办公领域,一种可以基于同城或异地多活机制的高可用设计,在保障数据一致性…

微软CTO谈AI:逃不掉马拉松就准备好跑鞋!30秒自动化妆机;ChatGPT刷爆票圈;剪纸风格的AI绘画 | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 📢 对话微软 CTO 凯文斯科特 (Kevin Scott):人工智能将去向何方? https://blogs.microsoft.com/ai/a-conversation-with-kevi…

【卡塔尔世界杯】空调制冷,全是科技与狠活

半自动化越位技术比赛用球AI Rihla球场智能空调Feelix Palm辅助技术可持续利用的体育场便利的数字设施和App 西班牙队和英格兰队穿外套出场,卡塔尔的空调功率到底有多大? 还是很大的,不管是室外还是室内,到处都安装了空调&#…

Verilog系统函数

Verilog系统函数前言一、$width(一)简介(二)$width 参数(三)例子二、Specify参数三、$display(一)简介(二)格式说明(三)例子1.例12.例…

Bert论文解读及相关代码实践

Bert:Bidirectional Encoder Representations from Transformers Transformer中双向Encoder表达学习。BERT被设计为通过在所有层中对左右上下文进行联合调节,从未标记文本中预训练深度双向表示。预训练的BERT模型可以通过仅一个额外的输出层进行微调&am…

AVS-试听分割-论文阅读

题目: Audio-Visual Segmentation 论文地址:https://arxiv.org/abs/2207.05042 GitHub地址:https://github.com/OpenNLPLab/AVSBench 项目主页:https://opennlplab.github.io/AVSBench/ 相关博客https://arxiv.org/abs/2203.03821 摘要 We propose to explore a new pro…

(附源码)ssm汽车租赁 毕业设计 271621

基于ssm的汽车租赁平台的设计与实现 摘 要 随着社会经济的快速发展,我国机动车保有量大幅增加,城市交通问题日益严重。为缓解用户停车难问题,本文设计并实现了汽车租赁平台.该系统通过错峰停车达到车位利用率最大化.基于现状分析,本文结合实际停车问题,从系统应用流程,系统软硬…

微电网和直流电网中最优潮流(OPF)的凸优化(Matlab代码实现)

📋📋📋本文目录如下:⛳️⛳️⛳️ 目录 1 概述 2 最优潮流 3 电力系统强大的CVX 4 直流电网中最优潮流(OPF)的凸优化 4.1 Matlab代码 4.2 运行结果 5 微电网中最优潮流(OPF)的凸优…

go gin web综合教程,包括 mysql redis log 路由

前言 在学习go许久,没看到网上有比较综合的gin web教程,很多都是最基础的教程,完全就是启动个服务返回参数,没有过多的结合实际开发。下面我结合一下我的经验,来写一篇深入的综合教程,包括数据库Mysql、re…

JMeter启动时常见的错误

很多小伙伴在学工具这一块时,安装也是很吃力的一个问题,之前记得有说过怎么安装jmeter这个工具。那么你要启动jmeter的时候,一些粉丝就会碰到如下几个问题。 1.解压下载好的jmeter安装,Windows 平台,双击 jmeter/bin …