- UID
- 1029342
- 性别
- 男
|
1 引言
嵌入式数字示波器是近年发展起来的一种实现数据及波形实时显示的智能终端设备。目前通用的数字示波器多采用DSP、内嵌微处理器型FPGA或DSP+FPGA结构。嵌入式数字示波器可看成是一种低成本、功能相对较少、可作为一个模块使用的嵌入式智能终端。虽然DSP数据处理能力强大,运行速度较高,FPGA灵活性强,可以充分地进行设计开发和验证,便于系统升级。但是,DSP和内嵌微处理器型FPGA一般价格较高。不适合在低成本的嵌入式数字示波器开发中使用。
ARM是面向低价位市场设计的一种RISC微处理器,其优势是性价比高,适合嵌入式数字示波器的需求。当前采用ARM芯片设计的嵌入式数字示波器主要基于ARM7内核的微控制器S3C44BOX。采用这种结构设计的嵌入式数字示波器,由于时钟频率和并行处理能力较低.因此通常用于通道数较少的设计中,无法满足对系统实时性要求较高的多通道嵌人式数字示波器的设计。本文提出了一种基于S3C2410A微控制器(ARM920T内核)和uC/OS-Ⅱ实时操作系统的设计方法,并在此基础上开发出一款低成本且具有中文菜单人机交互界面的4通道嵌入式数字示波器产品。
2 嵌入式数字示波器原理
系统的总体设计框图如图1所示。
根据项目需求,本项研究的主要性能指标:4通道输入,采样频率范围为2KHz~20 MHz,输入电压范围为0~±4V,频率、脉宽和幅值(满量程)精度:±0.5%,良好的人机交互界面。
采用S3C2410A和uC/OS..-Ⅱ相结合的设计方法。输入前端采用模数(A/D)转换和FIFO缓冲存储的结构.利用FIFO在读写控制逻辑、高速数据交换方面的优势,使多路数据采集和存储同步的同时,还可改变采样频率切换量程。多路数据传输利用DMA传输方式,提高系统运行效率。输出显示端利用S3C2410A的液晶屏控制器将数字量转换成液晶屏上的点坐标来显示4通道的波形以及相关数据。采用鼠标对人机交互界面进行操作,减小了系统的体积,提高了系统的可操作性。
图1嵌入式数字示波器原理框图
3 硬件设计
根据系统的总体功能划分,可将硬件设计分为数据采集模块和显示模块2大部分。
3.1数据采集模块
数据采集模块主要由MD转换和FIFO缓冲存储组成,系统接口如图2所示。
图2数据采集系统接口图
单路数据采集由1片运放(AD9631)、1片12位ADC (AD9224)、2片FIFO(IDT7204)组成。
AD963l是一种低畸变、低噪声、高速运放。主要提高输入阻抗,减小外接阻抗变化的影响。模拟输入经AD9631处理后至AD9224,在S3C2A10A的控制下,系统产生可调频率方波接为AD9224和IDT7204的工作信号。AD9224开始对输入信号进行模数转换.同时转换输出的数字信号保存到相应的FIFO中。FIFO存满时,S3C2410A通过DMA通道将多路FIFO中的数据依次存放到SRAM中的固定地址区域。
S3C2410A内ADC最高工终频率廷有2.5MHz。因此需外接高性能ADC(AD9224)。AD9224为单通道、12位.40MHz的ADC。A/D转换将数字信号发送到FIFO。
FIFO是一种先进先出结构,没有地址线,布线简单,因此仅用少量的系统资源就能实现数据的快速交换。两且控制简单,不会产生地址冲突。FIFO采用的是4K x 9bit的CMOS双端口存储缓冲芯片IDT7204。AD9224输出12位,而IDT7204输入9位,因此在ADC数据输出和FIFO存储接口设计上采用2片IDT7204进行字长扩展。FIFO缓冲存储实现的功能:接受写信号,存放经过转换的数字信号并依次增加地址,当FIFO存储满时,给出满信号;接受读信号,将FIFO存储的数据读出并存到SRAM中的同定地址处。
3.2显示模块
S3C2410A内置液晶屏控制器,可以支持水平/垂直像素、数据位宽、数据传输时间和刷新频率不同的多种液晶显示屏,最大可以支持256K色TFT、4K色STN彩色液晶屏。
液晶屏控制器主要用来传输显示信息和必要的控制信号.如VFRAME、VLINE、VCLK和VM等。除了控制信号外,还包括传输显示信息的数据接口:VD[23:0]。通过LCDCDMA来传输显示信息,LCDCDMA是一种复杂的DMA传输方式,通过使用这种特殊的DMA传输方式,可以将疑示信息从帧内存中自动传输到液晶屏驱动器,并且不通过CPU干预直接在显示屏上显示信息。
4 软件设计
根据系统的总体功能,可将嵌入式数字示波器的软件设计分为3个模块:uC/OS-Ⅱ的移植、数据采集和图彤形显示。
4.1 uC/OS-Ⅱ的移植
uC/OS-Ⅱ的移植是应用程序设计的基础。通过uC/OS-Ⅱ内核的任务调度,可解决传统嵌入式软件设计中出现的编程复杂、可维护性差和系统的实时性得不到保证等问题。
uC/OS-Ⅱ在S3C2410A上的移植,重点是uC/OS-Ⅱ的任务切换机制。任务切换通过软中断来实现,主要包含OS_TASK_SW与_OSStartHighRdy 2个函数。OS_TASK_SW总是在任务级代码中被调用。当操作系统作任务切换时,调用任务切换函数OS_TASK_SW,获取中断向量号并跳转到相应的服务程序OSIntCtxSw。该函数前半部分是切换前任务的参数压栈,后部分是即将运行的任务恢复.表现为参数出栈。后半部分有一个单独的标号OSIntCtxSw_1,在汇编下霹构成了2个嵌套函数OSIntCtxSw和OSIntCtxSw_1。其中OSIntCtxSw包含了OSIntCtxSw_1,OSIntCtxSw_1的主要功能是任务的恢复运行。 |
|