摩登3咨询:_快速增长的ONLYOFFICE平台带来重大更新以响应用户需求

ONLYOFFICE协作平台集成了一个开源办公套件,可为用户提供日常业务所需的全部工具,包括文档管理、项目计划和进度安排、客户关系和电子邮件。这个通用的开源平台既可以在公共云中使用,也可以在私有网络上启动。 在这个完整ONLYOFFICE平台的重大更新中,Ascensio System SIA将发布三款更新产品,其新名称为: · ONLYOFFICE Workspace (ONLYOFFICE工作区:具有在线编辑器和协作平台的全栈办公套件) · ONLYOFFICE Docs (ONLYOFFICE文档:在线编辑器) · ONLYOFFICE Groups (ONLYOFFICE群组:协作平台) ONLYOFFICE Workspace包含在线编辑器,以及一个可以在线管理所有业务流程,并对正在处理的数据进行加密的平台。它是一个自托管的解决方案,用于在线组织所有业务流程,同时在内部企业基础设备中安全地协作处理办公室文档。 这个解决方案包括专业的在线文档、电子表格和演示文稿编辑器,以及用于管理企业文档、项目、联系人和电子邮件的工具。通过结合专业的编辑和生产力工具,它提供了MS Office和G Suite的全功能替代方案,而重点在于保护隐私和安全性。 ONLYOFFICE Workspace完全专注于保护企业的敏感信息,即使正在进行协作开发,也可以对文档、电子表格和演示文稿进行端到端加密。 可以使用高级加密标准对称块密码 (也称为Rijndael) 对存储的数据进行加密,该对称块密码使用256位的对称密匙对128位的数据块进行加密。现在,“文档”模块还提供了用于加密协作的私人房间 (Private Room)。私人房间是受保护的工作场所,即使用户正在与同事实时共同编辑文档,他键入的每个符号都会使用牢不可破的AES-256算法进行加密。此选项仅适用于将ONLYOFFICE Groups用作ONLYOFFICE Workspace一部分的用户。 ONLYOFFICE Docs包含ONLYOFFICE Docs 6.0版本,具有特别针对电子表格的重大更新。同时,在此版本中,电子表格编辑器还具有期待已久的功能 —— 数据透视表。数据透视表可帮助用户分析数据并查找数据的模式。创建数据透视表后,就可以添加和移动数据,添加过滤器等等。 ONLYOFFICE Docs 6.0版本还支持条件格式 (conditional formatting) 功能,支持允许用户以可视方式浏览数据、检测问题并确定趋势。 此外,新版本还提供了格式化表格的切片器。此功能提供了快速过滤功能,并帮助指示过滤状态,从而使用户能够了解当前显示的数据。 电子表格中的另一个有用且非常需要的新功能是“删除重复项”。当多次输入记录时(或者用户要合并多个来源的记录时),可能会重复输入数据。为防止重复数据会影响计算,用户可以使用新工具自动将其删除。 ONLYOFFICE电子表格编辑器还受益于6.0版本中的许多生产力改进,包括用于插入和删除单元格、行和列、输入日期和时间以及函数的新捷径方式。您还可以将工作表从一个工作簿移动到另一工作簿;创建链接以共享特别指定的范围;并粘贴执行计算操作的数据。现在,重复的数据也会自动被删除。 ONLYOFFICE根据AGPLv3许可证分发免费社群版本,另外也提供付费的企业版本,后者具有专业功能 (内容控件和文档比较),技术支持和集群功能。开发人员可以使用开发者版本将ONLYOFFICE Docs集成到其Web应用程序中。 ONLYOFFICE Docs套件可以用作ONLYOFFICE Workspace的一部分,Workspace用于管理文档、项目、客户,电子邮件和时间表的开源生产力平台,在社群和企业版本中均可使用。 ONLYOFFICE Docs可与常用的同步和共享应用程序集成,例如ownCloud、Nextcloud和Seafile等。 ONLYOFFICE Groups是一个开源协作平台,包括用于在一个地方管理文档、项目、客户关系和电子邮件的工具。这是协作平台的11.0版本,更加开放、更加安全、更加高效,并且除了新名称之外,还具有新的许可安排。ONLYOFFICE Groups是根据Apache 2.0许可发行的,该许可允许无论任何目的都可以使用该软件,以及对其进行修改和分发而没有限制。这将立即吸引托管和服务提供商,他们可以自由地重命名,修改和扩展工具,并为受众提供量身定制的选项。用户可以将ONLYOFFICE Groups用作独立解决方案,也可以与ONLYOFFICE Workspace捆绑包中的在线文档编辑器一起使用。 ONLYOFFICE销售主管Galina Godukhina评论道:“ONLYOFFICE 不会停滞不前。特别是,此最新更新着重于增强安全性,而不仅仅是使用坚不可摧的AES-256算法。私人房间功能可确保即使在小组协作设置中也能保持安全性。因此,ONLYOFFICE继续为各个级别的用户提供无与伦比的协作平台和集成的办公套件,无论是自行托管还是采用云服务。我们听取了客户在定义需求时的意见,而这就是成果。”

摩登3主管554258:_中国35位“大国工匠”榜单出炉!西工大、西电合计占半壁江山!清华仅1人!

近日网上流传的一份《大学校友之“大国工匠”》引来无数网友围观,热议。有35位「大国之匠」上榜,均为国家顶级项目总设计师级别科学家,比如,辽宁舰总设计师朱英富、C919总设计师吴光辉、歼20总设计师杨伟。 令人意外的是,清华大学被誉为“中国最好工科院校”,却只有1位校友上榜“大国之匠”。 从35位「大国之匠」名单来看,陕西省高校表现最为突出,上榜了18位科学家,占据了这份榜单的半壁江山!其中,西北工业大学最强,上榜12位科学家;西安电子科技大学,上榜5位科学家;西安交通大学,上榜1位科学家! 不过也有网友表示这份名单上以军工航天居多,西工大在这个方面上是全国顶尖级别的,自然如此啦。 在“华东五校”中,最亮眼的当属中国科学技术大学,有5位校友上榜“大国之匠”! 此外工科名校哈尔滨工业大学、上海交通大学、同济大学、东南大学,均有校友上榜。 南京航空航天大学,虽然只是“211工程”大学,却有2位校友上榜“大国之匠”。 最令人意想不到的是南华大学,一个被很多人误认为“野鸡大学”,蹭东华大学热点的大学,竟然也有1位校友登上“大国之匠”名单。 分析人士认为,西北工业大学、哈尔滨工业大学等都是我国老牌的军工院校,但是其它高等院校还是应该向这些上榜院校学习。高校培养的人才,对于国家的发展非常重要,这些人才都是国家的栋梁,是我国实现伟大复兴的中流砥柱。 -END- 来源 | EETOP | 整理文章为传播相关技术,版权归原作者所有 |  | 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3注册开户_NTC热敏电阻测温原理,电路设计以及程序设计

