基于FPGA的数字存储示波器的设计说明

上传人:z**** 文档编号:71088464 上传时间:2022-04-06 格式:DOC 页数:59 大小:6.08MB
收藏 版权申诉 举报 下载
基于FPGA的数字存储示波器的设计说明_第1页
第1页 / 共59页
基于FPGA的数字存储示波器的设计说明_第2页
第2页 / 共59页
基于FPGA的数字存储示波器的设计说明_第3页
第3页 / 共59页
资源描述:

《基于FPGA的数字存储示波器的设计说明》由会员分享,可在线阅读,更多相关《基于FPGA的数字存储示波器的设计说明(59页珍藏版)》请在装配图网上搜索。

1、职业技术师大学TianjinUniversity of Technology and Education毕 业 设 计专 业:应用电子技术教育 班级学号:学生:指导教师:二一 一年 六 月职业技术师大学本科生毕业设计基于FPGA的数字存储示波器的设计Design a digitaloscillograph based on FPGA专业班级: 学生: 指导教师:学 院:电子工程学院年 月52 / 59摘 要本文介绍了一台以FPGA为处理核心的双通道数字存储示波器的设计。设计中模拟通道采用OPA657为阻抗变换缓冲级,提供1T的输入阻抗,VCA824作为增益控制实现了宽带宽,宽围输出。再由THS

2、4500驱动 ADC ADS831,实现了80Msamp/s采样率,模拟通道的带宽限制为10MHz。数字处理采用SOPC技术,在FPGA部构建采样FIFO,与数据流触发与分析逻辑,FPGA建的以NiosII为核心作为处理核心。此示波器的单通道存储深度为8Ksamp,波形刷新率为15帧每秒,具有一定的实时性。操作界面采用TFT240X320显示波形,全触摸控制。波形移动拉伸还有其他控制都通过触摸滑动触摸屏,带来了不一样的操作感受。示波器的制作成模块化功能板,分为模拟通道,控制板,数字核心板,显示控制板。示波器的硬件也成为了一个高速数据采样的开发平台。关键词: 示波器;FPGA;增益控制;触发电路

3、;触摸屏ABSTRACTThis paper introduces a for processing the core with FPGA dual channel digital storage oscilloscope design. By simulating the channel OPA657 design for impedance transformation buffer level, provide the input impedance 1T,VCA824 as gain control realized broadband wide, wide range output.

4、 By THS4500 drive ADC ADS831 again, realized 80Msamp/s sampling rate, simulation channel bandwidth limitations for 10MHz. Digital processing with the SOPC technology, The FPGA internal construction, and data sampling FIFO flow trigger and analysis of logic, The FPGA built-in to NiosII as the core as

5、 processing core. The depth of the single channel storage oscilloscope for 8Ksamp, waveform refresh rate of 15 frames per second, has certain real-time. By TFT240X320 operation interface, the touch display waveform control. Waveform tensile and other control movement by touching sliding touch-screen

6、, brought different operating experience. Oscilloscope production into modular function board, divided into analog channels, control panel, digital core board, display panel. Oscilloscope hardware also became a high-speed data sampling development platform.Key Words:Oscilloscope; FPGA; Gain control;

7、 Trigger circuit; Touch screen目 录1项目背景- 1 -1.1示波器简介- 1 -1.2示波器发展现状- 2 -2数字存储示波器实现方案- 3 -2.1总体构架方案- 3 -2.2模拟前端方案- 4 -2.2.1阻抗变换方案- 5 -2.2.2增益控制方案- 6 -2.2.3ADC驱动方案- 7 -2.2.4抗混叠滤波处理- 8 -2.2.5直流偏移方案- 10 -2.2.6触发方案- 10 -2.3ADC方案- 13 -2.4FPGA数字处理系统板- 14 -2.5电源电路- 15 -2.6显示和接口方案- 16 -3硬件SOC与软件的实现基础173.1自定义功

8、能模块与SOPC系统组成173.2软件开发环境213.3示波器应用软件构建模式224项目测试验证234.1模拟通道性能测试234.1.1模拟带宽234.1.2垂直精度244.1.3水平精度244.1.4输入围244.1.5输入阻抗244.2波形测试245结论275.1项目技术总结275.1.1阻抗变换和探头技术275.1.2增益控制275.1.3触发波形275.1.4ADC技术275.1.5数据处理技术285.1.6操控程序构建285.1.7新的操控理念285.2技术之外的感触286附件296.1原理图与PCB296.2程序34参考文献50致511 项目背景1.1 示波器简介示波器是一种能够把

9、电路信号从时域的维度展现在屏幕上的仪器,也因此功能示波器成为最常用的测量测试仪器之一。示波器的纵轴方向被电压值所度量,横轴则度量着信号的时间属性。显示在屏幕的图像我们形象地称之为“波形”。而为了方便观察波形,示波器还需要能够设置这两个度量的档位和偏移,即有了垂直刻度,垂直偏移,时间刻度,水平偏移。有了这4个设置旋钮我们可以方便观察波形的各个细节。不过不要忽略观察波形的一个重要特性,那就是触发。触发的作用是等待信号的某些特征才开始显示波形。最简单和常用的触发条件是等待上升的波形穿越某个设定的点。有了以上几个基本设置操作就可以构成一个简单的示波器。模拟示波器的构成:图 1-1 模拟示波器的构成 模

