摘要:本文提出了一种基于DSP+FPGA的嵌入式便携数字存储示波表的设计方案,充分利用微控制器技术和ASIC技术实现了嵌入式实时处理,很好地达到了体积小、重量轻、功能强、可靠性高的要求。
关键字:便携式数字存储示波表,数字信号处理器,现场可编程门阵列,嵌入式设计
1. 引言
随着大规模集成电路技术、信号分析与处理技术及嵌入式微处理器软硬件技术的迅速发展,现代电子测量技术与仪器领域也在不断探讨新的仪器结构和新的测试理论及方法。集数字存储示波器、数字万用表、频率计三者功能于一体的便携式数字存储示波表正代表了当代电子测量仪器发展的一种新趋势。便携式数字存储示波表具有体积小、重量轻、成本低、不需交流供电、可靠性高、使用简便等一系列特性,非常适合于使用在有电源、空间、运输等条件限制的环境下。
便携式数字存储示波表集A/D技术、ASIC技术、DSP技术、LCD显示技术于一体,具有极高的技术含量、很强的实用性和巨大的市场潜力。目前国外已有较成熟的产品,而国内在该领域的研究尚属起步阶段。本文所述方案采用嵌入式设计技术,成功地实现了对被测信号的实时处理与分析。
2. 便携式数字存储示波表的硬件设计思想
2.1 硬件系统结构设计
便携式数字存储示波表硬件上主要包括模拟通道、数据采样、数据处理、显示控制等模块。图1所示为一种传统的以微控制器(DSP)为核心的示波表结构设计方案。该方案的缺点是:系统只能将DSP做为核心控制器件,造成DSP任务繁重、接口复杂。
为解决上述问题,本文采用了基于DSP+FPGA结构的嵌入式设计方案,如图2所示。其中FPGA主要集成了以下部件:
(1) 2K字节的FIFO及FIFO控制器:FIFO用来缓存高速ADC采集的信号数据。系统无有效触发信号时FIFO工作在环形方式,
不断写入ADC送来的采样数据;当触发信号有效后,FIFO工作在桶形方式,FIFO控制器将根据DSP预先写入的"预触发/后触发时间" 控制字设置FIFO读指针位置,一旦FIFO写"满"后就停止写入,并由FIFO控制器通知DSP取走这一屏的采样数据;
(2) 2K字节的显示缓存:用以缓存从DSP送来的LCD显示数据,并等待LCD控制器取走送LCD显示;
(3) 外围控制器部分:
a. 测频测周电路:接收模拟通道送来的整形后的测量信号,测得被测信号的频率/周期值并等待DSP读取;
b. 采样频率控制电路:根据DSP写入的控制字分别控制ADC采样频率及FIFO写频率,以最大限度地利用有限的FIFO空间实现宽频采样;
c. 触发仲裁:确定是否抑制模拟通道送来的触发信号;
d. 总线仲裁:对DSP产生的地址信号及控制信号进行译码以完成对外部设备的操作,并负责协调FIFO和显示缓冲可能存在的读/写冲突;
e. LCD控制器:产生LCD显示所需的各种时序信号,并负责从显示缓存中读取数据送LCD显示屏;
可见,本设计将除模拟通道、ADC、DSP及LCD显示屏之外的绝大部分功能部件都集成在FPGA内部。FPGA硬件在解析DSP预先写入的少量控制字后即可自动完成数据采样、信号频率/周期测量以及波形显示等底层控制功能,而DSP则被解放出来主要负责数据编码、波形恢复及人机界面等上层数据的控制处理。
总之,为最大限度地充分发挥可编程ASIC芯片在嵌入系统设计中的作用,本设计使用FPGA分担部分系统控制任务,使DSP能够更好、更有效地发挥其数据处理的特长;同时,FPGA的使用使系统中分立功能部件大大减少,也有效地缩减了系统的体积和功耗,增加了系统的可靠性。
2.2 显示缓存的设计
本系统中对LCD显示缓存的设计是需要着重考虑的。为解决"DSP不断写(刷新)"和"LCD控制器不断读"的矛盾,通常系统中需要设置两片独立的RAM 芯片,并引入复杂的"PING-PANG"切换控制机制,以保证DSP写操作和LCD读操作总是针对不同的RAM芯片。而在本设计中,我们直接使用了 FPGA内部的双口块RAM资源,一方面FPGA内部的RAM控制电路实现对双口RAM的异步读/写,保证显示数据更新在时间上的连续性;另一方面,由 FPGA分别定义的不同宽度的读/写数据端口自动完成了数据宽度的转换。
这里的一个实际问题是:FPGA内部双口块RAM容量是有限的。本设计采用的FPGA内部只有2KB容量的双口块RAM,而我们选用的320×240的 LCD一整屏的显示数据需要将近10KB(9,375B)单元来存放。一种解决的方法是:系统将一屏显示数据分为5帧来处理,FPGA以定时中断的方式向 DSP申请数据刷新,而每次中断DSP将向显示缓冲中写入1/5屏的数据。实际证明,只要设计好时序关系,系统的工作是非常稳定的。
3. 便携式数字存储示波表的软件系统框架
3.1 软件系统结构设计
为了提高系统的可维护性和可扩展性,本文示波表精心设计了一种模块化的层次软件体系架构,如图3所示。
其中:
(1)硬件接口层:主要包括底层驱动程序(以函数形式提供),如硬件初始化代码、DSP中断服务代码(FIFO送来的读中断及显示数据刷新定时中断)、基本显示模式(点、线、字符、汉字、栅格等)代码、DSP写显存代码、DSP读FIFO代码以及DSP对其它端口的访问代码等等;
(2)内核层:根据当前测试需要调用不同功能模块以协调完成测试任务;可调用的模块包括通道控制模块、采样时钟控制模块、时基/幅基调整模块、显示数据处理模块、波形数据处理模块(包括插值子模块、信号参数计算子模块、频谱分析子模块等等);
(3) 用户界面层:包括键语分析及键值散转模块、菜单显示模块; 为提供良好的人机界面,并组织协调完成众多的测量任务,本系统中软件工作量比较大、软件功能比较复杂。采用这样的层次模块结构后,只要各模块(函数)接口定义得清晰明确并具有一定的通用性,就可以建立良好的软件系统框架,使得软件的更新和维护非常方便。
3.2 软件流程设计
图4所示为本示波表软件工作流程,主要包括三部分:
(1) 初始化模块:包括DSP片内寄存器初始化、DSP片外外围器件初始化、示波表测试条件初始化、全局消息变量初始化及显示缓冲初始化等。
(2)工作方式设定模块:如需要,程序将根据用户按键输入状态设置(Manual工作方式)或根据被测信号的变化自动调整(Auto工作方式)示波表当前工作方式――包括通道控制、采样时钟控制、时基/幅基调整及对FPGA内控制字的更新等。
(3) 信号数据的处理及显示模块:读入本次触发后采集的波形数据(包括测频测周数据),并对波形数据进行处理――包括插值处理、频谱分析、信号参数计算、显示数据映射处理等。
4. 系统性能
本设计采用了Motorola公司的16位嵌入式DSP(56805)和Xilinx公司的FPGA(XC2S50)来实现,系统整合后已经验证,达到以下指标:
(1) 模拟带宽10MHz,单次带宽5MHz;
(2) 最高取样率40MS/s;
(3) 水平扫描时基50ns/div~10s/div,垂直扫描 幅基5mV/div~5V/div;
(4) 可测信号参数:频率、周期、平均值、有效值、峰峰值等;
目前系统中的DSP和FPGA资源都还留有较大富余量,极有利于系统的进一步改造、升级。
5. 结论
在实时信号处理系统中,通常底层的信号预处理算法处理的数据量大,对处理速度的要求高,但运算结构相对比较简单,适于用硬件实现;而高层处理算法的特点是数据量较少,但算法的控制结构复杂,适于用运算速度高、寻址方式灵活、通信机制强大的DSP芯片来实现。本设计因此采用DSP+FPGA结构同时兼顾速度及灵活性,其中底层FPGA硬件完成数据采样、信号频率/周期测量以及波形显示控制等功能,而上层DSP软件则负责实现数据编码、波形恢复计算及人机界面的处理。
随着测试技术的进一步发展,便携式仪器的市场前景越来越广阔,本设计基于DSP+FPGA的嵌入式系统结构的研制成功,有效地减小了体积,降低了功耗,增强了可靠性,为国产数字示波表的进一步研制和开发做出了有效的尝试,并且对其它数字仪器仪表的小型化设计也具有一定的指导意义。 |