初等代数常用公式与图像汇总

初等数学主要由代数(Algebra)和几何(Geometry)两部分构成,本篇文章基于《Thomas’ Calculus Early Transcendentals》第 14 版所附录的 A Brief Table of Integrals 章节整理而成,主要涉及基本代数运算集合区间与邻域斜率映射幂函数指数函数对数函数弧度制三角函数以及几何学等知识点,较为系统的概括了初等数学当中常见的公式定理以及相关的函数图像,以备日常进行电路与信号分析时,随手查阅公式使用。

高等数学的研究对象是变动的量,而初等数学的研究对象则是不变的量,正是由于初等数学只能解释常量的几何与物理问题,例如:规则图形的长度面积体积匀速直线运动等等。虽然并不涉及电路与信号分析过程当中,所需要经常涉及的变化量分析与求解,但是却是整个高等数学知识体系当中,不可或缺的基本常识性内容。毕竟初等数学当中所重点讨论的函数,正好就是微积分的主要研究对象

阅读更多

基于 HAL 与 LL 的 UINIO-MCU-STM32F401 开发实践

相较于前一篇运用标准外设库(Standard Peripherals Library)开发的 STM32F403C8T6 微控制器,采用 UFQFPN48 封装的 STM32F401CCU6 则是基于 ARM Cortex®-M4 内核,内置有浮点运算单元(FPU,Float Point Unit)、自适应实时加速器(ART,Adaptive Realtime Accelerator)、数字信号处理器(DSP,Digital Signal Processor)指令,内置 16mHz 高速与 32kHz 低速晶体振荡器,工作时钟频率高达 84mHz,采用 1.7V ~ 3.6V 电源进行供电。

因为 STM32F401CCU6 提供了较大的数据与程序存储空间,所以本文将会基于意法半导体 ST 近年来主推的硬件抽象层HAL,Hardware Abstraction Layer)以及底层LL,Low-layer)开发库,并且结合 STM32CubeIDE 提供的便捷图形化配置工具。本文写作过程当中,参考了意法半导体的《STM32F401xC Data Sheet》《STM32F401xC Reference Manual》以及《Description of STM32F4 HAL & LL drivers》三份官方文档。

阅读更多

基于 ES6 的 JavaScript 简明语法书

JavaScript 是一款基于原型的的多范式动态脚本语言,支持命令式、函数式以及面向对象式的编程风格。其标准化工作主要由欧洲计算机制造商协会ECMA,European Computer Manufacturers Association)负责,其语言标准被称为ECMAScript,其它组织可以遵循该标准开发各自的 JavaScript 实现,例如 Firefox 内置的 SpiderMonkey 以及 Chrome 内置的 V8 解析引擎(ECMAScript 规范文档主要针对解析引擎的开发人员,而非 JavaScript 脚本的编写人员)。

2012 年之后推出的 Web 浏览器都完整实现了 ECMAScript 5.1 标准,而 2015 年发布的 ECMAScript 6 标准(官方称为 ECMAScript 2015,俗称为 ES6),目前已经被 FirefoxChromium 以及 NodeJS 进行了较为完整的实现,所以本文将会基于此介绍 JavaScript 的重点语法特性,以及一些较为用常用的核心工具函数,本文在写作过程当中参考了 Mozilla 开发者社区的 《JavaScript Guide》《JavaScript Reference》 两篇官方文档。

阅读更多

电子测量仪器通用术语与相关原理

电子测量仪器是电子信息技术产业的基础支撑性设备,全球超过 50% 的电子仪器市场份额被是德科技 Keysight泰克 Tek力科 Lecroy罗德与施瓦茨 Rohde&Schwarz四家企业所垄断。伴随近几年电子科技行业卡脖子风险的上升,国内密集出台了多部涉及仪器仪表行业以及相关领域的产业政策,在政策支持与下游产业的快速发展之下,我国电子测量仪器近几年实现了高速增长,涌现出了 普源精电同惠电子优利德科技 等科创板挂牌上市仪器厂商。

电子工程实验当中,必不可少的涉及到大量测量仪器的使用,本文主要记录笔者工作室当中所使用的 数字万用表(Multimeter)、数字电桥(LCR Meter)、数字存储示波器(DSO)、逻辑分析仪(Logic Analyzer)、可编程直流电源(DC Supply)、信号发生器(Signal Generator)等仪器的性能指标术语,包括 三极管测量电源纹波晶振频率谐波输出 等常规的测量方法与技巧,以及相关的注意事项。