10、拟示波器的构成如图1-1,通过把处理过的信号加在示波管的垂直方向,用锯齿波加在波器管的水平方向来演绎时间。通过触发电路来开启锯齿波从而触发波形。这样的实现方式存在着几个不够理想的缺陷。首先波形是靠眼睛看,偶发性的波形看到了就算看到了,没看到可没有第二次机会。其次示波管的余辉时间太短,对于变化比较缓慢的波形,仅仅靠放慢扫描速度也是看不到波形的全貌的。因为波形过早地消失了。具有存储功能的模拟示波器成为了高级仪器。图 1-2 数字示波器的组成新型示波器数字存储示波器改进型的模拟示波器开始有了数字的踪影,也有了数字示波器的雏形。其结构如图1-2。数字示波器除了模拟前端还保持模拟的模拟的方式处理信号其他

11、处理都采用了数字化技术,大量地采用ADC和DAC技术,连控制波形的偏移和放大也数字化了,不仅如此,显示部件也采用了液晶屏幕。除了显示波形以外还能显示出更多的参数信息,如频率,幅值,上升时间等众多测量参数。1.2 示波器发展现状目前在国的大部分实验室使用的是快要过时的模拟示波器,其带宽都在100MHz以下,而同样带宽的数字示波器的价格则在万元左右。而世界上对低端示波器的定义在300MHz,大家使用100MHz的示波器而没有选更高主要原因是数字示波器的核心技术被外国企业所垄断。Tek,Fluke,Agilent,力科等示波器制造商几乎占据了国的数字示波器的市场。不仅如此,因为技术被垄断,外国公司把

12、售价抬得很高,远高于示波器的制造成本。2 数字存储示波器实现方案本章节详细讨论了数字示波器各部分的实现方案,通过对方案的讨论引出了示波器的技术构成和技术目标。2.1 总体构架方案数字示波器一般构成如图2-1. 图 2-1 数字示波器框图 来自探头的信号首先经过无源衰减然后进行阻抗变换(即缓冲),之后信号具有的一定的驱动能力,再经过可变增益的放大或衰减调整到适合ADC采样的幅值,为了能在屏幕上移动波形,信号在增益调整之后添加一个偏移量在有ADC驱动电路输入给ADC芯片,ADC是数据采样的核心,经过高速采样的信号变成了数据流,通过数据存储电路把大量的波形数据存储起来。采样部分告一段落。数据存储器的

13、数据能通过数据总线读写。控制核心通过分析触发条件挑选存储波形中合适的部分或全部数据处理成现实波形。而所有控制的命令始于控制面板,用户设置好的各种参数通过操作面板采集到控制核心,控制核心把这些控制参数转换成合适不同逻辑设置和模拟电压。例如我们控制波形上下移动将会被控制核心转换成控制DAC产生偏移电压加载在进入ADC前的模拟信号中。模拟通道在很宽的不同带宽指标下结构并没有太多的变化,而不同的带宽指标通过不同的性能的模拟芯片实现。而示波器带宽指标不同就不能用单一的一种数据处理结构来处理数据。举个例子,在10MHz采样时钟下的数据流我们可以用74系列的芯片对数据锁存并存入单片FIFO,而如果采样时钟上

14、升到了1GHz,对ADC数据流的处理就只能用FPGA与定制芯片来接受和存储了数据流。1GHz的采样时钟并不是随意虚高的数值,即使采样率达到了1GHz,示波器的理论带宽最高为500MHz,而实际应用中只能做到200MHz模拟带宽。这也是低端示波器的带宽性能。在数字示波器中后端数字处理的框架决定了整个示波器的性能。我们有必要先讨论一下数字示波器的数字处理框架。FPGA还有一个强大的功能就是在其大规模的逻辑资源的基础上构建SOPC系统。SOPC系统是ALTERA公司首先提出来了,其含义是可编程片上系统。即在一个块FPGA实现系统的整个功能。其实现的基础是处理器软核和外围数字部件。SOPC系统的意义在

15、于构建简单快速,处理系统的构建风险降低了,开发周期也将缩短。而且构建相当地灵活,我们可以按照自己的意愿设计添加专用处理组件,无缝的结合在CPU系统中。举个例子,如果我们需要一个FFT处理,我们可以先构建一个FFT处理硬件,在借助SOPC 构建软件我们可以为FFT定制一条汇编指令,在C/C+中生成C的宏指令。这样我们在C环境中调用一条指令就可以完成FFT运算。而SOPC系统可以利用FPGA剩余的逻辑资源实现其他在原来FPGA实现的逻辑电路,而不受到太多的影响。2.2 模拟前端方案不管是数字示波器还是模拟示波器,在模拟前端的结构上面是不需要有区别的。模拟前端的任务都是把信号的幅值和偏移调整到需要的

