基于FPGA技术的数字存储示波器设计

目录

摘要

Abstract

第1章  前言………………………………………………………………….1

1.1 数字存储示波器的发展概况…………………………………………….1

1.2 本文所做的研究工作…………………………………………………….1

第2章  示波器的工作原理……………………………………………..3

2.1 模拟示波器的基本工作原理…………………………………………….3

2.2 数字存储示波器的工作原理…………………………………………….4

第3章  DSP处理器和FPGA的开发过程简介…………………..5

3.1 DSP处理器的开发过程和应用…………………………………………..5

3.2 FPGA的开发过程与应用 ……………………………………………….6

第4章  整体设计方案…………………………………………………….8

4.1 系统整体设计流程图…………………………………………………….8

4.2 整个系统的性能指标…………………………………………………….9

4.3 系统的实现方案………………………………………………………….9

4.4 元器件的选择…………………………………………………………...11

第5章 整个系统硬件设计…………………………………………12

5.1 前端数据采集部分硬件电路设计……………………………………...12

5.2 FPGA外围电路的设计和内部逻辑电路设计………………………….17

5.3 DSP部分的硬件设计……………………………………………………24

第6章 系统软件设计…………………………………………………….29

6.1系统初始化………………………………………………………………29

6.2数据处理的相关算法……………………………………………………33

6.3波形显示程序……………………………………………………………35

第7章 结束语……………………………………………………………….37

答谢辞

参考文献

摘要

数字存储示波器在仪器仪表领域中占有重要的地位,应用范围相当广泛,所以对示波器的研制有重要的理论和实际意义。本文针对数字存储示波器的设计进行了深入的研究,旨在研制出100MHz带宽的数字存储示波器。

从各个方面考虑,选用了DSP、FPGA和单片机的方案来设计整个系统。整个系统采用单通道的方式。信号进来首先经过前端的调节电路把信号电压调整到AD的输入电压范围之内,这里调节电路主要是由信号衰减电路和信号放大电路所组成。调节后的信号再送到AD变换电路里面完成信号的数字化。然后把AD转换后的数据送到FPGA中,并把数据保存到FPGA中的FIFO中,FPGA中的电路主要包括有FIFO、触发系统、峰值检测、时基电路等。

由于本文采用FPGA,使得数字存储示波器的设计比较灵活,容易升级。可以根据自己的需要进行相关的改进,例如对外围电路做进一步地扩展。

关键词:DSP;FPGA;LCD单片机;数字存储示波器

ABSTRACT

Digital storage oscilloscopes play an important role in the field of instrumentation,it has a wide range of applications,the development of the oscilloscope has a very important theoretical and practical significance.In this paper, we have do a lot of work to the design of digltal storage oscilloscope.The goal is aimed at the development of the repeat 100MHz bandwidth digital storage oscilloscope.

Considereing from various aspects,we select DSP,FPGA and microcontroller to design the whole system.The whole system is single channel.The signa that come in from the first front-end have been changed a fit voltage which put into a voltage signal AD.Front-end circmts here mainly are composed of by signal attenuation and signal amplifier circuit.After the front-end,the signals have changes the digital signal the by AD circuit.This data has been sent to FPGA,the data is saved to the FIFO in the FPGA.The main circuit in the FPGA,including FIFO,the trigger system, the peak detection circuit,time-ased circuit,and so on.

At the same time,the use of FPGA makes the design more flexible,and easier to upgrade,for example,it is possible to expand extemal circuit of oscilloscopes.

KEY WORDS:DSP,FPGA,LCD ,microcontroller,digital storage oscilloscope

1章  前言

示波器应用非常广泛,包括工业、军事、科研、教育领域都有很大的应用。本章主要对示波器的国内外发展现状和本文所做的研究工作做简要的介绍。

1.1数字存储示波器的发展概况

以前的数字示波器的屏幕更新速率慢,无实时采集能力。九十年代之后,示波器技术得到了飞速发展。比如HP公司推出的54600B系列数字示波器克服这个更新速率慢的问题。这样,输入信号变化,立即就可以看到显示的变化。例如Tektronix公司的TDS684A型4通道1GHz的数字示波器采用了获专利的数字实时取样技术,并增加了转换率触发和建立与保持触发功能。更新速度也更快。同时泰克公司宣布的DP04000数字荧光示波器,该系列示波器系列拥有350MHz--1GHz的带宽,率先提供了突破性的Wave Inspector技术。在2005年下半年推出几种新型数字存储示波器,其中600MHz和1GHz两种带宽的示波器采用了安捷伦最新一代MegaZoom专利技术,具有最深的存储器和最多的集成通道数以及业内领先的波形观察能力。目前一些国内厂商开始进军手持数字示波器这一高端领域。虽然,从市场需要来看,20MHz带宽的数字存储示波器产品在市场中占有很大的比例。一般20MHz的带宽可以满足很多人的需求。面对这样的行业需求,所以国内示波器生产企业把产品性能设定在20MHz带宽、100MSa/s采样率。采用双通道数据采集,一般是单色LCD显示。尽管我国国产示波器处于起步阶段。但是我国手持数字存储示波器的生产企业在其产品的研发过程中,除了有自己的独立研发中心外,同时也与国内高校进行资源整合,例如电子科技大学就通过与企业合作进行示波器的研发。通过与高校实验室的技术与科研的交流与合作,加强研发团队的科研水平,进一步提高产品的竞争力。

1.2本文所做的研究工作

DSP是16位的RISC处理器,高性能、低功耗是其显著特点。并被广泛应用于各种嵌入式领域。比如在雷达信号处理,数字图像处理方面等等。FPGA是复杂可编程逻辑器件,它具有速度快、稳定性高、设计灵活和价格低廉等许多优点。DSP和FPGA都是现在非常流行的,其性价比也是非常的高。也是两款技术非常成熟的芯片。本文所做的研究工作就是利用这两款芯片进行数字存储示波器的研究和设计。本文进行了底层硬件平台的研究设计、少量的软件驱动程序的设计和示波器的常用算法的研究工作。例如,根据设计便携式数字存储示波器的实际需要,采用了DSP+FPGA+单片机的设计方案;研究了高频电路的设计方法,独立完成了整个系统的硬件电路设计,并对其中的某些功能模块进行了调试,给出了部分调试报告;研究了FFT、滤波、插值算法。

本文的目的是采用FPGA+DSP+单片机来设计一个100M(重复带宽)的数字示波器。本设计中DC/100MHz的被测信号经过前端电路把信号调整到AD输入电压的范围之内,经过AD转换变成数字信号,送到DSP中进行相关处理,之后通过DSP多缓冲串口送到单片机中,再由单片机把要显示的数据显示到LCD中的这么一个过程,去实现信号波形的检测。

本文已经完成了示波器硬件平台的搭建,对前端模拟电路的某些部分做了一下改进,触发电路部分抛弃了传统的模拟触发方式,采用了全数字化的触发方式。同时由于本文采用FPGA,使得数字存储示波器的设计较为灵活,容易升级,可以根据用户的需要实现电路的升级。在软件方面,由于示波器的软件量是非常庞大的。所以要想在很短的时间来完成它也是不可能的。本文只是完成了硬件平台的部分驱动程序。同时对示波器所要使用到的相关算法进行了相关的研究。

本课题是一个庞大的系统,其实践性很强,涉及知识非常多,受限于时间和个人的知识水平,尚存在以下不足之处需要以后加强。不足之处有:系统整体性能还有待进一步提高。包括示波器的带宽、存储深度,尤其是存储深度有待进一步提高,同时DSP的存储器容量也有待提高。整个系统LCD的更新速度有点慢,需要不断改进提高这个系统显示的更新速度。

