• 首页 |  
  • 查询 |  
  • 供应 |  
  • 求购 |  
  • 资讯 |  
  • 产品中心 |  
  • 技术应用 |  
  • 商务中心 |  
  • IC供货商 |  
  • 下载中心 |  
  • 求职招聘 |  
  • 论坛 |  
  • 博客
  • 您所在的位置: 首页 > 新闻资讯 > 模拟技术 > 正文
    文章搜索:
    基于DSP和CPLD技术的多路ADC系统的设计

    http://www.ic36.com 2006年8月17日12:6 来源:今日电子 作者:西安电子科技大学通信工程学院 林成保 刘彦明

    引言
    --- 随着现代电子技术的应用和发展,数字信号处理的内容日益复杂,而ADC是实现从模拟到数字转换的一个必然过程。针对这种情况,利用数字信号处理器和可编程逻辑器件提出了多路ADC系统的设计方法,实现了对动态多路模拟输入信号的采样传输以及处理,简化了电路设计,可编程逻辑器件使得系统的通用性和可移植性得到良好的扩展。系统框图如图1所示。

    系统硬件设计
        本设计所采用的ADC器件是MAXIM公司的生产的低功耗16位模数转换器(ADC)MAX1162。MAX1162采用逐次逼近型ADC结构,具有自动关断、1.1μs快速唤醒和兼容于SPI/QSPI/MICROWIRE的高速接口,采用+5V单模拟电源,并且具有独立的数字电源引脚,允许芯片直接和+2.7~+5.25V的数字逻辑接口。REF引脚接外部参考电压,用于设定模拟输入电压范围,与模拟地之间连接一个4.7μF的电解电容;AVDD引脚是+5V电源供应输入端,与模拟地之间接一个0.1μF的电容;AGND是模拟地;CS是片选输入,低有效。当为高时,系统处于断电模式,由高变低时,激活系统到正常运行模式,同时初始化一次转换。本系统选择作为AD的使能信号;SCLK是串行时钟输入,驱动模数转换进程;DOUT是串行数据输出,数据状态在SCLK的下降沿改变;DGND是数字地;DVDD是数字电压供应,与数字地之间接一个0.1μF的电容;AIN是模拟信号输入端。

        该ADC系统的中央控制单元采用TI(德州仪器)公司的浮点数字信号处理器TMS320VC33-150,TMS320VC33的地址总线为24位,程序寻址范围可达16M,数据总线为32位,内部具有34K×32bit的SRAM,可根据需要映射在程序或数据空间,拥有一路串行口,可以构成传输8、16、24、32位的数据,其传输模式可以设置为突发模式或者是连续模式。两个32位的通用定时器,能够用来按照规定的时间间隔与芯片内部通信或者是和外部通信。



        本系统考虑到主要应用在ADC中,所以就直接采用TMS320VC33的数据总线和地址总线,没有再附加额外的电路,使得ADC的采样速度和转换精度得到良好的保证。同时还利用了INT2和XF0引脚,作为DSP接收数据的中断信号和ADC的使能信号。INT2是外部中断引脚,由外部的数据输入触发中断;XF0即外部标志输出引脚,受软件控制,可以用来向外部器件发送信号,该引脚的状态由I/O标志寄存器决定,IOF=0X22,即置XF0为通用目的输出引脚,同时该引脚输出0;若IOF=0X26,则置XF0为通用目的输出引脚,同时该引脚输出为1。本系统利用软件指令对XF0进行置高置低,控制ADC的启动转换和停止。

        EMP7512AE基于EEPROM技术,采用多电压I/O接口技术,系统内核供应电压为3.3V,而I/0引脚与2.5V、3.3V、5.0V逻辑电平相互兼容。EPM7512AE有10 000个可用门、512个宏单元、32个逻辑阵列块和212个用户可用I/0引脚。CPLD在系统中的主要功能是:给ADC转换提供时钟信号,控制ADC转换的使能和复位,由于采用的ADC芯片是串行输出的,CPLD还实现对串行数据的输入转为并行数据的输出,然后直接和TMS320VC33的数据总线相连接。同时CPLD产生脉冲信号,在ADC转换完成后,数据暂存在CPLD中,该脉冲向CPU申请中断,提示有数据需要接收。另外,CPLD的一个关键作用就是,实现路数的动态选择,目前设计的该系统最多路数为8路。CPLD和DSP及AD芯片的具体硬件连接图如图2所示。

    系统软件设计
         在软件设计中,通过CPLD程序对ADC转换进行动态控制,选通模拟信号输入端,对ADC进行使能,按照图3所示的转换时序图完成对MAX1162的数据采样及传输。
    下面给出VHDL语言的主要程序部分。

    BEGIN
    ADCS <= SYNTHESIZED_WIRE_12;
    ADA <= SYNTHESIZED_WIRE_2;
    GDFX_TEMP_SIGNAL_1 <= (L & L & H & H & H & L);
    GDFX_TEMP_SIGNAL_0 <= (H & L & H & H & L);
    U1 : lpm_bustri_0----三态总线缓冲器,允许采样的数据输出到DSP的数据总线上
    PORT MAP(enabledt => DRD,
    data => ADO,
    tridata => D);
    U2 : lpm_counter_1----计数器,把数据总线宽度改为3位
    PORT MAP(sload => SYNTHESIZED_WIRE_0,
    clock => SYNTHESIZED_WIRE_1,
    aload => XFA0,
    data => CMD(2 downto 0),
    q => SYNTHESIZED_WIRE_2);
    U3 : lpm_dff_1---D触发器,数据总线宽度为8位,接收来自于DSP的数据
    PORT MAP(clock => CMDCK,
    data => D(7 downto 0),
    q => CMD);
    U4 : lpm_compare_1---比较器,比较CMD(5..3)和CMD(2..0)的值,即轮询采样通道
    PORT MAP(dataa => CMD(5 downto 3),
    datab => SYNTHESIZED_WIRE_2,
    aeb => SYNTHESIZED_WIRE_0);
    SYNTHESIZED_WIRE_1 <= NOT(AQ(4));
    NRW<= NOT RW;
    CMDCK<= NOT( NOT PAGE3 AND(NOT RW)AND A6 AND A5 AND A4 AND (NOT A3));
    ----通道控制地址编码
    DRD <= NOT PAGE3 AND RW AND A6 AND A5 AND A4 AND A3;----采样地址编码
    CLKA <= NOT(CLK);
    U5 : lpm_counter_2---产生计数脉冲
    PORT MAP(sload => SYNTHESIZED_WIRE_3,
    clock => HFP(5),
    data => GDFX_TEMP_SIGNAL_0,
    eq => SQ,
    q => AQ);
    U5 : lpm_dff_5---缓冲器
    PORT MAP(clock => SYNTHESIZED_WIRE_12,
    data => SYNTHESIZED_WIRE_5,
    q => ADO);
    SYNTHESIZED_WIRE_12 <= SQ(12) OR 0 OR XFA0;
    SYNTHESIZED_WIRE_3 <= XFA0 OR SQ(14);
    ADEN <= NOT(XFA0);
    SYNTHESIZED_WIRE_10 <= HFP(5) AND HFP(4) AND HFP(0) AND SYNTHESIZED_WIRE_6 AND SYNTHESIZED_WIRE_7 AND SYNTHESIZED_WIRE_8;
    SYNTHESIZED_WIRE_7 <= NOT(HFP(2));
    SYNTHESIZED_WIRE_6 <= NOT(HFP(3));
    INTA2 <= XFA0 OR SYNTHESIZED_WIRE_9;
    U6 : lpm_shiftreg_1----串行数据输入转为并行数据输出
    PORT MAP(shiftin => ADOUT,
    clock => HFP(5),
    q => SYNTHESIZED_WIRE_5);
    U7 : lpm_counter_3---产生时钟信号
    PORT MAP(sload => SYNTHESIZED_WIRE_10,
    clock => H1CK,
    data => GDFX_TEMP_SIGNAL_1,
    q => HFP);
    SYNTHESIZED_WIRE_8 <= NOT(HFP(1));
    ADSCK <= NOT(HFP(5));
    SYNTHESIZED_WIRE_9 <= NOT(SYNTHESIZED_WIRE_12);
    H <= '1';
    L <= '0';
    END;

        把该VHDL程序写入到EPM7512AE芯片中的,对数据进行采样编程就简单了许多。在.CMD文件的MEMORY段中加入ADPORT :org=0x00c00070,len=9。然后通过自定义数据段把数组adport[8]映射到段ADPORT中。下面给出用C编写的采样主要程序。
    Main()
    {
    ……
    IOF = 0x26;/*置MAX1162数据输出端为高阻态*/
    adport[0] = 0x28;
    /*采样通道选择:0通道~5通道,总共6路;若设adport[0]=0x38,则通道为:0通道~7通道,总共8路。同理可进行其他设置*/
    IE = 4;/*中断使能*/
    IOF = 0x22;/*启动ADC*/
    /* adport[0]对应地址为0x00c00070,配置寄存器有6位,0、1、2位对应起始通道,3、4、5位对应结束通道。adport[8]对应地址为0x00c00078,是控制寄存器*/
    ……
    }

        在中断服务子程序接收采样的数据,程序如下。
    C_INT02()
    {
    ad[adi++] = adport[8];/*把采集的数据十六进制数据存入数组ad中*/
    If(adi>0x7ff) /*存入的数据大小为2K×16bit,根据内存大小动态改变*/
    adi &= ox7ff;
    }

    结论
        经过实际验证,本ADC系统在低成本的情况下的采样精度达到了13位,这在16位的ADC芯片中达到很好的水平,并被应用到高精度的工业控制中。利用TMS320VC33和EPM7512AE,灵活方便地实现了对高精度模数转换器MAX1162的控制和动态多通道采样,简化了系统设计的复杂性,同时使得DSP的编程处理变得非常高效简洁。若应用在要求更加严格的场面,本系统有待做进一步的改进,把ADC芯片更换为并行输出,同时把CPLD芯片更换为CycloneII FPGA,DSP芯片用TMS320C6713,同时加入噪声抑制设计,这样整个系统性能将会显著提高。在一定的条件下,和ADC模块相类似,本系统可以经过扩充,实现更多路的信号采集。

    参考文献
    1 徐惠民,安德宁编著.数字逻辑设计与VHDL描述.机械工业出版社, 2004
    2 张雄伟等著.DSP集成开发与应用实例.电子工业出版社, 2002
    3 MAX1162,16-Bit,+5V,200ksps ADC with 10μA Shutdown.MAXIM
    4 TMS320VC33 DIGITAL SIGNAL PROCESSOR, Texas Instruments Incorporated



    (关键词):DSP CPLD ADC

    IC型号速查
    [0]  [1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [A]  [B]  [C]  [D]  [E]  [F]  [G]  [H]
    [I]  [J]  [K]  [L]  [M]  [N]  [O]  [P]  [Q]  [R]  [S]  [T]  [U]  [V]  [W]  [X]  [Y]  [Z]
    相关链接
    ispMACF4000Z:低功耗的可在系统编程CPLD 2006-6-14 13:13:14
    基于DSP生成SVPWM在逆变电源中的应用研究2006-11-28 13:21:10
    通过外部基准调节MAX149x系列Σ-Δ面板表ADC的增益 2006-8-10 13:57:52
    用FPGA实现DSP与液晶显示器的快速接口 2006-9-2 10:54:30
    MAX12557型高速A/D转换器的特点及应用2006-9-7 13:31:01
    基于DSP56F805的便携式多功能超声波检测系统2006-9-7 9:45:48
    基于DSP的变压器直流电阻的“消磁动态”法测试研究2006-9-7 11:06:34
     我来评两句
    查看最新评论〗 

    昵称:  匿名
    请您注意:
    ·遵守中华人民共和国的各项有关法律法规
    ·承担一切因您的行为而导致的法律责任
    ·本网留言板管理人员有权删除其管辖留言内容
    ·您在本网的留言,本网有权在网站内转载或引用
    ·参与本留言即表明您已经阅读并接受上述条款

    芯片之家  电子之家  电子元器件之家  半导体之家  微电子之家 
    ·免费发布紧急IC求购 ·到哪里找工厂求购 ·全球最好十个IC网站 ·我为什么选择IC36
    ·IC是怎样炼成的 ·想知道所有的IC封装吗 ·如何鉴别旧货刷新货 ·芯片的前缀代表什么
    ·IC行业的网站体验 ·元器件常见问题解答 ·这里居然可以实时洽谈 ·有问必有答
    ·IC行业之25颗钻石 ·IC代理商查询 ·十家最牛的公司 ·中国IC公司200强
    元器件之家  晶圆之家  集成电路之家  电子元件之家  模块之家  电子管之家
    ·舍我其谁的高级会员 ·IC36是怎样收费的 ·网站广告是如何占领的 ·IC之家的增值服务
    ·我该到哪里去找工作 ·到哪里去招人呢 ·今日芯片需求排行 ·还有我们没有的型号吗
    ·中国IC行业的害群之马 ·中国最优秀的IC供应商 ·国外的IC骗子公司 ·信誉良好的IC供货商
    ·谁是IC之家的明星 ·做我们的代理吧 ·免费注册 机不可失 ·广告热线 010-51653935
    热 点 专 题
    热 点 论 坛
    关于我们 | 增值服务 | 免责条款 | 收费标准 | 付款方式 | 广告服务 | 网站地图 | 联系我们 | 友情链接 | 网站代理
    MSN:ic36@hotmail.com  QQ:IC之家 在线咨询  联系电话:(010)51653935 传真:(010)51653936 客户服务:service@ic36.com
    Copyright © 2003-2006 IC36.COM IC之家 本网站中文域名:IC之家 芯片之家
    京ICP证060068号