Showing Posts From

Tech

无线数字通信之IQ调制工作原理

IQ调制是BPSK、QPSK、QAM16,QAM64、QAM256等在LTE和WiFi领域应用非常广泛的各种高阶调制方式的基础,理解了IQ调制的工作原理,才能够更好的理解LTE以及WiFi底层的OFDM实现机制。因为在OFDM的各个子载波上,最后采用的调制方式仍然是基于IQ调制的各种QAM调制技术,而且本质上,OFDM的实现就是在多路相互正交的子载波上进行的IQ调制的叠加。 IQ调制中的I和Q与IQ调制解调的基本工作原理 IQ调制概念中的I和Q分别对应于两个英文单词的缩写:In-Phase(同相)和Quadrature(正交)。单纯从字面意义上看的话,I和Q两个信号的命名没有任何意义,什么是同相?什么是正交?以什么信号作为参考来判断同相和正交?在具体的实现上,一般是使用一组同频的余弦和正弦波作为I信号和Q信号,那么作为I信号的余弦信号实际上就是参考信号,其本身当然就是同相(In-Phase)信号,而与其同频相差90度的余弦信号自然就是它的正交(Quadrature)信号。所以对于IQ调制信号的理解,最简单的就是可以认为I信号就是余弦载波信号,Q信号则是与I信号同频相差90度的正弦载波信号。 而所谓的IQ调制,就是使用一组同频率的I信号即余弦信号和Q信号即正弦信号(相位相差90度,相互正交)作为载波,向两个载波同时调制两路基带信号,然后把调制后生成的两路信号叠加在一起通过RF电路发射出去。接收端接收到射频信号以后执行IQ解调,在IQ解调的执行过程中,因为两路载波之间是相互正交的,也就可以基于之前调制过程中使用的I和Q载波信号分别把两路基带信号从混合信号中分离出来,单独执行解调。这就是IQ调制和解调的基本工作原理。 下图是IQ调制的基本工作原理。 !ee99c85f-ade9-42ba-ae2b-a824ca2db813.png - 进行IQ调制之前,基带的数字序列信号被按顺序分为两路独立的基带调制信号:I基带信号和Q基带信号。然后I基带和Q基带分别送入I载波信号(余弦)和Q载波信号(正弦)进行调制,再把两路调制信号通过加法器叠加在一起生成IQ调制后的信号,通过RF模块和天线发射出去。 下图是IQ解调的基本工作原理。 !29c82b40-f4af-4083-ab19-f3acf7b1b74c.png - 接受端的天线和RF电路接收到射频信号后,把这个射频信号分别基于与调制信号相同的I信号和Q信号分别执行解调,恢复出来独立的I基带信号和Q基带信号。 I信号与Q信号的叠加 IQ调制的关键就在于对I信号和Q信号进行叠加所产生的幅度和相位上变化的效果。 例如下图是相同幅度的I信号和Q信号的叠加结果:桔色为余弦I信号,蓝色为正弦Q信号,两者幅度相同,叠加所生成的就是图中的红色信号。 !image.png 可以看到,相同幅度的I信号和Q信号叠加所生成信号的相位在I信号和Q信号之间,相对于I信号而言相位是45度。 而如果调高或者调低I信号和Q信号的幅度,则不光会改变调制生成信号的幅度,而且还会相应的改变调制生成信号的相位。 例如在下图中,把I信号(桔色)的幅度设置为2,Q信号(蓝色)的幅度仍然保持为1,那么I信号和Q信号两个信号叠加所产生的调制信号(红色)的幅度稍大于I信号,相位也会向I信号的方向偏移。 !image.png 另一方面,如果把I信号(桔色)的幅度保持为1,Q信号(蓝色)的幅度增大到为2,那么两者叠加所产生的IQ调制信号(红色)的幅度稍大于Q信号,相位则向Q信号靠拢。 !image.png 因此结论就是,对于IQ调制的I信号和Q信号的双方而言,提高一方的相对幅度大小,不光会提升调制信号的幅度,而且会导致调制信号的相位向幅度增大的一方偏移。所以本质上,IQ调制分别是在I信号和Q信号上进行的幅度调制,但是调制的结果不光会影响调制生成信号的幅度,还会影响其相位的变化。 但是,以上图片中I信号和Q信号的幅度无论如何变化和组合,其叠加后生成的IQ调制信号的相位肯定是在I信号的0度和Q信号的90度之间变化,如何实现调制信号的相位在0度到360度之间变化呢?例如QPSK,QAM16以及更高阶的QAM调制的相位都是在0-360之间变化的。 以QPSK解释IQ调制的相位变化 所谓的QPSK,是指一次调制可以完成两个bit基带信息在载波信息上的传输,两个bit的四种组合(00,01,10,11)分别对应于相位调制的45度,135度,225度和315度。 下图是一个QPSK调制器的框图: !image.png - 首先基带信号的数字序列以两个bit为单位进行划分,每次向QPSK调制器送入两个bit的信息,1个bit调制到I信号上,另外1个bit信号调制到Q信号上。上图的Local Oscillator所产生的载波信号就是I载波信号,把I载波信号经过90度相位偏移处理后就是Q信号,作为两个bit的基带信号的调制信号。 - 两个基带bit信号分别通过乘法器调制到其对应的载波信号以后(本质上就是两路独立的幅度调制处理),再把两路载波信号进行叠加处理,所生成的就是QPSK调制信号,通过RF和天线发射出去。 在进行以上QPSK调制的过程中,本质上就是在I路和Q路分别进行幅度调制处理。在这个幅度调制处理的过程中,如果限制基带信号只能为0和正数的话,这个幅度调制实际上就成了OOK,那么I路和Q路叠加的相位偏移量就只能在0-90度之间。而如果把基带的位序列映射处理,进行幅度调制时可以支持负数的话(所谓的负数,实际上就是把I信号和Q信号做180度反向处理而已),那么I路和Q路的幅度调制根据其正负关系就存在以下四种种情况。 I路和Q路都是正数幅度调制 跟前文所描述的逻辑相同,IQ调制生成信号的相位在0到90度之间变化。对于QPSK而言,对应的调制关系是I=1,Q=1,其相位为45度。 !image.png I路正数幅度调制,Q路负数幅度调制 这种情况下,I路的相位没有发生变化,Q路的相位发生了180度变化,由此导致的IQ调制生成信号的幅度在270度到360度之间变化。对于QPSK而言,对应的调制关系是I=1,Q=-1,其相位为315度。 !image.png I路负数数幅度调制,Q路正数幅度调制 这种情况下,I路的相位发生了180度变化,Q路的相位没有发生变化,由此导致的IQ调制生成信号的幅度在90度到180度之间变化。对于QPSK而言,对应的调制关系是I=-1,Q=1,其相位为135度。 !image.png I路负数数幅度调制,Q路负数幅度调制 这种情况下,I路和Q路的相位都发生了180度变化,由此导致的IQ调制生成信号的幅度在180度到270度之间变化。对于QPSK而言,对应的调制关系是I=-1,Q=-1,其相位为225度。 !image.png 因此对于QPSK也好,对于各种QAM也好,最后就是通过把基带的位序列映射为在I路和Q路上进行幅度调制的正数或者负数幅度,由此实现了360度的相位调制。 参考资料 - Understanding I/Q Signals and Quadrature Modulation | Radio Frequency Demodulation | Electronics Textbook - IQ调制为什么叫 I 和 Q?IQ调制是怎么工作的? IQ调制信号必须用IQ解调吗?IQ调制原理 - Digital Phase Modulation: BPSK, QPSK, DQPSK | Radio Frequency Modulation | Electronics Textbook - Understanding Quadrature Demodulation | Radio Frequency Demodulation | Electronics Textbook