阅读更多

《PCB 电流与信号完整性设计》读书笔记

《PCB 电流与信号完整性设计》英文名称是《PCB Currents How They Flow, How They React》,作者是 UltraCAD 公司的创办者 Douglas Brooks,全书着重于物理概念,避免复杂的数学推导,阐述了基本电路的电流源、电流造成的信号完整性问题,以及如何解决串扰和电磁干扰问题。主要内容包括:温度漂移传输线反射耦合电流功率分配趋肤效应介电损耗通孔等,并且给出了每个常见问题的实用设计方案。

全书分为四个部分,其中第一部分电流的性质介绍了电流的基本定义,第二部分基本电路中电流的流动包括了电阻电路、电抗(电容、电感)电路、以及阻抗相关的内容,第三部分则介绍了电压源与电流源,第四部分电路板上的电流则介绍了 PCB 上引入的各种信号完整性问题。

阅读更多

智能 IC 卡技术杂谈

集成电路卡又称为 IC 卡(Integrated Circuit Card),是一种内嵌有集成电路的塑料标签卡片,其集成电路当中包含有 8 位或者 32 位的微控制单元 MCU、只读存储器 ROM、电可擦只读存储器 EEPROM(按字节操作)或者闪速存储器 Flash(按扇区操作)、随机访问存储器 RAM,以及固化在只读存储器 ROM 当中的片内操作系统(COS,Chip Operating System),并且通常内置有 DESRSA国密 SMxSSF 等加解密算法。

目前市场上主流的 IC 卡芯片有恩智浦 NXPMifare 系列、英飞凌 InfineonSL 系列、、复旦微电子FM 系列,华大半导体SHCCIU 系列除此之外,还有 华虹集成电路SHC 系列,以及大唐微电子DMT 系列,紫光国微THD 系列。这些芯片主要遵循 《ISO/IEC 7816》《ISO/IEC 14443 TypeA》两部协议规范,本文主要介绍了笔者在日常工作当中,经常接触到的各类智能卡相关的技术与规范。

阅读更多

玩转 Arduino Uno、Mega、ESP 开源硬件

Arduino 是一款非常流行与成熟的电子原型评估套件,其 PCB 硬件IDE 集成开发环境板级支持包 全部基于开源共享协议,其中,Eagle 原理图以及 PCB 布线遵循 CC BY-SA 共享协议,而 IDE 集成开发环境的源代码基于 GPL 开源协议,微控制器 MCU 的 C/C++ 板级支持包则是基于 LGPL 开源协议。自从 2005 年第一款 Arduino 开发板面世以来,官方已经推出了琳琅满目的各类硬件以及软件包,叠加各大芯片厂商的助力,整个开源社区的氛围日趋活跃与丰富。

本文首先从入门级的 Arduino Uno 入手,然后逐步过渡至片上资源更为丰富的 Mega 2560,两款都是由 Arduino 官方所推出的 5V 供电电压的开发板。最后引入了携带有 Wifi/Bluetooth 无线接入能力的 ESP8266ESP32,而它们则是采用了国产 3.3V 芯片的开发板,由于开源社区或者芯片原厂提供了兼容 Arduino API 的板级支持包,在较为丰富功能的基础上提供了相对低廉的价格,叠加 Arduino 较为成熟的开发环境,更是加速了 Arduino 的应用与普及。

阅读更多

高等教育出版社《模拟电子技术》温习札记

电子信号是指随着时间进行变化的电压或者电流,可以在数学描述上描述为时间的函数,并且可以绘制出其波形。模拟信号数值时间上均具有连续性,对于任意时间均有确定的电压或者电流值与之对应。常用的模拟电路有放大电路(信号电压、电流、功率的放大)、滤波电路(信号的提取、转换、抗干扰)、运算电路(完成信号之间的加减乘除、积分、微分、对数、指数运算)、信号转换电路(电流与电压信号之间的相互转换)、信号发生电路(用于产生正弦波、矩形波等波形)、直流电源(将不同电压与频率的交流电转换为指定电压与电流的直流电)。

本文所涉及的内容主要包括有常用半导体器件基本放大电路集成运算放大电路放大电路的频率响应放大电路中的反馈信号的运算和处理波形的发生和信号的转换功率放大电路直流电源,基本涵盖了模拟电路当中主要的电路类型,其中放大电路是对模拟信号的最基本处理,上述模拟电路当中均包含有放大电路,因而放大电路是构成各种模拟电路的最基本电路

