DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1398|回复: 0
打印 上一主题 下一主题

[待整理] 基于ARM+FPGA控制的LTC2207采集应用

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 16:35:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
引言
       
            数据采集技术是一种流行且实用的电子技术。它广泛应用于信号检测、信号处理、仪器仪表等领域。近年来,随着数字化技术的不断发展,数据采集技术也呈现出速度更高、通道更多、数据量更大的发展趋势。
       
            本设计中数据采集系统的核心器件是凌力尔特公司的A/D转换芯片LTC2207。本文研究了在ARM核S3C2440芯片和FPGA的控制下对直流数据和正弦信号的采集应用,并进行了相关的仿真验证。
       
        1  LTC2207芯片介绍[1]
       
        1.1  LTC2207的功能特性
       
            LTC2207是16位A/D转换器,它的采样速率为105 Msps。LTC2207是针对输入频率为700 MHz的高频、宽动态范围信号进行数字化处理而设计的。它可以利用PGA前端(输入范围为 1.5VPP 或2.25VPP )对该ADC的输入范围进行优化。
       
            LTC2207非常适合于要求苛刻的通信应用。它的AC性能包括78.2 dB噪声层和100 dB无杂散动态范围(SFDR);250 MHz时SFDR>83 dB(输入范围为1.5VPP时);80fsRMS的超低抖动实现了高输入频率的欠采样和卓越的噪声性能;最大DC规格包括整个温度范围内的±4LSB INL、±1LSB DNL(无漏失码)。
       
            LTC2207具有单一的3.3 V供电电源,单一的电源允许CMOS输出摆幅为0.5~3.6 V。它同时具有700 MHz全功率带宽 S/H (采样及保持),可选的内部抖动和数据输出(Randomizer)随机函数发生器,功耗为900 mW。LTC2207可利用正弦波时钟、PECL、LVDS、TTL或CMOS输入对 ENC+和 ENC-输入进行差分或单端驱动。可任选的时钟占空比稳定器在全速和多种时钟占空比条件下实现了高性能。
       
            LTC2207的引脚说明略——编者注。
       
        1.2  LTC2207的时序说明
       
            LTC2207时序图如图1所示。LTC2207是带有前端PGA的CMOS多步转换器。模拟输入是差分信号以提高共模噪声抑制,最大限度地利用输入范围。此外,差分输入信号可以降低取样保持电路的谐波。编码输入也比共模抑制输入具有更强的抗干扰能力。
       
        图1  LTC2207时序图
       
            LTC2207的采集取决于ENC+/ENC-输入引脚的状态,由图1可知LTC2207在ENC+引脚的上升沿时(ENC-引脚的下降沿时)采样模拟输入信号。它有5个流水线模数转换阶段,经过7个周期后,一个模拟采样输入就会转换为一个数字值,数字输出上/下溢出则由OF引脚上的逻辑高电平表示。
       
            此A/D转换器有一个延迟的编码输入作为数字输出,提供了CLKOUT+和CLKOUT-两信号;需要使用正弦时钟编码信号CLKOUT+/CLKOUT-将数据同步转换到数字系统。数据在CLKOUT+的上升沿或CLKOUT-的下降沿锁存,在CLKOUT+下降沿和CLKOUT-上升沿时更新。
       
        2  硬件电路设计
       
            信号采集部分主要完成对模拟信号的调理和A/D转换芯片的采集。A/D转换芯片的输入信号是差分的,而被采集的信号是单端的,这就需要把单端信号转换成差分信号。输入的信号经过MAX4201缓冲后,由差分驱动器AD8131转换成差分信号,驱动A/D转换芯片LTC2207。
       
            采用LVDS转发器MAX9150转换FPGA所给的时钟信号,作为LTC2207的采集控制信号ENC。MAX9150的转换电路如图2所示。
       
        图2  MAX9150的转换电路
       
       
        图3  采集输入信号的前端调理电路
       
            LTC2207的模拟差分信号输入前端的调理芯片采用低噪声、低功耗、超高速开环缓冲器MAX4201和高速差分驱动器AD8131。采集输入信号的前端调理电路如图3所示。图中MAX4201采用±5 V供电,对地并联的电容给电源滤波,为缓冲器提供无干扰的电源。缓冲后的信号,由MAX4201的5引脚输出,其输出阻抗是50 Ω,再经过AD8131完成单端到差分的转换。
       
            LTC2207的采集控制电路如图4所示。其中,AIN+、AIN-为差分模拟输入信号;ENC+、ENC-为采集芯片的时钟控制信号;D0~D15为16位数据输出信号;CLKOUT+、CLKOUT-为时钟输出信号。
       
        图4  LTC2207的采集控制电路图
       
        3  ARM与FPGA的编程控制[2]
       
            采用硬件描述语言VerilogHDL,对LTC2207相关引脚的使能以及FPGA如何读取采集来的数据的程序如下:
       
        always @(posedge clk or negedge rst_n)
            if(!rst_n)
            begin
                /OE2_2207 ﹤= 1b0;//相关引脚的软件配置
                MODE2_2207 ﹤= 1b1;
                RAND2_2207 ﹤= 1b0;
                PGA2_2207 ﹤= 1b0;
                DITH2_2207 ﹤= 1b1;
                SHDN2_2207 ﹤= 1b0;
                DATA2_receive ﹤= 16d0;
                state ﹤= IDLE;
                done2 ﹤= 1b0;
            end
        else
            begin
                case(state)
                    IDLE: if(start_reg)
                        begin
                            en_9150 ﹤=1;
                            state ﹤= READ_DATA;
                        end
                    READ_DATA:
                        begin//FPGA读取采集来的数据
                        en_9150 ﹤=0;
                        if(CLKp2_2207_reg)
                            begin
                                DATA2_receive ﹤= DATA2_2207;
                                done2 ﹤= 1b1;
                                state ﹤= IDLE;
                            end
                        else
                            done2 ﹤= 1b1;
                        end
                    default: ;
                endcase
            end
       
            与S3C2440 GPJ1口连接的FPGA端的start控制程序代码如下[3]:
       
        always @(posedge clk or negedge rst_n)
            if(!rst_n)
                begin
                    start_reg1 ﹤= 0;
                    start_reg2 ﹤= 0;
                end
         else
            begin
                start_reg1 ﹤= start;
                start_reg2 ﹤= start_reg1;
            end
        assign start_reg = start_reg1 & (~start_reg2);
            S3C2440控制启动FPGA开始采集的start程序如下[4]:
        #include <string.h>
        #include "2440addr.h"
        #include "2440lib.h"
        #include "def.h"
        #include "fpga.h"
        void delay(int a) {//延迟
            int k;
            for(k=0;k<a;k++)
        }
        void start(){
            rGPJCON=(1﹤﹤2)+(0﹤﹤6); //设置I/O口GPJ1为输出属性,GPJ3为输入属性
            rGPJUP=0x1fff;//禁止GPJ端口的上拉
            rGPJDAT=(0﹤﹤1);//初始化时置低电平
            while(1) {
                rGPJDAT=(1﹤﹤1);//GPJ1置高
                delay(50);
                rGPJDAT=(0﹤﹤1);//GPJ1置低
                delay(500);
            }
        }
       
        4  仿真验证[5]
       
            采用QuartusII软件中的调试工具SignalTapII逻辑分析仪进行仿真验证。当采集输入为0.453 V直流量时,FPGA采集的数据仿真如图5所示。
       
            可以观察数据3337h、3333h、332Bh、3 337h等变化不大,仅在低5位有所变化。根据A/D采集原理,输入电压/参考电压=采样值/216。所给参考电压是2.25 V,采样值若取以上数据中的3 334h(在相对稳定的数据中任取一个),转换成十进制为13 108,代入以上公式: 13108×225/65536=0.45。得到FPGA读到的数据计算的输入电压是0.45 V,而此时测得的实际输入电压是0.453 V。误差很小,约为0.6%,基本由噪声所致,采得的数据比较精确。
       
            当采集输入为1.125 V直流量时,FPGA采集来的数据仿真如图6所示。同理若取其中的7FE0h,此时算得的误差约为0.8&permil;。
       
            当采集输入为1.16 V直流量时FPGA采集来的数据仿真如图7所示。
       
            从图中可发现此输入下数据已经达到满值(输入超过1.125 V),OF为高,说明数据有溢出。
       
            当采集输入是由信号发生器给的200 kHz正弦信号时FPGA采集来的数据仿真如图8所示。
            由一个周期采样点数公式N=Tsig/Tsam=fsam/fsig,知此输入频率下采样点数为40 MHz/200 kHz=200,若看坐标-250处的0F17h,则找出一个周期后的那个数是不是和初始值相同。FPGA坐标为150时的数据仿真如图9所示。它处在坐标150的位置为0F07h,和0F17h相差很小。取对应的多组数观察都证明对模拟信号的数据采集亦是比较正确的。
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/01/23/50ff6438ef1f8.gif] [/url]
        图5  当采集输入为0.453 V直流量时FPGA采集来的数据仿真
       
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/01/23/50ff64399b3c2.gif] [/url]
        图6  当采集输入为1.125 V直流量时FPGA采集来的数据仿真
       
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/01/23/50ff643a635a0.gif] [/url]
        图7  当采集输入为1.16 V直流量时FPGA采集来的数据仿真
       
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/01/23/50ff643b18cdd.gif] [/url]
        图8  当采集输入为200 kHz正弦信号时FPGA采集来的数据仿真
       
        [url=http://upload.semidata.info/new.eefocus.com/article/image/2013/01/23/50ff643bb9b3b.gif] [/url]
        图9  FPGA坐标为150时的数据仿真
       
        结语
       
            针对A/D转换芯片LTC2207,详细描述了以FPGA和ARM作为控制器的采样设计。采用FPGA直接对A/D进行配置,避免了采用DSP、单片机等进行配置的传统方式[6],因而设计灵活、简单、通用性强。通过对采集来的数据进行仿真验证,发现在ARM和FPGA的控制下16位A/D芯片LTC2207得到了很好的采集应用。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-2 04:59 , 耗时 0.088816 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表