AC米兰·(中文)官方网站-2026 World Cup

新闻资讯
【方辉专栏】ARM嵌入式编译器(五) 优化循环的4种方法
2022-08-16
摘要: 本文主要对Arm Compiler 6编译器的优化循环对编写优化代码的作用进行介绍。关键字:Arm Compiler 6、编译器、优化循环 、循环展开、pragma、循环向量化、循环终止、无限循环、1. 循环展开循环执行的时间取决于循环的次数,循环中每次检查是否进行循环的条件会降低循环的性能。使用循环展开可以减少检查条件的判断次数,但是展开循环就意味着增加代码量。例如:在精确的时钟周期循环中,可以使用#pragma unroll (n)来展开循环。“pragma”(编译指示)仅在选择优化等级为-O2/-O3/-Ofast和-Omax时有效。 编译指示的相关用法:#pragma unroll (n)展开n次循环#pragma unroll_completely展开所有循环注:虽然给出了循环展开的编译指示,但Arm官方不建议使用,这样会影响编译器的展开优化和其他循环优化。不使用循环展开的代码使用循环展开的代码int countSetBits1(unsigned int n){ int bits = 0; while (n != 0) { if (n & 1) bits++; n >>= 1; } return bits;}int countSetBits2(unsigned int n){ int bits = 0; #pragma unroll (4) while (n != 0) { if (n & 1) bits++; n >>= 1; } return bits;}将代码分别复制到file.c文件中,然后使用以下命令进行编译和反汇编。armclang --target=arm-arm-none-eabi -march=armv8-a file.c -O2 -S -o file.s不使用循环展开的汇编代码使用循环展开的汇编代码countSetBits1: mov r1, r0 mov r0, #0 cmp r1, #0 bxeq lr mov r2, #0 mov r0, #0.LBB0_1: and r3, r1, #1 cmp r2, r1, asr #1 add r0, r0, r3 lsr r3, r1, #1 mov r1, r3 bne .LBB0_1 bx lrcountSetBits2: mov r1, r0 mov r0, #0 cmp r1, #0 bxeq lr mov r2, #0 mov r0, #0LBB0_1: and r3, r1, #1 cmp r2, r1, asr #1 add r0, r0, r3 beq .LBB0_4@ BB#2: asr r3, r1, #1 cmp r2, r1, asr #2 and r3, r3, #1 add r0, r0, r3 asrne r3, r1, #2 andne r3, r3, #1 addne r0, r0, r3 cmpne r2, r1, asr #3 beq .LBB0_4@ BB#3: asr r3, r1, #3 cmp r2, r1, asr #4 and r3, r3, #1 add r0, r0, r3 asr r3, r1, #4 mov r1, r3 bne .LBB0_1.LBB0_4: bx lr可以看到展开循环时,代码执行会更快,但代码量也更大。2. 循环向量化如果编译的目标含有SIMD单元,那么编译器就可以使用向量引擎来优化代码的向量部分。在优化等级为-O1,可以使用-fvectorize 来启动优化,而在-O2或更高等级时向量优化是自动启用。要使用向量优化,在编写代码的时候需要将结构体的成员放到同一个循环中,而不能使用独立的循环。可以进行SIMD优化的代码不能进行SIMD优化的代码typedef struct tBuffer { int a; int b; int c;} tBuffer;tBuffer buffer[8];void DoubleBuffer1 (void){ int i; for (i=0; i<8; i++) { buffer[i].a *= 2; buffer[i].b *= 2; buffer[i].c *= 2; }}typedef struct tBuffer { int a; int b; int c;} tBuffer;tBuffer buffer[8];void DoubleBuffer2 (void){ int i; for (i=0; i<8; i++) buffer[i].a *= 2; for (i=0; i<8; i++) buffer[i].b *= 2; for (i=0; i<8; i++) buffer[i].c *= 2;}对于每个例子,将代码分别复制到file.c文件中,然后使用以下命令进行编译和反汇编。armclang --target=arm-arm-none-eabi -march=armv8-a file.c -O2 -S -o file.s向量优化后汇编代码未进行向量优化的代码DoubleBuffer1:.fnstart@ BB#0: movw r0, :lower16:buffer movt r0, :upper16:buffer vld1.64 {d16, d17}, [r0:128] mov r1, r0 vshl.i32 q8, q8, #1 vst1.32 {d16, d17}, [r1:128]! vld1.64 {d16, d17}, [r1:128] vshl.i32 q8, q8, #1 vst1.64 {d16, d17}, [r1:128] add r1, r0, #32 vld1.64 {d16, d17}, [r1:128] vshl.i32 q8, q8, #1 vst1.64 {d16, d17}, [r1:128] add r1, r0, #48 vld1.64 {d16, d17}, [r1:128] vshl.i32 q8, q8, #1 vst1.64 {d16, d17}, [r1:128] add r1, r0, #64 add r0, r0, #80 vld1.64 {d16, d17}, [r1:128] vshl.i32 q8, q8, #1 vst1.64 {d16, d17}, [r1:128] vld1.64 {d16, d17}, [r0:128] vshl.i32 q8, q8, #1 vst1.64 {d16, d17}, [r0:128] bxlrDoubleBuffer2: .fnstart@ BB#0: movw r0, :lower16:buffer movt r0, :upper16:buffer ldr r1, [r0] lsl r1, r1, #1 str r1, [r0] ldr r1, [r0, #12] lsl r1, r1, #1 str r1, [r0, #12] ldr r1, [r0, #24] lsl r1, r1, #1 str r1, [r0, #24] ldr r1, [r0, #36] lsl r1, r1, #1 str r1, [r0, #36] ldr r1, [r0, #48] lsl r1, r1, #1 str r1, [r0, #48] ldr r1, [r0, #60] lsl r1, r1, #1 str r1, [r0, #60] ldr r1, [r0, #72] lsl r1, r1, #1 str r1, [r0, #72] ldr r1, [r0, #84] lsl r1, r1, #1 str r1, [r0, #84] ldr r1, [r0, #4] lsl r1, r1, #1 str r1, [r0, #4] ldr r1, [r0, #16] lsl r1, r1, #1 ... bx lr在64位运行状态下要避免编译器使用SIMD向量优化可以在-march或-mcpu后+nosimd;例如:armclang --target=aarch64-arm-none-eabi -march=armv8-a+nosimd -O2 file.c -S -o file.s在32位运行状态下要避免编译器使用SIMD向量优化,可以通过设置-mfpu=fp-armv8;例如:armclang --target=aarch32-arm-none-eabi -march=armv8-a -mfpu=fp-armv8 -O2 file.c -S -o file.s3. 循环终止在写循环的时候如果编写不当会使得代码的运行效率降低和代码量增大。建议使用以下的终止条件:1)使用变量类型为:unsigned int2)使用向下减少的计数方式,以减到0作为计数结束。3)使用简单的终止条件。单独或组合使用以上原则的终止条件,可以获得更好的代码大小或效率。例如:这是一个实现n!的计算程序。递增循环递减循环int fact1(int n){ int i, fact = 1; for (i = 1; i <= n; i++) fact *= i; return (fact);}int fact2(int n){ unsigned int i, fact = 1; for (i = n; i != 0; i--) fact *= i; return (fact);}用以下命令反汇编以下armclang -Os -S --target=arm-arm-none-eabi -march=armv8-a递增循环递减循环fact1: mov r1, r0 mov r0, #1 cmp r1, #1 bxlt lr mov r2, #0.LBB0_1: add r2, r2, #1 mul r0, r0, r2 cmp r1, r2 bne .LBB0_1 bx lrfact2: mov r1, r0 mov r0, #1 cmp r1, #0 bxeq lr.LBB1_1: mul r0, r0, r1 subs r1, r1, #1 bne .LBB1_1 bx lr对比反汇编代码可以看出在递减循环中用SUBS指令代替了递增循环中ADD 和CMP两条指令。这是因为SUBS指令会自动更新Z标志。此外在递减循环中变量n不必再循环的过程实时使用,从而减少了寄存器的数量。如果终止条件是一个函数,则循环的每次都调用该函数,这种情况下递减的循环优势就更明显了。例如:for (...; i < get_limit(); ...);说明:这种递减循环计数的方式也适用于while-do 命令。4. 无限循环在某些情况下armclang会删除一些编译器认为没有影响的无限循环,从而导致最终程序无法正常运行。为确保无限循环的正确编译执行,ARM官方建议在无限循环中添加__arm volatile的声明。这个声明的目的是告诉编译器删除这个无限循环会有影响,不能被优化删除。在无限循环中,把处理器设置为低功耗模式是一个不错的做法,当有中断或事件触发时再回到正常模式。下面是一个包含__arm volatile声明的无限循环例子:void infinite_loop(void) {while (1)  __asm volatile("wfe");}注:wfe(Wait for Event)是给处理器一个提示,使处理器进入低功耗状态,直到事件或中断触发。来源:《Arm® Compiler for Embedded User Guide Version 6.18》+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关于AC米兰中文官网入口AC米兰中文官网入口(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。AC米兰中文官网入口凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。欢迎关注“AC米兰中文官网入口”公众号了解更多研发工具软件知识
查看更多→
Ansys计划于2027年实现减少15%碳排放量
2022-08-16
Ansys致力于通过谨慎衡量资源使用情况,减少其现有业务对环境与气候的影响主要亮点作为仿真软件领域的领导者,Ansys通过旨在减少资源浪费的先进仿真技术,帮助用户实现可持续发展目标Ansys的环境战略侧重于总体减排和基于其全球基础设施能源审计结果的项目实施Ansys计划通过测量、分析和减少资源使用,来减少其业务对环境和气候的影响。目标是到2027年,与其2019年的基线相比,将scope 1和scope 2范畴的排放量减少15%。Ansys还通过仿真解决方案扩大其承诺范围,帮助用户最大限度地减少材料浪费、提高循环利用率、加速产品研发过程,并最大限度地减少物理原型制作。Ansys的环境战略侧重于减少总体排放,并继续实施能源审计项目,包括加强照明与现场可再生能源。这是其降低排放、减少环境影响并优化运营的更广泛举措中的一部分。Ansys的环境战略侧重于减少总体排放,并继续实施能源审计项目,包括加强照明与现场可再生能源,如太阳能电池板(图为 Ansys 印度浦那厂区)Ansys在继续推进其产品手印计划(product handprint initiative)——记录Ansys如何帮助客户减少其对地球的影响。每个产品手印或应用案例,都反映了Ansys在特定领域的工作成果,包括半导体、能源、数字孪生和航空航天领域。通过其在线系列纪录片 “拯救地球(Earth Rescue)” ,Ansys展示了富有远见的客户为应对气候变化在解决方案创新方面所做的努力。“拯救地球” 系列纪录片的新剧集将于今年秋天发布。Ansys副总裁、法律总顾问兼秘书及ESG项目负责人Janet Lee表示:“通过我们的环境、社会和治理(ESG)计划,Ansys致力于为投资者、客户、员工和合作伙伴推动积极的创新发展。我们ESG计划的根本理念是,通过产品促进可持续发展、投资我们的员工、负责任地运营以及与利益相关方合作——确保我们能够在共同建设更美好未来的过程中,为企业和社区带来长期价值。”(文章来源公众号:Ansys)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关于AC米兰中文官网入口AC米兰中文官网入口(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。AC米兰中文官网入口凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。欢迎关注“AC米兰中文官网入口”公众号了解更多研发工具软件知识
查看更多→
强力赋能汽车与AIoT,“星辰”处理器助攻本土芯片创新
2022-08-15
随着人工智能的纵深发展,物联网设备智能化对处理器的计算性能和计算效率提出了更高需求,而面向工业和车规的设备,则需要高可靠性的计算平台来满足安全性的要求。安谋科技自研“星辰”处理器自2019年首次发布,发展到今年7月发布的第二代产品,以其强劲的处理性能和对Arm®生态的延续,在AIoT、汽车电子等领域被广泛应用,逐步构建起丰富的生态系统。创新不止,“星辰”处理器赋能AIoT和汽车电子“星辰”处理器第一代产品STAR-MC1于2019年9月发布,次年6月,安谋科技推出了STAR-MC1的升级版本,该版本支持Armv8-M架构中所有的特性,支持了可定制指令和协处理器接口,并进一步拓展TrustZone的安全性,满足了AIoT应用对性能、功耗、安全的全面要求。“星辰” STAR-MC2处理器概览2022年7月,安谋科技重磅推出“星辰”处理器第二代产品STAR-MC2。“星辰”STAR-MC2基于最新Armv8.1-M架构设计,是首个本土研发、支持ASIL-D级别功能安全的嵌入式处理器。相较于上一代产品,它不仅拥有更强的人工智能和数字信号处理能力以及更高的计算密度和能效比,还重点优化了智能物联网和车载设备所需的信息安全和功能安全。特别是在中国新能源智能化汽车产业大发展、汽车电气架构变革演化的大背景下,国产车规级芯片逐渐成为市场宠儿,“星辰”STAR-MC2处理器支持ASIL-D级别的功能安全设计,可大幅简化芯片开发并加速符合车规级要求的认证,助力国内芯片厂商加快创新步伐 。目前,“星辰”STAR-MC2处理器已面向客户正式交付,除了满足国内芯片厂商在智能物联网、汽车电子等领域的前沿需求,安谋科技还正与Arm公司探讨面向海外市场授权的计划。授权客户超过60家,“星辰”处理器助攻本土芯片创新推向市场三年以来,“星辰”处理器受到了众多芯片厂商的广泛欢迎。继去年底破亿以后,基于“星辰”处理器的芯片出货已进入快速成长期,授权客户超过60家,集成项目多达70余项。搭载“星辰”处理器的通用控制器、互联芯片、传感器控制、汽车芯片、定位导航、存储等芯片产品,被广泛地应用在智能家居、智慧交通、智能安防等领域,持续推动本土科技产业创新。其中,灵动微电子在今年上半年发布了搭载安谋科技“星辰”STAR-MC1处理器的全新高性能MM32F5微控制器系列。该系列MCU产品在性能、安全性以及连接性等方面均有优异表现,充分满足AIoT市场多领域、多层次的丰富应用场景需求。思澈科技在SF32LB55x系列MCU产品中采用了基于安谋科技“星辰”STAR-MC1处理器的双核架构,不仅实现了240MHz的高性能处理能力,还通过48MHz超低功耗处理器兼顾了低功耗场景,并且集成了功耗和性能俱佳的低功耗蓝牙5.2连接,全面满足智能穿戴场景需求的同时也丰富了其他市场应用。忆芯科技的高性能企业级SSD主控芯片STAR2000中,“星辰”处理器被用于闪存通道控制,使STAR2000完备地支持各类闪存接口协议并保证闪存访问的效率,并在面积、功耗与性能上达到了出色的平衡。安谋科技立足本土创新,坚持以自研IP技术的创新发展与Arm IP相配合,为本土集成电路产业提供丰富的产品组合和解决方案。未来,包括“星辰”处理器在内的自研IP产品矩阵,还将得到进一步拓展和丰富,安谋科技将继续携手合作伙伴一起积极推动创新应用的加速落地,赋能智能计算生态的构建。声明:Arm是Arm公司 (或其子公司)的注册商标。(文章来源公众号:安谋科技)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关于AC米兰中文官网入口AC米兰中文官网入口(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。AC米兰中文官网入口凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。欢迎关注“AC米兰中文官网入口”公众号了解更多研发工具软件知识
查看更多→
【技术博客】级联电路中使用传递函数的蒙特卡罗分析
2022-08-12
作者:Zachariah Peterson专业电路设计人员在设计电路时不仅仅使用并联和串联的元件。构建电路的一种方法是使用具有输入和输出端口的电路网络。可以通过传统方式(SPICE、手动等)分析每个网络内部发生的情况,但重要的是网络将输入电压/电流对映射到输出电压/电流对。在数学上,这可以用传递函数进行量化。在进行高可靠性设计时,需要了解的一个重要因素是系统某一部分的方差如何传播到系统的输出。但这个因素有时并不直观。它需要手动进行一些数学推导,或者需要一些仿真来确定系统中电气行为的变化和波动。在本文中,我将展示如何使用蒙特卡罗仿真数据来检查元件容差如何影响级联电路网络的电气行为。数学涉及几个常见的概率论要点,但最终结果和所涉及的过程可以很容易在SPICE和Excel中实现。01理论:级联网络中的方差接下来我要介绍一个理论,目的是推导出表达式,该表达式将级联网络的输出电压变化定义为每个网络中各个传递函数的变化。尽管还有温度或随机噪声等情况,我们假定网络传递函数的变异仅由元件容差造成。首先,让我们来看下面所示的级联网络。在这个网络,我们考虑的方案中每个网络有2个端口(输入和输出)。扩展到3个端口稍显复杂,但如果其他端口只是固定的功率输入,我们仍然可以使用此处所示的理论。级联中每个网络都有一个传递函数H。网络输入和输出之间的关系如方程式(1)所示。在这个方程式中,整个网络的传递函数是每个网络传递函数的乘积:方程式(1):级联网络传递函数定义。在方程式(1)中,我们的事实依据是,如上所示的串联级联网络的总传递函数是所有单个传递函数的乘积。这个方程适用于构建为二端口网络的各种电路。现在,我们可以检查给定元件容差值的传递函数中的统计变化。02转移函数的变量每个网络中的元件容差将在每个网络中的传递函数中产生一些变化。我们现在要定义传递函数中的方差。方程式(2):每个网络的传递函数定义为常数部分(平均值)和随机部分(标准差)。在方程式(2)中,Hi是一个随机变量,它与网络i(ẟHi)传递函数的随机变化有关。为了使该表达式为真,分布ẟHi必须允许这种类型的线性转换。一般来说,高斯分布和均匀分布都是如此,因此这在蒙特卡罗仿真中经常考虑的两种主要情况下都是有效的。我们没有将ẟHi与具有特定等式的元件公差联系起来。但是,如果您知道电路网络中所有元件的公差,则可以使用蒙特卡罗仿真来确定ẟHi。只需为单个网络 Hi 进行仿真,然后运行蒙特卡罗仿真以确定传递函数 ẟHi 的方差。03输出电压的变量现在我们已经定义了单个传递函数的随机变量,我们可以通过将公式(2)中所示的相同线性变换应用到公式(1)中的传递函数的乘积来定义输出电压的变量。我将其写成公式(3):公式(3): 输出电压的变量。这里,输出电压也有常数部分(平均值)和随机部分(标准差)。换句话说,现在电压是一个与随机变量乘积相关的随机变量。平均输出电压是右侧的常数项:方程式(4):根据组成级联网络的传递函数平均值表示的平均输出电压。由此可知,传递函数的乘积是整个网络传递函数的平均值:方程式(5):整个级联网络的传递函数平均值以级联中各个网络的平均传递函数值表示。如果我们展开方程式(3)中的乘积,将得到一个包含多个ẟHi 项、Hmean 和输出电压方差的乘积的表达式。在这里,我们将采取近似值,因为任意ẟHi项的乘积非常小,可以忽略不计。考虑到常见的元件公差,这是完全可以接受的,即使它们高达 20%。这里我就省略中间步骤,留给读者自行运算,最终可以得到以下方程式:方程式(6):以传递函数均值和随机变化表示的输出电压。这看起来不像最终答案,但是方程式(6)确实告诉您在传递函数存在一些差异的情况下,您需要了解有关输出电压随机行为的所有信息!在这里,我们根据随机变量的线性组合(ẟHi 项集)定义了一个随机变量(Vout)。从多元概率论中,我们知道这个和的标准差等于ẟHi 项的正交和。换句话说,Vout 的标准偏差为:方程式(7):输出电压基于传递函数方差的标准差。在这个方程式中,st.dev运算指标准差,Var运算指方差。使用方程式(7),我们可以开发一个仿真过程,将输出电压的变化与级联网络中传递函数的变化联系起来。04过程现在我们可以开发一个根据传递函数方差来确定输出电压方差的过程。您的主要工具将是蒙特卡罗仿真和简单的统计分析程序,如Excel:1. 将级联网络电路设计划分为单独的二端口网络。2. 针对#1中的每个网络运行蒙特卡罗仿真。3. 获取每个网络的数据并计算每次蒙特卡罗运行的传递函数。4. 计算每个网络的传递函数结果的平均值。5. 计算#3中每个传递函数的标准差,得出每个网络的ẟHi。6. 使用来自#4、#5和方程式(7)的结果,得出输出电压的变化。根据您在此过程中使用的数据数量,您可以更进一步,得出结果的置信区间。示例计算:为什么要在单个传递函数上进行如此麻烦的运算?让我们来举个例子,了解其中原因。假设您有三个具有不同元件容差(1%、5%和10%)的电路网络,并且您已经完成了上述过程以确定每个网络的传递函数的变化。假设这些元件公差值转化为下图中显示的示例方差。使用方程式(7),我们可以预测这个假设网络的输出电压变化:已知元件容差和传递函数变化的输出电压计算标准差示例。根据应用,13.63%的容差可能过大。由此,我们可以判断是否应该降低某些元件组的容差。现在假设输出电压变化对于我们的应用来说是不可接受的,我们希望得到更小的变化。我们决定将 5% 的容差和 10% 的容差换成 1% 的容差。无需运行任何新的仿真,我们就可以立即知道输出变化是什么。对于线性电路,将容差降低 10 倍应将传递函数方差降低 10 倍,对于其他降低因子,依此类推。然后我们会得到以下结果:针对较小的元件容差,修改输出电压计算的标准差。将输出电压从13.63%降低到2.23%,这一折减幅度非常大,而它所需要的只是一个简单的元件交换。无需添加新电路,无需更改设计,只需选择一些备用元件编号即可。这些类型的方差折减步骤正是您在精确仿真应用中所需要的。现在假设您想改变运行频率。在这种情况下,您可以使用从蒙特卡罗仿真中获得的传递函数数据,使用相同的计算来确定在这个新频率下输出电压将如何变化。05总结与比较通过了解如何增加不同级联网络中的方差,得出输出电压的总方差,您可以执行以下任意操作,直接确定输出电压将如何变化:将网络中的元件换成容差更严格的元件把一个网络换成一个完全不同的网络在级联中添加额外的网络上面显示的扰动方法仅适用于串联级联滤波器或放大器。如果您有并行网络,它们的传递函数相加,使上面显示的方差分析更容易。此外,您可以使用这个想法来推导出串联和并联网络组合的方差表达式。无论您如何安排电路网络以获得方差表达式,都适用上述相同的仿真和分析方法。如果您有兴趣在Altium Designer ®内运行蒙特卡罗仿真和转移函数计算,可以在原理图编辑器中找到SPICE引擎中内置的仿真工具。完成 PCB 并准备好与合作者或制造商分享您的设计后,您可以通过 Altium 365™ 平台分享您完成的设计。设计和生产先进电子产品所需的一切都集成在一个软件包中。Altium 365仅仅是Altium Designer功能的冰山一角。立即开始免费试用Altium Designer + Altium 365吧。(文章来源公众号:Altium)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关于AC米兰中文官网入口AC米兰中文官网入口(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。AC米兰中文官网入口凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。欢迎关注“AC米兰中文官网入口”公众号了解更多研发工具软件知识
查看更多→
报名 | Meet Qt技术沙龙南京站 (8月30日,星期二)
2022-08-11
感谢您长期以来对Qt的喜爱!诚邀您和其他专业Qt用户参加8月30日(星期二)我们在南京举办的Meet Qt技术沙龙。资深Qt专家将向您介绍产品发展的最新动向和技术,并与您分享经典应用案例,全力为您搭建一个干货分享,灵感碰撞和自由交流的平台。时间:8月30日(星期二) 13:00 - 17:45地点:靠近地铁河定桥站,请等待本微信公众号推送的报名成功和参会通知活动议程:> 13:00 - 13:30 签到> 13:30 - 13:45 Qt公司介绍> 13:45 - 14:15 Qt 6.2 LTS新特性及升级必要性> 14:15 - 14:45 Squish助力自动化跨平台GUI代码测试> 14:45 - 15:15 Qt for MCUs 2.2 LTS最新技术及生态合作> 15:15 - 15:45 茶歇+Demo演示> 15:45 - 16:30 Qt在汽车数字座舱的整体解决方案打造统一的3D用户界面> 16:30 - 17:00 Qt对国产操作系统的支持及相关应用案例> 17:00 - 17:30 Qt Design Studio 3.x全新交互升级、打造高阶生产力> 17:30 - 17:45 抽奖问答本次活动报名将于8月25日截止。参会免费,但因场地有限,不接受现场报名。请扫描下面二维码报名报名后,Qt工作人员将与您电话确认参会资格,并将在活动前一天通过"Qt软件"微信公众号确认地址等信息。谢谢!(文章来源公众号:Qt软件)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关于AC米兰中文官网入口AC米兰中文官网入口(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。AC米兰中文官网入口凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。欢迎关注“AC米兰中文官网入口”公众号了解更多研发工具软件知识
查看更多→
【方辉专栏】ARM嵌入式编译器(四) volatile 关键字对Arm Compiler 6编译优化的影响
2022-08-10
摘要: 本文主要对Arm Compiler 6编译器的volatile 关键字对优化的影响进行介绍。关键字:Arm Compiler 6、编译器、volatile 、优化1. volatile关键字的意义当一个变量使用volatile关键字进行声明时,意味着这个变量是可能随时被外部进行修改的。(例如操作系统、硬件)使用此声明可以避免在编译器优化时,假设没有被修改或被使用就进行优化处理。2. volatile关键字的使用volatile用于可能从定义变量的范围之外修改的变量。例如,如果程序在某些计算中使用全局变量,编译器会生成代码以将变量的值加载到寄存器中以执行该计算。如果随后在另一个计算使用相同的全局变量,编译器可能会直接使用寄存器的值,而不是从内存重新加载到寄存器。这样操作时因为编译器优化时认为此变量不会被外部修改,但实际上对于内存映射的外设是不正确的。因为此变量可能会被修改,直接使用上次寄存器值就会导致计算错误。让我们看个实际的例子:不使用volatile声明变量使用volatile声明变量int buffer_full;int read_stream(void){ int count = 0; while (!buffer_full) { count++; } return count;}volatile int buffer_full;int read_stream(void){ int count = 0; while (!buffer_full) { count++; } return count;}这两个例程都在循环中递增一个计数器,直到状态标志buffer_full为真。buffer_full的状态是随程序流异步改变。左边的例子没有将变量声明buffer_full为volatile,而右边的进行了声明。下面显示了两个程序在编译之后再进行反汇编之后的代码。使用的编译命令均为:armclang --target=arm-arm-none-eabi -march=armv8-a -Os -S 反汇编结果如下表所示:不使用volatile声明变量使用volatile声明变量read_stream: movw r0, :lower16:buffer_full movt r0, :upper16:buffer_full ldr r1, [r0] mvn r0, #0.LBB0_1: add r0, r0, #1 cmp r1, #0 beq .LBB0_1 ;infinite loop bx lrread_stream: movw r1, :lower16:buffer_full mvn r0, #0 movt r1, :upper16:buffer_full.LBB1_1: ldr r2, [r1] ; buffer_full add r0, r0, #1 cmp r2, #0 beq .LBB1_1 bx lr在不使用volatile声明的例子中,buffer_full没有声明为外部会改变的变量,因此编译器假定它的值不能在程序之外被修改,因此优化时省略了重新加载过程,就变成了一个无限循环。在使用volatile声明的例子中,编译器假定buffer_full可以在程序外部更改不执行优化。因此buffer_full的值每次重新加载到r2寄存器中。此时生成的汇编代码是正确的。3. volatile关键字对编译器优化的影响当变量可能随时被外部进行修改时,如果编译器假定其值不能从定义它的范围之外修改。因此,编译器可能会执行不必要的优化。这个问题可能有以下两种表现方式:1)轮询时,代码可能会陷入死循环。2)可能会导致删除故意延时的代码。来源:《Arm® Compiler for Embedded User Guide Version 6.18》+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关于AC米兰中文官网入口AC米兰中文官网入口(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。AC米兰中文官网入口凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。欢迎关注“AC米兰中文官网入口”公众号了解更多研发工具软件知识
查看更多→
Ansys获BPI认证为 “最受喜爱工作场所”
2022-08-10
“最受喜爱工作场所”认证旨在表彰让员工在工作中感到最快乐、最满意的优秀工作场所主要亮点根据其在工作场所热爱指数(Love of Workplace Index™)上的得分,Ansys被认证为“最受喜爱工作场所”针对员工进行了受尊重程度、协作、支持和归属感等满意度和情绪方面的调研Ansys现已被认证为 “最受喜爱工作场所” (Most Loved Workplace®),该认证由最佳实践研究所(BPI)进行研究与分析支持。最受喜爱工作场所®认证为当今企业提供了最全面的工作场所情绪认知。Ansys 根据其在 Love of Workplace Index™ 上的得分,被认证为“最受喜爱的工作场所®”,该指数对员工进行了围绕满意度和情绪的多元素调研凭借一致的公司价值观,支持员工实现其职业与个人目标,以及尊重和重视各种声音与想法,Ansys已被认证为最受喜爱工作场所®。最受喜爱工作场所®,是对让员工在工作中感到最快乐、最满意的公司进行的认证。根据在Love of Workplace Index™上的得分,Ansys被认证为“最受喜爱工作场所”,该指数围绕员工满意度和情绪等各种要素对员工进行了调研,包括受到尊重程度、协作、支持以及归属感。其在BPI支持下制定MLW标准的最初研究中,“最受喜爱工作场所”项目对美国、中东/北非和东南亚的超过175家公司和3,000多名高管进行了调研。他们发现,随着员工情绪的高涨,工作效率也会提高。94%的受访者表示,在自己所喜爱的公司,他们多做了3-4倍的工作,而95%的受访者表示,留在自己喜爱的公司的时间也延长了3-4倍。“最受喜爱工作场所” 认证,是确定员工体验和表彰优秀工作场所最有效的方法。Ansys人力资源部副总裁Julie Murphy表示:“我们很荣幸被认证为2022年最受喜爱工作场所。ONE Ansys企业文化以包容性为核心,员工是我们最大的资产。我们共同激发新的创意、建立人际关系、并帮助彼此实现超乎寻常的潜力,我们的职业目标源于我们所热爱的工作。”(文章来源公众号:Ansys)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关于AC米兰中文官网入口AC米兰中文官网入口(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。AC米兰中文官网入口凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。欢迎关注“AC米兰中文官网入口”公众号了解更多研发工具软件知识
查看更多→
报名 | Zemax 和 Lumerical 工作流程第 2 部分 - 从微观到宏观的光学仿真
2022-08-09
Ansys光学系列产品为超表面或超透镜的设计提供了一个完整的工作流。这些革命性的超薄光学元件可用于操纵可见光和红外波段的光,可用于多种应用:包括智能手机摄像头、AR/MR、3D传感和人脸识别。由于超表面的亚波长特性,使用电磁场求解器(Ansys Lumerical FDTD/RCWA)的组合来准确仿真超表面的相位和场轮廓至关重要,然后再结合光线追迹(Zemax OpticStudio)将其优化至需求的镜头规格继7月Zemax和Lumerical工作流程第1部分介绍之后,8月17日,Ansys将继续推出【Zemax 和 Lumerical 工作流程第 2 部分 - 从微观到宏观的光学仿真】网络研讨会,欢迎预约报名参会!时间8月17日(星期三),16:00-17:00讲师介绍陈媛 | Ansys/Zemax应用工程师法国高等光学学校硕士, 在2020年加入Zemax,现为Ansys系统事业部光学产品应用工程师。主要负责全球客户的技术支持,Zemax中文论坛的技术内容创作和推广。陈致豪 | Ansys/Lumerical应用工程师大学就读于清华大学电机系,在台湾大学光电工程研究所取得硕士学位。毕业后曾就职于显示器产业,研究液晶光学以及液晶显示器光学设计,有六年液晶显示器的设计经验。在2020年加入Ansys/Lumerical担任应用工程师,熟悉FDTD和MODE仿真工具。主要负责亚太地区客户的技术支持,帮助客户排除问题以及实现仿真目标,同时也协助介绍和推广公司产品,不定期参加或协助举办研讨会,分享光学相关领域的产品应用实例。费用免费扫码提交报名信息(文章来源公众号:Ansys)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关于AC米兰中文官网入口AC米兰中文官网入口(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。AC米兰中文官网入口凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。欢迎关注“AC米兰中文官网入口”公众号了解更多研发工具软件知识
查看更多→
XML 地图