FPGA应用开发和仿真【3.8】

8.8.3 调制解调仿真

仿真模拟的系统与AM仿真时类似,结构如图8-32所示。

图8-32 WBFM调制解调仿真系统结构

代码8-16是测试平台。

代码8-16 WBFM调制解调系统测试平台

图8-33所示是一段仿真波形。解调器工作建立时输出了一段不正确的波形。

图8-33 WBFM测试平台仿真波形

图8-34是仿真波形中的一段细节,事实上20MHz载频、频偏2MHz,并不能很直观地在波形中观察出来。

8.9 QPSK和QAM

考虑下面的式子:

因而,可以使用分别被I和Q调制幅度的余弦和负正弦信号之和得到任意幅度A和相位 的调制信号。这个信号也可以理解为使用复数s=I+jQ调制复信号ejΩcn得到的信号的实部:

这样的调制称为正交幅度调制(QAM)。

前述的OOK和PSK均可统一到QAM,例如OOK的符号“0”:s0=1+j0,符号“1”:s1=0+j0,如图8-35所示;BPSK的符号“0”:s0=1+j0,符号“1”:s1=-1+j0,如图8-36所示。

而如果BPSK使用-π和π两个相位,则对应着0-j1和0+j1,如图8-37所示。

QAM调制中,在I-Q平面上标出符号的图称为星座图。

还可以调制8个符号,如图8-40和图8-41所示。

调制16个符号(16QAM)、32个符号(32QAM)、64个符号(64QAM),如图8-42至图8-44所示,当然也有其他不同的坐标分配方案,在IEEE 802.11ac规范的Wi-Fi中,OFDM的每个子载波上的QAM最多可达256个符号,而有线传输的ADSL,最多已使用32768-QAM,即在一个码元上调制15位二进制。

星座图上相邻符号之间的欧氏距离越大,抗噪声能力越好。越多符号的QAM调制,符号距离越小,对信道信噪比的要求也就越高。

8.9.1 QAM调制

根据式(8-13)或式(8-14),QAM调制器的结构如图8-45所示。其中将多位数据映射到I和Q的不同电平也常称为星座映射。不使用电平表,直接将两路模拟信号的采样序列送至I和Q进行调制也是可以的,不过很少这么做。图中的基带滤波器使用了带通滤波器,意味着这样的结构下基带编码必须是无直流分量的。

代码8-17描述了同时输出正弦和余弦的OrthDDS,使用了类似双口RAM的描述。因为将双口RAM的描述和DDS的描述混合在了一个模块中,有些FPGA开发工具不能很好地推断出RAM并使用专用RAM单元,这时可以使用第4章代码4-22描述的双口RAM模块,在OrthDDS中实例化它。另外,使用了initial过程中的常量计算来初始化RAM,主流FPGA开发工具目前不支持,可参考4.6.2节改用$readmemh系统函数配合RAM初始化文件进行初始化。

代码8-17 正交输出的DDS

代码8-18描述了图8-45所示结构,可参数化设定I和Q一个码元的位宽,I和Q路数据均匀地映射到星座图中的正方形区域。其中的通带带通滤波器与前面几节的例子一样,使用的是1MHz~5MHz的带通,另外也使用了较低的基带采样率和升采样,以降低基带滤波器复杂度。mod_en输入信号用于控制调制与否,在mod_en为0时,不调制,仅输出cos载频。

代码8-18 QAM调制器(含星座映射)


8.9.2 QAM解调

QAM解调原理即8.5节介绍的式(8-2)和正交解调。还可以直接用下式理解:

图8-46所示是其结构。

图8-46 QAM解调器结构

代码8-19描述的是QAM解调器不包含位同步和判决的部分。

代码8-19 QAM解调器(不含位同步和判决)

8.9.3 位同步和判决

位同步要解决的问题就是在连续变化的基带序列中找到码元的边界,并找到合适的时刻进行符号判决。

