×

DSP与FPGA的高精度数据采集系统设计方案

消耗积分:1 | 格式:rar | 大小:0.3 MB | 2017-10-23

分享资料个

当前,许多领域越来越多地要求具有高精度A/D转换和实时处理功能。同时,市场对支持更复杂的显示和通信接口的要求也在提高,如环境监测、电表、医疗设备、便携式数据采集以及工业传感器和工业控制等。传统设计方法是应用MCU或DSP通过软件控制数据采集的A/D转换,这样必将频繁中断系统的运行,从而减弱系统的数据运算能力,数据采集的速度也将受到限制。本文采用DSP+FPGA的方案,由硬件控制A/D转换和数据存储,最大限度地提高系统的信号采集和处理能力。
  系统结构
  整个采集卡包括信号调理、数据采集、数据处理和总线接口设计。系统结构如图1所示。
  DSP与FPGA的高精度数据采集系统设计方案
  图1 系统结构框图
  本文设计了具有信号衰减、增益放大和滤波等功能的信号调理电路,采用16位精度、最高采样率为500KSPS的A/D转换器AD7676;数字系统设计利用FPGA极其灵活、可编程的特点,选用Altera公司FPGA芯片EP2C8Q208,完成精度校正和逻辑时序控制;DSP采用TI公司的TMS320VC5416,使A/D转换后的数据在传输到上位机之前,进行数据整理、标记、打包以及数据预处理。数据采集卡可同时进行8通道数据采集,通道可进行衰减倍数、采样速度以及放大增益设置。同时提供模拟输出通道,用于实现波形产生和模拟驱动功能。能够进行自动校准,保证数据采集的准确性。PCI总线接口电路采用PLX Technology公司的PCI总线接口芯片PCI9030,完成数据采集和状态、控制信号的传输。
  系统硬件电路设计
  数据采集模块设计
  从传感器送来的8路模拟输入信号通过多路模拟开关ADG507选择进入模拟通道,如果多通道同时采集,则采用时分复用方式,由FPGA依次控制各通道的通断。模式选择开关ADG509为四选一模拟开关,可分别选择被测模拟信号、标准参考电压值或用于通道校准的、经过DAC转换后的信号进入后级滤波衰减网络电路。送入ADC的信号要先经过低通滤波,以滤除高频噪声。滤波电路设计为二阶阻容低通滤波器,对频率高于50KHz的信号滤波。衰减电路设计为有源衰减,选用Linear公司的差分放大器LTC1992,可完成输入信号极性转换,实现单端信号转差分信号,同时通过由FPGA控制继电器选通不同的电阻网络调整衰减倍数,可实现对不同电压输入范围信号的调整,以满足AD7676的输入电压范围。信号增益可编程放大器LTC6911可通过编程设置以1、2、5步进变化的1 V/V“100 V/V增益倍数 ,数据采集过程中通过FPGA内部的比较电路自动调整增益放大器增益倍数,极大提高了对微弱信号的分辨能力。AD7676为差分信号输入, MAX6325基准源提供基准为2.5V的参考电压,采样时钟由晶振提供10MHz时钟信号经FPGA内部分频电路得到,单通道最高采样率为500KSPS。
  FPGA电路设计
  FPGA芯片也是一种特殊的ASIC芯片,属于可编程逻辑器件,它是在PAL、GAL等逻辑器件的基础上发展起来的。同以往的PAL、GAL等相比,FPGA规模比较大,适合于时序、组合等逻辑电路应用。本文选用Altera公司的FPGA芯片EP2C8Q208,完成数据采集卡的时序和地址译码电路设计。由于EP2C8Q208有36个M4K RAM,在FPGA内部设计一个16位宽度、4KB深度的FIFO,使用FIFO提高数据采集卡对多通道信号的采集存储能力。FIFO有半满、全满、空标志位,当DSP检测到半满标志位时,FIFO同时读写;全满时只读不写;空时只写不读。A/D采样控制信号由DSP通过FPGA控制;DSP对采集后的数据进行进一步处理,以提高精度,也具有传统CPU或MCU的功能,对时序、触发、DMA中断请求作出相应处理。
  DSP电路设计
  DSP采用 TMS320VC5416,它是16位定点DSP,具有高度的操作灵活性和很高的运行速度,采用改善的哈佛结构(1组程序存储器总线,3组数据存储器总线,4组地址总线),具有专用硬件逻辑的CPU、片内128KB的存储器、片内外设,以及一个效率很高的指令集。
  DSP 在系统中的作用主要是将A/D转换后的数据在传输到上位机之前,进行数据整理、标记、打包以及数据预处理。数据采集系统所有控制信号都由DSP控制FPGA逻辑电路产生。DSP外挂Flash存放DSP程序及其它配置数据,在上电时,DSP采用并行方式调入DSP内部执行。
  校准电路设计
  校准电路是本设计的重要环节,数据采集卡的高精度性能不仅取决于高分辨率的ADC,在更大程度上要依靠该数据采集卡优良的自校准和抗噪声能力来实现。
  校准时,DSP发出标准值,经D/A和A/D转换后,所采集的数据值与原标准值相比较,取其偏差系数组成去噪方程,以实现数据采集卡的自校准。
  PCI总线接口电路设计
  PCI总线规范十分复杂,其接口的实现比较困难。数据采集卡采用PCI9030作为用户接口,为PCI总线接口的开发提供了一种简捷的方法,只需设计简单的局部总线接口控制电路即可实现PCI总线的高速数据传输。使用Altera 公司的Quartus II,使得硬件实现软件化设计,更新了传统的电路设计和调试方式,大大缩短了开发周期,特别是其设计仿真和定时分析使得设计更加可靠,确保了系统的正确性。
  系统软件设计
  驱动程序设计
  在Windows98/ 2000/ XP 环境下,处于Windows 用户态的应用程序不能直接对硬件设备进行操作,要实现对数据采集卡的硬件资源(如内存、中断等)的访问,必须编写运行在核心态的设备驱动程序。目前,使用较多的开发工具是GUNGO公司的驱动程序开发组件WinDriver。利用WinDriver开发驱动程序,不需熟悉操作系统的内核知识。整个驱动程序中的所有函数都是工作在用户态的,通过与WinDriver的.VXD和.SYS文件交互来达到驱动硬件的目的。因为 WinDriver 开发环境提供了针对 PLX 公司芯片的存储器范围、寄存器和中断处理等模块,所以本文采用了GUNGO公司的 WinDriver5.3开发工具,它支持PLX公司的PCI接口芯片,用户无需具有DDK和核心态程序开发经验,调试时可结合 PLX 公司的 PLXmon 工具。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'DSP与FPGA的高精度数据采集系统设计方案',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);