双频WiFi和蓝牙之间的天线是如何复用的?

本篇笔记尝试更完整的理解和回答以下三个与射频天线复用相关的问题: - 所有WiFi和蓝牙芯片的射频模块都有收发数据的功能,那么其收发功能是如何通过一根天线来实现的?如何避免同时收发所造成的冲突? - 部分2.4GHz WiFi+蓝牙的Combo模块,使用一根天线既可以用于WiFi,又可以用于蓝牙,那么WiFi和蓝牙如何共享同一根天线,并且不会产生? - 双频WiFi支持2.4GHz和5GHz频段,部分模块可以支持2.4GHz和5GHz频段共用一根天线,但是2.4GHz和5GHz波段的波长差了一半多,如何保证一根天线在2.4GHz和5GHz频段都有比较好的射频性能? WiFi/蓝牙天线的收发复用问题 其实在WiFi和蓝牙上使用一根天线收发根本就不成问题,因为WiFi和蓝牙的TX和RX通信本质上是半双工的,根本就不可能同时进行收发。也就是说,TX和RX打开的时间肯定是错开的,所以对于WiFi和蓝牙的收发天线复用而言,根本就不会存在冲突的问题。 对于BLE而言,其连接状态下的通信逻辑如下图所示: !1735192604742.png 每个connection event,总是从Central设备打开TX发送数据包,Peripheral设备打开RX等待接收数据包开始通信。Central设备发出数据包以后打开RX等待接收应答,而Peripheral设备在在收到Central的数据包以后,打开自己的TX发送应答数据包。 对于广播模式也是如此,Peripheral设备在广播信道总是先打开TX发出广播包,然后切换到RX等待接收Central设备所发出的连接请求包;而Central设备每次建立连接之前,也总是先到广播信道打开自己的RX监听广播包,收到Peripheral设备的广播包以后再切换到TX给其发出连接请求。 因此,对于Central设备和Peripheral设备而言,其数据包的收发总是严格按照时序错开,这样才能正常进行数据包的接收和发送。对于这两端设备的RF模块而言,肯定不存在TX和RX需要同时打开的情况。 WiFi也是类似,WiFi对于无线媒介使用的协商基于CSMA-CA的机制,当源站要发出数据包的时候,首先要通过RX对当前的无线信道进行监听,监听当前信道处于空闲状态下,再延迟一定的时间(SIFS/PIFS/DIFS),然后发出自己的数据包;而目的站在收到数据包以后,延迟一定的时间(SIFS)发出自己的应答包。在以上的源站和目的站发出数据包和应答包的时间内,当前的无线媒介就处于占用的状态(NAV)下。如果这个时候其他站有数据要收发,必须要等待一段时间后重新监听媒介,然后在争用窗口的时间内尝试打开TX发出自己的数据包。 !image.png 以上的这个过程中,每个站要打开TX向无线媒介发出数据包之前,都必须先打开RX监听无线媒介是否处于空闲的状态下,在确定无线媒介空闲的情况下才会打开自己的TX去发送数据。 实际上,每个站在打开TX发送数据包的过程中,它自己是没法知道此时是否有其他站在相同信道同时发送数据从而发生了无线射频冲突(这也是在无线通信中无法使用CSMA/CD,而必须采用CSMA/CA的原因所在),所以只能在每次发出一个数据包以后等待对端发回应答ACK才能确认本次通信是否成功。如果没有收到ACK就认为这个包丢失了需要重传。 按照以上工作逻辑,对于每个WiFi站而言,它的收发控制也都是错开的,即使要发送数据,也一定是先通过RX监听当前无线媒介没有冲突时才打开TX开始发送的。 总之,对于WiFi和蓝牙通信而言,其收发是不可能同时进行的,那自然就可以通过开关对TX/RX进行控制切换,在需要接收数据的时候打开RX,在需要发送数据的时候打开TX,两者不可能产生冲突。 实际上,对于所有的采用时分机制来进行收发双工通信的无线通信方式都是如此,收和发本质上是半双工的,不可能同时进行,也没有办法在发出信息的同时监听是否发生了无线信号的冲突和碰撞,所以只能依赖于对端发回的ACK来确认通信是否成功。 下面一个简化的无线收发器控制RX和TX切换的框图:RX接收无线信号走LNA通路,TX发送信号走PA通路。 !d7e8c264-ff53-4734-9528-bb744bbe6fd7.png 当无线收发器处在发射状态时,功率检波器会检测到无线收发器发出的信号,从而产生开关切换信号以控制RF开关打向发射PA通路,LNA电路被断开,双向功率放大器处在发射状态,此时TX的信号通过天线向外发射。当无线收发器处在接收状态时,功率检波器由于定向耦合器的单方向性而基本没有输入信号,这时通过开关切换信号将RF开关切换到LNA通路,PA通路断开,此时双向功率放大器处在接收状态,RX从天线接收射频信号送入LNA通路进行处理。 因此,从以上框图上可以看出,RX和TX总是处于自动切换的状态,需要发送数据时打开TX切换到PA通路,需要接收数据时切换到RX打开LNA通路,如此切换也就不存在收发同时的冲突问题。 参考资料: - 2.4G射频双向功放电路的设计与制作 - 设计测试 - 电子发烧友网 --- 2.4GHz频段WiFi与蓝牙之间的天线复用问题 部分WiFi+蓝牙Combo的模块,同时包含了WiFi和蓝牙功能,也自然分别包含了蓝牙和WiFi各自的射频电路,但是可以共用相同的2.4GHz天线。例如下图是高拓的2.4GHz单频WiFi6+蓝牙方案6461。问题是: - 蓝牙和WiFi同时通信的时候,如果两者都有数据要接收的话,天线接收的数据到底是给WiFi还是给蓝牙呢? !1735199688313.png 蓝牙和2.4GHz WiFi共享一根天线和射频电路用于进行通信,需要依赖PTA或者EECI的机制。 PTA PTA(Packet Traffic Arbitration)是一种数据包流量仲裁机制,用于协调蓝牙和WiFi设备共享同一射频电路时的工作状态,以尽量减少两者在2.4GHz频段上的相互干扰。 802.15.2规范中定义了蓝牙和WiFi共享天线的情况下,双方进行数据包流量仲裁的框架。在该框架定义中,WiFi和蓝牙对于RF以及天线的使用通过一个仲裁器来进行管理,当两者需要使用RF的时候,分别通过PIN脚向仲裁器提出申请,由仲裁器来决定由哪一方来使用RF和天线。因此在这种WiFi和蓝牙共存的情况下,其无线通信的效率和稳定性等表现就取决于仲裁器的实现方式、运行逻辑以及从两端可以获取的信息。 PTA的具体实现上,一般是把PTA仲裁器模块放在WiFi芯片内部,WiFi芯片和蓝牙芯片通过专门的PTA引脚来交换当前的状态并发起申请。802.15.2建议使用三线制的PTA通信结构,但具体实现上也有二线和四线的方式。 以下是WiFi和蓝牙芯片之间共享RF和天线的典型PTA连接示意图。PTA连接采用标准的三线制:BT_PRIORITY_AND_STATUS,BT_ACTIVITY,WLAN_ACTIVITY。 !image.png - WLAN_ACTIVITY:也称为GRANT引脚,由WiFi芯片向蓝牙发出信号。当WiFi不需要使用RF和天线的时候,可以通过这个引脚通知蓝牙芯片,蓝牙芯片此时就可以向PTA仲裁器发起申请使用天线进行蓝牙数据收发。 - BT_ACTIVITY:也称为REQUEST引脚,由蓝牙芯片向PTA仲裁器发出请求信号。当蓝牙有数据要收发时,通过这个引脚向PTA仲裁器主动发起请求申请使用天线,PTA仲裁器收到请求以后根据自身内部的控制逻辑决定应该由蓝牙还是WiFi来使用天线。 - BT_PRIORITY_AND_STATUS:也称为PRIORITY引脚,由蓝牙芯片发出信号表示当前蓝牙要收发的数据是高优先级还是低优先级。与REQUEST引脚配合使用,通过该引脚表征蓝牙芯片要收发数据的优先级,PTA仲裁器依据这个优先级决定天线使用的归属逻辑。 所以本质上,PTA机制就是在wifi芯片内置一个PTA仲裁器,WiFi芯片和蓝牙芯片通过Grant、Request以及Priority引脚来通知和协商各自对于2.4G RF和天线的使用需求,然后最终由PTA仲裁器来决定天线使用的归属权,这样就可以避免WiFi和蓝牙同时使用天线所可能造成的无线冲突的问题。 PTA最大的问题是三个引脚通过高低电平来传递信息,所能够携带的信息量太少了,只包含了请求、状态、数据优先级等少量的信息,这些信息对于PTA仲裁器做出高效的判决是远远不够的,所以为了在两者之间分享更多的信息来辅助PTA仲裁器实现更高效率的天线控制,可以采用ECI或者SECI机制。 SECI SECI就是串行增强型共存接口(Serial Enhanced Coexistence Interface),实际上是Cypress定义的一种基于串口UART通信的2.4GHz射频与天线的共存协商接口和协议,广泛应用于Cypress的WiFi和蓝牙产品中。 在具体的应用中,SECI采用串口UART在蓝牙和wifi芯片之间传输仲裁所需要的信息,最多可以通过串口交换64bit的信息,远远超过了PTA机制下的三线通信所提供的3bit信息。因此可以辅助做出更高效的RF与天线在两者之间复用的决策。 - 当然因为SECI是Cypress定义的私有协议,所以对于要采用SECI在WiFi和蓝牙之间共享天线的情况下,最好是能够同时采用Cypress的wifi和蓝牙芯片。 !image.png 总而言之,无论是PTA也好,SECI也好,本质上都是一种在蓝牙和WiFi之间对于RF和天线共存的分时使用机制。WiFi和蓝牙通过某种通信机制交换双方的状态信息、通信需求、数据优先级、时序等方面的信息,由仲裁器决定应该由哪一方使用天线。因此无论如何,在一个时间点上肯定是只有一方能够使用天线。这样势必会造成对于两方通信实时性和吞吐率的影响,只不过在仲裁器的协助下,可以最大程度上降低通信过程中产生无线冲突的概率。 WiFi+BT Combo 以上所讨论的PTA以及SECI机制,都是针对在独立的WiFi芯片和独立的蓝牙芯片之间共享同一个天线进行通信,而如果要提升通信效率,更好的做法实际上上选择把WiFi和蓝牙内包在一起的Combo模块,在这种情况下,蓝牙和wifi在同一个芯片内部,其状态信息可以得到充分共享,不需要依赖于外部的PTA和SECI接口,这样对于RF和天线资源在两者之间调度就可以做得更高效。实际上这种方式才是目前在应用方向上的主流,不少wifi芯片直接就已经内包了蓝牙功能,不需要通过外部接口来进行天线使用上的协商,直接在芯片内部处理好了,例如高拓的6461内包了WiFi和蓝牙,因此直接在芯片内部对于wifi和蓝牙共享天线做好了支持,这样的方式就比外部PTA和SECI连接效率高很多: !1735810160250.png 结论 对于2.4GHz频段的WiFi与蓝牙之间共享一根天线进行数据收发的情况,存在多个方案,PTA,ECI,SECI以及Combo Module,但是其本质上都是大同小异。两者对于天线的共享都要依赖于其中包含的仲裁器,wifi和蓝牙需要使用天线的时候向仲裁器申请,仲裁器根据双方数据通信的优先级进行分配,同一时刻肯定是只有WiFi或者蓝牙的一方具有天线的使用权。 因此,仲裁器的存在,以及WiFi和蓝牙对于天线使用权的竞争,多少会影响各自数据通信的吞吐率,影响的大小就要取决于仲裁器的运行逻辑。 参考资料 - [蓝牙系列] WiFi 与BT 共存机制 - 知乎 - PTA是什么?BT-WIFI共存_wifi pta-CSDN博客 - Overview of SECI - Infineon Developer Community --- 2.4G/5GHz双频WiFi的天线复用问题 目前的双频WiFi模块,能够支持2.4GHz和5GHz频段的WiFi通信,在该模块的电路设计中,同样存在两个WiFi频段的天线复用问题,即2.4GHz和5GHz频段的射频电路使用同一个天线,通过开关对天线的使用进行匹配。例如高拓的双频WiFi 6132: !1735199172251.png 那么问题是: - 复用逻辑问题:与以上的蓝牙和2.4GHz WiFi复用天线的问题类似。WiFi 2.4GHz和5GHz频段在使用的时候,如果两个频段同时有数据发送的话,可以把数据先缓存在buffer中,然后通过开关切换依次把各自buffer中的发送出去,但是对于接收而言,两个频段如果同时有数据要接收的话,天线切换到2.4GHz的时候,5GHz频段的数据肯定就丢包了。这个问题是如何处理的? - 复用性能问题:2.4GHz和5GHz的天线性能问题。天线的长度与波长相关,2.4GHz和5GHz的频率差了一倍多,那么能够发挥出来最佳RF性能的天线长度也应该差一半。如果复用一条天线的话,如何能够保证在两个频段都有最好的RF性能呢? 复用逻辑问题 对于双频wifi的天线复用问题,逻辑上其实跟WiFi与蓝牙之间复用天线的情况一致:无论如何复用,最后都是通过时分的机制来实现的,同一时刻,要么是2.4GHz频段在使用WiFi天线,要么是5GHz频段在使用WiFi频段。 正如上面高拓6132框图所示,双频WiFi的5G和2.4G两个频段有各自的RF处理电路,通过SPDT开关进行切换,同一时刻只能有一个频段在使用WiFi。 既然是分时的天线复用逻辑,那么就势必会对各个频段通信的吞吐率造成一定的影响。以最简单的等比分时复用的逻辑对SPDT开关进行切换,那么对于2.4GHz和5GHz频段而言,都只有一半的时间可以拥有天线的使用权,当然会对各个频段使用的通信吞吐率造成显著的影响。尤其是对于射频的接收而言,如果在接收信号到达天线端但是SPDT开关未能切换到与之匹配的工作频段时,这个数据包肯定就丢包了,接下来只能在开关切换过来以后通过重传来解决问题。所以这样的频繁切换对于射频收发吞吐率的影响是无法避免的。 因为分时复用对于RF吞吐率会有明显的影响,那么如果产品应用中如果对于通信的速率有较高的要求,就需要考虑2.4GHz和5GHz分时复用天线可能造成的影响。这一点应该也是大多数路由器在天线设计中把2.4G天线和5G天线分开的原因所在,这样的话,独立的2.4G天线和5G天线固定的与其匹配的RF电路配合提供相应频段下的网络服务,这样就不需要在两个频段下频繁切换了。例如下图是小米一款路由器的拆解图,可以看到2.4G和5G天线明确的分成了两组。 !1736325410377.jpg 另外很重要的一点是,对于物联网以STA方式使用双频WiFi的应用而言,双频WiFi一般只是会处于二选一的状态,这样的话就不存在复用逻辑问题了。例如在IP Camera产品中使用双频WiFi,在进行配网的时候会选择以2.4GHz或者5GHz接入路由器,选择后以后每次与路由器之间的连接就只是固定的使用2.4GHz或者5GHz其中之一来工作,所以SPDT开关就会按照WiFi驱动配置设置的频段固定的切换到2.4GHz或者5GHz,根本就不需要在工作中频繁切换,那自然就没有复用逻辑的问题了。 复用性能问题 双频天线复用的性能问题,实际上就是天线的多频设计问题。经过多频设计的天线可以在单根天线上支持多个频段的通信。 - 天线多频设计的问题在手机LTE所支持的多模式上更为突出,因为LTE支持运行在多个不同频段的BAND上,而现在的手机基本上都是支持所有BAND的全网通,其内部天线的设计就需要能够兼容支持不同的频段,因此相较于双频WiFi的2.4GHz和5GHz的多频段支持要更加复杂。 如何设计天线,让这个天线能够支持多个频段,并且在各个频段上的工作性能都达到标准要求,这就是天线多频设计所关注的主要问题。 目前在单个天线上可以同时支持多个频段无线通信的天线设计方法主要有谐振分枝法、倍频设计法、寄生分枝法等。参考文档1针对这个主题提供了非常好的总结,以下基于其内容进行简单的总结。 谐振分枝法 谐振分枝法就是针对这个天线要支持的频段,每个频段有一个相互独立的辐射分枝。因为各个频段的分枝是独立的,所以其谐振频点的调试就不会对其他的频段产生影响,调试起来更简单。 例如下图就是一个标准的双频WiFi的天线设计图。其中尺寸较长的分支(L1+H)对应的是2.4GHz频段的偶极子天线,尺寸较短的分支(L2)是5GHz频段的偶极子天线。两个天线相互独立,可以根据其要支持的频段独立的调试长度。 !image.png 下图是以上天线在频谱上进行仿真运算的示意图,可以看到在2.45GHz和5.5GHz频点上具有良好的阻抗和带宽特性。 !1736320417245.png 对于谐振分枝法所设置的多频天线而言,用于两个频段时效果较为理想,当谐振分枝超过3个时,各个分枝之间的互扰就会变大,从而导致各个频段的性能均变差,因此这种方法比较适合类似双频WiFi这样的双频段应用。 倍频设计法 从电磁波的基本理论得知,当RF信号在天线的基波频段产生谐振时,同时会在其奇次谐波,例如3倍、5倍、7倍…基波频段同样产生谐振,而在其偶数倍基波频段因为抵消效应不会产生谐振。例如下图是在一个900MHz的标准偶极子天线上模拟出来的各次谐波谐振的示意图。那么就可以利用这个奇次谐波谐振的特性来设计使用一根天线用以支持多个不同频段,这就是倍频设计法的工作原理。 !1736315619425.png 上图中演示的效果是标准的奇次谐波谐振的情况,但是我们在产品应用中遇到的绝大多数情况,多个频段不太可能刚好是奇次谐波的关系。针对这种情况,可以在天线的设计上做一下特殊处理,例如PCB天线对天线的走线做一些弯折处理、调整弹簧天线的螺距线圈半径等参数,就可以做到保持低频的基波频率不发生变化,并且把高频次谐波的频点调节到自己期望的频点上。 寄生分枝法 还有一种多频天线的设计方法是寄生分枝法。大致的工作原理是在天线设计的原生分枝旁边增加一个寄生分枝,RF电路的能量从原生分枝的馈线端接入,而寄生分支与原生分枝之间的距离很近,因此两个天线分枝之间会产生耦合效应,相当于在两个分枝之间增加了一个寄生电容,原生分枝馈线端的辐射能量通过这个寄生电容耦合到寄生分枝辐射出去。寄生分枝根据自己的结构和尺寸设计有对应的谐振频点,从而产生了独立于原生分枝的辐射频点。 !1736324008946.png 寄生分枝除了可以像上图一样添加在原生分枝的馈电端口附近以外,也可以增加在原生分枝的末端: !1736325799292.png 甚至可以像下图一样以直接耦合的方式增加寄生分枝: !1736325904265.png 对于在单个天线上要支持多个不同频段的RF通信,大致就是以上三种多频天线设计方法的排列组合,首先确认自己的产品应用要支持的频段,然后针对性的选择合适的多频天线的设计方案并进行组合、仿真,基本上就可以到达预期的设计目的。例如下图就是一个综和利用了多种多频天线设计技术的天线设计图: !1736326204789.png 参考资料 - 用HFFS实例讲解多频天线设计-CSDN博客

