Xilinx 7系列FPGA内置ADC XADC获取模拟信号

时间:2025-11-02  作者:Diven  阅读:0

Xilinx 7系列FPGA全系内置了一个ADC,称呼为XADC。

Xilinx 7系列FPGA内置ADC XADC获取模拟信号

这个XADC,内部是两个1mbps的ADC,可以采集模拟信号转为数字信号送给FPGA内部使用。

XADC内部可以直接获取芯片结温和FPGA的若干供电电压(7系列不包括VCCO),用于监控FPGA内部状况。同时提供了17对差分管脚,其中一对专用的模拟差分输入,16对复用的模拟差分输入,不使用的时候可以作为普通的User I/O。

关于XADC具体的结构,功能和各个参数的含义,请参考相关文档。这里不做详细描述。另外有两点需要注意。

1.关于参考电压的设置,会影响误差范围及采样值的计算公式。

2.模拟差分输入对模拟信号幅值有要求,需要外边模拟电路进行一定程度的转换。

假设现在需要用XADC来获取几个模拟信号的信息,那么应该如何操作呢。下面解释个人偏爱设置方式。

注意红框中的几点:

1.使用DRP端口获取数字信号,这样控制似乎更简单一些。

2.使用连续采样模式,ADC一直工作在数据采集模式,采集后就可以进行输出。

3.使用Channel Sequencer模式,由于只有两个XADC而需要采样的数据过多,所以让XADC依次陆续进行采样。

4.设置好DRP端口的时钟频率。

IP设置第二页,主要是设置Calibration、平均值和外部MUX。这几个可以暂时跳过,等熟悉XADC的使用后在进行深入了解。

第三页设置告警参数,可以不用。如果需要的话,可以设置一下,便于使用。

第四页设置需要使用的通道,这里选择温度和三个供电电压,并选择一个专用的模拟输入通道和前三个复用的模拟输入通道。

最后一页是Summary,可以看看设置是否有问题,没有需要设置的地方。

这个时候最基本的一个多通道获取数据的XADC设置好了,至于设置中没有细说的地方,可以等熟练使用之后进行研究,找出最合适的使用模式。

下面是如何使用这个生成的IP。由于使用DRP端口来读取数据,所以需要设计一个DRP读写控制器。不过由于XADC本身就提供了一些信号,所以这个设计其实非常简单。

.di_in(di_in),

.daddr_in(daddr_in),

.den_in(den_in),

.dwe_in(dwe_in),

.drdy_out(drdy_out),

.do_out(do_out),

.dclk_in(dclk_in),

首先理一下DRP端口,主要7个信号。由于仅仅是读取数据,所以输入部分没有使用的必要。

.di_in (16‘b0),

.dwe_in (1’b0),

时钟信号连接DRP所使用的时钟即可,注意频率需要和XADC IP中的设置一样。

.daddr_in ({2‘b00,CHANNEL_OUT}),

.den_in (EOC_OUT),

.do_out (DO_OUT),

.drdy_out (DRDY_OUT),

.eoc_out (EOC_OUT),

.channel_out (CHANNEL_OUT),

余下四个DRP端口,两个输出两个输入。两个输出直接引出来,其中do_out就是最终需要的数据。这个端口是16bit,取高12bit即可(对应XADC中宣称的12位)。

XADC的IP端口中还有两个,名为eoc_out和channel_out。将eoc_out连接到DRP端口的den_in端口,含义是当多路采样的某一路完成采样后,则启动DRP端口操作,开始进行读取数据。将channel_out补两位之后送入daddr_in作为DRP端口操作的地址信号。这样就完成了DRP的读写操作。

不过这样输出的数据,会周期性的在几个端口数据之间变化。所以通常在后端加一个过滤设置,具体行为是,当代表DRP操作完成的drdy_out拉高的时候,根据channel_out的值来判断是哪一个通道的。

always @(posedge clk)begin

if(DRDY_OUT == 1’b1 && CHANNEL_OUT ==5‘d0)begin

Temperature end else begin

Temperature end

end

关于每个采样通道的具体地址,可以参考手册

