基于截断傅里叶级数展开的抖动波形生成
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=T1∫t0t0+Tf(t)dtAn=T2∫t0t0+Tf(t)cos(ωnt)dtBn=T2∫t0t0+Tf(t)sin(ωnt)dt
时钟信号是一种周期信号,为了将时钟信号表示为傅里叶级数展开的形式,需表示出时钟信号在一个周期内的表达式。
上图建立直角坐标系,对理想时钟信号进行表示,其中 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表示理想情况下平稳电平的时长。上图中未体现抖动的影响,抖动表现为实际跳变沿位置相对于跳边沿理想位置的时间偏差,带抖动的时钟信号示意图如下。
上图中蓝色虚线为理想跳边沿, 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−τr−tr=−41T−43τr+41τf−trb=−L/2−tr=−41T+41τr+41τf−trc=L/2−tf=41T−41τr−41τf−tfd=L/2+τf−tf=41T−41τr+43τf−tf
由此,带抖动的时钟信号的表达式为:
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,−2T≤t<ab−av(t−a),a<t≤bv,b<t≤cc−dv(t−d),c<t≤d0,d<t≤T/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=T1∫t0t0+Tf(t)dt=T1∫−T/2T/2f(t)dt=T1[∫abb−av(t−a)dt+∫bcvdt+∫cdc−dv(t−d)dt]=T1[21v(b−a)+21v(c+b)(c−b)+21v(d−c)]=2Tv[(b−a)+(c+b)(c−b)+(d−c)](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=T2∫−T/2T/2f(t)cos(ωnt)dt=T2[∫abb−av(t−a)cos(ωnt)dt+∫bcvcos(ωnt)dt+∫cdc−dv(t−d)cos(ωnt)dt]=T2[(b−a)ωn2v(cos(ωnb)−cos(ωna))+(c−d)ω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=T2∫−T/2T/2f(t)sin(ωnt)dt=T2[∫abb−av(t−a)sin(ωnt)dt+∫bcvsin(ωnt)dt+∫cdc−dv(t−d)sin(ωnt)dt]=T2[(b−a)ωn2v(sin(ωnb)−sin(ωna))+(c−d)ω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’外,其他跳变波形均能参照抖动时钟的生成方法,只需对波形表达式进行略有的适配即可。
未完待续。。。
未完待续。。。
未完待续。。。
未完待续。。。
相关文章:

基于截断傅里叶级数展开的抖动波形生成
1、背景 抖动是影响信号完整性的重要因素。随着信号速率的不断提高,抖动的影响日益显著。仿真生成抖动时钟或抖动信号,对系统极限性能验证具有重要意义。抖动是定义在时域上的概念,它表征真实跳变位置(如跳边沿或过零点)与理想跳变位…...
图片标注编辑平台搭建系列教程(9)——支持撤销的画线行为
文章目录 背景渲染行为mouseDownmouseMovemouseDbclick总结背景 编辑器中的绘制,要想做的足够好,是需要支持撤销形点的,因为作业员在绘制过程中,可能会点错位置,需要及时撤销,否则影响编辑效率。撤销我们知道,需要通过ID编辑器的history的undo来实现,那么意味着,每一…...
赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十一)
上一篇地址:赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十)-CSDN博客 八十一、tcp为什么要三次握手,两次不行吗?为什么? TCP(传输控制协议)使用三次握手…...
使用自关联方法处理多表关系
使用自关联方法处理多表关系 这里通过省市区之间的关系来解释自关联的情况 在设置地址的过程中 , 不可避免的需要设置 , 省份 ,市以及区 而省市区三者之间的具有一定的关联关系 一个省份对应多个市 一个市对应多个区 如果通过设置主表从表关系则需要设置三张标分别对应省…...
annaconda详细解读换源文件
annaconda换源详细解读文件 annaconda换源详细解读文件 annaconda换源详细解读文件 #踩坑/annaconda换源详细解读通道问题 如何准确使用国内源高效安装GPU版本的Pytorch - 知乎 文件中的custom通道,需要自己手动添加到默认通道里面,记得后面更上/包名…...
AI大模型系列:编写高质量提示(prompt)的实践技巧
AI大模型系列专栏 文章收录于AI大模型系列专栏 文明基石,文字与数字的起源与演变自然语言处理,从规则到统计的演变AI魔法师,提示工程的力量编写高质量提示(prompt)的小技巧编写高质量提示(prompt…...

汽车EDI:安通林Antolin EDI 项目案例
安通林(Antolin)是一家全球性的汽车零部件制造商,专注于汽车内饰系统和零部件的生产,致力于创新和采用先进的技术。近年来 安通林Antolin 推动其供应商部署EDI系统,使得双方能够通过EDI传输业务单据,极大提…...

今日arXiv最热NLP大模型论文:揭露大语言模型短板,北京大学提出事件推理测试基准
人工智能领域又一里程碑时刻!北京大学、北京智源人工智能研究院等机构联合推出大型事件推理评测基准 。这是首个同时在知识和推理层面全面评估大模型事件推理能力的数据集。 总所周知,事件推理需要丰富的事件知识和强大的推理能力,涉及多种推…...

windows系统安装Ubuntu子系统
安装前先在 控制面板 中打开 程序与功能选项 ,点击 启用或关闭Windows功能: 勾选 适用于 Linux的Windows子系统 和 虚拟机平台 、 Hyper-v 。 重启电脑后再 Microsoft Store Windows应用商店 中下载合适的Ubuntu版本。 运行Ubuntu程序,如出现…...

电脑复制和粘贴的时候会出现Hello!
电脑不管是Microsoft Excel还是Microsoft Word复制之后粘贴过来就出现HELLO,当复制粘贴文件的时候就会出现WINFILE; 具体现象看下面两个图片: 这是因为winfile 文件病毒(幽灵蠕虫病毒),每月的28号发作; 症状…...

AI新视界:探索Baidu Comate的前沿科技
前言 Baidu Comate(智能代码助手)是基于文心大模型,结合百度积累多年的编程现场大数据和外部优秀开源数据,打造的新一代编码辅助工具。拥有代码智能、场景丰富、创造价值、广泛应用等多重产品优势,可实现“帮你想、帮…...
唐山知识付费系统搭建教程,女性创业难吗?2017十佳女性创业故事:黑科技创业“女神”
女性创业难吗?2017十佳女性创业故事:黑科技创业“女神”!创业似乎一直是一个比较热门的话题,女性创业也是一个很有争议的问题。女性创业难吗?看看2017十佳女性创业故事:黑科技创业“女神”。 阿里研究院、中国企业家木兰汇、阿里巴巴创新中…...

Hotcoin Research | 模块化将是大势所趋:拆解模块化区块链的现状和未来
关于模块化区块链叙事的讨论源于Celestia和其代币TIA的亮眼表现。实际上,模块化是未来区块链设计的主要发展方向和大势所趋。模块化区块链就像乐高积木一样,将区块链系统拆分为可重用的模块,通过定制组合可实现不同功能的区块链网络。这种灵活…...

Unity VR在编辑器下开启Quest3透视(PassThrough)功能
现在有个需求是PC端串流在某些特定时候需要开启透视。我研究了两天发现一些坑,记录一下方便查阅,也给没踩坑的朋友一些思路方案。 先说结论,如果要打PC端或者在Unity编辑器中开启,那么OpenXR当前是不行的可能还需要一个长期的过程,必须需要切换到Oculus。当然Unity官方指…...
使用 git rebase 还是 git merge,优缺点
在开发过程中使用 git rebase 还是 git merge,优缺点分别是什么? - 知乎 看一下gerrit的模式 永远rebase 绝对禁用merge 每一个commit都是一个完整的功能 保持清晰直观的提交历史 所以,main 分支是万万不能使用 rebase 的!&#…...

李飞飞团队 AI4S 最新洞察:16 项创新技术汇总,覆盖生物/材料/医疗/问诊……
不久前,斯坦福大学 Human-Center Artificial Intelligence (HAI) 研究中心重磅发布了《2024年人工智能指数报告》。 作为斯坦福 HAI 的第七部力作,这份报告长达 502 页,全面追踪了 2023 年全球人工智能的发展趋势。相比往年,扩大了…...

springboot整合rabbitmq的不同工作模式理解
前提是已经安装并启动了rabbitmq,并且项目已经引入rabbitmq,完成了配置。 不同模式所需参数不同,生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…...

Ansible(二)
一、Playbook基础 1.1 Playbook定义 Playbook其实是Ansible服务的一个配置文件,Ansible使用Playbook的YAML语言配置编写成操作需求,实现对远端主机或策略部署,实现对远端主机的控制与管理。 1.2 Playbook组成 Tasks:任务&…...

【linux】linux工具使用
这一章完全可以和前两篇文件归类在一起,可以选择放一起看哦 http://t.csdnimg.cn/aNaAg http://t.csdnimg.cn/gkJx7 拖更好久了,抱歉,让我偷了会懒 1. 自动化构建工具 make , makefile make 是一个命令,makefile 是一个文件&…...

Docker需要代理下载镜像
systemctl status docker查看docker的状态和配置文件是/usr/lib/systemd/system/docker.service vi /usr/lib/systemd/system/docker.service, 增加如下配置项 [Service] Environment"HTTP_PROXYhttp://proxy.example.com:8080" "HTTPS_PROXYhttp:…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...