近日一位朋友在后台发消息说,刚毕业入职一家小家电公司,正参与设计电磁炉控制电路,其中需要用到测温元器件,想了解所用的温度传感器有没有正负极、测温原理等内容。以前正好做过这一块内容,和大家学习一下。 电磁炉测温用的温度传感器其实是一个负温度系数的热敏电阻NTC,不仅如此,NTC在家电产品的测温中应用广泛,例如热水壶、咖啡机、消毒柜等用的都是NTC测温。既然NTC是一颗电阻,那么就不存在正负极的问题。 NTC热敏电阻测温的工作原理 所谓热敏电阻,就是指对温度比较敏感的电阻,随着温度的变化NTC的电阻值也会随之变化,环境温度和电阻值之间存在一定的关系曲线,通过测量阻值的变化情况就可以确定当前的温度值。这就是NTC测温的工作原理,其阻值和温度之间的关系曲线如下图所示。 NTC测温电路 在低成本的测温应用中,NTC一般和一个精密的定值电阻串联通过采集电阻两端的电压变化来确定环境温度。常用的测温电路如下图所示。 如上图的左侧电路。NTC和定值电阻R串联,当环境温度发生变化后,NTC的电阻值发生变化,导致NTC两端的电压发生变化,单片机通过采集NTC两端的电压就可以反推出当前的温度值。这是一种低成本常用的测温电路。 推荐杜洋老师《爱上单片机》手把手动手学习单片机: NTC测温程序设计 NTC的电阻值和温度是呈现一定的比例关系的,该比例关系和B值相关,各个厂家的Datasheet都会写明该公式,公式如下: NTC阻值和温度公式:Rt = Rn *EXP(B*(1/T-1/Tn)) 对上面的公式解释如下: 1.       Rt是热敏电阻的当前阻值; 2.       R是热敏电阻在Tn常温下的标称阻值; 3.       B值是热敏电阻的温度系数; 4.       EXP是e的n次方; 5.       这里T和Tn指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度; 6.       T为当前温度;Tn为常温25℃; 比如 B值为3950的10K阻值的NTC,10K就是25℃时的阻值,B值为3950。通过以上公示就可以确立阻值和温度的关系。 部分程序代码如下: #define B 3950.0 //温度系数#define TN 298.15 //额定温度(绝对温度加常温:273.15+25)#define RN 10 // 额定阻值(绝对温度时的电阻值10k)#define BaseVol 5.04 //ADC基准电压float Get_Tempture(u16 adc){ float RV,RT,Tmp; RV=BaseVol/1024.0*(float)adc;//ADC为10位ADC,求出NTC电压:RV=ADCValu/1024*BaseVoltag RT=RV*10/(BaseVol-RV);//求出当前温度阻值 (BaseVoltage-RV)/R16=RV/RT;  Tmp=1/(1/TN+(log(RT/RN)/B))-273.15; //RT = RN exp*B(1/T-1/TN) return Tmp;} PT100测温原理 这里专指电阻测温,除了NTC之外,还有PT100正温度系数的热敏电阻、热电偶等。PT100相比较于NTC,更为精准主要用在工业产品的测温中,一般通过惠斯通电桥来检测电压的变化进而反推出温度值。如下图就是惠斯通电桥电路。 -END- 来源 | 玩转嵌入式 作者 | 刘小舒 | 整理文章为传播相关技术,版权归原作者所有 |  | 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3登录_三个简单实用的编译小技巧

前言     linux编译过程中往往需要对一些编译日志进行分析,特别是编译的内容比较多的时候,shell窗口编译日志往往一闪而过。有时候我们可能只要错误信息,并不想所有的信息中查找错误的,所以需要一些小技巧来帮助我们快速定位错误。 编译技巧 (1) 所有信息全部输出到屏幕 通常编译时都是使用下面命令进行编译,它会将所有的提示信息输出到屏幕上 make xxx 假如我只要警告错误信息,就可以用下面的命令 make xxx -s 没有警告和错误时,就不会输出任何东西! (2) 将所有信息全部输出到文件 我们可以将所有信息全部输出到同一个文件,也可以分开输出到不同的文件。 make xxx 1>info.log 2>warn.log 1: 表示常规提示信息,2: 表示警告及错误信息 编译结束,我们看一下info.log和warn.log文件 对编译信息进行了分类,是不是很方便我们查看。 注意事项: 上面的1/2等数字,后面紧跟大于号‘>’,中间不能有空格 ‘>’与输出文件名之间可以有一个空格, 也可以没有 (3) 警告错误信息输出到屏幕,其他输出到文件 make xxx 1> info.logmake xxx > info.log 1不写也可以,因为系统默认就是1,  这个时候, 屏幕上就只剩下警告和错误信息了。是不是很方便我们定位问题,不用再大量的信息中去搜索查找。 最后 以上就是本次的分享, 往proc中留下一个脚印 Linux下应用开发基础 【Linux笔记】LED驱动实验(总线设备驱动模型) 【Linux笔记】设备树实例分析 学习STM32的一些经验分享 我的单片机转嵌入式Linux之路 STM32的map文件学习笔记 基于RT-Thread的智慧路灯案例实验分享 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3官网注册_26张图带你彻底搞懂volatile关键字

