DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1463|回复: 1
打印 上一主题 下一主题

[待整理] 一种简易数字波形存储器的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 09:57:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一种简易数字波形存储器的实现

摘要:给出了采用类似DMA的设计思路以及使用双口RAM、快速逻辑电路和CPU(AT89C51)组成的数字波形存储系统的整体电路,从而解决了波形数据的快速采集和输出显示问题。    关键词:DMA;双端口;RAM;存储器;AT89C51 GAL
随着信号处理技术的发展,波形存储变得日益重要,各种类型的波形存储装置也越来越多。相对于其它波形存储装置,本文给出的设计的最大特点是速度快,可进行DMA存储,且不占用CPU时间来对信号进行处理。

1 系统的总体设计
由于本设计采用了双口RAM和DMA思想,而且数据的采集、存储与输出均由逻辑电路控制,因此,提高了数据示波器的采样速度,同时易于实现“实时显示”,并可在“伪”实时处理时对数据进行操作。此外,数据的实时显示和“伪”实时处理可通过“DMA允许”来控制,其总体设计方案如图1所示。

    1.1 输入电路
本设计的输入电路实际是一个可调增益电路,主要完成对信号的放大。本设计设置有0.01/div、0.1/div和1/div三档垂直灵敏度,可分别对输入信号进行1倍、10倍和100倍的放大。具体可采用以下两种方案:
(1)采用可编程增益运放来实现1、10、100的放大倍数。由于采用集成运放,因而精度较高,调试方便,但造价也较高。
(2)采用三级放大,第一级为跟随器方式,后两级的放大倍数均为10,每一级放大后都有一个输出抽头。具体连接如图2所示。
1.2 A/D转换器的选择(1)
A/D转换器是波形存储的关键部件。它决定了示波器的最大采样速率以及分辨率。目前常用的A/D转换器的输出形式有并行和串行两种,其转换方式有逐次逼近型ADC、积分型ADC、∑-Δ型ADC与流水线型ADC。
对本设计来说,显然应该选择高速A/D。综合考虑各方面的因素,笔者选用了8位CMOS、20MSPS模拟-数字转换器(ADC)TLC5510。
如果需要进一步提高存储示波器输入信号的频率,可考虑并行A/D,即用两片A/D对一路信号进行分时采样,因为这样可在不提高器件频率特性的基础上将输入信号的带宽提高一倍。以此类推,可并联多块A/D以使输入信号的带宽进一步得到提高(本设计中不涉及此项,有兴趣的读者不妨一试)。
1.3 存储器的选择
笔者在本设计中选用了两片双口4kB的RAM IDT7134(4kB)。它在双路使用时,一路对应一个存储器。使用双口RAM便于对波形进行实时处理和“伪”实时处理。
1.4 触发电路的设计
触发电路在设计时有三种方案,其一是采用可调电阻。因为该输入信号处在一个连续的范围内,即触发电平可以连续变化,因此采用可调电阻能简化电路。 其二是选用数字电位器代替模拟电阻。该方案虽然可实现程序控制,但触发电平不能连续可调,且会增加系统的控制任务。其三是由D/A转换器组成的触发电路,如图3所示。在该电路中,触发电平与Di输入的关系为:
V=VREF Di/2n
式中,n为D/A的位数,VREF为基准电压。
利用D/A触发电路能满足触发电平可调的要求,但会增加系统的复杂度。因此,应综合考虑以上三个方案。
1.5 GAL和控制电路
a. GAL器件
GAL2器件通常采用E2CMOS工艺制造,E2CMOS工艺的特点是可试验性、低功耗、高速和立即可擦写。目前最常用的GAL器件有GAL16V8和GAL20V8两种系列,它们最多有8个输出端(也可编程输入),分别有16和20个输入端。
GAL器件的特点如下:
● 方便编程,编程单元和逻辑配置可重复进行编程;
● 高性能的E2CMOS工艺使得器件的功耗很低(最大运行功耗为45mA),速度高(存取速度为15~25ns);输出逻辑宏单元的配置使设计具有更大的灵活性;
●具有保密单元,可对程序进行加密以保护知识产权。
除此之外,GAL器件还具有输出寄存器的预加载功能以及锁定保护、输入缓冲和加电复位等技术特性和功能。
笔者选用GAL16V8来完成图4所示的逻辑功能。其GAL输入输出端口的逻辑关系为:
(abel语言)
Aout=(A0#A1#A2#A3);
Bout=!(B0#B1);
Cout1=!(C1);
Cout0=(C0&!S0#!C1&S0#!C2&S0);
系统中数字部分的逻辑关系均可由GAL来实现,这样不但可使电路得到简化,同时也可以提高系统的可靠性。
b. 数字控制电路
图5所示是该系统中数字控制电路的工作原理图。当系统工作于实时显示模式时,CPU首先对所有控制电路进行复位,并使地址计数开始,然后在每一个时钟完成A/D的数据输出、写入RAM和D/A直接输出。直到地址溢出(满屏显示所需数据量)后,再将写RAM地址计数信号禁止,同时给出CPU存储完毕信号。
当系统进行波形锁存时,A/D将停止工作,并将满屏所需的数据量存于RAM中,此后计数器只需给出地址,即可由D/A输出波形。
在进行波形移动时,如果在锁存信号方式的基础上一屏显示未定,那么,CPU将对地址预置数+N(或-N),并会在输出波形后将新的预置数送入地址口线,此时的CPU可再设定下次显示的首地址,这样即可实现波形的左右移动,从而显示出波形的任意一部分。

2 系统软件设计流程
本波形存储器系统的主程序分为初始化和键盘管理两部分。图6为其主程序框图。其中初始化模块主要是在系统加电后完成对单片机系统即外围元件的初始化如对PS7219初始状态的设定、对定时器和DMA系统初始状态的设定以及为系统变量赋值等。
由74LS148和74LS76组成的8按键键盘管理模块由AT89C51采用查询方式进行处理。为了提高系统的可靠性,此处没有使用中断方式。键盘管理的功能是根据按键的功能号和当前状态来转入相应的状态,并执行有关功能模块,然后进入下一次循环。为了方便键盘的管理,本设计专门开辟了一个8字节的RAM区作为键盘的管理控制区(这样)每次处理键盘服务程序时只须访问此区即可。

3 可靠性设计
为了提高本系统的可靠性,本设计还采用了以下几项措施:
(1)采用监控电路。对单片机系统进行监控。笔者在设计时,采用的是MAX813微处理监控芯片,通过该芯片可使程序在进入死循环时能够重新复位,从而保证了软件系统运行的可靠性,同时,在系统软件设计时,笔者还采用了软件看门狗技术。
(2)在可靠性方面。系统初始化时,也已用单片机对所有端口按各子模块要求进行了相应设置。

    (3)系统开启后,存储器会首先运行自检程序,以检查存储单元。若发现有连续9个存储单元已坏,则在数码管上显示“-error-”,否则显示“success”。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-24 02:14 , 耗时 0.098110 秒, 20 个查询请求 , Gzip 开启.

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

桂公网安备 45031202000115号

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

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

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

QQ:28000622;Email:libyoufer@sina.com

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

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