基于截断傅里叶级数展开的抖动波形生成

1、背景
        抖动是影响信号完整性的重要因素。随着信号速率的不断提高,抖动的影响日益显著。仿真生成抖动时钟或抖动信号,对系统极限性能验证具有重要意义。抖动是定义在时域上的概念,它表征真实跳变位置(如跳边沿或过零点)与理想跳变位置之间的时间偏差。自然而然地,抖动信号生成也多从时域角度出发。考虑到时域和频域只是信号在不同维度上的表现方式。本文探索一种从频域角度生成抖动信号的方法,首先对方法的原理进行详细说明,然后比较与现有方法的优缺点,最后给出仿真验证结果。

2、原理
    (1) 抖动时钟生成原理
  周期信号可进行傅里叶级数展开,设周期信号 f ( t ) f(t) f(t)的周期为 T T T,则其三角函数的傅里叶级数展开表达式为
f ( t ) = A 0 + ∑ n = 1 ∞ [ A n c o s ( ω n t ) + B n s i n ( ω n t ) ] (1) f(t)=A_0+\sum_{n=1}^{\infty}[A_n cos(\omega_n t)+B_n sin(\omega_nt)]\tag{1} f(t)=A0+n=1[Ancos(ωnt)+Bnsin(ωnt)](1)
  其中, ω n = n 2 π T \omega_n=n\frac{2\pi}{T} ωn=nT2π表示第 n n n个分量的角频率。 A 0 A_0 A0 A n A_n An B n B_n Bn分别表示直流分量,余弦分量的幅度和正弦分量的幅度,它们的表达式分别为:
A 0 = 1 T ∫ t 0 t 0 + T f ( t ) d t A n = 2 T ∫ t 0 t 0 + T f ( t ) c o s ( ω n t ) d t B n = 2 T ∫ t 0 t 0 + T f ( t ) s i n ( ω n t ) d t A_0=\frac{1}{T}\int_{t_0}^{t_0+T}f(t)dt \\A_n=\frac{2}{T}\int_{t_0}^{t_0+T}f(t)cos(\omega_n t)dt\\B_n=\frac{2}{T}\int_{t_0}^{t_0+T}f(t)sin(\omega_n t)dt A0=T1t0t0+Tf(t)dtAn=T2t0t0+Tf(t)cos(ωnt)dtBn=T2t0t0+Tf(t)sin(ωnt)dt
  时钟信号是一种周期信号,为了将时钟信号表示为傅里叶级数展开的形式,需表示出时钟信号在一个周期内的表达式。

在这里插入图片描述

图1. 理想时钟信号示意图

  上图建立直角坐标系,对理想时钟信号进行表示,其中 T T T表示信号周期, τ r \tau_r τr τ f \tau_f τf分别表示上升时间和下降时间。 L = ( T − τ r − τ f ) / 2 L=(T-\tau_r-\tau_f)/2 L=(Tτrτf)/2表示理想情况下平稳电平的时长。上图中未体现抖动的影响,抖动表现为实际跳变沿位置相对于跳边沿理想位置的时间偏差,带抖动的时钟信号示意图如下。
在这里插入图片描述

图2. 带抖动的时钟信号示意图

  上图中蓝色虚线为理想跳边沿, t r t_r tr t f t_f tf分别表示上升沿和下降沿抖动值。图中标记了4个信号的关键转折点,分别记为 a a a b b b c c c d d d。这4个点的位置可分别表示为:
a = − L / 2 − τ r − t r = − 1 4 T − 3 4 τ r + 1 4 τ f − t r b = − L / 2 − t r = − 1 4 T + 1 4 τ r + 1 4 τ f − t r c = L / 2 − t f = 1 4 T − 1 4 τ r − 1 4 τ f − t f d = L / 2 + τ f − t f = 1 4 T − 1 4 τ r + 3 4 τ f − t f a=-L/2-\tau_r-t_r=-\frac{1}{4}T-\frac{3}{4}\tau_r+\frac{1}{4}\tau_f-t_r\\b=-L/2-t_r=-\frac{1}{4}T+\frac{1}{4}\tau_r+\frac{1}{4}\tau_f-t_r\\c=L/2-t_f=\frac{1}{4}T-\frac{1}{4}\tau_r-\frac{1}{4}\tau_f-t_f\\d=L/2+\tau_f-t_f=\frac{1}{4}T-\frac{1}{4}\tau_r+\frac{3}{4}\tau_f-t_f a=L/2τrtr=41T43τr+41τftrb=L/2tr=41T+41τr+41τftrc=L/2tf=41T41τr41τftfd=L/2+τftf=41T41τr+43τftf
  由此,带抖动的时钟信号的表达式为:
f ( t ) = { 0 , − T 2 ≤ t < a v b − a ( t − a ) , a < t ≤ b v , b < t ≤ c v c − d ( t − d ) , c < t ≤ d 0 , d < t ≤ T / 2 f(t)= \left\{\begin{matrix} 0,-\frac{T}{2}\leq t<a \\ \frac{v}{b-a}(t-a),a<t\leq b \\ v, b<t\leq c \\ \frac{v}{c-d}(t-d),c<t\leq d\\ 0, d<t\leq T/2 \end{matrix}\right. f(t)= 0,2Tt<abav(ta),a<tbv,b<tccdv(td),c<td0,d<tT/2
  将 f ( t ) f(t) f(t)的表达式带入 A 0 A_0 A0 A n A_n An B n B_n Bn的表达式中,可求得:
A 0 = 1 T ∫ t 0 t 0 + T f ( t ) d t = 1 T ∫ − T / 2 T / 2 f ( t ) d t = 1 T [ ∫ a b v b − a ( t − a ) d t + ∫ b c v d t + ∫ c d v c − d ( t − d ) d t ] = 1 T [ 1 2 v ( b − a ) + 1 2 v ( c + b ) ( c − b ) + 1 2 v ( d − c ) ] = v 2 T [ ( b − a ) + ( c + b ) ( c − b ) + ( d − c ) ] (2) A_0=\frac{1}{T}\int_{t_0}^{t_0+T}f(t)dt=\frac{1}{T}\int_{-T/2}^{T/2}f(t)dt\\=\frac{1}{T}[\int_{a}^{b}\frac{v}{b-a}(t-a)dt+\int_{b}^{c}vdt+\int_{c}^{d}\frac{v}{c-d}(t-d)dt]\\=\frac{1}{T}[\frac{1}{2}v(b-a)+\frac{1}{2}v(c+b)(c-b)+\frac{1}{2}v(d-c)]\\=\frac{v}{2T}[(b-a)+(c+b)(c-b)+(d-c)]\tag{2} A0=T1t0t0+Tf(t)dt=T1T/2T/2f(t)dt=T1[abbav(ta)dt+bcvdt+cdcdv(td)dt]=T1[21v(ba)+21v(c+b)(cb)+21v(dc)]=2Tv[(ba)+(c+b)(cb)+(dc)](2)

A n = 2 T ∫ − T / 2 T / 2 f ( t ) c o s ( ω n t ) d t = 2 T [ ∫ a b v ( t − a ) b − a c o s ( ω n t ) d t + ∫ b c v c o s ( ω n t ) d t + ∫ c d v ( t − d ) c − d c o s ( ω n t ) d t ] = 2 T [ v ( c o s ( ω n b ) − c o s ( ω n a ) ) ( b − a ) ω n 2 + v ( c o s ( ω n d ) − c o s ( ω n c ) ) ( c − d ) ω n 2 + v ( s i n ( ω n c ) − s i n ( ω n b ) ) ω n ] (3) A_n=\frac{2}{T}\int_{-T/2}^{T/2}f(t)cos(\omega_n t)dt\\=\frac{2}{T}[\int_{a}^{b}\frac{v(t-a)}{b-a}cos(\omega_n t)dt+\int_{b}^{c}vcos(\omega_n t)dt+\int_{c}^{d}\frac{v(t-d)}{c-d}cos(\omega_n t)dt]\\=\frac{2}{T}[\frac{v(cos(\omega_n b)-cos(\omega_n a))}{(b-a)\omega_n^2}+\frac{v(cos(\omega_n d)-cos(\omega_n c))}{(c-d)\omega_n^2}+\frac{v(sin(\omega_n c)-sin(\omega_n b))}{\omega_n}] \tag{3} An=T2T/2T/2f(t)cos(ωnt)dt=T2[abbav(ta)cos(ωnt)dt+bcvcos(ωnt)dt+cdcdv(td)cos(ωnt)dt]=T2[(ba)ωn2v(cos(ωnb)cos(ωna))+(cd)ωn2v(cos(ωnd)cos(ωnc))+ωnv(sin(ωnc)sin(ωnb))](3)

B n = 2 T ∫ − T / 2 T / 2 f ( t ) s i n ( ω n t ) d t = 2 T [ ∫ a b v ( t − a ) b − a s i n ( ω n t ) d t + ∫ b c v s i n ( ω n t ) d t + ∫ c d v ( t − d ) c − d s i n ( ω n t ) d t ] = 2 T [ v ( s i n ( ω n b ) − s i n ( ω n a ) ) ( b − a ) ω n 2 + v ( s i n ( ω n d ) − s i n ( ω n c ) ) ( c − d ) ω n 2 + v ( c o s ( ω n b ) − c o s ( ω n c ) ) ω n ] (4) B_n=\frac{2}{T}\int_{-T/2}^{T/2}f(t)sin(\omega_n t)dt\\=\frac{2}{T}[\int_{a}^{b}\frac{v(t-a)}{b-a}sin(\omega_n t)dt+\int_{b}^{c}vsin(\omega_n t)dt+\int_{c}^{d}\frac{v(t-d)}{c-d}sin(\omega_n t)dt]\\=\frac{2}{T}[\frac{v(sin(\omega_n b)-sin(\omega_n a))}{(b-a)\omega_n^2}+\frac{v(sin(\omega_n d)-sin(\omega_nc))}{(c-d)\omega_n^2}+\frac{v(cos(\omega_n b)-cos(\omega_n c))}{\omega_n}] \tag{4} Bn=T2T/2T/2f(t)sin(ωnt)dt=T2[abbav(ta)sin(ωnt)dt+bcvsin(ωnt)dt+cdcdv(td)sin(ωnt)dt]=T2[(ba)ωn2v(sin(ωnb)sin(ωna))+(cd)ωn2v(sin(ωnd)sin(ωnc))+ωnv(cos(ωnb)cos(ωnc))](4)
  显然,在已知上述傅里也变换级数的各项系数时,即可将原始时域周期信号用傅里叶级数表示出来,需要注意的是,在实际运算时,谐波索引 n n n不能取到无穷大。所以,实际只能得到信号的截断傅里叶级数展开的形式,保留的谐波次数越高,得到的波形越准确,但计算量越大。
  需要注意的是,利用(1)式将原始信号表示为傅里叶级数展开的形式时 t t t被限制在了 [ − T / 2 , T / 2 ] [-T/2,T/2] [T/2,T/2]的范围内,所以只生成了一个周期的信号。为了生成多个周期的信号,我们需要按照上面的方式,生成多个周期的信号,并将各个周期的信号拼接成完整的信号,其中各个周期的上升/下降时间及抖动值都是可以独立指定的。
  此外,上面生成时,考虑时钟低电平为0,可根据实际要求,对波形进行上下平移,以调整波形的offset。

    (2) 抖动信号生成原理
    本文以NRZ和PAM4信号为例,说明抖动信号的生成原理。NRZ和PAM4信号与时钟信号的不同在于NRZ/PAM4并非周期信号,所以相比于时钟信号,带抖动的NRZ/PAM4信号虽然能借鉴抖动时钟信号的生成方法,但需进行一定的修改和适配。具体地,如下图所示相邻两个NRZ符号有4种可能状态,分别为’00’,‘01’,‘10’和’11’;相邻两个PAM4符号有16种可能状态,分别为’00’, ‘01’, ‘02’, ‘03’, ‘10’, ‘11’, ‘12’, ‘13’, ‘20’, ‘21’ ,‘22’, ‘23’, ‘30’, ‘31’, ‘32’, ‘33’。所以,可以将NRZ和PAM4的符号两两组合,进行波形生成,其中除非跳变位置的波形,如’00’,‘11’,‘22’,'33’外,其他跳变波形均能参照抖动时钟的生成方法,只需对波形表达式进行略有的适配即可。
在这里插入图片描述

图3. NRZ波形示意图

在这里插入图片描述

图4. PAM4波形示意图

未完待续。。。
未完待续。。。
未完待续。。。
未完待续。。。

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

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

相关文章

前端小技巧:如何自定义网页的右键菜单(如何禁用网页的右键菜单)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 右键菜单设置 📒📝 自定义右键菜单实现步骤📝 示例代码📝 涉及的JavaScript语法和参数📝 禁用特定区域的右键菜单⚓️ 相关链接 ⚓️📖 介绍 📖 在网页设计中,一个直观且个性化的右键菜单可以显著提升用户的交互…

前端部署时候开发以及生产环境切换

uniapp 版本切换 在 HBuilderX 中&#xff0c;点击“运行”编译出来的代码是开发环境&#xff0c;点击“发行”编译出来的代码是生产环境 vue3 pnpm run build

ARM架构安全特性之防御执行技术

安全之安全(security)博客目录导读 目录 1、侧信道攻击威胁 2、推测屏障Speculation Barriers 3、栈溢出攻击威胁 4、指针认证PAC 5、分支目标识别BTI 6、内存安全违规威胁 7、内存标记扩展MTE 8、加强数据保护 9、特权不可访问&#xff08;Privileged Access Never …

蓝桥之链表

最近真的特别焦虑&#xff0c;体测、比赛和考试一个接一个&#xff0c;让人喘不过气来QAQ 甚至考试和比赛还有冲突&#xff0c;sad 最近因为看了牙&#xff0c;打了药的缘故&#xff0c;一直在吃素QAQ 本来今天还想写个知识点总结的&#xff0c;但是太晚了&#xff0c;现在已…

截图识别OCR怎么操作?一键精准识别工具分享

截图识别OCR怎么操作&#xff1f;截图识别OCR软件在现代办公和学习中扮演着越来越重要的角色&#xff0c;它们能够将图片中的文字内容快速准确地转换为可编辑的文本。无论是处理文档、整理笔记&#xff0c;还是进行学术研究、资料收集&#xff0c;这些软件都能快速、准确地将图…

鸿蒙开发接口Ability框架:【(AbilityContext)】

AbilityContext AbilityContext是Ability的上下文环境&#xff0c;继承自Context。 AbilityContext模块提供允许访问特定于ability的资源的能力&#xff0c;包括对Ability的启动、停止的设置、获取caller通信接口、拉起弹窗请求用户授权等。 说明&#xff1a; 本模块首批接口…

告别数据泥潭:PySpark性能调优的黄金法则

阿佑今天给大家带来个一张藏宝图——使用PySpark进行性能调优的黄金法则&#xff0c;从内存管理到执行计划&#xff0c;再到并行度设置&#xff0c;每一步都是提升数据处理速度的关键&#xff01; 文章目录 Python Spark 详解1. 引言2. 背景介绍2.1 大数据处理技术演变2.2 Apac…

2024最新商业视频打赏系统源码 多套模板 有代理后台 已对接支付

简介&#xff1a; 2024最新商业视频打赏系统源码 多套模板 有代理后台 已对接支付 图片&#xff1a; 源码下载

自存 js course 工厂函数

如图 就是 像工厂一样 生产对象 对象里的函数可以写成简下

Oracle11g账户频繁被锁定的3种解决办法

方法1&#xff1a;创建触发器 方法1&#xff1a;数据库中创建触发器(只记录失败)&#xff0c;但是需要开发同意或者开发自己创建。找到密码输入错误的服务器&#xff0c;进行数据源配置的更改。 该方法适用于要求找到密码错误用户所在服务器的场景下。 CREATE OR REPLACE TR…

【一键录音,轻松转换:用Python打造个性化音频记录工具】

在数字化时代,音频记录已成为日常学习、工作和娱乐不可或缺的一部分。想象一下,只需简单按下几个键,即可随时随地捕捉灵感,记录会议要点,或是珍藏孩子的童言稚语。本文将引领您步入Python编程的奇妙世界,展示如何借助几个强大的库,构建一个既简单又实用的音频录制及转换…

STM32快速入门(总线协议之I2C一主多从(软件实现 硬件实现))

STM32快速入门&#xff08;总线协议之I2C一主多从&#xff08;软件实现 & 硬件实现&#xff09;&#xff09; 前言 支持一对多&#xff08;一主多从&#xff09;、多对多传输&#xff08;多主多从&#xff09;&#xff0c;只支持半双工&#xff0c;一般有两根数据线&…

Android性能:高版本Android关闭硬件加速GPU渲染滑动卡顿掉帧

Android性能&#xff1a;高版本Android关闭硬件加速GPU渲染滑动卡顿掉帧 如果在Androidmanifest.xml配置&#xff1a; <application android:hardwareAccelerated"false" > 或者某个特点View使用代码&#xff1a; myView.setLayerType(View.LAYER_TYPE_SOFT…

合并连个有序链表(递归)

21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 2.讲解算法原理 2.1重复子问题 2.2只关心其中的一个子问题是如何解决的 2.3细节&#xff0c;递归出口 3.小总结 &#xff08;循环&#xff08;迭代&#xff09;VS 递归&#xff09;&#xff08;递归VS深搜&…

从零开始的软件测试学习之旅(九)jmeter直连数据库及jmeter断言,关联

jmeter直连数据库及断言,关联 jmeter直连数据库步骤jmeter断言jmeter逻辑控制器if控制器ForEach控制器循环控制器 Jmeter关联Jmeter关联XPath提取器Jmeter关联正则表达式提取器二者比较跨线程组关联 每日复习 jmeter直连数据库 概念 这不叫直连:Jmeter -> java/python 提供的…

一套MySQL读写分离分库分表的架构,被秀到了!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

数据增强,迁移学习,Resnet分类实战

目录 1. 数据增强&#xff08;Data Augmentation&#xff09; 2. 迁移学习 3. 模型保存 4. 102种类花分类实战 1. 数据集 2.导入包 3. 数据读取与预处理操作 4. Datasets制作输入数据 5.将标签的名字读出 6.展示原始数据 7.加载models中提供的模型 8.初始化…

Android Studio在android Emulator中运行的项目黑屏

前言&#xff1a; 最近在做一个Android相关的小项目&#xff0c;因为之前这方面的项目做的比较的少。今天在使用虚拟机调试的时候经常出现一些莫名其妙的问题&#xff0c;经过自己多次的尝试和搜索终于解决了这些问题。 问题&#xff1a; 每次run&#xff08;运行&#xff09…

【机器学习300问】88、什么是Batch Norm算法?

一、什么是Batch Norm&#xff1f; &#xff08;1&#xff09;Batch Norm的本质 神经网络中的Batch Normalization&#xff08;批量归一化&#xff0c;简称BatchNorm或BN&#xff09;是一种改进神经网络训练过程的规范化方法&#xff0c;BatchNorm的主要目的是加速神经网络的训…

构建教育新未来:智慧校园平台的深度解读与全景呈现

引言 在全球数字化转型的大潮中&#xff0c;智慧校园平台作为教育信息化的重要载体&#xff0c;正以前所未有的姿态颠覆传统的教育模式&#xff0c;引领教育行业步入一个崭新的时代。这个融合了大数据、人工智能、云计算、物联网等一系列前沿科技的平台&#xff0c;以其强大的功…