第2章  示波器的工作原理

2.1 示波器的工作原理

了解示波器的工作原理是设计好示波器的第一步。示波器可以分为模拟示波器、数字存储示波器二类。下面对这两种示波器的工作原理作简要的介绍。

2.1.1模拟示波器的基本工作原理

模拟示波器工作方式是直接测量信号电压,并通过从左到右穿过示波器屏幕的电子束在垂直方向描绘电压。示波器屏幕通常是阴极射线管(CRT)。电子束投到荧幕的某处,屏幕后面总会有明亮的荧光物质。当电子束水平扫过显示器时,信号的电压是电子束发生上下偏转,跟踪波形直接反映到屏幕上。在屏幕同一位置电子束投射的频度越大,显示得也越亮。设置垂直标度(对伏特/ 格进行控制)后,衰减器能够减小信号的电压,而放大器可以增加信号电压。随后,信号直接到达CRT的垂直偏转板。电压作用于这些垂直偏转板,引起亮点在屏幕中移动。信号也经过触发系统,启动或触发水平扫描。水平扫描是水平系统亮点在屏幕中移动的行为。触发水平系统后,亮点以水平时基为基准,依照特定的时间间隔从左到右移动。许多快速移动的亮点融合到一起,形成实心的线条。

图2-1给出了模拟示波器的体系结构图。

  

图2-1模拟示波器体系结构图

2.2 数字(存储)示波器的工作原理

数字存储示波器不是将波形存储在示波管内的存储栅网上, 而是存在存储器中, 因而存储时间可以无限长。数字存储示波器主要利用 A/D转换技术和数字存储技术来工作, 它能迅速捕捉瞬变信号并长期保存。该示波器首先对模拟信号进行高速采样以获得相应的数字数据并存储, 存储器中储存的数据用来在示波器的屏幕上重建信号波形; 然后利用数字信号处理技术对采样得到的数字信号进行相关处理与运算, 从而获得所需要的各种信号参数; 最后, 该示波器根据得到的信号参数绘制信号波形, 并对被测信号进行实时、 瞬态分析, 以方便用户了解信号质量, 快速准确地进行故障诊断。数字存储示波器将输入模拟信号经过 AD/转换, 变成数字信号, 储存在半导体存储器 RAM中, 需要时将 RAM中存储的内容读出显示在 LCD, 或通过 DA/转换, 将数字信号变换成模拟波形显示在示波管上。数字存储示波器可以采用实时采样, 每隔一个采样周期采样一次, 可以观察非周期信号川。数字示波器的采样方式包括实时采样和等效采样(非实时采样)。等效采样又可以分为随机采样和顺序采样, 等效采样方式大多用于测量周期信号。图2-2表数字示波器工作原理框图。

图2-2数字示波器工作原理框图

第3章  DSP处理器和FPGA的开发过程简介

DSP在数字图像处理,音频信号处理等方面有着非常广泛的应用。它以其专门的硬件乘法器,特殊的信号处理指令使得它高速的运算速度比最快的CPU还快上好几十倍。FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA的使用非常灵活,同一片FPGA通过不同的编程数据可以产生不同的电路功能。FPGA在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域得到了广泛应用。本章主要是针对DSP、FPGA的发展情况和开发流出作简要的介绍。

3.1 DSP处理器的开发过程和应用

随着 DSP应用范围的扩大、处理能力的加强以及DSP更新速度的加快,DSP 处理系统越来越复杂,对设计者来说难度也越来越大,为此有的厂家已产生出一定标准,依据标准来设计生产电路板的DSP处理模块,同时为这种标准模块提供丰富的软件开发系统和算法库。其中典型的如 TMS320C4X 和 SDSP2106X,它们可以通过通信口和全局总线插座,将若干个模块安装在母板上,方便地组成多处理器系统。这种模块化设计降低了硬件设计难度,减少了 硬件设计时间,有利于更高效的开发DSP系统。

目前各 DSP芯片生产厂家已经把以上列出的各开发工具集成在一起,构成集成开发环境。例如 TI 公司的 CCS IDE(Code Composer Studio Integrated Development Environment)可以提供环境配置、源程序编辑、编译连接、程序调试、跟踪分析等各个环节,以加速软件开发进程,提高工作效率。它把编译、汇编、链接等工具集成在一起,用一条命令即可完成全部的汇编工作。另外把软、硬件开发工具集成在其中,使程序的编写、汇编、程序的软/硬件仿真和调试等开发工作 在统一的环境中进行,给开发工作带来极大的方便。

3.1.1 DSP处理器发展历程以及发展现状

DSP发展历程大致分为三个阶段:70年代理论先行,大概在70年具备了完整的DSP的理论和算法基础。80年代DSP产品开始普及,随着电子技术的高速发展,1982年世界上诞生了第一块DSP芯片,很快DSP在语音合成和编码解码器中得到广泛应用。再加上CMOS工艺的诞生,使得DSP芯片的集成度性能都得到空前的提高,其存储容量和运算速度也成倍提高,其应用范围逐步扩大到通信、计算机领域。90年代突飞猛进。90年代相继出现了第四代和第五代DSP器件。将DSP芯核及外围组件综合集成在单一芯片上。同时DSP的价格也大幅度下降,使得DSP芯片不仅在高端的通信、计算机领域大显身手,而且在低端的家用电器等方面DSP也是应用越来越广泛。

3.1.2 DSP处理器的具体开发流程

对于DSP开发来说,可以根据不同情况来决定是否要选择操作系统。操作系统的使用可以在一定程度上缩短开发周期,但是操作系统对于实时性很高的场合来说就不一定合适。而没有操作系统的开发方式相对来说可能比较复杂一些,需要用户对DSP的硬件架构,对DSP的外围电路的驱动等非常熟悉。开发过程的时候,所有程序都是从硬件调试到初始化程序和应用程序都在CCS中进行开发。需要操作系统的开发方式相对来说简单一些,但是如果加入了操作系统之后,由于操作系统可以屏蔽到硬件的相关细节,用户即使不了解硬件的相关细节也可以进行开发,使得用户可以把精力专门集中在应用程序的开发上来。同时可以缩短开发周期。DSP开发工具主要包括有:C语言编译器(C Compiler)、汇编语言工具、汇编器(Assembler)、连接器(Linker)、归档器(Archive)、交叉引用歹愫(Cross Reference Lister)。如果是C语言程序,首先是C语言编译器将程序编译成汇编语言源程序,然后送到汇编器里面进行汇编,汇编后产生COEF格式的目标代码,再用连接器进行连接,生成DSP上可以执行的COEF格式的目标代码。然后就可以利用调试器对代码进行调试。调试正确之后就可以把代码写入到Flash里面了。

开发流程图3-1所示:

图3-1 DSP的开发流程

3.2 FPGA的开发过程与应用

随着现场可编程逻辑器件越来越高的集成度,加上不断出现的I/O标准、嵌入功能、高级时钟管理的支持,使得现场可编程逻辑器越来越广泛。

3.2.1 FPGA发展历程及现状

从Xilinx公司推出了世界上第一片FPGA(现场可编程逻辑芯片),FPGA已经历几十年的发展。从最初的一千多可利用门,发展到90年代的几十万个可利用门,到十一世纪又陆续推出了几千万门的单片FPGA芯片。FPGA使用灵活,适用性强,特别适用于复杂逻辑的设计,有利用电子系统小型化,而且其开发周期短、开发投入少、芯片价格不断降低,促使FPGA越来越多地取代了ASIC的市场。