引子 小艾吃饭路上碰上小牛,忙问:你昨天面大厂面的咋样了?听说他们最喜欢问多线程相关知识。 小牛说:对啊,第一个问题我就讲了20分钟,直接把面试官讲服了。 小艾忙问:什么问题能讲这么久?是不是问你情感经历了? 小牛说:…问的volatile关键字。 小艾说:volatile关键词的作用一般有如下两个: 可见性:当一个线程修改了由volatile关键字修饰的变量的值时,其它线程能够立即得知这个修改。 有序性:禁止编译器关于操作volatile关键词修饰的变量的指令重排序。 你说这两个说了20分钟?口吃? 小牛说:你知道volatile的实现原理吗? 小艾说:缓存一致性协议嘛,这有啥? 小牛说:既然硬件保证了缓存一致性协议,无论该变量是否被volatile关键词修饰,它都该满足缓存一致性协议呀。你这说的有点自相矛盾哦。 小艾说:那volatile的实现原理是什么? 小牛说:且听我慢慢道来。 缓存一致性协议 我们知道,现代CPU都是多核处理器。由于cpu核心(Kernel)读取内存数据较慢,于是就有了缓存的概念。我们希望针对频繁读写的某个内存变量,提升本核心的访问速率。因此我们会给每个核心设计缓存区(Cache),缓存该变量。由于缓存硬件的读写速度比内存快,所以通过这种方式可以提升变量访问速度。缓存的结构可以如下设计: 缓存结构图 其中,一个缓存区可以分为N个缓存行(Cache line),缓存行是和内存进行数据交换的最小单位。每个缓存行包含三个部分,其中valid用于标识该数据的有效性。如果有效位为false,CPU核心就从内存中读取,并将对应旧的缓存行数据覆盖,否则使用旧缓存数据;tag用于指示数据对应的内存地址;block则用以存储数据, 多核缓存和内存 但是,如果涉及到并发任务,多个核心读取同一个变量值,由于每个核心读取的是自己那一部分的缓存,每个核心的缓存数据不一致将会导致一系列问题。缓存一致性的问题根源就在于,对于某个变量,好几个核心对应的缓存区都有,到底哪个是新的数据呢?如果只有一个CPU核心对应的缓存区有该变量,那就没事啦,该缓存肯定是新的。 所以为了保证缓存的一致性,业界有两种思路: 写失效(Write Invalidate):当一个核心修改了一份数据,其它核心如果有这份数据,就把valid标识为无效; 写更新(Write update):当一个核心修改了一份数据,其它核心如果有这份数据,就都更新为新值,并且还是标记valid有效。 业界有多种实现缓存一致性的协议,诸如MSI、MESI、MOSI、Synapse、Firefly Dragon Protocol等,其中最为流行的是MESI协议。 MESI协议就是根据写失效的思路,设计的一种缓存一致性协议。为了实现这个协议,原先的缓存行修改如下: 缓存结构图 原先的valid是一个比特位,代表有效/无效两种状态。在MESI协议中,该位改成两位,不再只是有效和无效两种状态,而是有四个状态,分别为: M(Modified):表示核心的数据被修改了,缓存数据属于有效状态,但是数据只处于本核心对应的缓存,还没有将这个新数据写到内存中。由于此时数据在各个核心缓存区只有唯一一份,不涉及缓存一致性问题; E(Exclusive):表示数据只存在本核心对应的缓存中,别的核心缓存没这个数据,缓存数据属于有效状态,并且该缓存中的最新数据已经写到内存中了。同样由于此时数据在各个核心缓存区只有一份,也不涉及缓存一致性问题; S(Shared):表示数据存于多个核心对应的缓存中,缓存数据属于有效状态,和内存一致。这种状态的值涉及缓存一致性问题; I(Invalid):表示该核心对应的缓存数据无效。 看到这里,大家想必知道为什么这个协议称为MESI协议了吧,它的命名就是取了这四个状态的首字母而已。为了保证缓存一致性,每个核心要写新数据前,需要确保其他核心已经置同一变量数据的缓存行状态位为Invalid后,再把新数据写到自己的缓存行,并之后写到内存中。 MESI协议包含以下几个行为: 读(Read):当某个核心需要某个变量的值,并且该核心对应的缓存没这个变量时,就会发出读命令,希望别的核心缓存或者内存能给该核心最新的数据; 读命令反馈(Read Response):读命令反馈是对读命令的回应,包含了之前读命令请求的数据。举例来说,Kernel0发送读命令,请求变量a的值,Kernel1对应的缓存区包含变量a,并且该缓存的状态是M状态,所以Kernel1会给Kernel0的读命令发送读命令反馈,给出该值; 无效化(Invalidate):无效化指令是一条广播指令,它告诉其他所有核心,缓存中某个变量已经无效了。如果变量是独占的,只存在某一个核心对应的缓存区中,那就不存在缓存一致性问题了,直接在自己缓存中改了就行,也不用发送无效化指令; 无效化确认(Invalidate Acknowledge):该指令是对无效化指令的回复,收到无效化指令的核心,需要将自己缓存区对应的变量状态改为Invalid,并回复无效化确认,以此保证发送无效化确认的缓存已经无效了; 读无效(Read Invalidate):这个命令是读命令和无效化命令的综合体。它需要接受读命令反馈和无效化确认; 写回(Writeback)这个命令的意思是将核心中某个缓存行对应的变量值写回到内存中去。 下图给了个一个应用MESI读写数据的例子。在该图中,假设CPU有两个核心,Kernel0表示第一个核心,Kernel1表示第二个核心。这里给出了Kernel0想写新数据到自己缓存的例子。 首先Kernel0先完成新数据的创建; Kernel0向全体其他核心发送无效化指令,告诉其他核心其所对应的缓存区中的这条数据已经过期无效。本图例中只有一个其他核心,为Kernel1; 其他核心收到广播消息后,将自己对应缓存的数据的标志位记为无效,然后给Kernel0回确认消息; 收到所有其他Kernel的确认消息后,Kernel0才能将新数据写回到它所对应的缓存结构中去。 根据上图,我们可以发现,影响MESI协议的时间瓶颈主要有两块: 无效化指令:Kernel0需要通知所有的核心,该变量对应的缓存在其他核心中是无效的。在通知完之前,该核心不能做任何关于这个变量的操作。 确认响应:Kernel0需要收到其他核心的确认响应。在收到确认消息之前,该核心不能做任何关于这个变量的操作,需要持续等待其他核心的响应,直到所有核心响应完成,将其对应的缓存行标志位设为Invalid,才能继续其它操作。 针对这两部分,我们可以进一步优化: 针对无效化指令的加速:在缓存的基础上,引入Store Buffer这个结构。Store Buffer是一个特殊的硬件存储结构。通俗的来讲,核心可以先将变量写入Store Buffer,然后再处理其他事情。如果后面的操作需要用到这个变量,就可以从Store Buffer中读取变量的值,核心读数据的顺序变成Store Buffer → 缓存 → 内存。这样在任何时候核心都不用卡住,做不了关于这个变量的操作了。引入Store Buffer后的结构如下所示: Store Buffer结构 针对确认响应的加速:在缓存的基础上,引入Invalidate Queue这个结构。其他核心收到Kernel0的Invalidate的命令后,立即给Kernel0回Acknowledge,并把Invalidate这个操作,先记录到Invalidate Queue里,当其他操作结束时,再从Invalidate Queue中取命令,进行Invalidate操作。所以当Kernel0收到确认响应时,其他核心对应的缓存行可能还没完全置为Invalid状态。引入Invalidate Queue后的结构如下所示: Invalidate Queue结构 缓存一致性协议优化存在的问题 上一节讲了两种缓存一致性协议的加速方式。但是这两个方式却会对缓存一致性导致一定的偏差,下面我们来看一下两个出错的例子: 例子1:关于Store Buffer带来的错误,假设CPU有两个核心,Kernel0表示第一个核心,Kernel1表示第二个核心。 ...public void foo(){    a=1;    b=1;}public void bar(){    while(b==0) continue;    assert(a==1):"a has a wrong value!";}... 如果Kernel0执行foo()函数,Kernel1执行bar()函数,按照之前我们的理解,如果b变量为1了,那a肯定为1了,assert(a==1)肯定不会报错。但是事实却不是这样的。 假设初始情况是这样的:在执行两个函数前Kernel1的缓存包含变量a=0,不包含缓存变量b,Kernel0的缓存包含变量b=0,不包含缓存变量a。Kernel0执行foo()函数,Kernel1执行bar()函数时,。这样的话计算机的指令程序可能会如下展开: Kernel0执行a=1。由于Kernel0的缓存行不包含变量a,因此Kernel0会将变量a的值存在Store Buffer中,并且向其他Kernel进行read Invalidate操作,通知a变量缓存无效; Kernel1执行while(b==0),由于Kernel1的缓存没有变量b,因此它需要发送一个读命令,去找b的值; Kernel0执行b=1,由于Kernel0的缓存中已经有了变量b,而且别的核心没有这个变量的缓存,所以它可以直接更改缓存b的值; Kernel0收到读命令后,将最新的b的值发送给Kernel1,并且将变量b的状态由E(独占)改变为S(共享); Kernel1收到b的值后,将其存到自己Kernel对应的缓存区中; Kernel1接着执行while(b==0),因为此时b的新值为1,因此跳出循环; Kernel1执行assert(a==1),由于Kernel1缓存中a的值为0,并且是有效的,所以断言出错; Kernel1终于收到了第一步Kernel0发送的Invalidate了,赶紧将缓存区的a==1置为invalid,但是为时已晚。 所以我们看到,这个例子出错的原因完全是由Store Buffer这个结构引发的。如果规定将Store Buffer中数据完全刷入到缓存,才能执行对应变量写操作的话,该错误也能避免了。 例子2:关于Invalidate Queue带来的错误,同样假设CPU有两个核心,Kernel0表示第一个核心,Kernel1表示第二个核心。 ...public void foo(){    a=1;    b=1;}public void bar(){    while(b==0) continue;    assert(a==1):"a has a wrong value!";}... Kernel0执行foo()函数,Kernel1执行bar()函数,猜猜看这次断言会出错吗? 假设在初始情况是这样的:变量a的值在Kernel0和Kernel1对应的缓存区都有,状态为S(共享),初值为0,变量b的值是0,状态为E(独占),只存在于Kernel1对应的缓存区,不存在Kernel0对应的缓存区。假设Kernel0执行foo()函数,Kernel1执行bar()函数时,程序执行过程如下: Kernel0执行a=1,此时由于a变量被更改了,需要给Kernel1发送无效化命令,并且将a的值存储在Kernel0的Store Buffer中; Kernel1执行while(b==0),由于Kernel1对应的缓存不包含变量b,它需要发出一个读命令; Kernel0执行b=1,由于是独占的,因此它直接更改自己缓存的值; Kernel0收到读命令,将最新的b的值发送给Kernel1,并且将变量b的状态改变为S(共享); Kernel1收到Kernel0在第一步发的无效化命令,将这个命令存到Invalidate Queue中,打算之后再处理,并且给Kernel0回确认响应; Kernel1收到包含b值的读命令反馈,把该值存到自己缓存下; Kernel1收到b的值之后,打破while循环; Kernel1执行assert(a==1),由于此时Invalidate Queue中的无效化a=0这个缓存值还没执行,因此Kernel1会接着用自己缓存中的a=1这个缓存值,这就出现了问题; Kernel1开始执行Invalidate Queue中的命令,将a=0这个缓存值无效化。但这时已经太晚了。 所以我们看到,这个例子出错的原因完全是由Invalidate Queue这个结构引发的。如果规定将Invalidate Queue中命令完全处理完,才能执行对应变量读操作的话,该错误也能避免了。 内存屏障 既然刚刚我们遇到了问题,那如何改正呢?这里就终于到了今天的重头戏,内存屏障了。内存屏障简单来讲就是一行命令,规定了某个针对缓存的操作。这里我们来看一下最常见的写屏障和读屏障。 针对Store…

