• FPGA之旅设计的第一块ZYNQ核心板,这不期待一下?

    一. 简介 哈喽,大家好,在前面的一些设计中,本人使用的最多的是ESP32和STM32作为主控的项目,例如AuroraFOC/Ebullient这两个项目,但是作为以FPGA开发为主的工程师,一直没有发布以FPGA作为主控的项目,感觉这样不是特别好,毕竟大家关注是为了学习FPGA相关的知识,主要原因有一下两点吧: 成本太高:  一片FPGA芯片的价格基本上是单片机10倍以上,另外PCB设计中至少采有6层以上的设计,6层以上PCB的生产费用嘎嘎高。 PCB设计难度太大: 会涉及到高速信号的设计,例如DDR3,另外上电时序也需要控制、散热问题等等,有一个环节出现问题,可能就会导致不能够正常使用,报废率较高。 但是为了回归FPGA主题,让大家学习FPGA的时候能够接触更多有趣的项目,所以我决定花些功夫设计一款ZYNQ7020核心板: Ethereal,后续项目将使用此板作为主控板进行设计。 二. Ethereal来源 对比了 正点原子, 黑金,米联客等几家的ZYNQ7020核心板,它们都有一个共性: 需要搭配底板才能使用,这一点我觉得不太友好,对标的用户应该是企业,而不是我们普通学者。 所以我打算结合我的使用习惯,使得大部分普通用户使用起来更加方便。通过颜值选择了正点原子的ZYNQ7020核心板(产品图如下)作为参考进行设计,故设计的Ethereal可以完美兼容他们的底板(部分IO有点区别)。 三. Ethereal产品介绍 先介绍一下正点原子的ZYNQ7020核心板参数: DDR3:1GB(512MB*2   PS) EMMC:8GB(PS) QSPI FLASH: 32MB(PS) 板载: 千兆以太网芯片(PS),复位按键(PS),一个PS LED, 一个PL LED,JTAG下载接口(1 *6),3710 2*50P母座 Ethereal核心板参数: DDR3:1GB(512MB*2   PS) EMMC:8GB(PL) QSPI FLASH: 32MB(PS) 板载:type-c USB 串口(PS 可以用来供电),TF卡座(PS),BOOT选择开关,复位按键(PS),一个PS LED, 一个PL LED,JTAG下载接口(1 *6),3710 2*50P母座 可以看出在板载资源上一些差异,正是因为这些差异可以使得Ethereal可以直接使用,无需搭配底板。 其它家的EMMC基本上都是挂载在PS侧了,因为可以直接使用,简单方便。Ethereal则是挂载在了PL侧,使用起来虽然难度加大了,但是更为灵活了,可以满足一些特殊的要求。 四. PCB参数 外形尺寸: 57.5mm * 45mm 工作电压: 5V 工作电流: 58mA ~ 530mA @ 5V PCB层数: 10层 PCB的相关参数与正点原子的ZYNQ7020核心板保持一致。

    06-13 67浏览
  • 学习笔记—芯片的启动

    一个芯片启动的时候会执行哪些动作

    06-13 81浏览
  • STM32ADC自身的误差来源剖析

    本文章主要研究影响STM32 ADC模数转换器精度的主要误差来源,为嵌入式开发遇到采样问题时提供一些参考思路。

    06-06 87浏览
  • 为啥4位单片机那么“LOW”,却还没被淘汰?

    为啥4位单片机那么“LOW”,却还没被淘汰?

    05-21 353浏览
  • STM32ADC自身的误差来源剖析

    本文章主要研究影响STM32 ADC模数转换器精度的主要误差来源,为嵌入式开发遇到采样问题时提供一些参考思路。

    05-19 226浏览
  • 清晰明了,一文带你搞懂I2C通信时序!

    I²C是一种串行、半双工通信总线,使用多主从架构,是由Philips公司在1980年代初设计的,主要用于近距离、低速的芯片之间的通信。由于其简单性,它被广泛用于微控制器与传感器阵列,显示器,IoT设备,EEPROM等之间的通信。

    05-15 387浏览
  • 学51单片机很顺,学STM32却一头雾水?

    学51单片机很顺,学STM32却一头雾水?

    05-15 223浏览
  • 嵌入式开发,要学会高效阅读芯片数据手册

    还记得刚开始做嵌入式的时候,面对芯片数据手册(datasheet)那叫一个头大! 动辄几十页的文档,密密麻麻的术语和图表,简直像天书。 后来我发现很多工程师都有类似的困扰。即便现在我已经用过成百上千种芯片,面对一些“奇葩”数据手册,依然会抓狂。 选芯片和读数据手册,其实可以有章法可循。这篇文章我想分享一下我这些年总结的经验,教你如何快速上手一份数据手册,少走弯路。 我会以 SiC45x 降压 DC/DC 转换芯片为例,带你一步步拆解数据手册的阅读技巧。 从哪里开始读数据手册? 别笑,我的第一步真的是直接翻到典型应用电路(Typical Application Circuit)。 这部分通常是数据手册的“门面担当”,能让你迅速抓住芯片的核心用法。 如果一份数据手册连典型应用电路都没有,我十有八九会直接 Pass 掉这颗芯片! 为什么?因为典型应用电路就像一份“速成指南”,能告诉你: 芯片的基本接法是什么样; 需要多少外部元件; 大概能用在什么场景。 以 SiC45x 的典型应用电路(见图1)为例,它在数据手册的第一页就给了我们不少信息: 图1:SiC45x 典型应用电路 通过这个图,哪怕你对这颗芯片一无所知,也能快速get到: 输入电压范围是 4.5V 到 20V; 没有外部 MOSFET,说明这颗芯片内部集成了功率管(对高功率稳压器来说挺硬核!); 支持 I2C 通信,还能改地址; 有 RT/SYNC 引脚,说明可以调开关频率; 有 ENABLE、PGood、SALRT 等状态引脚,说明可能不依赖 I2C 也能用。 虽然这些信息不足以直接画原理图,但已经足够让你对芯片有个初步印象,是个不错的起点! 例外情况:如果是微控制器(MCU),因为功能太复杂,数据手册通常不会有完整的典型应用电路,而是会拆分成几个关键模块的接法,比如去耦电容、晶振、编程接口等。 如果 MCU 数据手册还贴心地附上“最小硬件连接”示意图,那真是良心厂家,值得加分! 别错过两个“描述”部分 数据手册里通常有两个地方会介绍芯片的功能,一个是开头的描述(Description),另一个是稍后几页的操作描述(Operational Description)。这两个部分乍看有点重复,但其实各有侧重。 开头的描述:通常在第一页,像是芯片的“自我介绍”,简明扼要地告诉你这颗芯片是干啥的,适合什么场景。读完这个,你大概就能判断芯片符不符合你的需求。 操作描述:这个部分一般在引脚定义、绝对最大值和框图之后,内容更详细,会把开头的描述再细化一遍,还会分模块讲解芯片的各个功能块。 图2:SiC45x 数据手册的两种描述 以 SiC45x 为例(见图2),开头的描述让你快速了解芯片是个降压转换器,支持 I2C 控制,而操作描述则会进一步拆解每个功能模块,比如开关频率设置、I2C 通信协议等。 建议:选芯片时可以先快速扫一眼这两个部分,设计原理图时再反复回来查操作描述里的公式和设置方法。 绝对最大值:设计的安全底线 看完典型应用电路和描述,我会直接跳到绝对最大值(Absolute Maximum Ratings)和推荐工作条件(Recommended Operating Conditions)。这两部分是芯片的“红线”,告诉你芯片能承受的极限和建议的工作范围。 图3:SiC45x 绝对最大值表格 以 SiC45x 的绝对最大值(见图3)为例: 最大输入电压是 28V,但推荐工作电压只有 20V。这意味着你不能直接用 24V 电源供电,但如果有上游的过压保护(比如钳位到 24V),20V 是可以安全使用的。 还会列出每个引脚的最大电压和电流,方便你检查设计是否超限。 Tips:绝对最大值是“不能碰的雷区”,但不代表芯片能长期稳定工作在这些极限条件下。推荐工作条件才是你设计时的参考标准! 引脚定义表:设计时的“速查宝典” 了解了芯片的基本功能和电气限制后,我会去看引脚定义表(Pin Description),也叫引脚功能表。这个表格通常在典型应用电路和绝对最大值之间,列出了每个引脚的名称、功能和简单描述。设计电路时,这个表格是我翻得最多的部分,堪称“速查宝典”。 图4:SiC45x 引脚定义表 比如 SiC45x 的引脚定义表(见图4),我们能快速知道 RT/SYNC 引脚是用来设置开关频率的。但具体用多大的电阻对应什么频率?这时需要翻到操作描述里的“RT/SYNC 引脚和开关模式配置”部分,里面会有详细的电阻值表格(见图5)。 图5:SiC45x 开关频率设置表格 功能框图:深入理解芯片内部 几乎所有数据手册都会有个功能框图(Functional Block Diagram),展示芯片的内部结构。SiC45x 的框图如图6所示: 图6:SiC45x 功能框图 框图不一定每次都用得上,但关键时刻能帮大忙,比如: 搞清楚不同地(GND)之间的连接方式; 了解芯片的驱动电路类型; 弄明白如何绕过某些功能模块; 看内部电压是怎么生成的。 我通常会在设计后期或者调试时参考框图,尤其是遇到奇怪问题时,它能帮你从芯片内部逻辑去分析。 那些密密麻麻的图表怎么办? SiC45x 数据手册光图表就占了9页!(见图7)说实话,我平时不太会逐一细看这些图表,它们不是我的标准阅读流程。但某些场景下,比如想了解芯片的启动特性或效率曲线,图表还是很有用的。 图7:SiC45x 数据手册中的图表页 建议:除非有特殊需求(比如分析启动时间或热性能),可以先跳过图表,专注前面的核心内容。 PCB 布局建议:参考但别盲从 SiC45x 数据手册有个亮点:整整三页的 PCB 布局建议!(见图8)这在数据手册里算少见,尤其对开关电源这种对布局敏感的芯片,布局建议特别重要。 图8:SiC45x PCB 布局建议 不过,我得提醒一句:别把布局建议当“圣经”。厂家提供的建议通常是通用的,实际设计中你可能需要根据具体情况调整。比如,SiC45x 的布局建议里提到电源和地平面怎么布,但图示里有些细节可能不太合理。我的做法是参考这些建议作为起点,然后结合自己的经验优化。 别忘了检查勘误表! 数据手册不是完美的,尤其是刚发布时,难免有印刷错误或遗漏。这些问题通常会在 勘误表 部分修正,列在数据手册末尾或单独文档里。Errata 还可能指出芯片本身的硬件问题,比如某个引脚功能有 Bug,未来版本会修复。 Tips: 一定要用最新版数据手册,直接从厂家官网下载。 尤其是 MCU,勘误表可能单独发布,设计前务必查阅。 总结:从“天书”到“工具书” 读数据手册就像啃一本技术“天书”,但只要掌握方法,就能把它变成你的“工具书”。通过 SiC45x 的例子,我分享了我的阅读流程: 先看典型应用电路,快速了解芯片用法; 读两个描述部分,抓住芯片的核心功能; 检查绝对最大值和推荐工作条件,确保设计安全; 熟读引脚定义表,设计时反复参考; 必要时看功能框图和图表,解决疑难问题; 参考 PCB 布局建议,但灵活调整; 别忘了检查勘误表,避免踩坑。 希望这些经验能让你下次面对数据手册时信心满满!如果你有其他读数据手册的技巧,欢迎在评论区分享,咱们一起进步!

    05-13 288浏览
  • 嵌入式程序的链接和装入

    将目标文件中的各个逻辑段链接起来形成装配模块的工作,由链接脚本文件完成,将装配块装入相应内存区的工作由装入程序

    05-07 269浏览
  • 一文搞懂ARM处理器架构

    1、嵌入式处理器基础 典型的微处理器由控制单元、程序计数器(PC)、指令寄存器(IR)、数据通道、存储器等组成 。 指令执行过程一般分为: 取指: 从存储器中获得下一条执行的指令读入指令寄存器; PC: 程序计数器, 总是指向下一条将要执行的指令; IR: 指令寄存器,用于保持已取得指令;如图: 译码: 解释指令,决定指令的执行意义;如图: 执行: 从存储器向数据通道寄存器移动数据; 通过算术逻辑单元ALU进行数据操作;如图: 存储: 从寄存器向存储器写数据。如图: 在一些微处理器上,如ARM系列处理器、DSP等,指令实现流水线作业,指令过程按流水线的数目来进行划分。如5级流水线的处理器将指令分5个阶段执行。 (1)按存储结构分:冯·诺依曼体系结构和哈佛体系结构 冯·诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 处理器,经由同一个总线传输来访问程序和数据存储器,程序指令和数据的宽度相同。如X86系列、ARM7等,如图: 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,目的是为了减轻程序运行时的访存瓶颈。哈佛结构的微处理器通常具有较高的执行效率。 Microchip公司的PIC系列芯片,摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11 等。如图: 按指令类型可分为:复杂指令集(CISC)处理器和精简指令集(RISC)处理器 。 CISC:复杂指令集(Complex Instru ction Set Computer); 具有大量的指令和寻址方式,那么就需要更多的解释器。 8/2原则:80%的程序只使用20%的指令; 大多数程序只使用少量的指令就能够运行。 CISC具有如下显著特点: (1) 指令格式不固定,指令长度不一致,操作数可多可少; (2) 寻址方式复杂多样,以利于程序的编写; (3) 采用微程序结构,执行每条指令均需完成一个微指令序列; (4) 每条指令需要若干个机器周期才能完成,指令越复杂,花费的机器周期越多。 RISC:精简指令集(Reduced Instruction Set Computer):指令数目少,在通道中只包含最有用的指令;执行时间短,确保数据通道快速执行每一条指令;使CPU硬件结构设计变得更为简单;每条指令都采用标准字长。 2、ARM处理器体系架构 ARM即Advanced RISC Machines的缩写。 1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生。 20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。 1990年成立了Advanced  RISC Machines Limited。 20世纪90年代,ARM32位嵌人式RISC(Reduced Instruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。 目前己经占有75%以上的32位嵌入式产品市场。 32位RISC处理器受到青睐,领先的是ARM嵌入式微处理器系列。 ARM公司虽然只成立20多年,但在1999年因移动电话火爆市场,其32位RISC处理器占市场份额超过了50%,2001年初,ARM公司的32位RISC处理器市场占有率超过了75%。ARM公司是知识产权供应商,是设计公司。由合作伙伴公司来生产各具特色的芯片。 ARM处理器特点: (1)ARM指令是32位定长的(除AArch64架构部分增加指令为64位外) (2)寄存器数量丰富(37个寄存器) (3)普通的Load/Store指令 (4)多寄存器的Load/Store指令 (5)指令的条件执行 (6)单时钟周期中的单条指令完成数据移位操作和ALU操作 (7)通过变种和协处理器来扩展ARM处理器的功能 (8)扩展了16位的Thumb指令来提高代码密度 ARM的命名规则, 大致分成两类类: 基于ARM Architecture版本的“处理器系列”命名规则; 基于ARM Architecture版本的“处理器型号”命名规则。 ARMv6 架构,引进了包括单指令多数据(SIMD)运算在内的一系列新功能。 ARMv6-M 架构,为低成本、高性能设备而设计,向以前由8位设备占主导地位的市场提供32位功能强大的解决方案。如Cortex™-M0和Cortex-M1。 ARMv7架构,所有ARMv7架构处理器都实现了Thumb-2 技术(一个经过优化的16/32位混合指令集),此架构分为3类处理器:Cortex-A -应用处理器、Cortex-R - 实时处理器、Cortex-M - 微控制器。 ARMv8架构,ARMv8-A将64位体系结构支持引入ARM体系结构中,其中包括:64位通用寄存器、SP(堆栈指针)和 PC(程序计数器),64位数据处理和扩展的虚拟寻址,兼容32位处理。 ARMv9架构,最重大的升级在于AI和安全,在兼容ARMv8的基础上,提升了安全性,增加了矢量计算、机器学习和数据信号处理等多方面能力,性能表现也将得到极大幅度的提升。 1)ARM数据类型 (1)双字节(Double-Word):64位 (2)字(Word):在ARM体系结构中,字的长度为32位。 (3)半字(Half-Word):在ARM体系结构中,半字的长度为16位。 (4)字节(Byte):在ARM体系结构中,字节的长度为8位。 2)ARM处理器存储格式 作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。 ARM体系结构可以用两种方法存储字数据,分别为大端模式和小端模式。 大端模式(高地高低):字的高字节存储在低地址字节单元中,字的低字节存储在高地址字节单元中。 3)ARM处理器工作状态 从编程的角度来看,ARM微处理器的工作状态一般ARM和Thumb有两种,并可在两种状态之间切换。 (1)ARM状态:此时处理器执行32位的字对齐ARM指令,绝大部分工作在此状态。 (2)Thumb状态:此时处理器执行16位的半字对齐的Thumb指令。 THUMB指令的特点: THUMB代码所需空间为ARM代码的70%; THUMB代码所使用的指令数比ARM代码多40%; 用32位存储器,ARM代码比THUMB代码快40%; 用16位存储器,THUMB代码比ARM代码快45%; 使用THUMB代码,外部存储器功耗比ARM代码少30% 4)ARM处理器工作模式 5)ARM Cortex-A处理器工作模式 6) Cortex-A寄存器组 34个通用寄存器,包括各种模式下的R0-R14和共用的R15程序计数器(PC),这些寄存器都是32位的。8个状态寄存器,Hyp模式独有一个ELR_Hyp寄存器。 7)程序状态寄存器CPSR和SPSR 和其他处理器一样,ARM有程序状态存储器来配置处理器工作模式和显示工作状态。ARM处理器有两个程序状态寄存器CPSR (Current Program Status Register,当前程序状态寄存器)和SPSR (Saved Program Status Register,备份的程序状态寄存器)。 CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位以及其他一些相关的控制和状态位。 每一种运行模式下都有一个专用的物理状态寄存器,称为SPSR为状态寄存器。 (1)N(Negative):当用两个补码表示的带符号数进行运算时,N=1表示结果为负,N=0表示结果为正数或零 (2)Z(Zero):Z=1表示运算结果为0,Z=0表示运算结果非零 (3)C(Carry):有4种方法可以设置C的值: 1)加法指令(包括比较指令CMP) 2)当运算产生进位时(无符号数溢出),C=1,否则C=0 3)减法运算(包括比较指令CMP) 4)当运算产生了借位(无符号数溢出),C=0,否则C=1 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。对于其他的非加/减运算指令,C的值通常不变。 (4)V(Overflow):有2种方法设置V的值: 1)对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。 2)对于其他的非加减法运算指令,V的值通常不变。 (5)I(Interrupt Request):I=1表示禁止响应irq,I=0表示允许响应 (6)F(Fast Interrupt Request):F=1表示禁止响应fiq,F=0表示允许响应 (7)T(Thumb):T=0表示当前状态位ARM状态,T=1表示为Thumb状态 (8)M4-M0:表示当前处理器的工作模式 8)工作模式的切换条件 (1)执行软中断(SWI)或复位命令(Reset)指令。如果在用户模式下执行SWI指令,CPU就进入管理(Supervisor)模式。 (2)有外部中断发生。如果发生了外部中断,CPU就会进入IRQ或FIQ模式。 (3)CPU执行过程中产生异常。最典型的异常是由于MMU保护所引起的内存访问异常,此时CPU会切换到Abort模式。如果是无效指令,则会进入Undefined模式。 (4)有一种模式是CPU无法自动进入的,这种模式就是System模式,要进入System模式必须由程序员编写指令来实现。要进入System模式只需改变CPSR的模式位为System模式对应的模式位即可。 (5)在任何特权模式下,都可以通过修改CPSR的MODE域来进入其他模式。不过需要注意的是由于修改的CPSR是该模式下的影子CPSR,即SPSR,因此并不是实际的CPSR,所以一般的做法是修改影子CPSR,然后执行一个MOVS指令来恢复执行某个断点并切换到新模式。 3、ARM处理器内存管理 1)什么是内存映射 内存映射指的是在ARM存储系统中,使用内存管理单元(MMU)实现虚拟地址到实际物理地址的映射,如图所示。 2)为什么要内存映射 A32架构的ARM的地址总线为32位,故CPU可寻址范围为0x00000000~0xffffffff寻址空间为4GB,所有的内部和外部存储或者外设单元都需要通过对应的地址来操作,不同芯片外设的种类数量寻址空间都不一样,为了能让内核更方便的管理不同的芯片设计,ARM内核会先给出预定义的存储映射。 芯片设计公司需要根据内核提供的预定义的存储器映射来定义芯片内部外设和外部的保留接口,这样做的好处是极大地减少了同一内核不同芯片间地址转化的麻烦(CPU操作统一的虚拟地址,实际物理地址交由MMU管理)。 3)位带操作 (1)什么是位带操作 举个简单的例子,在使用51单片机操作P1.0为低电平时我们知道这背后实际上就是往某个寄存器某个比特位中写1或0的过程,但在CPU操作的过程中每一个地址所对应的都是一个8位字节,怎么实现对其中某一位的直接操作,这就需要位带操作的帮助。 (2)哪些地址可以进行位带操作 上图中有两个区中实现了位带。其中一个是 SRAM 区的最低 1MB 范围(Bit band region),第二个则是片内外设区的最低 1MB 范围。 4)寄存器的地址计算 在ARM中所有的外设地址基本都是挂载在AHB或者APBx总线上,因此我们往往采用基地址+偏移地址+结构体的方式,来快速明了计算某一外设具体寄存器的地址,如图所示。 5)集成外设寄存器访问方法

    04-24 380浏览
正在努力加载更多...
广告