3.2.2 FPGA开发流程

FPGA开发流程可以分为如下几步:

①设计输入,设计输入主要包括原理图输入、状态图输入、波形图输入以及某种硬件描述语言,比如说是VHDL、Verilog的源程序。它是利用这些输入去描述一个电路的功能。

②功能仿真,功能仿真就是利用相关仿真工具对相关电路进行功能级别仿真,也就是说对你的输入设计的逻辑功能进行相关的模拟测试。在功能上面来了解电路是否能够达到预期要求。这里的功能仿真纯粹是模拟性质的,不会设计的任何具体器件的硬件特性。

③综合,综合就是行为或者功能层次表达的电子系统转换成低层次门级电路的网表。

④布局布线,就是将综合后的网表文件针对某一个具体的目标器件进行逻辑映射。此时应该使用FPGA厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。

⑤时序验证,就是要使得时序仿真过程中,建立与保持时间要符合相关的制约,以便数据能被正确的传输。使仿真既包含门延时,又包含线延时信息。能较好地反映芯片的实际工作情况。

⑥生成SOF等文件,此文件可以通过调试器把它下载到系统中间去。而FPGA设计流程的其他步骤基本上由相关工具去完成,因此只要自己设置好相关参数,不要人为干预太多。而验证的话就需要用户花费大量的时间去完成。  

                   

4章  整体设计方案

在数字存储示波器的设计中主要分为两大部分:硬件设计和软件设计。本章主要介绍示波器系统整体的设计流程,系统整体性能参数以及最终方案的确定。并对所选的方案做了详细介绍,根据此方案确定了元器件的选择。

4.1系统整体设计流程图

开始设计一个系统的时候,第一步是撰写整个系统的方案。对整个系统如何实现应该有个详细的了解。方案确定之后,就要设计这个系统的具体性能指标。再然后根据这个系统的性能指标选择相关的元器件。这之后,就可以进行软硬件设计了。一般硬件和软件开发可以同时进行。这样在完成系统的软件和硬件之后。分别对软件和硬件进行调试。分别调试完成之后,就进行系统的集成。之后再进行整个系统的测试工作。

图4-1给出了系统的整体设计流程。

图4-1 系统的整体设计流程

4.2整个系统的性能指标

考虑到同类国产的示波器的性能指标,以及在具体电路中整个系统的实现难9易程度。故将设计目标定位于带宽在100M左右的数字存储示波器。并从成本等方面考虑,整个示波器系统只做了一个通道。采用的芯片也是尽量采用比较容易在市场上买到的和相对便宜的。同时由于时间等原因,本文只完成了整个系统的硬件设计和部分驱动程序的编写。并且对硬件电路进行了调试。调试的电路结果基本上达到了当初所想要达到的指标。但整个系统集成起来的调试工作还没有进行。

便携式数字存储示波器期望达到的具体设计参数如下:

①带宽:100MHZ(重复带宽)

②通道:单通道

③采样率:100MSPS(实时采样);

④垂直分辨率:8位

⑤垂直灵敏度:10mv-5v/div

⑥水平灵敏度:2.5ns-5S/div

⑦输入阻抗:1MΩ

⑧工作模式:自动,单次,常规

⑨存储深度:4KB

⑩显示:LCD(黑白;整个屏幕192x64点阵;对比度可调)

4.3系统的实现方案

数字存储示波器的设计方法一般是:信号通过调理电路之后,送到AD转换器将被测信号数字化,并将数据存入到存储器中,在信号出现触发脉冲之后,就可以开始显示数据。然后处理器从存储器中读出数据,直接以数字信号(显示器为液晶的时候)的形式,送到相应的显示器中进行显示波形。

方案:采用DSP+FPGA+单片机来实现整个系统。本设计就采用这个架构。这个结构既继承了采用DSP和FPGA的优点,同时也克服了因为LCD和键盘处理电路的速度慢而导致浪费DSP的时间资源的这个缺点。在本方案中,把LCD和键盘处理电路全部交给单片机进行管理。在这里DSP把数据通过多缓冲串口发送给单片机,然后由单片机把从DSP中接收到的数据送到LCD中去显示。同时单片机也可以读取键盘中的数据,通过串口发送给DSP芯片,进而去控制相关的电路。

系统的整体设计框图如图4-2所示。

    

图4-2 系统的整体设计框图

4.3.1实现方案的介绍

从图4.2中可以看出,整个硬件平台和其他的数字存储示波器一样也是采用模块化设计的方式,整个系统基本上是由三大部分模块组成:它们分别为数据采集部分、数据处理部分和数据显示部分。数据采集部分完全由FPGA来进行控制,DSP只负责数据的后期处理,系统其他功能由单片机来实现。

FPGA要控制前端数据通道,对采集到的数据缓存,而且还要使数据缓存单元和DSP处理器进行通信,这在整个系统中具有重要的地位。同时又由于FPGA的可编程性,使得前端采集电路的设计非常灵活,调试起来也非常方便。DSP主要负责把采集的数据进行处理。比如像滤波、傅立叶变换等,同时负责波形重建,波形重建这里主要会采用内插算法来重建波形。而后端的单片机主要负责系统的人机接口和数据显示。整个系统的工作流程是这样的:由上图也可以看出,要测量的波形经过衰减或者放大电路之后分为二路:一路送整形电路整形之后产生矩形波信号,然后利用FPGA的测频电路测量波形的频率;另外一路送A/D转换器进行AD转换。AD的采样率使它恒定为1OOM/S。转换后的数字信号要先送到FIFO存储器中暂存,FIFO的存储是靠FIFO的写时钟来实现,而FIFO的写时钟是由FPGA中的分频电路产生的。这样示波器就能根据用户键盘中设置的相关参数选用想要的读写时钟。FIFO就利用FPGA中的RAM资源。比如这里选用的FPGA里面就有5K的RAM资源供用户选择。这样数据采集进来就可以直接存储在FPGA中,这样做就不需要专门的FIFO芯片,同时直接在FPGA中定制FIFO存储器,可以提高整个系统的性能,使得整个系统的速度更快。随着写时钟的到来,FFIO存满之后,DSP处理器就从FIFO中读取数据来进行处理,处理之后就由DSP送到单片机中进行显示。图中FLASH模块的是程序存储器,即整个系统的软件都固化在FLASH中。RAM模块是数据存储器,整个系统运行的时候,首先DSP利用已经固化在ROM中的BOOT程序把FLASH中的程序搬到RAM中运行。这里键盘和LCD模块是用来进行输入控制和输出显示。在调试的时候同时我们也设计了两个JATG接口,分别用来对FPGA和DSP进行调试。

4.4元器件的选择

的选择也是非常重要的一环,如果选择的不好,就会严重影响进度。在这里你选择的元件的时候要根据自器件的选择的总的指导原则是性价比高、市场上容易买到。其实系统元器件己定制的系统性能指标选择能够满足要求的元件。本系统所选择的元件如表4-3所示。

                        

表4-3 所选元件及功能介绍

5章   整个系统硬件设计

整个系统的关键电路其实还是在前端通道、模数转换这两块前端电路的设计,这主要是因为对于一个电路来说,如果信号频率达到100M的话,要考虑的因素就会很多,比如如何去减小电路中数字电路对模拟电路的信号的影响,因为模拟电路它是非常敏感的,一点点干扰就可能会使得被测的信号出现失真,同时对于高频电路来说,阻抗匹配等因素也是会影响到整个电路的性能。这样对于前端调理电路来说,就会碰到动态范围、宽频的挑战。

