• 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浏览
  • STM32ADC自身的误差来源剖析

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

    06-06 87浏览
  • 如何快速评估一款MCU是否能跑系统RTOS?

    最近有朋友在后台中私信我,说现在做项目的时候有时候总是会考虑要不要用RTOS,或者怎么考量什么时候该用RTOS?

    05-28 4070浏览
  • 为啥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浏览
  • 一文搞懂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浏览
  • 单片机控制按键依次点亮8只发光二极管

    目录一、实验要求二、Proteus仿真软件画原理图三、Keil编程软件编写程序四、实验结果(一)仿真结果(二)

    04-08 432浏览
  • VCU、ECU、MCU电池BMS图解

    新能源汽车中的各种控制器主要包括:整车控制器(VCU)、发动机控制器(ECU)、电机控制器(MCU)和电池管理系统(BMS)。 新能源汽车的三电技术,包括电池、电驱和电控。电池部分阐述了动力电池系统的构成;电驱部分讲解了传动机构、电机和电机控制器的功能;一、整车控制器(VCU) 1. 功能 1.1 驱动系统控制 1.2 整车能量管理和优化 1.3 整车通信和网络管理 1.4 故障处理与诊断 1.5 汽车状态显示 2. 工作模式 2.1 自检模式 2.2 启动模式 2.3 起步模式 2.4 行驶模式 2.5 制动模式 2.6 停车模式 2.7 故障模式 2.8 充电模式 整车域控制器(VCU)是整车控制的核心控制器,通过汽车总线或者硬线,实现对电池系统、电驱系统、热管理系统等的管理,具体包括档位、加速踏板、制动踏板的控制,根据实时的动力电池电量,计算出需要输出的扭矩控制,整车的低压、高压的上下电、能量回收等控制。 VCU的内部结构简图如下 二、电子控制单元(ECU) Engine Control Unit即发动机控制单元,特指电喷发动机的电子控制系统。 后来随着电子汽车的迅速发展,ECU的定义变成了Electronic Control Unit,即电子控制单元,泛指汽车上所有电子控制系统。 1. ECU基本组成 ECU和普通的单片机一样,由微控制器(MCU)、存储器(ROM、RAM)、输入/输出接口(I/O)、模数转换器(A/D)以及整形、驱动等大规模集成电路组成。 微控制器(MCU)是汽车电子控制单元ECU的核心,以CPU为核心,是集成在一块芯片上的微型计算机。ECU是包括微控制器和相关外围接器件的电路板的总称,是微控制器在汽车的应用系统。 2. ECU的作用 参数控制 故障自诊断和保护功能 3. ECU的工作原理 4. 常见的ECU的类型 ECU的控制范围已经扩张到巡航控制、灯光控制 、安全气囊控制、悬架控制 、燃油加热控制、排气控制、制动控制、EGR和增压压力控制等。 1. EMS(Engine Mangement System)发动机管理系统 2. TCU(Transmision Control Unit)自动变速箱控制单元 3. BCM(Body Control Module)车身控制模块 4. ESP(Electronic Stability Program)车身电子稳定控制系统,车身电子稳定控制系统 5. BMS(Battery Management System)电池管理系统 6. VCU(Vehicle Control Unit)整车控制器三、电机控制器(MCU) MCU是新能源汽车特有的核心功率电子单元,通过接受VCU的车辆行驶控制指令,控制电机输出指定的扭矩和转速,驱动车辆行驶。实现把动力电池的直流电能转换为所需的高压交流电、并驱动电机本体输出机械能。 MCU具有电机系统故障诊断保护和存储功能;MCU由外壳及冷却系统、功率电子单元、控制电路、底层软件和控制算法软件组成四、 电池管理系统(BMS) 通过BMS实现对电芯的管理,以及与整车的通讯及信息交换;BMS能够提高电池的利用率,防止电池出现过充电和过放电,延长电池的使用寿命,监控电池状态

    03-31 506浏览
正在努力加载更多...
广告