1数字存储示波器的总体系统设计
本文介绍的数字存储示波器是构建于嵌入式uCLinux操作系统平台之上,采用三星S3C44BOX芯片作为处理器,集数据采集、显示、打印、存储和分析等多项功能于一体的40MHz智能测试仪器。系统框图如图1所示。

1.1S3C44BOX微处理器简介
SamsungS3C44BOX是三星公司专为手持设备和一般应用提供的高性价比和高性能的微处理器,它使用ARM7TDMI核,工作在66MHz。为了降低系统总成本和减少外围器件,这款芯片中还集成了下列部件:8KBCache、外部存储器控制器、LCD控制器、4个DMA通道、2通道UART、1个多主IIC总线控制器、1个IIS(InterICSound)总线控制器,5通道PWM定时器及1个内部定时器、71个通用I/O口、8个外部中断源、实时时钟、8通道12位ADC等。
1.2A/D转换采集系统
由于数字存储示波器工作在40MHz,而S3C44BOX处理器内带ADC的工作频率最高只能达到50kHz,所以必须单独设计一个A/D转换采集系统,其组成如图2所示。

其中ADC采用Philips公司的TDA8768芯片,其性能为:12位高速A/D,采样频率为70MHz,-3dB的带宽可以达到245MHz。“放大增益选择”和“采样频率选择”分别控制系统中的放大滤波模块与ADC中的时钟输入端,以满足仪器的增益范围(100mV/div~5V/div)和时基范围(200ns/div~50ms/div)的要求,以上两者均为1-2-5步进方式,采样频率与放大幅度通过触摸屏设置。
1.3系统接口设计
根据数字存储示波器的随机采样原理得知:示波器每次触发以后,A/D转换器完成一组采样序列,并将其存入高速RAM中;稍后,由微处理器进行处理,显示在液晶屏幕上,这就是一次数据获得过程。系统接口具体方案如图3所示。使用微处理器S3C44BOX的I/O端口来读取数据并发出控制信号。其中“FIFORAM”为先进先出存储器,采用IDT公司的IDT72V02型号,最高转换速率为15ns,1024×9bit存储空间。

系统利用S3C44BOX微处理器I/O端口中的F端口实现数据的输入输出,利用D端口和G端口来进行控制。采集的信号经过A/D变换后首先进入FIFO存储器,当从FIFO中每读出一个数据后需要再向其发送一个读数脉冲信号,这样才能保证读出下一个单元内存储的数据,读数脉冲由G端口的第四位PG4给出。数据从FIFO存储器中被读出后经过数字锁存器进入端口F的数据寄存器PFDATA中,数字锁存信号由D端口的第四位PD4给出。当处理器读周期到来时,数据由端口被读入内存。每当数据采满1K时,FIFO存储器会产生一个中断信号,该中断信号由D端口的PD6输入给微处理器。
2系统软件结构
基于嵌入式数字存储示波器系统软件主要分为数据采集和存储模块、波形显示和刷新模块以及触摸屏控制模块3个部分。系统软件由uCLinux下的C语言编程实现。
2.1数据采集和存储模块
数据采集存储模块的流程如图4所示。

CPU首先向A/D数据采集系统发送所要求的频率和幅值信号,然后发出复位信号采集系统开始采集数据。采集到的数据经过FIFO存储器,由F口读入内存并存入指定数据缓冲区之中。在存储过程中,采用了双缓冲区机制,数据按1K大小分块,相邻的两块数据交替存放在内存的不同的区域中,在每读入1K个数据之后,内存中都存有连续的2K个采样数据,这样有助于以后对数据的处理和显示。
2.2波形显示和刷新模块
系统使用一块大小为240×320像素的256彩色液晶显示屏,其平面尺寸为93mm×75mm(长×宽)。微处理器S3C44BOX为LCD的控制提供了良好的支持,其实现主要通过微处理器中的LCD控制器来完成。波形的显示主要通过将数字量转换成液晶显示屏上点的坐标来实现,存放在内存中的数据经过坐标变换就可以在LCD上进行显示。因为LCD的坐标系与显示波形时所用的坐标系y轴方向相反,且需要将波形显示在屏幕的特定区域内,所以在显示之前要对数据进行归一化处理。从端口读入数据的范围为0~0xff,0点对应于LCD上y轴坐标的190,0xff对应于LCD上y轴坐标的50,则0x7f对应于LCD上坐标为120的点,即屏幕显示的零点,相应的转化公式为:Y=120-(data-0x7f)×0x7f,其中:data为从端口读入的数据;Y是data在LCD上显示的y坐标。LCD一屏可以显示300个数据点,点与点之间用矢量法直线相连。

2.3触摸屏控制模块
触摸屏是附着在LCD表面的一层透明薄膜,它将压力转换成模拟电信号,再经过模数转换送给系统。本系统触摸屏使用FM7843芯片控制。FM7843是4线电阻触摸屏转换接口芯片。它是一款具有同步串行接口的12位取样模数转换器。在125kHz吞吐速率和2.7V电压下的功耗为750μW,而在关闭模式下的功耗仅为0.5μW。图5为触摸屏工作流程示意图。触摸屏通过中断方式完成其功能,从执行流程上来说,首先在TouchPanelinit()中完成两件事:注册驱动程序和注册中断。对于触摸屏设备,主设备号为58,设备名为“FM7843”,驱动程序子函数集为TouchPanelfops。TouchPanelfops中指定了read,select,open,telease四个操作子函数的地址,依次为:ReadTouchPanel,TouchPanelSelect,OpenTouchPanel和CloseTouchPanel。当用户进程调用open()打开/dev/FM7843时,内核调用OpenTouchPanel();用户进程调用read()读该设备时,内核调用ReadTouchPanel()。requestirq()注册中断处理,中断为TOUCHPANELIRQNUM,中断处理程序为TouchPanelInterrupt(),说明为“TouchPanel”。当触摸屏被触摸有数据来到时,中断被触发,调用中断处理程序,准备处理数据。
该系统中触摸屏主要用于获取用户的控制信息,在LCD的上方显示有若干个触摸屏按钮,例如其中有幅值增加、幅值减小、频率增加和频率减小等。幅值和频率的选定值存放在指定内存单元中,当检测到触摸点的坐标在相应区域中后,系统就会根据程序预先设定来设定采样频率和幅值,这些在前、后台任务之间进行同步和通信。任务之间的通信是通过共享指定的物理内存单元来实现的,不同任务之间对共享内存单元的访问是互斥的。uCLinux的设计针对没有MMU(内存管理单元模块)的处理器,不能使用虚拟内存管理技术。uCLinux系统对于内存的访问是直接的,所有程序中访问的地址都是实际的物理地址,操作系统对内存空间没有保护。当触摸屏检测到有改变幅值或频率的信号发生时,就去修改指定单元中存储的数据,这样的内存单元对于两个任务来说属于临界资源,在触摸屏修改内存期间需要禁止其他程序对该内存进行任何操作。同样,采集程序每次在发送幅值和频率信号之前要对该内存单元进行读操作,若在此时有触摸屏信号对内存提出写操作要求,程序就应该进行等待,直到采集部分的读操作执行完毕,释放内存的访问权。
3结束语
基于嵌入式的数字存储示波器可以稳定、清晰地显示频率为0~40MHz的信号波形,便于捕获和显示那些可能只发生一次的事件。利用存储示波器本身和外部计算机可以方便地进行分析、存档和其他处理,为工业现场应用和科学实验提供了很大的方便。 |