m在ISE平台下使用verilog开发基于FPGA的GMSK调制器

news/2024/5/16 14:18:37/文章来源:https://blog.csdn.net/hlayumi1234567/article/details/128037743

目录

1.算法描述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法描述

       高斯最小频移键控(Gaussian Filtered Minimum Shift Keying),这是GSM系统采用的调制方式。数字调制解调技术是数字蜂窝移动通信系统空中接口的重要组成部分。GMSK调制是在MSK(最小频移键控)调制器之前插入高斯低通预调制滤波器这样一种调制方式。GMSK提高了数字移动通信的频谱利用率和通信质量。

       MSK属于一种特殊的2FSK调制,只是频偏为符号速率的1/4,这个特性使得在符号跳变时存在90°的相移,从而具有星座映射图。对于2FSK调制,有两个频率状态,分别对应符号“1”和“0”。如果映射到星座图上,每个符号的矢量轨迹都将在IQ坐标系的单位圆上旋转,旋转时长为符号周期。

       对于MSK调制,频偏为符号速率的1/4,这就使得每个符号周期内旋转90°,当符号为1111时,则沿着逆时针呈现四个90°相位跳变,如下图所示。MSK调制的这种特性使得其具有类似于QPSK调制的星座图,但是本质上仍然为2FSK,因此一个符号仍然只携带1bit信息。如果发射机端采用了Gaussian pulse shaping filter,则为GSM制式中使用的GMSK调制方式。

      GMSK调制技术是从MSK(Minimum Shift Keying)调制的基础上发展起来的一种数字调制方式,其特点是在数据流送交频率调制器前先通过一个Gauss滤波器(预调制滤波器)进行预调制滤波,以减小两个不同频率的载波切换时的跳变能量,使得在相同的数据传输速率时频道间距可以变得更紧密。由于数字信号在调制前进行了Gauss预调制滤波,调制信号在交越零点不但相位连续,而且平滑过滤,因此GMSK调制的信号频谱紧凑、误码特性好,在数字移动通信中得到了广泛使用,如广泛使用的GSM(Global System for Mobile communication)移动通信体制就是使用GMSK调制方式。
      l979年由日本国际电报电话公司提出的GMSK调制方式。有好的功率频谱特性,较优的误码性能,特别是带外辐射小,很适用于工作在VHF和UHF频段的移动通信系统,越来越引起人们的关注。GMSK调制方式的理论研究已较成熟,实际应用却还不多,主要是由于高斯滤波器的设计和制作在工程上还有一定的困难。调制前高斯滤波的最小频移键控简称GMSK,基本的工作原理是将基带信号先经过高斯滤波器成形,再进行最小频移键控(MSK)调制。由于成形后的高斯脉冲包络无陡峭边沿,亦无拐点,因此频谱特性优于MSK信号的频谱特性。
       通常将高斯滤波器的3dB带宽B和输入码元宽度T的乘积BT值作为设计高斯滤波器的一个主要参数。BT值越小,GMSK信号功率频谱密度的高频分量衰减越快。

       GMSK调制技术的基本结构如下所示:
 

        原始码元信号首先经过双极性编码,然后对其进行采样,经过插值提高数据采样率,通过高斯低通滤波器对原始信号进行带宽限制处理,然后对限带信号进行MSK基带调制,生成相互正交的I、Q两路基带信号,I、Q两路信号再分别与在载波 、 相乘,最终再通过加法器,使两路信号相加,得到最终的GMSK调制信号,通过DA送到天线部分。

        经过AD采样过后的GMSK信号首先分别和数字载波 、 相乘,再通过低通滤波器,得到I、Q两路信号,对I、Q信号通过MSK解调,得到基带信号,通过CIC抽取滤波器后,降低基带信号的采样率,最后对解调后的基带信号做位同步、抽样判决,最后解码恢复出原始码元[ 1]。

2.仿真效果预览

ISE14.7

 

3.verilog部分代码预览