16、水平。主要是两个参数的调整,调整幅值即是变化通道中的增益,而偏移量是通过加上一个直流分量实现偏移。所以我们可以用图2-2的框图预览模拟前端的结构。图 2-2 模拟前端组成框图模拟前端可以讨论的技术点有很多,其中的很多技术也是关键技术。下面我分开讨论一下模拟前端的各个技术组成。2.2.1 阻抗变换方案示波器测量电路是需要在电路中截取信号,同时要尽量减少对信号的影响。加大模拟前端的输入电阻,减少输入电容,是示波器首先应该解决的问题。阻抗变换电路能提供一个大的输入电阻,小的输入电容通路,同时提供一个小的输入电阻大的驱动电流的输出。这个输出提供给后级电路就不需要担心信号变形。输入信号和输入信号通常不需

17、要放大或衰减。但是阻抗变换电路存在一些技术难点。阻抗变换要至少要同时达到5个指标。1,大的输入电阻,通常在G级,2,小的输入电容,小于5pF,3,高的通频带,对于一个100MHz带宽的示波器,因为每一级都在消耗带宽,阻抗变换的通带要在200MHz以上,才能保证进入ADC的信号高于100MHz带宽。4,高的摆率,摆率和带宽有着紧密的联系,但是高的带宽不一定意味着高的摆率,因为大多数运放的小信号带宽比大信号带宽高很多,大信号的带宽更能体现摆率的意义。更大的摆率意味着更快的变化速度,这样你才能看到类似阶跃的信号。5,输入输出电压围,输入电压围会直接影响后级增益分配,而增益和带宽有一定的互斥关系。阻抗

18、变换的输入围会间接影响带宽指标。如果说单独满足上述技术要求那设计的难度并不大,而要同时满足以上性能。就有难度了。现在集成运放的研究与以往相比取得了长足的进步,现在我们可以轻松的买到带宽超过1GHz的运放。电流反馈型运放测有着更高的带宽性能。如果能找到一款高速且具有高输入阻抗的运放,把它设置成Gain=1,那么阻抗变换变得很简单。而现在就有这样的运放。如TI公司的OPA656,OPA657。OPA657的增益带宽积达到了1.6GHz,当配置成Gain=1,那么小信号带宽达到了1.6GHz,而输入阻抗达到了1T,足以满足低端示波器的性能需求。图 2-3 集成缓冲芯片本设计中采用如图 2-3方案,这

19、个方案与直流交流分开缓冲精确合成方案相比成本可高出不少。2.2.2 增益控制方案增益控制围达到40dB,带宽达到300MHz的集成增益控制芯片是找的到。选用集成控制增益芯片完成增益控制与前两个方案相比有很大的优势,首先增益控制连续可调,而集成化得芯片体积大大减少,电路变得简单,PCB板的绘制也简洁了许多,从PCB线路的角度来说连接简单风险小,电源去耦也方便。此外电路的功耗与前两个方案相比也小一些。我选用的就是VCA824方案。在使用中发现了一个问题。VCA824有两个偏移,一个是部乘法器之前形成的偏移,另一个是乘法器之后形成的偏移:一个输入偏移,另一个是输入偏移,最后的偏移结果是由这两个偏移叠

20、加而来的。输出偏移是相对固定的,而输入偏移和增益控制有一定关系。如图2-4。图 2-4 VCA824输入偏移与增益的关系由图2-4可以看出,在其他的增益点有不同的偏移,而且偏移量不可以忽略,必须得采取措施,否则示波器在使用直流测量功能时,此偏移将造成直流测量误差。解决方法可以用DAC通道板提供一个偏移修正电压(如图2-5)。图 2-5 VCA824偏移补偿方案这个偏移修正随着增益的值输出对应的偏移修正电压,也就是说,通过实验的方法把修正的参数做成数据表格存放在处理器中,通过查表来修正偏移误差将会大大减小。在实际运用中这个方法取得了和很好的效果。2.2.3 ADC驱动方案高速ADC通常是差分输入

21、,信号通过增益控制之后需要一个把单极性信号转换成为差分信号的电路,同时这个电路直接驱动ADC。单运放缓冲单极驱动方案如果把差分输入的ADC的负输入端接在一个中间电平,只驱动正输入端也是可工作的(图2-6)。图 2-6 单极驱动方案不过这样的用法会损失一半的输入动态围,也会增大失真。同时还损失了6dB的增益。没有差分运放的时候可以勉强使用此方案。单芯片差分驱动方案如果有集成的差分运发来驱动ADC(图2-7)那是最好不过了,不至于损失ADC的动态输入围和通道的增。图 2-7 差分驱动方案图中THS4509具有1.9GHz的带宽,6600V/us的摆率,而差分共模电平可以重新定位。精确对准ADC的参

22、考的中间电平,使ADC的输入窗口尽其所用。2.2.4 抗混叠滤波处理 数字示波器常常出现测试同一个周期波形在不同的水平档位看到同样的形状,或者明显不符合收缩比例。看个例子:图 2-8 未发生混叠如图 2-8,红色点标记为ADC在波形上的采样点,把所有采到的点连起来就能显现出信号的波形了。图 2-9 发生混叠而如果出现如图 2-9的情况,我们把采到的点连起来也得到了红色的波形。这个波形和实际波形明显不符。这个时候发生了采样混叠。很明显当采样点低于信号频率是会发生混叠。那采样频率和信号频率满足什么关系才不会发生混叠呢?奎斯特研究并证明了,采样频率必须大于信号频率的2倍才不至于发生混叠。可见在采样率