图5-1为硬件平台的总体框图,从图5-1可以看出,整个硬件平台主要包括有四个部分模块,分别为:前端数据采集部分硬件电路设计;FPGA内部控制逻辑和外围电路;数据处理部分的硬件设计;平台调试接口;电源、晶振及复位电路模块。

然后按照被测信号的走向依次对图中的每个部分中的每一个硬件模块进行介绍,主要介绍各模块的功能、工作原理、实现方法,以及具体实现的电路图。

                       图5-1 硬件平台的总体框图

5.1前端数据采集部分硬件电路设计

这部分的电路主要有信号衰减、放大电路、信号整形电路、AD转换电路以及这些电路与FPGA的接口电路。下面分别来进行介绍。

5.1.1信号的衰减电路

被测信号从前端输入进来,为了满足AD转换的电气性能首先必须把信号调节到一个合适的范围之内。通常情况下,如果输入进来的被测信号的电压范围超过AD转换的电压范围时,就要对信号衰减,这种衰减电路我们必须考虑输入信号的频率高低。由于在衰减过程中,频率范围很宽的时候很容易出现畸变,所以通常做衰减网络的时候采用的是无源电阻、电容网络。这种无源阻容网络由于信号的频率特性,比如说在低频的时候就直接表现为电阻分压比,在高频的时候就为电抗的分压得到信号的衰减。其实这种衰减本质上是为一个平衡电桥。比如在我们的示波器探头中就可能存在一个可调电容,通过调节它使得我们的电桥达到一种最佳状态。这样衰减就可以变得和频率没有关系。使得信号衰减可以在一个大的频带范围内实现信号衰减。图5-2是一个典型的信号衰减电路。

                         

图5-2 信号衰减电路

本系统所设计的电压衰减网络主要是由电阻和电容所组成。多路选择开关控制被测信号衰减的倍数,最大可以实现100倍的衰减。信号输入最大为50V,经过100倍衰减以后将变成0.5V,刚好在AD转换的电压范围之内。衰减的具体控制是由处理器来进行控制。考虑到信号输入的频带宽度。本系统选择的模拟多路开关为MAX4547来实现。它工作的信号频带宽,可以控制直流到300MHz的信号。其结构如图5-3所示:

图5-3 MAX4547内部结构

表MAX4547逻辑状态

在电路中实现的衰减选择有X01、X001两种。另外在衰减电路和放大电路中间还有一个模拟开关,用来进行交直流选择。

图5-4是衰减1/10时的PSPICE仿真结果,由仿真结果可以看出电容、电阻所组成的衰减网络可以正常实现信号的衰减。

图5-4 衰减仿真

5.1.2 信号放大电路

如果输入到P1端的被测量信号很微弱的话。该信号就需要输入到放大器中进行放大,以提高系统对被测信号的分辨率并降低噪声对其的影响。同时还要保证放大后的信号值在(-512mV+512mV)范围之内。这里对放大器的要求也是很高。首先要求放大器对输入信号的失真小,增益稳定,输入电阻大,频带也要足够宽。整个放大电路如图5.5所示。

图5-5 MAX4105放大电路

5.1.3 信号整形电路设计

信号的整形主要是为了示波器在自动测频的时候,把被测信号变成标准的矩形波。好在FPGA中对信号进行频率测量。在这里把信号经过前端调理电路之后,分成二路,一路直接送到AD里面去进行模数转换,另外一路直接就送到AD9698比较器中进行信号的整形,这里AD9698是一种过零比较器。

由于输入信号的频率高达100MHz,所以我们可以选择集成的高速比较器AD9698,它是高速TTL兼容双电压比较器。图5.6给出了信号整形电路的原理图。MAXCOM2信号是经过衰减或者放大的信号它从AD9698的7脚输入,经过比较之后从l端输出。其中2脚是可以用来控制比较电平的大小。11脚和6脚为它的电源引脚。如果MAXCOM2信号大于零,则OUT端输出高电平;如果MAXCOM2信号小于零,则OUT端输出低电平。

图5-6 信号整形电路

5.1.4 电路的保护及滤波处理

由于电路的某些原因可能导致电路在某个时候电压出现尖峰,这样对于模拟开关、放大器、AD转换器等就必须进行保护。因为这些元器件使被测电压信号输入不会超过太大。本系统保护电路由二极管钳位电路来完成。采用钳位保护电路的方法比较简单,高效。

5.1.6 AD转换电路设计

AD转换和FIFO电路是前端数据采集的核心电路。图5-7和给出了A/D转换的电路图。图中信号从端输入,INPUTCLK为AD采样时钟,这里它频率恒为100MHz,这样做的好处是用户在选择不同的时基频率时不是直接对AD频率去进行控制,因为AD频繁地切换时。很容易出现数据的不稳定。而是用户时基的控制是通过时钟频率去控制FIFO的读写时钟来间接的实现不同频率之间的切换。采样之后的数据全部传送至FIFO中进行暂存。AD9283的采样精度为8位,最大采样时钟为100MHz,它所产生的数据量相当大,所以对FIFO的要求也比较高。本设计FIFO是做在FPGA中,可以满足性能要求。

图5-7 A/D转换的电路图

5.2  FPGA外围电路的设计和内部逻辑电路设计

整个前端电路的控制都是有FPGA来完成。前端电路的工作情况基本上是这样的:ADC是否工作是由FPGA来控制的,如果FPGA使能AD转换器,则ADC就开始进行数据的采样。然后根据FIFO的读写时钟的情况。就开始进行预采样。把数据保存在缓冲区FIFO中。当FIFO中保存的数据达到预触发字设置的大小之后。就使得读时钟和写始终一致。这样数据读入到FIFO的同时也从FIFO中读出来。数据不断的刷新。此时数据在缓冲区的大小始终等于预触发字所设置的大小。一直触发信号的到来。使读时钟无效。写时钟继续有效。数据此时继续写入。直到写满为止。这样完成一轮采样,ADC停止工作并将这一消息反馈给DSP。DSP得知ADC停止工作后,DSP从FPGA中读取一定的数据,然后进行相关数据处理,并把数据写入到存储器对应的单元中。当基本写满存储器后,波形采样就完成了。这时DSP再从存储器中读出波形数据,送入控制端显示。

5.2.1 FPGA外围电源、晶振电路的设计

图5-8是FPGA外围电路的电源和晶振电路图,这里用的FPGA是EPlCl448。由图可以看出FPGA的供电有两种形式,一种是3.3V供电,一种是1.5V供电。1.5V供电可以直接由3.3V通过DC/AC的直流转换芯片转换而来.这里用的芯片是LMlll7-1.5V,晶振电路产生50MHz的时钟直接送到FPGA的16脚,为分频等电路提供原始时钟。                            

图5-8 FPGA外围电路的电源和晶振电路

5.2.2 FPGA的配置

FPGA的配置下载方式:主动配置方式(AS)和JTAG配置方式。

AS由FPGA器件引导配置操作过程,它控制着外部存储器的初始化过程,本系统所使用到的Cyclone系列配置芯片有EPCSl,EPCS它是专门提供给该系列芯片进行AS配置用的。所有的配置数据都是保存在该芯片中,加电后数据通过芯片的DATA0引脚送入FPGA内部。进行FPGA的配置,数据被回步在DCLK输入上,1个时钟周期传送1位数据。断电后,因为FPGA内部采用的是SRAM工艺,所以不能本身不能进行数据的保存。这样数据就会丢失。所以FPGA上电后,每次都需要重新配置数据。