至于模拟差分输入Pin,直接送到顶层的相对应管脚即可。注意Vivado工具可能需要对复用的模拟Pin进行电平约束,根据VCCO的电压值选择相应的lvcmos即可,例如1.8V的VCCO就选择lvcmos18即可。

这样就可以获取对应的模拟采样数据了。由于绝大部分情况下需要检测的模拟信号变化相对较慢,使用XADC是足够用于检测的。

涉及到XADC的使用问题还有MIG IP。MIG是Memory Interface的IP,也就是DDR3之类的DDR存储器IP。由于此类接口一般速率过高,会需要温度信息对接口做一定的矫正。在MIG IP的配置中,会默认启动XADC。

此时的XADC仅仅需要提供温度信息就可以了。当需要提供更多信息,就需要独立配置XADC,这样工程中就会生成两个XADC;或者例化了两个MIG IP,这样各自就会需要一个XADC。由于硬件中只有一个XADC模块,当发现工程中需要多个XADC模块的时候,工具就会提示出错。

解决方案也非常简单,MIG IP中去掉XADC。然后在设计中独立例化XADC IP。根据上文的做法获取温度信息后送往MIG。MIG IP去掉XADC后会生成一个温度端口用来接收数据。这样就不会发生冲突。

另外一个非常便捷的获取温度信息的方案就是使用Hardware Manager。在Hardware Manager中打开XADC就能看到温度信息。

其实XADC所有通道数据都可以通过这个方法获取。

猜您喜欢

手动泵是应用于日常生活和工业领域的重要设备。主要作用是通过手动操作将液体或气体从一个地方转移到另一个地方。无论是在家庭、汽车维修还是农业灌溉中,手动泵都能有着出...
2017-04-21 00:00:00

贴片电阻的封装尺寸与其耐用性并没有直接的关联。105 (1.0mm x 0.5mm) 和 501 (0.5mm x 0.1mm) 代表的是电阻的物理尺寸,而非其...
2024-11-29 10:26:29

敲渣锤是常见的工具,主要用于金属加工和建筑施工中。根据不同的使用需求,敲渣锤有几种主要的区别。材料不同。市面上的敲渣锤一般分为钢锤和铝锤。钢锤坚固耐用,适合重型...
2012-03-03 00:00:00

电容是电子元件,在电路中是重要配件。电容的功能和作用非常多样化。本文将为您介绍电容的主要功能和应用。储存电能电容可以储存电能。在电路中起到暂时储存电荷的作用。电...
2025-03-20 12:01:07

贴片电阻上的150代表其阻值为15欧姆。贴片电阻通常使用数字编码来标记阻值。三位数的编码遵循特定的规则:前两位数字表示有效数字,第三位数字表示10的幂次方(即在...
2024-11-29 10:25:40

电子元器件中,贴片电阻由于其体积小、功耗低等优点而被应用。在使用这些电阻时,正确识别电阻的标识非常重要,尤其是那些标有“0”的电阻。本文将为您详细介绍如何识别贴...
2025-04-14 23:01:44

现代电力电子技术中,单相半波可控整流电路被应用于直流电源、调速电机等领域。该电路的关键组件是续流二极管,在电路中是非常重要的配件。本文将探讨续流二极管在单相半波...
2025-04-10 08:30:38

想知道那些密密麻麻印在贴片电阻上的字符是什么意思吗?其实并不复杂!国内贴片电阻的命名规则主要采用数字字母组合,简洁地表达了阻值和误差。一般来说,三位数字表示阻值...
2024-11-29 10:25:54

电容是电子电路中重要的元件。理解电容的容值测量方法很重要。本文将介绍几种常用的测量电容容值的方法。使用万用表万用表是常见的测量工具。可以测量电阻、电压和电容。将...
2025-03-21 15:01:39

LoRa模块是基于低功耗广域网(LPWAN)技术的无线通信模块,应用于物联网(IoT)领域。采用了扩频调制技术,能够在长距离传输中保持低功耗和高抗干扰能力,适合...
2008-04-20 00:00:00