23、一定的时候,需要限制采样前信号的频谱宽度才保证显示不发生混叠。图 2-10 抗混叠滤波图2-10中被圈住的电阻和电容构成了抗混叠功能。如果示波器有等效采样功能,那么就需要去掉抗混叠滤波。因为等效采样的原理的根基就是利用混叠效应,用低的采样率来查看比自身频率高的信号。2.2.5 直流偏移方案偏移电路是示波器模拟通道原理最简单的电路。本质上就是把信号和一个设定的直流信号相加。用一个加法电路就能实现。在运放的差分输入负极输入(图 2-11)一个直流信号也能起到偏移效果。此方案也是不增加通道有源级数,不影响信号的带宽。图 2-11 在差分负极输入处添加偏移2.2.6 触发方案触发是示波器重要的功能之一

24、,如果没有触发示波器的显示将不会出现稳定的波形,是触发让波形稳定。通过设置触发来过滤用户不感兴趣的信号,提取感兴趣的部分。为了看到触发特征之前信号发生了什么,在模拟示波器中需要延迟波形到达荧幕的时间,同时并不延迟触发的信号。这样示波器好像先知一样。提前显示一部分波形然后才看到了触发显示的特征,而按理说,每次显示都是先由触发电路来触发水平扫描系统开始扫描。其根本技术在于把波形延迟了一段时间。模拟示波器中这个电路叫做延迟线,如图 2-12。而这个延迟线电路能延迟的时间非常有限。在测量低频时几乎丧失了意义。对于低频信号你几乎看不到触发特征之前的信号。图 2-12 模拟示波器的触发原理而在数字示波器中

25、,触发延迟实现起来很简单。如图 2-13,波形是存储在存储器中的,只要把波形数据向前移动地址就可以实现查看触发前信号了。存储器的容量比较大,低频时能实现同样比例的延迟。图 2-13 数字示波器的触发原理下面讨论一下触发特征的识别和其实现方法。11.11.22.2.12.2.22.2.32.2.42.2.52.2.6硬件触发方案所谓硬件触发是指把输入的模拟信号与设定的一个电压进行比较,产生一系列比较波形。比较器输出波形中上升沿意味着这个时刻波形从设置电压值的下面上升到设置电压的上面。我们通过数字电路识别比较器输出波形的上升沿从而识别信号上升沿穿过设置电压的特征(图 2-14)。这样的触发信号被称

26、为上升沿触发。图 2-14 比较触发原理同理识别比较器输出波形的下降沿就能实现波形下降沿触发。硬件触发方式是等效采样的必备条件。等效采样必须依靠硬件触发来找寻下一样点的位置。硬件触发在一定条件下也会失效,比如信号中有高频毛刺时,在毛刺点附近存在着很多与大体波形趋势想法的信号,而如果这些信号也可以满足触发条件。由这种条件所引发的触发时误触发(图 2-15)。图 2-15触发错误原理如果把比较电路设置成迟滞比较,这个迟滞值就决定了触发灵敏度(图 2-16)。灵敏度的大小决定着触发电路对小信号的触发反应。有了灵敏度设置,我们可以设置较小的灵敏度从而稳定观察小毛刺较多的信号。反之,我们可以更多地观察我

27、们感兴趣的毛刺信号。图 2-16 高频触发抑制原理模拟触发电路从信号缓冲后级截取信号与DAC输出的一个设置比较值进行比较。比较器采用TL3016(图 2-17),TL3016能提供4.5ns触发延迟和100mV迟滞电压。相比LM311的1us延迟,此芯片是性价比较高的一块芯片。图 2-17 触发电路比较器输出的是差分信号。即便比较器输出的边沿很快但不会给周围电路带来太大干扰。2.3 ADC方案ADC是数字示波器的核心器件,ADC芯片成本在示波器总成本中占得比例最高,即使方案中使用了高级的FPGA。很多时候,高的ADC采样率就意味着带宽更高,性能更好的示波器。因为ADC是示波器性能提高的瓶颈。为

28、此有许多降低成本,提高采样率的方案。本设计采用TI公司的ADS831E,采样率达到了80Msamp/s。模拟输入带宽是300MHz,其部结构如图 2-18。芯片设计成部1V基准,这样对前端增益的要求降低了6dB,降低基准电压有助于提高通道的增益,给模拟带宽让出一定的空间。图 2-18 ADC部结构通道间没有采用行业默许的ADC交叉技术,因为要交叉是用ADC就必须把两个通道的电路在一块PCB上绘制。而制作一块大板比制作单独的板子再连接起来的风险大一些。假设小板中一个部分设计错误不会涉与其他模块板。2.4 FPGA数字处理系统板 FPGA系统板资源包括一个CycloneIII系列FPGA EP3C

29、25Q240C8N,一个容量为32Mbyte SDRAM和配置芯片EPCS16(如图2-19)。图 219 核心板资源EP3C25Q240C8N包含25K LEs,66个乘法器等诸多资源,足以满足SOPC功能组件的构建需求。2.5 电源电路图 2-20 电源电路电源电路的设计关系到便携性、通道噪声、散热问题。为了提供干净的电源,开关电源不是一个好选择,但是开关电源的高效率与强大驱动能力是不可轻视的。如果设计好电源滤波电路,开关电源在本设计中是勉强能用的。本设计采用如图 2-20的开关电源电路。实验证明通过LC滤波电路能有效地去除开关电源中的开关噪声。由于通道的最大增益并不太大,只有40dB。滤