JTAG接口是一个仿真调试的工业标准,又称边界扫描。主要用于芯片测试等功能,使用IEEE Std l 149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。这种方式在调试阶段用的很多。一般fpga配置信息使用编程器将设计所得的pof或者SOF格式的文件烧录进去。在做cyclone系列的系统的时候,一般情况下都会用AS+JTAG两种配置方式,这样可以用JTAG方式调试,经过调试之后,确定程序正确之后,再利用主动配置模式把程序送到EPCS芯片里去。

本系统中使用到的EPlC3T144芯片采用了AS和JTAG两种配置方式。AS配置方式进行配置时,如下图所示:串行配置器件上的4个控制引脚NCS、DCLK、ASDI和DArAO分别与EPlC3T1448C的控制信号NCS、DCLK、NASDO和DATA直接连接。通过下载电缆编程的串行配置器件用AS配置方式对EPlC3T1448C器件进行配置的连接。JTAG配置时,它的四个控制引脚J TCK、J TDO、J TMS、J TDl分别与EPlC3T144C8的TDI、TDO、TCK、TMS引脚相连接。具体连接见图5-9所示:

图 5-9 FPGA的配置

5.2.3 FPGA内部逻辑电路的设计与实现

整个FPGA内部逻辑电路图的设计如图5-17所示。FPGA内部逻辑图主要包括有:FIFO电路、峰值检测电路、触发电路、译码电路、数据传输电路、时基电路等。下面对各个电路的实现再作详细的介绍。

①FIFO工作原理及其在FPGA中的设计

这里FIFO主要起缓存作用,也就是把AD采样进来的数据首先存储到FIFO里面。这里FIFO是一个先进先出的存储器,因为它没有地址线,所以操作起来也很方便,同时利用它可同时进行读写操作的事实,使得预触发电路设计变得更加容易。主要因为如果你采用带地址线的RAM的时候,你存入到存储器中的数据的多少是要知道的,这样你就需要一个地址计数器,这样首先就会增加电路的复杂性,同时也会占用过多的FPGA逻辑资源。同时FIFO第一个读出来的数据是就是第一个写进的数据,这也是它先进先出名字的由来。现在市场上也提供专门的FIFO芯片。本系统为了节约成本,以及从提高系统性能的角度来考虑。把FIFO芯片做在FPGA中间。因为我们选择EPlC3它里面带有5K存储空间的可供用户使用,并且能够在高速时钟下工作。

②AD与FIFO的连接

AD变换得到的二进制数据送入FIFO(先入先出存储器)中进行缓冲。A/D的采样率采用固定的时钟频率,为100MHz,而FIFO的写时钟是根据用户对信号检测的需要,分别由时基电路产生的时钟来进行控制。因为本系统做的是单通道,所以A/D进来的数据直接进入FIFO,然而如果在峰值检测时,就要先把A/D采样进来的数据经过峰值检测电路后再进入FIFO中。

③地址译码电路以及存储空间的分配

C54X系列DSP存储器分为三个独立的空间,他们分别为64千字的程序空间、64千字的数据空间和64千字的I/O空间,其中程序存储器存放程序代码以及程序运行过程中需要经常用到的某些常数。数据存储器存放指令执行中产生的数据。I/O存储器存放与映象外围接口相关的数据,也可以作为附加的数据存储空间使用。并且在任何一个存储空间中,RAM,ROM,EPROM,FLASH等外围设备都可以驻留在片内或者片外。这三个空间的寻址范围取决于DSP芯片地址线数目。例如,C54X系列DSP从C5409开始,芯片有23根地址线,具有8M字节存储空间寻址能力。

④触发电路及触发模式

该触发系统电路主要包括触发源选择、触发比较、预触发等,具体结构图如图图5-10所示。

图5-10触发系统总结构图

其工作原理为:当启动AD采样后,AD进来的数据与触发字进行比较,根据触发源选择信号,一旦满足设定条件时,会产生触发信号,此信号送到Fm嘴制器端。由于AD的采样时钟与写入时钟同步,转换后的数据根据写时钟写入到FIFO中。当FIFO未达到预触发深度时,FIFO只写入数据,不读出数据,并且在这个过程中触发信号是被抑制的。

当FIFO达到预触发深度时,释放触发信号。此阶段如果触发信号未到来,AD采样来的数据写入FIFO的同时,数据也从FIFO中读出,并且FIFO中的数据始终保持为预触发深度,FIFO中存放的数据也都是新采样进来的数据;若触发信号到来,就禁止FIFO读时钟,FIFO的数据只写不读,当FIFO写满后,系统就禁止写时钟,然后通知处理器从FIFO中提取数据并进行处理,处理完后送给LCD进行显示。具体的触发系统电路图如图5-11,该电路图由Iprn_fifoO、pre_trig、WW组成,完成了触发源选择、触发比较、预触发等功能。

图5-11 触发系统总电路图

(1)示波器的三种触发模式:

Ⅰ、Normal模式,Ⅱ、Auto模式Ⅲ、单次触发模式。

(2)触发源选择、触发比较电路的设计

触发比较电路设计的具体电路图如图图5-12所示:该模块主要实现触发比较和触发源的选择,由比较器、选择器和D触发器组成的。具体实现如下:

图5-12触发比较、触发源选择电路

(3)预触发电路图的设计

这里预触发的具体电路实现如图图5-13所示,它主要包括:一个锁存器、一个比较器、还有一个triggerl和一个trigger_2。triggcr_l里为一个D触发器。其中,QN为D触发器的反相输出端;trigger_2里为两个Ⅸ触发器,其中,QNl为第一个Ⅸ触发器反相输出端,Q2第二个Ⅸ触发器同相输出端。该模块的工作过程可以分为五个阶段:复位、开始写入FIFO、预采样、正式采样和数据的提取。

图5-13预触发电路

⑤时基电路和模拟通道控制电路

(1)时基电路时基电路在数字存储示波器中,是一个非常重要的电路。他是控制FIFO读写速度的一个电路。在这里时基电路主要是由FPGA中的输入晶振频率的分频得到各种各样的频率。同时在这里要对数字存储示波器的频率有所了解,它与模拟示波器的时基电路的工作原理是不同的。因为数字存储示波器是将模拟信号经过A/D转换后存入存储器,然后再从存储器中读出,故数据的写入存储器的速度与扫描速度快慢有关,即与“t/div“的设置有关。而与存储器的读出的速度无关。时基电路的设计相对比较简单,就是将输入的50MHz进行分频和倍频,按l,2,5步进的办法产生不同的频率。

图5-14时基电路

上图5-14是时基电路分频电路图。它由100MHz的频率分成16种不同频率,经过分频之后,然后送到一个选择器里面。然后由CPU根据实测信号频率选择一个适当的时基,送到FIFO作为读时钟或者写时钟。

(2)模拟通道控制电路

数字存储器的模拟通道部分不同于模拟示波器部分,它的控制全都由DSP控制器进行控制。本系统中采用一片型号为SN74L、,H16374ADGGR的芯片。用它来直接与MAX4547里面的电子开关相连接。

⑥峰值检测电路

在实际电路设计中,AD采用固定的采样率,经过AD转换后的数据锁存到锁存器中。在第一个AD转换后的数据到来之后,时钟电路产生一个脉冲,把这个数据同时送到最大、最小值寄存器中。从第二个采样时钟开始后,最大、最小值寄存器的输出数据分别输入到两个比较器中,作为比较器的输入信号。同时第二个AD数据也锁存到锁存器中。然后是锁存器中的新数据和最大、最小值寄存器中的数据进行比较,决定是否要更新寄存器中的数据。直到该窗口的所有数据都比较完,这样就会在这个窗口的数据采集中,保持有这一次采样的最大和最小值数据。然后再写入最大、最小值存储器。也就是FIFO中。最后就可以在写时钟脉冲的作用下,最大、最小值的数据就可以按照一定顺序分别从中读取出来。这样就能够捕到毛刺信号了。具体原理如图5-16所示。