阅读更多

Git 版本管理命令备忘录

Linux Kernel 是一个非常大规模的开源软件项目,在该项目 1991 ~ 2002 年维护的早期,所有对于代码的修改都是以补丁(Patches)和归档文件(Archived File)的形式进行传递。在 2002 年之后,Linux 内核项目开始使用一款称为 BitKeeper 的商业版本管理工具。但是到了 2005 年,Linux 社区与 BitKeeper 商业公司之间的合作关系破裂,促使 Linux 开源社区以及 Linus Torvalds 本人根据之前的版本管理经验,开发出了全新的分布式版本管理工具 Git

Git 不会以基于文件修改列表的方式来保存数据,而是以及引用快照的方式来保存文件的历史信息;即使没有 Git 版本管理服务器的支持,大部份操作也能够在本地正常进行;Git 当中的所有数据存储时都会经过 SHA-1 完整性校验,并且使用一个长度为 40 的散列字符串来存储和引用这些数据;Git 当中的所有操作都是在添加数据,因而很难执行不可撤消的任务,也很难让出现在删除数据之后无法找回的场景。

阅读更多

小议 MQTT 物联网传输协议

物联网IoTInternet of Things)通过各种网络以及传感器技术,按照约定的协议将无处不在设备联结起来,以进行信息的传输与控制交互,并实现智能化的信息感知与管理,进而构建出万物相联的智能化环境,将网络连接能力渗透进现实世界的方方面面。而伴随近年 5G 无线网的迅速商用,海量物联网设备的接入给传统 Web 通信协议带来了挑战,必须有针对性的采取一系列全新特性的通信协议,从而解决网络环境不可靠终端设备系统资源有限等关键问题。

MQTT(消息队列遥测传输,Message Queuing Telemetry Transport)协议最早是由 Andy Stanford ClarkArlen Nipper 于 1999 年创建,起初主要是解决卫星与原油管道监测数据的传输问题,拥有最低的电池损耗与最小的带宽占用。后来在 OASIS 标准化组织的推动下于 2014 年 10 月公布了 V3.1.1 版本规范,并于 2019 年 3 月发布了最新的 V5.0 版本规范,目前 MQTT 已经成为物联网通信系统当中较为常用的一种传输协议。

阅读更多

编码实践当中涉及的密码学知识

OpenSSL 是用于安全传输层TLS,Transport Layer Security)协议和安全套接字层SSL,Secure Sockets Layer)协议的的工具包,提供了 SSL 协议实现(SSLv2SSLv3TLSv1)、大量算法实现(对称/非对称/摘要)、大数运算、非对称算法密钥、ASN.1 编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL 编解码、OCSP 协议、数字证书验证、PKCS7 标准实现和 PKCS12 个人数字证书格式实现等功能。

然而一直以来 OpenSSL 代码质量,总是受到开发人员的各种诟病,因而出现了 WolfSSL 与 PolorSSL 等 OpenSSL 的开源替代产品,其中 PolarSSL 被 ARM 公司收购之后,现更名为 Mbed TLS,主要由 Trusted Firmware 组织进行维护,遵循相关的 ARM 规范,并为 Armv8-AArmv9-AArmv8-M 内核架构提供了安全可信的参考实现。本文主要主要讨论了 Base64Hash 编码、以及 OpenSSL 所涉及的相关加解密知识。

阅读更多

电路分析经典理论与习题手记

电阻电路是指除电源之外,仅包含有电阻元件的电路,而动态电路则是含有电容电感等储能动态元件的电路,由于动态元件的特性方程当中含有微分积分形式,因而动态电路主要采用微分方程进行描述,其中方程的阶数通常取决于动态元件个数。电路分析当中的动态又称为暂态,指电路从一个稳态变化至另一个稳态的中间过渡过程。而稳态也被称为静态,指电路当中的电压、电流等参数达到一个稳定状态,如果其它参数不发生变化,就会一直以该状态运行。

本文主要讨论了电阻电路分析相关的基本概念与两类约束电路的等效变换电阻电路的分析方法常用电路定理方面的内容,以及动态电路分析相关的动态电路的暂态分析正弦交流电路稳态分析含二端口元件电路分析方面内容,阅读前应当具备微分积分微分方程复数运算线性代数方程组矩阵傅里叶级数高等数学知识。本文在撰写过程当中,参考阅读了国外大学普遍采用的《Electric Circuits》第 10 版教材。