在8.3节中介绍曼彻斯特编码的时候实际上已经涉及位同步。在曼彻斯特编码解码中,直接使用基带序列过零点作为码元的边界,然后以位周期计数器计到码元中央给出同步信号,进行判决。

而QAM的I路或Q路均有多个电平,不是简单地过零或少数一两个阈值。通过找过阈值点的方式确定码元边界并不合理。码元同步常用的方法有延迟相乘、微分整形等。这里以微分整形法为例,将其用于QAM信号位同步的原理如图8-47所示。

通过差分器(即微分)和绝对值获得基带序列的斜率绝对值,使用峰值保持器获得斜率绝对值的最大值。峰值保持器类似于模拟电路中的峰值检测,在输入大于自身保持的值时,自身保持的值立即更新,在输入小于自身保持的值时,自身保持的值慢慢衰减。然后将斜率与斜率峰值(会缓慢衰减)进行比较,得到少数最突出的码元边界。最后使用找到的码元边界去清零位周期计数,而在位周期中央进行码元判决。图8-47中的延迟单元用来补偿同步信号到达判决器和基带数据到达判决器的时间差。

图8-47的下半部分还包含以16-QAM为例的判决部分。在实际通信系统中,中频经过ADC进入数字域之前,会有模拟AGC使得中频的有效值是长期恒定的(数字域一般不做AGC,原因参考7.2.4节)。但仍然不能保证解调后的基带数值序列的幅值不会有些许起落,因而一般不会使用静态阈值进行判决。这里使用峰值保持器获取基带序列的峰值,并会缓慢衰减以跟随可能的峰值衰落,并使用峰值的2/3作为16QAM中除0以外的另两个判决阈值的绝对值(判决-1、-1/3、1/3和1的三个阈值应为-2/3、0和2/3),这样的阈值会跟随基带序列的赋值而起落,保持按比例地判决。

代码8-20描述了峰值保持器,其中的DECAY_PERIOD用于设定经过多少个en周期峰值衰减1。

代码8-20 峰值保持器

8.9.4 调制解调仿真

这里使用的测试系统结构如图8-48所示。发送端符号率(或称波特率)为2.5Msps(符号每秒),每个符号4位,因而实际数据率为10Mbit/s。

图8-48 16-QAM调制解调仿真系统结构

代码8-22描述了测试平台。注意本地载波的产生,与8.7.3节BPSK的类似,需要计算调制器及模拟中频信道的延迟。因QAM调制器中从载波到调制输出比BPSK多花两个周期,因而较BPSK例子,又多延迟了0.4个载波周期。

代码8-22 16-QAM调制解调系统测试平台

图8-49所示是一段仿真波形,为便于比对,rxi和rxq在上下各放置了一份,在这段仿真波形中没有出现误码。事实上多位的QAM调制对信噪比要求较高,如果仿真中稍稍加大噪声有效值,误码将明显增多。

图8-49 16-QAM调制解调仿真波形

图8-50所示是位同步部分的波形细节,截取了获得一次斜率码元边界附近的情况。

8.10 载波同步和数字锁相环

对于前面几节介绍的测试系统,如果用到相干解调,如AM中的SSB、BPSK和QAM解调,均直接使用DDS产生,这在实际通信系统中是不可能的,因为收发双方必然存在时钟频率差异,还有各种因素导致的频率漂移,无法像在仿真中那样设定好初始条件便一直同频同相。因而在实际通信系统中,如果用到相干解调,必然需要与调制时同频同相的本地载波。

如果传送的信号中不包含稳定的载频分量,可以分时或分频在信号中插入“导频”,然后在接收端使用窄带滤波器或锁相环还原出载波。

分频插入导频如图8-52所示,比如载频20MHz,如果基带宽度小于10MHz留有一定余量,则可以将载频2分频后得到10MHz然后与调制信号一起混频至射频发送出去,接收方中频转换至数字域后使用中心频率10MHz的窄带滤波器将其滤得,然后倍频至20MHz,倍频可将信号平方后过高通滤波器得到,如图8-53所示。