30、波后的噪声并未对模拟通道造成明显的影响,平衡了噪声因素之后,开关电源带来的高效率使此产品适合移动测试的要求。采用12V,1.6AH电池组能支持示波器工作2小时。而这是线性电源不可比拟的。此外开关电源也让示波器能适应宽的电源输入围。8V-40V的输入情况下示波器都能正常工作。极方便了示波器的便携应用。2.6 显示和接口方案显示和接口大体以模拟和数字来分类。最早的模拟示波器和数字示波器都采用CRT显示器。而后来数字示波器换成了液晶屏。在操作面板上没有太多的变化。新型设计理念iPhone风靡全球的一个重要原因是采用全触摸操控,触摸翻页,触摸缩放,给用户全新的体验。如果在查看波形的时候也能实现触摸缩放

31、与移动,测试的心情会不会多一份惬意。本着这个想法本示波器采用全触摸操控,波形掌握于指间,缩放移动波形更人性化。给操控者不一样的使用体验。甚至所以设置都可以通过触摸屏来实现。3 硬件SOC与软件的实现基础3.1 自定义功能模块与SOPC系统组成SOPC组成如图 3-1所示,主要包含了32位NiosII软核处理器和AVALONE总线架构,这是SOPC主体。支持软核运行的有SDRAM控制器和偏上存储器,CPU指令缓存和CPU数据缓存。这些都是可以自定义大小的。直接应用在本设计的有FIFO读写端口和LCD驱动PIO。还有控制功能组件的GPIO。示波器触发逻辑模块通过GPIO控制,完成了触发延迟,触发后

32、延迟,预存储,触发功能选择等项任务。图 3-1 组件框图1. FIFO的设计FIFO除去地址生成部分的电路,那么FIFO就是一个双口RAM,利用QuartusII软件中的LPM宏功能模块定制功能生成一个大小为8Kbyte的双口RAM。这个RAM的读写速度能达到250MHz。而地址发生器采用一个计数器对地址进行自动累加。设计图如图 3-2所示。图 3-2 FIFO2. 触发逻辑的设计触发逻辑是示波器功能组件中比较重要的功能组件。首要的两个任务是触发预采样和触发后延迟采样的控制,采样数据存入FIFO是由触发逻辑来控制的。要完成触发首先要识别触发特征;图3-3 触发逻辑图3-3电路借助数值比较器判断

33、数据流的数值大小,比较器的结果向后延迟一个时钟并且与前一个时钟的比较结果做就能判断出数据的趋势和穿越点的位置。两个类似的逻辑电路综合在一起就可以构成斜率触发。控制触发比较值可以控制触发的灵敏度。数据流触发信号与硬件触发信号一起被MUX选择,选出其中一个触发信号作为控制采样的触发源(图 3-4)。图 3-4 触发源选择逻辑开启触发功能后一个叫做触发预采样的计时电路使ADC持续采样一个预订的点数。完成预采样之后,触发信号被允许触发开启触发延迟计时器。触发延迟计时的作用是在触发特征出现之后延迟采样的预订的采样点数,然后控制采样时钟停止。这样就控制采集了触发特征前得波形和触发特征后的波形。他们的长度都

34、是受到CPU设置的。3. 波形特征分析电路波形的最大值和最小值还有平均值的信息可以用来做自动调整波形功能。所以设计中添加了一个波形特征分析逻辑(图 3-5)。图 3-5 最大值最小值识别电路特征分析逻辑通过选择记录最低的样值和最高的样值,得出波形的最大值和最小值。通过平均最大值和最小值得出平均值。4. 组件预览SOPC组件(图 3-6)。图 3-6 SOPC组件列表触发和缓存顶层预览(图 3-7)。图 3-7 触发和缓存顶层等精度测频模块预览(图 3-10)。图 3-10 精度测频模块 工程顶层文件(图 3-11)。图 3-11工程顶层文件 3.2 软件开发环境NiosII软核软件开发使用的是

35、ALTERA推出的NiosII IDE。这个IDE是基于Eclipse3.4开发的C/C+开发环境。开发环境的配置选项繁多,能过自定义的东西很多。幸运的是ALTERA做了插件开发之后,许多设置在导入工程的时候就已经配置好了。在NiosII IDE中,软件维护着一些和SOPC系统对应的软件环境信息。比如系统的加载地址,各组件的访问基址等等重要的信息。集中体现在system.h文件中。system.h由软件自行根据SOPC配置文件xxxx.sopc生成并自动维护。此外开发软件还管理者一个庞大的硬件抽象层,软件自动根据用户软件容加载相应的底层驱动。3.3 示波器应用软件构建模式软件采用C+语言设计,

36、以面向对象方式建立软件模块,分别有IO驱动类,液晶屏驱动类,绘图对象,触摸屏驱动,各种控件对象,ADC通道管理类,波形窗口对象。通过中断触发的各种事件驱动程序运作。主界面通过对各个按钮与触摸控件注册事件处理程序模块完成整个程序的运作架构。以面向对象的程序设计方法不仅减少了代码尺寸,提高程序的可读性同时程序的可扩展性强调试与优化方便。整个程序结构可由图3-10表示。图 3-10工程顶层文件4 项目测试验证我进行了简单几项测试以验证设计。通过对模拟信道的测试不仅测试了模拟通道的性能同时还验证了数字电路和应用软件的工作状况。而后我们通过一个实战的测试验证示波器的使用性。4.1 模拟通道性能测试4.1