阅读更多

PCB 基本布线规范与设计原则

优秀的 PCB 设计者同时也是出色的艺术家,但是伴随 5G 的全面商用以及物联网设备的普及,电路板走线越来越精密,信号频率日益提高,电磁干扰问题日趋严重,PCB 设计人员不得不去面对一个现实问题:PCB 电路板已经开始像一个具有电阻、电容、电感的组件,而非像过去 10 年前那样仅仅作为线路连接的平台。电磁兼容性信号完整性的问题日益突出,对于 PCB 布线与元器件布局的要求越来越高。

本文首先介绍了 PCB 制造工艺与元器件封装相关的知识,然后重点讨论了笔者工作过程当中总结的一些 PCB Layout 方面的基本布线规范与设计原则。当然,信号完整性作为一个比较系统的工程化问题,这些经验与原则并非绝对适用于任意场合,实际布线时仍然需要具体问题具体分析,结合实际的工况进行设计。而对于信号完整性方面的各类繁杂问题,将会专门新开一篇文章另行讨论。

阅读更多

现代数字逻辑电子技术概论

二十一世纪,数字化浪潮席卷了电子工业领域,与传统的模拟电子系统相比,数字系统具备更加优异的精确与可靠性,逐步取代了许多模拟电路的应用场景。数字逻辑电路是对数字信号进行算术与逻辑运算的电路,以逻辑门作为基本电路单元(最早采用 TTL 工艺,伴随半导体工艺技术的不断进步,目前已经逐步被 CMOS 工艺取代),数字电路可以分为组合逻辑电路(基本逻辑门)和时序逻辑电路(逻辑门 + 反馈逻辑回路)两大类。

本篇文章讲解了数字逻辑电路的分析与设计所涉及到的基础理论,首先讲解了数制码制逻辑代数等基础知识,接着重点描述组合逻辑电路时序逻辑电路的分析与设计方法,然后讨论了各种数字集成电路( 含门电路、可编程逻辑元件、半导体存储器)的原理以及使用方法,并且介绍了硬件描述语言可编程逻辑器件的相关知识,最后一部分讲解AD/DA转换以及脉冲波形的产生和转换电路。

阅读更多

模拟电子技术原理与综合运用

电子技术发展至今,基础理论方面的突破甚少,进步主要体现在工艺、材料与制程方面。特别是大规模集成电路的广泛应用,过去需要采用大量分立式元器件才能完成的工作,都已经被标准化的模拟、数字集成电路所替代。电子工程师的日常工作内容,逐步从过去各类基础电路的搭建,切换至电子自动化设计 EDA(Electronic Design Automation)、信号完整性 SI(Signal Integrity)、电磁兼容性 EMC(Electro Magnetic Compatibility)等方面。

模拟电子技术作为现代电子工业的理论基石,主要围绕双极性结型晶体管 BJT场效应晶体管 FET 构成的模拟信号放大电路展开,着重分析了其频率响应以及负反馈等特性。伴随近年碳化硅、氮化镓等第三代半导体材料在新能源汽车等领域的广泛应用,模拟电子元件在体积、效率、可靠性方面都取得了显著的提高,本文在写作过程当中参考了《Electronic Devices and Circuit Theory》第 11 版一书。

阅读更多

理工科学生的《新概念英语》第 1 册教程

朗文外研社新概念英语》是 1997 年 10 月外语教学与研究出版社出版的一套英文教材,作者是亚历山大与何其莘。第一册英文初阶(First things first)分为两个阶段一共 144 课,主要侧重于掌握基本的词汇与发音,目的是让学习者具备基础的口语能力。该册教材每两课被视为 1 个学习单元,单数课是一篇按照句型结构编排的情景对话或者文章,而奇数课则是带有插图的各类练习。该册教材内容在保持相对独立的同时,也为后续其它册内容的学习作好了铺垫。

国内的电子信息技术产业与国际紧密接轨,产品研发过程当中涉及的资料通常只有英文版本,例如芯片厂商的各种数据手册、开源平台的自述文档 README.md 以及里边的源码注释。除此之外,在笔者所就职的外资企业里面,也经常需要频繁的与国外团队进行会议沟通,如此种种英文都是必不可少的工具。本文的撰写完全站在理工科专业学习者的角度,摒除其它新概念教程繁琐的语法分析,紧密结合课文的同时,更加聚焦于实际的听说读写译。