摩登3主管554258:_电路板采用网格覆铜,还是实心覆铜?

1 什么是覆铜 所谓覆铜,就是将电路板上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜。 覆铜的意义在于: 也出于让PCB焊接时尽可能不变形的目的,大部分PCB 生产厂家也会要求PCB 设计者在PCB 的空旷区域填充铜皮或者网格状的地线,覆铜如果处理的不当,那将得不偿失,究竟覆铜是“利大于弊”还是“弊大于利”? 大家都知道在高频情况下,印刷电路板上的布线的分布电容会起作用,当长度大于噪声频率相应波长的1/20 时,就会产生天线效应,噪声就会通过布线向外发射,如果在PCB中存在不良接地的覆铜话,覆铜就成了传播噪音的工具。 因此,在高频电路中,千万不要认为,把地线的某个地方接了地,这就是“地线”,一定要以小于λ/20 的间距,在布线上打过孔,与多层板的地平面“良好接地”。如果把覆铜处理恰当了,覆铜不仅具有加大电流,还起了屏蔽干扰的双重作用。 2 覆铜的两种形式 覆铜一般有两种基本的方式,就是大面积的覆铜和网格铜,经常也有人问到,大面积覆铜好还是网格覆铜好,不好一概而论。 为什么呢?大面积覆铜,具备了加大电流和屏蔽双重作用,但是大面积覆铜,如果过波峰焊时,板子就可能会翘起来,甚至会起泡。因此大面积覆铜,一般也会开几个槽,缓解铜箔起泡。如下图: 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3平台首页_学一招!如何判断电容好坏?