`timescale 1ns / 1psmodule tops(i_clk,i_rst,o_binary_gen,o_chafen_encode,o_gauss_filter,o_adder,o_cos_I,o_sin_Q,o_cos,o_sin,o_GMSK_I,o_GMSK_Q,o_GMSK_R				);
input              i_clk;
input              i_rst;
output             o_binary_gen;
output             o_chafen_encode;
output signed[15:0]o_gauss_filter;
output signed[31:0]o_adder;
output signed[15:0]o_cos_I;
output signed[15:0]o_sin_Q;
output signed[15:0]o_cos;
output signed[15:0]o_sin;
output signed[15:0]o_GMSK_I;
output signed[15:0]o_GMSK_Q;
output signed[15:0]o_GMSK_R;reg[3:0]cnt;
wire    clk_16div;
always @(posedge i_clk or posedge i_rst)
beginif(i_rst)begincnt <= 4'b0000;end 
else begincnt <= cnt + 4'd1;end
end
assign clk_16div = cnt[3];binary_gen binary_gen_u(.i_clk  (clk_16div), .i_rst  (i_rst), .o_dout (o_binary_gen));chafen_encode chafen_encode_u(.i_clk  (clk_16div), .i_rst  (i_rst), .i_din  (o_binary_gen), .o_dout (o_chafen_encode));gauss_filter gauss_filter_u(.i_clk  (i_clk), .i_rst  (i_rst), .i_din  ({~o_chafen_encode,1'b1}), .o_dout (o_gauss_filter));adder adder_u(.i_clk  (i_clk), .i_rst  (i_rst), .i_din  (o_gauss_filter), .o_dout (o_adder));nco_gen nco_gen_u(.i_clk(i_clk), .i_rst(i_rst), .i_adder(o_adder), .o_cos(o_cos_I), .o_sin(o_sin_Q));	 nco_gen2 nco_gen2_u(.i_clk(i_clk), .i_rst(i_rst), .o_cos(o_cos), .o_sin(o_sin));wire signed[31:0]I_tmps;
wire signed[31:0]Q_tmps;multer multer_u1(.clk (i_clk),.a   (o_cos_I), // Bus [15 : 0] .b   (o_cos), // Bus [15 : 0] .sclr(i_rst),.p   (I_tmps)); // Bus [31 : 0] multer multer_u2(.clk (i_clk),.a   (o_sin_Q), // Bus [15 : 0] .b   (o_sin), // Bus [15 : 0] .sclr(i_rst),.p   (Q_tmps)); // Bus [31 : 0] 	 assign o_GMSK_I = I_tmps[31:16];	 
assign o_GMSK_Q = Q_tmps[31:16];	 	 assign o_GMSK_R = o_GMSK_I + o_GMSK_Q;endmodule
01_081_m

4.完整verilog程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES6 入门教程 26 编程风格 26.1 块级作用域 26.2 字符串 26.3 解构赋值

ES6 入门教程 ECMAScript 6 入门 作者&#xff1a;阮一峰 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录ES6 入门教程26 编程风格26.1 块级作用域26.1.1 **let 取代 var**26.1.2 **全局常量和线程安全**26.2 字符串26.3 解构赋值26 编程风格 …

【算法基础】P问题、NP问题、NP-Hard问题、NP-Complete问题

P问题、NP问题、NP-Hard问题、NP-Complete问题前提1. 时间复杂度&#xff1a;2. 约化(Reducibility)P问题NP问题NPHard问题NP-Complete问题其它&#xff1a;前提 1. 时间复杂度&#xff1a; 2. 约化(Reducibility) 如果能找到一个变化法则&#xff0c;对任意一个A程序的输入&…

TOWER 成就徽章 NFT 系列介绍——TOWER 生态系统的第一个灵魂通证(SBT)

2022 年 7 月&#xff0c;团队推出了成就徽章 NFT 系列&#xff0c;记录每个成员在 TOWER 生态系统中的努力。这是第一个不可转让的灵魂 NFT 系列&#xff08;SBT&#xff09;&#xff0c;代表了每个玩家的独特身份。 关于灵魂通证&#xff08;SBT&#xff09; 以太坊联合创始人…

linux的重定向与xshell原理

文章目录一、重定向1.输出重定向&#xff1a;>1.写入指定文件2. 覆盖写2.追加重定向 &#xff1a;>>3.输出重定向&#xff1a;<1.键盘显示2.文件显示4.重定向的一些认知误区1. test.c只显示错误的2. msg.c只显示正确的3.分析4.显示出正确的二 、xshell命令及原理1.…

2023年第三届智能制造与自动化前沿国际会议(CFIMA 2023)

2023年第三届智能制造与自动化前沿国际会议(CFIMA 2023) 重要信息 会议网址&#xff1a;www.cfima.org 会议时间&#xff1a;2023年6月9-11日 召开地点&#xff1a;中国大理 截稿时间&#xff1a;2023年4月20日 录用通知&#xff1a;投稿后2周内 收录检索&#xff1a;EI,…

关于SD-WAN的十问十答(最强攻略戳这里)

1. WAN和SD-WAN之间的区别&#xff1f; 从底层来看&#xff0c;相较基于硬件物理设施的WAN&#xff0c;SD-WAN是一种覆盖现有网络的软件技术&#xff0c;是部署在物理基础设施下层的流量管理网络。 和常规WAN相比&#xff0c;SD-WAN具有虚拟WAN体系结构和软件驱动技术&#xff…

国内优秀的多用户商城系统盘点(2022年整理)

电商战略时代&#xff0c;越来越多的企业或商家选择将消费者引入自己建设的独立商城&#xff0c;如零食行业的良品铺子、三只松鼠&#xff0c;从而打造属于自己的IP形象。此时&#xff0c;挑选一款优秀的商城源码是企业的不二之选&#xff0c;既降低了电商从业者和创业者的入门…

hive表加载csv格式数据或者json格式数据

先说简单的使用 CREATE TABLE cc_test_serde( id string COMMENT from deserializer, name string COMMENT from deserializer) ROW FORMAT SERDE org.apache.hadoop.hive.serde2.JsonSerDe STORED AS INPUTFORMAT org.apache.hadoop.mapred.TextInputFormat OUTPUTFO…

决策树-相关作业

1. 请使用泰勒展开推导gini不纯度公式&#xff1b; 2. 请说明树的剪枝怎么实现&#xff1b; ●预剪枝&#xff08;pre-pruning&#xff09;通过替换决策树生成算法中的停止准则。&#xff08;例如&#xff0c;最大树深度或信息增益大于某一阈值&#xff09;来实现树的简化。预…

Mybatis-plus通过exists判断记录是否存在

Mybatis-plus通过exists判断记录是否存在一、Controller二、Service三、效果一、Controller GetMapping("/queryNewProductExists")public Boolean queryNewProductExists(RequestParam("name") String name) {return opProductService.queryNewProductExi…

基于sklearn的集成学习实战

集成学习投票法与bagging 投票法 sklearn提供了VotingRegressor和VotingClassifier两个投票方法。使用模型需要提供一个模型的列表&#xff0c;列表中每个模型采用tuple的结构表示&#xff0c;第一个元素代表名称&#xff0c;第二个元素代表模型&#xff0c;需要保证每个模型…

CDGA|从平台自治到规范化的数据治理

数字时代&#xff0c;大型平台构建起局部市场&#xff0c;有众多市场主体在其上从事经济活动和社会交往。 平台上大量生产者消费者聚集产生的交易海量且高频&#xff0c;要处理的纠纷和各种问题数量巨大&#xff0c;远超出传统政府监管能力&#xff0c;事态变化之快速也远超出法…

Python实现BP神经网络ANN单隐层回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 20世纪80年代中期&#xff0c;David Runelhart。Geoffrey Hinton和Ronald W-llians、DavidParker等人分…

Web3D应用开发在线IDE【中文版】

nunuStudio 是一个Web 3D应用程序的集成开发环境&#xff0c;它提供用于在 3D 世界中创建和编辑对象的工具&#xff0c;支持JavaScript和Python对3D场景进行二次开发。nunuStudio中文版 由 BimAnt 提供。 如果你曾经使用过其他类似的框架&#xff08;unity、playcanvas、godot …

国网云(华为组件)使用

一、国网云(华为组件)介绍 一、项目各项环境 各项环境的介绍 MRS-Hive:MRS支持在大数据存储量大,计算资源需要弹性扩展的场景下,用户将数据存储在OBS服务中。使用MRS集群仅做数据计算处理的存算分离模式。DWS(高斯200):云原生数据库Gauss DB(DWS)1:融合分析能力是云原…

构建镜像开源工具 buildah

构建镜像开源工具 buildah tags: images 文章目录构建镜像开源工具 buildah1. 简介2. 特点3. Buildah 和 Podman4. 安装4.1 CentOS4.2 Ubuntu4.3 RHEL74.4 Fedora5. 命令6. 示例6.1 命令行构建一个 httpd 镜像6.2 Dockerfile 构建6.3 构建镜像脚本&#xff08;代替 Dockerfil…

centos7 clamav 杀毒软件安装

壹&#xff1a;编译安装 1&#xff0c;官网获取源码包 clamav官网地址 2&#xff0c;创建clamav 用户和存放病毒库目录 a, 创建clamav 用户和用户组 groupadd clamav && useradd -g clamav clamav && id clamavb,日志存放目录 mkdir -p /henan/clamav/lo…

Linux基本指令(二)

这章我们将继续介绍一些Linux常见的指令. 目录 more指令 less指令&#xff08;重要&#xff09; head指令 tail指令 时间相关的指令 cal指令 find指令 &#xff08;很重要&#xff09; which指令 alias指令 grep指令 xargs指令 zip/unzip指令 tar指令&#xff08;重要&#xff…

小熊U租港交所上市:市值28亿港元 京东联想腾讯是股东

雷递网 雷建平 11月24日小熊U租母公司凌雄科技集团有限公司&#xff08;简称&#xff1a;“凌雄科技”&#xff0c;股票代码为&#xff1a;“02436”&#xff09;今日在港交所上市。凌雄科技发行价为7.6港元&#xff0c;募资总额为3.37亿港元。凌雄科技开盘价为7.9港元&#xf…

Java并发编程实战读书笔记二

第五章 基础构建模块 5.1 同步容器类 5.1.1 同步容器类的问题 如下&#xff0c;如果list含有10个元素&#xff0c;线程A调用getLast的同时线程B调用deleteLast&#xff0c;那么getLast可能会报ArrayIndexOutOfBoundsException 改为如下方式能确保size和get一致 Vector迭代也…