阅读更多

通用 LaTeX 数学公式语法手册

MathJax 是一款运行于 Web 浏览器当中的开源 JavaScript 数学符号渲染引擎,通过它可以方便的在现代 Web 浏览器当中显示数学公式,目前已经能够解析 LaTexMathML 等标记语言。MathJax 项目发源于 2009 年,目前由 NumFOCUS 基金会主持,并且得到了 MathJax 联盟的支持,该联盟是美国数学协会(AMS)和 工业与应用数学协会(SIAM)的共同合资企业。

LaTeX 是一种高质量的排版格式,可以生成复杂的表格与数学公式,是当前电子与数学出版行业的事实标准。本文以 Pandoc 作为 LaTex 渲染引擎(一款用于标记语言文档转换的命令行工具),分门别类的总结了撰写数学公式所需要经常使用到的 LaTeX 语法,方便写作相关科技类文章时随手查阅。

阅读更多

基于 Solidity、Hardhat、OpenZeppelin 迈向 Web3.0

Solidity 是一款以由以太坊ETH,Ethereum)开源社区推出的面向对象静态程序设计语言,主要用于在 Web 3.0 世界创建智能合约,其语法特性受到了 C++、Python、JavaScript 等编程语言的影响。支持继承、库、复杂的用户自定义类型以及其它特性。官方推荐在生产环境撰写以太坊智能合约的时候,总是使用最新的 Solidity 版本,从而获得安全修复以及各种新特性,本篇文章撰写时 Solidity 最新的生产环境版本为 v0.8.24

除了 Solidity 的各种常用语言特性之外,还会介绍一系列 Web 3.0 开发过程当中,所经常使用的第三方开源项目。其中 Hardhat 是一个用于编译、部署、测试、调试以太坊应用的开发环境,而 Ganache 则是一款用于开发测试 dApps(Decentralized Applications)的本地区块链应用。除此之外,OpenZeppelinContract 则是一款用于开发安全智能合约的库,提供有 ERC20ERC721 的标准实现,以及灵活的的权限方案,乃至于各种常用的工具组件。

阅读更多

2022 互联网裁员潮之后,国内 IT 行业何去何从?

笔者作为常年工作在一线的 IT 技术研发人员,早在 2018 年就已经不玩儿互联网行业了。主要是感觉 Web 技术栈已然走向全家桶化(例如后端 Spring 全家桶、前端 Vue 全家桶),而开发方式也日趋套路化与工程化,上手难度与技术门槛以肉眼可见的速度不断下探,进而伴随着大量从业人员的持续涌入,整个行业全面开启了 996 内卷模式

除此之外,叠加近几日中概股跌穿了板凳,以及反垄断监管的不断强化,互联网行业合规经营的大幕徐徐拉开。未来全行业的整体薪酬水平,必然回归至类似财务会计这类市场化职位应有的水平。高薪光环终究是到了褪去的时刻,重新回到利润与收支挂钩的市场化薪酬体系,将会是整个行业未来的大势所趋。

阅读更多

Bash Shell 脚本编程实践

Shell 既是一套命令行工具(交互式地解释和执行用户输入的命令)也是一种脚本设计语言(定义有变量与参数,并提供了控制、循环、分支结构)。Bash Shell 是由 GUN 官方项目提供的 Shell 解释器,名称源自于 Bourne Again SHell 的英文缩写,整合了传统 Korn Shell 以及 C Shell 的有效特性,并且尽量遵循IEEE POSIX P1003.2/ISO 9945.2规范,同时在编程与交互使用方面提供了大量的功能改进,因而在提供丰富功能的基础之上,展现出了良好的兼容特性,大多数.sh脚本可以无需移植修改即可交由 Bash Shell 来执行。

当用户登入任意一款 Linux 操作系统时,初始化程序init都将会为用户启动一个Bash Shell命令解析器,其即可以用于解析命令行输入并与内核进行交互,也可以作为高效的脚本编程语言,运用其提供的变量、参数、循环、分支等编程语法特性,完成一些批量的自动化的任务处理工作,本文将会围绕 Bash Shell 的脚本编程特性,加以进行详细的分析、说明与示例。

阅读更多