分频插入导频的方法比较简单,这里不赘述。

分时插入导频则每隔一段时间留一小段时间不进行调制,直接将载频发出去,接收端使用锁相环在这段时间内跟踪和锁定相位,而后停止锁相以固定的频率工作至下一次导频到来,如图8-54所示。当然图中画得比较夸张,实际系统中,导频占据的时间比例不会这么大,也不会只有图中所示的十来个周期。

8.10.1 数字锁相环恢复载波

全数字锁相环(ADPLL)的结构如图8-55所示。

图8-55 全数字锁相环的结构

锁相环是一个典型的简单控制系统,在基础频率附近,相差较小时可以线性化为如图8-56所示的控制模型,鉴相器输出相位误差,DDS将频率控制字积分为相位,PI控制器中的I项将有助于消除稳态误差。

图8-56 全数字锁相环的简化控制模型

对于BPSK可使用如图8-57所示的双反馈的锁相环(科斯塔斯环)直接从调制信号恢复出载波,并完成解调;类似地,QPSK可以使用如图8-58所示的四反馈科斯塔斯环,读者可自行推导它们的原理。

在分时插入导频的情况下,需要控制ADPLL何时跟踪输入,何时保持频率。在基带编码无直流时,可使用差分器检测鉴相器的输出,获取相位变化率,在相位变化率的绝对值很大时,表明正在调制,应切断PI控制器输入;而相位持续较长时间未有动态时,表明正在接收导频,可以闭环控制DDS,如图8-59所示,图中以16-QAM载频同步为例,输出有cos和-sin两路。

注意,闭环时间应主动控制在导频长度以内,不能依赖差分器检测到相位变化之后再切断闭环,否则大相位差会很快导致相位发散。比如插入导频持续时间为1000个中频采样周期(以100Msps中频采样率下20MHz中频为例,则为200个载频周期),则可以在第200至第800周期之间闭环。图8-59中比较阈值取为1/6与最小符号相位变化有关,对于16-QAM,鉴相器的输出sin最小变化率与最大变化率之比约为1/3。

代码8-23描述了图8-59所示的载波恢复逻辑。以20MHz中频载波和100Msps中频采样率为例,其中鉴相器中的低通滤波器为10MHz低通,20MHz以上为阻带,阈值并未取峰值的1/6而是用了1/4,只因为1/4可以用右移简单实现。

其中使用的PI控制器即为7.8节所述PID控制器,D=0即可,其参数P=0.021、I·Ts=2.1×10-4为使用其他软件工具对图8-56

建模仿真得到初步值之后,再经实测调整得到的。

代码8-23 16-QAM分时插入导频的载波恢复(20MHz中频载波@100Msps)

8.10.2 QAM载波恢复仿真

在8.9.4节QAM调制解调的基础上进行修改,将调制部分每8000个中频采样周期中安排1000个周期不进行调制,仅输出I路(cos)载频。在解调部分,使用上节描述的带导频检测的ADPLL进行载波恢复。同时保留了8.9.4节中直接产生本地载波的正交DDS,仅用来与ADPLL恢复的载波进行对比。

图8-60所示是测试系统框图。

图8-60 QAM载波恢复仿真系统

代码8-24是测试平台代码,第26行在插入导频前预留500个中频采样周期做调制输出,是为ADPLL中导频检测建立阈值。

ADPLL的基础频率设为3355000/224·100MHz≈19.997MHz,与20MHz偏差132ppm,晶体振荡器的频率偏差一般在这个数量以下。

代码8-24 16-QAM基于分时导频的载波恢复测试平台

