我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 666|回复: 0

基于CPLD与单片机的高速数据采集系统 - FPGA/CPLD - 电子工程

[复制链接]

该用户从未签到

1万

主题

1292

回帖

2万

积分

管理员

积分
29577

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:40:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
<strong>1 引言</strong>

高速数据采集系统广泛应用于网像信号采集、雷达、软件无线电等技术领域。在传统的以MCU为控制器的数据采集系统中,数据采集频率直接受到MCU速度的限制。在采样频率要求较高的场合。MCU和数据存储的同步将成为问题。

以CPLD为代表的可编程逻辑器件以其工作速度快、灵活的可编程能力等特点越来越受到人们的广泛应用。它弥补了以MCU为控制器的传统数据采集系统的不足。

<strong>2 系统硬件设计</strong>

本文设计的高速数据采集系统采用ALTERA公司的MAX7000系列产品之一的EPM7128SLC84作为控制器,选用TI公司的TLC5510作为模数转换器,其采样频率可以达到20MSPS,8位并行输出。RAM选择ICSI公司的61C256。系统的硬件原理
如图1所示。


<ignore_js_op>





2010-4-8 16:14:36 上传
<strong>下载附件</strong> (11.81 KB)




</ignore_js_op>

图1系统原理图

在该系统中,CPLD和单片机一同构成了系统的控制核心。CPLD与RAM的接口信号分为三类:地址信号、数据信号和控制信号。由于本系统采样数据达到2KB即可满足要求,因此地址信号线为12位,RAM的A12-A14接地;数据信号为8位;控制信号为写使能WE和片选CE。CPLD对TLC5510的接口包括时钟信号CLK和数据输出使能OE。TLC5510的数据输出端口和RAM的8位数据线相连,以便将AD转换后的数据写入RAM中。

P80C552和CPLD之间的接口信号包括两类:数据信号和控制信号。在CPLD侧.8位的数据总线与单片机系统数据总线D0~D7相连.用以单片机读取A/D转换后的数据。控制信号包括读信号RD,写信号WR和地址译码信号Yl及Y2。

2.1 CPLD控制器

CPLD控制器主要负责A/D转换并将转换得到的数据写入SRAM中。对TLC5510的控制按照TLC5510数据手册给出的典型电路实现:在转换控制信号ADCLK的每一个下降沿开始采样,第n次采集的数据经过2.5个时钟周期的延迟之后,送到内部数据总线上。此时如果输出使能OE有效.则数据便可被送至数据总线上。启动后A/D转换无须控制,将连续不断的以转换时钟频率输出转换后的并行8位数字信号。

在转换过程中,CPLD同时控制采样数据写入RAM中,这样就必须考虑TLC5510采样和61C256写入的时序匹配。在设计中,首先对clk 40MHZ信号2分频得到20MHZ信号,将此信号作为TLC5510的采样时钟ADCLK。TLC55lo在ADCLK的下降沿采样,CPLD在ADCLK的上升沿读取转换后的数据写入RAM中。

图2为CPLD对SRAM的控制逻辑电路。主要包括以下几个部分:

(1)写地址产牛器:由于61C256为32Kx8的SRAM,故写地址产生器用15位寄存器实现。靠ADCLK时钟驱动,每进行一次写操作后,读写控制单元使其加1。写RAM操作发生在系统采样前的RAM单凡清零和采样过程中。

(2)读地址产牛器:读地址产牛器也用15位寄存器实现。单片机每次发出读信号对RAM读操作后,读写控制单元使其加1,下次单片机从此位置读取数据。

(3)读写控制:当需要对SRAM进行写操作时,由CPLD控制产生写地址选通信号RAMWR,片选信号RAMCE,同时给数据线上送数据,而写地址选通信号上升沿到来时使写地址寄存器增1,使CPLD输出写地址。对SRAM进行读操作相对较简单,在进行读操作期间,RAMCE始终为低电平。每进行一次读操作,地址按系统要求变化一次。


<ignore_js_op>





2010-4-8 16:14:36 上传
<strong>下载附件</strong> (2.88 KB)




</ignore_js_op>

图2 SRAM读写控制

2.2 MCU控制器

