嵌入式软硬件知识总结2
本人学习总结,有些乱,勿怪
1、PLL的鉴频鉴相器——PFD( Phase Frequency Detector) 1.PFD电路结构
1.1传统PFD
1.2非时钟PFD(nc-PFD)
1.2 预充电PFD(pt-PFD)
1.3边沿触发型PFD
1.1传统PFD
有RS触发器构成。
优点:鉴相范围[− 2 π -2pi−2π,2π piπ],范围宽
缺点:存在死区(可以通过增加复位延时消除死区),电路结构复杂,需要的晶体管数量多。由于多输入逻辑们延时较大,电路工作频率不高。而且高频动态功耗大。
1.2非时钟PFD(nc-PFD
参考文献:A Simple Precharged CMOS Phase Frequency Detector ——1998 JSSC,最早提出的NC-PFD .
特点:电路结构简单,仅需要18个mos管。无死区,电平敏感。
缺点:检相范围[-π piπ,π piπ],输出受到占空比的影响。
以下图为例分别分析优缺点
假设参考时钟(Fref)和反馈时钟(slave)同频率,Fref相位超前。
当Fref=1时:两个nc-stage最下面的MOS管都导通,等到Slave信号为1,DOWN变为1.,UP变为1
之后,Fref先变0,此时DOWN跟随Fref拉低。B点点位高阻保持,等到Slave变为0,UP信号在拉低。
因此:UP信号与Slave信号脉宽相同,Down信号宽度等于Fref下降沿减去Slave信号上升沿。
在考虑如下问题:
1由以上分析可知,NC-PFD是电平敏感,因此若输入信号的占空比变化,其输出UP和DOWN的脉冲宽度页随之变化。
2.假设Fref和Slave信号同频反相。则Fref和Slave电平始终相反,一个为0,另一个为1。此时UP和down一直为0,无法鉴相。
当Slave信号落后相位大于180时,同理分析,DOWN的脉冲宽度大于UP的脉冲宽度,鉴相错误。
(Slave信号落后时,UP信号应大于DOWN信号。)
故NC-PFD鉴相范围[-π piπ,π piπ]
3.假设Fref和Slave信号,同频同相。仿照之前的分析过程,UP和DOWN信号同时拉高,拉低。且脉冲宽度应该等于输入信号的脉宽。脉宽足够用来开启电荷泵开关,不存在死区。
1.2 预充电PFD(pt-PFD)
特点:电路结构简单,边沿敏感,低电平先预充电,高电平传递信号。
缺点:有死区,鉴相范围[-π piπ,π piπ]
用以下波形解释上述特点:
当Vref=0时:预充电节点1拉高,等待Vref拉高。
当Vref=1时:DN输出1。
同理
当Vp=0时:预充电节点1拉高,等待Vref拉高。
当Vp=1时:UP输出1。
当Vref和Vp同时为1的时候,上下两部分同时复位,UP=DOWN=0;复位通过Vref和Vp向后传递,存在一定的传播延时。
总结以下几个问题:
1.由于复位信号的传播延时存在,当Vref和Vp之间的相位差足够小的时候,DN和UP脉冲宽度也会很小,可能仅为复位信号的传播延时。无法打开电荷泵开关,产生死区。
2.由前面分析可知,只有当Vref和Vp同时为1的时候,才会产生复位信号,因此当输入信号同频反相,时没有哪一时刻,两者同为1。鉴相器无法工作
当Vp落后于Vref的大于180度时,与nc-PFD类似,会出现相反的鉴相结果,鉴相错误。
故:鉴相范围[-π piπ,π piπ]
1.3边沿触发型PFD
沿触发式PFD的电路结构。主体电路由两个带有复位端的D 触
发器和一个或非门组成。优点是线性度好,鉴相范围宽,理想鉴相范围达到(-2π,2π)。性能良好的
D 触发器的设计将是整个边沿式PFD 设计的关键。
由于存在复位时间,也会有死区存在。可以通过加大复位延迟消除死区,是短脉冲宽度足够打开电荷泵开关。
2、ARM 汇编指令 DCD
DCD:数据定义( Data Definition )伪指令
一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。 语法格式:标号 DCD(或 DCDU) 表达式
DCD(或 DCDU)伪指令用于分配一片连续的字存储单元并用指定的表达式初始化。其中表达式可以为程序标号或数字表达式。 DCD 也可用 " &" 代替。用 DCD 分配的字存储单元是字对齐的,而用 DCDU 分配的字存储单元并不严格字对齐。
3、中断向量表
中断向量表是一个表,这个表里面存放的是中断向量。中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量,因此中断向量表是一系列中断服务程序入口地址组成的表。这些中断服务程序(函数)在中断向量表中的位置是由半导体厂商定好的,当某个中断被触发以后就会自动跳转到中断向量表中对应的中断服务程序(函数)入口地址处。中断向量表在整个程序的最前面,
我们说 ARM 处理器都是从地址 0X00000000 开始运行的,但是我们学习 STM32 的时候代码是下载到 0X8000000 开始的存储区域中。因此中断向量表是存放到 0X8000000 地址处的,而不是 0X00000000,这样不是就出错了吗?为了解决这个问题,Cortex-M 架构引入了一个新的概念——中断向量表偏移,通过中断向量表偏移就可以将中断向量表存放到任意地址处,中断向量表偏移配置在函数 SystemInit 中完成,通过向 SCB_VTOR 寄存器写入新的中断向量表首地址即可,
第 8 行和第 10 行就是设置中断向量表偏移,第 8 行是将中断向量表设置到 RAM 中,第10 行是将中断向量表设置到 ROM 中,基本都是将中断向量表设置到 ROM 中,也就是地址0X8000000 处。第 10 行用到了 FALSH_BASE 和 VECT_TAB_OFFSET,这两个都是宏,定义如下所示:
因此第 10 行的代码就是:SCB->VTOR=0X080000000,中断向量表偏移设置完成。通过上面的讲解我们了解了两个跟 STM32 中断有关的概念:中断向量表和中断向量表偏移,那么这个跟 I.MX6U 有什么关系呢?因为 I.MX6U 所使用的 Cortex-A7 内核也有中断向量表和中断向量表偏移,而且其含义和 STM32 是一模一样的!只是用到的寄存器不同而已,概念完全相同!
4、NVIC(内嵌向量中断控制器)
中断系统得有个管理机构,对于 STM32 这种 Cortex-M 内核的单片机来说这个管理机构叫做 NVIC,全称叫做 Nested Vectored Interrupt Controller。关于 NVIC 本教程不作详细的讲解,既然 Cortex-M 内核有个中断系统的管理机构—NVIC,那么 I.MX6U 所使用的 Cortex-A7 内核是不是也有个中断系统管理机构?答案是肯定的,不过 Cortex-A 内核的中断管理机构不叫做NVIC,而是叫做 GIC,全称是 general interrupt controller,后面我们会详细的讲解 Cortex-A 内核的 GIC。
Cortex-A7 也有中断向量表,中断向量表也是在代码的最前面。CortexA7 内核有 8 个异常中断,这 8 个异常中断的中断向量表如表。
简单介绍一下这 7 个中断:
①、复位中断(Rest),CPU 复位以后就会进入复位中断,我们可以在复位中断服务函数里面做一些初始化工作,比如初始化 SP 指针、DDR 等等。
②、未定义指令中断(Undefined Instruction),如果指令不能识别的话就会产生此中断。
③、软中断(Software Interrupt,SWI),由 SWI 指令引起的中断,Linux 的系统调用会用 SWI指令来引起软中断,通过软中断来陷入到内核空间。
④、指令预取中止中断(Prefetch Abort),预取指令的出错的时候会产生此中断。
⑤、数据访问中止中断(Data Abort),访问数据出错的时候会产生此中断。
⑥、IRQ 中断(IRQ Interrupt),外部中断,前面已经说了,芯片内部的外设中断都会引起此中断的发生。
⑦、FIQ 中断(FIQ Interrupt),快速中断,如果需要快速处理中断的话就可以使用此中断。
5、GIC 控制器
STM32(Cortex-M)的中断控制器叫做 NVIC,I.MX6U(Cortex-A)的中断控制器叫做 GIC,
GIC 是 ARM 公司给 Cortex-A/R 内核提供的一个中断控制器,类似 Cortex-M 内核中的NVIC。目前 GIC 有 4 个版本:V1~V4,V1 是最老的版本,已经被废弃了。V2~V4 目前正在大量的使用。GIC V2 是给 ARMv7-A 架构使用的,比如 Cortex-A7、Cortex-A9、Cortex-A15 等,V3 和 V4 是给 ARMv8-A/R 架构使用的,也就是 64 位芯片使用的。I.MX6U 是 Cortex-A 内核的,因此我们主要讲解 GIC V2。GIC V2 最多支持 8 个核。ARM 会根据 GIC 版本的不同研发出不同的 IP 核,那些半导体厂商直接购买对应的 IP 核即可,比如 ARM 针对 GIC V2 就开发出了 GIC400 这个中断控制器 IP 核。当 GIC 接收到外部中断信号以后就会报给 ARM 内核,但是ARM 内核只提供了四个信号给 GIC 来汇报中断情况:VFIQ、VIRQ、FIQ 和 IRQ
GIC接收众多的外部中断,然后对其进行处理,最终就只通过四个信号报给 ARM 内核,这四个信号的含义如下:
VFIQ :虚拟快速 FIQ。
VIRQ :虚拟外部 IRQ。
FIQ :快速中断 IRQ。
IRQ :外部中断 IRQ。
VFIQ 和 VIRQ 是针对虚拟化的。
我认识的互联网废品回收人,为什么基本没有选择转行的?据2020年求职者调研报告统计,人们平均更换一份工作的频率为15。2个月,甚至没有达到2年。更换职业的时间变短,除了薪资和个人发展的原因,也有当下新兴职业越来越多,很多人经过考量后
被卡脖子有多难受?英特尔发表嚣张言论,我们目前却拿他毫无办法近日英特尔发表了一份英特尔官网发布了一封致供应商的信,信中赫然提到英特尔不使用来自我国新疆的劳工和产品。一家科技公司,根本和新疆那边的业务可以说是毫无关联,却硬是发表了这样一篇像是
第一次感受小米实体售后服务昨天去小米授权维修店更换了小米10的电池。全程感受了一下实体店的小米维修服务,以前都是直接快递给小米的。由于下雪了,店里没有顾客。首先售后人员问了我的机型,然后查下库存有没有该型号
手把手教你用Python实现查找算法导读在复杂的数据结构中高效地查找数据是其非常重要的功能之一。最简单的方法是在每个数据点中查找所需数据,效率并不高。因此随着数据规模的增加,我们需要设计更复杂的算法来查找数据。作者伊
知网资源具有公共性丨长江评论长江日报评论员常少华中国知网12月10日向赵德馨教授作出道歉。这可能是这么多年来面对多次质疑,知网第一次对公众作出的道歉回应。自建立起,知网的定位就是国家知识基础设施,做的事情是公
C是TypeScript的最佳替补?TypeScript非常优秀。它完美地结合了强类型和快速开发,因此非常好用,我在许多情况下都会默认选择这个库。但是,世上没有完美的语言,有些情况下TypeScript并不是最合适的
中北大学项目获科技部首届全国颠覆性技术创新大赛领域赛优胜奖2021年12月20日至22日,科技部主办的首届全国颠覆性技术创新大赛领域赛在四川成都火热进行。作为山西省唯一入围项目中北大学动态测控与智能装备山西省科技创新重点团队的一种新型氢燃
工行广东分行力挺制造业高质量发展,制造业贷款余额超1900亿元为增强全球竞争优势,宁德时代新能源科技股份有限公司在广东肇庆投资建设锂电池生产基地,构建包含动力电池电芯锂电材料储能应用电池回收新能源汽车驱动电机及电控等领域的产业链。其中,正在投
创头条专访丨专精特新百家访谈转载自丨创头条作者沉舟编辑六耳任何超越时代足够多的技术,初看都与魔法无异。阿瑟克拉克1945年,年仅28岁的军人阿瑟克拉克正在英国一部队从事雷达技术工作,他在一本期刊上发表了一篇具
AI费人又烧钱雪崩和回报哪一个先来?每经记者丁舟洋温梦华实习记者李佳宁朱鹏每经编辑董兴生几番折戟后,商汤科技终于不用把冲刺上市的目标留到2022年了。2021年12月20日,商汤科技在港交所重启公开招股,共筹资约60
警惕阿里,腾讯,美团等外资企业营造虚拟经济带来的虚假繁荣阿里巴巴引导的由实体经济转向虚拟金融是否正确?美国华尔街事件让我们从中学到了什么?我觉得只有发展实业,大量扶持世界级大学,科技兴国,军事强国才是正道!注意这可能是外资集团营造的虚拟