FPGA的BPSK调制verilog

news2025/1/6 17:53:57

名称:BPSK调制verilog

软件:Quartus

语言:Verilog

要求:

一、设计说明

BPSK调制广泛应用于卫星通信、移动通信等领域。本题目要求设计一个基于直接数字频率合成技术的BPSK调制器,实现对输入周期数字比特流的BPSK调制。

二、设计要求

1. 输入数字比特流波形和输出BPSK调制波形必须能够通过示波器或在ModelSim中观测到。

2. 调制器输入数字比特流的速率不低于10kbps。

3. 使用ALTERA公司的FPGA器件进行开发。

4. 可根据情况增加其他功能。

代码下载:BPSK调制verilog_Verilog/VHDL资源下载

代码网:hdlcode.com

部分代码展示

`timescale 1ns / 1ps
//要求输入的数字比特流通过外面的8个开关循环8bit,按不低于10K的速率串行发这个数据.
//按键可以切换几个不同的载波频率(正弦波)
//输出频率f=clk_50M*frequency/2^10
module DDS_top(
    input clk_50M,
 input rst_n,//复位
 input freq_key_in,//frequency控制按键
 input [7:0] data_in,//调制信号,8bit
 output [7:0] BPSK_wave//BPSK波形输出
    );
wire [9:0] addra;
wire [9:0] addra_cos;
assign addra_cos=addra+512;
//wire [7:0] douta_fangbo;
wire [7:0] douta_sin;
wire [7:0] douta_cos;
wire [7:0] frequency;//频率控制字,控制输出波形频率,值越大,频率越大
wire [15:0] wave;//BPSK调制后波形
wire freq_key;
wire data_o;
//按键消抖
key_jitter i_key_jitter(
. clkin(clk_50M),
. key_in(freq_key_in),//输入
. key_negedge(freq_key)//消抖后按键下降沿
);
//频率控制
fre_sel i_fre_sel(
. clk(clk_50M),
. key(freq_key),
. frequency(frequency)///频率控制字,控制输出波形频率,值越大,频率越大
);
//sin波ROM
sin_ROM i_sin_ROM (
  .clock(clk_50M),    // input wire clka
  .address(addra),  // input wire [9 : 0] addra
  .q(douta_sin)  // output wire [7 : 0] douta
);
sin_ROM i_cos_ROM (
  .clock(clk_50M),    // input wire clka
  .address(addra_cos),  // input wire [9 : 0] addra
  .q(douta_cos)  // output wire [7 : 0] douta
);
//频率累加器
Frequency_ctrl i_Frequency_ctrl(
. clk_50M(clk_50M),
. rst_n(rst_n & freq_key_in),
. frequency(frequency),//频率控制字
. addra(addra)//输出地址
    );
 
//调试信号输出
//输入的数字比特流通过外面的8个开关循环8bit,按不低于10K的速率串行发这个数据.
data_read i_data_read(
. clk_50M(clk_50M),
. rst_n(rst_n & freq_key_in),//复位
. data_in(data_in),//调制信号,8bit
. data_o(data_o)//串行输出信号
);
//调制模块
data_bpsk i_data_bpsk(
. clk_50M(clk_50M),
. rst_n(rst_n & freq_key_in),//复位
. data_o(data_o),//调制信号
. douta_sin(douta_sin),//sin
. douta_cos(douta_cos),//cos
. BPSK_wave(BPSK_wave)//BPSK波形输出
);

设计文档(文档点击可下载):

本要求设计一个基于直接数字频率合成技术的BPSK调制器的FPGA IP核,实现对输入周期数字比特流的BPSK调制,其中调制器输入数字比特流的速率不低于10kbps。

首先需要产生调制信号,调制信号使用外部8位拨码开关控制,设计一个并转串模块将8位并行信号转换为串行输出信号,信号比特流的速率不低于10kbps。然后需要设计载波信号,载波采用正弦波,使用ROM存储一个1024点的正弦波信号和余弦信号,同时为了使载波频率可调,通过一个按键控制ROM的读速率即可控制载波频率。最后设计调制模块,通过调制信号控制当前输出是正弦波还是余弦波,从而达到BPSK调制的目的。

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

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

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

相关文章

LVGL_基础知识

LVGL_基础知识 1、设置对象大小 lv_obj_t * obj lv_obj_create(lv_scr_act()); //lv_obj_set_width(obj, 300); //lv_obj_set_height(obj, 500); lv_obj_set_size(obj,200, 240);//和上面两句的效果一样2、获取对象大小 lv_obj_t * obj lv_obj_create(lv_scr_act()); //lv…

GPS硬件坐标转百度地图坐标

在地图定位开发中,许多定位模块输出坐标系是国际标准 WGS-84 坐标系,所以开发者在国内常见地图定位时,会发现与实际情况有几十米的误差。这并非模块问题, 而是国内地图采用了非标坐标系所致。 国内常见地图如高德地图使用 GCJ-02 …

Kubernetes集群+Keepalived+Nginx+防火墙 实例

目录 实验前期规划 1.拓扑图结构 2.实验要求 3.实验环境规划 一.kubeadm 部署 K8S 集群架构 1.环境准备 2.三个节点安装docker 3.三个节点安装kubeadm,kubelet和kubectl 4.部署K8S集群 (1)初始化 4.部署K8S集群 (1&am…

133.【MySQL_运维篇】

MySQL_运维 (一)、日志 ⭐1.日志_错误日志 (ERROR-LOG)(1).错误日志_介绍(2).错误日志_示列 2.日志_二进制日志 (BINARY-LOG)(1).二进制日志_介绍(2).二进制日志_作用(3).二进制日志_格式(4).二进制日志_查看 (CMD)(5).二进制日志_删除 3.日志_查询日志 (GENERAL-LOG)(1).开启_…

SPA项目的登录注册实现以及数据交互问题

目录 前言 一. 登录,注册静态页面实现 1.1 ElementUI简介 1.2 基于SPA项目完成登录注册 1.2.1 在SPA项目中添加elementui依赖 1.2.2 在main.js中添加elementui模块 1.2.3 在src目录下创建views目录,用于存放vue组件 1.2.4 配置路由 1.2.5 修改项目…

简单而经典:Java中的冒泡排序算法详解

当谈到简单的排序算法时,冒泡排序(Bubble Sort)通常是其中之一。虽然它不是最高效的排序算法之一,但它的简单性和易于理解使它成为学习排序算法的良好起点。在本文中,我们将详细介绍Java中的冒泡排序。 冒泡排序的基本…

服务注册发现_服务自保和服务剔除机制

服务剔除,服务自保,这两套功法一邪一正,俨然就是失传多年的上乘心法的上卷和下卷。但是往往你施展了服务剔除便无法施展服务自保,而施展了服务自保,便无法施展服务剔除。也就是说,注册中心在同一时刻&#…

主从复制MySQL

概述 细节: 1.主库提供增删改的操作,从库提供查询的操作,分担主库压力 2.通过从库备份,全局锁不影响查询,只不过加了全局锁在从库中的数据同步会有一定延迟 3.从库也可以做别的服务器的主库 原理 主从复制的原理是基于二进制日志文件的,当主库中发生数据改变以后,会把SQL写入到…

力扣刷题-链表-翻转链表

反转链表是面试中高频题目,很考察面试者对链表操作的熟练程度。 如果再定义一个新的链表,实现链表元素的反转,其实这是对内存空间的浪费。 其实只需要改变链表的next指针的指向,直接将链表反转 ,而不用重新定义一个新的…

vue指令(代码部分三)

<template><view><view click"onClick">标题&#xff1a;{{title}}</view><input type"text" v-model"title"/>----------------案例----------------<view class"out"><view class"row&…

使用CPU本地部署一个大模型

前言 不少人都想要部署一个自己的本地大模型&#xff0c;但是受限于昂贵的硬件资源只能作罢&#xff0c;即便是量化后的模型也通常要至少5G&#xff08;ChatGLM2-6B INT4&#xff09;的显存。因此我们想到能不能使用CPU来进行部署&#xff0c;当然了&#xff0c;要接受比较慢的…

Qt元对象系统

元对象系统 一 元对象系统的基本概念 qt 元对象系统主要提供功能&#xff1a;对象间通信的信号和槽机制&#xff0c;运行时类型信息和动态属性系统等。元对象系统是Qt对原有C进行的一些扩展&#xff0c;主要是为实现信号和槽机制引入的&#xff0c;信号和槽机制是Qt的核心特征…

二叉树题目:奇偶树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;奇偶树 出处&#xff1a;1609. 奇偶树 难度 4 级 题目描述 要求 如果一个二叉树满足下述条件&#xff0c;则称…

【深度学习】BLIP: 用于统一的视觉-语言理解和生成的引导式语言图像预训练

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP&#xff1a;用于统一的视觉-语言理解和生成的引导式语言图像预训练 论文&#xff1a;https://arxiv.org/abs/2201.12086 代码&#xff1a;https://github.…

springboot对接rabbitmq并且实现动态创建队列和消费

背景 1、对接多个节点上的MQ&#xff08;如master-MQ&#xff0c;slave-MQ&#xff09;&#xff0c;若读者需要自己模拟出两个MQ&#xff0c;可以部署多个VM然后参考 docker 安装rabbitmq_Steven-Russell的博客-CSDN博客 2、队列名称不是固定的&#xff0c;需要接受外部参数&…

【LRU】一文让你弄清 Redis LRU 页面置换算法

Q&#xff1a;一天同事问&#xff0c;我放在 redis 中的 key&#xff0c;为什么有时候过一段时间数据就没有了&#xff0c;我并没有设置过期时间呀&#xff1f;&#xff1f;&#x1f633;&#x1f633; A&#xff1a;你的 redis 淘汰策略是什么样的&#xff0c;这个 key 可能是…

dirname - return directory part of PATH.

用Visual Studio 2022开发Linux程序, 用ssh连接 函数单元测试 下载glibc解压到E:\library\GNU\glibc-2.38 mzhDESKTOP-GITL67P:~$ sudo /etc/init.d/ssh start * Starting OpenBSD Secure Shell server sshd …

【Spring】-Bean的作用域和生命周期

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Framework】 主要内容&#xff1a;Lombok的使用&#xff0c;Bean作用域的分类和修改。Singleton、Prototype。spring的执行流程&#xff0c;Bean的生命历程。 文章目录 一、Bea…

树莓派+墨水屏 = DIY一个超慢速电影播放器

安装电子墨水屏这里使用了 Waveshare 的一款墨水屏&#xff0c;带驱动板。将驱动板插入树莓派的 GPIO 即完成屏幕和树莓派的连接。驱动这个屏幕需要启用树莓派的 SPI 接口。运行 sudo raspi-config 进入配置工具来启用 SPI 运行python例程 安装函数库 sudo apt-get update su…

指针笔试题详解

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.前言 2.指针题写出下列程序的结…