怎样测量小容量电容的好坏? 1、检测10pF以下的小电容,因10pF以下的固定电容器容量太小,如果用指针式用万用表进行测量,只能定性的检查其是否有漏电,内部短路或击穿现象。 测量时,可选用万用表R×10k挡,用两电表金属测棒分别任意接电容的两个接脚,阻值应为无穷大。若测出阻值(指标向右摆动)为零,则说明电容漏电损坏或内部击穿。 2、对于0.01μF以上的固定电容,可用指针式万用表的R×10k挡直接测试电容器有无充电过程以及有无内部短路或漏电,并可根据指针向右摆动的幅度大小估计出电容器的容量。 1、因为电解电容的容量较一般固定电容大得多,所以,测量时,应针对不同容量选用合适的量程。根据经验,一般情况下,1~47μF间的电容,可用R×1k挡测量,大于47μF的电容可用R×100挡测量。 2、将万用表红电表金属测棒接负极,黑电表金属测棒接正极,在刚接触的瞬间,万用表指针即向右偏转较大偏度(对于同一电阻挡,容量越大,摆幅越大),接着逐渐向左回转,直到停在某一位置。 此时的阻值便是电解电容的正向漏电阻,此值略大于反向漏电阻。实际使用经验表明,电解电容的漏电阻一般应在几百kΩ以上,否则,将不能正常工作。 在测试中,若正向、反向均无充电的现象,即表针不动,则说明容量消失或内部断路;如果所测阻值很小或为零,说明电容漏电大或已击穿损坏,不能再使用。 3、对于正、负极标志不明的电解电容器,可利用上述测量漏电阻的方法加以判别。即先任意测一下漏电阻,记住其大小,然后交换电表金属测棒再测出一个阻值。 两次测量中阻值大的那一次便是正向接法,即黑电表金属测棒接的是正极,红电表金属测棒接的是负极。 4、使用万用表电阻挡,采用给电解电容进行正、反向充电的方法,根据指针向右摆动幅度的大小,可估测出电解电容的容量。 5、测电容放电的速度 用一个数字万用表搭在电容两端先充电然后开路量测电压掉下来的速度因为电容是开路的唯一会耗电的就是漏电流了如果你量测出电压跟时间的曲线就可以反推出漏电流了记得用好一点的数字万用表,因为万用表本身的输入阻抗再大也是有限的,如果是质量较好的电容漏电流本来就不大,那么输入阻抗稍小的数字万用表就不准了。 6、注意!测量较大容量电容时如需要正负来回测量,要将电容短路放电,以免打坏表头。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3平台注册登录_拆解FPGA芯片,带你深入了解其原理