图8-61是仿真波形片段。导频之后,接收端本地频率控制字已被调整为3355429,对应频率为3355459/224·100MHz≈20.000094MHz,与3355443偏差仅为4.8ppm。而且从mix_fil(即相位误差)可以看到ADPLL很快跟上了导频的相位,并不需要1000个中频周期。

图8-62则是导频即将结束前恢复的载波和参考载波的细节,此时鉴相器输出的相位误差(-sin )值已低于数个12位有符号数的LSB(Q1.11格式下约0.00049),基本达到了12位数据的极限。而恢复的载波与参考载波从波形图上已基本观察不出差异。不过如果观察解调的数据,误码较8.9.4节还是增多了。如需进一步提高ADPLL锁相性能,必须提高数据和鉴相器输出的位宽。

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

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

相关文章

FPGA应用开发和仿真【3.6】

7.8 PID控制器 PID控制器广泛用于控制系统,控制系统中的数字控制部分也是数字信号处理系统的一种。典型的数字PID控制器如图7-63所示,它由前向欧拉法转换连续时间PID控制器而来,其P、I、D三个参数,分别为比例、积分、微分系数,而N用于配置微分单元中滤波器的极点,将有助…

从零到AIGC产品经理,2个月上岸全攻略,小白也能学会

本文分享了一套2个月成功转行AIGC产品经理的实用指南,涵盖八个关键步骤:获取行业资讯与研报、选择细分领域并搭建知识库、系统掌握AIGC基础知识、完成实战项目、撰写融合项目经验的简历、准备面试高频问题。通过文本生成和图片生成两类实战项目&#xff…

Java Web 墙绘产品展示交易平台系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

💡实话实说:有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着互联网技术的快速发展和艺术市场的不断扩大,墙绘艺术作为一种独特的装饰形式,逐渐受到大众的青睐。传统的墙绘交易方式…

收藏这篇!小白也能学会的AI知识库搭建全攻略

本文详细介绍如何使用AnythingLLM和DeepSeek R1搭建个人AI知识库,解决AI回答不准确的痛点。从下载安装、配置API、上传文档到知识检索问答,提供完整步骤指导。该方法简单高效、成本低廉,可创建可靠安全的私有知识库,大幅提升学习和…

国内首次开源灵巧操作数据集!填补具身智能数据空白!

如果你觉得现在的机器人已经很聪明,那你大概率还没见过它们“拿纸杯”、“拆纸箱”时手忙脚乱的样子。在仿真环境里,机器人抓什么都稳;可一到真实世界,纸杯一捏就扁、快递一夹就滑,仿佛一夜回到解放前。问题出在哪&…

什么是proxy

在前端开发中,Proxy 是 ES6 引入的一个高级特性,用于拦截和自定义对象的基本操作(如属性访问、赋值、枚举、函数调用等)。它为开发者提供了元编程能力,是实现响应式系统、数据校验、访问控制等功能的核心技术。 一、基…

收藏这篇就够了!DeepSeek+RAG本地知识库搭建实战,小白也能上手的大模型教程

DeepSeekRAG本地知识库技术结合了DeepSeek大模型与检索增强生成(RAG)技术,旨在构建高效智能的本地化知识库系统。DeepSeek具备强大自然语言处理能力,能理解和生成文本;RAG技术通过结合信息检索和文本生成,使模型在生成文本时可参考…

AI Agent短期记忆完全指南:4种处理长对话问题的方法+代码详解

文章详细介绍了AI Agent的短期记忆机制,分析了长对话引发的上下文丢失、响应变慢等问题,提供了4种解决方案:修剪消息、删除消息、总结消息和自定义策略。通过代码示例展示了如何实现Agent短期记忆,包括基础用法、自定义状态、消息…

Web足球青训俱乐部管理后台系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

💡实话实说:用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否,咱们都是朋友,能帮的地方我绝不含糊。买卖不成仁义在,这就是我的做人原则。摘要 随着足球运动的普及和青训体系的不断完善&#xf…