BIOS/UEFI/MBR/GPT/GRUB/EFI等概念的总结

BIOS与UEFI BIOS:Basic Input Output System。 UEFI:Unified Extensible Firmware Interface。 简单总结起来,无论是BIOS还是UEFI,本质上就是计算机的bootloader,而且这个bootloader还不是放在硬盘上的,而是固化在计算机主板的CMOS或者EEPROM存储器上:这是当然的道理,否则使用一块新的硬盘或者对之前的硬盘格式化以后,bootloader就不存在了,计算机也就没法正常启动了,因此BIOS和UEFI这两个固件一定是保存在主板上的其他非易失性存储器中,这样的话在硬盘上无论如何折腾,至少计算机是能够基本自检和正常启动的。 - 从这一点上,BIOS/UEFI就类似于各种嵌入式处理器上的Rom Loader,而不是Uboot。Rom loader是固化在嵌入式处理器芯片内部的,芯片上电以后首先执行的就是Rom Loader的程序,Rom Loader负责把烧写在Flash中的Uboot加载到RAM中运行。 BIOS和UEFI实际上就是计算机上电以后执行的第一个程序,其主要的功能不外乎: - CPU本身的初始化中断向量的设置; - 对各种硬件外设进行的初始化; - 系统自检,跟据自检结果输出提示信息以及决定是否继续启动系统; - 加载并操作系统镜像或者第二阶段的Bootloader。 实际上,BIOS是自从PC诞生以后就成为默认的Bootloader,直到2010年以后逐渐被UEFI所替代。不过因为BIOS的使用时间很长,BIOS这个名字也已经深入人心,所以很多时候我们仍然使用BIOS来表示计算机的bootloader。 UEFI最终能够替代BIOS无非是因为BIOS的设计随着时代的发展已经跟不上潮流: - BIOS最高只能支持2TB的硬盘,而UEFI理论最高则能够支持到ZB级别。 - UEFI的启动速度更快,原因是BIOS必须运行在CPU的16位模式下,而UEFI可以工作在CPU的32位或者64位工作模式下,执行速度更快。 - BIOS最高只有1MB的程序运行空间,所以BIOS的功能就没法做的非常复杂和强大。例如BIOS无法支持UEFI所能够支持的GUI图形界面和鼠标操作。 - UEFI能够支持安全启动和网络启动,这两点都是BIOS所不具备的。 正因为以上原因,BIOS在2010年后开始逐渐被UEFI所替代,但是UEFI的功能与BIOS实际上是大同小异的。 另外一点值得注意的是,UEFI的设计上提供了对BIOS的兼容性,所以UEFI包含一个legacy的模式,如果设置UEFI使用Legacy模式的话,那么其执行流程就跟BIOS没有区别了。 !Untitled.png MBR与GPT MBR:Master Boot Record,硬盘主引导记录分区表 GPT:GUID Partition Table,全局唯一标识分区表 MBR和GPT的概念与硬盘的分区结构息息相关。无论是UEFI还是BIOS在启动的过程中,最终总是需要初始化硬盘以后,读取硬盘的分区结构,了解到硬盘是如何分区的,各个分区的大小和位置,操作系统启动分区在哪个地方。那么这样就要求硬盘需要按照BIOS或者UEFI的要求,把硬盘的分区信息按照BIOS/UEFI能够解析的结构放在固定的位置,这样BIOS/UEFI在启动的过程中才能顺利的找到硬盘分区信息,解析后加载操作系统正确的执行。 BIOS和UEFI这两种类型的bootloader,都分别定义了自己的硬盘分区信息结构,其中BIOS定义的硬盘分区结构就是MBR,而UEFI的规范中则定义了GPT结构。 MBR:与BIOS配合使用 MBR分区信息模式,会在硬盘的开头存放一个固定大小的MBR分区,这个分区就是硬盘主引导记录,其中定义了整个硬盘的分区结构和引导分区的位置。不过MBR分区规范中最高只能支持2TB大小的硬盘(因为BIOS只支持MBR分区模式,所以这就是为什么BIOS最大只能支持2TB硬盘的原因),并且最多只支持4个主分区或者3个主分区+1个扩展分区,如果需要更多的分区,可以在扩展分区中再创建逻辑分区。 在使用MBR方式进行硬盘分区管理的情况下,会使用硬盘0号扇区保存MBR信息。整个0号扇区总共512字节,分为引导程序、磁盘签名、硬盘分区表、结束标志四个部分。 !Untitled.png - 引导程序,占MBR分区的前面440个字节,负责加载并启动操作系统。 - 磁盘签名,4个字节,Windows格式化硬盘后写入的标签信息。 - 分区表,64个字节,保存了这个硬盘的分区信息。 - 结束标志,MBR分区的最后两个字节,固定位0x55,0xAA。 对于BIOS启动模式而已,BIOS程序负责加载硬盘0号扇区上的MBR记录,然后把CPU的控制权交给MBR引导代码,在MBR的引导代码中对分区表信息进行读取和解析,然后从引导分区读取操作系统镜像,并启动操作系统的运行。 GPT:与UEFI配合使用 GPT分区模式则由UEFI的规范所定义的硬盘分区结构。不同于BIOS所使用的MBR分区结构,GPT分区结构不限制分区的数量和分区大小,只不过Windows系统限制最大只能支持128个GPT分区。 相比于MBR分区结构只使用0号扇区存储整个分区信息,GPT的分区结构要更复杂一些: !Untitled.png - 保护MBR。GPT分区结构的开头第一个扇区是保护性MBR,用于跟传统的MBR分区结构兼容。 - GPT头。其中包含了签名信息,GPT头结构的大小,备份GPT头所在的逻辑块地址,GPT分区表所在的逻辑块地址和大小,分区的数量,每个分区表条目的大小,CRC校验值等信息。UEFI对GPT头结构信息读取和解析后即可找到GPT分区表所在的位置并解析分区表的信息。 - GPT分区表。这部分是GPT分区结构的核心部分,定义整个硬盘中的GPT分区的分布情况,各个分区的类型/GUID,分区的物理地址和大小,以及属性。 - 用户分区。这部分就是各个分区所占据的实际存储空间,分区的位置与大小在分区表中定义。 - 备份GPT分区表和GPT头。这部分实际上是GPT头和GPT分区表内容的备份,以防止GPT头和分区表损坏后系统无非恢复。这一点是比MBR更安全的地方,MBR是没有备份机制的,所以MBR的第一扇区主引导记录一旦被破环就无法恢复正常启动了。 值得注意的是,为了与UEFI配合起来使用,在GPT分区结构的用户分区中,必须包含一个实际上是FAT文件系统的ESP分区(EFI System Partition),这个分区中保存了真正用于加载和引导操作系统的二级bootloader文件。UEFI在启动运行的过程中,会读取和解析硬盘的GPT头以及GPT分区表,从而可以正确的识别这个ESP分区。UEFI通过分区表中的GUID来判断某个分区是否是ESP分区,ESP分区的GUID固定是:C12A7328-F81F-11D2-BA4B-00A0C93EC93B。当识别到ESP分区后,UEFI按照FAT类型文件系统进行加载,并读取其中的二级bootloader文件,例如\BOOT\BOOTX64.EFI,后续操作系统的引导过程由这个二级bootloader文件来负责。 Grub 如果独立安装Linux系统,或者在Windows系统的基础上再进一步安装Linux系统,并且实现双系统启动的话,在安装Linux系统的最后进行Grub的安装就是不可避免的了。 那么Grub到底在MBR和GPT的基础上做了什么事情,从而能够实现双系统甚至多系统的启动? BIOS+MBR结构 如前所述,在BIOS+MBR结构下,BIOS在启动运行的过程中,会把硬盘0号扇区的前446字节所包含的bootloader文件加载到内存中开始执行。所以这个446字节的bootloader就负责加载操作系统的镜像,在安装Windows系统以后,0号扇区的前446字节会被写入ntldr,由ntldr来引导和启动Windows系统;而如果安装的是Linux,使用Grub2作为bootloader的话,那么在安装Linux系统的最后阶段,则会把Grub2的stage 1 binary写入0号扇区的前446字节。 当然这个446字节的空间太小了,肯定不可能把Grub的所有功能全部包含进来,因此实际上Grub的启动分成了两个阶段: - Stage1:写入0号扇区的446字节是第一阶段,其作用就是用来找到和加载真正的Grub bootloader主程序,也就是位于操作系统启动分区的Grub2第二阶段的程序。而且受限于446字节的大小,这个阶段的stage1 binary是没法包含文件系统功能的,所以Grub2第二阶段的位置是直接写死在MBR的446字节程序中的。Grub2 Stage1的镜像对应于boot.img,安装时写入硬盘0号扇区. - Stage2:被加载Stage1加载后,解析/boot/grub2/grub.cfg配置文件,跟据该配置文件的定义,显示多系统的启动选择界面,或者直接加载Linux kernel和文件系统,然后就由Kernel来启动后续的过程。Grub2 Stage2的镜像对应于core.img,位置为/boot/grub2/i386-pc目录下。 !Untitled.png UEFI+GPT结构 如以上总结GPT分区结构部分的内容,UEFI firmware启动以后,会对GPT的分区结构进行解析,跟据专门的GUID找到一个特殊的ESP分区,这个分区类型实际上是一个FAT32文件系统,默认的系统启动器就是这个分区下的/efi/boot/bootx64.efi文件(32位的话是bootia32.efi)。 那么在UEFI+GPT分区结构的情况下,在安装Grub2到硬盘上的时候,实际上会在ESP分区下创建一个以操作系统名称命名的子目录(例如下面的ubuntu),在其中放入Grub2对应的efi文件和配置文件。同时会把Grub2的efi文件拷贝到/EFI/Boot目录下,并且重命名位bootx64.efi。这样下次UEFI启动的时候,找到ESP分区就从其Boot目录下找到bootx64.efi文件并运行以加载操作系统镜像或者提供多系统选择的界面,由用户选择需要启动的系统。 - 如上所述,实际上Grub2在ESP分区中的安装以及启动运行比以上更复杂一些。Grub2在ESP分区的/EFI/ubuntu下拷贝了多个efi文件,并且真正替换bootx64.efi文件的时其中的shimx64.efi。所以在安装Grub2以后,实际上UEFI最终首先会找到EFI/Boot下的bootx64.efi文件(实际上也就是shimx64.efi)启动运行,然后再链式加载运行EFI/ubuntu下面的grubx64.efi。以上过程涉及到Secure Boot的签名运算和安全校验的机制,启动过程中先运行由Microsoft签名shimx64.efi,再由shimx64.efi加载运行真正的grub镜像grubx64.efi文件。 参考资料 - BIOS与UEFI介绍与使用-腾讯云开发者社区-腾讯云 (tencent.com) - 详解MBR分区结构以及GPT分区结构-CSDN博客 - BIOS 与 UEFI 引导流程 - LARRY1024 - 博客园 (cnblogs.com) - Linux中GRUBX64.EFI和SHIMX64.EFI有什么区别?_ITPUB博客