现场可编程门阵列(FPGA)可以实现任意数字逻辑,从微处理器到视频生成器或加密矿机,一应俱全。FPGA由许多逻辑模块组成,每个逻辑模块通常由触发器和逻辑功能以及连接逻辑模块的路由网络组成。FPGA的特殊之处在于它是可编程的硬件:您可以重新定义每个逻辑块及其之间的连接,用来构建复杂的数字电路,而无需物理上连接各个门和触发器,也不必花费设计专用集成电路的费用。 内部裸片显微照片  FPGA是由Ross Freeman发明的,他在1984年共同创立了Xilinx,并推出了第一款FPGA——XC2064。这种FPGA比现代FPGA简单得多,它只包含64个逻辑块。而现代FPGA中的逻辑块有几千个或数百万个,但它导致了目前价值数十亿美元的FPGA产业。由于其重要性,XC2064被列入芯片名人堂。在这篇文章中,我们对Xilinx的XC2064进行了逆向工程,解释了它的内部电路(上图)以及 “比特流 “是如何对它进行编程的。 第一款FPGA芯片-Xilinx XC2064 如今,FPGA是采用Verilog或VHDL之类的硬件描述语言编程的,但当时Xilinx提供了他们自己的开发软件XACT,运行在MS-DOS操作系统之下,价格高达12,000美元。XACT自然无法与现在的FPGA开发工具相比,XACT通过用户定义了每个逻辑块的功能(如下面的屏截图所示)以及逻辑块之间的连接,对连接进行布线连接,并生成可加载到FPGA中的比特流文件。 XACT的屏幕截图 两个查找表F和G在屏幕底部实现逻辑运算,上面部分显示该逻辑的卡诺图 通过位流(具有专有格式的位序列)配置FPGA。如果您查看XC2064的比特流(如下所示),那是令人费解的混合模式,这些模式不规则地重复,并散布在比特流中。XACT中的功能定义与位流中的数据之间没有明确的联系。但是,研究FPGA的物理电路可以揭示比特流数据的结构,并且可以理解。 通过位流(具有专有格式的位序列)配置FPGA。如果您查看XC2064的比特流(如下所示),那是令人费解的混合模式,这些模式不规则地重复,并散布在比特流中。XACT中的函数定义与位流中的数据之间没有明确的联系。但是,研究FPGA的物理电路可以揭示比特流数据的结构,并且可以理解。 XC2064的比特流 FPGA如何工作 下图来自原始FPGA专利,显示了FPGA的基本结构。在此简化的FPGA中,有9个逻辑块(蓝色)和12个I/O引脚。互连网络将组件连接在一起。通过设置互连上的开关(对角线),逻辑块相互连接并连接到I/O引脚。每个逻辑元素都可以使用所需的逻辑功能进行编程。其结果是一个高度可编程的芯片,可以实现任何适合可用的电路。 FPGA专利显示通过互连连接的逻辑块(LE) CLB:可配置逻辑块 虽然上图显示了九个可配置逻辑块(CLB),但XC2064有64个CLB。下图显示了每个CLB的结构。每个CLB有四个输入(A、B、C、D)和两个输出(X和Y)。两者之间是组合逻辑,可以使用任何所需的逻辑功能进行编程。CLB还包含一个触发器,允许FPGA实现计数器、移位寄存器、状态机和其他有状态电路。梯形是多路复用器,可以编程通过其任何输入。多路复用器允许为特定任务配置CLB,为触发器控件和输出选择所需的信号。 XC2064中的可配置逻辑块 那么,组合逻辑如何实现任意逻辑功能?它会采用与门、或门、异或门等逻辑吗? 不,它使用一种称为查找表(LUT)的巧妙技巧,实际上它包含的是逻辑功能的真值表。例如,三个变量的功能由其真值表中的8行定义。LUT由8位内存以及多路复用电路组成,以选择正确的值。通过将值存储在这8位内存中,可以实现任何3输入逻辑功能。  互 连 FPGA的第二个关键部分是互连,可以对其进行编程以不同方式连接CLB。互连相当复杂,但是粗略的描述是每个CLB之间有几个水平和垂直线段。CLB互连点允许在水平线和垂直线之间建立连接,从而可以创建任意路径。 更复杂的连接通过“交换矩阵”(switchmatrices)完成。每个开关矩阵都有8个引脚,可以(几乎)任意方式将它们连接在一起。下图显示了XC2064的互连结构,提供了到逻辑块(青色)和I / O引脚(黄色)的连接。该图显示了路由功能的特写。绿色框是8针开关矩阵,而小方块是可编程的互连点。 XC2064 FPGA具有一个8×8的CLB网格 每个CLB都有从AA到HH的字母名称。互连可以将例如块DC的输出连接到块DE的输入,如下所示。红线表示路由路径,红色小方块表示已激活的路由点。离开模块DC后,信号由第一个路由点定向到8针开关(绿色),该信号将其引导到另外两个路由点和另一个8针开关。(未显示未使用的垂直和水平路径。)请注意,布线相当复杂;即使是这条短路径,也使用了四个路由点和两个开关。 从块DC的输出路由到块DE的信号示例 下面的屏幕截图显示了 XACT 程序中的路由外观。黄线指示逻辑块之间的路由。随着信号的加入,挑战在于如何有效地路由而不使路径发生冲突。XACT 软件包执行自动路由,但也可以手动编辑路由。 XACT程序的屏幕截图 此MS-DOS程序通过键盘和鼠标进行控制 Implementation 本文的其余部分讨论了XC2064的内部电路,从裸片照片中的反向工程。  下图显示了XC2064芯片的布局。FPGA的主要部分是8×8的网格。每个图块包含一个逻辑块和相邻的路由电路。尽管图片显示将逻辑块(CLB)显示为与围绕它们的路由不同的实体,但这并不是  FPGA的实现方式。取而代之的是,每个逻辑块和相邻路由都实现为单个实体,即图块。(具体来说,图块包括每个CLB上方和左侧的路由。) XC2064芯片的布局 I/O模块围绕集成电路的边缘提供与外界的通信。它们连接到小的绿色方形焊盘,该焊盘连接到芯片的外部引脚。裸片被缓冲区(绿色)划分:两个垂直和两个水平。这些缓冲器可放大在电路中传播很长距离的信号,从而减少延迟。垂直移位寄存器(粉红色)和水平列选择电路(蓝色)用于将比特流加载到芯片中,如下所述。 Tile的内部结构 下图显示了XC2064中单个Tile的布局;如上图所示,该芯片包含64个这样的Tile挤在一起。每个Tile约有40%的面积被保存配置位的内存单元(绿色)所占据。顶部三分之一处通过两个交换矩阵和许多单独的路由交换处理互连路由,下面是逻辑块。逻辑块的关键部分是输入的多路复用器、触发器和查找表(LUT)。每个块通过垂直和水平布线连接到相邻的块,以实现互连,电源和接地。配置数据位被水平地馈送到存储单元,而垂直信号选择要加载的存储单元的特定列。 XC2064中单个Tile的布局 晶体管 FPGA由CMOS逻辑实现,该逻辑由NMOS和PMOS晶体管构建。晶体管在FPGA中具有两个主要作用。首先,可以将它们组合以形成逻辑门。其次,晶体管被用作信号通过的开关,例如以控制路由。在此作用下,该晶体管称为传输晶体管。 MOSFET的结构 下面的裸片照片特写显示了在显微镜下晶体管的外观。多晶硅栅极是两个掺杂硅区域之间的蛇形线。 FPGA中的MOSFET 比特流和配置存储 XC2064 中的配置信息存储在配置内存单元中。FPGA 的内存不是使用 RAM 块进行存储,而是分布在 160×71 网格中的芯片上,确保每个位都位于它控制电路旁边。下图显示了配置比特流如何加载到 FPGA 中。比特流被送入从芯片中心(粉红色)向下运行的移位寄存器中。将 71 位加载到移位寄存器中后,列选择电路(蓝色)将选择特定的内存列,并并行加载到此列中。然后,将接下来的 71 位加载到移位寄存器中,左侧的下一列将成为所选列。此过程将重复 FPGA 的所有 160 列,将整个比特流加载到芯片中。使用移位寄存器可避免大量内存寻址电路。 比特流如何加载到FPGA中 重要的是,比特流的分布与文件中的分布完全相同:比特流文件中的比特布局与芯片上的物理布局匹配。如下所示,每个位都存储在FPGA控制电路的旁边。因此,比特流文件格式直接由硬件电路的布局确定。例如,当由于缓冲电路而在FPGA切片之间存在间隙时,相同的间隙会出现在位流中。比特流的内容不是围绕字段,数据表或配置块之类的软件概念来设计的。了解比特流取决于从硬件角度而非软件角度进行思考。 如下所示实现配置存储器的每一位。每个存储单元均包含两个以环路连接的反相器。该电路具有两个稳定状态,因此可以存储一个位:顶部反相器为1,底部反相器为0,反之亦然。为了写入该单元,左侧的传输晶体管被激活,使数据信号通过。数据线上的信号只会使逆变器过载,从而写入所需的位。(您也可以使用相同的路径从FPGA中读取配置数据。)Q和反相Q输出控制FPGA中所需的功能,例如关闭路由连接,为查找表提供位,或控制锁存器电路。(在大多数情况下,仅使用Q输出。) 从数据表中显示一个位配置内存的示意图 上方的Q是输出,下方的Q是倒置输出 下图显示了存储单元的物理布局。左图显示了八个存储单元,其中一个单元高亮显示。每条水平数据线馈入该行中的所有存储单元。每列选择行选择该列中的所有存储单元以进行写入。中间照片放大了一个存储单元的硅和多晶硅晶体管。 存储单元的物理布局 查找表多路复用器 如前所述,FPGA通过使用查找表来实现任意逻辑功能。下图显示了如何在XC2064中实现查找表。左侧的八个值存储在八个存储单元中。四个多路复用器根据A 输入值选择每对值中的一个  。如果  A 为0,则选择最高值;如果  A 为1,则选择最低值。接下来,较大的多路复用器根据B 和  选择四个值之一  C。在这种情况下,结果是所需的值  A XOR B XOR C。通过在查找表中放置不同的值,可以根据需要更改逻辑功能。 使用查找表实现XOR 每个多路复用器都是通过晶体管来实现的。根据控制信号,其中一个传递晶体管被激活,将该输入传递到输出。下图显示了LUT电路的一部分,多路复用了其中的两个比特。右边是两个存储器单元。每一个比特都要经过一个反相器进行放大,然后经过中间的多路复用器的传递晶体管,选择其中的一个比特。 LUT实现中的电路特写 锁存器 每个CLB包含一个触发器,允许FPGA实现锁存器,状态机和其他有状态电路。下图显示了触发器的实现。它使用主/辅助设计。当时钟为低电平时,第一个多路复用器让数据进入主锁存器。当时钟变高时,多路复用器关闭第一个锁存器的环路,并保持该值。(该位通过“或”门,“与非”门和反相器两次反转,因此保持不变。)同时,当时钟变高时,辅助锁存器的多路复用器从第一个锁存器接收该位(请注意,时钟已反转)。该值成为触发器的输出。当时钟变低时,次级的多路复用器关闭环路,从而锁存该位。因此,触发器是边缘敏感的,在时钟的上升沿锁存该值。置位和复位线强制触发器为高电平或低电平。 触发器的实现,箭头指出了第一个多路复用器和两个OP-NAND门 8-pin交换矩阵 交换矩阵是一个重要的路由元件。每个开关有八个”引脚”(每侧两个),几乎可以连接任意引脚组合在一起。这允许信号比单个路由节点更灵活地转动、拆分或交叉。下图显示了四个 CLB (cyan)之间的路由网络的一部分。交换矩阵(绿色)可与右侧连接的任意组合连接。请注意,每个引脚可以连接到其他 7 个引脚中的 5 个。例如,引脚 1 可以连接到引脚 3,但无法连接到引脚 2 或 4。这使得矩阵几乎是一个横栏,有20个潜在的连接,而不是28个。 基于Xilinx可编程门阵列数据手册 开关矩阵由一排传输晶体管实现,该传输晶体管由上方和下方的存储单元控制。晶体管的两侧是可以通过该晶体管连接的两个开关矩阵引脚。因此,每个开关矩阵具有20个相关联的控制位。 每个图块两个矩阵,即每个图块产生40个控制位。下图显示了其中一个存储单元,该存储单元连接到下面的传输晶体管的长弯曲栅极。该晶体管控制引脚5和引脚1之间的连接。 其中一个存储单元 因此,与该存储单元相对应的位流中的位控制引脚5和引脚1之间的开关连接。同样,其他存储单元及其相关晶体管控制其他开关连接。请注意,这些连接的顺序不遵循特定的模式。因此,位流位和开关引脚之间的映射是随机的。 CLB的输入在位流中使用不同的编码方案,这由硬件实现方式解释。在下图中,八个圆圈的节点是CLB框DD的潜在输入。 CLB的输入在位流中使用的编码方案示意图 最多只能将一个节点配置为输入,因为将两个信号连接到同一输入将使它们短路。使用多路复用器选择所需的输入。一个简单的解决方案是使用8路多路复用器,其中3个控制位选择8个信号之一。另一个简单的解决方案是使用8个通过晶体管,每个晶体管都有自己的控制信号,其中一个选择所需的信号。但是,FPGA使用一种混合方法,该方法避免了第一种方法的解码硬件,但使用了5个控制信号,而不是第二种方法所需的8个控制信号。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3娱乐登录地址_36张图梳理Intellij IDEA常用设置