解耦梯度学习解决多模态模型欠优化问题,性能提升超3%

本文揭示了多模态学习中欠优化问题的根本原因在于模态编码器与融合模块间的优化冲突,导致主导模态性能下降。为解决此问题,作者提出解耦梯度学习(DGL)框架,通过截断多模态损失反向传播到编码器的梯度,并引入单模态损失独立优化编码…

2026AI产品经理与大模型学习路线图:从小白到专家的进阶指南

本文详细介绍了AI产品经理的三阶段学习路线(基础知识、专业技能、软技能)及实践经验积累方法,并提供了大模型学习资源,包括路线图、视频教程、技术文档、面试题等,帮助学习者系统掌握AI产品经理与大模型知识&#xff0…

大模型+知识图谱构建制药业“第二大脑“:从零开始实现企业级知识管理

本文探讨如何利用大语言模型和知识图谱技术构建制药企业级"第二大脑",整合分散的科研数据与文献为可搜索知识库。通过RAG和Graph-RAG技术实现60%文档审查效率提升,为制药行业创造600-1100亿美元年度价值。文章详解技术架构、实际应用案例、实施…

深入了解移动开发领域 CI_CD 的工作原理

深入了解移动开发领域 CI/CD 的工作原理 关键词:移动开发、CI/CD、持续集成、持续交付、工作原理 摘要:本文旨在深入剖析移动开发领域 CI/CD 的工作原理。首先介绍了 CI/CD 在移动开发中的背景,包括目的、适用读者等信息。接着阐述了 CI/CD 的核心概念与联系,以清晰的文本示…

Claude Code完美平替OpenCode:小白也能轻松上手的AI编程神器

OpenCode是Claude Code的开源平替工具,提供图形化界面,支持多种AI模型(包括免费GLM-4.7和MiniMax M2.1)。最大亮点是支持多Session并行运行多个Agent,实现协作编程,相比命令行的Claude Code更友好。支持CLI…

打造AI时代智能知识库:Obsidian+Dify向量检索全攻略(附插件下载)

本文详细介绍了如何将Obsidian与Dify知识库相结合,打造基于向量存储的AI友好知识系统。作者开发了自定义同步插件,解决了Obsidian原生搜索对AI不友好的问题,实现了语义检索功能。文章涵盖Dify知识库创建、Embedding模型配置、API密钥获取&…

可视化图解算法77:零钱兑换(兑换零钱)

1.题目 描述 给定数组 coins ,coins中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个amount,代表要找的钱数,求组成amount的最少货币数。 如果无解,请…

【毕业设计】SpringBoot+Vue+MySQL ONLY在线商城系统平台源码+数据库+论文+部署文档

💡实话实说:用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否,咱们都是朋友,能帮的地方我绝不含糊。买卖不成仁义在,这就是我的做人原则。摘要 随着互联网技术的快速发展和电子商务的普及&#…

零代码搭建大模型知识库,5分钟搞定RAG应用,小白也能轻松上手

本文详细介绍如何使用Dify平台零代码搭建大模型知识库,无需编程经验即可实现RAG应用。通过创建Chatflow应用、配置大模型节点、设置知识检索节点和回答问题节点,读者可快速构建一个可用的大模型知识库,深入了解RAG工作流程,提升工…

前后端分离墙绘产品展示交易平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

💡实话实说:用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否,咱们都是朋友,能帮的地方我绝不含糊。买卖不成仁义在,这就是我的做人原则。摘要 随着数字化时代的快速发展,艺术与科技…

从封闭到通用:RLVR到RLPR的LLM推理强化技术全解析

本文深入解析了强化学习在LLM推理进化中的应用,从依赖外部验证器的RLVR范式,演进到利用模型内在概率的RLPR新方法。重点介绍了1-shot RLVR的高数据效率和RLPR在通用领域的突破,结合verl框架详解工程实现。揭示了GRPO算法的核心作用和熵正则项…