你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

聊聊FPGA的IO

[复制链接]
gaosmile 发布时间:2020-8-3 22:29
今天想和大家一起聊聊FPGA的IO。先说说我当年入门的经历吧。国内的大学有FPGA开发条件的实验室并不太多,当年大学的那帮同学有的做ARM,有的做linux,很少有人做FPGA,当时学FPGA仅仅是由于非常渴望的好奇心。所以,在淘宝买了一块开发板,就开始了自己的FPGA之路。

大部分开发板的内容主要是教学员怎么样写Verilog代码,很少会对FPGA的芯片架构做详细的说明和解读,所以当年面试的时候就碰到了一个很尴尬的事情,面试官第一个问题问的就是:用的是哪颗FPGA,内核电压是多少?当时就懵了,虽然做了快一年FPGA,我还没有关注过芯片的内核电压···

但其实熟悉FPGA的基本架构,了解FPGA的芯片内部资源真的很重要!

虽然很多FPGA工程师都是写代码,但是作为硬件编程工程师,如果不熟悉FPGA的底层资源和架构,是很难写出高质量的代码——至少很难写出复杂逻辑的高质量代码,也很难站在系统的层面去考虑芯片的选型等问题。那熟悉FPGA架构,首先最主要的一点,我们先来了解FPGA的IO。

FPGA的IO命名。FPGA芯片IO命名方式太多,管脚也多,让人感觉很乱。这是我当年的感觉,诸如会经常听到:A13,B14···BANK34,BANK12····MIO0,EMIO···。但这确实是FPGA的特点,FPGA可以兼容多种不同的电压标准,也有丰富的IO。

首先,FPGA的IO物理命名规则,也就是我们做管脚约束时候的命名,芯片通常是长方体或者正方体,所以命名通常采用字母+数字组合的方式,从上到下是字母(A,B,C,D```),从左到右是数字(1,2,3```),所以诸如:A13(见下图),就是图上标红的位置,这个是xilinx的一颗芯片示意图,其它厂商的FPGA芯片也类似。

微信图片_20200803222708.jpg

其次,FPGA的功能命名规则。功能命名规则每个厂家都会自己的一套规则,但都大同小异,我们重点来讲述一下xilinx的命名(xilinx的文档是行业标杆,其它FPGA厂家的资料多多少少会参考xilinx)。通常xilinx 的功能命名格式为:IO_LXXY#/IO_XX。其中:

(1)IO代表用户IO;
(2)L代表差分,XX代表在当前BANK下的唯一标识号,Y=[P|N]表示LVDS信号的P或者N;
(3)#表示Bank号。

比如,我们的原理图中有一个IO的名字为:IO_L13P_T2_MRCC_12,那通过功能命名的规则我们就可以知道,这是一个用户IO,支持差分信号,是BANK12的第13对差分的P端口,与此同时它也是全局时钟网络输入管脚(MRCC是全局时钟网络)。

再次,什么是Bank。Bank是一组物理位置和特性相近的IO的总称,同一BANK的电压的基准是一致的,因此,通常如果我们需要各种不同标准的电压,可以通过给到BANK的电压基准不同的方式来实现多种电平标准的输入输出。通常封装越大,BANK数量也越多,可以支持电压标准也越多。如下图就是ZYNQ 7030的一个IO BANK分布图:

微信图片_20200803222711.jpg

除了FPGA的用户IO外,还有很多其他的功能IO,如下载接口,模式选择接口,还有MRCC,也即我们前文讲到的全局时钟网络和局部时钟网路等。其中最值得关注的是FPGA的电源引脚,其中ZYNQ器件包含两套完全独立的供电系统,一套是嵌入式端的电源(PS),一套是逻辑端的电源(PL),两套供电系统完全独立,因此也没有先后上电的时序需求。如下:

微信图片_20200803222714.png

通常包含的电压有:

(1) 内核电压,Vccpint和Vccint分别为PS的内核电压和PL的内容电压,内核电压的大小通常和工艺相关,如48nm XILINX器件的内核电压为1.2v,28nm的ZYNQ器件的内核电源为1.0v(通常电压都有一个范围,范围也和速度等级相关),当然,电压越低,在同样逻辑规模和主频下,对应的功耗也会越低。

(2) Vccpaux和Vccaux分别为PS和PL的辅助电压。在ZYNQ器件中为1.8v。

(3) Vccpll为内部锁相环供电电压。

(4) Vcc_mio0为PS的MIO0 BANK的基准电压,VCCO_DDR为PS端的DDR的电压,此电压通常和选择的DDR颗粒相关,如(DDR3,LDDR3等相对应的值就有所不同,这一部分我们都要在相关视频中做详细解读)。

(5) Vccon这部分就我们前面讲到的  PL 端的Bank基准。

对于纯逻辑的FPGA器件,由于没有PS端,因此相应的PS端供电就没有,只有PL端的供电,实现更简单。

最后,我们来聊聊FPGA的上电。和所有的器件一样,FPGA的上电遵循一定的上电逻辑,通常情况下SRAM结构(XILINX、Altera等都属于SRAM结构)的上电时间会比FLASH结构的(Microm,Actel等)上电时间要长。

有些国产FPGA为了简化BOM成本(如安路半导体)不需要用户特别关注上电时序,用单电源供电,芯片内部控制上电时序。虽然不合理的上电时序有时候也能让FPGA正常工作,但不正常的上电或掉电过程有可能会造成瞬时电流过大,无法保证上电期间FPGAIO为三态,甚至损坏芯片,因此需要设计者特别关注上电时序。针对XILINX FPGA的上电通常需要遵循以下规则:

(1)在PS端,Vccpint,Vccpaux,Vccpll一起上电,后启动PS的Vcco电源(Vcco_mio0,Vcco_mio1,Vcco_ddr),其中PS_POR_B在上电期间应保持低电平,直到内核,辅助电压,PLL电压和BANK的电压达到相应阈值。掉电的顺序和上电顺序保持一致。

(2)在PL端,推荐的上电顺序依次为Vccint,Vccbram,Vccaux,Vccaux_io,Vcco。其中,如果Vccint和Vccbram是相同的电压,则可以采用同一电源供电,同时启动。Vccaux,Vccaux_io和Vcco为同一电压则亦可以采用同一电源,同时启动。

除此,在设计FPGA的原理图中要需要特别关注Serdes的供电(不同的厂家,甚至同一厂家不同的器件对Serdes都有不同的名称,如:GTH,GTX等等,但实质都是自同步的高速串行收发器,支持的速率有所差别),不使用的情况下需相应的悬空或者接地。

收藏 评论1 发布时间:2020-8-3 22:29

举报

1个回答
likang1202 回答时间:2020-8-4 08:46:20
学习了
mark.png

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版