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

聊聊FPGA的IO

[复制链接]
gaosmile 发布时间:2020-8-3 22:29
今天想和大家一起聊聊FPGA的IO。先说说我当年入门的经历吧。国内的大学有FPGA开发条件的实验室并不太多,当年大学的那帮同学有的做ARM,有的做linux,很少有人做FPGA,当时学FPGA仅仅是由于非常渴望的好奇心。所以,在淘宝买了一块开发板,就开始了自己的FPGA之路。
( Z' u" ]3 B/ j6 R+ n
% j: z# ^" ?0 B; o5 v
大部分开发板的内容主要是教学员怎么样写Verilog代码,很少会对FPGA的芯片架构做详细的说明和解读,所以当年面试的时候就碰到了一个很尴尬的事情,面试官第一个问题问的就是:用的是哪颗FPGA,内核电压是多少?当时就懵了,虽然做了快一年FPGA,我还没有关注过芯片的内核电压···

- i: q- J6 o0 N/ q4 J0 |
但其实熟悉FPGA的基本架构,了解FPGA的芯片内部资源真的很重要!
2 P/ d  G& l0 m- O1 [1 r; S
虽然很多FPGA工程师都是写代码,但是作为硬件编程工程师,如果不熟悉FPGA的底层资源和架构,是很难写出高质量的代码——至少很难写出复杂逻辑的高质量代码,也很难站在系统的层面去考虑芯片的选型等问题。那熟悉FPGA架构,首先最主要的一点,我们先来了解FPGA的IO。
1 a% A9 m% _' D  p% J$ k6 o% O
FPGA的IO命名。FPGA芯片IO命名方式太多,管脚也多,让人感觉很乱。这是我当年的感觉,诸如会经常听到:A13,B14···BANK34,BANK12····MIO0,EMIO···。但这确实是FPGA的特点,FPGA可以兼容多种不同的电压标准,也有丰富的IO。
& o- J) P9 N) M
首先,FPGA的IO物理命名规则,也就是我们做管脚约束时候的命名,芯片通常是长方体或者正方体,所以命名通常采用字母+数字组合的方式,从上到下是字母(A,B,C,D```),从左到右是数字(1,2,3```),所以诸如:A13(见下图),就是图上标红的位置,这个是xilinx的一颗芯片示意图,其它厂商的FPGA芯片也类似。

1 I3 \. {4 _4 s/ x
微信图片_20200803222708.jpg

" P  i0 ]/ B- J! z0 ~- q$ X$ |# M
其次,FPGA的功能命名规则。功能命名规则每个厂家都会自己的一套规则,但都大同小异,我们重点来讲述一下xilinx的命名(xilinx的文档是行业标杆,其它FPGA厂家的资料多多少少会参考xilinx)。通常xilinx 的功能命名格式为:IO_LXXY#/IO_XX。其中:
! y0 q/ a# c) v* e0 p' _& t$ C
(1)IO代表用户IO;
(2)L代表差分,XX代表在当前BANK下的唯一标识号,Y=[P|N]表示LVDS信号的P或者N;
(3)#表示Bank号。
5 k- T- k" b. {" k, o: }
比如,我们的原理图中有一个IO的名字为:IO_L13P_T2_MRCC_12,那通过功能命名的规则我们就可以知道,这是一个用户IO,支持差分信号,是BANK12的第13对差分的P端口,与此同时它也是全局时钟网络输入管脚(MRCC是全局时钟网络)。
# i% X2 m+ I- C" j# b$ T$ m
再次,什么是Bank。Bank是一组物理位置和特性相近的IO的总称,同一BANK的电压的基准是一致的,因此,通常如果我们需要各种不同标准的电压,可以通过给到BANK的电压基准不同的方式来实现多种电平标准的输入输出。通常封装越大,BANK数量也越多,可以支持电压标准也越多。如下图就是ZYNQ 7030的一个IO BANK分布图:

9 x9 \2 z3 f- z' S! _0 D3 }7 a# Q, J( O
微信图片_20200803222711.jpg
- R  p0 ?/ @8 o8 u: n5 C# R
除了FPGA的用户IO外,还有很多其他的功能IO,如下载接口,模式选择接口,还有MRCC,也即我们前文讲到的全局时钟网络和局部时钟网路等。其中最值得关注的是FPGA的电源引脚,其中ZYNQ器件包含两套完全独立的供电系统,一套是嵌入式端的电源(PS),一套是逻辑端的电源(PL),两套供电系统完全独立,因此也没有先后上电的时序需求。如下:
* ~4 r. I& J5 s( \, c0 D
微信图片_20200803222714.png

" ]/ n( `& l7 k7 E6 |+ }
通常包含的电压有:

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

2 H* u. G& Z1 }. I# L( Z& E
(2) Vccpaux和Vccaux分别为PS和PL的辅助电压。在ZYNQ器件中为1.8v。
9 V# i! b: ]( y# j
(3) Vccpll为内部锁相环供电电压。

2 j" C5 o9 H% T8 K; |. \
(4) Vcc_mio0为PS的MIO0 BANK的基准电压,VCCO_DDR为PS端的DDR的电压,此电压通常和选择的DDR颗粒相关,如(DDR3,LDDR3等相对应的值就有所不同,这一部分我们都要在相关视频中做详细解读)。
$ \' T* d  A( P- p) Y8 K) {% e: E$ _
(5) Vccon这部分就我们前面讲到的  PL 端的Bank基准。
' Q3 s( [7 R1 @
对于纯逻辑的FPGA器件,由于没有PS端,因此相应的PS端供电就没有,只有PL端的供电,实现更简单。
% p- o% k, R* V1 G: B, `6 u6 h
最后,我们来聊聊FPGA的上电。和所有的器件一样,FPGA的上电遵循一定的上电逻辑,通常情况下SRAM结构(XILINX、Altera等都属于SRAM结构)的上电时间会比FLASH结构的(Microm,Actel等)上电时间要长。
$ `" a2 Q% e# {( c6 V1 _) a5 z
有些国产FPGA为了简化BOM成本(如安路半导体)不需要用户特别关注上电时序,用单电源供电,芯片内部控制上电时序。虽然不合理的上电时序有时候也能让FPGA正常工作,但不正常的上电或掉电过程有可能会造成瞬时电流过大,无法保证上电期间FPGAIO为三态,甚至损坏芯片,因此需要设计者特别关注上电时序。针对XILINX FPGA的上电通常需要遵循以下规则:

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

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

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

, a. h: S! E4 C( S% v# _" J6 M
收藏 评论1 发布时间:2020-8-3 22:29

举报

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

所属标签

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