作者:请叫我小思 来源:blog.csdn.net/zeal9s/article/details/83544074 显示工具条 (1)效果图 (2)设置方法 标注1:View–>Toolbar 标注2:View–>Tool Buttons 设置鼠标悬浮提示 (1)效果图 (2)设置方法File–>settings–>Editor–>General–>勾选Show quick documentation… 显示方法分隔符 (1)效果图 (2)设置方法 File–>settings–>Editor–>Appearance–>勾选 PS:公众号发表过近百篇 IDEA 相关的文章,关注微信公众号 Java后端,后台回复 666 下载这本 Java技术栈手册。 忽略大小写提示 (1)效果图备注:idea的默认设置是严格区分大小写提示的,例如输入string不会提示String,不方便编码 (2)设置方法File–>settings–>Editor–>General –>Code Completion –> 主题设置 (1)效果图备注:有黑白两种风格 (2)设置方法File–>settings–>Appearance & Behavior–>Appearance–> 护眼主题设置 (1)效果图 (2)设置方法如果想将编辑页面变换主题,可以去设置里面调节背景颜色 如果需要很好看的编码风格,这里有很多主题 http://color-themes.com/?view=index&layout=Generic&order=popular&search=&page=1 点击相应主题,往下滑点击按钮 下载下来有很多Jar包 在上面的位置选择导入jar包,然后重启idea生效,重启之后去设置 # 自动导入包 (1)效果图备注:默认情况是需要手动导入包的,比如我们需要导入Map类,那么需要手动导入,如果不需要使用了,删除了Map的实例,导入的包也需要手动删除,设置了这个功能这个就不需要手动了,自动帮你实现自动导入包和去包,不方便截图,效果请亲测~ (2)设置方法File–>settings–>Editor–>general–>Auto Import–> 单行显示多个Tabs (1)效果图默认是显示单排的Tabs: 单行显示多个Tabs: (2)设置方法File–>settings–>Editor–>General –>Editor Tabs–>去掉√ # 设置字体 (1)效果图备注:默认安装启动Idea字体很小,看着不习惯,需要调整字体大小与字体(有需要可以调整) (2)设置方法File–>settings–>Editor–>Font–> 配置类文档注释信息和方法注释模版 (1)效果图备注:团队开发时方便追究责任与管理查看 (2)设置方法 https://blog.csdn.net/zeal9s/article/details/83514565 水平或者垂直显示代码 (1)效果图备注:Eclipse如果需要对比代码,只需要拖动Tabs即可,但是idea要设置 (2)设置方法鼠标右击Tabs 更换快捷键 (1)效果图备注:从Eclipse移植到idea编码,好多快捷键不一致,导致编写效率降低,现在我们来更换一下快捷键 (2)设置方法 方法一:File–>Setting–> 例如设置成Eclipse的,设置好了之后可以ctrl+d删除单行代码(idea是ctrl+y) 方法二:设置模板 File–>Setting–> 方法三: 以ctrl+o重写方法为例 注释去掉斜体 (1)效果图 (2)设置方法 File–>settings–>Editor–> 代码检测警告提示等级设置 强烈建议,不要给关掉,不要嫌弃麻烦,他的提示都是对你好,帮助你提高你的代码质量,很有帮助的。 项目目录相关–折叠空包 窗口复位 这个就是当你把窗口忽然间搞得乱七八糟的时候,还可以挽回,就是直接restore一下,就好啦。 查看本地代码历史 快速补全分号 CTRL + SHIFT + ENTER 在当前行任何地方可以快速在末尾生成分号 快速找到Controller方法 如果你的项目里有非常多的controller,里面有非常多的http或者resful方法。如何快速找到这些方法呢?这个时候,ctrl+alt+shift+n就可以派上用场了。 比如说,你依稀记得入账单相关的接口,都有个bill的url路径,那么使用ctrl+alt+shift+n后,直接输入/bill即可。 当你在成千上万的Controller里寻找方法时,这一招就可以大大提高效率。 大括号匹配 这个也非常有用,因为代码太长,某个for循环,可能已经撑满整个屏幕了。这个时候,找到某个大括号对应的另外一边就很费劲。你可以将光标定位在某个大括号一边,然后使用ctrl+]或者ctrl+[来回定位即可。补充:以上的配置信息都保存在系统盘的 长按订阅更多精彩▼ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3测速登录地址_艾迈斯半导体推出专门应用于全面屏和超窄边智能手机的超小尺寸颜色和光源闪烁检测模块