峰值检测电路的仿真时序图如图5-15所示。

         

                            图5-15峰值检测原理

图5-16峰值检测电路仿真时序波形图

                           

图5-17 整个FPGA中的内部逻辑结构

5.3 DSP部分的硬件设计

DSP作为系统的核心部分,主要用来对数据进行相关处理。整个DSP部分的硬件电路主要包括程序存储器FLASH模块,数据存储器SRAM模块,用于人机交互的键盘和LCD模块,电源模块。下面对各个功能模块加以介绍。整个DSP的电路图5-18如下所示:

                           图5-18 DSP的电路图

5.3.1 FLASH模块

DSP硬件系统中选用了SST39VFl60作为它的程序存储器。ST39LF/VFl60是一个1M×16的CMOS多功能程序存储器,SST39VFl60的编程或擦除操作电源电压为2.7/3.6V。并且可靠性非常的高,使用数据保存时间最高可达100年。快速读访问时间SST39VFl60为70ns和90ns。同时它的地址和数据可锁存,快速擦除和字编程Word.Program扇区擦除时间18ms:块擦除时间18ms典型:芯片擦除时间70ms。

  

5.3.2  LCD模块

显示模块是直接与用户打交道的一个非常重要的模块,因为考虑到DSP的性质和整个系统速度的要求,所以对于LCD的控制,选择另外一个单片机来专门控制LCD的显示。在这里我们选择的LCD是MGLS.19264,它内藏HDl620显示控制器,可以实现人机对话菜单的显示,和信号波形的显示。HD61202内藏64X64=4096位显示RAM,RAM中每位数据对应LCD屏上一个点的亮、暗状态。HD61202是列驱动器,具有64路列驱动输出,它可与行驱动器HD61203配合使用组成显示驱动控制系统。同时它可直接与51系列微处理器接口相连。MGLS.19264各引脚功能如下:

1、2:CSA、CSB两片选端,供CPU接口选用。CSA、CSB为00时,选通I-ID61202(1):为0l时,选通HD61202(2):为lO时,选通HD6202(3)。

3:GND系统地。

4:VCC+5V电源。

5:V0液晶驱动控制电压,用于LCD对比度调整。

6:D/I数据/指令选择D/I=I,数据操作;D/I--0,写指令或读状态。

7:R/W读写选择信号R/W--1,读选通;R/W=O,写选通。

8:R读写使能信号在E下降沿,数据被锁存(写)入HD61202;在E高电平期间,数据被读出。

9、16:DB0-D87数据总线。

LCD接口电路原理如图5-19所示。所有LCD接口的硬件连接比较简单,将LCD接口相关的引脚与单片机芯片上相应的引脚相连即可。由于单片机芯片与LCD接口相关引脚都是多功能引脚,所以在具体使用LCD接口时要进行相应的寄存器设置。

图5-19 LCD模块电路

5.3.3  单片机电路及键盘接口模块

整个单片机电路主要是负责用户接口。电路图如图5-32、5-34所示。比如说是控制液晶显示。管理键盘等。对用户操作键盘,发出命令。然后传到DSP中去。整个单片机的电路设计如下所示:首先单片机通过10脚和11脚分别与MAX232相连,进行电平转换,这样就可以和电脑相连,进行串行通信了。

5.3.4  DSP的调试口一一JTAG接口

JTAG又称联合行动测试小组,它是一种国际标准测试协议,主要应用用于芯片内部测试。DSP就支持JTAG协议。DSP的JTAG接口有4线:TMS、TCK、TDI、TDO,他们分别为模式选择、时钟、数据输入和数据输出线。JTAG在DSP硬件仿真过程中是很重要的。如果是单纯的软件仿真,只能是功能性的验证作用,就不能够准确反映程序在DSP中的运行情况。而DSP通过JTAG进行硬件调试,通过CCS可以访问到DSP内的所有资源,包括所有的寄存器,从而提供一个实时的硬件仿真与调试环境,便于系统软件的调试。

图5-20是DSP的调试电路。一般在仿真的时候,JATG仿真器一端通过JATG接口与DSP系统相连,另一端可以通过USB总线与PC连接,通过PC上运行CCS软件对目标系统进行在线仿真。仿真器即扩展开发系统(XDS),是进行DSP芯片软硬件开发的最佳工具。VC5409提供与仿真器直接连接的引脚信号,仿真器支持3.3V和5V两种工作电压,这里VC5409提供的是3.3V电压,可以直接与仿真器连接。

图5-20 DSP的调试电路

5.3.5  电源、晶振及复位电路模块

电源电路设计也是任何系统设计中都会碰到,一般一个系统中有好几种不同的电压。一般情况下。我们给系统供电只要一个电源就行了。这样就需要相关的芯片来得到各种不同的电压。而晶振电路也是非常重要。它是整个系统能正常工作的保证。下面分别本系统对电源和晶振的具体设计。

①电源

本系统中有六种电源电压:-5V、1.5V、+12v、+3V、+3.3V、+5V。由于是便携式系统,可以采取5V,12V直流电源直接供电。由电源电压可以看出,这里对于电压的转换芯片有MAX6129、TPS73HD318和MAX739。MAX6129用于5V到3V的转换,MAX739用于5V到.5V的转换。TPS73HD318用于5V到1.8/3.3V的转换。同时可以给DSP提供复位信号。图5-21给出了电源电压转换的电路图。

图5-21 DSP电源电路

②晶振和复位

由前面的内容可知,整个系统需要两个时钟源:AD转换时钟和DSP系统时钟,DSP外部提供的时钟信号频率为10MHz,FPGA系统时钟50MHz。

整个系统有两种复位方式:自动上电复位和上电后手动复位。自动上电复位对于DSP。采的是专用的复位芯片TPS73HD318,上电后手动复位采用的按钮复位。

6章  系统软件设计

数字存储示波器的软件量是比较大的。一般来说整个系统软件可以分为硬件初始化部分;键盘处理部分:波形数据处理部分;波形显示部分。波形数据处理部分主要包括软件滤波和对信号的插值算法。下面主要是介绍系统的初始化软件和对波形的相关算法。

6.1  系统初始化

系统上电后,就开始对相关部件进行初始化。通常情况下系统初始化主要完成的工作有:完成DSP中相关寄存器的配置,包括DSP的MCBSP初始化、DSP的状态和控制寄存器的配置;完成DSP的程序和数据存储空间的配置以及DSP的时钟发生器等的配置工作;对系统的FLASH的初始化;对单片机的相关寄存器进行配置;对液晶进行复位,向液晶发初始化命令,清除液晶显示缓冲区、初始化液晶模块内部寄存器等;显示主界面;设置默认的衰减/放大倍数;设置触发产生电路的触化字;初始化键盘扫描电路:初始化触发电路(包括对FIFO的清空处理等),其中包括触发信号是来自内部还是外部,上升沿还是下降沿触发,自动触发还是单次触发等;根据时基大小设置采样时钟的分频比等。初始化完成后,系统就可以进入工作了。整个系统的初始化工作很重要。他是保证示波器能否正常工作的前提。同时在在初始化过程当中,DSP和单片机处于关中断。下面对几个重要的初始化过程作一下介绍。

6.1.1  DSP的MCBSP初始化

