时间:2024-08-09 来源:网络搜集 关于我们 0
之前的文章中,我们谈到FPGA芯片的主要部分由6大模块,分别为:可编程输入输出单元(IOB)、基本可编程逻辑单元(CLB)、数字时钟管理(DCM)、嵌入块式RAM(BRAM)、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。并且介绍了前两种可编程输入输出单元(IOB)、基本可编程逻辑单元(CLB),今天我来继续介绍剩下的部分。
在Xilinx推出的产品系列中,都提供数字时钟管理和锁相环。锁相环能够提供精确的时钟,降低时钟抖动,并实现过滤功能。
块RAM(BRAM)可被配置为单端口RAM、双端口RAM、内容地址存储器 (CAM)以及FIFO等常用存储结构。
RAM和FIFO相信大家都十分熟悉,这里不再介绍,重点介绍一下内容地址存储器 (CAM)。
CAM存储器内部的每个存储单元中,都有一个比较器,将要写入 CAM中的数据,和CAM内部已有的每一个数据进行比较,如果两者数据相同,返回地址。
除了BRAM,可以将 FPGA中的LUT,灵活地配置成RAM、ROM和FIFO等结构。在实际工作芯片选型过程中,BRAM的数量是选择芯片的一个重要因素。
假设在一款FPGA中,单片块RAM的容量为18k比特,即位宽为18比特、深度为1024。在使用过程中,可以根据需要改变其位宽和深度,但必须要满足一个条件,即修改后的容量(位宽x深度)不能大于18k比特。在实际使用中,我们一般将多片BRAM级联起来使用,在这种情况下,可用RAM的大小,受限于芯片内块RAM的数量。
我们的设计,映射到FPGA内部的多个单元,最后,需要通过布线将这些单元模块连通,而信号在线上面的驱动能力、传输速度等都会受到线长,以及工艺的影响。
FPGA芯片内部的布线资源十分丰富,根据工艺、长度、宽度和分布位置的不同,可以划分为下面4种。
全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;短线资源,用于完成基本逻辑单元之间的逻辑连接和布线;分布式的布线资源,用于专有时钟、复位等控制信号线。在实际使用中,工作人员并不需要直接选择使用哪种布线资源,布局布线工具可以根据输入逻辑网表的拓扑结构和约束条件,自动地选择布线资源来连通各个模块单元。从根本上面讲,设计的好坏,会直接影响布线资源的使用方法,即好的设计,会降低工具布线的难度,获得更好的布线结果。
内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(Soft Core)。
DLL和PLL具有类似的功能,都可以用来实现高精度、低抖动的时钟倍频和时钟分频,以及占空比调整和移相等功能。
Xilinx生产的芯片上集成了 DLL,Altera的芯片集成了PLL,Lattice公司的芯片上同时集成了PLL和DLL。PLL 和DLL可以通过IP核生成的工具方便地进行管理和配置。
图一 典型DLL模块
内嵌专用硬核是相对上面提到的DSP、CPU等底层嵌入的软核而言的,可以将它等效于ASIC电路。
随着应用复杂度的提升,对FPGA性能的要求越来越高,为了满足市场需要,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES)。这些硬核的集成,在很大程度上面,提升了FPGA的可扩展能力。
市场需要的提升,使得FPGA的资源变得越来越丰富,功能越来越强,然后再投放到市场中去,形成市场与技术的良性循环。
参考资料:Xilinx官方网站