|
本帖最后由 正点原子 于 2021-1-25 18:42 编辑
1)实验平台:正点原子达芬奇FPGA开发板
2)购买链接:https://detail.tmall.com/item.htm?id=624335496505
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz_dafenqi.html
4) 正点原子官方B站:https://space.bilibili.com/394620890
5)对正点原子FPGA感兴趣的同学可以加群讨论:905624739 点击加入:
第三章硬件资源详解
本章我们将向大家详细介绍达芬奇开发板各部分的硬件原理图,让大家对达芬奇开发板的各部分硬件原理有个深入理解,并向大家介绍开发板的使用注意事项,为后面的学习做好准备。
本章包括以下几个部分:
33.1达芬奇FPGA开发板的IO分配
3.2达芬奇FPGA开发板原理图详解
3.3达芬奇FPGA开发板使用注意事项
3.4FPGA的学习方法
3.1达芬奇FPGA开发板IO分配
达芬奇FPGA开发板的主控芯片选择的是Artix-7系列的XC7A35TFGG484I,XC7A35T IO Bank包括Bank 13、Bank 14、Bank 15、Bank 16、Bank 34和Bank 35,其中Bank 13为XC7A100T独有Bank。XC7A35TFGG484I总共484个IO,其中250个为可用IO。了解器件的IO分配方式,有助于我们在硬件设计时根据器件的一些约束,对设计进行合理的IO分配,减少硬件出错的可能性。
3.1.1FPGA BANK原理图
图 3.1.1 BANK14原理图
图 3.1.2 BANK15原理图
图 3.1.3 BANK16原理图
图 3.1.4 BANK35原理图
图 3.1.5 BANK34管脚原理图
通过每个Bank原理图可以看出我们使用了XC7A35TFGG484I几乎所有的IO,把该芯片的硬件资源发挥到了极致。值得注意的是,BANK35完全提供给DDR3使用,该BANK电压使用1.5V。
3.1.2管脚分配
表 3.1.1 管脚分配
3.2达芬奇FPGA开发板原理图详解
3.2.1开发板电源
达芬奇整个板子的电源来自电源适配器的12V供电电压,经过DC-DC芯片(型号为JW50690T_6)之后,转变为系统+5V电压,再经过电源开关后,给系统供电。USB Slave接口的+5V也可以用来给系统供电,但是需要特别注意,由于USB接口的驱动能力有限,所以不能驱动供电电流需求大的器件如LCD,这种情况下,请改用电源适配器供电。如下图所示。系统+5V电压用于电压转换,经过开关电源芯片MP2143DJ-LF-Z,分别输出1.0V、1.8V、1.5V、和3.3V电压。其中使用+3.3V电压供电是最多的,包括EEPROM、RTC、KEY、触摸按键、LED、BEEP、摄像头、TF卡、以太网、HDMI、USB、XADC、数码管、BANK34、BANK14;1.0V供给了VCCINT、VCCBRAM;1.8V供给VCCAUX;1.5V供给DDR3使用。另外可以看到,系统+5V电压经过LDO(线性稳压器)芯片SPX3819M5 L3-3,输出+3.3V,这个3.3用于给BANK15、BANK16供电。
图 3.2.1 达芬奇开发板电源拓扑
12V电源适配器供电的电源接口原理图如下图所示:
图 3.2.2 电源适配器供电电源接口
DC_IN用于外部直流电源输入,输入电压(12V)经过DC-DC芯片转换为5V电源输出,其中D4是防反接二极管,避免外部直流电源极性接反的时候,烧坏开发板。
当然了,达芬奇开发板的供电电源即可以从电源适配器供电,又可以通过USB供电,无论通过哪种方式供电,都经过电源开关K1控制是否对开发板供电,其原理图如下图所示:
图 3.2.3 电源按键开关
VBTN为电源适配器输入的12V电压经电源转换芯片转换后得到的5V电压,VUSB为通过USB 接口输入的电压。
下面是+5V电压经过MP2143DJ-LF-Z转换为其他电压的原理图。请注意,不同的电压产生是有先后顺序的,原理是拿先产生的电压作为后产生电压的使能。如下图所示。
图 3.2.4 开关电源电压转换电路
可以看到电压产生的顺序是VCCINT(1.0V)->VCCBRAM(1.0V)->VCCAUX-(1.8V)>VCCO(1.5V和3.3V),另外使用了一个LED灯PWR用来指示3.3V的产生。如上文所讲,3.3V使用最广泛,所有功耗也相对最大,所以在这里增加了一个LDO,也用它来产生3.3V,如下图所示:
图 3.2.5 LDO 3.3V电压转换电路
除了这些之外,达芬奇开发板还板载了两组5V和3.3V输入输出接口,其原理图如下图所示:
图 3.2.6 5V和3.3V输入输出接口
图中,VOUT1和VOUT2分别是3.3V和5V的电源输入输出接口,有了这2组接口,我们可以通过开发板给外部提供3.3V和5V电源了,虽然功率不大(最大1000ma),但是一般情况都够用了,大家在调试自己的小电路板的时候,有这两组电源还是比较方便的。同时这两组端口,也可以用来由外部给开发板供电。
3.2.2时钟输入
达芬奇FPGA开发板提供给FPGA的时钟晶振为50M,电路如下图所示:
图 3.2.7 时钟晶振电路
3.2.3JTAG 接口
图 3.2.8 JTAG 接口电路
这里,我们采用的是10脚的JTAG接法,使用FPGA TCK、FPGA TDO、FPGA TDI、FPGA TMS四个引脚来对FPGA进行下载测试。
3.2.4按键电路
按键的电路原理图如下图所示:
图 3.2.9 复位、按键电路
RESET为复位按键,按下时低电平复位。KEY0~KEY3为普通按键输入,外接上拉电阻,未按下时按键端口输出高电平,按下时输出低电平。按键作为最简单的输入设备,适合在需要给系统输入控制信号的场合使用。
3.2.5LED
达芬奇FPGA开发板板载了4个LED,在调试代码的时候,使用LED来指示程序执行状态,是一个很好的辅助调试方法。电路原理图如下图所示:
图 3.2.10 LED电路
四个LED均由FPGA管脚直接驱动,当FPGA输出高电平时点亮对应的LED灯。输出低电平时,熄灭LED灯。
3.2.6有源蜂鸣器
蜂鸣器是现代常用的一种电子发声器,主要用于产生声音信号。蜂鸣器(Buzzer)常用于计算机、打印机、报警器、电子玩具等电子产品中。常用的蜂鸣器有两种:有源蜂鸣器和无源蜂鸣器,这里的有“源”不是电源,而是震荡源,有源蜂鸣器内部带有震荡源,所以有源蜂鸣器只要通电就会叫。无源蜂鸣器内部不带震荡源,直接用直流电是驱动不起来的,需要2K-5K的方波去驱动。
达芬奇FPGA开发板板载了一个有源蜂鸣器,电路原理图如下图所示:
图 3.2.11 有源蜂鸣器
图中通过一个NPN型三极管S8050来驱动蜂鸣器,BEEP连接到FPGA开发板的IO,这个IO可以控制三极管Q1的导通。当BEEP输出高电平的时候Q1导通,相当于蜂鸣器的正极连接到+3.3V,蜂鸣器形成一个通路,因此蜂鸣器会鸣叫。同理,当BEEP输出低电平的时候Q1不导通,那么蜂鸣器就没有形成一个通路,因此蜂鸣器也就不会鸣叫。
3.2.7电容触摸按键
达芬奇FPGA开发板板载了一个电容触摸按键,触摸按键在稳定性、使用寿命、抗干扰能力等方面都优于传统的机械按键,被广泛应用于遥控器,便携电子设备,楼道电灯开关,各类家电控制面板等场景,达芬奇FPGA与触摸按键之间的连接框图如下图所示:
图 3.2.12 触摸按键连接框图
电路原理图如下图所示:
图 3.2.13 电容触摸按键
图中1K电阻是电容充电电阻,AR101是触摸按键专用驱动芯片,用于产生稳定无毛刺的信号。AR101的1脚TPAD信号就是处理后的IO信号。当用户触摸了触摸按键时,TPAD会变为高电平。用户不触摸按键时,TPAD信号为低电平。
3.2.8数码管
达芬奇FPGA开发板板载了6个共阳数码管,电路原理图如下图所示:
图 3.2.14 数码管
需要注意的是,这里是用PNP作为开关控制位选信号,由PNP三极管原理可知,当基极为低电平时,三极管导通,输出高电平;如对Q7而言,当SEL0_T为低电平时,选通数码管DIG1。
3.2.9RGB LCD 模块接口
TFT-LCD是一种液晶显示屏,它采用薄膜晶体管(TFT)技术提升图像质量,如提高图像亮度和对比度等。相比于传统的CRT显示器,TFT-LCD有着轻薄、功耗低、无辐射、图像质量好等诸多优点,因此广泛应用于电视机、电脑显示器、手机等各种显示设备中。达芬奇开发板板载的RGB LCD模块接口电路如下图所示:
达芬奇FPGA开发板板载的RGB LCD模块接口电路如下图所示:
图 3.2.15 RGB LCD模块原理图
图中,RGBLCD是RGB LCD液晶接口,采用RGB888数据格式,最大支持256*256*256=1677W色颜色显示,并支持触摸屏(支持电阻屏和电容屏)。该接口仅支持RGB接口的液晶(不支持MCU接口的液晶),目前正点原子的RGB接口LCD模块有:4.3寸(ID:4342 , 480*272和ID:4384 , 800*480)、7寸(ID:7084, 800*480和ID:7016,1024*600)和10.1寸(ID:1018, 1280*800)等尺寸可选。
图中的T_MISO/T_MOSI/T_PEN/T_CS/T_SCK用于实现对液晶触摸屏的控制(支持电阻屏和电容屏)。LCD_BL用于控制LCD的背光,LCD_BL为高表示打开背光。
3.2.10EEPROM
EEPROM (Electrically Erasable Progammable Read Only Memory)即电可擦除可编程只读存储器,是一种常用的非易失性存储器(掉电数据不丢失),也常在嵌入式领域中作为数据的存储设备,在物联网及可穿戴设备等需要存储少量数据的场景中也有广泛应用。
达芬奇板载的EEPROM是Atmel公司的AT24C64,使用I2C接口进行通信,该芯片的容量为64Kb,对于一般应用来说是足够了。驱动该EEPROM只需要用到两个IO。达芬奇FPGA与AT24C64连接框图如下图所示:
图 3.2.16 EEPROM连接框图
EEPROM硬件原理图如下图所示:
图 3.2.17 EEPROM原理图
这里我们把A0~A2均接地,对AT24C64来说也就是把地址位设置成了0了,写代码的时候要注意这点。IIC_SCL接在FPGA的R6引脚,IIC_SDA接在FPGA的T4引脚,另外AT24C64采用IIC协议进行数据的读写,而IIC的串行时钟线SCL和数据线SDA均是开漏的,所以需要接上拉电阻。
3.2.11实时时钟
达芬奇FPGA开发板板载了一个实时时钟RTC,实时时钟芯片采用NXP公司的PCF8563,可以提供年月日时分秒、星期以及日历功能。数字时钟一般用于给系统提供时间功能。PCF8563与FPGA之间的连接框图如下图所示:
图 3.2.18 RTC连接框图
通过框图可以看出实时时钟和EEPROM是共用一组管脚的,共有两组电源选择,分别时开发板上的3.3V电源和纽扣电池。
其电路原理图如下图所示:
图 3.2.19 实时时钟 RTC
PCF8563需要外接一个32.768KHz的无源时钟,采用直接供电(VCC3.3)和备用电源供电两种供电方式。PCF8563采用IIC协议进行通信,与EEPROM共用IIC引脚。为了开发板掉电以后实时时钟还可以正常运行,还需要配一个电池给PCF8563供电,图中为BAT1为电池座,我们将纽扣电池(型号CR1220,电压为3.3V)放入BAT1插座以后,当系统掉电后,纽扣电池还可以继续给PCF8563供电。原理图中的BAT54C是一款正向电压为320mV的半导体二极管,防止3.3V和电池互相导通。
3.2.12以太网接口(RJ45)
达芬奇FPGA开发板板载了一个以太网PHY芯片,型号为RTL8211FD。用户可以使用FPGA的逻辑资源来实现一个以太网MAC层软逻辑,可以通过编写Verilog代码来实现。PHY和FPGA芯片的连接框图如下图所示:
图 3.2.20 千兆以太网PHY芯片连接框图
电路原理图如下图所示:
图 3.2.21 以太网接口
RTL8211FD芯片支持10/100/1000Mbps网络传输速率,通过RGMII接口跟FPGA端的IO进行数据通信,并支持通过MDIO总线进行PHY寄存器的管理。
达芬奇板载了一个自带网络变压器的RJ45插座(HR911130C),它们能够满足高带宽通信的需求,比如,可以使用网线连接到电脑,来与电脑上位机进行通信。
3.2.13USB串口
达芬奇FPGA开发板载了一个UART转USB接口的转换芯片,一般用于串口通信,也可以用来在程序调试的时候打印信息,下图是其与FPGA之间的连接框图:
图 3.2.22 UART连接框图
其电路原理图如下图所示:
图 3.2.23 USB串口
USB转串口,我们选择的是CH340C,是国内芯片公司南京沁恒的产品。USB_UART是一个MiniUSB座,提供CH340C和电脑通信的接口,同时可以给开发板供电,VUSB就是来自电脑USB的电源,USB_UART是本开发板的可选供电口。
3.2.14USB 2.0接口
达芬奇FPGA开发板板载了一个FTDI公司的USB2.0驱动芯片FT232HL。如下图所示,FT232HL一端连接着MiniUSB接口,负责收发解析USB差分电平;另一端连接FPGA管脚,负责与FPGA的数据交互。FT232HL与FPGA之间的连接框图如下图所示:
图 3.2.24 FT232连接框图
图 3.2.25 USB2.0 Slave
值得注意的是EEPROM存储芯片93LC56用于存储FT232HL的配置信息。
3.2.15OLED/摄像头模块接口
达芬奇FPGA开发板板载了一个OLED/摄像头模块接口,电路原理图如下图所示:
图 3.2.26 OLED/摄像头模块接口
图中P2接口可以用来连接正点原子OLED模块或者正点原子摄像头模块。如果是OLED模块,则CMOS_PWDN和CMOS_XCLK不需要接(在板上靠左插即可),如果是摄像头模块,则需要用到全部引脚。
3.2.16Micro SD卡接口
达芬奇FPGA开发板板载了一个Micro SD卡(也叫TF卡),电路原理图如下图所示:
图 3.2.27 Micro SD卡接口
上图中的SD_CD信号用于Micro Card的热插拔检测,当插上Micro Card时,SD_CD信号会被拉低。我们可以选择1位SDIO方式,也可以选择四位。若采用4位SDIO方式驱动,理论上最大速度可以达到24MB/S,非常适合需要高速存储的情况。
3.2.17QSPI FLASH
达芬奇FPGA开发板板载的SPI FLASH的连接框图:其型号为N25Q128,存储容量为128Mbit(16M字节),采用SPI协议和FPGA进行通信。QSPI Flash可用于存储FPGA芯片的配置数据,实现程序固化,以保证FPGA在重新上电后仍能继续工作。
图 3.2.28 QSPI FLASH 连接框图
其电路图如下:
图 3.2.29 QSPI FLASH芯片
3.2.18ATK模块接口
达芬奇FPGA开发板板载了一个ATK模块接口,电路原理图如下图所示:
图 3.2.30 ATK 模块接口
如图所示,U4是一个1*6的排母座,可以用来连接正点原子开发的“ATK-USB-UART“模块”或者其他ATK接口的外设模块比如:蓝牙串口模块、GPS模块、MPU6050模块等。当连接“ATK-USB-UART 模块”时,则实现UART串口通信功能。其中,UART3_TX和UART3_RX连接到了FPGA的IO口上。
3.2.19XADC接口
达芬奇FPGA芯片内部集成了一个高速ADC模块,AD采样速率高达1Mbps,该XADC模块既可以测量FPGA芯片内部的温度和电压,也可以用来测量外部的模拟电压,测试外部模拟电压的范围是0~1V。达芬奇XADC接口其原理图如下图所示:
图 3.2.31 XADC接口
3.2.20HDMI接口
达芬奇板载两路高清晰度多媒体接口HDMI(High Definition Multimedia Interface,HDMI)接口,可以连接显示器用来实现图片和视频的显示。达芬奇开发板FPGA通过差分IO直接连接到HDMI接口的差分信号和时钟,通过FPGA逻辑实现HMDI信号的差分转并行和编解码,实现数字视频输入和输出的传输解决方案,最高支持1080P的输入和输出功能。当开发板作为HDMI主设备时,HDMI接口外接显示设备,HPD(hot plug detect)热插拔信号作为输入。开发板在作为HDMI主设备时,需要提供给HDMI显示设备一个+5V的电源。另外HMDI主设备会通过IIC总线来读取HDMI显示设备的设备信息。达芬奇FPGA与HDMI接口的连接框图如下图所示:
图 3.2.32 HDMI连接框图
两个HDMI口的硬件原理图如下图所示:
图 3.2.33 HDMIA接口
图 3.2.34 HDMIB 接口
需要说明的是,两个HDMI的IIC接口引脚都是5V电平的,需要将其转换为达芬奇FPGA管脚所能承受的3.3V电压。
图 3.2.35 HDMI的IIC电平转换电路
以左侧HDMIA为例,其中,HDMIA_SDA和HDMIA_SCL连接到FPGA的IO口上,HDMIA_SDA_LS和HDMI_SCL_LS连接到HDMI插座上。
当总线空闲即HDMIA_SCL和HDMIA_SDA都被FPGA驱动为高电平时,MOS管截止,HDMI_SCL_LS和HDMI_SDA_LS也被上拉电阻R55和R61上拉到+5V的高电平。
当HDMIA_SCL或HDMIA_SDA被FPGA驱动为低电平时,MOS管导通,此时HDMI_SCL_LS或HDMI_SDA_LS也被下拉到了GND。
若HDMI_SDA_LS需要向FPGA发送低电平时,HDMI_SDA_LS为低,MOS管内部二极管导通HDMIA_SDA被下拉到了低电平。以此实现了双向电平转换的功能。右侧HDMIB分析与之类似。
3.2.21DDR3 SDRAM存储器
达芬奇板载一片2Gbit(256MB)的 DDR3内存,芯片型号为NT5CB128M16IP-DI,速率可以高达800Mhz。该DDR3最大可以提供800M*16=12.8Gbps带宽。DDR3连接到达芬奇FPGA的BANK35上,供电电压为1.5V。原理图如下图所示:
图 3.2.36 DDR3 硬件原理图
图 3.2.37 BANK 35原理图
另外,DDR3由于速度高且是双倍速率采样,所以硬件设计时需要严格考虑信号完整性,开发板在原理图设计、PCB布线和PCB加工时候就充分考虑了匹配电阻/终端电阻,走线阻抗控制,走线等长控制,保证DDR3的高速稳定的工作。
3.2.22引出IO口
达芬奇FPGA开发板总共有两组IO引出口:J2和J3。两个扩展口均采用2*28排针引出,总共引出112个IO口,如下图所示:
图 3.2.38 引出IO口
引出的IO口可扩展用做其他用途,比如接双目摄像头,接AD模块等。
3.3达芬奇FPGA开发板使用注意事项
为了让大家更好的使用达芬奇开发板,我们在这里总结该开发板使用的时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。
USB供电电流最大500mA,且由于存在导线电阻,供到开发板的电压,一般都不会有5V,如果使用了很多大负载外设,比如4.3寸屏、7寸屏、摄像头模块等,那么可能引起USB供电不足,所以开发板如果连接大负载模块的场合,或者同时用到多个模块的时候,建议大家使用一个电源适配器供电。
当你想使用某个IO口用作其他用处的时候,请先看看开发板的原理图,该IO口是否有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干扰,先确定无干扰,再使用这个IO。
当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重新插试试),如果还不行,可以通过串口看看LCD ID是否正常,再做进一步的分析。
至此,本手册的实验平台达芬奇FPGA的硬件部分就介绍完了,了解了整个硬件对我们后面的学习会有很大帮助,有助于后面的管脚约束(分配),在编写程序的时候,可以事半功倍,希望大家细读!另外正点原子开发板的其他资料及教程更新,都可以在技术论坛www.openedv.com 下载到,大家可以经常去这个论坛获取更新的信息。
3.4FPGA的学习方法
Artix-7系列FPGA作为目前热门的FPGA芯片,正在被越来越多的公司选择使用。学习FPGA的朋友也越来越多,初学者可能会认为FPGA很难学,以前只学过51,或者甚至连51都没学过的,一看到FPGA就懵了。其实,万事开头难,只要掌握了方法,学好FPGA,还是非常简单的,这里我们总结学习的几个要点:
1、一款实用的开发板。
这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板在手,什么东西都可以直观的看到,效果不是仿真能比的。但开发板不宜多,多了的话连自己都不知道该学哪个了,觉得这个也还可以,那个也不错,那就这个学半天,那个学半天,结果学个四不像。倒不如从一而终,学完一个再学另外一个。
2、掌握方法,勤学慎思。
FPGA不是妖魔鬼怪,不要畏难,FPGA的学习和普通单片机一样,基本方法就是:
1)了解FPGA的基本结构。
学习FPGA之前需要先对FPGA的基本结构和其功能有个大概的了解,如时钟管理单元MMCM、FIFO等。需要知道时钟管理单元是用来产生不同频率的时钟,如使用DDR3时需要产生200MHz的驱动时钟,如使用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 提问,论坛FPGA板块有各种主题,很多疑问已经有网友提过了,所以可以在论坛先搜索,很多时候,就可以直接找到答案了。论坛是一个分享交流的好地方,是一个可以让大家互相学习,互相提高的平台,所以有时间,可以多上去看看。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|