VC5409提供3个MCBSP串口,它的硬件部分是基于标准串口的,它的特点是:全双工通信;双缓冲的发送和三缓冲接收数据存储器:独立的接收、发送帧和时钟信号;多达128路的发送和接收通道;数据的大小范围包括8、12、16、20、24、32位字长;利用U律或者A律的压缩和扩展通信;帧同步和时钟信号的极性可编程等等。其实对MCBSP的初始化也就是对MEBSP的相关寄存器进行配置。比如对MCBSP的串口控制寄存器SPCR1、串口控制寄存器SPCR2、串口引脚寄存器PCR、接收和发送寄存器RCR[1,2],XCR[1,2]进行配置。这里的初始化主要包括下面几个过程:

①对串口控制寄存器的相关位置0,是串口复位

②按照系统的相关要求,对MCBSP进行编程配置。

③等待2个时钟周期,保证内部同步

④然后就是按照DXR的要求,给出数据

⑤因为第一步是使串口复位,所以这里要对串口使能。

⑥等待2个时钟周期后,接收器和发送器就激活了。

下面就来按照如上的步骤来配置MCBSP串口。其实MCBSP的串口初始化程序现在比较多,一般只要在原来的程序基础上,加以修改就可以用到自己的系统上了。这里是McBSP被配置成SPI方式。实现单片机和DSP的串口通信。MCBSP和CPU的通信有3种方式,第一种就是每收到或者发送一个单元,置标志位,CPU轮询次标志位。第二种就是每收到或者发送一个单元,给CPU发送中断。第三种就是通过DMA收到或者发送完一组的单元,再给CPU中断。本系统种采用的是第三种方式。这里采样DMA方式,串口每发送或者接受一个单元,都会自动触化DMA将其搬送到某一个缓冲区,等缓冲区满或者半满之后,再产生中断,这样CPU就接受中断而进行处理。对串口控制寄存器的相关位置0,串口复位

stm #spcrl 0,spsa0;

stm #0000h,spsd0

stm #spcr20,spsa0

stm#0000h,spsd0;发送复位按照系统的相关要求,对MCBSP进行编程配置

stm #spcrl0,spsa0

stm #06h,spsd0;

stm

stm

stm

stm

#spcr20,spsa0

#200h,spsd0;

#r,cr0,spsa0 ;

#oeh,spsd0

stm

stm

stm

stm

stm

stm

#rcr 1 0,spsa0

#0040h,spsd0

#rcr20,spsa0

#4h,spsd0;

#xcrl0,spsa0 ;发送

#0040h,spsd0;

stm #xcr20,spsa0 ;发送

stm #4h,spsd0

等待2个时钟周期,保证内部同步

NOP:

NOP:

因为第一步是使串口复位,所以这里要对串口使能

stm #spcrl 0,spsa0;

stm #07h,spsd0

stm #spcr20,spsa0

strn #201h,spsd0;打开缓冲串口

6.1.2  液晶的初始化

其实对液晶的显示工作,主要是理解液晶显示的初始指令,也就是灵活运行这些指令来实现图形的显示,这些指令一般比较简单,拿MGLSl6294来说。它有7条指令:

①显示开/关指令

②显示起始行ROW设置指令

③页PAGE设置指令

④列地址YAddress设置指令

⑤读状态指令

⑥写数据指令

⑦读数据指令

以下是对液晶进行初始化的C语言程序:

void LcdInit(void)

