XILINX 7系列FPGA_Slice_存储器_XADC篇

XILINX 7系列FPGA_Slice_存储器_XADC篇

​转载说明

作者公众号:FPGA训练营。

文章转载自公众号:小白仓库。

1.Slice结构简介

Xilinx的官方文档在介绍FPGA的逻辑资源时通常是按照CLB(Configurable Logic Block)来介绍,把CLB作为FPGA里的最小逻辑单元。但是CLB是由2个slice构成,因此平时大家都把slice挂嘴边,称为最小的逻辑单元,很少提起CLB。因此本篇咱们就简要聊一聊slice的功能。对于大部分应用,咱们不必深入了解slice,写好代码后FPGA的开发软件会自动帮助咱们布局布线,所以本篇以了解为主,当然如果您是高级用户,是大佬级FPGA专家,就另当别论。

7系列FPGA的slice包含4个部分:

逻辑功能产生器,也就是咱们常说的查找表,1个slice里包含4个6输入的查找表。

存储单元,也就是常说的触发器,1个slice里包含8个触发器。每4个触发器为一组,可配置成D触发器或锁存器。

多路复用器,也就是1位宽的数据选择器,数量非常多,足够使用。

进位逻辑,它与本列的上下slice的进位逻辑相连,实现数据运算时的进位操作。

因此,许许多多的slice相结合,再加上全局时钟就能实现复杂的数字功能!另外,咱们还得提到重要的一点,FPGA里的slice有2种,一种被称为sliceL,另一种被称为sliceM,有的CLB由2个sliceL构成,有的则是由1个sliceL和一个sliceM构成。SliceM除了基本功能外,可以实现RAM和移位寄存器的功能,这两种功能很有用,通过工具软件可以自动实现,不用咱们操心,咱们只需要知道这点就够了。贴上一张sliceL的结构图,大家能找到上述的4个部分吗?

XILINX 7系列FPGA_Slice_存储器_XADC篇

2.存储器结构简介

上一篇咱们说了slice,提到了其与全局时钟在一起就可以实现任意的组合逻辑和时序逻辑功能,但很多时候咱们还需要将FPGA内部的数据暂时存储,用作它用。Slice作为FPGA最基本的单元,也是能够完成数据存储的功能,但显然有些大材小用,因此xilinx公司在其FPGA内部专门集成了很多存储器模块,称作Block RAM,其犹如slice海洋当中的一颗颗明珠,专门实现数据暂存功能,且每个时钟区域都布置了若干个Block RAM。今天咱们就聊一聊7系列FPGA里面的Block RAM。

XILINX 7系列FPGA_Slice_存储器_XADC篇

在7系列FPGA里面,每个Block RAM最多可存储36Kb的数据,2个Block RAM可级联实现64kb数据存储,而每个Block RAM又可分成2个18kb的Block RAM,仅此而已,不可再分,亦不可无限级联。

Block RAM在使用的时候都是使用Xilinx CORE Generator来无脑配置,可以配置成RAM、ROM以及运用最广泛的FIFO。RAM可以配置成各种不同的接口模式以及读出模式,FIFO则可配置成同步FIFO和异步FIFO等。所有配置信息咱们都是在FPGA的开发工具Xilinx CORE Generator里面实现。

Block RAM的各种不同配置以及如何在全局时钟下读/写数据RAM和FIFO内容太多,不太好描述,但其实用起来很easy,基本上只用得到以下a几个信号:时钟、复位、时钟使能、读数据、读地址、读使能、写数据、写地址、写使能、数据空信号、数据满信号,以后咱们单独拿出来,用具体例子操作一波!

3.XADC结构简介

今天咱们来聊一聊FPGA里面的XADC功能。XADC即Xilinx公司的FPGA里集成的一个ADC模块、温度传感器、电压传感器的集合。在7系列FPGA里,除了少数spartan系列的低端FPGA没有XADC外,其它所有的7系列FPGA里都有XADC模块。

XADC包含2个通道的模拟差分输入、每个通道的采样率都为1MSPS,其功能模块如下图所示:

 

XILINX 7系列FPGA_Slice_存储器_XADC篇

从上图可以看出,XADC默认监测FPGA内的温度以及所有的电压,还可以接收来自FPGA专用模拟差分管角VP_0\VN_0的模拟差分信号,还可以接收FPGA其他普通数字\模拟混合管脚VAUXP\VAUXN[15:0]的16路模拟差分输入,因此XADC可以最多处理17路外部模拟信号。

XADC的输出通过JTAG口可以直接被FPGA开发工具读取并实时监测,并且借助Xilinx CORE Generator还可以生成XADC的IP核,加载到FPGA逻辑代码里,随时供用户读取FPGA的温度、电压等信息。

XILINX 7系列FPGA_Slice_存储器_XADC篇