第三章 硬件资源详解
1)实验平台:正点原子 ATK-DFPGL22G开发板
2) 章节摘自【正点原子】ATK-DFPGL22G之FPGA开发指南_V1.0
3)购买链接:https://detail.tmall.com/item_o.htm?id=692712955836
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz-PGL22G.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)FPGA技术交流QQ群:435699340
1.1.1 EEPROMEEPROM (Electrically Erasable ProgammableRead Only Memory)即电可擦除可编程只读存储器,是一种常用的非易失性存储器(掉电数据不丢失),也常在嵌入式领域中作为数据的存储设备,在物联网及可穿戴设备等需要存储少量数据的场景中也有广泛应用。 FPGA开发板板载的EEPROM是Atmel公司的AT24C64,使用I2C接口进行通信,该芯片的容量为64Kb,对于一般应用来说是足够了。驱动该EEPROM只需要用到两个IO。FPGA与AT24C64连接框图如下图所示: EEPROM硬件原理图如下图所示: 这里我们把A0~A2均接地,对AT24C64来说也就是把地址位设置成了0了,写代码的时候要注意这点。IIC_SCL接在FPGA的E2引脚,IIC_SDA接在FPGA的E1引脚,另外AT24C64采用IIC协议进行数据的读写,而IIC的串行时钟线SCL和数据线SDA均是开漏的,所以需要接上拉电阻。
1.1.2 实时时钟FPGA开发板板载了一个实时时钟RTC,实时时钟芯片采用NXP公司的PCF8563,可以提供年月日时分秒、星期以及日历功能。数字时钟一般用于给系统提供时间功能。PCF8563与FPGA之间的连接框图如下图所示: 通过框图可以看出实时时钟和EEPROM是共用一组管脚的,共有两组电源选择,分别时开发板上的3.3V电源和纽扣电池。
其电路原理图如下图所示: PCF8563需要外接一个32.768KHz的无源时钟,采用直接供电(VCC3.3)和备用电源供电两种供电方式。PCF8563采用IIC协议进行通信,与EEPROM共用IIC引脚。为了开发板掉电以后实时时钟还可以正常运行,还需要配一个电池给PCF8563供电,图中为BAT1为电池座,我们将纽扣电池(型号CR1220,电压为3.3V)放入BAT1插座以后,当系统掉电后,纽扣电池还可以继续给PCF8563供电。原理图中的BAT54C是一款正向电压为320mV的半导体二极管,防止3.3V和电池互相导通。
1.1.3 红外接收头FPGA开发板板载了一个红外接收头,电路图如下图所示: HS0038是一个通用的红外接收头,几乎可以接受市面上所有红外遥控器的信号,有了它就可以用红外遥控器来控制开发板了。REMOTE_IN为红外接收头输出的信号,既FPGA的红外输出信号。
1.1.4 单总线接口FPGA开发板板载了一个单总线接口,电路原理图如下图所示: 该接口支持DS18B20(温度传感器)/DHT11(湿度传感器)等单总线传感器。图中1WIRE_DO信号是传感器的数据线。
1.1.5 以太网接口(RJ45)FPGA开发板板载了一个以太网PHY芯片,型号为YT8511。用户可以使用FPGA的逻辑资源来实现一个以太网MAC层软逻辑,可以通过编写Verilog代码来实现。PHY和FPGA芯片的连接框图如下图所示: 电路原理图如下图所示: YT8511芯片支持10/100/1000Mbps网络传输速率,通过RGMII接口跟FPGA端的IO进行数据通信,并支持通过MDIO总线进行PHY寄存器的管理。
FPGA开发板载了一个自带网络变压器的RJ45插座,它们能够满足高带宽通信的需求,比如,可以使用网线连接到电脑,来与电脑上位机进行通信。
1.1.6 USB串口FPGA开发板载了一个UART转USB接口的转换芯片,一般用于串口通信,也可以用来在程序调试的时候打印信息,下图是其与FPGA之间的连接框图: 其电路原理图如下图所示: USB转串口,我们选择的是CH340C,是国内芯片公司南京沁恒的产品。USB_UART是一个TYPE_C座,提供CH340C和电脑通信的接口,同时可以给开发板供电,VUSB就是来自电脑USB的电源,USB_UART是本开发板的可选供电口。
1.1.7 OLED/摄像头模块接口FPGA开发板板载了一个OLED/摄像头模块接口,电路原理图如下图所示: 图中的OLED/摄像头接口可以用来连接正点原子OLED模块或者正点原子摄像头模块,正点原子摄像头模块支持OV7725、OV5640和其他类似接口的摄像头。
1.1.8 MIPI DSI接口MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准,其中液晶屏使用的MIPI接口称为DSI。DSI主要应用于手机行业,比如手机处理器与液晶屏的连接,MIPI接口以差分对形式进行时钟和数据的传输,相比于传统的并行接口,数据传输速度更快、抗干扰性更强,可以支持更高分辨率和刷新率的屏幕。
开发板板载了一个MIPIDSI接口,其原理图如下图所示: MIPI DSI一般采用1~4对差分线传输数据,由上图可知,ATK-DFPGL22G开发板采用的是4lane的方式,即通过4对差分数据线传输数据(MIPI_DSI_D0_P/N~MIPI_DSI_D3_P/N),而一对差分时钟线用于对数据进行同步(MIPI_DSI_CLK_P/N),理论上支持最大的分辨率为1080P。此外,图中包含CTP的端口用于实现触摸的功能,其接口和并行RGB LCD实现触摸的接口一样,都是采用的IIC接口。
1.1.9 Micro SD卡接口FPGA开发板板载了一个Micro SD卡(也叫TF卡),电路原理图如下图所示: 上图中的SD_CD信号用于Micro Card的热插拔检测,当插上Micro Card时,SD_CD信号会被拉低。我们可以选择1位SDIO方式,也可以选择四位。若采用4位SDIO方式驱动,理论上最大速度可以达到24MB/S,非常适合需要高速存储的情况。
1.1.10 QSPIFLASHFPGA开发板板载的SPI FLASH的连接框图:其型号为N25Q128,存储容量为128Mbit(16M字节),采用SPI协议和FPGA进行通信。QSPI Flash可用于存储FPGA芯片的配置数据,实现程序固化,以保证FPGA在重新上电后仍能继续工作。 其电路图如下: 1.1.11 ATK模块接口FPGA开发板板载了一个ATK模块接口,电路原理图如下图所示: 如图所示,P4是一个1*6的排母座,可以用来连接正点原子开发的“ATK-USB-UART 模块”或者其他ATK接口的外设模块。当连接“ATK-USB-UART 模块”时,则实现UART串口通信功能。其中,UART2_TX和UART2_RX连接到了FPGA的IO口上。
1.1.12 HDMI接口FPGA开发板板载高清晰度多媒体接口HDMI(High Definition Multimedia Interface,HDMI)接口,可以连接显示器用来实现图片和视频的显示。开发板FPGA通过差分IO直接连接到HDMI接口的差分信号和时钟,通过FPGA逻辑实现TMDS信号的差分转并行和编解码,实现数字视频输入和输出的传输解决方案,最高支持1080P的输出功能。
其与FPGA之间的连接框图如下图所示: 其电路原理图如下所示: 1.1.13 DDRSDRAM存储器FPGA板载一片2Gbit(256MB)的DDR3内存,芯片型号为NT5CB128M16,速率可以高达800Mhz。该DDR3最大可以提供800M*16=12.8Gbps带宽。DDR3连接到FPGA的BANK L1与BANK L2上,供电电压为1.35V。原理图如下图所示: 另外,DDR3由于速度高且是双倍速率采样,所以硬件设计时需要严格考虑信号完整性,开发板在原理图设计、PCB布线和PCB加工时候就充分考虑了匹配电阻/终端电阻,走线阻抗控制,走线等长控制,保证DDR3的高速稳定的工作。
1.1.14 ADC数模转换器Logos系列FPGA产品提供了ADC资源每个ADC带有12个通道,其中有10个模拟输入引脚与GPIO复用,另2个是专用模拟输入引脚,这12个通道的扫描方式由FPGA灵活控制,用户可以通过用户逻辑读写ADC的控制寄存器,配置ADC的工作模式和通道选择等,通过读ADC的状态寄存器监测芯片温度和供电电压,也可以用来测量外部的模拟电压信号。ADC模块接口电路原理如下图所示: 上图中的RV1相当于一个滑动变阻器,通过调节连接RV1阻值的大小改变外部输入的模拟电压的大小。
1.1.15 IO扩展口FPGA开发板板载两个42PIN的IO的扩展口,位于开发板的边缘位置,其原理图如下图所示: 该扩展口排针规格是2*21Pin,其中包括38个IO口、1个+5V、2个GND。P2扩展口编号40的引脚连接的FPGA_ IOR1_VCC的电压可以根据P6模块的跳帽连接来调节,跳帽连接P6模块的1与2引脚, FPGA_ IOR1_VCC连接的电压是1.8V,跳帽连接P6模块的2与3引脚, FPGA_ IOR1_VCC连接的电压是3.3V。它可以用来连接不同的功能模块。 该扩展口排针规格是2*21 Pin,其中包括38个IO口、1个+3.3V、1个+5V、2个GND。它可以用来连接不同的功能模块。例如,正点原子开发的高速AD/DA模块、双目摄像头模块等。
1.2 开发板使用注意事项为了让大家更好的使用开发板,我们在这里总结该开发板使用的时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。
USB 供电电流最大 500mA,且由于存在导线电阻,供到开发板的电压,一般都不会有 5V,如果使用了很多大负载外设,比如 4.3 寸屏、 7 寸屏、摄像头模块等,那么可能引起 USB 供电不足,所以开发板如果连接大负载模块的场合,或者同时用到多个模块的时候,建议大家使用一个电源适配器供电。
当你想使用某个 IO 口用作其他用处的时候,请先看看开发板的原理图,该 IO 口是否有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干扰,先确定无干扰,再使用这个 IO。
当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重新插试试),如果还不行,可以通过串口看看 LCD ID 是否正常,再做进一步的分析。
至此,本手册的实验平台FPGA的硬件部分就介绍完了,了解了整个硬件对我们后面的学习会有很大帮助,有助于后面的管脚约束(分配),在编写程序的时候,可以事半功倍,希望大家细读!另外正点原子开发板的其他资料及教程更新,都可以在技术论坛www.openedv.com/forum.php下载到,大家可以经常去这个论坛获取更新的信息。
1.3 FPGA的学习方法PangoLogos系列 FPGA 作为目前热门国产的 FPGA 芯片,正在被越来越多的公司选择使用。学习 FPGA 的朋友也越来越多,初学者可能会认为 FPGA 很难学,以前只学过 51,或者甚至连 51 都没学过的,一看到 FPGA就懵了。其实,万事开头难,只要掌握了方法,学好 FPGA,还是非常简单的,这里我们总结学习的几个要点:
1. 一款实用的开发板。 这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板在手,什么东西都可以直观的看到,效果不是仿真能比的。但开发板不宜多,多了的话连自己都不知道该学哪个了,觉得这个也还可以,那个也不错,那就这个学半天,那个学半天,结果学个四不像。倒不如从一而终,学完一个再学另外一个。
2. 掌握方法,勤学慎思。 FPGA不是妖魔鬼怪,不要畏难,FPGA的学习和普通单片机一样,基本方法就是:
1) 了解 FPGA 的基本结构。 学习 FPGA 之前需要先对 FPGA 的基本结构和其功能有个大概的了解,如时钟管理单元PLL、 FIFO等。需要知道时钟管理单元是用来产生不同频率的时钟,如使用 SD 卡时要产生频率都是 50Mhz,但两个时钟相位相差 180 度的时钟; FIFO 用于数据的缓存和异步时钟域数据的传递等。
2) 了解 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 语言一样简单。
3)多思考,多动手
所谓熟能生巧,先要熟,才能巧。如何熟悉?这就要靠大家自己动手,多多练习了,光看或说是没什么太多用的。只有在使用 FPGA 的过程中,才会一点点的熟悉,也只有动手实练, 才能对 FPGA 有切实的感受。
熟悉了之后,就应该进一步思考,也就是所谓的巧了。我们提供了几十个例程,供大家学习,跟着例程走,无非就是熟悉FPGA 的过程,只有进一步思考,才能更好的掌握 FPGA,也即所谓的举一反三。例程是死的,人是活的,所以,可以在例程的基础上,自由发挥,实现更多的其他功能,并总结规律,为以后的学习和使用打下坚实的基础,如此,方能信手拈来。
所以,学习一定要自己动手,光看视频,光看文档,是不行的。举个简单的例子,你看视频,教你如何煮饭,几分钟估计你就觉得学会了。实际上你可以自己测试下,是否真能煮好?机会总是留给有准备的人,只有平时多做准备,才可能抓住机会。 只要以上三点做好了,学习 FPGA 基本上就不会有什么太大问题了。如果遇到问题,可以在我们的技术论坛:开源电子网:www.openedv.com/forum.php提问,论坛 FPGA 板块有各种主题,很多疑问已经有网友提过了,所以可以在论坛先搜索,很多时候,就可以直接找到答案了。论坛是一个分享交流的好地方,是一个可以让大家互相学习,互相提高的平台,所以有时间,可以多上去看看。
|