37、.1 模拟带宽测试仪器:AV1485射频合成信号发生器(输出250KHz4GHz)测试方法:调节输入频率,读取示波器测量的信号幅值,幅值下降3dB时所对应的频率就是通道带宽(图 4-1,表 4-1)。图 4-1带宽测试表 4-1 测试数据输入频率CH1CH2250KHz3V3V1MHz3V3V2MHz2.95V2.98V3MHz2.9V2.92V4MHz2.77V2.86V5MHz2.64V2.77V6MHz2.5V2.67V7MHz2.4V2.6V8MHz2.3V2.5V9MHz2.2V2.4V10MHz2.1V2.2V11MHz2V2.1V4.1.2 垂直精度当我们给示波器输入一个峰峰值为

38、5V的正弦信号时,垂直档位在2V/div时,波形所占据的宽度正是2.5格。没出出现明显的偏差。4.1.3 水平精度当我们输入10us脉宽的方波,时间档位在1.25us/div时,一个波形周期占据了正好8格。4.1.4 输入围当我们用十倍探头测试220V市电时,屏幕读出了峰峰值为约31V 类似正弦波的波形。如果计算十倍探头的衰减,电压信号应该是310V峰峰值。与220V有效值对应。而示波器的借助十倍衰减探头的探测围是+-450V。4.1.5 输入阻抗当我们使用信号源串联上1M欧姆电阻时,测量到信号的幅值是没有串接电阻式的一半。说明示波器的输入阻抗是1M欧姆。4.2 波形测试我们分别输入正弦波,方

39、波,三角波,每种波形设置三个频率为1KHz,100kHz,1MHz做波形测试。测试出的波形如下列图形。1. 正弦波分别输入2V VPP,频率分别为1KHz,100KHz,1MHz的正弦波,得到如图4-2的测试结果。1KHz 100KHz 1MHz图 4-2正弦波测试2. 方波分别输入2V VPP,频率分别为1KHz,100KHz,1MHz的方波,得到如图4-3的测试结果。1KHz 100KHz 1MHz图 4-3方波测试3. 三角波分别输入2V VPP,频率分别为1KHz,100KHz,1MHz的三角波,得到如图4-4的测试结果。1KHz 100KHz 1MHz图 4-4三角波测试4. 实战使

40、用我们有此示波器测试一个开关电源的工作情况。两通道探头分别接触开关电源的变压器两个初级线圈(如图4-6)。其测试出的工作波形如图4-5。图 4-5开关管工作波形 图 4-6开关电源测试关闭通道2,可以单独的拉伸观察通道一的波形(如图4-7)。也可再次打开通道2,同时观察两个通道波形的细节(如图4-8)。图 4-7查看单管细节 图 4-8查看双管细节5 结论5.1 项目技术总结通过设计制作这个简易的数字示波器对我自身而言有了许多收获。把这些收获做一个总结也是作为论文的一个总结。5.1.1 阻抗变换和探头技术阻抗变换是示波器第一个难题,通过研究我们了解了多个实现方案。其中集成的缓冲芯片在性能上并不

41、比分立的差,而成本明显较高。但集成化的缓冲方案使电路设计风险降低,实现简单快速。5.1.2 增益控制增益控制是最需要提高部分,前端缓冲和后端ADC的带宽都可能比增益控制的带宽高。除去ADC对带宽的限制,增益控制电路是模拟通道带宽的瓶颈。目前集成的增益控制芯片是最佳的选择。在精确性稳定性和电路实现上,集成芯片有着不可替代的优势。5.1.3 触发波形触发波形是示波器实用化的关键之一。不能稳定触发的波形就没有了查看意义。触发电路除了普通的上升下降沿触发,还有脉宽触发、视屏触发、协议触发等更多高级的触发任务。而在本设计中只实现了基本的触发。这是本设计的一个遗憾。在比较器选择上面还有很大的空间,最新的比

42、较器能达到700ps的延时,最快能处理1GHz的信号。5.1.4 ADC技术ADC技术是示波器技术中最大的瓶颈。在国ADC技术受制于人,我们另辟蹊径找到了多个ADC并行采样技术。此技术也是最值得发挥出来的技术。5.1.5 数据处理技术数据处理在示波器运行时的关键地位不言而喻,数据处理的快慢直接影响了示波器的死区时间,尽量减少死区时间是提高示波器实时性的必经之路。同时波形统计显示。在一次显示中体现百万个波形的特征也是示波器实时性的集中体现。这个两项技术是示波器波形显示的核心,是研究示波器的工作重点之一。5.1.6 操控程序构建操控程序并不是很难的技术,相对其他技术来说,控制是比较容易实现的。而不

