题主最近开始接触和fpga的方案验证相关的工作内容,需要把握fpga内部资源的详细信息,所以又仔细查看了官方的器件手册。这一次给大家分享的内容主要涉及xilinx fpga内的clbs,selectio和clocking资源,适合对fpga设计有时序要求,却还没有足够了解的朋友。
参考器件上,虽然一些专用的资源都集中在高端的fpga型号中,不过题主想了想,还是把它们放在该系列后续的文章中吧。下文中的举证皆来自spartan6器件文档,所以也不会超出spartan6涵盖内容。
传统的fpga内部资源分类作三类,可配置逻辑模块(configurable logic block)、输入输出模块(inputoutput block)和内部布线资源(interconnect)三个部分,这些大家都知道的。随着fpga的发展,为了满足对信号处理和片上储存的需要,又在前三类基础上增加了块ram(bram)、时钟管理单元和硬件乘法器,之后又在部分系列里增加了ppc和高速串行输入与输出等等。
下文将要提到的clb、selectio和clocking资源里,selectio资源是比较丰富的一类,所以在顺序上把它放在最后。
正文:
首先说说clb吧,它是一类最重要,其实也是最易于使用的结构。xilinx把尽可能多的资源配置接口开放给用户,但是出于控制开发周期,并且提高系统稳定性的考虑,clb不是其中之一,它的配置方案几乎全部由ide实现过程智能分配,用户可以约束特殊slice的位置,但很少有这种必要,交给ide来完成会更加有效。
来看看它的结构(有一些图片资料不好找,后期整合的时候会补全):
① clb资源会根据fpga的尺寸被内部时钟网络分割成若干个区域,一般每个区域是40个clb单元高度;
② 每个clb连接到一个开关矩阵来接入全局布线矩阵;
③ 一个clb单元包含 一对slice单元(两个slice无直接连接,并且在clb间成列分布,每个纵列的slice有一条独立的进位链);
④ 一个clb中下方的slice记为slice0,上方的记为slice1;
⑤ 每个slice包含4个查找表(luts),8个存储单元(ff),以及一些选择器和进位逻辑,这些单元用于提供逻辑、算术和rom功能;
⑥ 有一部分slice支持distributedram和32位移位寄存器功能,被记为slicem,其他的记为slicel(一个clb最多有一个slicem,每个clb纵列至少有一个slicem,在dsp48e(xilinxfpga内的硬件乘法器)纵列旁的两个clb纵列,每一个clb都有slicem)。
slicem
(distributedram和shiftregisters资源都在luts上挂载)
最后看一下一个clb中的资源总量:
当然具体到slice中几种资源还有一些细节需要关注,主要是和luts的特性相关,不过等后面加入案例来讲吧。如果此前你已经对fpga设计有一些经验和体会的话,现在想必已经对fpga的查找表结构有了自己的理解。
还是简单提及一下luts的作用,就是查表,,,在我看来,它就是一个6输入2输出的多功能选择器,可以直接把verilog中always块的行为映射到它的行为上,通过对输入端口的连接配置,它就能够实现我们需要的信号行为模型。完整的过程以后会加入案例来讲。让我们缓一口气,先进入下一个内容。
xilinxfpga内部有复杂的时钟资源网络,来维护大数量逻辑资源条件下的时序要求和系统稳定。主要分为全局时钟线和局部时钟网络,在spartan6上,还有数字时钟管理器(dcm)和数字锁相环(pll)两种硬核资源,用以辅助时钟资源网络。spartan6内部提供了16个全局时钟驱动buffer和40个局部时钟的,它们均匀地分布在上文提到的被时钟网络分割出来的各区域中:
我们可以通过例化bufg和bufio等原语调用这些资源,为gtp(h/x/z)和ddr、ad/da这样的高速信号组提供更低相位偏移的时钟参考,但是时钟资源的分配有比较多的使用规则,在资源有限而布线拮据的情况下,时常会被xilinx规则检查器告知使用违例。之后题主会结合一些真实案例来引导大家去规避这样的错误。
时钟资源所用的篇幅也很短,事实上涉及到时钟的问题很多,但是要在需要的时候再去认识才有价值,不然没有依据的去了解,也没有什么价值。接下来看看fpga内部最为丰富的i/o资源,毕竟现在市场上fpga最广泛和最擅长的,就是做接口,下文包含的很多内容,在多个系列的fpga上都是差不多的规范:
① fpga的i/o资源被分布在若干个bank中,每个bank中有20个i/o tile;
② 一个tile包含2个iob,2个ilogic,2个ologic和2个ioedlay,用于对双端(差分)信号配对;
③ iob包含输入、输出和三态驱动,可配置为不同的i/o标准;iob直连一对i(o)logic,i(o)logic包含数据i/o的逻辑资源和三态控制,i(o)logic也可以通过调用相关原语配置为i(o)serdes,实现数据的串并行转换;
iob单元支持大量的接口标准,可以对负载能力和转换速率进行控制。并且同bank内支持复合电压输出,以驱动一些低压i/o标准,不过对参考电平的选择有一些规则。
对于单端和双端信号i/o,可以选择很多种buffer配置方式去驱动这些信号,当然ide的实现过程中也帮我们配置好了很多,作为用户,常用的像ibufg、ibufr这样的时钟驱动资源,ibufds、obufds实现信号单双端转换,以及用obuft实现三态控制等等。
EUV工艺不同多重图形化方案的优缺点及新的进展研究
如何构建一个双编码器神经网络模型
随着产业发展的不断成熟,机器人底盘或将迎来一个低成本定制化时代
神奇的车联网时代:LED灯实现车辆间的沟通
AM206030PA-P2功率放大器AMCOM
Xilinx FPGA底层资源架构与设计规范
水力发电的基础知识分享
iPhone12 mini摄像头测试成绩公布
网络安全故障怎样最大化的降低
JDSU光纤测试仪是什么,它的作用又是什么
福禄克万用表如何维护保养
清锋自研全球专利技术助力弹性体3D打印智造
基于MAX+plusⅡ开发平台的EDA设计方法
波音推出全新中型市场飞机将于2025年交付客户并投入运营
智联安科技亮相IOTE 2022国际物联网展
中国移动推动更多新的数字化技术、产品和应用场景落地福建
华硕正在测试多款双向滑盖手机,其中一款机型将支持 5G网络
特斯拉服务中心现可提供碰撞维修服务
Z-FFT变换在站内轨道信号解调中的应用
航空航天工业的PCB趋势是怎样的