1 AD7606/AD7616介绍
AD7606是ADI公司的16位、8通道同步采样AD芯片,并行采样率高达200KSPS(AD7616是16位、16通道、1MSPS)。在电力线路测量和保护系统中,需要对多相输配电网络的大量电流和电压通道进行同步采样,AD7606是目前电力系统中最常用的ADC采样芯片之一。
AD7606片上集成模拟输入箝位保护、二阶抗混叠滤波器、跟踪保持放大器、16位电荷再分配逐次逼近型ADC内核、数字滤波器、2.5V基准电压源及缓冲、高速串行和并行接口。AD7606采用5V单电源供电,不再需要正负双电源,并支持±10V或±5V的双极性信号输入。所有通道均能以高达200KSPS的速率进行采样,同时输入端箝位保护电路可以承受最高达±16.5V的电压。
目前AD7606已广泛应用于电力线路检测和保护系统、多项电机控制、仪器仪表和控制系统、多轴定位系统核数据采集系统(DAS)。
图 1
图 2
图 3
图 4
2 ZYNQ SoC在能源电力领域方案优势
(1) 采用Xilinx Zynq-7000 SoC高性能低功耗处理器,集成PS端单核/双核ARM Cortex-A9 + PL端Artix-7架构可编程逻辑资源。
(2) 可通过PL端Artix-7架构可编程逻辑资源按需扩展外部功能接口,只要资源满足,理论上无数量限制。典型应用:CAN(4路)、千兆以太网(2路)、百兆以太网(4路)、UART(12路)、SPI(5路),特别是可通过外接多片AD芯片(AD7606/AD7616),实现16/32/64路AD同步采样。
(3) OpenAMP框架可实现双核ARM Cortex-A9非对称使用方案,从而使双核ARM实现分别跑两个系统:一个ARM Cortex-A9跑Linux,一个ARM Cortex-A9作为实时核跑RTOS(FreeRTOS)或者裸机。实时核与FPGA端进行低延时的高速数据交换与实时通讯控制,从而满足低延时的实时任务要求。而跑Linux的 ARM核作为更上层应用,处理更复杂的业务事务。
(4) 外部可扩展LCD显示与触摸屏控制,分辨率支持2048*2048,支持1080P高清视频播放与HDMI视频输出,满足多种屏幕与人机交互的功能需求;
3 AD7606在ZYNQ平台的应用
创龙科技在Zynq-7000、OMAP-L138/C6748/F2837x + Spartan-6等平台均提供了AD7606的开发案例。
创龙科技基于Zynq-7010/7020处理器设计的工业评估板TLZ7x-EasyEVM-S,它由核心板+底板构成。用户使用核心板进行二次开发时,仅需专注上层运用,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。
图 5 TLZ7x-EasyEVM-S评估板(邮票孔)
图 6 TLZ7x-EasyEVM评估板
本文以Zynq-7000工业评估板TLZ7x-EasyEVM-S为例,讲解ad7606_fft例程。
3.1 功能说明
PL端采集AD7606的8通道AD信号,采样率为200KSPS,并通过DMA IP核将数据缓存到PS端DDR中(每通道各采样4096个点),再通过FFT IP核将数据进行FFT运算,然后将FFT运算结果保存到PS端DDR中,最后通过ILA显示第一个通道的原始波形和FFT运算结果波形。
备注:由于本案例消耗逻辑资源较多,因此本案例不支持xc7z010,仅支持xc7z020。
3.2 案例框图
图 7
点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,PS端可通过对应地址对IP核进行控制。
图8
3.3 AD7606模块
该模块控制AD7606对8通道AD信号按200K采样率进行采集,并将数据通过AXI4-Stream接口进行发送。
图 9
进入BLOCK DESIGN开发界面,双击模块框图,可查看模块的具体配置信息。采样率为200KSPS,模块工作时钟为50MHz。
图 10
备注:模块、IP核简介可扫描文末二维码下载详细资料。
3.4 案例测试
将TLP2P-PinBoard转接板接到评估板CON8接口,再将AD模块TL7606P与转接板连接。
图 11
进入评估板文件系统,执行如下命令配置PS-PL电平转换寄存器。
Target# devmem 0xf8000900 w 0xf
图 12
使用下载器加载PL端程序以及和PL端程序同目录下的.ltx文件。
图 13
在ila_1的Trigger Setup窗口点击按钮,双击axi_dma_0_m_axis_mm2s_tvalid将其添加为触发信号。
图 14
将Value的值改成R,设置为上升沿触发。
图 15
右击Channel_1_data[15:0],点击“Waveform Style -> Analog”将通道1的原始信号设置为模拟波形。
图 16
右击Channel_1_data[15:0],点击“Radix -> Signed Decimal”设置数据为有符号类型。
图 17
参考上面的步骤,在ila_2将axi_dma_1_m_axis_mm2s_tvalid添加为触发信号,设置为上升沿触发,将FFT IP核输出数据的实部和虚部信号分别设置为模拟波形,并设数据为有符号类型。
图 18
图 19
使用信号发生源向TL7606P模块的8个通道分别输入信号,本案例测试的输入信号是频率为2KHz、峰峰值为3.3Vpp的正弦波。
将案例“sw\linux_system\image\”目录下所有脚本文件拷贝至评估板文件系统。执行如下命令使能axi_dma_0的S2MM通道,将数据采集到PS端DDR中。
Target# ./axi_dma_0_ad7606_to_ddr.sh
执行如下命令使能axi_dma_1的S2MM通道(FFT转换后数据保存到PS端DDR),等待FFT IP核工作。
Target# ./axi_dma_1_fft_to_ddr.sh
执行如下命令使能axi_dma_0的MM2S通道,把原始数据从DDR送到FFT IP核。
Target# ./axi_dma_0_ddr_to_fft.sh
执行如下命令使能axi_dma_1的MM2S通道,把FFT转换后的数据从DDR送到ILA显示。
Target# ./axi_dma_1_ddr_to_ila.sh
图 20
axi_dma_0_ad7606_to_ddr.sh
配置axi_dma_0的S2MM通道,将数据传输到DDR。
图 21
配置好DMA后,配置axi gpio输出1,设置adc_enable为1,使能ADC转换。需确保DMA已配置好,再使能ADC转换并进行数据传输。
图 22
axi_dma_0_ddr_to_fft.sh
配置axi_dma_0的MM2S通道,将DDR中的数据通过AXI4-Stream发送给FFT IP核。
图 23
ila_1原始波形
输入信号是频率为2KHz、峰峰值为3.3Vpp(电压幅值为1.65V)的正弦波。一共4096个采样点,每个采样点4个时钟周期,即4096=16384/4。
图 24
图 25
波峰值为+10729,波谷值为-10794,峰峰值=(10729 + 10794)/(2^16)x10V≈3.2841V,采样范围为±5V。
图 26 波峰值
图 27 波谷值
Ila_2 FFT波形
Channel_1_fft_IM_Dout为虚部,Channel_1_fft_RE_Dout为实部。
图 28
频率计算
FFT变换点数N=4096,AD采样率Fs为200KSPS。某点n所表示的频率Fn=(n-1)*(Fs/N)(n>=1)。当n=1时,Fn为0,由于第一点表示的是直流分量,因此频率为0,幅值也为0,该正弦波无直流分量。
从下图可知,在第164个周期(即第42个采样点)处出现信号,则信号频率Fn=(42-1)*(Fs/N)=41*200KHz/4096=2001.95Hz,与原始信号频率2KHz基本一致。
图 29
幅值(波峰值)计算
某个点的幅值An=(根号(实部^2 + 虚部^2))*压缩倍数/(N/2),则信号幅值An=(根号(4448^2 + 3008^2))x4096/4096x2≈10739.23,信号电压幅值=10739.23/(2^16/2)x5V≈1.64V,与原始信号电压幅值1.65V基本一致。
查看原始数据
每个采样点32bit(包括实部和虚部),每个通道的数据的地址依次递增,从地址0x19000000开始。
Target#devmem 0x19000000 //查看V1通道原始数据
Target#devmem 0x19000004 //查看V2通道原始数据
Target#devmem 0x19000008 //查看V3通道原始数据
Target#devmem 0x1900000c //查看V4通道原始数据
Target#devmem 0x19000010 //查看V5通道原始数据
Target#devmem 0x19000014 //查看V6通道原始数据
Target#devmem 0x19000018 //查看V7通道原始数据
Target#devmem 0x1900001c //查看V8通道原始数据
图 30 查看V1通道原始数据
查看FFT数据
每个采样点32bit(包括实部和虚部),每个通道的数据的地址依次递增,从地址0x19100000开始。
Target#devmem 0x19100000 //查看V1通道FFT数据
Target#devmem 0x19100004 //查看V2通道FFT数据
Target#devmem 0x19100008 //查看V3通道FFT数据
Target#devmem 0x1910000c //查看V4通道FFT数据
Target#devmem 0x19100010 //查看V5通道FFT数据
Target#devmem 0x19100014 //查看V6通道FFT数据
Target#devmem 0x19100018 //查看V7通道FFT数据
Target#devmem 0x1910001c //查看V8通道FFT数据
图 31 查看V1通道FFT数据
如需案例源码或详细案例说明,可在评论区留言,进行分享。