43、同的操控理念会产生不同的操作体验的示波器。好的操控程序能让用户轻易的控制仪器,使用起来方便简单。随着示波器的功能变得越来越多,整合控制按钮是示波器设计的一项任务。5.1.7 新的操控理念本项目大胆的抛弃传统的操作方式,使用全触摸控制。作为创新取得了不多的使用体验。5.2 技术之外的感触跟着项目走我们能学到很多。大学5年通过一个又一个的小制作项目,我一次又一次的提高了不少。以动手为手段,以项目的管理方式推进学习,使我们学习理论知识有了更深的认识,也让我们更了解整个知识的框架。动手动脑让我们学到更多学得更好6 附件6.1 原理图与PCB图 6-1 通道PCB板图 6-2 控制DAC PCB板图 6

44、-3 差探头PCB板图 6-4 有源探头图 6-5 正极性电源PCB板图 6-6 负极性电源PCB板图 6-7 模拟通道电路图图 6-8 DAC控制电路图图 6-9 差分探头电路图图6-10 有源探头电路图图 6-11 正极性电源电路图图 6-12 负极性电源电路图6.2 程序示波器功能源程序头文件#ifndef OSCILLOGRAPH_H_#define OSCILLOGRAPH_H_#includeDelineationr90.h#includeMotion_Class.h#includeTouchBroad.h#includeButton.h#includeTouch.h#includ

45、eDAC8.hexternPIO CH1CP,CH2CP,OSC_Int,CkSel,PreDelay,TriDelay,TriHead,TriCauda,TriCtl,CH1GC,CH2GC,CH1Max,CH2Max,CH1Min,CH2Min,ADC_DataCH1,ADC_DataCH2,STD_TIME_CH1,STD_TIME_CH2,STD_CONUT_CH1,STD_CONUT_CH2,TEST_CONUT_CH1,TEST_CONUT_CH2;/OSC_Int示波器中断操作宏#define Triggered (10)#define TriggerDelayOK (11)#d

46、efine DisableAllInt OSC_Int.SetIntMask(0);#define EnableAllInt OSC_Int.SetIntMask(0xffffffff);#define EnableTriggeredInt OSC_Int.SetIntMask(OSC_Int.readIntMask()|Triggered);#define DisableTriggeredInt OSC_Int.SetIntMask(OSC_Int.readIntMask()&(Triggered);#define OSC_IntEdgeCapture OSC_Int.readEdgeCap

47、ture()#define ifTriggered (OSC_Int.read()&Triggered)!=0)#define ifTriggerDelay (OSC_Int.read()&TriggerDelayOK)!=0)#define ifTriggeredInt (OSC_IntEdgeCapture&Triggered)!=0)#define ifTriggerDelayInt (OSC_IntEdgeCapture&TriggerDelayOK)!=0)#define ClearAllIntCapture OSC_Int.SetEdgeCapture(0);#define CH1

48、TFcomplete (12)#define CH2TFcomplete (13)#define ifCH1TFcomplete (OSC_Int.read()&CH1TFcomplete)=0)/=0为完成#define ifCH2TFcomplete (OSC_Int.read()&CH2TFcomplete)=0)/=0为完成/示波器触发控制操作宏#define RaiseTri (0x1D)/上升沿触发码值#define FallTri (0x2B)/下降沿触发码值#define LevelTri (0X79)/电平触发码值#define AllTri (0X7F)/全通触发码值#de

49、fine SetRaiseTri TriCtl.Write(TriCtl.read()&0XFFFFFF80)+RaiseTri);/设置上升沿触发码值,使能数据流触发硬件#define SetFallTri TriCtl.Write(TriCtl.read()&0XFFFFFF80)+FallTri);/设置下降沿触发码值,使能数据流触发硬件#define SetLevelTri TriCtl.Write(TriCtl.read()&0XFFFFFF80)+LevelTri);/设置电平沿触发码值,使能数据流触发硬件#define SetAllTri TriCtl.Write(TriCtl.

50、read()&0XFFFFFF80)+AllTri);/设置全通沿触发码值,使能数据流触发硬件#define KeepTri TriCtl.Clear(10);/停止所有数据流触发保留原触发方式#define RevertTri TriCtl.Set(10);/恢复保留原触发方式,使能数据流触发硬件#define SelCH2HNtri TriCtl.Write(TriCtl.read()&(0X780)+0X100);/选择CH1硬件触发的N触发#define SelCH2HPtri TriCtl.Write(TriCtl.read()&(0X780)+0X200);/选择CH1硬件触发的P

51、触发#define SelCH1HNtri TriCtl.Write(TriCtl.read()&(0X780)+0X300);/选择CH2硬件触发的N触发#define SelCH1HPtri TriCtl.Write(TriCtl.read()&(0X780)+0X400);/选择CH2硬件触发的P触发#define SelCH1Dtri TriCtl.Write(TriCtl.read()&(0X780)+0X0);/选择CH1的数据流触发#define SelCH2Dtri TriCtl.Write(TriCtl.read()&(0X780)+0X80);/选择CH2的数据流触发#de

52、fine RestStart (111)/RestStart在控制输出的排位#define RestADC TriCtl.Set(RestStart);/复位触发逻辑,停止采样储存#define StartADC TriCtl.Clear(RestStart);/开启触发逻辑,开始新的采样过程#define TFStartClearCH1 (112)/通道1测频模块的开始清除位#define CH1TFStart TriCtl.Set(TFStartClearCH1);/开启测频模块#define CH1TFClear TriCtl.Clear(TFStartClearCH1);/清除测频数据