单片机主要控制对A/D转换的启动及对保存在RAM中的数据读入以备后续处理。在图l的系统原理中,Yl、Y2为单片机部分通过74LSl38泽码器产生.RD、WR为单片机的读写信号。当Y1和WR有效时,MCU指示CPI.D控制完成对SRAM地址单元内容的清零,并复位CPLD内部写地址寄存器值;当Y2和WR有效时.MCU指示CPLD开始进行A/D采样;当Y2和RD有效时,CPLD对61C256读取一个单元并通过I/O口将数据送至单片机数据总线上。本系统中,61C256的读信号直接由单片机RD信号控制,无须CPLD控制产生。

<strong>3 软件设计</strong>

3.1 CPLD部分的软件设计

CPLD在每个ADCLK时钟的下降沿,检测信号Y1、Y2、WR和RD信号的变化,根据2.2节中MCU控制器部分给出的功能描述来完成具体的操作。

以下是用Verilog HDL语言描述的CPLD控制程序主要代码:

<ignore_js_op>





2010-4-8 16:14:36 上传
<strong>下载附件</strong> (14.6 KB)




</ignore_js_op>


<ignore_js_op>





2010-4-8 16:14:36 上传
<strong>下载附件</strong> (9.42 KB)




</ignore_js_op>


在上述程序中,clraddr、wraddr和rdaddr为CPLD内部清零地址寄存器、写地址寄存器和读寄存器,用以产生RAM的读写地址。clrbz、cvbz为CPLD内部RAM清零和采样标志,当这两标志为1有效时,CPLD分别控制完成61C256地址单元内容的清零和外部采样操作,操作完成后两标志被清0表示无效。流程中的数值N可根据实际需要的采样点数来调整。

3.2单片机部分的软件设计

单片机软件部分相对简单,只要根据Yl、Y2的具体地址,参考MCU对外部SRAM的读写操作来方问即可。本设计中,将61C256中的采样数据读取到单片机部分,以便进行液晶显示等后续处理。具体程序段参考如下:

/* 产生Y1和WR有效信号,指示CPLD清SRAM 2K单元 */
/*((unsigned char xdata *)CPLD_Y1ADDR)=0x00;
/*产生Y2和WR有效信号。指示CPLD开始采样*/,
*((unsigned char xdata *) CPLD_Y2ADDR)=Ox00;
for(i=0:i<2048;i++) //通过CPLD读取SRAM 2K单元内容
{
/* 产生Y2和RD有效信号。读61C256中的数据 */
to_data [ i ]=* ( ( unsigned char xdata * ) CPLD_Y2ADDR);
}

<strong>4 仿真和实验结果</strong>


<ignore_js_op>





2010-4-8 16:14:36 上传
<strong>下载附件</strong> (8.59 KB)




</ignore_js_op>

图3 CPLD采样和渎写SRAM仿真波形

图3为CPLD采样和读写SRAM的仿真结果。在仿真过程中,选取采样点数为6进行测试以方便观察。当MCUWR和Yl信号有效时,由CPLD控制产生对SRAM的片选和写信号,连续对SRAM单元内容清O;当MCUWR和Y2信号有效后,CPLD输出给TLC5510的采样时钟,在2.5个ADCLK周期后,产生TLC5510的输出使能信号,同时控制61C256的写操作,将采样数据连续写入SRAM单元。仿真过程中,在数据总线上模拟了采样的6个数据。当MCURD和Y2信号有效时,CPLD给出61C256的片选信号和地址信号,读出一个单元的数据,若再次读,则地址单元加1。

<strong>5 总结</strong>

本文设计的基于CPLD与单片机的高速数据采集系统在QUARTUS II软件中进行了仿真并达到了预期的控制逻辑。该系统的实际电路在新型匝问间耐压测斌仪的开发中得到了成功的应用。本文创新点:本文的设计方案对于其它高速数据采集系统设计具有借鉴价值,通过选择不同采样频率的A/D转换器,系统可满足不同应用场合的需求,因而系统具有普遍使用性。

项目经济效益(300万元)


作者:万军  来源:《微计算机信息》(嵌入式与SOC)2009年第4-2期</i>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

公告:服务器刚移机,
大家请不要下载东西。
会下载失败


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表