{

LcdCmdWr(O,0xc0);

LcdCmdWr(1,OxcO);

LcdCmdWr(O,0x3f);

LedCmdWr(1,Ox30;

}

void LcdCmdWr(bit DispArea,uchar CmdP)

{

if(DispArea==0)

{

LedCSI=I;

LcdCS2=O;

)

else

{

LcdCSI=O;

LcdCS2=I;

}

LcdDI=0;

LcdRW=I;

LcdChkBusy0;

LcdRW=O;

DatBus=CmdP;

LcdEN=I;

LcdEN=0;

}

6.1.3  FPGA中部分电路的初始化工作

设置默认的衰减/放大倍数;设置触发产生电路的触化字;初始化键盘扫描电路;初始化触发电路(包括对FIFO的清空处理等),其中包括触发信号是来自内部还是外部,上升沿还是下降沿触发,自动触发还是单次触发等;这些参数的初始化主要包括用户根据需要在键盘上进行设置。然后单片机通过多缓冲串口把用户设计好的这些参数传到DSP里面。因为DSP的低8位数据线是通过与FPGA中的相关电路相连接的。所以DSP要向这些电路发送数据的时候,必须先选中这些电路。

下面是设置这些参数的一部分程序。

/*首先要使得FⅡO工作在tri.state状态下*/

set_dso_eontrol(0x6 I CONTROL—BIDI—BIT);

set_dso_control(0x7 CONTROL—BIDI—BIT);

set_dso_control(0x0);

/*首先设置前16位数据*/

set_reg(0x2,(chat)(scope_data.pretrigger&0xFFFF));

/*pulse the pre_trig_load0 bit */

set_reg(0x3,0x0);

set_reg(0x3,0x 1);

set_reg(Ox3,OxO);

/*再设置最后3位数据*/

set_reg(Ox2,(char)((scope_data.pre_trigger&Ox070000)>>16));

/*加一个脉冲进来*/

set_reg(Ox3,OxO);

setreg(Ox3,Ox4);

set__reg(Ox3,OxO);

/*设置示波器的工作模式/*

switch(scope_data.scope_mode)

{

case O:i-0;break;

case 1:i=l;break;

case 2:i=6;break;

case 3:i=2;break;

)

/*设置时钟分频值/*

i=i I(scope_data.cloek_div《5);

i=i I(scope_data.trig_sel《3);

set_reg(Ox4,i);

/*设置触发值寄存器/*

if(scope_data.scope_mode==2)

{

set_reg(Ox2,(char)scope_data.trig value);

set_reg(Ox5,OxO);

set_reg(Ox5,Ox 1);

set_reg(Ox5,OxO);

set_reg(Ox2,(char)(scope_data.trig_value>>8));

setreg(Ox5,OxO);

setreg(Ox5,Ox2);

setreg(Ox5,OxO);

53

else

{

setreg(0x2,(char)scope_data.trigvalue);

set_reg(0x5,0x0);

setreg(0x5,0x3);

set_reg(0x5,0x0);

}

/*初始化DSP的控制和FIFO的写指针*/

set_reg(0x3,0x0);

set reg(0x3,0x10);

set_reg(0x3,0x0);

/*返回/*

return;

}

6.2  数据处理的相关算法

数据从AD采样进来后,要很好地恢复出原来的信号,需要经过DSP的相关处理。一般需要DSP完成信号的插值算法和DSP的滤波。

6.2.1  插值算法

理论上讲通过一个滤波器就可以把信号从中恢复出来。也就是即使什么都不做,只要采样频率达到一定的采样率。把一个一个采样进来的点显示到液晶显示器里面。理论上也可以恢复出原始的波形。但通常采样率的采样速率要是带宽的5倍左右,要使得波形失真少,还需要采用内插技术。内插的种类一般分成直线型和正弦内插。也就是说在重建波形的时候,可以在显示这些采样点的同时,然后采样点与采样点之间直接用直线给连接起来。这种直接连接起来的方便在显示正弦波的时候失真度还是比较大的。但是对于显示三角波来说这种内插方法还是比较好的。对于正弦内插来说它适合于被测信号是曲线型的波形,这个时候使用正弦内插就比较好了。使屏幕上将各个采集的采样点用幅度和频率均为可变的最佳正弦拟合曲线连接采用了内插的方法。这里主要介绍一下正弦内插的相关算法。下面是正弦内插的函数表达式,以及相关波形:

函数表达式:

函数波形:

图6-1正弦插值的函数波形

6.2.2  正弦插值

正弦插值程序是基于Nyquist定理而推出的Shannon内插公式的实际运用,就是对一个带限信号毛(f)。如果它的最高频率分量为Fm,则只要满足如下条件,就可以用以T为间隔采样获得的Xo(nT)=x(n)甩来恢复出Xo(t)在时域的任何值。

从频域来看,h(n)实际上起低通滤波器的作用。

6.2.3 滤波

这里的滤波算法采用FIR滤波算法。它的数学表示如下所示:

FIR的两大特点:FIR filter的h(n)有限长,只有零点,无极点,因而是稳定的;FIR filter在满足一定条件下,做到具有严格的线性相位;适用于高保真度的信号处理:图像处理以及数据传输,语音或音频信号处理,

数字示波器带宽已足够宽,垂直灵敏度相当高,显示出来的噪声往往很大,这难以避免严重时能将信号淹没。为了解决这个问题实时采样示波器设有平滑功能等,滤波减小了信号的噪音。

一个FIR滤波程序如下:

_c_int00

b start

nop

nop

start: ssbx FRCT

STM #COFFTAB,COFF_P

RPT #N-1 ;将FIR系数从程序存储器移动

MVPD#COFF_FIR,*COFF_P+;到数据存储器

STM #INDEX,B叮DEX P

STM #DATABUF,DATA P

RPTZ A,#N-1

STL  A.,*DaTa.P+ ;将数据循环缓冲区清零

STM  #(DATABUF+N-1),DATA _P;数据缓冲区指针指向x[n-(N-1)]

STM  #COFFTAB,COF_P ;

FIR_TASK:

STM #INPUT,INBUF_P

STM #OUTPUT,OUTBUF_P

STM #KS-1,BRC

RPTBD LOOP-1

STM #N,BK ;FIR循环缓冲区大小

LD *INBUF_P+,A ;装载输入数据

FIR_FILTER:

STL A,*DATA _P+%

RPTZ A,N-l

MAC *DATA_P+0%,*COFF_P+0%,A

STH A,*OUTBUF_ P+

LOOP:

EEND B EEND

End

6.3波形显示程序 

显示波形也就是在点阵式显示器的绘图。如何去绘制波形呢。首先必须确定液晶显示中波形的显示坐标轴。然后就是让采集进来的数据如何在液晶屏幕中确定好位置。也就是如何使得被测波形与液晶显示的波形数据要一一对应起来。如果确定好了要显示数据的位置后,相对来说就比较简单了。只要把相应的象素点置1就可以了。下面以MGLS--19264为例介绍去确定动态波形的显示位置。它的分辨率为192×64也就是有192列、64行,因为采用的是AD9283。它是8位的AD转换器。这样它采样进来的数据的最大值为+127(对应于512mv电压),最小值为一128(对应于-512mv电压),这样一来+127应对应屏幕的最上一行(O行),一128对应屏幕的最下一行(63行),0对应于横坐标轴(31行)。因此数据转换系数为128/32=4,数据与显示行号的转换关系为:(正数)行号=坐标行一待显示数据/转换系数;(负数)行号=坐标行+待显示数据/转换系数;列号只要根据输入的数据顺序由0递增至191。然后根据情况再换行就可以了。确定位置后,即可根据显示形式的不同赋予相应的显示值。

图形显示程序流程图如图6-2所示。

图6-2 图形显示流程图

第7章 结束语

本文的目的是采用FPGA+DSP+单片机来设计一个100M(重复带宽)的数字示波器。本设计中DC一100MHz的被测信号经过前端电路把信号调整到AD输入电压的范

围之内,经过AD转换变成数字信号,送到DSP中进行相关处理,之后通过DSP多缓冲串口送到单片机中,再由单片机把要显示的数据显示到LCD中的这么一个过程,去实现信号波形的检测。

本文已经完成了示波器硬件平台的搭建,对前端模拟电路的某些部分做了一下改进,触发电路部分抛弃了传统的模拟触发方式,采用了全数字化的触发方式。同时由于本文采用FPGA,使得数字存储示波器的设计较为灵活,容易升级,可以根据用户的需要实现电路的升级。在软件方面,由于示波器的软件量是非常庞大的。所以要想在很短的时间来完成它也是不可能的。本文只是完成了硬件平台的部分驱动程序。阿时对示波器所要使用到的相关算法进行了相关的研究。

本课题是一个庞大的系统,其实践性很强,涉及知识非常多,受限于时I可和个人的知识水平,尚存在以下不足之处需要以后加强。不足之处有:系统整体性能还有待进一步提高。包括示波器的带宽、存储深度,尤其是存储深度有待进一步提高,同时DSP的存储器容量也有待提高。整个系统LCD的更新速度有点慢,需要不断改进提高这个系统显示的更新速度。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前言: 所谓数字存储示波器(Digital Storage oscilloscopes-DSO)就是在示波器中以数字编码的形式来储存信号。泰克公司的TDS1000C-SC数字存储示波器是2010年泰克公司针对中国市场推出的具备更多功能和更多性能的入门机型,截止2012年6月,TDS数字存储示波器系列凭借其在数字实时采样方面的优秀性能表现,加上所具备的多样的分析功能和简洁直观的操作获得“全球最受欢迎的示波器”称号。现在给网友推荐的是一款数字存储示波器制作,希望网友能够通过此文档设计属于自己的示波器数字存储示波器介绍: 该数字存储示波器套件是一款专门面向电子专业教学、实训的套件,采用ARM Cortex-M3处理器和彩色TFT屏幕,具有电路简单可靠,制作难度适中,制作成功率高的特点。该套件突出了示波器电路的特点,使学生在学习实际制作技能的同时深入了解示波器的结构和原理。示波器本事具有良好的实用性,学生在完成制作后同时获得一台有用的工具,对日后学习电子技术有莫大的帮助。 示波器制作套件包括如下: 该示波器制作套件特点: 说明资料完整详细,包括电路图、制作指导、使用说明、故障排除办法等,制作成功率高。 套件采用ARM Cortex-M3处理器(STM32F103C8),并包含一块2.4寸彩色TFT显示屏,可作为ARM开发试验板。 提供源程序,有能力的朋友可在套件基础上进行二次开发,例如可将它改为毫伏表、数据记录仪等等。 电路简单可靠,价格低廉 数字存储示波器参数如下: 最高实时取样率:1Msps 精度:12Bit 取样缓冲器深度:1024字节 模拟频带宽度: 0 – 200KHz 垂直灵敏度:10mV/Div – 5V/Div (按1-2-5 方式递进) 垂直位移可调,并带有指示 输入阻抗:1MΩ 最高输入电压:50Vpp(1:1探头),400Vpp(10:1探头) 耦合方式包括DC/AC/GND 水平时基范围:10μs/Div – 50s/Div (按1-2-5 方式递进) 具有自动、常规和单次触发方式,方便捕捉瞬间波形 可用上升或下降边沿触发 触发电平位置可调,并带有指示 可观测触发之前的波形(负延迟) 可随时冻结波形显示(HOLD 功能) 自带1KHz /3.3V方波测试信号源 可实时显示采集波形的频率、周期、脉宽、占空比、最大值、最小值、平均值、峰峰值、有效值等 该数字示波器做成后的实物图: 源文出处:https://www.jyetech.com/Products/LcdScope/e138.php

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值