53、,复位模块#define TFStartClearCH2 (113)/通道2测频模块的开始清除位#define CH2TFStart TriCtl.Set(TFStartClearCH2);/开启测频模块#define CH2TFClear TriCtl.Clear(TFStartClearCH2);/清除测频数据,复位模块/*通道的前端衰减(0)和AC/DC(1)切换控制的宏*/#define CH1G1 CH1GC.Set(10);/不进行无源衰减#define CH1G10 CH1GC.Clear(10);/进行无源10倍衰减#define CH2G1 CH2GC.Set(10);/#d

54、efine CH2G10 CH2GC.Clear(10);/#define CH1DC CH1GC.Set(11);/DC输入#define CH1AC CH1GC.Clear(11);/AC输入#define CH2DC CH2GC.Set(11);/#define CH2AC CH2GC.Clear(11);/externUD16 HvCH19;externD16 GoffsetCH19;externUD16 HvCH29;externD16 GoffsetCH29;externD16 TriHK;/触发线垂直高度显示坐标externD32 TriggerPositionDisplay;e

55、xternDelineationR90 LCD;/创建一个液晶屏externPIO TBo,TBi;/创建触摸屏的接口IOexternTouchBroad TouchBroad1;/创建一个触摸屏externDAC8 DAC8_0;/创建一个8通道DAC驱动voidH1Gain(D32 dy);/增益控制voidH1Offset(D32 dy);/偏移控制voidH1Time(D32 dx);/时间控制voidH1X(D32 dx);/波形窗口控制class TouchArear;/提前引用class Touch;/提前引用voidBarTrigger(Touch *TouchP);/触发线的

56、时间位置voidBarTriggerH(Touch *TouchP);/触发线的垂直位置/-界面操作用到的全局数据-/externUD8 CH1_State,CH2_State;/通道状态=128表示开启(17)externUD8 CHsel;/通道选择状态 0表示CH1 1表示CH2externUD8 TriSoce;/触发源 0-5 CH1,CH2的数据流触发 CH1,CH2硬件触发的N,P触发externUD8 TriStyl;/触发源 0-3 上升 下降 电平 全通externUD8 OSC_State;/示波器运行状态externUD8 SampClkStore;/暂停时硬件时钟的值

57、/-按钮动作的处理函数-/-通道切换按钮处理函数/所有动作的处理函数voidCH_Bp(ButtonTB *p);/-OFF按钮处理函数voidOffBp(ButtonTB *p);/-AC/DC按钮处理程序voidAC_DC_Bp(ButtonTB *p);/触发源切换 按钮处理程序voidTriggerSourceBp(ButtonTB *p);/触方式切换 按钮处理程序voidTriggerStyleBp(ButtonTB *p);/运行/暂停 按钮处理程序voidRunStopBp(ButtonTB *p);/自动适应 按钮处理程序voidAUTO(ButtonTB *p);exter

58、nTIMECOUNT TTTT,Time0,Time1,Time2,Time3,Time4,WaitTriT,TimeBar;externTouch TriggerBar,TouchArear1,TouchArear2,TouchArear3,TouchArear4, OSC4Touch,TriggerXTouch,TriggerYTouch;/-OSC4Touch是OSC4Bar 对应的Touch对象/-TriggerXTouch是水平出发位置调整滑块Touch对象/-TriggerYTouch是垂直出发位置调整滑块Touch对象externTouchArear Arear,Arear1,A

59、rear2, OSC4Bar;/具有四区域滑块/-OSC4Bar四滑块调整水平和垂直位置以与时间轴和增益;externTB_events TBGet,OSC_Tmsg,OSC_CH1Tmsg,OSC_CH2Tmsg;/触摸消息externButtonTB TB,TB1,TB2,TB3,TB4,TB5,TB6,TB7,TB8,TB9, AutoB,RunStopB,CH_B,AC_DC_B,TriggerSourceB,TriggerStyleB,OffB;/具有触摸屏功能的按钮externButtonGrah CME,CMU,CMD;/用来初始化按键图标的图像数据结构externTIMECOU

60、NT Time0,Time1,Time2,Time3,Time4,TimeBar;externD32 BarCount,BarCount1X,BarCount1Y,BarCount2X,BarCount2Y;externUD32 FIFOsizeC;#define FIFOsize (6000)#define wC (gray(100)+yellow(50)/波形窗口的刻度#define wCback (gray(50)+blue(55)/窗口背景#define wback (gray(100)+blue(25)#define wCbold yellow(255)/窗口线框#define wC

61、pb (gray(100)+green(55)/副波形窗口背景#define CH1c (yellow(255)/CH1通道颜色#define CH2c (red(255)/CH2通道颜色#define ADC1scale (2000000)/电压跨度 uV为单位#define ADC2scale (2000000)/电压跨度 uV为单位#define CH1_GainCtl AdrD/1通道增益控制#define CH1_OffsetCtl AdrA/1通道偏移控制#define CH1_OffsetA (-0.42)/1通道偏移控制 修正比例 #define CH1_OffsetB (0)/1通道偏移控制 修正偏移-#define CH1_TriggerCtl AdrG/1通道硬件出发位置控制#define CH1_TriggerA (-0.45)/1通道硬件出发位置控制 修正比例#defin

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!