本帖最后由 正点原子运营 于 2023-3-11 14:56 编辑
第三章 硬件资源详解
1)实验平台:正点原子 DFZU2EG/4EV MPSoC开发板
2) 章节摘自【正点原子】DFZU2EG/4EV MPSoC之FPGA开发指南 V1.0
3)购买链接:https://detail.tmall.com/item.htm?id=692450874670
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz-MPSOC.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)FPGA技术交流QQ群:994244016
3.2.18 eMMCeMMC是非易失性NAND存储器,俗称电子硬盘,开发板板载的eMMC芯片型号为KLM8G1GETF,存储容量为8GB,能够满足PS端大容量非易失性的存储需求,如存储ARM的应用程序、系统文件以及其它的用户数据文件。 MPSoC与eMMC之间的连接框图如下图所示: eMMC连接到MPSoC芯片PS部分的BANK500 MIO口上,其原理图如下图所示: 3.2.19 风扇接口MPSoC在工作的时候会产生大量的热量,因此在开发板上预留了一个散热扇的接口如下图所示: 从上图中可以看到,散热扇的电源由12V提供,并且通过肖特基二级管与AO3400 MOS场效应管组成了一个开关电路,开关控制端FAN_PWM连接到MPSoC的IO上用来控制风扇的开启和关闭。
3.2.20 PL端按键DFZU2EG/4EV MPSoC开发板上PL端板载两个功能按键,如下图所示: 图中“PL_KEY1”和“PL_KEY2”为PL端的功能按键输入。它们都外接上拉电阻,未按下时按键端口输出高电平,按下时输出低电平。按键作为最简单的输入设备,适合在需要给系统输入控制信号的场合使用。
3.2.21 PS端按键DFZU2EG/4EV MPSoC开发板上PS端板载两个功能按键,如下图所示: 图中“PS_KEY1”和“PS_KEY2”为PS端的功能按键输入。它们都外接上拉电阻,未按下时按键端口输出高电平,按下时输出低电平。按键作为最简单的输入设备,适合在需要给系统输入控制信号的场合使用。
3.2.22 PL端LEDDFZU2EG/4EV MPSoC开发板PL端板载两个LED,在调试代码的时候,使用LED来指示程序执行状态,是一个很好的辅助调试方法。其电路原理图如下图所示: 从上图中可以看出LED是阴极接地,阳极连接MPSoC主控芯片的IO,所以高电平点亮LED,低电平熄灭LED。
3.2.23 PS端LEDDFZU2EG/4EV MPSoC开发板PS端板载两个功能LED,如下图所示: 从上图中可以看出LED是阴极接地,阳极连接MPSoC主控芯片的IO,所以高电平点亮LED,低电平熄灭LED。
3.2.24 MIPI CSI接口开发板板载了一个MIPI CSI接口,用于连接MIPI摄像头,接口原理图如下图所示: MIPI CSI接口的差分信号(MIPI_LAN0_P/N、MIPI_LAN1_P/N、MIPI_LAN2_P/N、MIPI_LAN3_P/N和MIPI_CLK_P/N)连接至BANK65的HP IO上,其IO电平为1.2V;而MIPI接口的CAM_PWDN、CAM_CLK、CAM_RST连接至BANK66的IO上,其IO电平为1.8V,CAM_PWDN是摄像头的控制信号,CAM_CLK是作为摄像头的驱动时钟,CAM_RST是作为摄像头的复位信号。
3.2.25 PL配置完成指示灯开发板板载一颗PL配置完成指示灯,连接到了PL端的配置完成(DONE)信号,在PL端配置(下载程序)完成之后,该LED灯会被点亮。其原理图如下图所示: 从上图中可以看出,LED是阴极接地,阳极连接MPSoC主控芯片的FPGA_DONE IO和3.3V电压,当FPGA PL端没有配置完成的时候,FPGA_DONE IO保持低电平,此时LED灯不亮;当FPGA PL端配置完成,FPGA_DONE IO会拉高此时LED亮(绿色)。
3.2.26 电源指示灯开发板板载一颗POWER指示灯,用于指示开发板的通电状态,其原理图如下图所示: 电源指示灯很简单直接连接到3.3V电压上,当板子上电成功,电源指示灯就会亮起(蓝色)。
3.2.27 HDMI接口DFZU2EG/4EVMPSoC开发板板载高清晰度多媒体接口HDMI(High Definition Multimedia Interface,HDMI)接口,可以连接显示器用来实现图片和视频的显示。DFZU2EG/4EV MPSoC开发板通过PL侧的差分IO直接连接到HDMI接口的差分信号和时钟,通过FPGA逻辑实现TMDS信号的差分转并行和编解码,实现数字视频输入和输出的传输解决方案,最高支持1080P的输出功能。
其与MPSoC之间的连接框图如下图所示: 当开发板作为HDMI主设备时,HDMI接口外接显示设备,HPD(hot plug detect)热插拔信号作为输入。开发板在作为HDMI主设备时,需要提供给HDMI显示设备一个+5V的电源。另外HMDI主设备会通过IIC总线来读取HDMI显示设备的设备信息。 其电路原理图如下所示: 需要说明的是,HDMI的IIC引脚是5V电平的,需要将其转换为PL端所需的3.3V电压。电平转换电路如下图所示: 图 3.2.62 HDMI的IIC电平转换电路
其中,IIC3_SCL和IIC3_SDA连接到MPSoC PL侧的IO口上,HDMIB_SCL_LS和HDMIB_SDA_LS连接到HDMI插座上。
当总线空闲即IIC3_SCL和IIC3_SDA都被MPSoC驱动为高电平时,MOS管截止,HDMIB_SCL_LS和HDMIB_SDA_LS也被上拉电阻R179和R182上拉到+5V的高电平。
当IIC3_SCL或IIC3_SDA被MPSoC驱动为低电平时,MOS管导通,此时HDMIB_SCL_LS或HDMIB_SDA_LS也被下拉到了GND。
若HDMIB_SDA_LS需要向MPSoC发送低电平时,HDMIB_SDA_LS为低,MOS管内部二极管导通IIC1_SDA被下拉到了低电平。以此实现了双向电平转换的功能。
3.2.28 WIRELESS接口DFZU2EG/4EV MPSoC开发板板载一个WIRELESS接口,原理图如下: WIRELESS接口其实就是一个扩展口,它可以连接正点原子NRF24L01无线模块,实现远程无线射频通信。
3.2.29 ATK-MODULEDFZU2EG/4EVMPSoC开发板板载了一个ATK模块接口,电路原理图如下图所示: 如图所示,J8是一个1*6的排母座,可以用来连接正点原子开发的“ATK-USB-UART模块”或者其他ATK接口的外设模块,比如:蓝牙串口模块、GPS模块、MPU6050模块等。当连接“ATK-USB-UART模块”,则实现UART串口通信功能。
3.2.30 PL端复位DFZU2EG/4EV MPSoC开发板PL端板载一个复位按键可以对整个PL端进行复位操作,如下图所示: 复位按键一端接地一端上拉,并且上拉的那一端还连接到了MPSoC PL端的复位IO上,因此复位按键在没有按下时保持高电平,按下则低电平,所以PL端的复位是低电平有效。
3.2.31 PS端复位DFZU2EG/4EV MPSoC开发板PS端同样板载一个复位按键,如下图所示: PS端的复位按键比较特殊,它不是直接连接到FPGA的IO上,而是连接到了电源芯片上,当我们按下复位按键时,会通过断电的方式给MPSoC进行复位。
3.2.32 TF卡接口DFZU2EG/4EVMPSoC开发板板载了一个Micro SD(TF)卡接口。Micro SD卡一般用于存储MPSoC芯片的BOOT程序,Linux操作系统内核, 文件系统以及其它的用户数据文件。 其电路原理图如下图所示: SD卡的引脚都是直接连接到MPSoC芯片的MIO上的,然后通过MPSoC内部的SD控制器硬核去操控,需要注意的是,上图中的SD_CD信号用于Micro Card的热插拔检测,当插上Micro Card时,CD信号会被拉低。
3.2.33 QSPI FLASH开发板板载一颗QSPIFlash芯片,型号为W25Q256,存储容量为256Mbit(32M字节),采用QSPI协议和FPGA进行通信。QSPI Flash可用于存储MPSoC芯片的启动镜像数据,包括PS端的程序镜像和PL端的配置镜像,以保证MPSoC在重新上电后仍能继续工作。 原理图如下所示: 需要说明的是,开发板预留了两个FLASH接口,但我们实际上只使用了一片Flash(只焊接了一片)。
3.2.34 RGB888 TFT-LCDTFT-LCD是一种液晶显示屏,它采用薄膜晶体管(TFT)技术提升图像质量,如提高图像亮度和对比度等。相比于传统的CRT显示器,TFT-LCD有着轻薄、功耗低、无辐射、图像质量好等诸多优点,因此广泛应用于电视机、电脑显示器、手机等各种显示设备中。DFZU2EG/4EV MPSoC开发板板载的RGB LCD模块接口(FPC接口)电路如下图所示: 图 3.2.69 RGB LCD 模块接口
图中,RGBLCD是RGB LCD液晶接口,采用RGB888数据格式,最大支持256*256*256=1677W色颜色显示,并支持触摸屏(支持电阻屏和电容屏)。该接口仅支持RGB接口的液晶(不支持MCU接口的液晶),目前正点原子的RGB接口LCD模块有:4.3寸(ID:4384 , 800*480)、7寸(ID:7084, 800*480、ID:7016,1024*600)和10寸(ID:1018)等尺寸可选。
图中的T_MISO/IIC2_SDA/T_PEN/T_CS/IIC2_SCL用于实现对液晶触摸屏的控制(支持电阻屏和电容屏),连接到MPSoC PL端的IO的触摸屏的4个信号如图中的T_PEN、T_CS、IIC2_SCL、IIC2_SDA所示,它们也可以使用PS端的EMIO来连接到PS系统。LCD_BL用于控制LCD的背光,LCD_BL为1表示打开背光。
3.3 开发板使用注意事项为了让大家更好的使用DFZU2EG/4EV MPSoC开发板,我们在这里总结该开发板使用的时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。
1.当你想使用某个IO口用作其他用处的时候,请先看看开发板的原理图,该IO口是否有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干扰,先确定无干扰,再使用这个IO。
2.开发板上的拨码开关需要拨到对应的模式才能启动开发板,如果模式和启动方式不对应会造成代码下载失败或者板子启动不起来。
3.当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重新插试试),如果还不行,可以通过串口看看LCD ID是否正常,再做进一步的分析。
至此,本手册的实验平台MPSoC FPGA的硬件部分就介绍完了,了解了整个硬件对我们后面的学习会有很大帮助,有助于后面的管脚约束(分配),在编写程序的时候,可以事半功倍,希望大家细读!另外正点原子开发板的其他资料及教程更新,都可以在技术论坛www.openedv.com/forum.php下载到,大家可以经常去这个论坛获取更新的信息。
3.4 MPSoC的学习方法MPSoC作为目前热门的SOC类处理器,正在被越来越多的公司选择使用。学习MPSoC的朋友也越来越多,初学者可能会认为MPSoC很难学,以前只学过51,或者甚至连51都没学过的,一看到MPSoC就懵了。其实,万事开头难,只要掌握了方法,学好MPSoC,还是非常简单的,这里我们总结学习MPSoC的几个要点:
1. 一款实用的开发板。 这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板在手,什么东西都可以直观的看到,效果不是仿真能比的。但开发板不宜多,多了的话连自己都不知道该学哪个了,觉得这个也还可以,那个也不错,那就这个学半天,那个学半天,结果学个四不像。倒不如从一而终,学完一个再学另外一个。
2. 掌握方法,勤学慎思。 MPSoC不是妖魔鬼怪,不要畏难,基本方法就是:
a)了解MPSoC的基本结构。 学习MPSoC之前需要先对MPSoC基本结构和其功能有个大概的了解,如PS、AXI总线、锁相环PLL、FIFO等。需要知道PLL是用来产生不同频率的时钟,如使用HDMI时需要生成75MHz的时钟;FIFO用于数据的缓存和异步时钟域数据的传递等。
b)了解Verilog HDL基本语法 没有软件的硬件就如同行尸走肉一般。软件是硬件的灵魂,硬件是软件的舞台。好的软件设计才能发挥硬件的性能,而软件的精髓在于代码。学习FPGA也是这样,Verilog HDL做为一种硬件描述语言,是对数字电路的一种描述,而数字电路是并行工作的,因而在编写Verilog HDL时要有并行的思想,不同于软件设计语言,软件设计语言是由CPU统一进行处理,一条指令一条指令的串行运行,所以软件设计语言是基于串行的设计思想,因而在写Verilog HDL代码的时候要注意这种差别。另外对于Verilog HDL的基本语法是务必要掌握的,如一般常用的module/endmodule、input/output/inout、wire/reg、begin/end、posedge/negedge、always/assign、if/else、case/default/endcase/parameter/localparam等关键字要清楚它们的作用和区别。掌握了Verilog HDL的基本语法和Verilog HDL的并行设计思想后,会觉得Verilog HDL和C语言一样简单。
c)MPSoC PS的学习 学习MPSoC PS首先要了解C语言的基本语法。然后了解PS端基本的系统框架和外设,例如PS端架构、片内互连、AXI总线、DDR控制器等等。最关键的是PS端的C程序。软件系统可以被认为是建立于基于硬件的系统上的一个栈,或者说是一系列层,从底至上依次是基础硬件系统(来自Vivado的自定义硬件)、板级支持包、Operating System、软件应用。
初学者可以多看看官方的文档和资料,对于PS端的软件,xilinx提供了丰富的库函数,很多时候用户直接调用调用即可,读者要学会利用这些库函数。遇到问题时,读者可以借助xilinx的SDK开发环境中的各种调试功能来定位错误,以帮助解决问题。
3. 多思考,多动手。 所谓熟能生巧,先要熟,才能巧。如何熟悉?这就要靠大家自己动手,多多练习了,光看或说是没什么太多用的。只有在使用MPSoC的过程中,才会一点点的熟悉,也只有动手实练,才能对FPGA有切实的感受。
熟悉了之后,就应该进一步思考,也就是所谓的巧了。我们提供了几十个例程,供大家学习,跟着例程走,无非就是熟悉MPSoC的过程,只有进一步思考,才能更好的掌握MPSoC,也即所谓的举一反三。例程是死的,人是活的,所以,可以在例程的基础上,自由发挥,实现更多的其他功能,并总结规律,为以后的学习和使用打下坚实的基础,如此,方能信手拈来。
所以,学习一定要自己动手,光看视频,光看文档,是不行的。举个简单的例子,你看视频,教你如何煮饭,几分钟估计你就觉得学会了。实际上你可以自己测试下,是否真能煮好?机会总是留给有准备的人,只有平时多做准备,才可能抓住机会。
只要以上三点做好了,学习MPSoC基本上就不会有什么太大问题了。如果遇到问题,可以在我们的技术论坛:开源电子网:www.openedv.com/forum.php提问,论坛FPGA板块有各种主题,很多疑问已经有网友提过了,所以可以在论坛先搜索一下,很多时候,就可以直接找到答案了。论坛是一个分享交流的好地方,是一个可以让大家互相学习,互相提高的平台,所以有时间,可以多上去看看。 |