· 基于重新设计优化的电路和封装,传感器能够被放置在边框区域中,确保显示面积的最大化 · 仅为2 mm x 1 mm x 0.5 mm超小尺寸的环境光/颜色(RGB)和光源闪烁检测集成传感器 · 环境光光强测量水平低至1mlux 中国,2020年11月25日——全球领先的高性能传感器解决方案供应商艾迈斯半导体(ams AG)今日推出一款环境光/颜色(RGB)和光源闪烁检测集成传感器——TCS3410,尺寸仅为2 mm x 1 mm,进一步扩充了全面屏和超窄边框智能手机的传感器选择范围。 TCS3410厚度仅有0.5 mm,可以轻松安装在手机前置自拍镜头的泪滴形缺口中或智能手机的超窄边框中,从而帮助制造商实现最大化屏占比和可视显示面积的设计。 利用TCS3410更强大的能力和更高超的性能,智能手机即使在最具挑战性的弱光条件下也能提供更流畅、更快速响应的显示亮度管理。更出色的白平衡和图像色彩校正有助于实现卓越的摄像性能。该模块还能消除人工光源产生的高频闪烁在照片和视频中引起的条带和伪影的影响。 TCS3410环境光和光源闪烁检测传感器已量产且提供订购。艾迈斯半导体可根据客户要求提供评估板。 TCS3410的特性包括:高灵敏度,低噪声红/绿/蓝(RGB),可见光和光源闪烁检测通道,高精度相关色温(CCT),以及低至1mlux的环境光测量能力。针对光源闪烁检测和环境光传感,最高达4096x的可调增益实现出色的弱光检测性能。 光源闪烁检测功能的改进还将最高11位分辨率下可检测的光源闪烁频率范围扩展到7kHz。 TCS3410改进的灵敏度和采样率使智能手机能够在更弱的光线下检测更高频率的光源闪烁。 通过完全重新设计电路和封装,艾迈斯半导体还让智能手机制造商更容易将传感器放置在边框区域中。与上一代ALS产品相比,更高的像素灵敏度意味着传感器所占的芯片面积得以减小,而总体灵敏度却没有损失。在TCS3410中,传感器分布在封装的一端,因此需要暴露于环境光下的区域(例如相机光圈)可以小到0.28mm2。 TCS3410采用1.8V电源供电,具有可配置的睡眠模式以降低平均功耗。该传感器包括一个I2C接口,支持以最高1 Mbps的快速模式与主机处理器通信。